Source code for ncbitaxonomist.model.datamodel

"""
..
  Copyright 2020 The University of Sydney

.. moduleauthor:: Jan P Buchmann <jan.buchmann@sydney.edu.au>
"""

from typing import Dict, Mapping
import json


[docs]def int_attribute(attribute): """Enforce int for attribute""" if attribute is None: return attribute return int(attribute)
[docs]def standardize_attributes(attributes:Mapping[str,any]): """ Convert None into empty dictionary. See Important warning at https://docs.python.org/3/tutorial/controlflow.html#default-argument-values """ if attributes is None: attributes = {} return attributes
[docs]class DataModel: """Base class for data models."""
[docs] @classmethod def new(cls, attributes:Mapping[str,any]=None)->__qualname__: """Return new instance with given attributes""" return cls(attributes)
[docs] @classmethod def new_from_json(cls, json_attributes:str)->__qualname__: """Return new instance with attributes encoded in JSON """ return cls.new(json.loads(json_attributes))
def __init__(self, cast, attributes:Mapping=None): """Ctor. Set attributes as required.""" self.cast = cast self.taxonid = None
[docs] def taxid(self): return self.taxonid
[docs] def get_attributes(self)->Dict[str,any]: """Return taxon attributes as dictionary.""" raise NotImplementedError