schrodinger.models.jsonable module¶
A module for defining jsonable versions of classes (typically classes defined in third-party modules).
You can also find the registry of classes that are supported by the load(s) and
dump(s) functions in schrodinger.model.json. Any object that is an instance
of one of the registered classes will be automatically jsonable using dump
and dumps. To deserialize, you must specify the registered class to
load or loads. Example:
from schrodinger.models import json
my_set = set(range(1,2,3))
my_set_jsonstr = json.dumps(my_set)
new_set = json.loads(my_set_jsonstr, DataClass=set)
assert new_set == my_set
assert isinstance(new_set, set)
- Currently registered DataClasses:
structure.Structure
set
tuple
rdkit.Chem.rdchem.Mol
bytes
- class schrodinger.models.jsonable.JsonableSet¶
Bases:
schrodinger.models.json.JsonableClassMixin,set- ENCODING_KEY = '_python_set_'¶
- toJsonImplementation()¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- classmethod fromJsonImplementation(json_list)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- copy()¶
Return a shallow copy of a set.
- class schrodinger.models.jsonable.JsonableStructure(handle, error_handler=None)¶
Bases:
schrodinger.models.json.JsonableClassMixin,schrodinger.structure._structure.Structure- toJsonImplementation()¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- classmethod fromJsonImplementation(json_str)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- class schrodinger.models.jsonable.JsonableTuple(iterable=(), /)¶
Bases:
schrodinger.models.json.JsonableClassMixin,tuple- ENCODING_KEY = '_python_tuple_'¶
- toJsonImplementation()¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- classmethod fromJsonImplementation(json_list)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- class schrodinger.models.jsonable.JsonableBytes¶
Bases:
schrodinger.models.json.JsonableClassMixin,bytes- toJsonImplementation() str¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- classmethod fromJsonImplementation(b64encoded_bytes: str)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- class schrodinger.models.jsonable.JsonableNamedTuple¶
Bases:
schrodinger.models.json.JsonableClassMixinA jsonabled NamedTuple that behaves like a normal named tuple but is jsonable if its fields are jsonable. Example:
class Coordinate(JsonableNamedTuple): x: float y: float description: str coord = Coordinate(x=1, y=2, description="molecule coord") assert coord == (1, 2, "molecule coord") serialized_coord = json.dumps(c) deserialized_coord = json.loads(serialized_coord, DataClass=Coordinate) assert deserialized_coord == (1, 2, "molecule coord")
- WARNING:: Instances of subclasses of this class will not evaluate as
instances of
JsonableNamedTuple. This replicates the behavior oftyping.NamedTuple.
- class schrodinger.models.jsonable.JsonableEnum(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)¶
Bases:
schrodinger.models.jsonable._JsonableEnumBase,enum.Enum- __init__(*args, **kwargs)¶
- classmethod fromJsonImplementation(json_obj)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- toJsonImplementation()¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- class schrodinger.models.jsonable.JsonableIntEnum(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)¶
Bases:
int,schrodinger.models.json.JsonableClassMixin,enum.Enum- __init__(*args, **kwargs)¶
- classmethod fromJsonImplementation(json_obj)¶
Abstract method that must be defined by all derived classes. Takes in a dictionary and constructs an instance of the derived class.
- Parameters
json_dict (dict) – A dictionary loaded from a JSON string or file.
- Returns
An instance of the derived class.
- Return type
cls
- toJsonImplementation()¶
Abstract method that must be defined by all derived classes. Converts an instance of the derived class into a jsonifiable object.
- Returns
A dict made up of JSON native datatypes or Jsonable objects. See the link below for a table of such types. https://docs.python.org/2/library/json.html#encoders-and-decoders
- class schrodinger.models.jsonable.AbstractJsonSerializer¶
Bases:
objectA class for defining how serialization should be done for a particular object. This should only be used if you’re unable to use
json.JsonableClassMixin. This can be used in conjunction withjson.load(s)andjson.dump(s).Subclasses must define
ObjectClassandJsonableClassand overrideobjectFromJsonableandjsonableFromObject.Create a subclass here to add a new class to the global default serialization registry. (Consult with relevant parties before doing so…)
- Variables
ObjectClass – The non-jsonable third-party class (e.g. set, rdkit.Mol, etc.)
JsonableClass – The class that subclasses
ObjectClassand mixes in JsonableClassMixin.
- ObjectClass = NotImplemented¶
- JsonableClass = NotImplemented¶
- __init__()¶
- classmethod objectFromJsonable(jsonable_obj)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(obj)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- classmethod objectFromJson(json_obj)¶
DO NOT OVERRIDE.
Return an instance of ObjectClass from a json object (i.e. an object made up of json native types).
- class schrodinger.models.jsonable.StructureSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
- JsonableClass¶
- classmethod objectFromJsonable(jsonable_structure)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(structure_)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- class schrodinger.models.jsonable.TupleSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
alias of
tuple
- JsonableClass¶
- classmethod objectFromJsonable(jsonable_tuple)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(tuple_)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- class schrodinger.models.jsonable.BytesSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
alias of
bytes
- JsonableClass¶
- classmethod objectFromJsonable(jsonable_bytes: schrodinger.models.jsonable.JsonableBytes) bytes¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(bytes_) schrodinger.models.jsonable.JsonableBytes¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- class schrodinger.models.jsonable.SetSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
alias of
set
- JsonableClass¶
- classmethod objectFromJsonable(jsonable_set)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(set_)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- class schrodinger.models.jsonable.MolSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
alias of
rdkit.Chem.rdchem.Mol
- JsonableClass¶
alias of
schrodinger.models.jsonable._JsonableMolWrapper
- classmethod objectFromJsonable(jsonable_mol)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(mol)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- class schrodinger.models.jsonable.DateTimeSerializer¶
Bases:
schrodinger.models.jsonable.AbstractJsonSerializer- ObjectClass¶
alias of
datetime.datetime
- JsonableClass¶
alias of
schrodinger.models.jsonable._JsonableDateTime
- classmethod objectFromJsonable(jsonable_datetime)¶
Return an instance of
ObjectClassfrom an instance ofJsonableClass
- classmethod jsonableFromObject(dt)¶
Return an instance of
JsonableClassfrom an instance ofObjectClass
- schrodinger.models.jsonable.serializer¶
- schrodinger.models.jsonable.get_default_serializer(DataClass)¶