Skip to content

Commit

Permalink
Merge pull request #472 from atlanhq/CXD-304
Browse files Browse the repository at this point in the history
CXD-304 | Support for `Dataverse` typedefs
  • Loading branch information
Aryamanz29 authored Jan 12, 2025
2 parents bcb1371 + 2c09ca5 commit dcba052
Show file tree
Hide file tree
Showing 14 changed files with 637 additions and 18 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@

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

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

@classmethod
@init_guid
def creator(
cls,
*,
name: str,
dataverse_entity_qualified_name: str,
connection_qualified_name: Optional[str] = None,
) -> DataverseAttribute:
validate_required_fields(
["name", "dataverse_entity_qualified_name"], [name, dataverse_entity_qualified_name],
)
attributes = DataverseAttribute.Attributes.creator(
name=name,
dataverse_entity_qualified_name=dataverse_entity_qualified_name,
connection_qualified_name=connection_qualified_name,
)
return cls(attributes=attributes)
12 changes: 12 additions & 0 deletions pyatlan/generator/templates/methods/asset/dataverse_entity.jinja2
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

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

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

return DataverseAttribute.Attributes(
name=name,
dataverse_entity_qualified_name=dataverse_entity_qualified_name,
connection_qualified_name=connection_qualified_name or connection_qn,
qualified_name=f"{dataverse_entity_qualified_name}/{name}",
connector_name=connector_name,
dataverse_entity=DataverseEntity.ref_by_qualified_name(
dataverse_entity_qualified_name
),
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@

@classmethod
@init_guid
def creator(
cls, *, name: str, connection_qualified_name: str
) -> DataverseEntity.Attributes:
validate_required_fields(
["name", "connection_qualified_name"], [name, connection_qualified_name],
)
return DataverseEntity.Attributes(
name=name,
qualified_name=f"{connection_qualified_name}/{name}",
connection_qualified_name=connection_qualified_name,
connector_name=AtlanConnectorType.get_connector_name(
connection_qualified_name
),
)
78 changes: 77 additions & 1 deletion pyatlan/model/assets/dataverse_attribute.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,59 @@

from __future__ import annotations

from typing import ClassVar, List, Optional
from typing import ClassVar, List, Optional, overload

from pydantic.v1 import Field, validator

from pyatlan.model.enums import AtlanConnectorType
from pyatlan.model.fields.atlan_fields import BooleanField, KeywordField, RelationField
from pyatlan.utils import init_guid, validate_required_fields

from .dataverse import Dataverse


class DataverseAttribute(Dataverse):
"""Description"""

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

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

@classmethod
@init_guid
def creator(
cls,
*,
name: str,
dataverse_entity_qualified_name: str,
connection_qualified_name: Optional[str] = None,
) -> DataverseAttribute:
validate_required_fields(
["name", "dataverse_entity_qualified_name"],
[name, dataverse_entity_qualified_name],
)
attributes = DataverseAttribute.Attributes.creator(
name=name,
dataverse_entity_qualified_name=dataverse_entity_qualified_name,
connection_qualified_name=connection_qualified_name,
)
return cls(attributes=attributes)

type_name: str = Field(default="DataverseAttribute", allow_mutation=False)

@validator("type_name")
Expand Down Expand Up @@ -188,6 +229,41 @@ class Attributes(Dataverse.Attributes):
default=None, description=""
) # relationship

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

return DataverseAttribute.Attributes(
name=name,
dataverse_entity_qualified_name=dataverse_entity_qualified_name,
connection_qualified_name=connection_qualified_name or connection_qn,
qualified_name=f"{dataverse_entity_qualified_name}/{name}",
connector_name=connector_name,
dataverse_entity=DataverseEntity.ref_by_qualified_name(
dataverse_entity_qualified_name
),
)

