Source code for pydelfini.delfini_core.models.item_column
from typing import Any
from typing import cast
from typing import Dict
from typing import Type
from typing import TypeVar
from typing import Union
from attrs import define as _attrs_define
from ..models.column_schema_type import ColumnSchemaType
from ..types import UNSET
from ..types import Unset
T = TypeVar("T", bound="ItemColumn")
[docs]
@_attrs_define
class ItemColumn:
"""ItemColumn model
Attributes:
name (str):
data_element_ref (Union[Unset, str]): A URL referencing a specific data element (and optional
version) within a PDD, CDE set, or other data element
source.
label (Union[Unset, str]):
represents_pv (Union[Unset, int, str]): When provided, this indicates that this column
represents one of the permissible values from the
referenced data element. The desired permissible value
must be placed in this field, and the column type must
be either 'Categorical' or 'Boolean'.
type (Union[Unset, ColumnSchemaType]):
"""
name: str
data_element_ref: Union[Unset, str] = UNSET
label: Union[Unset, str] = UNSET
represents_pv: Union[Unset, int, str] = UNSET
type: Union[Unset, ColumnSchemaType] = UNSET
[docs]
def to_dict(self) -> Dict[str, Any]:
"""Convert to a dict"""
name = self.name
data_element_ref = self.data_element_ref
label = self.label
represents_pv: Union[Unset, int, str]
if isinstance(self.represents_pv, Unset):
represents_pv = UNSET
else:
represents_pv = self.represents_pv
type: Union[Unset, str] = UNSET
if not isinstance(self.type, Unset):
type = self.type.value
field_dict: Dict[str, Any] = {}
field_dict.update(
{
"name": name,
}
)
if data_element_ref is not UNSET:
field_dict["data_element_ref"] = data_element_ref
if label is not UNSET:
field_dict["label"] = label
if represents_pv is not UNSET:
field_dict["represents_pv"] = represents_pv
if type is not UNSET:
field_dict["type"] = type
return field_dict
[docs]
@classmethod
def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
"""Create an instance of :py:class:`ItemColumn` from a dict"""
d = src_dict.copy()
name = d.pop("name")
data_element_ref = d.pop("data_element_ref", UNSET)
label = d.pop("label", UNSET)
def _parse_represents_pv(data: object) -> Union[Unset, int, str]:
if isinstance(data, Unset):
return data
return cast(Union[Unset, int, str], data)
represents_pv = _parse_represents_pv(d.pop("represents_pv", UNSET))
_type = d.pop("type", UNSET)
type: Union[Unset, ColumnSchemaType]
if isinstance(_type, Unset):
type = UNSET
else:
type = ColumnSchemaType(_type)
item_column = cls(
name=name,
data_element_ref=data_element_ref,
label=label,
represents_pv=represents_pv,
type=type,
)
return item_column