Source code for pydelfini.delfini_core.models.collection_archive

import datetime
from typing import Any
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 dateutil.parser import isoparse

from ..models.collection_archive_checksum import CollectionArchiveChecksum
from ..models.collection_archive_status import CollectionArchiveStatus
from ..models.error import Error
from ..types import UNSET
from ..types import Unset


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


[docs] @_attrs_define class CollectionArchive: """CollectionArchive model Attributes: collection_id (str): created_on (datetime.datetime): id (str): num_done (int): num_total (int): status (CollectionArchiveStatus): version_id (str): checksum (Union[Unset, CollectionArchiveChecksum]): completed_on (Union[Unset, datetime.datetime]): errors (Union[Unset, List['Error']]): expires_after (Union[Unset, datetime.datetime]): size (Union[Unset, int]): """ collection_id: str created_on: datetime.datetime id: str num_done: int num_total: int status: CollectionArchiveStatus version_id: str checksum: Union[Unset, "CollectionArchiveChecksum"] = UNSET completed_on: Union[Unset, datetime.datetime] = UNSET errors: Union[Unset, List["Error"]] = UNSET expires_after: Union[Unset, datetime.datetime] = UNSET size: Union[Unset, int] = UNSET
[docs] def to_dict(self) -> Dict[str, Any]: """Convert to a dict""" collection_id = self.collection_id created_on = self.created_on.isoformat() id = self.id num_done = self.num_done num_total = self.num_total status = self.status.value version_id = self.version_id checksum: Union[Unset, Dict[str, Any]] = UNSET if not isinstance(self.checksum, Unset): checksum = self.checksum.to_dict() completed_on: Union[Unset, str] = UNSET if not isinstance(self.completed_on, Unset): completed_on = self.completed_on.isoformat() errors: Union[Unset, List[Dict[str, Any]]] = UNSET if not isinstance(self.errors, Unset): errors = [] for errors_item_data in self.errors: errors_item = errors_item_data.to_dict() errors.append(errors_item) expires_after: Union[Unset, str] = UNSET if not isinstance(self.expires_after, Unset): expires_after = self.expires_after.isoformat() size = self.size field_dict: Dict[str, Any] = {} field_dict.update( { "collectionId": collection_id, "createdOn": created_on, "id": id, "numDone": num_done, "numTotal": num_total, "status": status, "versionId": version_id, } ) if checksum is not UNSET: field_dict["checksum"] = checksum if completed_on is not UNSET: field_dict["completedOn"] = completed_on if errors is not UNSET: field_dict["errors"] = errors if expires_after is not UNSET: field_dict["expiresAfter"] = expires_after if size is not UNSET: field_dict["size"] = size return field_dict
[docs] @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: """Create an instance of :py:class:`CollectionArchive` from a dict""" d = src_dict.copy() collection_id = d.pop("collectionId") created_on = isoparse(d.pop("createdOn")) id = d.pop("id") num_done = d.pop("numDone") num_total = d.pop("numTotal") status = CollectionArchiveStatus(d.pop("status")) version_id = d.pop("versionId") _checksum = d.pop("checksum", UNSET) checksum: Union[Unset, CollectionArchiveChecksum] if isinstance(_checksum, Unset): checksum = UNSET else: checksum = CollectionArchiveChecksum.from_dict(_checksum) _completed_on = d.pop("completedOn", UNSET) completed_on: Union[Unset, datetime.datetime] if isinstance(_completed_on, Unset): completed_on = UNSET else: completed_on = isoparse(_completed_on) errors = [] _errors = d.pop("errors", UNSET) for errors_item_data in _errors or []: errors_item = Error.from_dict(errors_item_data) errors.append(errors_item) _expires_after = d.pop("expiresAfter", UNSET) expires_after: Union[Unset, datetime.datetime] if isinstance(_expires_after, Unset): expires_after = UNSET else: expires_after = isoparse(_expires_after) size = d.pop("size", UNSET) collection_archive = cls( collection_id=collection_id, created_on=created_on, id=id, num_done=num_done, num_total=num_total, status=status, version_id=version_id, checksum=checksum, completed_on=completed_on, errors=errors, expires_after=expires_after, size=size, ) return collection_archive