Skip to content

Commit adbff64

Browse files
authored
Merge pull request #470 from atlanhq/FT-633
FT-633: Added `creator()` and `updater()` methods to `Procedure` asset
2 parents 554460a + 336ce7c commit adbff64

19 files changed

+998
-69
lines changed

docs/asset/dataverse.rst

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. _dataverse:
2+
3+
Dataverse
4+
=========
5+
6+
.. module:: pyatlan.model.assets
7+
:no-index:
8+
9+
.. autoclass:: Dataverse
10+
:members:

docs/asset/dataverseattribute.rst

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. _dataverseattribute:
2+
3+
DataverseAttribute
4+
==================
5+
6+
.. module:: pyatlan.model.assets
7+
:no-index:
8+
9+
.. autoclass:: DataverseAttribute
10+
:members:

docs/asset/dataverseentity.rst

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
.. _dataverseentity:
2+
3+
DataverseEntity
4+
===============
5+
6+
.. module:: pyatlan.model.assets
7+
:no-index:
8+
9+
.. autoclass:: DataverseEntity
10+
:members:

docs/assets.rst

+3
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,9 @@ You can interact with all of the following different kinds of assets:
105105
asset/datastudioasset
106106
asset/database
107107
asset/databricksunitycatalogtag
108+
asset/dataverse
109+
asset/dataverseattribute
110+
asset/dataverseentity
108111
asset/dbt
109112
asset/dbtcolumnprocess
110113
asset/dbtmetric
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
2+
@overload
3+
@classmethod
4+
def creator(
5+
cls,
6+
*,
7+
name: str,
8+
schema_qualified_name: str,
9+
definition: str,
10+
) -> Procedure: ...
11+
12+
@overload
13+
@classmethod
14+
def creator(
15+
cls,
16+
*,
17+
name: str,
18+
schema_qualified_name: str,
19+
schema_name: str,
20+
database_name: str,
21+
database_qualified_name: str,
22+
connection_qualified_name: str,
23+
definition: str,
24+
) -> Procedure: ...
25+
26+
@classmethod
27+
@init_guid
28+
def creator(
29+
cls,
30+
*,
31+
name: str,
32+
definition: str,
33+
schema_qualified_name: str,
34+
schema_name: Optional[str] = None,
35+
database_name: Optional[str] = None,
36+
database_qualified_name: Optional[str] = None,
37+
connection_qualified_name: Optional[str] = None,
38+
) -> Procedure:
39+
attributes = Procedure.Attributes.create(
40+
name=name,
41+
definition=definition,
42+
schema_qualified_name=schema_qualified_name,
43+
schema_name=schema_name,
44+
database_name=database_name,
45+
database_qualified_name=database_qualified_name,
46+
connection_qualified_name=connection_qualified_name,
47+
)
48+
return cls(attributes=attributes)
49+
50+
@classmethod
51+
@init_guid
52+
def updater(cls, *, name: str, qualified_name: str, definition: str) -> Procedure:
53+
validate_required_fields(
54+
["name", "qualified_name", "definition"],
55+
[name, qualified_name, definition],
56+
)
57+
procedure = Procedure(
58+
attributes=Procedure.Attributes(qualified_name=qualified_name, name=name)
59+
)
60+
procedure.definition = definition
61+
return procedure
62+
63+
def trim_to_required(self: Procedure) -> Procedure:
64+
return self.updater(
65+
qualified_name=self.qualified_name or "",
66+
name=self.name or "",
67+
definition=self.definition or "",
68+
)

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

+22-2
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,30 @@
77
name: str,
88
connection_qualified_name: str,
99
aws_arn: str,
10+
s3_bucket_name: str,
1011
s3_bucket_qualified_name: str,
1112
) -> S3Object:
1213
validate_required_fields(
1314
[
1415
"name",
1516
"connection_qualified_name",
1617
"aws_arn",
18+
"s3_bucket_name",
1719
"s3_bucket_qualified_name",
1820
],
19-
[name, connection_qualified_name, aws_arn, s3_bucket_qualified_name],
21+
[
22+
name,
23+
connection_qualified_name,
24+
aws_arn,
25+
s3_bucket_name,
26+
s3_bucket_qualified_name,
27+
],
2028
)
2129
attributes = S3Object.Attributes.create(
2230
name=name,
2331
connection_qualified_name=connection_qualified_name,
2432
aws_arn=aws_arn,
33+
s3_bucket_name=s3_bucket_name,
2534
s3_bucket_qualified_name=s3_bucket_qualified_name,
2635
)
2736
return cls(attributes=attributes)
@@ -34,6 +43,7 @@
3443
name: str,
3544
connection_qualified_name: str,
3645
aws_arn: str,
46+
s3_bucket_name: str,
3747
s3_bucket_qualified_name: str,
3848
) -> S3Object:
3949
warn(
@@ -48,6 +58,7 @@
4858
name=name,
4959
connection_qualified_name=connection_qualified_name,
5060
aws_arn=aws_arn,
61+
s3_bucket_name=s3_bucket_name,
5162
s3_bucket_qualified_name=s3_bucket_qualified_name,
5263
)
5364

