Skip to content

Commit

Permalink
Merge pull request #470 from atlanhq/FT-633
Browse files Browse the repository at this point in the history
FT-633: Added `creator()` and `updater()` methods to `Procedure` asset
  • Loading branch information
Aryamanz29 authored Jan 7, 2025
2 parents 554460a + 336ce7c commit adbff64
Show file tree
Hide file tree
Showing 19 changed files with 998 additions and 69 deletions.
10 changes: 10 additions & 0 deletions docs/asset/dataverse.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _dataverse:

Dataverse
=========

.. module:: pyatlan.model.assets
:no-index:

.. autoclass:: Dataverse
:members:
10 changes: 10 additions & 0 deletions docs/asset/dataverseattribute.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _dataverseattribute:

DataverseAttribute
==================

.. module:: pyatlan.model.assets
:no-index:

.. autoclass:: DataverseAttribute
:members:
10 changes: 10 additions & 0 deletions docs/asset/dataverseentity.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _dataverseentity:

DataverseEntity
===============

.. module:: pyatlan.model.assets
:no-index:

.. autoclass:: DataverseEntity
:members:
3 changes: 3 additions & 0 deletions docs/assets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ You can interact with all of the following different kinds of assets:
asset/datastudioasset
asset/database
asset/databricksunitycatalogtag
asset/dataverse
asset/dataverseattribute
asset/dataverseentity
asset/dbt
asset/dbtcolumnprocess
asset/dbtmetric
Expand Down
68 changes: 68 additions & 0 deletions pyatlan/generator/templates/methods/asset/procedure.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@

@overload
@classmethod
def creator(
cls,
*,
name: str,
schema_qualified_name: str,
definition: str,
) -> Procedure: ...

@overload
@classmethod
def creator(
cls,
*,
name: str,
schema_qualified_name: str,
schema_name: str,
database_name: str,
database_qualified_name: str,
connection_qualified_name: str,
definition: str,
) -> Procedure: ...

@classmethod
@init_guid
def creator(
cls,
*,
name: str,
definition: str,
schema_qualified_name: str,
schema_name: Optional[str] = None,
database_name: Optional[str] = None,
database_qualified_name: Optional[str] = None,
connection_qualified_name: Optional[str] = None,
) -> Procedure:
attributes = Procedure.Attributes.create(
name=name,
definition=definition,
schema_qualified_name=schema_qualified_name,
schema_name=schema_name,
database_name=database_name,
database_qualified_name=database_qualified_name,
connection_qualified_name=connection_qualified_name,
)
return cls(attributes=attributes)

@classmethod
@init_guid
def updater(cls, *, name: str, qualified_name: str, definition: str) -> Procedure:
validate_required_fields(
["name", "qualified_name", "definition"],
[name, qualified_name, definition],
)
procedure = Procedure(
attributes=Procedure.Attributes(qualified_name=qualified_name, name=name)
)
procedure.definition = definition
return procedure

def trim_to_required(self: Procedure) -> Procedure:
return self.updater(
qualified_name=self.qualified_name or "",
name=self.name or "",
definition=self.definition or "",
)
24 changes: 22 additions & 2 deletions pyatlan/generator/templates/methods/asset/s3_object.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,30 @@
name: str,
connection_qualified_name: str,
aws_arn: str,
s3_bucket_name: str,
s3_bucket_qualified_name: str,
) -> S3Object:
validate_required_fields(
[
"name",
"connection_qualified_name",
"aws_arn",
"s3_bucket_name",
"s3_bucket_qualified_name",
],
[name, connection_qualified_name, aws_arn, s3_bucket_qualified_name],
[
name,
connection_qualified_name,
aws_arn,
s3_bucket_name,
s3_bucket_qualified_name,
],
)
attributes = S3Object.Attributes.create(
name=name,
connection_qualified_name=connection_qualified_name,
aws_arn=aws_arn,
s3_bucket_name=s3_bucket_name,
s3_bucket_qualified_name=s3_bucket_qualified_name,
)
return cls(attributes=attributes)
Expand All @@ -34,6 +43,7 @@
name: str,
connection_qualified_name: str,
aws_arn: str,
s3_bucket_name: str,
s3_bucket_qualified_name: str,
) -> S3Object:
warn(
Expand All @@ -48,6 +58,7 @@
name=name,
connection_qualified_name=connection_qualified_name,
aws_arn=aws_arn,
s3_bucket_name=s3_bucket_name,
s3_bucket_qualified_name=s3_bucket_qualified_name,
)

