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.

AssetConfig(*args: Any, **kwargs: Any)
119    def __init__(__dataclass_self__: PydanticDataclass, *args: Any, **kwargs: Any) -> None:
120        __tracebackhide__ = True
121        s = __dataclass_self__
122        s.__pydantic_validator__.validate_python(ArgsKwargs(args, kwargs), self_instance=s)
asset_id: str
name: str
organization_id: str
created_date: datetime.datetime
created_by_user_id: str
modified_date: datetime.datetime
modified_by_user_id: str
tags: Union[List[str], NoneType] = None
metadata: Union[Dict[str, Union[str, float, bool]], NoneType] = None
@classmethod
def from_asset( cls, asset: sift.assets.v1.assets_pb2.Asset) -> AssetConfig:
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.