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