Module piate.api.resources.collections
Expand source code
from dataclasses import dataclass, field
from typing import Optional, Dict, Generator
from dataclasses_json import dataclass_json, Undefined
from piate.api.resources import BaseResource
from piate.api.response import (
MetadataType,
Metadata,
MetadataResource,
create_paged_response_class_v2,
)
from piate.api.version import APIVersion
@dataclass_json(undefined=Undefined.RAISE)
@dataclass
class CollectionNameLanguage:
self: MetadataResource
code: str
name: str
is_official: bool
@dataclass_json(undefined=Undefined.RAISE)
@dataclass
class CollectionName:
short_name: str
full_name: str
year: Optional[int] = field(default=None)
language: Optional[CollectionNameLanguage] = field(default=None)
institution_code: Optional[str] = field(default=None)
institution_name: Optional[str] = field(default=None)
@dataclass_json(undefined=Undefined.RAISE)
@dataclass
class Collection:
code: str
id: int
name: CollectionName
description: str
type: MetadataType
metadata: Metadata
self: MetadataResource
update: MetadataResource
delete: MetadataResource
def compact(self) -> Dict:
return dict(
code=self.code, id=self.id, name=self.name, description=self.description
)
CollectionPagedResponse = create_paged_response_class_v2(Collection)
class Collections(BaseResource):
def pages(self) -> Generator[CollectionPagedResponse, None, None]:
page = self._first_page()
yield page
while page.next is not None:
page = CollectionPagedResponse.from_dict(
self.session.get_metadata_resource(page.next)
)
yield page
def _first_page(self) -> CollectionPagedResponse:
response = self.session.get(
"/collections",
{"expand": "true", "offset": 0, "limit": 10},
version=APIVersion.V2,
do_auth=False,
)
return CollectionPagedResponse.from_dict(response)
Classes
class Collection (code: str, id: int, name: CollectionName, description: str, type: MetadataType, metadata: Metadata, self: MetadataResource, update: MetadataResource, delete: MetadataResource)-
Collection(code: str, id: int, name: piate.api.resources.collections.CollectionName, description: str, type: piate.api.response.MetadataType, metadata: piate.api.response.Metadata, self: piate.api.response.MetadataResource, update: piate.api.response.MetadataResource, delete: piate.api.response.MetadataResource)
Expand source code
@dataclass_json(undefined=Undefined.RAISE) @dataclass class Collection: code: str id: int name: CollectionName description: str type: MetadataType metadata: Metadata self: MetadataResource update: MetadataResource delete: MetadataResource def compact(self) -> Dict: return dict( code=self.code, id=self.id, name=self.name, description=self.description )Class variables
var code : strvar dataclass_json_configvar delete : MetadataResourcevar description : strvar id : intvar metadata : Metadatavar name : CollectionNamevar self : MetadataResourcevar type : MetadataTypevar update : MetadataResource
Static methods
def from_dict(kvs: Union[dict, list, str, int, float, bool, ForwardRef(None)], *, infer_missing=False) ‑> ~A-
Expand source code
@classmethod def from_dict(cls: Type[A], kvs: Json, *, infer_missing=False) -> A: return _decode_dataclass(cls, kvs, infer_missing) def from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) ‑> ~A-
Expand source code
@classmethod def from_json(cls: Type[A], s: JsonData, *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) -> A: kvs = json.loads(s, parse_float=parse_float, parse_int=parse_int, parse_constant=parse_constant, **kw) return cls.from_dict(kvs, infer_missing=infer_missing) def schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) ‑> dataclasses_json.mm.SchemaF[~A]-
Expand source code
@classmethod def schema(cls: Type[A], *, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) -> SchemaType: Schema = build_schema(cls, DataClassJsonMixin, infer_missing, partial) if unknown is None: undefined_parameter_action = _undefined_parameter_action_safe(cls) if undefined_parameter_action is not None: # We can just make use of the same-named mm keywords unknown = undefined_parameter_action.name.lower() return Schema(only=only, exclude=exclude, many=many, context=context, load_only=load_only, dump_only=dump_only, partial=partial, unknown=unknown)
Methods
def compact(self) ‑> Dict-
Expand source code
def compact(self) -> Dict: return dict( code=self.code, id=self.id, name=self.name, description=self.description ) def to_dict(self, encode_json=False) ‑> Dict[str, Union[dict, list, str, int, float, bool, ForwardRef(None)]]-
Expand source code
def to_dict(self, encode_json=False) -> Dict[str, Json]: return _asdict(self, encode_json=encode_json) def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Union[int, str, ForwardRef(None)] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) ‑> str-
Expand source code
def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) -> str: return json.dumps(self.to_dict(encode_json=False), cls=_ExtendedEncoder, skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, indent=indent, separators=separators, default=default, sort_keys=sort_keys, **kw)
class CollectionName (short_name: str, full_name: str, year: Optional[int] = None, language: Optional[CollectionNameLanguage] = None, institution_code: Optional[str] = None, institution_name: Optional[str] = None)-
CollectionName(short_name: str, full_name: str, year: Optional[int] = None, language: Optional[piate.api.resources.collections.CollectionNameLanguage] = None, institution_code: Optional[str] = None, institution_name: Optional[str] = None)
Expand source code
@dataclass_json(undefined=Undefined.RAISE) @dataclass class CollectionName: short_name: str full_name: str year: Optional[int] = field(default=None) language: Optional[CollectionNameLanguage] = field(default=None) institution_code: Optional[str] = field(default=None) institution_name: Optional[str] = field(default=None)Class variables
var dataclass_json_configvar full_name : strvar institution_code : Optional[str]var institution_name : Optional[str]var language : Optional[CollectionNameLanguage]var short_name : strvar year : Optional[int]
Static methods
def from_dict(kvs: Union[dict, list, str, int, float, bool, ForwardRef(None)], *, infer_missing=False) ‑> ~A-
Expand source code
@classmethod def from_dict(cls: Type[A], kvs: Json, *, infer_missing=False) -> A: return _decode_dataclass(cls, kvs, infer_missing) def from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) ‑> ~A-
Expand source code
@classmethod def from_json(cls: Type[A], s: JsonData, *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) -> A: kvs = json.loads(s, parse_float=parse_float, parse_int=parse_int, parse_constant=parse_constant, **kw) return cls.from_dict(kvs, infer_missing=infer_missing) def schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) ‑> dataclasses_json.mm.SchemaF[~A]-
Expand source code
@classmethod def schema(cls: Type[A], *, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) -> SchemaType: Schema = build_schema(cls, DataClassJsonMixin, infer_missing, partial) if unknown is None: undefined_parameter_action = _undefined_parameter_action_safe(cls) if undefined_parameter_action is not None: # We can just make use of the same-named mm keywords unknown = undefined_parameter_action.name.lower() return Schema(only=only, exclude=exclude, many=many, context=context, load_only=load_only, dump_only=dump_only, partial=partial, unknown=unknown)
Methods
def to_dict(self, encode_json=False) ‑> Dict[str, Union[dict, list, str, int, float, bool, ForwardRef(None)]]-
Expand source code
def to_dict(self, encode_json=False) -> Dict[str, Json]: return _asdict(self, encode_json=encode_json) def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Union[int, str, ForwardRef(None)] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) ‑> str-
Expand source code
def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) -> str: return json.dumps(self.to_dict(encode_json=False), cls=_ExtendedEncoder, skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, indent=indent, separators=separators, default=default, sort_keys=sort_keys, **kw)
class CollectionNameLanguage (self: MetadataResource, code: str, name: str, is_official: bool)-
CollectionNameLanguage(self: piate.api.response.MetadataResource, code: str, name: str, is_official: bool)
Expand source code
@dataclass_json(undefined=Undefined.RAISE) @dataclass class CollectionNameLanguage: self: MetadataResource code: str name: str is_official: boolClass variables
var code : strvar dataclass_json_configvar is_official : boolvar name : strvar self : MetadataResource
Static methods
def from_dict(kvs: Union[dict, list, str, int, float, bool, ForwardRef(None)], *, infer_missing=False) ‑> ~A-
Expand source code
@classmethod def from_dict(cls: Type[A], kvs: Json, *, infer_missing=False) -> A: return _decode_dataclass(cls, kvs, infer_missing) def from_json(s: Union[str, bytes, bytearray], *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) ‑> ~A-
Expand source code
@classmethod def from_json(cls: Type[A], s: JsonData, *, parse_float=None, parse_int=None, parse_constant=None, infer_missing=False, **kw) -> A: kvs = json.loads(s, parse_float=parse_float, parse_int=parse_int, parse_constant=parse_constant, **kw) return cls.from_dict(kvs, infer_missing=infer_missing) def schema(*, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) ‑> dataclasses_json.mm.SchemaF[~A]-
Expand source code
@classmethod def schema(cls: Type[A], *, infer_missing: bool = False, only=None, exclude=(), many: bool = False, context=None, load_only=(), dump_only=(), partial: bool = False, unknown=None) -> SchemaType: Schema = build_schema(cls, DataClassJsonMixin, infer_missing, partial) if unknown is None: undefined_parameter_action = _undefined_parameter_action_safe(cls) if undefined_parameter_action is not None: # We can just make use of the same-named mm keywords unknown = undefined_parameter_action.name.lower() return Schema(only=only, exclude=exclude, many=many, context=context, load_only=load_only, dump_only=dump_only, partial=partial, unknown=unknown)
Methods
def to_dict(self, encode_json=False) ‑> Dict[str, Union[dict, list, str, int, float, bool, ForwardRef(None)]]-
Expand source code
def to_dict(self, encode_json=False) -> Dict[str, Json]: return _asdict(self, encode_json=encode_json) def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Union[int, str, ForwardRef(None)] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) ‑> str-
Expand source code
def to_json(self, *, skipkeys: bool = False, ensure_ascii: bool = True, check_circular: bool = True, allow_nan: bool = True, indent: Optional[Union[int, str]] = None, separators: Tuple[str, str] = None, default: Callable = None, sort_keys: bool = False, **kw) -> str: return json.dumps(self.to_dict(encode_json=False), cls=_ExtendedEncoder, skipkeys=skipkeys, ensure_ascii=ensure_ascii, check_circular=check_circular, allow_nan=allow_nan, indent=indent, separators=separators, default=default, sort_keys=sort_keys, **kw)
class Collections (session: Session)-
Expand source code
class Collections(BaseResource): def pages(self) -> Generator[CollectionPagedResponse, None, None]: page = self._first_page() yield page while page.next is not None: page = CollectionPagedResponse.from_dict( self.session.get_metadata_resource(page.next) ) yield page def _first_page(self) -> CollectionPagedResponse: response = self.session.get( "/collections", {"expand": "true", "offset": 0, "limit": 10}, version=APIVersion.V2, do_auth=False, ) return CollectionPagedResponse.from_dict(response)Ancestors
Class variables
var session : Session
Methods
def pages(self) ‑> Generator[create_paged_response_class_v2()..PagedResponse, None, None] -
Expand source code
def pages(self) -> Generator[CollectionPagedResponse, None, None]: page = self._first_page() yield page while page.next is not None: page = CollectionPagedResponse.from_dict( self.session.get_metadata_resource(page.next) ) yield page