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.JsonableClassMixin

A 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 of typing.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: object

A 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 with json.load(s) and json.dump(s).

Subclasses must define ObjectClass and JsonableClass and override objectFromJsonable and jsonableFromObject.

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 ObjectClass and mixes in JsonableClassMixin.

ObjectClass = NotImplemented
JsonableClass = NotImplemented
__init__()
classmethod objectFromJsonable(jsonable_obj)

Return an instance of ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(obj)

Return an instance of JsonableClass from an instance of ObjectClass

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

alias of schrodinger.structure._structure.Structure

JsonableClass

alias of schrodinger.models.jsonable.JsonableStructure

classmethod objectFromJsonable(jsonable_structure)

Return an instance of ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(structure_)

Return an instance of JsonableClass from an instance of ObjectClass

class schrodinger.models.jsonable.TupleSerializer

Bases: schrodinger.models.jsonable.AbstractJsonSerializer

ObjectClass

alias of tuple

JsonableClass

alias of schrodinger.models.jsonable.JsonableTuple

classmethod objectFromJsonable(jsonable_tuple)

Return an instance of ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(tuple_)

Return an instance of JsonableClass from an instance of ObjectClass

class schrodinger.models.jsonable.BytesSerializer

Bases: schrodinger.models.jsonable.AbstractJsonSerializer

ObjectClass

alias of bytes

JsonableClass

alias of schrodinger.models.jsonable.JsonableBytes

classmethod objectFromJsonable(jsonable_bytes: schrodinger.models.jsonable.JsonableBytes) bytes

Return an instance of ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(bytes_) schrodinger.models.jsonable.JsonableBytes

Return an instance of JsonableClass from an instance of ObjectClass

class schrodinger.models.jsonable.SetSerializer

Bases: schrodinger.models.jsonable.AbstractJsonSerializer

ObjectClass

alias of set

JsonableClass

alias of schrodinger.models.jsonable.JsonableSet

classmethod objectFromJsonable(jsonable_set)

Return an instance of ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(set_)

Return an instance of JsonableClass from an instance of ObjectClass

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 ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(mol)

Return an instance of JsonableClass from an instance of ObjectClass

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 ObjectClass from an instance of JsonableClass

classmethod jsonableFromObject(dt)

Return an instance of JsonableClass from an instance of ObjectClass

schrodinger.models.jsonable.serializer

alias of schrodinger.models.jsonable.DateTimeSerializer

schrodinger.models.jsonable.get_default_serializer(DataClass)