dataclass_mixins

Module containing helper mixins for dataclasses.

AsDictionaryMixin

Functionality for a class’s public attributes to get cast to a dictionary.

to_dict

to_dict(ignore_none: bool = False, sort_keys: bool = True) -> dict[str, Any]

Transform public attributes of this class to dictionary.

Examples:

>>> import dataclasses
>>> from tm_devices.helpers.dataclass_mixins import AsDictionaryMixin
>>> ClassA = dataclasses.make_dataclass("A",["a","_b", "c"], bases=(AsDictionaryMixin,))
>>> foo = ClassA("public", "secret", 5)
>>> foo.to_dict()
{'a': 'public', 'c': 5}
>>> vars(foo)  # see how this differs from the builtin function vars
{'a': 'public', '_b': 'secret', 'c': 5}

AsDictionaryUseEnumNameUseCustEnumStrValueMixin

Bases: AsDictionaryMixin

flowchart LR tm_devices.helpers.dataclass_mixins.AsDictionaryUseEnumNameUseCustEnumStrValueMixin[AsDictionaryUseEnumNameUseCustEnumStrValueMixin] tm_devices.helpers.dataclass_mixins.AsDictionaryMixin[AsDictionaryMixin] tm_devices.helpers.dataclass_mixins.AsDictionaryMixin --> tm_devices.helpers.dataclass_mixins.AsDictionaryUseEnumNameUseCustEnumStrValueMixin click tm_devices.helpers.dataclass_mixins.AsDictionaryUseEnumNameUseCustEnumStrValueMixin href "" "tm_devices.helpers.dataclass_mixins.AsDictionaryUseEnumNameUseCustEnumStrValueMixin" click tm_devices.helpers.dataclass_mixins.AsDictionaryMixin href "" "tm_devices.helpers.dataclass_mixins.AsDictionaryMixin"

Format the class’s public attributes as a dictionary with string values from enums.

For Enum types, this class will use the name property.

For CustomStrEnum types, this class will use the value property.

to_dict

to_dict(ignore_none: bool = False, sort_keys: bool = True) -> dict[str, Any]

Transform public attributes of this class to dictionary.

Examples:

>>> import dataclasses
>>> from tm_devices.helpers.dataclass_mixins import AsDictionaryMixin
>>> ClassA = dataclasses.make_dataclass("A",["a","_b", "c"], bases=(AsDictionaryMixin,))
>>> foo = ClassA("public", "secret", 5)
>>> foo.to_dict()
{'a': 'public', 'c': 5}
>>> vars(foo)  # see how this differs from the builtin function vars
{'a': 'public', '_b': 'secret', 'c': 5}