core.schema¶
- class immp.core.schema.Any(*choices)¶
Bases:
objectAllow values to match from a choice of schemas.
Invalidwill be raised if none of them are valid for a given value.If no schemas are defined, this acts as a wildcard, i.e. it will match any value given.
When used as a dictionary key, exactly one choice must be present. To allow any number of keys, use
Optionalinstead.- choices¶
Set of valid schemas, or an empty set to match any possible value.
- Type:
.Schema list
- class immp.core.schema.Nullable(schema)¶
Bases:
objectAllow values tested against the inner schema to hold a null value. Without this wrapper,
Nonewill not be accepted by a schema and will raiseInvalid, whereasNullable(str)matches both"foo"andNone.This object evaluates equally to its inner schema.
- schema¶
Inner schema for non-null processing.
- Type:
.Schema
- class immp.core.schema.Optional(schema, default=None)¶
Bases:
objectAllows keys matching the inner schema to not be present in the source
dict. Without this wrapper,Invalidwill be raised if the corresponding key is missing.This object evaluates equally to its inner schema.
- schema¶
Inner schema for processing.
- Type:
.Schema
- default¶
- Alternative value for when the key is missing. This can be one of:
- exception immp.core.schema.SchemaError¶
Bases:
ExceptionError with the definitiion of the schema itself, raised during validation.
- exception immp.core.schema.Invalid¶
Bases:
ExceptionError with input data not matching the corresponding schema.
- class immp.core.schema.Walker¶
Bases:
objectBase class for stepping through all nodes of a
Schemainstance.- classmethod recurse(obj, path, seen, *args)¶
Handle recursion of the schema. By default, raises
RecursionErrorwhen a node is discovered again during a single call.If
Walker.RECURSEis returned, the node will be processed again. Otherwise, the resulting value (includingNone) will be used for the inner repeat of this node without any further processing.- Parameters:
obj (.Schema) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- Raises:
RecursionError – To block looping through the same portion of the schema.
- classmethod static(obj, path, seen, *args)¶
Handle a static object or type, as defined by
Walker.STATIC.
- classmethod nullable(obj, path, seen, *args)¶
Handle a nullable wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod any(obj, path, seen, *args)¶
Handle a multiple-choice wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod list(obj, path, seen, *args)¶
Handle a list. Multiple list members are considered equivalent to an
Any.
- classmethod dict(obj, path, seen, *args)¶
Handle a dictionary.
- classmethod dispatch(obj, path, seen, *args)¶
Defer to other helper methods based on the input type.
- Parameters:
obj (.Schema) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod walk(obj, *args)¶
Main entrypoint to the walk.
- Parameters:
obj (.Schema) – Schema node.
- Raises:
SchemaError – When the schema is misconfigured.
- class immp.core.schema.Validator¶
Bases:
WalkerValidation of schemas against input data.
- classmethod recurse(obj, path, seen, data)¶
Handle recursion of the schema. By default, raises
RecursionErrorwhen a node is discovered again during a single call.If
Walker.RECURSEis returned, the node will be processed again. Otherwise, the resulting value (includingNone) will be used for the inner repeat of this node without any further processing.- Parameters:
obj (.Schema) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- Raises:
RecursionError – To block looping through the same portion of the schema.
- classmethod static(obj, path, seen, data)¶
Handle a static object or type, as defined by
Walker.STATIC.
- classmethod nullable(obj, path, seen, data)¶
Handle a nullable wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod any(obj, path, seen, data)¶
Handle a multiple-choice wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod list(obj, path, seen, data)¶
Handle a list. Multiple list members are considered equivalent to an
Any.
- classmethod dict(obj, path, seen, data)¶
Handle a dictionary.
- classmethod dispatch(obj, path, seen, data)¶
Defer to other helper methods based on the input type.
- Parameters:
obj (.Schema) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod walk(obj, data)¶
Validate the given data against a schema.
- Parameters:
obj (.Schema) – Description of the data format.
data – Input data to validate.
- Raises:
Invalid – When a key or value doesn’t match the accepted type for that field.
- Returns:
Parsed data with optional values filled in.
- class immp.core.schema.JSONSchema¶
Bases:
WalkerGenerator of JSON Schema objects, suitable for external validation of schemas in JSON.
- classmethod static(obj, path, seen)¶
Handle a static object or type, as defined by
Walker.STATIC.
- classmethod nullable(obj, path, seen)¶
Handle a nullable wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod any(obj, path, seen)¶
Handle a multiple-choice wrapper.
- Parameters:
obj (.Nullable) – Schema node.
path (str) – Path taken through the schema from the root.
seen (.Schema list) – Nodes already visited in the schema.
- classmethod list(obj, path, seen)¶
Handle a list. Multiple list members are considered equivalent to an
Any.
- classmethod dict(obj, path, seen)¶
Handle a dictionary.
- classmethod walk(obj)¶
Convert a schema structure into a JSON Schema representation.
- Parameters:
schema (.Schema) – Input schema or structure.
- Returns:
Equivalent JSON Schema data.
- Return type:
- class immp.core.schema.Schema(raw, base=None)¶
Bases:
objectValidate JSON-like Python structures and provide defaults:
config = Schema({ "flag": bool, "numbers": [int], "nullable": Nullable(str), "nested": { Optional("defaulted", 1): int, "multiple": Any(int, str) } }) validated = config(data)
Pass a structure representing the expected data format to the constructor, along with an optional
baseto extend from, then validate some given data against the schema by calling the instance – seeValidator.- raw¶
Root schema item, including any base items.
- json¶
JSON Schema data corresponding to this schema – see
JSONSchema.- Type: