ming.schema module¶
- class ming.schema.Anything(required=(), if_missing=())¶
Accepts any value without validation.
Passes validation unchanged except for converting
dict=>ObjectThis is often used to avoid the cost of validation on fields that might contain huge entries that do not need to be validated.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- validate(value, **kw)¶
Validate an object or raise an Invalid exception.
Default implementation just raises
NotImplementedError
- class ming.schema.Array(field_type, **kw)¶
Validates a MongoDB Array.
All elements of the array must pass validation by a single
field_type(which itself may be Anything, however).- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- class ming.schema.Binary(**kw)¶
Validates value is a
bson.Binary- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- type = (<class 'bson.binary.Binary'>, <class 'bytes'>)¶
Expected Type of the validated value.
- class ming.schema.Bool(**kw)¶
Validates value is a
bool- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- class ming.schema.DateTime(**kw)¶
Validates value is a
datetimeand ensures its on UTC.If value is a
datetimebut it’s not on UTC it gets converted to UTC timezone. if value is instance ofdateit will be converted todatetime- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- class ming.schema.DateTimeTZ(**kw)¶
Validates value is a
datetime.- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- class ming.schema.Deprecated¶
Used for deprecated fields – they will be stripped from the object.
- validate(value, **kw)¶
Validate an object or raise an Invalid exception.
Default implementation just raises
NotImplementedError
- class ming.schema.Document(fields=None, required=False, if_missing=())¶
Specializes
Objectadding polymorphic validation.This is usually not used directly, but it’s the Schema against which each document in Ming is validated to.
Polymorphic Validation means that Document._validate(…) sometimes will return an instance of ChildClass based on
.polymorphic_onentry of the object (its value is used to determine the class it should be promoted based onpolymorphic_identityof.managed_class).Map of
polymorphic_identityvalues are stored in.polymorphic_registrydictionary.By default
.polymorphic_on,.managed_classand.polymorphic_registryare allNone. So.managed_classmust be set and andset_polymorphic()method must be called to configure them properly.- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(d, allow_extra=False, strip_extra=False)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- get_polymorphic_cls(data)¶
Given a mongodb document it returns the class it should be converted to.
- set_polymorphic(field, registry, identity)¶
Configure polymorphic behaviour (except for
.managed_class).fieldis the.polymorphic_on, which is the name of the field used to detect polymorphic type.registryis the.polymorphic_registrywhich is a map of field values to classes.identityis the value which leads to.managed_classtype itself.
- validate(value, **kw)¶
Validate an object or raise an Invalid exception.
Default implementation just raises
NotImplementedError
- class ming.schema.FancySchemaItem(required=(), if_missing=())¶
SchemaItemthat provides support for required fields and default values.If the value is present, then the result of
_validate()method is returned.- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- class ming.schema.Float(**kw)¶
Validates value is
intorfloat- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- type = (<class 'float'>, <class 'int'>)¶
Expected Type of the validated value.
- class ming.schema.Int(**kw)¶
Validates value is an
int.Also accepts float which represent integer numbers like
10.0->10.- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- type = (<class 'int'>,)¶
Expected Type of the validated value.
- exception ming.schema.Invalid(msg, value, state=None, error_list=None, error_dict=None)¶
This is raised in response to invalid input. It has several public attributes:
- msg:
The message, without values substituted. For instance, if you want HTML quoting of values, you can apply that.
- substituteArgs:
The arguments (a dictionary) to go with msg.
- str(self):
The message describing the error, with values substituted.
- value:
The offending (invalid) value.
- state:
The state that went with this validator. This is an application-specific object.
- error_list:
If this was a compound validator that takes a repeating value, and sub-validator(s) had errors, then this is a list of those exceptions. The list will be the same length as the number of values – valid values will have None instead of an exception.
- error_dict:
Like error_list, but for dictionary compound validators.
- class ming.schema.Migrate(old, new, migration_function)¶
Use when migrating from one Schema to another.
The
validate()method first tries to apply thenewSchemaItemand if it fails tries theoldSchemaItem. If thenewfails but the old succeeds themigration_functionwill be called to upgrade the value from the old schema to the new one.This is also used by Ming to perform migrations on whole documents through the
version_ofattribute.- classmethod obj_to_list(key_name, value_name=None)¶
Factory Method that creates migration functions to convert a dictionary to list of objects.
Migration function will go from object
{ key: value }to list[ { key_name: key, value_name: value} ].If
value_nameisNone, then value must be an object which will be expanded in the resulting object itself:[ { key_name: key, **value } ].
- validate(value, **kw)¶
First tries validation against
newand if it fails appliesmigrate_function.The
migrate_functionis applied only ifoldvalidation succeeds, this is to ensure that we are not actually facing a corrupted value.If
oldvalidation fails, the method just raises the validation error.
- class ming.schema.NumberDecimal(precision=None, rounding='ROUND_HALF_DOWN', **kwargs)¶
Validates value is compatible with
bson.Decimal128.Useful for financial data that need arbitrary precision.
The argument precision specifies the number of decimal digits to evaluate. Defaults to 6.
The argument rounding specifies the kind of rounding to be performed. Valid values are decimal.ROUND_DOWN, decimal.ROUND_HALF_UP, decimal.ROUND_HALF_EVEN, decimal.ROUND_CEILING, decimal.ROUND_FLOOR, decimal.ROUND_UP, decimal.ROUND_HALF_DOWN, decimal.ROUND_05UP. Defaults to decimal.ROUND_HALF_DOWN.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- type = (<class 'int'>, <class 'float'>, <class 'decimal.Decimal'>, <class 'bson.decimal128.Decimal128'>)¶
Expected Type of the validated value.
- class ming.schema.Object(fields=None, required=False, if_missing=())¶
Used for dict-like validation.
It validates all the values inside the dictionary and converts it to a
ming.base.Object.Also ensures that the incoming object does not have any extra keys.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(d, allow_extra=False, strip_extra=False)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- if_missing()¶
Missing is a sentinel used to indicate a missing key or missing keyword argument (used since None sometimes has meaning)
- class ming.schema.ObjectId(required=(), if_missing=())¶
Validates value is a
bson.ObjectId.If value is a string that represents an ObjectId it gets converted to an ObjectId.
If the ObjectId is not provided (or it’s
Missing) a new one gets generated. To override this behaviour passif_missing=Noneto the schema constructor:>>> schema.ObjectId().validate(schema.Missing) ObjectId('55d5df957ab71c0a5c3647bd') >>> schema.ObjectId(if_missing=None).validate(schema.Missing) None
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- if_missing()¶
Provides a
bson.ObjectIdas default
- class ming.schema.OneOf(*options, **kwargs)¶
Expects validated value to be one of
options.This is often used to validate against Enums.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- class ming.schema.ParticularScalar(**kw)¶
Specializes
Scalarto also check for a specifictype.This is usually not directly used, but its what other validators rely on to implement their behaviour.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- type = ()¶
Expected Type of the validated value.
- class ming.schema.Scalar(required=(), if_missing=())¶
Validate that a value is NOT an array or dict.
This is used to validate single values in MongoDB Documents.
- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- if_missing = None¶
- class ming.schema.SchemaItem¶
Basic Schema enforcement validation.
The
validate()method is called when a record is loaded from the DB or saved to it.It should return a “validated” object, raising a
Invalidexception if the object is invalid. If it returnsMissing, the field will be stripped from its parent object.This is just the base class for schema validation. When implementing your own schema validation for a Ming Field you probably want to subclass
FancySchemaItem.- classmethod make(field, *args, **kwargs)¶
Factory method for schemas based on a python type.
This accepts a python type as its argument and creates the appropriate
SchemaItemthat validates it.Accepted arguments are:
int - int or long
str - string or unicode
float - float, int, or long
bool - boolean value
datetime - datetime.datetime object
None - Anything
[] - Array of Anything objects
[type] - array of objects of type “type”
{ fld: type… } - dict-like object with field “fld” of type “type”
{ type: type… } - dict-like object with fields of type “type”
anything else (e.g. literal values), must match exactly
*argsand**kwargsare passed on to the specific class ofSchemaItemcreated.
- validate(d, **kw)¶
Validate an object or raise an Invalid exception.
Default implementation just raises
NotImplementedError
- class ming.schema.String(**kw)¶
Validates value is
strorunicodestring- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- type = (<class 'str'>,)¶
Expected Type of the validated value.
- class ming.schema.Value(value, **kw)¶
Checks that validated value is exactly
value- Parameters:
required (bool) – if
Trueand this field is missing, anInvalidexception will be raisedif_missing (value or callable) – provides a default value for this field if the field is missing
- _validate(value, **kw)¶
Performs actual validation.
Subclasses are expected to override this method to provide the actual validation.
The default implementation leaves the value as is.
- if_missing = None¶