Expand All @@ -59,21 +70,30 @@
name: str,
connection_qualified_name: str,
prefix: str,
s3_bucket_name: str,
s3_bucket_qualified_name: str,
) -> S3Object:
validate_required_fields(
[
"name",
"connection_qualified_name",
"prefix",
"s3_bucket_name",
"s3_bucket_qualified_name",
],
[name, connection_qualified_name, prefix, s3_bucket_qualified_name],
[
name,
connection_qualified_name,
prefix,
s3_bucket_name,
s3_bucket_qualified_name,
],
)
attributes = S3Object.Attributes.create_with_prefix(
name=name,
connection_qualified_name=connection_qualified_name,
prefix=prefix,
s3_bucket_name=s3_bucket_name,
s3_bucket_qualified_name=s3_bucket_qualified_name,
)
return cls(attributes=attributes)
50 changes: 50 additions & 0 deletions pyatlan/generator/templates/methods/attribute/procedure.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@

@classmethod
@init_guid
def create(
cls,
*,
name: str,
definition: str,
schema_qualified_name: Optional[str] = None,
schema_name: Optional[str] = None,
database_name: Optional[str] = None,
database_qualified_name: Optional[str] = None,
connection_qualified_name: Optional[str] = None,
) -> Procedure.Attributes:
validate_required_fields(
["name", "definition", "schema_qualified_name"],
[name, definition, schema_qualified_name],
)
assert schema_qualified_name # noqa: S101
if connection_qualified_name:
connector_name = AtlanConnectorType.get_connector_name(
connection_qualified_name
)
else:
connection_qn, connector_name = AtlanConnectorType.get_connector_name(
schema_qualified_name, "schema_qualified_name", 5
)

fields = schema_qualified_name.split("/")
qualified_name = f"{schema_qualified_name}/_procedures_/{name}"
connection_qualified_name = connection_qualified_name or connection_qn
database_name = database_name or fields[3]
schema_name = schema_name or fields[4]
database_qualified_name = (
database_qualified_name
or f"{connection_qualified_name}/{database_name}"
)