attributes: DataverseAttribute.Attributes = Field(
default_factory=lambda: DataverseAttribute.Attributes(),
description=(
Expand Down
33 changes: 33 additions & 0 deletions pyatlan/model/assets/dataverse_entity.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,29 @@

from pydantic.v1 import Field, validator

from pyatlan.model.enums import AtlanConnectorType
from pyatlan.model.fields.atlan_fields import KeywordField, RelationField
from pyatlan.utils import init_guid, validate_required_fields

from .dataverse import Dataverse


class DataverseEntity(Dataverse):
"""Description"""

@classmethod
@init_guid
def creator(cls, *, name: str, connection_qualified_name: str) -> DataverseEntity:
validate_required_fields(
["name", "connection_qualified_name"],
[name, connection_qualified_name],
)
attributes = DataverseEntity.Attributes.creator(
name=name,
connection_qualified_name=connection_qualified_name,
)
return cls(attributes=attributes)

type_name: str = Field(default="DataverseEntity", allow_mutation=False)

@validator("type_name")
Expand Down Expand Up @@ -102,6 +117,24 @@ class Attributes(Dataverse.Attributes):
default=None, description=""
) # relationship

@classmethod
@init_guid
def creator(
cls, *, name: str, connection_qualified_name: str
) -> DataverseEntity.Attributes:
validate_required_fields(
["name", "connection_qualified_name"],
[name, connection_qualified_name],
)
return DataverseEntity.Attributes(
name=name,
qualified_name=f"{connection_qualified_name}/{name}",
connection_qualified_name=connection_qualified_name,
connector_name=AtlanConnectorType.get_connector_name(
connection_qualified_name
),
)

attributes: DataverseEntity.Attributes = Field(
default_factory=lambda: DataverseEntity.Attributes(),
description=(
Expand Down
2 changes: 2 additions & 0 deletions pyatlan/model/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
"ColumnProcess",
"Connection",
"DataStudioAsset",
"DataverseAttribute",
"DataverseEntity",
"Database",
"DbtColumnProcess",
"DbtMetric",
Expand Down
34 changes: 17 additions & 17 deletions pyatlan/model/structs.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,13 +110,6 @@ class ColumnValueFrequencyMap(AtlanObject):
column_value_frequency: Optional[int] = Field(default=None, description="")


class SourceTagAttachmentValue(AtlanObject):
"""Description"""

tag_attachment_key: Optional[str] = Field(default=None, description="")
tag_attachment_value: Optional[str] = Field(default=None, description="")


class SourceTagAttachment(AtlanObject):
"""Description"""

Expand Down Expand Up @@ -261,6 +254,13 @@ def of(
)


class SourceTagAttachmentValue(AtlanObject):
"""Description"""

tag_attachment_key: Optional[str] = Field(default=None, description="")
tag_attachment_value: Optional[str] = Field(default=None, description="")


class BadgeCondition(AtlanObject):
"""Description"""

Expand Down Expand Up @@ -295,18 +295,18 @@ def create(
badge_condition_colorhex: Optional[str] = Field(default=None, description="")


class AzureTag(AtlanObject):
class StarredDetails(AtlanObject):
"""Description"""

azure_tag_key: str = Field(description="")
azure_tag_value: str = Field(description="")
asset_starred_by: Optional[str] = Field(default=None, description="")
asset_starred_at: Optional[datetime] = Field(default=None, description="")


class StarredDetails(AtlanObject):
class AzureTag(AtlanObject):
"""Description"""

asset_starred_by: Optional[str] = Field(default=None, description="")
asset_starred_at: Optional[datetime] = Field(default=None, description="")
azure_tag_key: str = Field(description="")
azure_tag_value: str = Field(description="")


class AuthPolicyCondition(AtlanObject):
Expand Down Expand Up @@ -410,16 +410,16 @@ class SourceTagAttribute(AtlanObject):

ColumnValueFrequencyMap.update_forward_refs()

SourceTagAttachmentValue.update_forward_refs()

SourceTagAttachment.update_forward_refs()

BadgeCondition.update_forward_refs()
SourceTagAttachmentValue.update_forward_refs()

AzureTag.update_forward_refs()
BadgeCondition.update_forward_refs()

StarredDetails.update_forward_refs()

AzureTag.update_forward_refs()

AuthPolicyCondition.update_forward_refs()

AwsTag.update_forward_refs()
Expand Down
2 changes: 2 additions & 0 deletions pyatlan/model/typedef.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,8 @@
"ColumnProcess",
"Connection",
"DataStudioAsset",
"DataverseAttribute",
"DataverseEntity",
"Database",
"DbtColumnProcess",
"DbtMetric",
Expand Down
Loading

0 comments on commit dcba052

Please sign in to comment.