API Reference¶
- class dessinemoi.Factory(registry=NOTHING)[source]¶
-
registry:
Dict[str,FactoryRegistryEntry]¶ Dictionary holding the factory registry.
Changed in version 21.3.0: Changed type from
Dict[str, Type]toDict[str, FactoryRegistryEntry].
- property registered_types: List[str]¶
List of currently registered types, without duplicates.
Added in version 21.3.0.
- register(cls=<class 'dessinemoi._core._Missing'>, *, type_id=None, dict_constructor=None, aliases=None, overwrite_id=False, allow_lazy=True)[source]¶
If parameter
clsis passed, registerclsto the factory. Otherwise, i.e. if this method is used as a decorator, register the decorated class to the factory.Note
All arguments, except
cls, are keyword-only.- Parameters:
cls (
Any) – If set, type to register to the factory. If unset, this function returns a callable which can be used to register classes. In practice, this parameter is unset when the method is used as a class decorator. ALazyTypeinstance or a string convertible toLazyTypemay also be passed.type_id (
Optional[str]) – Identifier string used to registercls. Required ifclsis a lazy type or if it does not specify its identifier itself.dict_constructor (
Optional[str]) – Class method to be used for dictionary-based construction. IfNone, the default constructor is used.aliases (
Optional[List[str]]) – IfTrue, a given type can be registered multiple times under different IDs.overwrite_id (
bool) – IfTrue, existing IDs can be overwritten.allow_lazy (
bool) – IfFalse, force eager loading of lazy types.
- Raises:
ValueError – If
allow_aliasesisFalseandclsis already registered.ValueError – If
allow_id_overwriteisFalseandtype_idis already used to reference a type in the registry.
- Return type:
Changed in version 21.3.0: Made keyword-only.
Changed in version 21.3.0: Added
dict_constructorargument.Changed in version 22.1.0: Added
allow_lazyargument. AcceptLazyTypeand strings forcls.Changed in version 22.2.0: Renamed
allow_id_overwritetooverwrite_id. Removedallow_aliases, replaced byaliases.
- alias(type_id, alias_id, overwrite_id=False)[source]¶
Register a new alias to a registered type.
- Parameters:
type_id (
str) – ID of the aliased type.alias_id (
str) – Created alias ID.overwrite_id (
bool) – IfTrueandalias_idis already registered, the existing alias is redefined; else, aValueErroris raised.
- Raises:
ValueError – If the new alias cannot be registered, either because the target type is not registered, or because the alias exists and is protected against overwrites.
- Return type:
Added in version 22.2.0.
- get_type(type_id)[source]¶
Return the type corresponding to the requested type ID. Lazy types will be loaded.
Added in version 22.1.1.
- create(type_id, allowed_cls=None, construct=None, args=None, kwargs=None)[source]¶
Create a new instance of a registered type.
- Parameters:
type_id (
str) – ID of the type to be instantiated.allowed_cls (
Union[Type,Tuple[Type],None]) – If notNone, one or several types to which creation shall be restricted. Iftype_iddoes not reference one of these allowed types, an exception will be raised.construct (
Optional[str]) – If notNone, attempt instantiation using a class method constructor instead of the default constructor.args (
Optional[Sequence]) – A sequence of arguments to pass to the constructor of the created type.kwargs (
Optional[MutableMapping]) – A mapping of keyword arguments to passed to the constructor of the created type.
- Return type:
- Returns:
Created object.
- Raises:
ValueError – If
type_iddoes not reference a registered type.TypeError – If the requested type is not allowed.
Changed in version 21.2.0: Added
constructkeyword argument.
- convert(value=<class 'dessinemoi._core._Missing'>, *, allowed_cls=None)[source]¶
Convert a dictionary to one of the types supported by the factory.
Note
All arguments, except
selfandvalue, are keyword-only.- Parameters:
value (
MutableMapping) – Value to attempt conversion of. Ifvalueis a dictionary, the method tries to convert it to a registered type based on thetype. Ifvalueis not a dictionary, it is returned without change. Ifvalueis unset, the method returns a callable which can later be used for conversion.allowed_cls (
Union[Type,Tuple[Type],None]) – Types to restrict conversion to. If set,valuewill be checked and an exception will be raised if it does not have one of the allowed types.
- Return type:
- Returns:
Created object if
valueis a dictionary;valueotherwise.- Raises:
TypeError – If
allowed_clsis specified andvalue.typerefers to a disallowed type ortype(value)is disallowed.
Changed in version 21.3.0: Made all args keyword-only except for
value.
-
registry:
- class dessinemoi.FactoryRegistryEntry(cls, dict_constructor)[source]¶
Data class holding a
(cls: Type, dict_constructor: Optional[str])pair.clsis a type registered to a factory;dict_constructoris a string pointing to the class method constructor used by default whenFactory.convert()attempts dictionary conversion.
If
dict_constructoris set toNone, it means that the default constructor should be used.Added in version 21.3.0.
- class dessinemoi.LazyType(mod, attr)[source]¶
A lightweight data class specifying a lazily loaded type.
Added in version 22.1.0.
- property fullname¶
Fully qualified name of the object.
- classmethod from_str(value)[source]¶
Initialize a
LazyTypefrom a string representing its fully qualified name.- Parameters:
value (
str) – String representing an absolute import path to the target type.- Return type:
- Returns:
Created lazy type specification.
- Raises:
ValueError – If the
valuecannot be interpreted as a fully qualified name and, therefore, is suspected to be a relative import path.