sift_py.asset.config
1from __future__ import annotations 2 3from datetime import datetime, timezone 4from typing import Dict, List, Optional, Union 5 6from pydantic.dataclasses import dataclass 7from sift.assets.v1.assets_pb2 import Asset 8 9from sift_py._internal.metadata import metadata_dict_to_pb, metadata_pb_to_dict 10from sift_py._internal.time import to_timestamp_pb 11 12 13@dataclass 14class AssetConfig: 15 """ 16 Thin wrapper class for an Asset that can be created from an Asset protobuf object. 17 This provides a more Python-friendly interface than the generated protobuf object. 18 """ 19 20 asset_id: str 21 name: str 22 organization_id: str 23 created_date: datetime 24 created_by_user_id: str 25 modified_date: datetime 26 modified_by_user_id: str 27 tags: Optional[List[str]] = None 28 metadata: Optional[Dict[str, Union[str, float, bool]]] = None 29 30 @classmethod 31 def from_asset(cls, asset: Asset) -> AssetConfig: 32 """ 33 Creates an AssetConfig from an Asset protobuf object. 34 35 Args: 36 asset: The Asset protobuf object to convert. 37 38 Returns: 39 An AssetConfig instance with the data from the Asset. 40 """ 41 return cls( 42 asset_id=asset.asset_id, 43 name=asset.name, 44 organization_id=asset.organization_id, 45 created_date=datetime.fromtimestamp( 46 asset.created_date.ToMicroseconds() / 1000000, tz=timezone.utc 47 ), 48 created_by_user_id=asset.created_by_user_id, 49 modified_date=datetime.fromtimestamp( 50 asset.modified_date.ToMicroseconds() / 1000000, tz=timezone.utc 51 ), 52 modified_by_user_id=asset.modified_by_user_id, 53 tags=list(asset.tags), 54 metadata=metadata_pb_to_dict(list(asset.metadata)), 55 ) 56 57 def to_asset(self) -> Asset: 58 """ 59 Converts this AssetConfig to an Asset protobuf object. 60 61 Returns: 62 An Asset protobuf object with the data from this config. 63 """ 64 return Asset( 65 asset_id=self.asset_id, 66 name=self.name, 67 organization_id=self.organization_id, 68 created_date=to_timestamp_pb(self.created_date), 69 created_by_user_id=self.created_by_user_id, 70 modified_date=to_timestamp_pb(self.modified_date), 71 modified_by_user_id=self.modified_by_user_id, 72 tags=self.tags if self.tags else [], 73 metadata=metadata_dict_to_pb(self.metadata) if self.metadata else [], 74 )
class
AssetConfig:
15class AssetConfig: 16 """ 17 Thin wrapper class for an Asset that can be created from an Asset protobuf object. 18 This provides a more Python-friendly interface than the generated protobuf object. 19 """ 20 21 asset_id: str 22 name: str 23 organization_id: str 24 created_date: datetime 25 created_by_user_id: str 26 modified_date: datetime 27 modified_by_user_id: str 28 tags: Optional[List[str]] = None 29 metadata: Optional[Dict[str, Union[str, float, bool]]] = None 30 31 @classmethod 32 def from_asset(cls, asset: Asset) -> AssetConfig: 33 """ 34 Creates an AssetConfig from an Asset protobuf object. 35 36 Args: 37 asset: The Asset protobuf object to convert. 38 39 Returns: 40 An AssetConfig instance with the data from the Asset. 41 """ 42 return cls( 43 asset_id=asset.asset_id, 44 name=asset.name, 45 organization_id=asset.organization_id, 46 created_date=datetime.fromtimestamp( 47 asset.created_date.ToMicroseconds() / 1000000, tz=timezone.utc 48 ), 49 created_by_user_id=asset.created_by_user_id, 50 modified_date=datetime.fromtimestamp( 51 asset.modified_date.ToMicroseconds() / 1000000, tz=timezone.utc 52 ), 53 modified_by_user_id=asset.modified_by_user_id, 54 tags=list(asset.tags), 55 metadata=metadata_pb_to_dict(list(asset.metadata)), 56 ) 57 58 def to_asset(self) -> Asset: 59 """ 60 Converts this AssetConfig to an Asset protobuf object. 61 62 Returns: 63 An Asset protobuf object with the data from this config. 64 """ 65 return Asset( 66 asset_id=self.asset_id, 67 name=self.name, 68 organization_id=self.organization_id, 69 created_date=to_timestamp_pb(self.created_date), 70 created_by_user_id=self.created_by_user_id, 71 modified_date=to_timestamp_pb(self.modified_date), 72 modified_by_user_id=self.modified_by_user_id, 73 tags=self.tags if self.tags else [], 74 metadata=metadata_dict_to_pb(self.metadata) if self.metadata else [], 75 )
Thin wrapper class for an Asset that can be created from an Asset protobuf object. This provides a more Python-friendly interface than the generated protobuf object.
31 @classmethod 32 def from_asset(cls, asset: Asset) -> AssetConfig: 33 """ 34 Creates an AssetConfig from an Asset protobuf object. 35 36 Args: 37 asset: The Asset protobuf object to convert. 38 39 Returns: 40 An AssetConfig instance with the data from the Asset. 41 """ 42 return cls( 43 asset_id=asset.asset_id, 44 name=asset.name, 45 organization_id=asset.organization_id, 46 created_date=datetime.fromtimestamp( 47 asset.created_date.ToMicroseconds() / 1000000, tz=timezone.utc 48 ), 49 created_by_user_id=asset.created_by_user_id, 50 modified_date=datetime.fromtimestamp( 51 asset.modified_date.ToMicroseconds() / 1000000, tz=timezone.utc 52 ), 53 modified_by_user_id=asset.modified_by_user_id, 54 tags=list(asset.tags), 55 metadata=metadata_pb_to_dict(list(asset.metadata)), 56 )
Creates an AssetConfig from an Asset protobuf object.
Args: asset: The Asset protobuf object to convert.
Returns: An AssetConfig instance with the data from the Asset.
def
to_asset(self) -> sift.assets.v1.assets_pb2.Asset:
58 def to_asset(self) -> Asset: 59 """ 60 Converts this AssetConfig to an Asset protobuf object. 61 62 Returns: 63 An Asset protobuf object with the data from this config. 64 """ 65 return Asset( 66 asset_id=self.asset_id, 67 name=self.name, 68 organization_id=self.organization_id, 69 created_date=to_timestamp_pb(self.created_date), 70 created_by_user_id=self.created_by_user_id, 71 modified_date=to_timestamp_pb(self.modified_date), 72 modified_by_user_id=self.modified_by_user_id, 73 tags=self.tags if self.tags else [], 74 metadata=metadata_dict_to_pb(self.metadata) if self.metadata else [], 75 )
Converts this AssetConfig to an Asset protobuf object.
Returns: An Asset protobuf object with the data from this config.