Source code for pydelfini.delfini_core.models.federation_collection_page

from typing import Any
from typing import cast
from typing import Dict
from typing import List
from typing import Type
from typing import TypeVar
from typing import Union

from attrs import define as _attrs_define
from attrs import field as _attrs_field

from ..models.federation_address_or_object_type_2 import FederationAddressOrObjectType2
from ..models.federation_collection_page_type import FederationCollectionPageType
from ..types import UNSET
from ..types import Unset


T = TypeVar("T", bound="FederationCollectionPage")


[docs] @_attrs_define class FederationCollectionPage: """FederationCollectionPage model Attributes: current (Union[Unset, str]): first (Union[Unset, str]): last (Union[Unset, str]): next_ (Union[Unset, str]): ordered_items (Union[Unset, List[Union['FederationAddressOrObjectType2', List[str], str]]]): prev (Union[Unset, str]): total_items (Union[Unset, int]): type (Union[Unset, FederationCollectionPageType]): """ current: Union[Unset, str] = UNSET first: Union[Unset, str] = UNSET last: Union[Unset, str] = UNSET next_: Union[Unset, str] = UNSET ordered_items: Union[ Unset, List[Union["FederationAddressOrObjectType2", List[str], str]] ] = UNSET prev: Union[Unset, str] = UNSET total_items: Union[Unset, int] = UNSET type: Union[Unset, FederationCollectionPageType] = UNSET additional_properties: Dict[str, Any] = _attrs_field(init=False, factory=dict)
[docs] def to_dict(self) -> Dict[str, Any]: """Convert to a dict""" current = self.current first = self.first last = self.last next_ = self.next_ ordered_items: Union[Unset, List[Union[Dict[str, Any], List[str], str]]] = UNSET if not isinstance(self.ordered_items, Unset): ordered_items = [] for ordered_items_item_data in self.ordered_items: ordered_items_item: Union[Dict[str, Any], List[str], str] if isinstance(ordered_items_item_data, list): ordered_items_item = ordered_items_item_data elif isinstance( ordered_items_item_data, FederationAddressOrObjectType2 ): ordered_items_item = ordered_items_item_data.to_dict() else: ordered_items_item = ordered_items_item_data ordered_items.append(ordered_items_item) prev = self.prev total_items = self.total_items type: Union[Unset, str] = UNSET if not isinstance(self.type, Unset): type = self.type.value field_dict: Dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({}) if current is not UNSET: field_dict["current"] = current if first is not UNSET: field_dict["first"] = first if last is not UNSET: field_dict["last"] = last if next_ is not UNSET: field_dict["next"] = next_ if ordered_items is not UNSET: field_dict["orderedItems"] = ordered_items if prev is not UNSET: field_dict["prev"] = prev if total_items is not UNSET: field_dict["totalItems"] = total_items 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:`FederationCollectionPage` from a dict""" d = src_dict.copy() current = d.pop("current", UNSET) first = d.pop("first", UNSET) last = d.pop("last", UNSET) next_ = d.pop("next", UNSET) ordered_items = [] _ordered_items = d.pop("orderedItems", UNSET) for ordered_items_item_data in _ordered_items or []: def _parse_ordered_items_item( data: object, ) -> Union["FederationAddressOrObjectType2", List[str], str]: try: if not isinstance(data, list): raise TypeError() componentsschemasfederation_address_or_object_type_1 = cast( List[str], data ) return componentsschemasfederation_address_or_object_type_1 except: # noqa: E722 pass try: if not isinstance(data, dict): raise TypeError() componentsschemasfederation_address_or_object_type_2 = ( FederationAddressOrObjectType2.from_dict(data) ) return componentsschemasfederation_address_or_object_type_2 except: # noqa: E722 pass return cast( Union["FederationAddressOrObjectType2", List[str], str], data ) ordered_items_item = _parse_ordered_items_item(ordered_items_item_data) ordered_items.append(ordered_items_item) prev = d.pop("prev", UNSET) total_items = d.pop("totalItems", UNSET) _type = d.pop("type", UNSET) type: Union[Unset, FederationCollectionPageType] if isinstance(_type, Unset): type = UNSET else: type = FederationCollectionPageType(_type) federation_collection_page = cls( current=current, first=first, last=last, next_=next_, ordered_items=ordered_items, prev=prev, total_items=total_items, type=type, ) federation_collection_page.additional_properties = d return federation_collection_page
@property def additional_keys(self) -> List[str]: return list(self.additional_properties.keys()) def __getitem__(self, key: str) -> Any: return self.additional_properties[key] def __setitem__(self, key: str, value: Any) -> None: self.additional_properties[key] = value def __delitem__(self, key: str) -> None: del self.additional_properties[key] def __contains__(self, key: str) -> bool: return key in self.additional_properties