Skip to content

Commit 76d860d

Browse files
committed
APP-6571: Simplified AtlasGlossaryCategory/Term.creator() methods
1 parent 80d320b commit 76d860d

File tree

5 files changed

+92
-28
lines changed

5 files changed

+92
-28
lines changed

pyatlan/generator/templates/methods/asset/atlas_glossary_category.jinja2

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,19 @@
2828
cls,
2929
*,
3030
name: StrictStr,
31-
anchor: AtlasGlossary,
31+
anchor: Optional[AtlasGlossary] = None,
32+
glossary_qualified_name: Optional[StrictStr] = None,
33+
glossary_guid: Optional[StrictStr] = None,
3234
parent_category: Optional[AtlasGlossaryCategory] = None,
3335
) -> AtlasGlossaryCategory:
34-
validate_required_fields(["name", "anchor"], [name, anchor])
36+
validate_required_fields(["name"], [name])
3537
return cls(
3638
attributes=AtlasGlossaryCategory.Attributes.create(
37-
name=name, anchor=anchor, parent_category=parent_category
39+
name=name,
40+
anchor=anchor,
41+
glossary_qualified_name=glossary_qualified_name,
42+
glossary_guid=glossary_guid,
43+
parent_category=parent_category,
3844
)
3945
)
4046

pyatlan/generator/templates/methods/attribute/atlas_glossary_category.jinja2

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,30 @@
55
cls,
66
*,
77
name: StrictStr,
8-
anchor: AtlasGlossary,
8+
anchor: Optional[AtlasGlossary] = None,
9+
glossary_qualified_name: Optional[StrictStr] = None,
10+
glossary_guid: Optional[StrictStr] = None,
911
parent_category: Optional[AtlasGlossaryCategory] = None,
1012
) -> AtlasGlossaryCategory.Attributes:
11-
validate_required_fields(["name", "anchor"], [name, anchor])
13+
validate_required_fields(["name"], [name])
14+
validate_single_required_field(
15+
["anchor", "glossary_qualified_name", "glossary_guid"],
16+
[anchor, glossary_qualified_name, glossary_guid],
17+
)
18+
19+
ref_anchor = None
20+
if anchor:
21+
ref_anchor = anchor.trim_to_reference()
22+
elif glossary_qualified_name:
23+
ref_anchor = AtlasGlossary.ref_by_qualified_name(
24+
qualified_name=glossary_qualified_name
25+
)
26+
elif glossary_guid:
27+
ref_anchor = AtlasGlossary.ref_by_guid(guid=glossary_guid)
28+
1229
return AtlasGlossaryCategory.Attributes(
13-
name=name, anchor=anchor, parent_category=parent_category, qualified_name=next_id()
30+
name=name,
31+
anchor=ref_anchor,
32+
parent_category=parent_category and parent_category.trim_to_reference(),
33+
qualified_name=next_id(),
1434
)

pyatlan/generator/templates/methods/attribute/atlas_glossary_term.jinja2

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,20 @@
1515
["anchor", "glossary_qualified_name", "glossary_guid"],
1616
[anchor, glossary_qualified_name, glossary_guid],
1717
)
18-
if glossary_qualified_name:
19-
anchor = AtlasGlossary()
20-
anchor.unique_attributes = {"qualifiedName": glossary_qualified_name}
21-
if glossary_guid:
22-
anchor = AtlasGlossary()
23-
anchor.guid = glossary_guid
18+
19+
ref_anchor = None
20+
if anchor:
21+
ref_anchor = anchor.trim_to_reference()
22+
elif glossary_qualified_name:
23+
ref_anchor = AtlasGlossary.ref_by_qualified_name(
24+
qualified_name=glossary_qualified_name
25+
)
26+
elif glossary_guid:
27+
ref_anchor = AtlasGlossary.ref_by_guid(guid=glossary_guid)
28+
2429
return AtlasGlossaryTerm.Attributes(
2530
name=name,
26-
anchor=anchor,
31+
anchor=ref_anchor,
2732
categories=categories,
2833
qualified_name=next_id(),
2934
)

pyatlan/model/assets/core/atlas_glossary_category.py

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111

