Enum field for Marshmallow
Project description
marshmallow-enum
Enum field for use with Marshmallow.
Installation
pip install --user marshmallow_enum
If you're on a version before 3.4, you'll also need to install enum34
.
Using The Field
To make use of the field, you must have an existing Enum:
from enum import Enum class StopLight(Enum): green = 1 yellow = 2 red = 3
Then, declare it as a field in a schema:
from marshmallow import Schema from marshmallow_enum import EnumField class TrafficStop(Schema): light_color = EnumField(StopLight)
By default, the field will load and dump based on the name given to an enum value.
schema = TrafficStop() schema.dump({'light_color': EnumField.red}).data # {'light_color': 'red'} schema.load({'light_color': 'red'}).data # {'light_color': StopLight.red}
Customizing loading and dumping behavior
To customize how an enum is serialized or deserialized, there are three options:
- Setting
by_value=True
. This will cause both dumping and loading to use the value of the enum. - Setting
load_by=EnumField.VALUE
. This will cause loading to use the value of the enum. - Setting
dump_by=EnumField.VALUE
. This will cause dumping to use the value of the enum.
If either load_by
or dump_by
are unset, they will follow from by_value
.
Additionally, there is EnumField.NAME
to be explicit about the load and dump behavior, this
is the same as leaving both by_value
and either load_by
and/or dump_by
unset.
Custom Error Message
A custom error message can be provided via the error
keyword argument. It can accept three
format values:
{input}
: The value provided to the schema field{names}
: The names of the individual enum members{values}
: The values of the individual enum members
Previously, the following inputs were also available but are deprecated and will be removed in 1.6:
{name}
{value}
{choices}
Version 1.5
Allow unicode enum values (sergeyzsg) Add support for Marshmallow 3 (svidela)
Version 1.4
- Deprecate the
{choices}
,{name}
and{value}
format keys for custom error messages - Allow configure loading and dumping independently
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size marshmallow_enum-1.5.1-py2.py3-none-any.whl (4.2 kB) | File type Wheel | Python version py2.py3 | Upload date | Hashes View |
Filename, size marshmallow-enum-1.5.1.tar.gz (4.0 kB) | File type Source | Python version None | Upload date | Hashes View |
Hashes for marshmallow_enum-1.5.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 57161ab3dbfde4f57adeb12090f39592e992b9c86d206d02f6bd03ebec60f072 |
|
MD5 | 8d7f93cbd674015b878c199b82b96585 |
|
BLAKE2-256 | c659ef3a3dc499be447098d4a89399beb869f813fee1b5a57d5d79dee2c1bf51 |