All convclasses
functionality is exposed through a convclasses.Converter
object. Global convclasses
functions, such as convclasses.unstructure()
, use a single global converter. Changes done to this global converter, such as registering new structure
and unstructure
hooks, affect all code using the global functions.
A global converter is provided for convenience as convclasses.global_converter
. The following functions implicitly use this global converter:
convclasses.structure
convclasses.unstructure
convclasses.structure_dataclass_fromtuple
convclasses.structure_dataclass_fromdict
Changes made to the global converter will affect the behavior of these functions.
Larger applications are strongly encouraged to create and customize a different, private instance of Converter
.
To create a private converter, simply instantiate a convclasses.Converter
. Currently, a converter contains the following state:
- a registry of unstructure hooks, backed by a
singledispatch
and afunction_dispatch
. - a registry of structure hooks, backed by a different
singledispatch
andfunction_dispatch
. - a LRU cache of union disambiguation functions.
- a reference to an unstructuring strategy (either AS_DICT or AS_TUPLE).
- a
dict_factory
callable, used for creatingdicts
when dumpingdataclasses
classes using AS_DICT.