Source code for pydelfini.delfini_core.models.collection_archive_request

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 ..models.collection_archive_request_tabular_format import (
    CollectionArchiveRequestTabularFormat,
)
from ..types import UNSET
from ..types import Unset


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


[docs] @_attrs_define class CollectionArchiveRequest: """Selects what the archive contains. An empty request means the whole collection version; `itemIds` limits it to those items, and `inFolder` to a folder's contents, recursively. Attributes: in_folder (Union[Unset, str]): ID of the folder whose contents, recursively, to include. `ROOT` means the whole collection version. item_ids (Union[Unset, List[str]]): IDs of the items to include. tabular_format (Union[Unset, CollectionArchiveRequestTabularFormat]): How dataviews and links are written. `query` (the default) writes each dataview's query definition and only records links in the manifest, giving the smallest archive. `parquet` and `csv` evaluate each dataview and fetch each link, writing tabular results in that format; a link to a non-tabular file is copied as-is. Default: CollectionArchiveRequestTabularFormat.QUERY. """ in_folder: Union[Unset, str] = UNSET item_ids: Union[Unset, List[str]] = UNSET tabular_format: Union[Unset, CollectionArchiveRequestTabularFormat] = ( CollectionArchiveRequestTabularFormat.QUERY )
[docs] def to_dict(self) -> Dict[str, Any]: """Convert to a dict""" in_folder = self.in_folder item_ids: Union[Unset, List[str]] = UNSET if not isinstance(self.item_ids, Unset): item_ids = self.item_ids tabular_format: Union[Unset, str] = UNSET if not isinstance(self.tabular_format, Unset): tabular_format = self.tabular_format.value field_dict: Dict[str, Any] = {} field_dict.update({}) if in_folder is not UNSET: field_dict["inFolder"] = in_folder if item_ids is not UNSET: field_dict["itemIds"] = item_ids if tabular_format is not UNSET: field_dict["tabularFormat"] = tabular_format return field_dict
[docs] @classmethod def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T: """Create an instance of :py:class:`CollectionArchiveRequest` from a dict""" d = src_dict.copy() in_folder = d.pop("inFolder", UNSET) item_ids = cast(List[str], d.pop("itemIds", UNSET)) _tabular_format = d.pop("tabularFormat", UNSET) tabular_format: Union[Unset, CollectionArchiveRequestTabularFormat] if isinstance(_tabular_format, Unset): tabular_format = UNSET else: tabular_format = CollectionArchiveRequestTabularFormat(_tabular_format) collection_archive_request = cls( in_folder=in_folder, item_ids=item_ids, tabular_format=tabular_format, ) return collection_archive_request