Source code for umongo.mixin

"""umongo MixinDocument"""

from .template import Implementation, Template

__all__ = (
    "MixinDocument",
    "MixinDocumentImplementation",
    "MixinDocumentTemplate",
)


[docs] class MixinDocumentTemplate(Template): """Base class to define a umongo mixin document. .. note:: Once defined, this class must be registered inside a :class:`umongo.instance.BaseInstance` to obtain it corresponding :class:`umongo.mixin.MixinDocumentImplementation`. """
MixinDocument = MixinDocumentTemplate "Shortcut to MixinDocumentTemplate"
[docs] class MixinDocumentOpts: """Configuration for an :class:`umongo.mixin.MixinDocument`. ==================== ====================== =========== attribute configurable in Meta description ==================== ====================== =========== template no Origin template of the embedded document instance no Implementation's instance ==================== ====================== =========== """ def __repr__(self): return ( f"<{self.__class__.__name__}(" f"instance={self.instance}, " f"template={self.template}, " ) def __init__(self, instance, template): self.instance = instance self.template = template
[docs] class MixinDocumentImplementation(Implementation): """Represent a mixin document once it has been implemented inside a :class:`umongo.instance.BaseInstance`. """ opts = MixinDocumentOpts(None, MixinDocumentTemplate) def __repr__(self): return f"<object MixinDocument {self.__module__}.{self.__class__.__name__}>"