Skip to content

Commit

Permalink
Merge pull request #481 from atlanhq/CXD-321
Browse files Browse the repository at this point in the history
CXD-321 : Added `ApplicationField.creator()` method
  • Loading branch information
Aryamanz29 authored Jan 31, 2025
2 parents 5869abf + 6f73a51 commit e39cac0
Show file tree
Hide file tree
Showing 38 changed files with 790 additions and 128 deletions.
10 changes: 10 additions & 0 deletions docs/asset/applicationfield.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
.. _applicationfield:

ApplicationField
================

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

.. autoclass:: ApplicationField
:members:
1 change: 1 addition & 0 deletions docs/assets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ You can interact with all of the following different kinds of assets:
asset/anomalocheck
asset/app
asset/application
asset/applicationfield
asset/asset
asset/atlasglossary
asset/atlasglossarycategory
Expand Down
1 change: 1 addition & 0 deletions pyatlan/generator/templates/imports.jinja2
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ from pyatlan.model.structs import (
AwsTag,
AzureTag,
BadgeCondition,
BusinessPolicyRule,
ColumnValueFrequencyMap,
DbtMetricFilter,
GoogleLabel,
Expand Down
38 changes: 38 additions & 0 deletions pyatlan/generator/templates/methods/asset/application_field.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

@overload
@classmethod
def creator(
cls,
*,
name: str,
application_qualified_name: str,
) -> ApplicationField: ...

@overload
@classmethod
def creator(
cls,
*,
name: str,
application_qualified_name: str,
connection_qualified_name: str,
) -> ApplicationField: ...

@classmethod
@init_guid
def creator(
cls,
*,
name: str,
application_qualified_name: str,
connection_qualified_name: Optional[str] = None,
) -> ApplicationField:
validate_required_fields(
["name", "application_qualified_name"], [name, application_qualified_name]
)
attributes = ApplicationField.Attributes.create(
name=name,
application_qualified_name=application_qualified_name,
connection_qualified_name=connection_qualified_name,
)
return cls(attributes=attributes)
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@

@classmethod
@init_guid
def create(
cls,
*,
name: str,
application_qualified_name: str,
connection_qualified_name: Optional[str] = None,
) -> ApplicationField.Attributes:
validate_required_fields(
["name", "application_qualified_name"],
[name, application_qualified_name],
)
if connection_qualified_name:
connector_name = AtlanConnectorType.get_connector_name(
connection_qualified_name
)
else:
connection_qn, connector_name = AtlanConnectorType.get_connector_name(
application_qualified_name, "application_qualified_name", 4
)

return ApplicationField.Attributes(
name=name,
qualified_name=f"{application_qualified_name}/{name}",
connection_qualified_name=connection_qualified_name or connection_qn,
connector_name=connector_name,
application_parent_qualified_name=application_qualified_name,
application_parent=Application.ref_by_qualified_name(application_qualified_name),
)
3 changes: 2 additions & 1 deletion pyatlan/model/assets/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@
"Stakeholder",
"AirflowDag",
"AirflowTask",
"ApplicationField",
"Application",
"AdfDataflow",
"AdfDataset",
Expand Down Expand Up @@ -66,8 +67,8 @@
"Column",
"DatabricksUnityCatalogTag",
"SnowflakeStream",
"CalculationView",
"Database",
"CalculationView",
"Procedure",
"SnowflakeTag",
"CosmosMongoDB",
Expand Down
4 changes: 3 additions & 1 deletion pyatlan/model/assets/__init__.pyi
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ __all__ = [
"Stakeholder",
"AirflowDag",
"AirflowTask",
"ApplicationField",
"Application",
"AdfDataflow",
"AdfDataset",
Expand Down Expand Up @@ -63,8 +64,8 @@ __all__ = [
"Column",
"DatabricksUnityCatalogTag",
"SnowflakeStream",
"CalculationView",
"Database",
"CalculationView",
"Procedure",
"SnowflakeTag",
"CosmosMongoDB",
Expand Down Expand Up @@ -380,6 +381,7 @@ from .core.anomalo import Anomalo
from .core.anomalo_check import AnomaloCheck
from .core.app import App
from .core.application import Application
from .core.application_field import ApplicationField
from .core.asset import Asset
from .core.atlas_glossary import AtlasGlossary
from .core.atlas_glossary_category import AtlasGlossaryCategory
Expand Down
25 changes: 25 additions & 0 deletions pyatlan/model/assets/business_policy.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
RelationField,
TextField,
)
from pyatlan.model.structs import BusinessPolicyRule

from .core.asset import Asset

Expand Down Expand Up @@ -89,6 +90,12 @@ def __setattr__(self, name, value):
"""
Selected approval workflow id for business policy
"""
BUSINESS_POLICY_RULES: ClassVar[KeywordField] = KeywordField(
"businessPolicyRules", "businessPolicyRules"
)
"""
List of rules applied to this business policy.
"""

EXCEPTIONS_FOR_BUSINESS_POLICY: ClassVar[RelationField] = RelationField(
"exceptionsForBusinessPolicy"
Expand All @@ -113,6 +120,7 @@ def __setattr__(self, name, value):
"business_policy_filter_d_s_l",
"business_policy_base_parent_guid",
"business_policy_selected_approval_w_f",
"business_policy_rules",
"exceptions_for_business_policy",
"related_business_policies",
]
Expand Down Expand Up @@ -255,6 +263,20 @@ def business_policy_selected_approval_w_f(
business_policy_selected_approval_w_f
)

@property
def business_policy_rules(self) -> Optional[List[BusinessPolicyRule]]:
return (
None if self.attributes is None else self.attributes.business_policy_rules
)

@business_policy_rules.setter
def business_policy_rules(
self, business_policy_rules: Optional[List[BusinessPolicyRule]]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.business_policy_rules = business_policy_rules

@property
def exceptions_for_business_policy(self) -> Optional[List[BusinessPolicyException]]:
return (
Expand Down Expand Up @@ -311,6 +333,9 @@ class Attributes(Asset.Attributes):
business_policy_selected_approval_w_f: Optional[str] = Field(
default=None, description=""
)
business_policy_rules: Optional[List[BusinessPolicyRule]] = Field(
default=None, description=""
)
exceptions_for_business_policy: Optional[List[BusinessPolicyException]] = Field(
default=None, description=""
) # relationship
Expand Down
4 changes: 3 additions & 1 deletion pyatlan/model/assets/core/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from .anomalo_check import AnomaloCheck
from .app import App
from .application import Application
from .application_field import ApplicationField
from .asset import Asset
from .atlas_glossary import AtlasGlossary
from .atlas_glossary_category import AtlasGlossaryCategory
Expand Down Expand Up @@ -147,6 +148,7 @@
Stakeholder.Attributes.update_forward_refs(**localns)
AirflowDag.Attributes.update_forward_refs(**localns)
AirflowTask.Attributes.update_forward_refs(**localns)
ApplicationField.Attributes.update_forward_refs(**localns)
Application.Attributes.update_forward_refs(**localns)
AdfDataflow.Attributes.update_forward_refs(**localns)
AdfDataset.Attributes.update_forward_refs(**localns)
Expand Down Expand Up @@ -174,8 +176,8 @@
Column.Attributes.update_forward_refs(**localns)
DatabricksUnityCatalogTag.Attributes.update_forward_refs(**localns)
SnowflakeStream.Attributes.update_forward_refs(**localns)
CalculationView.Attributes.update_forward_refs(**localns)
Database.Attributes.update_forward_refs(**localns)
CalculationView.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
27 changes: 27 additions & 0 deletions pyatlan/model/assets/core/application.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,16 @@ def __setattr__(self, name, value):
"""
TBC
"""
APPLICATION_CHILD_FIELDS: ClassVar[RelationField] = RelationField(
"applicationChildFields"
)
"""
TBC
"""

_convenience_properties: ClassVar[List[str]] = [
"application_owned_assets",
"application_child_fields",
]

@property
Expand All @@ -73,10 +80,29 @@ def application_owned_assets(self, application_owned_assets: Optional[List[Asset
self.attributes = self.Attributes()
self.attributes.application_owned_assets = application_owned_assets

@property
def application_child_fields(self) -> Optional[List[ApplicationField]]:
return (
None
if self.attributes is None
else self.attributes.application_child_fields
)

@application_child_fields.setter
def application_child_fields(
self, application_child_fields: Optional[List[ApplicationField]]
):
if self.attributes is None:
self.attributes = self.Attributes()
self.attributes.application_child_fields = application_child_fields

class Attributes(App.Attributes):
application_owned_assets: Optional[List[Asset]] = Field(
default=None, description=""
) # relationship
application_child_fields: Optional[List[ApplicationField]] = Field(
default=None, description=""
) # relationship

@classmethod
@init_guid
Expand Down Expand Up @@ -108,4 +134,5 @@ def creator(
)


from .application_field import ApplicationField # noqa
from .asset import Asset # noqa
Loading

0 comments on commit e39cac0

Please sign in to comment.