@@ -59,21 +70,30 @@
5970
name: str,
6071
connection_qualified_name: str,
6172
prefix: str,
73+
s3_bucket_name: str,
6274
s3_bucket_qualified_name: str,
6375
) -> S3Object:
6476
validate_required_fields(
6577
[
6678
"name",
6779
"connection_qualified_name",
6880
"prefix",
81+
"s3_bucket_name",
6982
"s3_bucket_qualified_name",
7083
],
71-
[name, connection_qualified_name, prefix, s3_bucket_qualified_name],
84+
[
85+
name,
86+
connection_qualified_name,
87+
prefix,
88+
s3_bucket_name,
89+
s3_bucket_qualified_name,
90+
],
7291
)
7392
attributes = S3Object.Attributes.create_with_prefix(
7493
name=name,
7594
connection_qualified_name=connection_qualified_name,
7695
prefix=prefix,
96+
s3_bucket_name=s3_bucket_name,
7797
s3_bucket_qualified_name=s3_bucket_qualified_name,
7898
)
7999
return cls(attributes=attributes)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
2+
@classmethod
3+
@init_guid
4+
def create(
5+
cls,
6+
*,
7+
name: str,
8+
definition: str,
9+
schema_qualified_name: Optional[str] = None,
10+
schema_name: Optional[str] = None,
11+
database_name: Optional[str] = None,
12+
database_qualified_name: Optional[str] = None,
13+
connection_qualified_name: Optional[str] = None,
14+
) -> Procedure.Attributes:
15+
validate_required_fields(
16+
["name", "definition", "schema_qualified_name"],
17+
[name, definition, schema_qualified_name],
18+
)
19+
assert schema_qualified_name # noqa: S101
20+
if connection_qualified_name:
21+
connector_name = AtlanConnectorType.get_connector_name(
22+
connection_qualified_name
23+
)
24+
else:
25+
connection_qn, connector_name = AtlanConnectorType.get_connector_name(
26+
schema_qualified_name, "schema_qualified_name", 5
27+
)
28+
29+
fields = schema_qualified_name.split("/")
30+
qualified_name = f"{schema_qualified_name}/_procedures_/{name}"
31+
connection_qualified_name = connection_qualified_name or connection_qn
32+
database_name = database_name or fields[3]
33+
schema_name = schema_name or fields[4]
34+
database_qualified_name = (
35+
database_qualified_name
36+
or f"{connection_qualified_name}/{database_name}"
37+
)
38+
39+
return Procedure.Attributes(
40+
name=name,
41+
definition=definition,
42+
qualified_name=qualified_name,
43+
database_name=database_name,
44+
database_qualified_name=database_qualified_name,
45+
schema_name=schema_name,
46+
schema_qualified_name=schema_qualified_name,
47+
atlan_schema=Schema.ref_by_qualified_name(schema_qualified_name),
48+
connector_name=connector_name,
49+
connection_qualified_name=connection_qualified_name,
50+
)

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

