diff --git a/pyatlan/generator/templates/methods/asset/data_studio_asset.jinja2 b/pyatlan/generator/templates/methods/asset/data_studio_asset.jinja2 index cdd102a3d..dd45153a8 100644 --- a/pyatlan/generator/templates/methods/asset/data_studio_asset.jinja2 +++ b/pyatlan/generator/templates/methods/asset/data_studio_asset.jinja2 @@ -7,6 +7,6 @@ ["name", "connection_qualified_name", "data_studio_asset_type"], [name, connection_qualified_name, data_studio_asset_type] ) attributes = {{ entity_def.name }}.Attributes.create( - name=name, connection_qualified_name=connection_qualified_name, data_studio_asset_type=data_studio_asset_type + name=name, connection_qualified_name=connection_qualified_name, data_studio_asset_type=data_studio_asset_type, gdsid = str(uuid.uuid4()) ) return cls(attributes=attributes) diff --git a/pyatlan/generator/templates/methods/attribute/data_studio_asset.jinja2 b/pyatlan/generator/templates/methods/attribute/data_studio_asset.jinja2 index 93a3df3ea..ee2415bcd 100644 --- a/pyatlan/generator/templates/methods/attribute/data_studio_asset.jinja2 +++ b/pyatlan/generator/templates/methods/attribute/data_studio_asset.jinja2 @@ -2,7 +2,7 @@ @classmethod # @validate_arguments() @init_guid - def create(cls, *, name: str, connection_qualified_name: str, data_studio_asset_type: GoogleDatastudioAssetType) -> {{ entity_def.name }}.Attributes: + def create(cls, *, name: str, connection_qualified_name: str, data_studio_asset_type: GoogleDatastudioAssetType, gdsid: str) -> {{ entity_def.name }}.Attributes: validate_required_fields( ["name", "connection_qualified_name", "data_studio_asset_type"], [name, connection_qualified_name, data_studio_asset_type] @@ -20,7 +20,7 @@ return {{ entity_def.name }}.Attributes( name=name, - qualified_name=f"{connection_qualified_name}/{name}", + qualified_name=f"{connection_qualified_name}/{gdsid}", connection_qualified_name=connection_qualified_name, connector_name=connector_type.value, data_studio_asset_type=data_studio_asset_type, diff --git a/pyatlan/model/assets/asset02.py b/pyatlan/model/assets/asset02.py index 6a862eaa4..b19f51bfc 100644 --- a/pyatlan/model/assets/asset02.py +++ b/pyatlan/model/assets/asset02.py @@ -4,6 +4,7 @@ from __future__ import annotations +from datetime import datetime from typing import ClassVar, Optional from pydantic import Field, validator @@ -196,6 +197,12 @@ def __setattr__(self, name, value): ) """ + """ + VECTOR_EMBEDDINGS_UPDATED_AT: ClassVar[NumericField] = NumericField( + "vectorEmbeddingsUpdatedAt", "vectorEmbeddingsUpdatedAt" + ) + """ + """ _convenience_properties: ClassVar[list[str]] = [ @@ -225,6 +232,7 @@ def __setattr__(self, name, value): "use_object_storage", "object_storage_upload_threshold", "vector_embeddings_enabled", + "vector_embeddings_updated_at", ] @property @@ -537,6 +545,22 @@ def vector_embeddings_enabled(self, vector_embeddings_enabled: Optional[bool]): self.attributes = self.Attributes() self.attributes.vector_embeddings_enabled = vector_embeddings_enabled + @property + def vector_embeddings_updated_at(self) -> Optional[datetime]: + return ( + None + if self.attributes is None + else self.attributes.vector_embeddings_updated_at + ) + + @vector_embeddings_updated_at.setter + def vector_embeddings_updated_at( + self, vector_embeddings_updated_at: Optional[datetime] + ): + if self.attributes is None: + self.attributes = self.Attributes() + self.attributes.vector_embeddings_updated_at = vector_embeddings_updated_at + class Attributes(Asset.Attributes): category: Optional[str] = Field(None, description="", alias="category") sub_category: Optional[str] = Field(None, description="", alias="subCategory") @@ -598,6 +622,9 @@ class Attributes(Asset.Attributes): vector_embeddings_enabled: Optional[bool] = Field( None, description="", alias="vectorEmbeddingsEnabled" ) + vector_embeddings_updated_at: Optional[datetime] = Field( + None, description="", alias="vectorEmbeddingsUpdatedAt" + ) is_loaded: bool = Field(default=True) diff --git a/pyatlan/model/assets/asset58.py b/pyatlan/model/assets/asset58.py index c3f1c27f9..8fd5682a0 100644 --- a/pyatlan/model/assets/asset58.py +++ b/pyatlan/model/assets/asset58.py @@ -4,6 +4,7 @@ from __future__ import annotations +import uuid from typing import ClassVar, Optional from pydantic import Field, validator @@ -43,6 +44,7 @@ def create( name=name, connection_qualified_name=connection_qualified_name, data_studio_asset_type=data_studio_asset_type, + gdsid=str(uuid.uuid4()), ) return cls(attributes=attributes) @@ -331,6 +333,7 @@ def create( name: str, connection_qualified_name: str, data_studio_asset_type: GoogleDatastudioAssetType, + gdsid: str, ) -> DataStudioAsset.Attributes: validate_required_fields( ["name", "connection_qualified_name", "data_studio_asset_type"], @@ -349,7 +352,7 @@ def create( return DataStudioAsset.Attributes( name=name, - qualified_name=f"{connection_qualified_name}/{name}", + qualified_name=f"{connection_qualified_name}/{gdsid}", connection_qualified_name=connection_qualified_name, connector_name=connector_type.value, data_studio_asset_type=data_studio_asset_type, diff --git a/pyatlan/model/structs.py b/pyatlan/model/structs.py index 6d15dcf6c..c10813d9d 100644 --- a/pyatlan/model/structs.py +++ b/pyatlan/model/structs.py @@ -31,6 +31,13 @@ class AwsCloudWatchMetric(AtlanObject): aws_cloud_watch_metric_scope: str = Field(description="") +class Histogram(AtlanObject): + """Description""" + + boundaries: set[float] = Field(description="") + frequencies: set[float] = Field(description="") + + class KafkaTopicConsumption(AtlanObject): """Description""" @@ -40,13 +47,6 @@ class KafkaTopicConsumption(AtlanObject): topic_current_offset: Optional[int] = Field(None, description="") -class Histogram(AtlanObject): - """Description""" - - boundaries: set[float] = Field(description="") - frequencies: set[float] = Field(description="") - - class ColumnValueFrequencyMap(AtlanObject): """Description""" @@ -61,6 +61,21 @@ class SourceTagAttachmentValue(AtlanObject): tag_attachment_value: Optional[str] = Field(None, description="") +class SourceTagAttachment(AtlanObject): + """Description""" + + source_tag_name: Optional[str] = Field(None, description="") + source_tag_qualified_name: Optional[str] = Field(None, description="") + source_tag_guid: Optional[str] = Field(None, description="") + source_tag_connector_name: Optional[str] = Field(None, description="") + source_tag_value: Optional[list[SourceTagAttachmentValue]] = Field( + None, description="" + ) + is_source_tag_synced: Optional[bool] = Field(None, description="") + source_tag_sync_timestamp: Optional[datetime] = Field(None, description="") + source_tag_sync_error: Optional[str] = Field(None, description="") + + class BadgeCondition(AtlanObject): """Description""" @@ -94,21 +109,6 @@ def create( badge_condition_colorhex: Optional[str] = Field(None, description="") -class SourceTagAttachment(AtlanObject): - """Description""" - - source_tag_name: Optional[str] = Field(None, description="") - source_tag_qualified_name: Optional[str] = Field(None, description="") - source_tag_guid: Optional[str] = Field(None, description="") - source_tag_connector_name: Optional[str] = Field(None, description="") - source_tag_value: Optional[list[SourceTagAttachmentValue]] = Field( - None, description="" - ) - is_source_tag_synced: Optional[bool] = Field(None, description="") - source_tag_sync_timestamp: Optional[datetime] = Field(None, description="") - source_tag_sync_error: Optional[str] = Field(None, description="") - - class AzureTag(AtlanObject): """Description""" @@ -137,13 +137,6 @@ class AwsTag(AtlanObject): aws_tag_value: str = Field(description="") -class GoogleTag(AtlanObject): - """Description""" - - google_tag_key: str = Field(description="") - google_tag_value: str = Field(description="") - - class DbtMetricFilter(AtlanObject): """Description""" @@ -153,6 +146,13 @@ class DbtMetricFilter(AtlanObject): dbt_metric_filter_value: Optional[str] = Field(None, description="") +class GoogleTag(AtlanObject): + """Description""" + + google_tag_key: str = Field(description="") + google_tag_value: str = Field(description="") + + class AuthPolicyValiditySchedule(AtlanObject): """Description""" @@ -208,18 +208,18 @@ class SourceTagAttribute(AtlanObject): AwsCloudWatchMetric.update_forward_refs() -KafkaTopicConsumption.update_forward_refs() - Histogram.update_forward_refs() +KafkaTopicConsumption.update_forward_refs() + ColumnValueFrequencyMap.update_forward_refs() SourceTagAttachmentValue.update_forward_refs() -BadgeCondition.update_forward_refs() - SourceTagAttachment.update_forward_refs() +BadgeCondition.update_forward_refs() + AzureTag.update_forward_refs() StarredDetails.update_forward_refs() @@ -228,10 +228,10 @@ class SourceTagAttribute(AtlanObject): AwsTag.update_forward_refs() -GoogleTag.update_forward_refs() - DbtMetricFilter.update_forward_refs() +GoogleTag.update_forward_refs() + AuthPolicyValiditySchedule.update_forward_refs() MCRuleComparison.update_forward_refs() diff --git a/tests/unit/model/data_studio_asset_test.py b/tests/unit/model/data_studio_asset_test.py index 7be56faf6..5bc49409d 100644 --- a/tests/unit/model/data_studio_asset_test.py +++ b/tests/unit/model/data_studio_asset_test.py @@ -59,7 +59,7 @@ def test_create_report(): assert sut.name == REPORT_NAME assert sut.connection_qualified_name == DATASTUDIO_CONNECTION_QUALIFIED_NAME - assert sut.qualified_name == QUALIFIED_NAME_REPORT + assert sut.qualified_name assert sut.connector_name == CONNECTOR_NAME assert sut.data_studio_asset_type == GoogleDatastudioAssetType.REPORT @@ -74,7 +74,7 @@ def test_create_data_source(): assert sut.name == SOURCE_NAME assert sut.connection_qualified_name == DATASTUDIO_CONNECTION_QUALIFIED_NAME - assert sut.qualified_name == QUALIFIED_NAME_SOURCE + assert sut.qualified_name assert sut.connector_name == CONNECTOR_NAME assert sut.data_studio_asset_type == GoogleDatastudioAssetType.DATA_SOURCE @@ -121,7 +121,7 @@ def test_trim_to_required_report(): ).trim_to_required() assert sut.name == REPORT_NAME - assert sut.qualified_name == QUALIFIED_NAME_REPORT + assert sut.qualified_name def test_trim_to_required_data_source(): @@ -132,4 +132,4 @@ def test_trim_to_required_data_source(): ).trim_to_required() assert sut.name == SOURCE_NAME - assert sut.qualified_name == QUALIFIED_NAME_SOURCE + assert sut.qualified_name