Source code for tamr_unify_client.attribute.subattribute

from copy import deepcopy
from dataclasses import dataclass, field
from typing import Any, Dict, Optional

from tamr_unify_client.attribute.type import AttributeType

SubAttributeJson = Dict[str, Any]


[docs]@dataclass(frozen=True) class SubAttribute: """An attribute which is itself a property of another attribute. See https://docs.tamr.com/reference#attribute-types Args: name: Name of sub-attribute description: Description of sub-attribute type: See https://docs.tamr.com/reference#attribute-types is_nullable: If this sub-attribute can be null """ name: str type: AttributeType is_nullable: bool _json: SubAttributeJson = field(repr=False) description: Optional[str] = None
[docs] @staticmethod def from_json(data: SubAttributeJson) -> "SubAttribute": """Create a SubAttribute from JSON data. Args: data: JSON data received from Tamr server. """ _json = deepcopy(data) dc = deepcopy(data) dc["is_nullable"] = dc.pop("isNullable") type_json = dc.pop("type") # TODO implement AttributeType.from_json and use that instead type = AttributeType(type_json) return SubAttribute(**dc, type=type, _json=_json)