acryl-datahub 0.15.0.2rc4__py3-none-any.whl → 0.15.0.2rc6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of acryl-datahub might be problematic. Click here for more details.
- {acryl_datahub-0.15.0.2rc4.dist-info → acryl_datahub-0.15.0.2rc6.dist-info}/METADATA +2440 -2440
- {acryl_datahub-0.15.0.2rc4.dist-info → acryl_datahub-0.15.0.2rc6.dist-info}/RECORD +50 -46
- datahub/__init__.py +1 -1
- datahub/cli/delete_cli.py +3 -3
- datahub/cli/migrate.py +2 -2
- datahub/emitter/mcp_builder.py +27 -0
- datahub/emitter/rest_emitter.py +1 -1
- datahub/ingestion/api/source.py +2 -2
- datahub/ingestion/source/delta_lake/source.py +0 -5
- datahub/ingestion/source/demo_data.py +1 -1
- datahub/ingestion/source/fivetran/fivetran.py +1 -6
- datahub/ingestion/source/gc/soft_deleted_entity_cleanup.py +6 -2
- datahub/ingestion/source/iceberg/iceberg.py +10 -3
- datahub/ingestion/source/iceberg/iceberg_common.py +49 -9
- datahub/ingestion/source/iceberg/iceberg_profiler.py +3 -1
- datahub/ingestion/source/kafka_connect/kafka_connect.py +1 -6
- datahub/ingestion/source/metabase.py +1 -6
- datahub/ingestion/source/mlflow.py +0 -5
- datahub/ingestion/source/nifi.py +0 -5
- datahub/ingestion/source/redash.py +0 -5
- datahub/ingestion/source/redshift/redshift.py +1 -0
- datahub/ingestion/source/snowflake/snowflake_config.py +13 -0
- datahub/ingestion/source/snowflake/snowflake_schema.py +5 -2
- datahub/ingestion/source/snowflake/snowflake_schema_gen.py +112 -20
- datahub/ingestion/source/snowflake/snowflake_tag.py +14 -4
- datahub/ingestion/source/snowflake/snowflake_v2.py +0 -6
- datahub/ingestion/source/sql/sql_types.py +1 -1
- datahub/ingestion/source/sql/sql_utils.py +5 -0
- datahub/ingestion/source/superset.py +1 -6
- datahub/ingestion/source/tableau/tableau.py +0 -6
- datahub/metadata/_schema_classes.py +314 -41
- datahub/metadata/_urns/urn_defs.py +54 -0
- datahub/metadata/com/linkedin/pegasus2avro/common/__init__.py +2 -0
- datahub/metadata/com/linkedin/pegasus2avro/metadata/key/__init__.py +2 -0
- datahub/metadata/com/linkedin/pegasus2avro/versionset/__init__.py +17 -0
- datahub/metadata/schema.avsc +296 -87
- datahub/metadata/schemas/DatasetKey.avsc +2 -1
- datahub/metadata/schemas/MLFeatureProperties.avsc +51 -0
- datahub/metadata/schemas/MLModelDeploymentProperties.avsc +51 -0
- datahub/metadata/schemas/MLModelGroupProperties.avsc +96 -23
- datahub/metadata/schemas/MLModelKey.avsc +2 -1
- datahub/metadata/schemas/MLModelProperties.avsc +96 -48
- datahub/metadata/schemas/MLPrimaryKeyProperties.avsc +51 -0
- datahub/metadata/schemas/MetadataChangeEvent.avsc +98 -71
- datahub/metadata/schemas/VersionProperties.avsc +216 -0
- datahub/metadata/schemas/VersionSetKey.avsc +26 -0
- datahub/metadata/schemas/VersionSetProperties.avsc +49 -0
- {acryl_datahub-0.15.0.2rc4.dist-info → acryl_datahub-0.15.0.2rc6.dist-info}/WHEEL +0 -0
- {acryl_datahub-0.15.0.2rc4.dist-info → acryl_datahub-0.15.0.2rc6.dist-info}/entry_points.txt +0 -0
- {acryl_datahub-0.15.0.2rc4.dist-info → acryl_datahub-0.15.0.2rc6.dist-info}/top_level.txt +0 -0
|
@@ -6142,19 +6142,147 @@ class TimeStampClass(DictWrapper):
|
|
|
6142
6142
|
self._inner_dict['actor'] = value
|
|
6143
6143
|
|
|
6144
6144
|
|
|
6145
|
+
class VersionPropertiesClass(_Aspect):
|
|
6146
|
+
"""Properties about a versioned asset i.e. dataset, ML Model, etc."""
|
|
6147
|
+
|
|
6148
|
+
|
|
6149
|
+
ASPECT_NAME = 'versionProperties'
|
|
6150
|
+
ASPECT_INFO = {}
|
|
6151
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.common.VersionProperties")
|
|
6152
|
+
|
|
6153
|
+
def __init__(self,
|
|
6154
|
+
versionSet: str,
|
|
6155
|
+
version: "VersionTagClass",
|
|
6156
|
+
sortId: str,
|
|
6157
|
+
aliases: Optional[List["VersionTagClass"]]=None,
|
|
6158
|
+
comment: Union[None, str]=None,
|
|
6159
|
+
sourceCreatedTimestamp: Union[None, "AuditStampClass"]=None,
|
|
6160
|
+
metadataCreatedTimestamp: Union[None, "AuditStampClass"]=None,
|
|
6161
|
+
isLatest: Union[None, bool]=None,
|
|
6162
|
+
):
|
|
6163
|
+
super().__init__()
|
|
6164
|
+
|
|
6165
|
+
self.versionSet = versionSet
|
|
6166
|
+
self.version = version
|
|
6167
|
+
if aliases is None:
|
|
6168
|
+
# default: []
|
|
6169
|
+
self.aliases = list()
|
|
6170
|
+
else:
|
|
6171
|
+
self.aliases = aliases
|
|
6172
|
+
self.comment = comment
|
|
6173
|
+
self.sortId = sortId
|
|
6174
|
+
self.sourceCreatedTimestamp = sourceCreatedTimestamp
|
|
6175
|
+
self.metadataCreatedTimestamp = metadataCreatedTimestamp
|
|
6176
|
+
self.isLatest = isLatest
|
|
6177
|
+
|
|
6178
|
+
def _restore_defaults(self) -> None:
|
|
6179
|
+
self.versionSet = str()
|
|
6180
|
+
self.version = VersionTagClass._construct_with_defaults()
|
|
6181
|
+
self.aliases = list()
|
|
6182
|
+
self.comment = self.RECORD_SCHEMA.fields_dict["comment"].default
|
|
6183
|
+
self.sortId = str()
|
|
6184
|
+
self.sourceCreatedTimestamp = self.RECORD_SCHEMA.fields_dict["sourceCreatedTimestamp"].default
|
|
6185
|
+
self.metadataCreatedTimestamp = self.RECORD_SCHEMA.fields_dict["metadataCreatedTimestamp"].default
|
|
6186
|
+
self.isLatest = self.RECORD_SCHEMA.fields_dict["isLatest"].default
|
|
6187
|
+
|
|
6188
|
+
|
|
6189
|
+
@property
|
|
6190
|
+
def versionSet(self) -> str:
|
|
6191
|
+
"""The linked Version Set entity that ties multiple versioned assets together"""
|
|
6192
|
+
return self._inner_dict.get('versionSet') # type: ignore
|
|
6193
|
+
|
|
6194
|
+
@versionSet.setter
|
|
6195
|
+
def versionSet(self, value: str) -> None:
|
|
6196
|
+
self._inner_dict['versionSet'] = value
|
|
6197
|
+
|
|
6198
|
+
|
|
6199
|
+
@property
|
|
6200
|
+
def version(self) -> "VersionTagClass":
|
|
6201
|
+
"""Label for this versioned asset, is unique within a version set"""
|
|
6202
|
+
return self._inner_dict.get('version') # type: ignore
|
|
6203
|
+
|
|
6204
|
+
@version.setter
|
|
6205
|
+
def version(self, value: "VersionTagClass") -> None:
|
|
6206
|
+
self._inner_dict['version'] = value
|
|
6207
|
+
|
|
6208
|
+
|
|
6209
|
+
@property
|
|
6210
|
+
def aliases(self) -> List["VersionTagClass"]:
|
|
6211
|
+
"""Associated aliases for this versioned asset"""
|
|
6212
|
+
return self._inner_dict.get('aliases') # type: ignore
|
|
6213
|
+
|
|
6214
|
+
@aliases.setter
|
|
6215
|
+
def aliases(self, value: List["VersionTagClass"]) -> None:
|
|
6216
|
+
self._inner_dict['aliases'] = value
|
|
6217
|
+
|
|
6218
|
+
|
|
6219
|
+
@property
|
|
6220
|
+
def comment(self) -> Union[None, str]:
|
|
6221
|
+
"""Comment documenting what this version was created for, changes, or represents"""
|
|
6222
|
+
return self._inner_dict.get('comment') # type: ignore
|
|
6223
|
+
|
|
6224
|
+
@comment.setter
|
|
6225
|
+
def comment(self, value: Union[None, str]) -> None:
|
|
6226
|
+
self._inner_dict['comment'] = value
|
|
6227
|
+
|
|
6228
|
+
|
|
6229
|
+
@property
|
|
6230
|
+
def sortId(self) -> str:
|
|
6231
|
+
"""Sort identifier that determines where a version lives in the order of the Version Set.
|
|
6232
|
+
What this looks like depends on the Version Scheme. For sort ids generated by DataHub we use an 8 character string representation."""
|
|
6233
|
+
return self._inner_dict.get('sortId') # type: ignore
|
|
6234
|
+
|
|
6235
|
+
@sortId.setter
|
|
6236
|
+
def sortId(self, value: str) -> None:
|
|
6237
|
+
self._inner_dict['sortId'] = value
|
|
6238
|
+
|
|
6239
|
+
|
|
6240
|
+
@property
|
|
6241
|
+
def sourceCreatedTimestamp(self) -> Union[None, "AuditStampClass"]:
|
|
6242
|
+
"""Timestamp reflecting when this asset version was created in the source system."""
|
|
6243
|
+
return self._inner_dict.get('sourceCreatedTimestamp') # type: ignore
|
|
6244
|
+
|
|
6245
|
+
@sourceCreatedTimestamp.setter
|
|
6246
|
+
def sourceCreatedTimestamp(self, value: Union[None, "AuditStampClass"]) -> None:
|
|
6247
|
+
self._inner_dict['sourceCreatedTimestamp'] = value
|
|
6248
|
+
|
|
6249
|
+
|
|
6250
|
+
@property
|
|
6251
|
+
def metadataCreatedTimestamp(self) -> Union[None, "AuditStampClass"]:
|
|
6252
|
+
"""Timestamp reflecting when the metadata for this version was created in DataHub"""
|
|
6253
|
+
return self._inner_dict.get('metadataCreatedTimestamp') # type: ignore
|
|
6254
|
+
|
|
6255
|
+
@metadataCreatedTimestamp.setter
|
|
6256
|
+
def metadataCreatedTimestamp(self, value: Union[None, "AuditStampClass"]) -> None:
|
|
6257
|
+
self._inner_dict['metadataCreatedTimestamp'] = value
|
|
6258
|
+
|
|
6259
|
+
|
|
6260
|
+
@property
|
|
6261
|
+
def isLatest(self) -> Union[None, bool]:
|
|
6262
|
+
"""Marks whether this version is currently the latest. Set by a side effect and should not be modified by API."""
|
|
6263
|
+
return self._inner_dict.get('isLatest') # type: ignore
|
|
6264
|
+
|
|
6265
|
+
@isLatest.setter
|
|
6266
|
+
def isLatest(self, value: Union[None, bool]) -> None:
|
|
6267
|
+
self._inner_dict['isLatest'] = value
|
|
6268
|
+
|
|
6269
|
+
|
|
6145
6270
|
class VersionTagClass(DictWrapper):
|
|
6146
6271
|
"""A resource-defined string representing the resource state for the purpose of concurrency control"""
|
|
6147
6272
|
|
|
6148
6273
|
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.common.VersionTag")
|
|
6149
6274
|
def __init__(self,
|
|
6150
6275
|
versionTag: Union[None, str]=None,
|
|
6276
|
+
metadataAttribution: Union[None, "MetadataAttributionClass"]=None,
|
|
6151
6277
|
):
|
|
6152
6278
|
super().__init__()
|
|
6153
6279
|
|
|
6154
6280
|
self.versionTag = versionTag
|
|
6281
|
+
self.metadataAttribution = metadataAttribution
|
|
6155
6282
|
|
|
6156
6283
|
def _restore_defaults(self) -> None:
|
|
6157
6284
|
self.versionTag = self.RECORD_SCHEMA.fields_dict["versionTag"].default
|
|
6285
|
+
self.metadataAttribution = self.RECORD_SCHEMA.fields_dict["metadataAttribution"].default
|
|
6158
6286
|
|
|
6159
6287
|
|
|
6160
6288
|
@property
|
|
@@ -6167,6 +6295,16 @@ class VersionTagClass(DictWrapper):
|
|
|
6167
6295
|
self._inner_dict['versionTag'] = value
|
|
6168
6296
|
|
|
6169
6297
|
|
|
6298
|
+
@property
|
|
6299
|
+
def metadataAttribution(self) -> Union[None, "MetadataAttributionClass"]:
|
|
6300
|
+
# No docs available.
|
|
6301
|
+
return self._inner_dict.get('metadataAttribution') # type: ignore
|
|
6302
|
+
|
|
6303
|
+
@metadataAttribution.setter
|
|
6304
|
+
def metadataAttribution(self, value: Union[None, "MetadataAttributionClass"]) -> None:
|
|
6305
|
+
self._inner_dict['metadataAttribution'] = value
|
|
6306
|
+
|
|
6307
|
+
|
|
6170
6308
|
class WindowDurationClass(object):
|
|
6171
6309
|
"""Enum to define the length of a bucket when doing aggregations"""
|
|
6172
6310
|
|
|
@@ -14876,7 +15014,7 @@ class DatasetKeyClass(_Aspect):
|
|
|
14876
15014
|
|
|
14877
15015
|
|
|
14878
15016
|
ASPECT_NAME = 'datasetKey'
|
|
14879
|
-
ASPECT_INFO = {'keyForEntity': 'dataset', 'entityCategory': 'core', 'entityAspects': ['viewProperties', 'subTypes', 'datasetProfile', 'datasetUsageStatistics', 'operation', 'domains', 'schemaMetadata', 'status', 'container', 'deprecation', 'testResults', 'siblings', 'embed', 'incidentsSummary', 'datasetProperties', 'editableDatasetProperties', 'datasetDeprecation', 'datasetUpstreamLineage', 'upstreamLineage', 'institutionalMemory', 'ownership', 'editableSchemaMetadata', 'globalTags', 'glossaryTerms', 'browsePaths', 'dataPlatformInstance', 'browsePathsV2', 'access', 'structuredProperties', 'forms', 'partitionsSummary'], 'entityDoc': 'Datasets represent logical or physical data assets stored or represented in various data platforms. Tables, Views, Streams are all instances of datasets.'}
|
|
15017
|
+
ASPECT_INFO = {'keyForEntity': 'dataset', 'entityCategory': 'core', 'entityAspects': ['viewProperties', 'subTypes', 'datasetProfile', 'datasetUsageStatistics', 'operation', 'domains', 'schemaMetadata', 'status', 'container', 'deprecation', 'testResults', 'siblings', 'embed', 'incidentsSummary', 'datasetProperties', 'editableDatasetProperties', 'datasetDeprecation', 'datasetUpstreamLineage', 'upstreamLineage', 'institutionalMemory', 'ownership', 'editableSchemaMetadata', 'globalTags', 'glossaryTerms', 'browsePaths', 'dataPlatformInstance', 'browsePathsV2', 'access', 'structuredProperties', 'forms', 'partitionsSummary', 'versionProperties'], 'entityDoc': 'Datasets represent logical or physical data assets stored or represented in various data platforms. Tables, Views, Streams are all instances of datasets.'}
|
|
14880
15018
|
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.DatasetKey")
|
|
14881
15019
|
|
|
14882
15020
|
def __init__(self,
|
|
@@ -15386,7 +15524,7 @@ class MLModelKeyClass(_Aspect):
|
|
|
15386
15524
|
|
|
15387
15525
|
|
|
15388
15526
|
ASPECT_NAME = 'mlModelKey'
|
|
15389
|
-
ASPECT_INFO = {'keyForEntity': 'mlModel', 'entityCategory': 'core', 'entityAspects': ['glossaryTerms', 'editableMlModelProperties', 'domains', 'ownership', 'mlModelProperties', 'intendedUse', 'mlModelFactorPrompts', 'mlModelMetrics', 'mlModelEvaluationData', 'mlModelTrainingData', 'mlModelQuantitativeAnalyses', 'mlModelEthicalConsiderations', 'mlModelCaveatsAndRecommendations', 'institutionalMemory', 'sourceCode', 'status', 'cost', 'deprecation', 'browsePaths', 'globalTags', 'dataPlatformInstance', 'browsePathsV2', 'structuredProperties', 'forms', 'testResults']}
|
|
15527
|
+
ASPECT_INFO = {'keyForEntity': 'mlModel', 'entityCategory': 'core', 'entityAspects': ['glossaryTerms', 'editableMlModelProperties', 'domains', 'ownership', 'mlModelProperties', 'intendedUse', 'mlModelFactorPrompts', 'mlModelMetrics', 'mlModelEvaluationData', 'mlModelTrainingData', 'mlModelQuantitativeAnalyses', 'mlModelEthicalConsiderations', 'mlModelCaveatsAndRecommendations', 'institutionalMemory', 'sourceCode', 'status', 'cost', 'deprecation', 'browsePaths', 'globalTags', 'dataPlatformInstance', 'browsePathsV2', 'structuredProperties', 'forms', 'testResults', 'versionProperties']}
|
|
15390
15528
|
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.MLModelKey")
|
|
15391
15529
|
|
|
15392
15530
|
def __init__(self,
|
|
@@ -15766,6 +15904,48 @@ class TestKeyClass(_Aspect):
|
|
|
15766
15904
|
self._inner_dict['id'] = value
|
|
15767
15905
|
|
|
15768
15906
|
|
|
15907
|
+
class VersionSetKeyClass(_Aspect):
|
|
15908
|
+
"""Key for a Version Set entity"""
|
|
15909
|
+
|
|
15910
|
+
|
|
15911
|
+
ASPECT_NAME = 'versionSetKey'
|
|
15912
|
+
ASPECT_INFO = {'keyForEntity': 'versionSet', 'entityCategory': 'core', 'entityAspects': ['versionSetProperties']}
|
|
15913
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.VersionSetKey")
|
|
15914
|
+
|
|
15915
|
+
def __init__(self,
|
|
15916
|
+
id: str,
|
|
15917
|
+
entityType: str,
|
|
15918
|
+
):
|
|
15919
|
+
super().__init__()
|
|
15920
|
+
|
|
15921
|
+
self.id = id
|
|
15922
|
+
self.entityType = entityType
|
|
15923
|
+
|
|
15924
|
+
def _restore_defaults(self) -> None:
|
|
15925
|
+
self.id = str()
|
|
15926
|
+
self.entityType = str()
|
|
15927
|
+
|
|
15928
|
+
|
|
15929
|
+
@property
|
|
15930
|
+
def id(self) -> str:
|
|
15931
|
+
"""ID of the Version Set, generated from platform + asset id / name"""
|
|
15932
|
+
return self._inner_dict.get('id') # type: ignore
|
|
15933
|
+
|
|
15934
|
+
@id.setter
|
|
15935
|
+
def id(self, value: str) -> None:
|
|
15936
|
+
self._inner_dict['id'] = value
|
|
15937
|
+
|
|
15938
|
+
|
|
15939
|
+
@property
|
|
15940
|
+
def entityType(self) -> str:
|
|
15941
|
+
"""Type of entities included in version set, limits to a single entity type between linked versioned entities"""
|
|
15942
|
+
return self._inner_dict.get('entityType') # type: ignore
|
|
15943
|
+
|
|
15944
|
+
@entityType.setter
|
|
15945
|
+
def entityType(self, value: str) -> None:
|
|
15946
|
+
self._inner_dict['entityType'] = value
|
|
15947
|
+
|
|
15948
|
+
|
|
15769
15949
|
class ConditionClass(object):
|
|
15770
15950
|
"""The matching condition in a filter criterion"""
|
|
15771
15951
|
|
|
@@ -17769,12 +17949,13 @@ class MLModelGroupPropertiesClass(_Aspect):
|
|
|
17769
17949
|
|
|
17770
17950
|
def __init__(self,
|
|
17771
17951
|
customProperties: Optional[Dict[str, str]]=None,
|
|
17952
|
+
trainingJobs: Union[None, List[str]]=None,
|
|
17953
|
+
downstreamJobs: Union[None, List[str]]=None,
|
|
17772
17954
|
name: Union[None, str]=None,
|
|
17773
17955
|
description: Union[None, str]=None,
|
|
17774
17956
|
createdAt: Union[None, int]=None,
|
|
17775
17957
|
created: Union[None, "TimeStampClass"]=None,
|
|
17776
17958
|
lastModified: Union[None, "TimeStampClass"]=None,
|
|
17777
|
-
trainingJobs: Union[None, List[str]]=None,
|
|
17778
17959
|
version: Union[None, "VersionTagClass"]=None,
|
|
17779
17960
|
):
|
|
17780
17961
|
super().__init__()
|
|
@@ -17784,22 +17965,24 @@ class MLModelGroupPropertiesClass(_Aspect):
|
|
|
17784
17965
|
self.customProperties = dict()
|
|
17785
17966
|
else:
|
|
17786
17967
|
self.customProperties = customProperties
|
|
17968
|
+
self.trainingJobs = trainingJobs
|
|
17969
|
+
self.downstreamJobs = downstreamJobs
|
|
17787
17970
|
self.name = name
|
|
17788
17971
|
self.description = description
|
|
17789
17972
|
self.createdAt = createdAt
|
|
17790
17973
|
self.created = created
|
|
17791
17974
|
self.lastModified = lastModified
|
|
17792
|
-
self.trainingJobs = trainingJobs
|
|
17793
17975
|
self.version = version
|
|
17794
17976
|
|
|
17795
17977
|
def _restore_defaults(self) -> None:
|
|
17796
17978
|
self.customProperties = dict()
|
|
17979
|
+
self.trainingJobs = self.RECORD_SCHEMA.fields_dict["trainingJobs"].default
|
|
17980
|
+
self.downstreamJobs = self.RECORD_SCHEMA.fields_dict["downstreamJobs"].default
|
|
17797
17981
|
self.name = self.RECORD_SCHEMA.fields_dict["name"].default
|
|
17798
17982
|
self.description = self.RECORD_SCHEMA.fields_dict["description"].default
|
|
17799
17983
|
self.createdAt = self.RECORD_SCHEMA.fields_dict["createdAt"].default
|
|
17800
17984
|
self.created = self.RECORD_SCHEMA.fields_dict["created"].default
|
|
17801
17985
|
self.lastModified = self.RECORD_SCHEMA.fields_dict["lastModified"].default
|
|
17802
|
-
self.trainingJobs = self.RECORD_SCHEMA.fields_dict["trainingJobs"].default
|
|
17803
17986
|
self.version = self.RECORD_SCHEMA.fields_dict["version"].default
|
|
17804
17987
|
|
|
17805
17988
|
|
|
@@ -17813,6 +17996,26 @@ class MLModelGroupPropertiesClass(_Aspect):
|
|
|
17813
17996
|
self._inner_dict['customProperties'] = value
|
|
17814
17997
|
|
|
17815
17998
|
|
|
17999
|
+
@property
|
|
18000
|
+
def trainingJobs(self) -> Union[None, List[str]]:
|
|
18001
|
+
"""List of jobs or process instances (if any) used to train the model or group. Visible in Lineage. Note that ML Models can also be specified as the output of a specific Data Process Instances (runs) via the DataProcessInstanceOutputs aspect."""
|
|
18002
|
+
return self._inner_dict.get('trainingJobs') # type: ignore
|
|
18003
|
+
|
|
18004
|
+
@trainingJobs.setter
|
|
18005
|
+
def trainingJobs(self, value: Union[None, List[str]]) -> None:
|
|
18006
|
+
self._inner_dict['trainingJobs'] = value
|
|
18007
|
+
|
|
18008
|
+
|
|
18009
|
+
@property
|
|
18010
|
+
def downstreamJobs(self) -> Union[None, List[str]]:
|
|
18011
|
+
"""List of jobs or process instances (if any) that use the model or group."""
|
|
18012
|
+
return self._inner_dict.get('downstreamJobs') # type: ignore
|
|
18013
|
+
|
|
18014
|
+
@downstreamJobs.setter
|
|
18015
|
+
def downstreamJobs(self, value: Union[None, List[str]]) -> None:
|
|
18016
|
+
self._inner_dict['downstreamJobs'] = value
|
|
18017
|
+
|
|
18018
|
+
|
|
17816
18019
|
@property
|
|
17817
18020
|
def name(self) -> Union[None, str]:
|
|
17818
18021
|
"""Display name of the MLModelGroup"""
|
|
@@ -17863,16 +18066,6 @@ class MLModelGroupPropertiesClass(_Aspect):
|
|
|
17863
18066
|
self._inner_dict['lastModified'] = value
|
|
17864
18067
|
|
|
17865
18068
|
|
|
17866
|
-
@property
|
|
17867
|
-
def trainingJobs(self) -> Union[None, List[str]]:
|
|
17868
|
-
"""List of jobs (if any) used to train the model group. Visible in Lineage."""
|
|
17869
|
-
return self._inner_dict.get('trainingJobs') # type: ignore
|
|
17870
|
-
|
|
17871
|
-
@trainingJobs.setter
|
|
17872
|
-
def trainingJobs(self, value: Union[None, List[str]]) -> None:
|
|
17873
|
-
self._inner_dict['trainingJobs'] = value
|
|
17874
|
-
|
|
17875
|
-
|
|
17876
18069
|
@property
|
|
17877
18070
|
def version(self) -> Union[None, "VersionTagClass"]:
|
|
17878
18071
|
"""Version of the MLModelGroup"""
|
|
@@ -17894,6 +18087,8 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17894
18087
|
def __init__(self,
|
|
17895
18088
|
customProperties: Optional[Dict[str, str]]=None,
|
|
17896
18089
|
externalUrl: Union[None, str]=None,
|
|
18090
|
+
trainingJobs: Union[None, List[str]]=None,
|
|
18091
|
+
downstreamJobs: Union[None, List[str]]=None,
|
|
17897
18092
|
name: Union[None, str]=None,
|
|
17898
18093
|
description: Union[None, str]=None,
|
|
17899
18094
|
date: Union[None, int]=None,
|
|
@@ -17908,8 +18103,6 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17908
18103
|
mlFeatures: Union[None, List[str]]=None,
|
|
17909
18104
|
tags: Optional[List[str]]=None,
|
|
17910
18105
|
deployments: Union[None, List[str]]=None,
|
|
17911
|
-
trainingJobs: Union[None, List[str]]=None,
|
|
17912
|
-
downstreamJobs: Union[None, List[str]]=None,
|
|
17913
18106
|
groups: Union[None, List[str]]=None,
|
|
17914
18107
|
):
|
|
17915
18108
|
super().__init__()
|
|
@@ -17920,6 +18113,8 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17920
18113
|
else:
|
|
17921
18114
|
self.customProperties = customProperties
|
|
17922
18115
|
self.externalUrl = externalUrl
|
|
18116
|
+
self.trainingJobs = trainingJobs
|
|
18117
|
+
self.downstreamJobs = downstreamJobs
|
|
17923
18118
|
self.name = name
|
|
17924
18119
|
self.description = description
|
|
17925
18120
|
self.date = date
|
|
@@ -17938,13 +18133,13 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17938
18133
|
else:
|
|
17939
18134
|
self.tags = tags
|
|
17940
18135
|
self.deployments = deployments
|
|
17941
|
-
self.trainingJobs = trainingJobs
|
|
17942
|
-
self.downstreamJobs = downstreamJobs
|
|
17943
18136
|
self.groups = groups
|
|
17944
18137
|
|
|
17945
18138
|
def _restore_defaults(self) -> None:
|
|
17946
18139
|
self.customProperties = dict()
|
|
17947
18140
|
self.externalUrl = self.RECORD_SCHEMA.fields_dict["externalUrl"].default
|
|
18141
|
+
self.trainingJobs = self.RECORD_SCHEMA.fields_dict["trainingJobs"].default
|
|
18142
|
+
self.downstreamJobs = self.RECORD_SCHEMA.fields_dict["downstreamJobs"].default
|
|
17948
18143
|
self.name = self.RECORD_SCHEMA.fields_dict["name"].default
|
|
17949
18144
|
self.description = self.RECORD_SCHEMA.fields_dict["description"].default
|
|
17950
18145
|
self.date = self.RECORD_SCHEMA.fields_dict["date"].default
|
|
@@ -17959,8 +18154,6 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17959
18154
|
self.mlFeatures = self.RECORD_SCHEMA.fields_dict["mlFeatures"].default
|
|
17960
18155
|
self.tags = list()
|
|
17961
18156
|
self.deployments = self.RECORD_SCHEMA.fields_dict["deployments"].default
|
|
17962
|
-
self.trainingJobs = self.RECORD_SCHEMA.fields_dict["trainingJobs"].default
|
|
17963
|
-
self.downstreamJobs = self.RECORD_SCHEMA.fields_dict["downstreamJobs"].default
|
|
17964
18157
|
self.groups = self.RECORD_SCHEMA.fields_dict["groups"].default
|
|
17965
18158
|
|
|
17966
18159
|
|
|
@@ -17984,6 +18177,26 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
17984
18177
|
self._inner_dict['externalUrl'] = value
|
|
17985
18178
|
|
|
17986
18179
|
|
|
18180
|
+
@property
|
|
18181
|
+
def trainingJobs(self) -> Union[None, List[str]]:
|
|
18182
|
+
"""List of jobs or process instances (if any) used to train the model or group. Visible in Lineage. Note that ML Models can also be specified as the output of a specific Data Process Instances (runs) via the DataProcessInstanceOutputs aspect."""
|
|
18183
|
+
return self._inner_dict.get('trainingJobs') # type: ignore
|
|
18184
|
+
|
|
18185
|
+
@trainingJobs.setter
|
|
18186
|
+
def trainingJobs(self, value: Union[None, List[str]]) -> None:
|
|
18187
|
+
self._inner_dict['trainingJobs'] = value
|
|
18188
|
+
|
|
18189
|
+
|
|
18190
|
+
@property
|
|
18191
|
+
def downstreamJobs(self) -> Union[None, List[str]]:
|
|
18192
|
+
"""List of jobs or process instances (if any) that use the model or group."""
|
|
18193
|
+
return self._inner_dict.get('downstreamJobs') # type: ignore
|
|
18194
|
+
|
|
18195
|
+
@downstreamJobs.setter
|
|
18196
|
+
def downstreamJobs(self, value: Union[None, List[str]]) -> None:
|
|
18197
|
+
self._inner_dict['downstreamJobs'] = value
|
|
18198
|
+
|
|
18199
|
+
|
|
17987
18200
|
@property
|
|
17988
18201
|
def name(self) -> Union[None, str]:
|
|
17989
18202
|
"""Display name of the MLModel"""
|
|
@@ -18126,26 +18339,6 @@ class MLModelPropertiesClass(_Aspect):
|
|
|
18126
18339
|
self._inner_dict['deployments'] = value
|
|
18127
18340
|
|
|
18128
18341
|
|
|
18129
|
-
@property
|
|
18130
|
-
def trainingJobs(self) -> Union[None, List[str]]:
|
|
18131
|
-
"""List of jobs (if any) used to train the model. Visible in Lineage. Note that ML Models can also be specified as the output of a specific Data Process Instances (runs) via the DataProcessInstanceOutputs aspect."""
|
|
18132
|
-
return self._inner_dict.get('trainingJobs') # type: ignore
|
|
18133
|
-
|
|
18134
|
-
@trainingJobs.setter
|
|
18135
|
-
def trainingJobs(self, value: Union[None, List[str]]) -> None:
|
|
18136
|
-
self._inner_dict['trainingJobs'] = value
|
|
18137
|
-
|
|
18138
|
-
|
|
18139
|
-
@property
|
|
18140
|
-
def downstreamJobs(self) -> Union[None, List[str]]:
|
|
18141
|
-
"""List of jobs (if any) that use the model"""
|
|
18142
|
-
return self._inner_dict.get('downstreamJobs') # type: ignore
|
|
18143
|
-
|
|
18144
|
-
@downstreamJobs.setter
|
|
18145
|
-
def downstreamJobs(self, value: Union[None, List[str]]) -> None:
|
|
18146
|
-
self._inner_dict['downstreamJobs'] = value
|
|
18147
|
-
|
|
18148
|
-
|
|
18149
18342
|
@property
|
|
18150
18343
|
def groups(self) -> Union[None, List[str]]:
|
|
18151
18344
|
"""Groups the model belongs to"""
|
|
@@ -24549,6 +24742,71 @@ class UserUsageCountsClass(DictWrapper):
|
|
|
24549
24742
|
self._inner_dict['userEmail'] = value
|
|
24550
24743
|
|
|
24551
24744
|
|
|
24745
|
+
class VersionSetPropertiesClass(_Aspect):
|
|
24746
|
+
# No docs available.
|
|
24747
|
+
|
|
24748
|
+
|
|
24749
|
+
ASPECT_NAME = 'versionSetProperties'
|
|
24750
|
+
ASPECT_INFO = {}
|
|
24751
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.versionset.VersionSetProperties")
|
|
24752
|
+
|
|
24753
|
+
def __init__(self,
|
|
24754
|
+
latest: str,
|
|
24755
|
+
versioningScheme: Union[str, "VersioningSchemeClass"],
|
|
24756
|
+
customProperties: Optional[Dict[str, str]]=None,
|
|
24757
|
+
):
|
|
24758
|
+
super().__init__()
|
|
24759
|
+
|
|
24760
|
+
if customProperties is None:
|
|
24761
|
+
# default: {}
|
|
24762
|
+
self.customProperties = dict()
|
|
24763
|
+
else:
|
|
24764
|
+
self.customProperties = customProperties
|
|
24765
|
+
self.latest = latest
|
|
24766
|
+
self.versioningScheme = versioningScheme
|
|
24767
|
+
|
|
24768
|
+
def _restore_defaults(self) -> None:
|
|
24769
|
+
self.customProperties = dict()
|
|
24770
|
+
self.latest = str()
|
|
24771
|
+
self.versioningScheme = VersioningSchemeClass.ALPHANUMERIC_GENERATED_BY_DATAHUB
|
|
24772
|
+
|
|
24773
|
+
|
|
24774
|
+
@property
|
|
24775
|
+
def customProperties(self) -> Dict[str, str]:
|
|
24776
|
+
"""Custom property bag."""
|
|
24777
|
+
return self._inner_dict.get('customProperties') # type: ignore
|
|
24778
|
+
|
|
24779
|
+
@customProperties.setter
|
|
24780
|
+
def customProperties(self, value: Dict[str, str]) -> None:
|
|
24781
|
+
self._inner_dict['customProperties'] = value
|
|
24782
|
+
|
|
24783
|
+
|
|
24784
|
+
@property
|
|
24785
|
+
def latest(self) -> str:
|
|
24786
|
+
"""The latest versioned entity linked to in this version set"""
|
|
24787
|
+
return self._inner_dict.get('latest') # type: ignore
|
|
24788
|
+
|
|
24789
|
+
@latest.setter
|
|
24790
|
+
def latest(self, value: str) -> None:
|
|
24791
|
+
self._inner_dict['latest'] = value
|
|
24792
|
+
|
|
24793
|
+
|
|
24794
|
+
@property
|
|
24795
|
+
def versioningScheme(self) -> Union[str, "VersioningSchemeClass"]:
|
|
24796
|
+
"""What versioning scheme is being utilized for the versioned entities sort criterion. Static once set"""
|
|
24797
|
+
return self._inner_dict.get('versioningScheme') # type: ignore
|
|
24798
|
+
|
|
24799
|
+
@versioningScheme.setter
|
|
24800
|
+
def versioningScheme(self, value: Union[str, "VersioningSchemeClass"]) -> None:
|
|
24801
|
+
self._inner_dict['versioningScheme'] = value
|
|
24802
|
+
|
|
24803
|
+
|
|
24804
|
+
class VersioningSchemeClass(object):
|
|
24805
|
+
# No docs available.
|
|
24806
|
+
|
|
24807
|
+
ALPHANUMERIC_GENERATED_BY_DATAHUB = "ALPHANUMERIC_GENERATED_BY_DATAHUB"
|
|
24808
|
+
|
|
24809
|
+
|
|
24552
24810
|
class DataHubViewDefinitionClass(DictWrapper):
|
|
24553
24811
|
"""A View definition."""
|
|
24554
24812
|
|
|
@@ -24815,6 +25073,7 @@ __SCHEMA_TYPES = {
|
|
|
24815
25073
|
'com.linkedin.pegasus2avro.common.SubTypes': SubTypesClass,
|
|
24816
25074
|
'com.linkedin.pegasus2avro.common.TagAssociation': TagAssociationClass,
|
|
24817
25075
|
'com.linkedin.pegasus2avro.common.TimeStamp': TimeStampClass,
|
|
25076
|
+
'com.linkedin.pegasus2avro.common.VersionProperties': VersionPropertiesClass,
|
|
24818
25077
|
'com.linkedin.pegasus2avro.common.VersionTag': VersionTagClass,
|
|
24819
25078
|
'com.linkedin.pegasus2avro.common.WindowDuration': WindowDurationClass,
|
|
24820
25079
|
'com.linkedin.pegasus2avro.common.fieldtransformer.TransformationType': TransformationTypeClass,
|
|
@@ -24988,6 +25247,7 @@ __SCHEMA_TYPES = {
|
|
|
24988
25247
|
'com.linkedin.pegasus2avro.metadata.key.TagKey': TagKeyClass,
|
|
24989
25248
|
'com.linkedin.pegasus2avro.metadata.key.TelemetryKey': TelemetryKeyClass,
|
|
24990
25249
|
'com.linkedin.pegasus2avro.metadata.key.TestKey': TestKeyClass,
|
|
25250
|
+
'com.linkedin.pegasus2avro.metadata.key.VersionSetKey': VersionSetKeyClass,
|
|
24991
25251
|
'com.linkedin.pegasus2avro.metadata.query.filter.Condition': ConditionClass,
|
|
24992
25252
|
'com.linkedin.pegasus2avro.metadata.query.filter.ConjunctiveCriterion': ConjunctiveCriterionClass,
|
|
24993
25253
|
'com.linkedin.pegasus2avro.metadata.query.filter.Criterion': CriterionClass,
|
|
@@ -25159,6 +25419,8 @@ __SCHEMA_TYPES = {
|
|
|
25159
25419
|
'com.linkedin.pegasus2avro.usage.UsageAggregation': UsageAggregationClass,
|
|
25160
25420
|
'com.linkedin.pegasus2avro.usage.UsageAggregationMetrics': UsageAggregationMetricsClass,
|
|
25161
25421
|
'com.linkedin.pegasus2avro.usage.UserUsageCounts': UserUsageCountsClass,
|
|
25422
|
+
'com.linkedin.pegasus2avro.versionset.VersionSetProperties': VersionSetPropertiesClass,
|
|
25423
|
+
'com.linkedin.pegasus2avro.versionset.VersioningScheme': VersioningSchemeClass,
|
|
25162
25424
|
'com.linkedin.pegasus2avro.view.DataHubViewDefinition': DataHubViewDefinitionClass,
|
|
25163
25425
|
'com.linkedin.pegasus2avro.view.DataHubViewInfo': DataHubViewInfoClass,
|
|
25164
25426
|
'com.linkedin.pegasus2avro.view.DataHubViewType': DataHubViewTypeClass,
|
|
@@ -25284,6 +25546,7 @@ __SCHEMA_TYPES = {
|
|
|
25284
25546
|
'SubTypes': SubTypesClass,
|
|
25285
25547
|
'TagAssociation': TagAssociationClass,
|
|
25286
25548
|
'TimeStamp': TimeStampClass,
|
|
25549
|
+
'VersionProperties': VersionPropertiesClass,
|
|
25287
25550
|
'VersionTag': VersionTagClass,
|
|
25288
25551
|
'WindowDuration': WindowDurationClass,
|
|
25289
25552
|
'TransformationType': TransformationTypeClass,
|
|
@@ -25457,6 +25720,7 @@ __SCHEMA_TYPES = {
|
|
|
25457
25720
|
'TagKey': TagKeyClass,
|
|
25458
25721
|
'TelemetryKey': TelemetryKeyClass,
|
|
25459
25722
|
'TestKey': TestKeyClass,
|
|
25723
|
+
'VersionSetKey': VersionSetKeyClass,
|
|
25460
25724
|
'Condition': ConditionClass,
|
|
25461
25725
|
'ConjunctiveCriterion': ConjunctiveCriterionClass,
|
|
25462
25726
|
'Criterion': CriterionClass,
|
|
@@ -25628,6 +25892,8 @@ __SCHEMA_TYPES = {
|
|
|
25628
25892
|
'UsageAggregation': UsageAggregationClass,
|
|
25629
25893
|
'UsageAggregationMetrics': UsageAggregationMetricsClass,
|
|
25630
25894
|
'UserUsageCounts': UserUsageCountsClass,
|
|
25895
|
+
'VersionSetProperties': VersionSetPropertiesClass,
|
|
25896
|
+
'VersioningScheme': VersioningSchemeClass,
|
|
25631
25897
|
'DataHubViewDefinition': DataHubViewDefinitionClass,
|
|
25632
25898
|
'DataHubViewInfo': DataHubViewInfoClass,
|
|
25633
25899
|
'DataHubViewType': DataHubViewTypeClass,
|
|
@@ -25659,6 +25925,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
25659
25925
|
InputFieldsClass,
|
|
25660
25926
|
OwnershipClass,
|
|
25661
25927
|
DocumentationClass,
|
|
25928
|
+
VersionPropertiesClass,
|
|
25662
25929
|
BrowsePathsV2Class,
|
|
25663
25930
|
OriginClass,
|
|
25664
25931
|
AccessClass,
|
|
@@ -25744,6 +26011,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
25744
26011
|
AssertionInfoClass,
|
|
25745
26012
|
AssertionActionsClass,
|
|
25746
26013
|
TelemetryClientIdClass,
|
|
26014
|
+
VersionSetPropertiesClass,
|
|
25747
26015
|
DataHubSecretValueClass,
|
|
25748
26016
|
DataHubUpgradeRequestClass,
|
|
25749
26017
|
DataHubUpgradeResultClass,
|
|
@@ -25788,6 +26056,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
25788
26056
|
DataHubPersonaKeyClass,
|
|
25789
26057
|
DataHubSecretKeyClass,
|
|
25790
26058
|
DataHubIngestionSourceKeyClass,
|
|
26059
|
+
VersionSetKeyClass,
|
|
25791
26060
|
DataHubRetentionKeyClass,
|
|
25792
26061
|
TestKeyClass,
|
|
25793
26062
|
ChartKeyClass,
|
|
@@ -25874,6 +26143,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
25874
26143
|
inputFields: InputFieldsClass
|
|
25875
26144
|
ownership: OwnershipClass
|
|
25876
26145
|
documentation: DocumentationClass
|
|
26146
|
+
versionProperties: VersionPropertiesClass
|
|
25877
26147
|
browsePathsV2: BrowsePathsV2Class
|
|
25878
26148
|
origin: OriginClass
|
|
25879
26149
|
access: AccessClass
|
|
@@ -25959,6 +26229,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
25959
26229
|
assertionInfo: AssertionInfoClass
|
|
25960
26230
|
assertionActions: AssertionActionsClass
|
|
25961
26231
|
telemetryClientId: TelemetryClientIdClass
|
|
26232
|
+
versionSetProperties: VersionSetPropertiesClass
|
|
25962
26233
|
dataHubSecretValue: DataHubSecretValueClass
|
|
25963
26234
|
dataHubUpgradeRequest: DataHubUpgradeRequestClass
|
|
25964
26235
|
dataHubUpgradeResult: DataHubUpgradeResultClass
|
|
@@ -26003,6 +26274,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
26003
26274
|
dataHubPersonaKey: DataHubPersonaKeyClass
|
|
26004
26275
|
dataHubSecretKey: DataHubSecretKeyClass
|
|
26005
26276
|
dataHubIngestionSourceKey: DataHubIngestionSourceKeyClass
|
|
26277
|
+
versionSetKey: VersionSetKeyClass
|
|
26006
26278
|
dataHubRetentionKey: DataHubRetentionKeyClass
|
|
26007
26279
|
testKey: TestKeyClass
|
|
26008
26280
|
chartKey: ChartKeyClass
|
|
@@ -26106,6 +26378,7 @@ KEY_ASPECTS: Dict[str, Type[_Aspect]] = {
|
|
|
26106
26378
|
'dataHubPersona': DataHubPersonaKeyClass,
|
|
26107
26379
|
'dataHubSecret': DataHubSecretKeyClass,
|
|
26108
26380
|
'dataHubIngestionSource': DataHubIngestionSourceKeyClass,
|
|
26381
|
+
'versionSet': VersionSetKeyClass,
|
|
26109
26382
|
'dataHubRetention': DataHubRetentionKeyClass,
|
|
26110
26383
|
'test': TestKeyClass,
|
|
26111
26384
|
'chart': ChartKeyClass,
|
|
@@ -2225,6 +2225,60 @@ class DataHubIngestionSourceUrn(_SpecificUrn):
|
|
|
2225
2225
|
def id(self) -> str:
|
|
2226
2226
|
return self.entity_ids[0]
|
|
2227
2227
|
|
|
2228
|
+
if TYPE_CHECKING:
|
|
2229
|
+
from datahub.metadata.schema_classes import VersionSetKeyClass
|
|
2230
|
+
|
|
2231
|
+
class VersionSetUrn(_SpecificUrn):
|
|
2232
|
+
ENTITY_TYPE: ClassVar[str] = "versionSet"
|
|
2233
|
+
_URN_PARTS: ClassVar[int] = 2
|
|
2234
|
+
|
|
2235
|
+
def __init__(self, id: str, entity_type: str, *, _allow_coercion: bool = True) -> None:
|
|
2236
|
+
if _allow_coercion:
|
|
2237
|
+
# Field coercion logic (if any is required).
|
|
2238
|
+
id = UrnEncoder.encode_string(id)
|
|
2239
|
+
entity_type = UrnEncoder.encode_string(entity_type)
|
|
2240
|
+
|
|
2241
|
+
# Validation logic.
|
|
2242
|
+
if not id:
|
|
2243
|
+
raise InvalidUrnError("VersionSetUrn id cannot be empty")
|
|
2244
|
+
if UrnEncoder.contains_reserved_char(id):
|
|
2245
|
+
raise InvalidUrnError(f'VersionSetUrn id contains reserved characters')
|
|
2246
|
+
if not entity_type:
|
|
2247
|
+
raise InvalidUrnError("VersionSetUrn entity_type cannot be empty")
|
|
2248
|
+
if UrnEncoder.contains_reserved_char(entity_type):
|
|
2249
|
+
raise InvalidUrnError(f'VersionSetUrn entity_type contains reserved characters')
|
|
2250
|
+
|
|
2251
|
+
super().__init__(self.ENTITY_TYPE, [id, entity_type])
|
|
2252
|
+
|
|
2253
|
+
@classmethod
|
|
2254
|
+
def _parse_ids(cls, entity_ids: List[str]) -> "VersionSetUrn":
|
|
2255
|
+
if len(entity_ids) != cls._URN_PARTS:
|
|
2256
|
+
raise InvalidUrnError(f"VersionSetUrn should have {cls._URN_PARTS} parts, got {len(entity_ids)}: {entity_ids}")
|
|
2257
|
+
return cls(id=entity_ids[0], entity_type=entity_ids[1], _allow_coercion=False)
|
|
2258
|
+
|
|
2259
|
+
@classmethod
|
|
2260
|
+
def underlying_key_aspect_type(cls) -> Type["VersionSetKeyClass"]:
|
|
2261
|
+
from datahub.metadata.schema_classes import VersionSetKeyClass
|
|
2262
|
+
|
|
2263
|
+
return VersionSetKeyClass
|
|
2264
|
+
|
|
2265
|
+
def to_key_aspect(self) -> "VersionSetKeyClass":
|
|
2266
|
+
from datahub.metadata.schema_classes import VersionSetKeyClass
|
|
2267
|
+
|
|
2268
|
+
return VersionSetKeyClass(id=self.id, entityType=self.entity_type)
|
|
2269
|
+
|
|
2270
|
+
@classmethod
|
|
2271
|
+
def from_key_aspect(cls, key_aspect: "VersionSetKeyClass") -> "VersionSetUrn":
|
|
2272
|
+
return cls(id=key_aspect.id, entity_type=key_aspect.entityType)
|
|
2273
|
+
|
|
2274
|
+
@property
|
|
2275
|
+
def id(self) -> str:
|
|
2276
|
+
return self.entity_ids[0]
|
|
2277
|
+
|
|
2278
|
+
@property
|
|
2279
|
+
def entity_type(self) -> str:
|
|
2280
|
+
return self.entity_ids[1]
|
|
2281
|
+
|
|
2228
2282
|
if TYPE_CHECKING:
|
|
2229
2283
|
from datahub.metadata.schema_classes import DataHubRetentionKeyClass
|
|
2230
2284
|
|
|
@@ -65,6 +65,7 @@ from .....schema_classes import StatusClass
|
|
|
65
65
|
from .....schema_classes import SubTypesClass
|
|
66
66
|
from .....schema_classes import TagAssociationClass
|
|
67
67
|
from .....schema_classes import TimeStampClass
|
|
68
|
+
from .....schema_classes import VersionPropertiesClass
|
|
68
69
|
from .....schema_classes import VersionTagClass
|
|
69
70
|
from .....schema_classes import WindowDurationClass
|
|
70
71
|
|
|
@@ -127,6 +128,7 @@ Status = StatusClass
|
|
|
127
128
|
SubTypes = SubTypesClass
|
|
128
129
|
TagAssociation = TagAssociationClass
|
|
129
130
|
TimeStamp = TimeStampClass
|
|
131
|
+
VersionProperties = VersionPropertiesClass
|
|
130
132
|
VersionTag = VersionTagClass
|
|
131
133
|
WindowDuration = WindowDurationClass
|
|
132
134
|
|