class documentation

class MutableBase(object):

Known subclasses: sqlalchemy.ext.mutable.Mutable, sqlalchemy.ext.mutable.MutableComposite

View In Hierarchy

Common base class to .Mutable and .MutableComposite.
Class Method coerce Given a value, coerce it into the target type.
Class Method ​_get​_listen​_keys Given a descriptor attribute, return a set() of the attribute keys which indicate a change in the state of this attribute.
Class Method ​_listen​_on​_attribute Establish this type as a mutation listener for the given mapped descriptor.
Property ​_parents Dictionary of parent object's .InstanceState->attribute name on the parent.
@classmethod
def coerce(cls, key, value):

Given a value, coerce it into the target type.

Can be overridden by custom subclasses to coerce incoming data into a particular type.

By default, raises ValueError.

This method is called in different scenarios depending on if the parent class is of type .Mutable or of type .MutableComposite. In the case of the former, it is called for both attribute-set operations as well as during ORM loading operations. For the latter, it is only called during attribute-set operations; the mechanics of the .composite construct handle coercion during load operations.

Parameters
keystring name of the ORM-mapped attribute being set.
valuethe incoming value.
Returns
the method should return the coerced value, or raise ValueError if the coercion cannot be completed.
@classmethod
def _get_listen_keys(cls, attribute):

Given a descriptor attribute, return a set() of the attribute keys which indicate a change in the state of this attribute.

This is normally just set([attribute.key]), but can be overridden to provide for additional keys. E.g. a .MutableComposite augments this set with the attribute keys associated with the columns that comprise the composite value.

This collection is consulted in the case of intercepting the .InstanceEvents.refresh and .InstanceEvents.refresh_flush events, which pass along a list of attribute names that have been refreshed; the list is compared against this set to determine if action needs to be taken.

New in version 1.0.5.
@classmethod
def _listen_on_attribute(cls, attribute, coerce, parent_cls):
Establish this type as a mutation listener for the given mapped descriptor.
@memoized_property
_parents =

Dictionary of parent object's .InstanceState->attribute name on the parent.

This attribute is a so-called "memoized" property. It initializes itself with a new weakref.WeakKeyDictionary the first time it is accessed, returning the same object upon subsequent access.

Changed in version 1.4: the .InstanceState is now used as the key in the weak dictionary rather than the instance itself.