json_utils#
Module containing quantify JSON utilities.
Module Contents#
Classes#
A mixin that adds validation utilities to classes that have |
|
The Quantify Scheduler JSONDecoder. |
|
Custom JSONEncoder which encodes a Quantify Scheduler object into a JSON file format |
Functions#
|
Validate schema using jsonschema-rs. |
|
Load a JSON schema from file. Expects a 'schemas' directory in the same directory |
|
Load a JSON validator from file. Expects a 'schemas' directory in the same directory |
|
Attributes#
- load_json_schema(relative_to: str | pathlib.Path, filename: str)[source]#
Load a JSON schema from file. Expects a ‘schemas’ directory in the same directory as
relative_to
.Tip
Typical usage of the form
schema = load_json_schema(__file__, 'definition.json')
- Parameters:
relative_to – the file to begin searching from
filename – the JSON file to load
- Returns:
the schema
- Return type:
- load_json_validator(relative_to: str | pathlib.Path, filename: str) Callable [source]#
Load a JSON validator from file. Expects a ‘schemas’ directory in the same directory as
relative_to
.- Parameters:
relative_to – the file to begin searching from
filename – the JSON file to load
- Returns:
The validator
- Return type:
Callable
- exception UnknownDeserializationTypeError[source]#
Bases:
Exception
Raised when an unknown deserialization type is encountered.
- class JSONSchemaValMixin[source]#
A mixin that adds validation utilities to classes that have a data attribute like a
UserDict
based on JSONSchema.This requires the class to have a class variable “schema_filename”
- classmethod is_valid(object_to_be_validated) bool [source]#
Checks if the object is valid according to its schema.
- Raises:
fastjsonschema.JsonSchemaException – if the data is invalid
- class SchedulerJSONDecoder(*args, **kwargs)[source]#
Bases:
json.JSONDecoder
The Quantify Scheduler JSONDecoder.
The SchedulerJSONDecoder is used to convert a string with JSON content into instances of classes in quantify-scheduler.
For a few types,
DEFAULT_TYPES
contains the mapping from type name to the python object. This dictionary can be expanded with classes from modules specified in the keyword argumentmodules
.Classes not contained in
DEFAULT_TYPES
by default must implement__getstate__
, such that it returns a dictionary containing at least the keys"deserialization_type"
and"data"
, and__setstate__
, which should be able to parse the data from__getstate__
.The value of
"deserialization_type"
must be either the name of the class specified inDEFAULT_TYPES
or the fully qualified name of the class, which can be obtained fromexport_python_object_to_path_string()
.- Keyword Arguments:
modules (List[ModuleType], optional) – A list of custom modules containing serializable classes, by default []
- extended_modules: List[types.ModuleType][source]#
- decode_dict(obj: Dict[str, Any]) Dict[str, Any] | numpy.ndarray | type | qcodes.instrument.Instrument [source]#
Returns the deserialized JSON dictionary.
- Parameters:
obj – The dictionary to deserialize.
- Returns:
The deserialized result.
- custom_object_hook(obj: object) object [source]#
The
object_hook
hook will be called with the result of every JSON object decoded and its return value will be used in place of the givendict
.- Parameters:
obj – A pair of JSON objects.
- Returns:
The deserialized result.
- _get_type_from_string(deserialization_type: str) Type [source]#
Get the python type based on the description string.
The following methods are tried, in order:
- Try to find the string in
DEFAULT_TYPES
or the extended modules passed to this class’ initializer.
- Try to find the string in
- Try to import the type. This works only if
deserialization_type
is formatted as a dot-separated path to the type. E.g.
quantify_scheduler.json_utils.SchedulerJSONDecoder
.
- Try to import the type. This works only if
- (deprecated) Try to find the class by its
__name__
in a predefined selection of types present in
quantify_scheduler
.
- (deprecated) Try to find the class by its
- Parameters:
deserialization_type – Description of a type.
- Raises:
UnknownDeserializationTypeError – If the type cannot be found by any of the methods described.
- Returns:
The
Type
found.- Return type:
Type
- class SchedulerJSONEncoder(*, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, default=None)[source]#
Bases:
json.JSONEncoder
Custom JSONEncoder which encodes a Quantify Scheduler object into a JSON file format string.
- default(o)[source]#
Overloads the json.JSONEncoder default method that returns a serializable object. It will try 3 different serialization methods which are, in order, check if the object is to be serialized to a string using repr. If not, try to use
__getstate__
. Finally, try to serialize the__dict__
property.