return Procedure.Attributes(
name=name,
definition=definition,
qualified_name=qualified_name,
database_name=database_name,
database_qualified_name=database_qualified_name,
schema_name=schema_name,
schema_qualified_name=schema_qualified_name,
atlan_schema=Schema.ref_by_qualified_name(schema_qualified_name),
connector_name=connector_name,
connection_qualified_name=connection_qualified_name,
)
29 changes: 26 additions & 3 deletions pyatlan/generator/templates/methods/attribute/s3_object.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,24 @@
name: str,
connection_qualified_name: str,
aws_arn: str,
s3_bucket_name: str,
s3_bucket_qualified_name: str,
) -> S3Object.Attributes:
validate_required_fields(
["name", "connection_qualified_name", "aws_arn", "s3_bucket_qualified_name"],
[name, connection_qualified_name, aws_arn, s3_bucket_qualified_name],
[
"name",
"connection_qualified_name",
"aws_arn",
"s3_bucket_name",
"s3_bucket_qualified_name",
],
[
name,
connection_qualified_name,
aws_arn,
s3_bucket_name,
s3_bucket_qualified_name,
],
)
fields = connection_qualified_name.split("/")
if len(fields) != 3:
Expand All @@ -30,6 +43,7 @@
connection_qualified_name=connection_qualified_name,
qualified_name=f"{connection_qualified_name}/{aws_arn}",
connector_name=connector_type.value,
s3_bucket_name=s3_bucket_name,
s3_bucket_qualified_name=s3_bucket_qualified_name,
bucket=S3Bucket.ref_by_qualified_name(s3_bucket_qualified_name),
)
Expand All @@ -42,16 +56,24 @@
name: str,
connection_qualified_name: str,
prefix: str,
s3_bucket_name: str,
s3_bucket_qualified_name: str,
) -> S3Object.Attributes:
validate_required_fields(
[
"name",
"connection_qualified_name",
"prefix",
"s3_bucket_name",
"s3_bucket_qualified_name",
],
[name, connection_qualified_name, prefix, s3_bucket_qualified_name],
[
name,
connection_qualified_name,
prefix,
s3_bucket_name,
s3_bucket_qualified_name,
],
)
fields = connection_qualified_name.split("/")
if len(fields) != 3:
Expand All @@ -71,6 +93,7 @@
connection_qualified_name=connection_qualified_name,
qualified_name=f"{connection_qualified_name}/{object_key}",
connector_name=connector_type.value,
s3_bucket_name=s3_bucket_name,
s3_bucket_qualified_name=s3_bucket_qualified_name,
bucket=S3Bucket.ref_by_qualified_name(s3_bucket_qualified_name),
)
5 changes: 4 additions & 1 deletion pyatlan/model/assets/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -66,8 +66,8 @@
"Column",
"DatabricksUnityCatalogTag",
"SnowflakeStream",
"Database",
"CalculationView",
"Database",
"Procedure",
"SnowflakeTag",
"CosmosMongoDB",
Expand Down Expand Up @@ -161,6 +161,7 @@
"cognos": ["Cognos"],
"superset": ["Superset"],
"qlik": ["Qlik"],
"dataverse": ["Dataverse"],
"cognite": ["Cognite"],
"salesforce": ["Salesforce"],
"readme_template": ["ReadmeTemplate"],
Expand Down Expand Up @@ -285,6 +286,8 @@
"qlik_chart": ["QlikChart"],
"qlik_dataset": ["QlikDataset"],
"qlik_sheet": ["QlikSheet"],
"dataverse_attribute": ["DataverseAttribute"],
"dataverse_entity": ["DataverseEntity"],
"cognite_event": ["CogniteEvent"],
"cognite_asset": ["CogniteAsset"],
"cognite_sequence": ["CogniteSequence"],
Expand Down
8 changes: 7 additions & 1 deletion pyatlan/model/assets/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -63,8 +63,8 @@ __all__ = [
"Column",
"DatabricksUnityCatalogTag",
"SnowflakeStream",
"Database",
"CalculationView",
"Database",
"Procedure",
"SnowflakeTag",
"CosmosMongoDB",
Expand Down Expand Up @@ -158,6 +158,7 @@ __all__ = [
"Cognos",
"Superset",
"Qlik",
"Dataverse",
"Cognite",
"Salesforce",
"ReadmeTemplate",
Expand Down Expand Up @@ -282,6 +283,8 @@ __all__ = [
"QlikChart",
"QlikDataset",
"QlikSheet",
"DataverseAttribute",
"DataverseEntity",
"CogniteEvent",
"CogniteAsset",
"CogniteSequence",
Expand Down Expand Up @@ -474,6 +477,9 @@ from .cube_hierarchy import CubeHierarchy
from .data_set import DataSet
from .data_studio import DataStudio
from .data_studio_asset import DataStudioAsset
from .dataverse import Dataverse
from .dataverse_attribute import DataverseAttribute
from .dataverse_entity import DataverseEntity
from .dbt_column_process import DbtColumnProcess
from .dbt_process import DbtProcess
from .dbt_tag import DbtTag
Expand Down
2 changes: 1 addition & 1 deletion pyatlan/model/assets/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,8 +173,8 @@
Column.Attributes.update_forward_refs(**localns)
DatabricksUnityCatalogTag.Attributes.update_forward_refs(**localns)
SnowflakeStream.Attributes.update_forward_refs(**localns)
Database.Attributes.update_forward_refs(**localns)
CalculationView.Attributes.update_forward_refs(**localns)
Database.Attributes.update_forward_refs(**localns)
Procedure.Attributes.update_forward_refs(**localns)
SnowflakeTag.Attributes.update_forward_refs(**localns)
CosmosMongoDB.Attributes.update_forward_refs(**localns)
Expand Down
Loading

0 comments on commit adbff64

Please sign in to comment.