+26-3
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,24 @@
77
name: str,
88
connection_qualified_name: str,
99
aws_arn: str,
10+
s3_bucket_name: str,
1011
s3_bucket_qualified_name: str,
1112
) -> S3Object.Attributes:
1213
validate_required_fields(
13-
["name", "connection_qualified_name", "aws_arn", "s3_bucket_qualified_name"],
14-
[name, connection_qualified_name, aws_arn, s3_bucket_qualified_name],
14+
[
15+
"name",
16+
"connection_qualified_name",
17+
"aws_arn",
18+
"s3_bucket_name",
19+
"s3_bucket_qualified_name",
20+
],
21+
[
22+
name,
23+
connection_qualified_name,
24+
aws_arn,
25+
s3_bucket_name,
26+
s3_bucket_qualified_name,
27+
],
1528
)
1629
fields = connection_qualified_name.split("/")
1730
if len(fields) != 3:
@@ -30,6 +43,7 @@
3043
connection_qualified_name=connection_qualified_name,
3144
qualified_name=f"{connection_qualified_name}/{aws_arn}",
3245
connector_name=connector_type.value,
46+
s3_bucket_name=s3_bucket_name,
3347
s3_bucket_qualified_name=s3_bucket_qualified_name,
3448
bucket=S3Bucket.ref_by_qualified_name(s3_bucket_qualified_name),
3549
)
@@ -42,16 +56,24 @@
4256
name: str,
4357
connection_qualified_name: str,
4458
prefix: str,
59+
s3_bucket_name: str,
4560
s3_bucket_qualified_name: str,
4661
) -> S3Object.Attributes:
4762
validate_required_fields(
4863
[
4964
"name",
5065
"connection_qualified_name",
5166
"prefix",
67+
"s3_bucket_name",
5268
"s3_bucket_qualified_name",
5369
],
54-
[name, connection_qualified_name, prefix, s3_bucket_qualified_name],
70+
[
71+
name,
72+
connection_qualified_name,
73+
prefix,
74+
s3_bucket_name,
75+
s3_bucket_qualified_name,
76+
],
5577
)
5678
fields = connection_qualified_name.split("/")
5779
if len(fields) != 3:
@@ -71,6 +93,7 @@
7193
connection_qualified_name=connection_qualified_name,
7294
qualified_name=f"{connection_qualified_name}/{object_key}",
7395
connector_name=connector_type.value,
96+
s3_bucket_name=s3_bucket_name,
7497
s3_bucket_qualified_name=s3_bucket_qualified_name,
7598
bucket=S3Bucket.ref_by_qualified_name(s3_bucket_qualified_name),
7699
)

pyatlan/model/assets/__init__.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@
6666
"Column",
6767
"DatabricksUnityCatalogTag",
6868
"SnowflakeStream",
69-
"Database",
7069
"CalculationView",
70+
"Database",
7171
"Procedure",
7272
"SnowflakeTag",
7373
"CosmosMongoDB",
@@ -161,6 +161,7 @@
161161
"cognos": ["Cognos"],
162162
"superset": ["Superset"],
163163
"qlik": ["Qlik"],
164+
"dataverse": ["Dataverse"],
164165
"cognite": ["Cognite"],
165166
"salesforce": ["Salesforce"],
166167
"readme_template": ["ReadmeTemplate"],
@@ -285,6 +286,8 @@
285286
"qlik_chart": ["QlikChart"],
286287
"qlik_dataset": ["QlikDataset"],
287288
"qlik_sheet": ["QlikSheet"],
289+
"dataverse_attribute": ["DataverseAttribute"],
290+
"dataverse_entity": ["DataverseEntity"],
288291
"cognite_event": ["CogniteEvent"],
289292
"cognite_asset": ["CogniteAsset"],
290293
"cognite_sequence": ["CogniteSequence"],

pyatlan/model/assets/__init__.pyi

+7-1
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ __all__ = [
6363
"Column",
6464
"DatabricksUnityCatalogTag",
6565
"SnowflakeStream",
66-
"Database",
6766
"CalculationView",
67+
"Database",
6868
"Procedure",
6969
"SnowflakeTag",
7070
"CosmosMongoDB",
@@ -158,6 +158,7 @@ __all__ = [
158158
"Cognos",
159159
"Superset",
160160
"Qlik",
161+
"Dataverse",
161162
"Cognite",
162163
"Salesforce",
163164
"ReadmeTemplate",
@@ -282,6 +283,8 @@ __all__ = [
282283
"QlikChart",
283284
"QlikDataset",
284285
"QlikSheet",
286+
"DataverseAttribute",
287+
"DataverseEntity",
285288
"CogniteEvent",
286289
"CogniteAsset",
287290
"CogniteSequence",
@@ -474,6 +477,9 @@ from .cube_hierarchy import CubeHierarchy
474477
from .data_set import DataSet
475478
from .data_studio import DataStudio
476479
from .data_studio_asset import DataStudioAsset
480+
from .dataverse import Dataverse
481+
from .dataverse_attribute import DataverseAttribute
482+
from .dataverse_entity import DataverseEntity
477483
from .dbt_column_process import DbtColumnProcess
478484
from .dbt_process import DbtProcess
479485
from .dbt_tag import DbtTag

pyatlan/model/assets/core/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@
173173
Column.Attributes.update_forward_refs(**localns)
174174
DatabricksUnityCatalogTag.Attributes.update_forward_refs(**localns)
175175
SnowflakeStream.Attributes.update_forward_refs(**localns)
176-
Database.Attributes.update_forward_refs(**localns)
177176
CalculationView.Attributes.update_forward_refs(**localns)
177+
Database.Attributes.update_forward_refs(**localns)
178178
Procedure.Attributes.update_forward_refs(**localns)
179179
SnowflakeTag.Attributes.update_forward_refs(**localns)
180180
CosmosMongoDB.Attributes.update_forward_refs(**localns)

0 commit comments

Comments
 (0)