1212
from pyatlan.model.enums import AtlasGlossaryCategoryType
1313
from pyatlan.model.fields.atlan_fields import KeywordField, RelationField, TextField
14-
from pyatlan.utils import init_guid, next_id, validate_required_fields
14+
from pyatlan.utils import (
15+
init_guid,
16+
next_id,
17+
validate_required_fields,
18+
validate_single_required_field,
19+
)
1520

1621
from .asset import Asset, SelfAsset
1722

@@ -48,13 +53,19 @@ def creator(
4853
cls,
4954
*,
5055
name: StrictStr,
51-
anchor: AtlasGlossary,
56+
anchor: Optional[AtlasGlossary] = None,
57+
glossary_qualified_name: Optional[StrictStr] = None,
58+
glossary_guid: Optional[StrictStr] = None,
5259
parent_category: Optional[AtlasGlossaryCategory] = None,
5360
) -> AtlasGlossaryCategory:
54-
validate_required_fields(["name", "anchor"], [name, anchor])
61+
validate_required_fields(["name"], [name])
5562
return cls(
5663
attributes=AtlasGlossaryCategory.Attributes.create(
57-
name=name, anchor=anchor, parent_category=parent_category
64+
name=name,
65+
anchor=anchor,
66+
glossary_qualified_name=glossary_qualified_name,
67+
glossary_guid=glossary_guid,
68+
parent_category=parent_category,
5869
)
5970
)
6071

@@ -304,14 +315,31 @@ def create(
304315
cls,
305316
*,
306317
name: StrictStr,
307-
anchor: AtlasGlossary,
318+
anchor: Optional[AtlasGlossary] = None,
319+
glossary_qualified_name: Optional[StrictStr] = None,
320+
glossary_guid: Optional[StrictStr] = None,
308321
parent_category: Optional[AtlasGlossaryCategory] = None,
309322
) -> AtlasGlossaryCategory.Attributes:
310-
validate_required_fields(["name", "anchor"], [name, anchor])
323+
validate_required_fields(["name"], [name])
324+
validate_single_required_field(
325+
["anchor", "glossary_qualified_name", "glossary_guid"],
326+
[anchor, glossary_qualified_name, glossary_guid],
327+
)
328+
329+
ref_anchor = None
330+
if anchor:
331+
ref_anchor = anchor.trim_to_reference()
332+
elif glossary_qualified_name:
333+
ref_anchor = AtlasGlossary.ref_by_qualified_name(
334+
qualified_name=glossary_qualified_name
335+
)
336+
elif glossary_guid:
337+
ref_anchor = AtlasGlossary.ref_by_guid(guid=glossary_guid)
338+
311339
return AtlasGlossaryCategory.Attributes(
312340
name=name,
313-
anchor=anchor,
314-
parent_category=parent_category,
341+
anchor=ref_anchor,
342+
parent_category=parent_category and parent_category.trim_to_reference(),
315343
qualified_name=next_id(),
316344
)
317345

pyatlan/model/assets/core/atlas_glossary_term.py

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -580,15 +580,20 @@ def create(
580580
["anchor", "glossary_qualified_name", "glossary_guid"],
581581
[anchor, glossary_qualified_name, glossary_guid],
582582
)
583-
if glossary_qualified_name:
584-
anchor = AtlasGlossary()
585-
anchor.unique_attributes = {"qualifiedName": glossary_qualified_name}
586-
if glossary_guid:
587-
anchor = AtlasGlossary()
588-
anchor.guid = glossary_guid
583+
584+
ref_anchor = None
585+
if anchor:
586+
ref_anchor = anchor.trim_to_reference()
587+
elif glossary_qualified_name:
588+
ref_anchor = AtlasGlossary.ref_by_qualified_name(
589+
qualified_name=glossary_qualified_name
590+
)
591+
elif glossary_guid:
592+
ref_anchor = AtlasGlossary.ref_by_guid(guid=glossary_guid)
593+
589594
return AtlasGlossaryTerm.Attributes(
590595
name=name,
591-
anchor=anchor,
596+
anchor=ref_anchor,
592597
categories=categories,
593598
qualified_name=next_id(),
594599
)

0 commit comments

Comments
 (0)