Module piate.api.resources.institutions
Expand source code
from dataclasses import dataclass, field
from typing import Optional, Dict
from dataclasses_json import dataclass_json, Undefined
from piate.api import API
from piate.api.resources import BaseResource
from piate.api.response import create_paged_response_class_generic, Meta
@dataclass_json(undefined=Undefined.RAISE)
@dataclass
class InstitutionMetadata:
creation_date: str
change_date: str
@dataclass_json(undefined=Undefined.RAISE)
@dataclass
class Institution:
meta: Meta
code: str
name: str
metadata: InstitutionMetadata
parent: Optional[str] = field(default=None)
def compact(self) -> Dict:
compact = {"code": self.code, "name": self.name, "metadata": self.metadata}
if self.parent:
compact["parent"] = self.parent
return compact
InstitutionPagedResponse = create_paged_response_class_generic(Institution)
class Institutions(BaseResource):
def pages(self) -> InstitutionPagedResponse:
page = self._first_page()
yield page
while page.next is not None:
page = InstitutionPagedResponse.from_dict(
self.session.get_meta_resource(page.next)
)
yield page
def _first_page(self) -> InstitutionPagedResponse:
response = self.session.get(
"/institutions",
params={"expand": "true", "offset": 0},
do_auth=False,
api_type=API.UAC,
)
return InstitutionPagedResponse.from_dict(response)
Classes
class Institution (meta: Meta, code: str, name: str, metadata: InstitutionMetadata, parent: Optional[str] = None)-
Institution(meta: piate.api.response.Meta, code: str, name: str, metadata: piate.api.resources.institutions.InstitutionMetadata, parent: Optional[str] = None)
Expand source code
@dataclass_json(undefined=Undefined.RAISE) @dataclass class Institution: meta: Meta code: str name: str metadata: InstitutionMetadata parent: Optional[str] = field(default=None) def compact(self) -> Dict: compact = {"code": self.code, "name": self.name, "metadata": self.metadata} if self.parent: compact["parent"] = self.parent return compactClass variables
var code : strvar dataclass_json_configvar meta : Metavar metadata : InstitutionMetadatavar name : strvar parent : Optional[str]
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: compact = {"code": self.code, "name": self.name, "metadata": self.metadata} if self.parent: compact["parent"] = self.parent return compact 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 InstitutionMetadata (creation_date: str, change_date: str)-
InstitutionMetadata(creation_date: str, change_date: str)
Expand source code
@dataclass_json(undefined=Undefined.RAISE) @dataclass class InstitutionMetadata: creation_date: str change_date: strClass variables
var change_date : strvar creation_date : strvar dataclass_json_config
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 Institutions (session: Session)-
Expand source code
class Institutions(BaseResource): def pages(self) -> InstitutionPagedResponse: page = self._first_page() yield page while page.next is not None: page = InstitutionPagedResponse.from_dict( self.session.get_meta_resource(page.next) ) yield page def _first_page(self) -> InstitutionPagedResponse: response = self.session.get( "/institutions", params={"expand": "true", "offset": 0}, do_auth=False, api_type=API.UAC, ) return InstitutionPagedResponse.from_dict(response)Ancestors
Class variables
var session : Session
Methods
def pages(self) ‑> create_paged_response_class_generic()..PagedResponse -
Expand source code
def pages(self) -> InstitutionPagedResponse: page = self._first_page() yield page while page.next is not None: page = InstitutionPagedResponse.from_dict( self.session.get_meta_resource(page.next) ) yield page