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.error import Error
from ..models.item_export_checksum import ItemExportChecksum
from ..models.item_export_format import ItemExportFormat
from ..models.item_export_status import ItemExportStatus
from ..types import UNSET
from ..types import Unset
T = TypeVar("T", bound="ItemExport")
[docs]
@_attrs_define
class ItemExport:
"""ItemExport model
Attributes:
collection_id (str):
created_on (datetime.datetime):
format_ (ItemExportFormat):
id (str):
item_id (str):
status (ItemExportStatus):
version_id (str):
checksum (Union[Unset, ItemExportChecksum]):
completed_on (Union[Unset, datetime.datetime]):
download_name (Union[Unset, str]):
errors (Union[Unset, List['Error']]):
expires_after (Union[Unset, datetime.datetime]):
size (Union[Unset, int]):
"""
collection_id: str
created_on: datetime.datetime
format_: ItemExportFormat
id: str
item_id: str
status: ItemExportStatus
version_id: str
checksum: Union[Unset, "ItemExportChecksum"] = UNSET
completed_on: Union[Unset, datetime.datetime] = UNSET
download_name: Union[Unset, str] = 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()
format_ = self.format_.value
id = self.id
item_id = self.item_id
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()
download_name = self.download_name
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,
"format": format_,
"id": id,
"itemId": item_id,
"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 download_name is not UNSET:
field_dict["downloadName"] = download_name
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:`ItemExport` from a dict"""
d = src_dict.copy()
collection_id = d.pop("collectionId")
created_on = isoparse(d.pop("createdOn"))
format_ = ItemExportFormat(d.pop("format"))
id = d.pop("id")
item_id = d.pop("itemId")
status = ItemExportStatus(d.pop("status"))
version_id = d.pop("versionId")
_checksum = d.pop("checksum", UNSET)
checksum: Union[Unset, ItemExportChecksum]
if isinstance(_checksum, Unset):
checksum = UNSET
else:
checksum = ItemExportChecksum.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)
download_name = d.pop("downloadName", UNSET)
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)
item_export = cls(
collection_id=collection_id,
created_on=created_on,
format_=format_,
id=id,
item_id=item_id,
status=status,
version_id=version_id,
checksum=checksum,
completed_on=completed_on,
download_name=download_name,
errors=errors,
expires_after=expires_after,
size=size,
)
return item_export