-
 

marshmallow package from marshmallow repo

marshmallow

Third-Party Package

This third-party package's source repository does not contain a package manifest. Instead, its package manifest is stored in its release repository. In order to build this package from source in a Catkin workspace, please download its package manifest.

Package Summary

Tags No category tags.
Version 2.9.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/marshmallow-code/marshmallow.git
VCS Type git
VCS Version 2.9.1
Last Updated 2016-07-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A lightweight library for converting complex objects to and from simple Python datatypes.

Additional Links

Maintainers

  • AlexV

Authors

  • Steven Loria

marshmallow: simplified object serialization

Latest version

Travis-CI

Documentation

marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes.

``` {.sourceCode .python} from datetime import date from marshmallow import Schema, fields, pprint

class ArtistSchema(Schema): name = fields.Str()

class AlbumSchema(Schema): title = fields.Str() release_date = fields.Date() artist = fields.Nested(ArtistSchema())

bowie = dict(name=’David Bowie’) album = dict(artist=bowie, title=’Hunky Dory’, release_date=date(1971, 12, 17))

schema = AlbumSchema() result = schema.dump(album) pprint(result.data, indent=2)

{ ‘artist’: {‘name’: ‘David Bowie’},

‘release_date’: ‘1971-12-17’,

‘title’: ‘Hunky Dory’}

```

In short, marshmallow schemas can be used to:

  • Validate input data.
  • Deserialize input data to app-level objects.
  • Serialize app-level objects to primitive Python types. The serialized objects can then be rendered to standard formats such as JSON for use in an HTTP API.

Get It Now

$ pip install -U marshmallow

Documentation

Full documentation is available at http://marshmallow.readthedocs.io/ .

Requirements

  • Python >= 2.6 or >= 3.3

marshmallow has no external dependencies outside of the Python standard library, although python-dateutil is recommended for robust datetime deserialization.

Ecosystem

A list of marshmallow-related libraries can be found at the GitHub wiki here:

https://github.com/marshmallow-code/marshmallow/wiki/Ecosystem

License

MIT licensed. See the bundled LICENSE file for more details.

CHANGELOG

Changelog

2.9.1 (2016-07-21)

Bug fixes:

  • Fix serialization of datetime.time objects with microseconds (464{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for reporting and thanks vuonghv{.interpreted-text role=”user”} for the fix.
  • Make @validates consistent with field validator behavior: if validation fails, the field will not be included in the deserialized output (391{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for reporting and thanks @vuonghv{.interpreted-text role=”user”} for the fix.

2.9.0 (2016-07-06)

  • Decimal field coerces input values to a string before deserializing to a [decimal.Decimal]{.title-ref} object in order to avoid transformation of float values under 12 significant digits (434{.interpreted-text role=”issue”}, 435{.interpreted-text role=”issue”}). Thanks davidthornton{.interpreted-text role=”user”} for the PR.

2.8.0 (2016-06-23)

Features:

  • Allow only and exclude parameters to take nested fields, using dot-delimited syntax (e.g. only=['blog.author.email']) (402{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} and deckar01{.interpreted-text role=”user”} for the discussion and implementation.

Support:

  • Update tasks.py for compatibility with invoke>=0.13.0. Thanks deckar01{.interpreted-text role=”user”}.

2.7.3 (2016-05-05)

  • Make field.parent and field.name accessible to on_bind_field (449{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”}.

2.7.2 (2016-04-27)

No code changes in this release. This is a reupload in order to distribute an sdist for the last hotfix release. See 443{.interpreted-text role=”issue”}.

Support:

  • Update license entry in setup.py to fix RPM distributions (433{.interpreted-text role=”issue”}). Thanks rrajaravi{.interpreted-text role=”user”} for reporting.

2.7.1 (2016-04-08)

Bug fixes:

  • Only add Schemas to class registry if a class name is provided. This allows Schemas to be constructed dynamically using the type constructor without getting added to the class registry (which is useful for saving memory).

2.7.0 (2016-04-04)

Features:

  • Make context available to Nested field's on_bind_field method (408{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”} for the PR.
  • Pass through user ValidationError kwargs (418{.interpreted-text role=”issue”}). Thanks russelldavies{.interpreted-text role=”user”} for helping implement this.

Other changes:

  • Remove unused attributes root, parent, and name from SchemaABC (410{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for the PR.

2.6.1 (2016-03-17)

Bug fixes:

  • Respect [load_from]{.title-ref} when reporting errors for nested required fields (414{.interpreted-text role=”issue”}). Thanks yumike{.interpreted-text role=”user”}.

2.6.0 (2016-02-01)

Features:

  • Add partial argument to Schema.validate (379{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add equal argument to validate.Length. Thanks daniloakamine{.interpreted-text role=”user”}.
  • Collect all validation errors for each item deserialized by a List field (345{.interpreted-text role=”issue”}). Thanks maximkulkin{.interpreted-text role=”user”} for the report and the PR.

2.5.0 (2016-01-16)

Features:

  • Allow a tuple of field names to be passed as the partial argument to Schema.load (369{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add schemes argument to validate.URL (356{.interpreted-text role=”issue”}).

2.4.2 (2015-12-08)

Bug fixes:

  • Prevent duplicate error messages when validating nested collections (360{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”} for the catch and patch.

2.4.1 (2015-12-07)

Bug fixes:

  • Serializing an iterator will not drop the first item (343{.interpreted-text role=”issue”}, 353{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the patch. Thanks edgarallang{.interpreted-text role=”user”} and jmcarp{.interpreted-text role=”user”} for reporting.

2.4.0 (2015-12-06)

Features:

  • Add skip_on_field_errors parameter to validates_schema (323{.interpreted-text role=”issue”}). Thanks jjvattamattom{.interpreted-text role=”user”} for the suggestion and d-sutherland{.interpreted-text role=”user”} for the PR.

Bug fixes:

  • Fix FormattedString serialization (348{.interpreted-text role=”issue”}). Thanks acaird{.interpreted-text role=”user”} for reporting.
  • Fix @validates behavior when used when attribute is specified and strict=True (350{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

2.3.0 (2015-11-22)

Features:

  • Add dump_to parameter to fields (310{.interpreted-text role=”issue”}). Thanks ShayanArmanPercolate{.interpreted-text role=”user”} for the suggestion. Thanks franciscod{.interpreted-text role=”user”} and ewang{.interpreted-text role=”user”} for the PRs.
  • The deserialize function passed to fields.Function can optionally receive a context argument (324{.interpreted-text role=”issue”}). Thanks DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Function is optional (325{.interpreted-text role=”issue”}). Thanks again DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Method is optional (329{.interpreted-text role=”issue”}). Thanks justanr{.interpreted-text role=”user”}.

Deprecation/Removal:

  • The func argument of fields.Function has been renamed to serialize.
  • The method_name argument of fields.Method has been renamed to serialize.

func and method_name are still present for backwards-compatibility, but they will both be removed in marshmallow 3.0.

2.2.1 (2015-11-11)

Bug fixes:

  • Skip field validators for fields that aren't included in only (320{.interpreted-text role=”issue”}). Thanks carlos-alberto{.interpreted-text role=”user”} for reporting and eprikazc{.interpreted-text role=”user”} for the PR.

2.2.0 (2015-10-26)

Features:

  • Add support for partial deserialization with the partial argument to Schema and Schema.load (290{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Query and QuerySelect fields are removed.
  • Passing of strings to required and allow_none is removed. Pass the error_messages argument instead.

Support:

  • Add example of Schema inheritance in docs (225{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for the suggestion and juanrossi{.interpreted-text role=”user”} for the PR.
  • Add "Customizing Error Messages" section to custom fields docs.

2.1.3 (2015-10-18)

Bug fixes:

  • Fix serialization of collections for which [iter]{.title-ref} will modify position, e.g. Pymongo cursors (303{.interpreted-text role=”issue”}). Thanks Mise{.interpreted-text role=”user”} for the catch and patch.

2.1.2 (2015-10-14)

Bug fixes:

  • Fix passing data to schema validator when using @validates_schema(many=True) (297{.interpreted-text role=”issue”}). Thanks d-sutherland{.interpreted-text role=”user”} for reporting.
  • Fix usage of @validates with a nested field when many=True (298{.interpreted-text role=”issue”}). Thanks nelfin{.interpreted-text role=”user”} for the catch and patch.

2.1.1 (2015-10-07)

Bug fixes:

  • Constant field deserializes to its value regardless of whether its field name is present in input data (291{.interpreted-text role=”issue”}). Thanks fayazkhan{.interpreted-text role=”user”} for reporting.

2.1.0 (2015-09-30)

Features:

  • Add Dict field for arbitrary mapping data (251{.interpreted-text role=”issue”}). Thanks dwieeb{.interpreted-text role=”user”} for adding this and Dowwie{.interpreted-text role=”user”} for the suggestion.
  • Add Field.root property, which references the field's Schema.

Deprecation/Removals:

  • The extra param of Schema is deprecated. Add extra data in a post_load method instead.
  • UnmarshallingError and MarshallingError are removed.

Bug fixes:

  • Fix storing multiple schema-level validation errors (287{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the patch.
  • If missing=None on a field, allow_none will be set to True.

Other changes:

  • A List's inner field will have the list field set as its parent. Use root to access the Schema.

2.0.0 (2015-09-25)

Features:

  • Make error messages configurable at the class level and instance level (Field.default_error_messages attribute and error_messages parameter, respectively).

Deprecation/Removals:

  • Remove make_object. Use a post_load method instead (277{.interpreted-text role=”issue”}).
  • Remove the error parameter and attribute of Field.
  • Passing string arguments to required and allow_none is deprecated. Pass the error_messages argument instead. This API will be removed in version 2.2.
  • Remove Arbitrary, Fixed, and Price fields (86{.interpreted-text role=”issue”}). Use Decimal instead.
  • Remove Select / Enum fields (135{.interpreted-text role=”issue”}). Use the OneOf validator instead.

Bug fixes:

  • Fix error format for Nested fields when many=True. Thanks alexmorken{.interpreted-text role=”user”}.
  • pre_dump methods are invoked before implicit field creation. Thanks makmanalp{.interpreted-text role=”user”} for reporting.
  • Return correct "required" error message for Nested field.
  • The only argument passed to a Schema is bounded by the fields option (183{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the suggestion.

Changes from 2.0.0rc2:

  • error_handler and accessor options are replaced with the handle_error and get_attribute methods 284{.interpreted-text role=”issue”}.
  • Remove marshmallow.compat.plain_function since it is no longer used.
  • Non-collection values are invalid input for List field (231{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.
  • Bug fix: Prevent infinite loop when validating a required, self-nested field. Thanks Bachmann1234{.interpreted-text role=”user”} for the fix.

2.0.0rc2 (2015-09-16)

Deprecation/Removals:

  • make_object is deprecated. Use a post_load method instead (277{.interpreted-text role=”issue”}). This method will be removed in the final 2.0 release.
  • Schema.accessor and Schema.error_handler decorators are deprecated. Define the accessor and error_handler class Meta options instead.

Bug fixes:

  • Allow non-field names to be passed to ValidationError (273{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the catch and patch.

Changes from 2.0.0rc1:

  • The raw parameter of the pre_*, post_*, validates_schema decorators was renamed to pass_many (276{.interpreted-text role=”issue”}).
  • Add pass_original parameter to post_load and post_dump (216{.interpreted-text role=”issue”}).
  • Methods decorated with the pre_*, post_*, and validates_* decorators must be instance methods. Class methods and instance methods are not supported at this time.

2.0.0rc1 (2015-09-13)

Features:

  • Backwards-incompatible: fields.Field._deserialize now takes attr and data as arguments (172{.interpreted-text role=”issue”}). Thanks alexmic{.interpreted-text role=”user”} and kevinastone{.interpreted-text role=”user”} for the suggestion.
  • Allow a Field's attribute to be modified during deserialization (266{.interpreted-text role=”issue”}). Thanks floqqi{.interpreted-text role=”user”}.
  • Allow partially-valid data to be returned for Nested fields (269{.interpreted-text role=”issue”}). Thanks jomag{.interpreted-text role=”user”} for the suggestion.
  • Add Schema.on_bind_field hook which allows a Schema to modify its fields when they are bound.
  • Stricter validation of string, boolean, and number fields (231{.interpreted-text role=”issue”}). Thanks touilleMan{.interpreted-text role=”user”} for the suggestion.
  • Improve consistency of error messages.

Deprecation/Removals:

  • Schema.validator, Schema.preprocessor, and Schema.data_handler are removed. Use validates_schema, pre_load, and post_dump instead.
  • QuerySelect and QuerySelectList are deprecated (227{.interpreted-text role=”issue”}). These fields will be removed in version 2.1.
  • utils.get_callable_name is removed.

Bug fixes:

  • If a date format string is passed to a DateTime field, it is always used for deserialization (248{.interpreted-text role=”issue”}). Thanks bartaelterman{.interpreted-text role=”user”} and praveen-p{.interpreted-text role=”user”}.

Support:

  • Documentation: Add "Using Context" section to "Extending Schemas" page (224{.interpreted-text role=”issue”}).
  • Include tests and docs in release tarballs (201{.interpreted-text role=”issue”}).
  • Test against Python 3.5.

2.0.0b5 (2015-08-23)

Features:

  • If a field corresponds to a callable attribute, it will be called upon serialization. Thanks alexmorken{.interpreted-text role=”user”}.
  • Add load_only and dump_only class Meta options. Thanks kelvinhammond{.interpreted-text role=”user”}.
  • If a Nested field is required, recursively validate any required fields in the nested schema (235{.interpreted-text role=”issue”}). Thanks max-orhai{.interpreted-text role=”user”}.
  • Improve error message if a list of dicts is not passed to a Nested field for which many=True. Thanks again max-orhai{.interpreted-text role=”user”}.

Bug fixes:

  • [make_object]{.title-ref} is only called after all validators and postprocessors have finished (253{.interpreted-text role=”issue”}). Thanks sunsongxp{.interpreted-text role=”user”} for reporting.
  • If an invalid type is passed to Schema and strict=False, store a _schema error in the errors dict rather than raise an exception (261{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

Other changes:

  • make_object is only called when input data are completely valid (243{.interpreted-text role=”issue”}). Thanks kissgyorgy{.interpreted-text role=”user”} for reporting.
  • Change default error messages for URL and Email validators so that they don't include user input (255{.interpreted-text role=”issue”}).
  • Email validator permits email addresses with non-ASCII characters, as per RFC 6530 (221{.interpreted-text role=”issue”}). Thanks lextoumbourou{.interpreted-text role=”user”} for reporting and mwstobo{.interpreted-text role=”user”} for sending the patch.

2.0.0b4 (2015-07-07)

Features:

  • List field respects the attribute argument of the inner field. Thanks jmcarp{.interpreted-text role=”user”}.
  • The container field List field has access to its parent Schema via its parent attribute. Thanks again jmcarp{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Legacy validator functions have been removed (73{.interpreted-text role=”issue”}). Use the class-based validators in marshmallow.validate instead.

Bug fixes:

  • fields.Nested correctly serializes nested sets (233{.interpreted-text role=”issue”}). Thanks traut{.interpreted-text role=”user”}.

Changes from 2.0.0b3:

  • If load_from is used on deserialization, the value of load_from is used as the key in the errors dict (232{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”}.

2.0.0b3 (2015-06-14)

Features:

  • Add marshmallow.validates_schema decorator for defining schema-level validators (116{.interpreted-text role=”issue”}).
  • Add marshmallow.validates decorator for defining field validators as Schema methods (116{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Performance improvements.
  • Defining __marshallable__ on complex objects is no longer necessary.
  • Add fields.Constant. Thanks kevinastone{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Remove skip_missing class Meta option. By default, missing inputs are excluded from serialized output (211{.interpreted-text role=”issue”}).
  • Remove optional context parameter that gets passed to methods for Method fields.
  • Schema.validator is deprecated. Use marshmallow.validates_schema instead.
  • utils.get_func_name is removed. Use utils.get_callable_name instead.

Bug fixes:

  • Fix serializing values from keyed tuple types (regression of 28{.interpreted-text role=”issue”}). Thanks makmanalp{.interpreted-text role=”user”} for reporting.

Other changes:

  • Remove unnecessary call to utils.get_value for Function and Method fields (208{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”}.
  • Serializing a collection without passing many=True will not result in an error. Be very careful to pass the many argument when necessary.

Support:

  • Documentation: Update Flask and Peewee examples. Update Quickstart.

Changes from 2.0.0b2:

  • Boolean field serializes None to None, for consistency with other fields (213{.interpreted-text role=”issue”}). Thanks cmanallen{.interpreted-text role=”user”} for reporting.
  • Bug fix: load_only fields do not get validated during serialization.
  • Implicit passing of original, raw data to Schema validators is removed. Use @marshmallow.validates_schema(pass_original=True) instead.

2.0.0b2 (2015-05-03)

Features:

  • Add useful __repr__ methods to validators (204{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Backwards-incompatible: By default, NaN, Infinity, and -Infinity are invalid values for fields.Decimal. Pass allow_nan=True to allow these values. Thanks philtay{.interpreted-text role=”user”}.

Changes from 2.0.0b1:

  • Fix serialization of None for [Time]{.title-ref}, [TimeDelta]{.title-ref}, and [Date]{.title-ref} fields (a regression introduced in 2.0.0a1).

Includes bug fixes from 1.2.6.

2.0.0b1 (2015-04-26)

Features:

  • Errored fields will not appear in (de)serialized output dictionaries (153{.interpreted-text role=”issue”}, 202{.interpreted-text role=”issue”}).
  • Instantiate OPTIONS_CLASS in SchemaMeta. This makes Schema.opts available in metaclass methods. It also causes validation to occur earlier (upon Schema class declaration rather than instantiation).
  • Add SchemaMeta.get_declared_fields class method to support adding additional declared fields.

Deprecation/Removals:

  • Remove allow_null parameter of fields.Nested (203{.interpreted-text role=”issue”}).

Changes from 2.0.0a1:

  • Fix serialization of [None]{.title-ref} for fields.Email.

2.0.0a1 (2015-04-25)

Features:

  • Backwards-incompatible: When many=True, the errors dictionary returned by dump and load will be keyed on the indices of invalid items in the (de)serialized collection (75{.interpreted-text role=”issue”}). Add index_errors=False on a Schema's class Meta options to disable this behavior.
  • Backwards-incompatible: By default, fields will raise a ValidationError if the input is None. The allow_none parameter can override this behavior.
  • Backwards-incompatible: A Field's default parameter is only used if explicitly set and the field's value is missing in the input to [Schema.dump]{.title-ref}. If not set, the key will not be present in the serialized output for missing values . This is the behavior for all fields. fields.Str no longer defaults to '', fields.Int no longer defaults to 0, etc. (199{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the feedback.
  • In strict mode, a ValidationError is raised. Error messages are accessed via the ValidationError's messages attribute (128{.interpreted-text role=”issue”}).
  • Add allow_none parameter to fields.Field. If False (the default), validation fails when the field's value is None (76{.interpreted-text role=”issue”}, 111{.interpreted-text role=”issue”}). If allow_none is True, None is considered valid and will deserialize to None.
  • Schema-level validators can store error messages for multiple fields (118{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for the suggestion.
  • Add pre_load, post_load, pre_dump, and post_dump Schema method decorators for defining pre- and post- processing routines (153{.interpreted-text role=”issue”}, 179{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”}, taion{.interpreted-text role=”user”}, and jmcarp{.interpreted-text role=”user”} for the suggestions and feedback. Thanks taion{.interpreted-text role=”user”} for the implementation.
  • Error message for required validation is configurable. (78{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for the suggestion. Thanks 0xDCA{.interpreted-text role=”user”} for the implementation.
  • Add load_from parameter to fields (125{.interpreted-text role=”issue”}). Thanks hakjoon{.interpreted-text role=”user”}.
  • Add load_only and dump_only parameters to fields (61{.interpreted-text role=”issue”}, 87{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add [missing]{.title-ref} parameter to fields (115{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Schema validators can take an optional raw_data argument which contains raw input data, incl. data not specified in the schema (127{.interpreted-text role=”issue”}). Thanks ryanlowe0{.interpreted-text role=”user”}.
  • Add validate.OneOf (135{.interpreted-text role=”issue”}) and validate.ContainsOnly (149{.interpreted-text role=”issue”}) validators. Thanks philtay{.interpreted-text role=”user”}.
  • Error messages for validators can be interpolated with [{input}]{.title-ref} and other values (depending on the validator).
  • fields.TimeDelta always serializes to an integer value in order to avoid rounding errors (105{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add include class Meta option to support field names which are Python keywords (139{.interpreted-text role=”issue”}). Thanks nickretallack{.interpreted-text role=”user”} for the suggestion.
  • exclude parameter is respected when used together with only parameter (165{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the catch and patch.
  • fields.List works as expected with generators and sets (185{.interpreted-text role=”issue”}). Thanks sergey-aganezov-jr{.interpreted-text role=”user”}.

Deprecation/Removals:

  • MarshallingError and UnmarshallingError error are deprecated in favor of a single ValidationError (160{.interpreted-text role=”issue”}).
  • context argument passed to Method fields is deprecated. Use self.context instead (184{.interpreted-text role=”issue”}).
  • Remove ForcedError.
  • Remove support for generator functions that yield validators (74{.interpreted-text role=”issue”}). Plain generators of validators are still supported.
  • The Select/Enum field is deprecated in favor of using [validate.OneOf]{.title-ref} validator (135{.interpreted-text role=”issue”}).
  • Remove legacy, pre-1.0 API (Schema.data and Schema.errors properties) (73{.interpreted-text role=”issue”}).
  • Remove null value.

Other changes:

  • Marshaller, Unmarshaller were moved to marshmallow.marshalling. These should be considered private API (129{.interpreted-text role=”issue”}).
  • Make allow_null=True the default for Nested fields. This will make None serialize to None rather than a dictionary with empty values (132{.interpreted-text role=”issue”}). Thanks nickrellack{.interpreted-text role=”user”} for the suggestion.

1.2.6 (2015-05-03)

Bug fixes:

  • Fix validation error message for fields.Decimal.
  • Allow error message for fields.Boolean to be customized with the error parameter (like other fields).

1.2.5 (2015-04-25)

Bug fixes:

  • Fix validation of invalid types passed to a Nested field when many=True (188{.interpreted-text role=”issue”}). Thanks juanrossi{.interpreted-text role=”user”} for reporting.

Support:

  • Fix pep8 dev dependency for flake8. Thanks taion{.interpreted-text role=”user”}.

1.2.4 (2015-03-22)

Bug fixes:

  • Fix behavior of as_string on fields.Integer (173{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”} for the catch and patch.

Other changes:

  • Remove dead code from fields.Field. Thanks taion{.interpreted-text role=”user”}.

Support:

  • Correction to _postprocess method in docs. Thanks again taion{.interpreted-text role=”user”}.

1.2.3 (2015-03-15)

Bug fixes:

  • Fix inheritance of ordered class Meta option (162{.interpreted-text role=”issue”}). Thanks stephenfin{.interpreted-text role=”user”} for reporting.

1.2.2 (2015-02-23)

Bug fixes:

  • Fix behavior of skip_missing and accessor options when many=True (137{.interpreted-text role=”issue”}). Thanks 3rdcycle{.interpreted-text role=”user”}.
  • Fix bug that could cause an AttributeError when nesting schemas with schema-level validators (144{.interpreted-text role=”issue”}). Thanks vovanbo{.interpreted-text role=”user”} for reporting.

1.2.1 (2015-01-11)

Bug fixes:

  • A Schema's error_handler--if defined--will execute if Schema.validate returns validation errors (121{.interpreted-text role=”issue”}).
  • Deserializing [None]{.title-ref} returns [None]{.title-ref} rather than raising an AttributeError (123{.interpreted-text role=”issue”}). Thanks RealSalmon{.interpreted-text role=”user”} for the catch and patch.

1.2.0 (2014-12-22)

Features:

  • Add QuerySelect and QuerySelectList fields (84{.interpreted-text role=”issue”}).
  • Convert validators in marshmallow.validate into class-based callables to make them easier to use when declaring fields (85{.interpreted-text role=”issue”}).
  • Add Decimal field which is safe to use when dealing with precise numbers (86{.interpreted-text role=”issue”}).

Thanks philtay{.interpreted-text role=”user”} for these contributions.

Bug fixes:

  • Date fields correctly deserializes to a datetime.date object when python-dateutil is not installed (79{.interpreted-text role=”issue”}). Thanks malexer{.interpreted-text role=”user”} for the catch and patch.
  • Fix bug that raised an AttributeError when using a class-based validator.
  • Fix as_string behavior of Number fields when serializing to default value.
  • Deserializing None or the empty string with either a DateTime, Date, Time or TimeDelta results in the correct unmarshalling errors (96{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix error handling when deserializing invalid UUIDs (106{.interpreted-text role=”issue”}). Thanks vesauimonen{.interpreted-text role=”user”} for the catch and patch.
  • Schema.loads correctly defaults to use the value of self.many rather than defaulting to False (108{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”} for the catch and patch.
  • Validators, data handlers, and preprocessors are no longer shared between schema subclasses (88{.interpreted-text role=”issue”}). Thanks amikholap{.interpreted-text role=”user”} for reporting.
  • Fix error handling when passing a dict or list to a ValidationError (110{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for reporting.

Deprecation:

  • The validator functions in the validate module are deprecated in favor of the class-based validators (85{.interpreted-text role=”issue”}).
  • The Arbitrary, Price, and Fixed fields are deprecated in favor of the Decimal field (86{.interpreted-text role=”issue”}).

Support:

  • Update docs theme.
  • Update contributing docs (77{.interpreted-text role=”issue”}).
  • Fix namespacing example in "Extending Schema" docs. Thanks Ch00k{.interpreted-text role=”user”}.
  • Exclude virtualenv directories from syntax checking (99{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”}.

1.1.0 (2014-12-02)

Features:

  • Add Schema.validate method which validates input data against a schema. Similar to Schema.load, but does not call make_object and only returns the errors dictionary.
  • Add several validation functions to the validate module. Thanks philtay{.interpreted-text role=”user”}.
  • Store field name and instance on exceptions raised in strict mode.

Bug fixes:

  • Fix serializing dictionaries when field names are methods of dict (e.g. "items"). Thanks rozenm{.interpreted-text role=”user”} for reporting.
  • If a Nested field is passed many=True, None serializes to an empty list. Thanks nickretallack{.interpreted-text role=”user”} for reporting.
  • Fix behavior of many argument passed to dump and load. Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix skip_missing behavior for String and List fields. Thanks malexer{.interpreted-text role=”user”} for reporting.
  • Fix compatibility with python-dateutil 2.3.
  • More consistent error messages across DateTime, TimeDelta, Date, and Time fields.

Support:

  • Update Flask and Peewee examples.

1.0.1 (2014-11-18)

Hotfix release.

  • Ensure that errors dictionary is correctly cleared on each call to Schema.dump and Schema.load.

1.0.0 (2014-11-16)

Adds new features, speed improvements, better error handling, and updated documentation.

  • Add skip_missing class Meta option.
  • A field's default may be a callable.
  • Allow accessor function to be configured via the Schema.accessor decorator or the __accessor__ class member.
  • URL and Email fields are validated upon serialization.
  • dump and load can receive the many argument.
  • Move a number of utility functions from fields.py to utils.py.
  • More useful repr for Field classes.
  • If a field's default is fields.missing and its serialized value is None, it will not be included in the final serialized result.
  • Schema.dumps no longer coerces its result to a binary string on Python 3.
  • Backwards-incompatible: Schema output is no longer an OrderedDict by default. If you want ordered field output, you must explicitly set the ordered option to True.
  • Backwards-incompatible: [error]{.title-ref} parameter of the [Field]{.title-ref} constructor is deprecated. Raise a [ValidationError]{.title-ref} instead.
  • Expanded test coverage.
  • Updated docs.

1.0.0-a (2014-10-19)

Major reworking and simplification of the public API, centered around support for deserialization, improved validation, and a less stateful Schema class.

  • Rename Serializer to Schema.
  • Support for deserialization.
  • Use the Schema.dump and Schema.load methods for serializing and deserializing, respectively.
  • Backwards-incompatible: Remove Serializer.json and Serializer.to_json. Use Schema.dumps instead.
  • Reworked fields interface.
  • Backwards-incompatible: Field classes implement _serialize and _deserialize methods. serialize and deserialize comprise the public API for a Field. Field.format and Field.output have been removed.
  • Add exceptions.ForcedError which allows errors to be raised during serialization (instead of storing errors in the errors dict).
  • Backwards-incompatible: DateTime field serializes to ISO8601 format by default (instead of RFC822).
  • Backwards-incompatible: Remove Serializer.factory method. It is no longer necessary with the dump method.
  • Backwards-incompatible: Allow nesting a serializer within itself recursively. Use exclude or only to prevent infinite recursion.
  • Backwards-incompatible: Multiple errors can be stored for a single field. The errors dictionary returned by load and dump have lists of error messages keyed by field name.
  • Remove validated decorator. Validation occurs within Field methods.
  • Function field raises a ValueError if an uncallable object is passed to its constructor.
  • Nested fields inherit context from their parent.
  • Add Schema.preprocessor and Schema.validator decorators for registering preprocessing and schema-level validation functions respectively.
  • Custom error messages can be specified by raising a ValidationError within a validation function.
  • Extra keyword arguments passed to a Field are stored as metadata.
  • Fix ordering of field output.
  • Fix behavior of the required parameter on Nested fields.
  • Fix serializing keyed tuple types (e.g. namedtuple) with class Meta options.
  • Fix default value for Fixed and Price fields.
  • Fix serialization of binary strings.
  • Schemas can inherit fields from non-Schema base classes (e.g. mixins). Also, fields are inherited according to the MRO (rather than recursing over base classes). Thanks jmcarp{.interpreted-text role=”user”}.
  • Add Str, Bool, and Int field class aliases.

0.7.0 (2014-06-22)

  • Add Serializer.error_handler decorator that registers a custom error handler.
  • Add Serializer.data_handler decorator that registers data post-processing callbacks.
  • Backwards-incompatible: process_data method is deprecated. Use the data_handler decorator instead.
  • Fix bug that raised error when passing extra data together with many=True. Thanks buttsicles{.interpreted-text role=”user”} for reporting.
  • If required=True validation is violated for a given Field, it will raise an error message that is different from the message specified by the error argument. Thanks asteinlein{.interpreted-text role=”user”}.
  • More generic error message raised when required field is missing.
  • validated decorator should only wrap a Field class's output method.

0.6.0 (2014-06-03)

  • Fix bug in serializing keyed tuple types, e.g. namedtuple and KeyedTuple.
  • Nested field can load a serializer by its class name as a string. This makes it easier to implement 2-way nesting.
  • Make Serializer.data override-able.

0.5.5 (2014-05-02)

  • Add Serializer.factory for creating a factory function that returns a Serializer instance.
  • MarshallingError stores its underlying exception as an instance variable. This is useful for inspecting errors.
  • fields.Select is aliased to fields.Enum.
  • Add fields.__all__ and marshmallow.__all__ so that the modules can be more easily extended.
  • Expose Serializer.OPTIONS_CLASS as a class variable so that options defaults can be overridden.
  • Add Serializer.process_data hook that allows subclasses to manipulate the final output data.

0.5.4 (2014-04-17)

  • Add json_module class Meta option.
  • Add required option to fields . Thanks DeaconDesperado{.interpreted-text role=”user”}.
  • Tested on Python 3.4 and PyPy.

0.5.3 (2014-03-02)

  • Fix Integer field default. It is now 0 instead of 0.0. Thanks kalasjocke{.interpreted-text role=”user”}.
  • Add context param to Serializer. Allows accessing arbitrary objects in Function and Method fields.
  • Function and Method fields raise MarshallingError if their argument is uncallable.

0.5.2 (2014-02-10)

  • Enable custom field validation via the validate parameter.
  • Add utils.from_rfc for parsing RFC datestring to Python datetime object.

0.5.1 (2014-02-02)

  • Avoid unnecessary attribute access in utils.to_marshallable_type for improved performance.
  • Fix RFC822 formatting for localized datetimes.

0.5.0 (2013-12-29)

  • Can customize validation error messages by passing the error parameter to a field.
  • Backwards-incompatible: Rename fields.NumberField -> fields.Number.
  • Add fields.Select. Thanks ecarreras{.interpreted-text role=”user”}.
  • Support nesting a Serializer within itself by passing "self" into fields.Nested (only up to depth=1).
  • Backwards-incompatible: No implicit serializing of collections. Must set many=True if serializing to a list. This ensures that marshmallow handles singular objects correctly, even if they are iterable.
  • If Nested field only parameter is a field name, only return a single value for the nested object (instead of a dict) or a flat list of values.
  • Improved performance and stability.

0.4.1 (2013-12-01)

  • An object's __marshallable__ method, if defined, takes precedence over __getitem__.
  • Generator expressions can be passed to a serializer.
  • Better support for serializing list-like collections (e.g. ORM querysets).
  • Other minor bugfixes.

0.4.0 (2013-11-24)

  • Add additional [class Meta]{.title-ref} option.
  • Add dateformat [class Meta]{.title-ref} option.
  • Support for serializing UUID, date, time, and timedelta objects.
  • Remove Serializer.to_data method. Just use Serialize.data property.
  • String field defaults to empty string instead of None.
  • Backwards-incompatible: isoformat and rfcformat functions moved to utils.py.
  • Backwards-incompatible: Validation functions moved to validate.py.
  • Backwards-incompatible: Remove types.py.
  • Reorder parameters to DateTime field (first parameter is dateformat).
  • Ensure that to_json returns bytestrings.
  • Fix bug with including an object property in fields Meta option.
  • Fix bug with passing None to a serializer.

0.3.1 (2013-11-16)

  • Fix bug with serializing dictionaries.
  • Fix error raised when serializing empty list.
  • Add only and exclude parameters to Serializer constructor.
  • Add strict parameter and option: causes Serializer to raise an error if invalid data are passed in, rather than storing errors.
  • Updated Flask + SQLA example in docs.

0.3.0 (2013-11-14)

  • Declaring Serializers just got easier. The class Meta paradigm allows you to specify fields more concisely. Can specify fields and exclude options.
  • Allow date formats to be changed by passing format parameter to DateTime field constructor. Can either be "rfc" (default), "iso", or a date format string.
  • More useful error message when declaring fields as classes (instead of an instance, which is the correct usage).
  • Rename MarshallingException -> MarshallingError.
  • Rename marshmallow.core -> marshmallow.serializer.

0.2.1 (2013-11-12)

  • Allow prefixing field names.
  • Fix storing errors on Nested Serializers.
  • Python 2.6 support.

0.2.0 (2013-11-11)

  • Field-level validation.
  • Add fields.Method.
  • Add fields.Function.
  • Allow binding of extra data to a serialized object by passing the extra param when initializing a Serializer.
  • Add relative paramater to fields.Url that allows for relative URLs.

0.1.0 (2013-11-10)

  • First release.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged marshmallow at Robotics Stack Exchange

marshmallow package from marshmallow repo

marshmallow

Third-Party Package

This third-party package's source repository does not contain a package manifest. Instead, its package manifest is stored in its release repository. In order to build this package from source in a Catkin workspace, please download its package manifest.

Package Summary

Tags No category tags.
Version 2.9.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/marshmallow-code/marshmallow.git
VCS Type git
VCS Version 2.9.1
Last Updated 2016-07-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A lightweight library for converting complex objects to and from simple Python datatypes.

Additional Links

Maintainers

  • AlexV

Authors

  • Steven Loria

marshmallow: simplified object serialization

Latest version

Travis-CI

Documentation

marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes.

``` {.sourceCode .python} from datetime import date from marshmallow import Schema, fields, pprint

class ArtistSchema(Schema): name = fields.Str()

class AlbumSchema(Schema): title = fields.Str() release_date = fields.Date() artist = fields.Nested(ArtistSchema())

bowie = dict(name=’David Bowie’) album = dict(artist=bowie, title=’Hunky Dory’, release_date=date(1971, 12, 17))

schema = AlbumSchema() result = schema.dump(album) pprint(result.data, indent=2)

{ ‘artist’: {‘name’: ‘David Bowie’},

‘release_date’: ‘1971-12-17’,

‘title’: ‘Hunky Dory’}

```

In short, marshmallow schemas can be used to:

  • Validate input data.
  • Deserialize input data to app-level objects.
  • Serialize app-level objects to primitive Python types. The serialized objects can then be rendered to standard formats such as JSON for use in an HTTP API.

Get It Now

$ pip install -U marshmallow

Documentation

Full documentation is available at http://marshmallow.readthedocs.io/ .

Requirements

  • Python >= 2.6 or >= 3.3

marshmallow has no external dependencies outside of the Python standard library, although python-dateutil is recommended for robust datetime deserialization.

Ecosystem

A list of marshmallow-related libraries can be found at the GitHub wiki here:

https://github.com/marshmallow-code/marshmallow/wiki/Ecosystem

License

MIT licensed. See the bundled LICENSE file for more details.

CHANGELOG

Changelog

2.9.1 (2016-07-21)

Bug fixes:

  • Fix serialization of datetime.time objects with microseconds (464{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for reporting and thanks vuonghv{.interpreted-text role=”user”} for the fix.
  • Make @validates consistent with field validator behavior: if validation fails, the field will not be included in the deserialized output (391{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for reporting and thanks @vuonghv{.interpreted-text role=”user”} for the fix.

2.9.0 (2016-07-06)

  • Decimal field coerces input values to a string before deserializing to a [decimal.Decimal]{.title-ref} object in order to avoid transformation of float values under 12 significant digits (434{.interpreted-text role=”issue”}, 435{.interpreted-text role=”issue”}). Thanks davidthornton{.interpreted-text role=”user”} for the PR.

2.8.0 (2016-06-23)

Features:

  • Allow only and exclude parameters to take nested fields, using dot-delimited syntax (e.g. only=['blog.author.email']) (402{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} and deckar01{.interpreted-text role=”user”} for the discussion and implementation.

Support:

  • Update tasks.py for compatibility with invoke>=0.13.0. Thanks deckar01{.interpreted-text role=”user”}.

2.7.3 (2016-05-05)

  • Make field.parent and field.name accessible to on_bind_field (449{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”}.

2.7.2 (2016-04-27)

No code changes in this release. This is a reupload in order to distribute an sdist for the last hotfix release. See 443{.interpreted-text role=”issue”}.

Support:

  • Update license entry in setup.py to fix RPM distributions (433{.interpreted-text role=”issue”}). Thanks rrajaravi{.interpreted-text role=”user”} for reporting.

2.7.1 (2016-04-08)

Bug fixes:

  • Only add Schemas to class registry if a class name is provided. This allows Schemas to be constructed dynamically using the type constructor without getting added to the class registry (which is useful for saving memory).

2.7.0 (2016-04-04)

Features:

  • Make context available to Nested field's on_bind_field method (408{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”} for the PR.
  • Pass through user ValidationError kwargs (418{.interpreted-text role=”issue”}). Thanks russelldavies{.interpreted-text role=”user”} for helping implement this.

Other changes:

  • Remove unused attributes root, parent, and name from SchemaABC (410{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for the PR.

2.6.1 (2016-03-17)

Bug fixes:

  • Respect [load_from]{.title-ref} when reporting errors for nested required fields (414{.interpreted-text role=”issue”}). Thanks yumike{.interpreted-text role=”user”}.

2.6.0 (2016-02-01)

Features:

  • Add partial argument to Schema.validate (379{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add equal argument to validate.Length. Thanks daniloakamine{.interpreted-text role=”user”}.
  • Collect all validation errors for each item deserialized by a List field (345{.interpreted-text role=”issue”}). Thanks maximkulkin{.interpreted-text role=”user”} for the report and the PR.

2.5.0 (2016-01-16)

Features:

  • Allow a tuple of field names to be passed as the partial argument to Schema.load (369{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add schemes argument to validate.URL (356{.interpreted-text role=”issue”}).

2.4.2 (2015-12-08)

Bug fixes:

  • Prevent duplicate error messages when validating nested collections (360{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”} for the catch and patch.

2.4.1 (2015-12-07)

Bug fixes:

  • Serializing an iterator will not drop the first item (343{.interpreted-text role=”issue”}, 353{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the patch. Thanks edgarallang{.interpreted-text role=”user”} and jmcarp{.interpreted-text role=”user”} for reporting.

2.4.0 (2015-12-06)

Features:

  • Add skip_on_field_errors parameter to validates_schema (323{.interpreted-text role=”issue”}). Thanks jjvattamattom{.interpreted-text role=”user”} for the suggestion and d-sutherland{.interpreted-text role=”user”} for the PR.

Bug fixes:

  • Fix FormattedString serialization (348{.interpreted-text role=”issue”}). Thanks acaird{.interpreted-text role=”user”} for reporting.
  • Fix @validates behavior when used when attribute is specified and strict=True (350{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

2.3.0 (2015-11-22)

Features:

  • Add dump_to parameter to fields (310{.interpreted-text role=”issue”}). Thanks ShayanArmanPercolate{.interpreted-text role=”user”} for the suggestion. Thanks franciscod{.interpreted-text role=”user”} and ewang{.interpreted-text role=”user”} for the PRs.
  • The deserialize function passed to fields.Function can optionally receive a context argument (324{.interpreted-text role=”issue”}). Thanks DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Function is optional (325{.interpreted-text role=”issue”}). Thanks again DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Method is optional (329{.interpreted-text role=”issue”}). Thanks justanr{.interpreted-text role=”user”}.

Deprecation/Removal:

  • The func argument of fields.Function has been renamed to serialize.
  • The method_name argument of fields.Method has been renamed to serialize.

func and method_name are still present for backwards-compatibility, but they will both be removed in marshmallow 3.0.

2.2.1 (2015-11-11)

Bug fixes:

  • Skip field validators for fields that aren't included in only (320{.interpreted-text role=”issue”}). Thanks carlos-alberto{.interpreted-text role=”user”} for reporting and eprikazc{.interpreted-text role=”user”} for the PR.

2.2.0 (2015-10-26)

Features:

  • Add support for partial deserialization with the partial argument to Schema and Schema.load (290{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Query and QuerySelect fields are removed.
  • Passing of strings to required and allow_none is removed. Pass the error_messages argument instead.

Support:

  • Add example of Schema inheritance in docs (225{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for the suggestion and juanrossi{.interpreted-text role=”user”} for the PR.
  • Add "Customizing Error Messages" section to custom fields docs.

2.1.3 (2015-10-18)

Bug fixes:

  • Fix serialization of collections for which [iter]{.title-ref} will modify position, e.g. Pymongo cursors (303{.interpreted-text role=”issue”}). Thanks Mise{.interpreted-text role=”user”} for the catch and patch.

2.1.2 (2015-10-14)

Bug fixes:

  • Fix passing data to schema validator when using @validates_schema(many=True) (297{.interpreted-text role=”issue”}). Thanks d-sutherland{.interpreted-text role=”user”} for reporting.
  • Fix usage of @validates with a nested field when many=True (298{.interpreted-text role=”issue”}). Thanks nelfin{.interpreted-text role=”user”} for the catch and patch.

2.1.1 (2015-10-07)

Bug fixes:

  • Constant field deserializes to its value regardless of whether its field name is present in input data (291{.interpreted-text role=”issue”}). Thanks fayazkhan{.interpreted-text role=”user”} for reporting.

2.1.0 (2015-09-30)

Features:

  • Add Dict field for arbitrary mapping data (251{.interpreted-text role=”issue”}). Thanks dwieeb{.interpreted-text role=”user”} for adding this and Dowwie{.interpreted-text role=”user”} for the suggestion.
  • Add Field.root property, which references the field's Schema.

Deprecation/Removals:

  • The extra param of Schema is deprecated. Add extra data in a post_load method instead.
  • UnmarshallingError and MarshallingError are removed.

Bug fixes:

  • Fix storing multiple schema-level validation errors (287{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the patch.
  • If missing=None on a field, allow_none will be set to True.

Other changes:

  • A List's inner field will have the list field set as its parent. Use root to access the Schema.

2.0.0 (2015-09-25)

Features:

  • Make error messages configurable at the class level and instance level (Field.default_error_messages attribute and error_messages parameter, respectively).

Deprecation/Removals:

  • Remove make_object. Use a post_load method instead (277{.interpreted-text role=”issue”}).
  • Remove the error parameter and attribute of Field.
  • Passing string arguments to required and allow_none is deprecated. Pass the error_messages argument instead. This API will be removed in version 2.2.
  • Remove Arbitrary, Fixed, and Price fields (86{.interpreted-text role=”issue”}). Use Decimal instead.
  • Remove Select / Enum fields (135{.interpreted-text role=”issue”}). Use the OneOf validator instead.

Bug fixes:

  • Fix error format for Nested fields when many=True. Thanks alexmorken{.interpreted-text role=”user”}.
  • pre_dump methods are invoked before implicit field creation. Thanks makmanalp{.interpreted-text role=”user”} for reporting.
  • Return correct "required" error message for Nested field.
  • The only argument passed to a Schema is bounded by the fields option (183{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the suggestion.

Changes from 2.0.0rc2:

  • error_handler and accessor options are replaced with the handle_error and get_attribute methods 284{.interpreted-text role=”issue”}.
  • Remove marshmallow.compat.plain_function since it is no longer used.
  • Non-collection values are invalid input for List field (231{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.
  • Bug fix: Prevent infinite loop when validating a required, self-nested field. Thanks Bachmann1234{.interpreted-text role=”user”} for the fix.

2.0.0rc2 (2015-09-16)

Deprecation/Removals:

  • make_object is deprecated. Use a post_load method instead (277{.interpreted-text role=”issue”}). This method will be removed in the final 2.0 release.
  • Schema.accessor and Schema.error_handler decorators are deprecated. Define the accessor and error_handler class Meta options instead.

Bug fixes:

  • Allow non-field names to be passed to ValidationError (273{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the catch and patch.

Changes from 2.0.0rc1:

  • The raw parameter of the pre_*, post_*, validates_schema decorators was renamed to pass_many (276{.interpreted-text role=”issue”}).
  • Add pass_original parameter to post_load and post_dump (216{.interpreted-text role=”issue”}).
  • Methods decorated with the pre_*, post_*, and validates_* decorators must be instance methods. Class methods and instance methods are not supported at this time.

2.0.0rc1 (2015-09-13)

Features:

  • Backwards-incompatible: fields.Field._deserialize now takes attr and data as arguments (172{.interpreted-text role=”issue”}). Thanks alexmic{.interpreted-text role=”user”} and kevinastone{.interpreted-text role=”user”} for the suggestion.
  • Allow a Field's attribute to be modified during deserialization (266{.interpreted-text role=”issue”}). Thanks floqqi{.interpreted-text role=”user”}.
  • Allow partially-valid data to be returned for Nested fields (269{.interpreted-text role=”issue”}). Thanks jomag{.interpreted-text role=”user”} for the suggestion.
  • Add Schema.on_bind_field hook which allows a Schema to modify its fields when they are bound.
  • Stricter validation of string, boolean, and number fields (231{.interpreted-text role=”issue”}). Thanks touilleMan{.interpreted-text role=”user”} for the suggestion.
  • Improve consistency of error messages.

Deprecation/Removals:

  • Schema.validator, Schema.preprocessor, and Schema.data_handler are removed. Use validates_schema, pre_load, and post_dump instead.
  • QuerySelect and QuerySelectList are deprecated (227{.interpreted-text role=”issue”}). These fields will be removed in version 2.1.
  • utils.get_callable_name is removed.

Bug fixes:

  • If a date format string is passed to a DateTime field, it is always used for deserialization (248{.interpreted-text role=”issue”}). Thanks bartaelterman{.interpreted-text role=”user”} and praveen-p{.interpreted-text role=”user”}.

Support:

  • Documentation: Add "Using Context" section to "Extending Schemas" page (224{.interpreted-text role=”issue”}).
  • Include tests and docs in release tarballs (201{.interpreted-text role=”issue”}).
  • Test against Python 3.5.

2.0.0b5 (2015-08-23)

Features:

  • If a field corresponds to a callable attribute, it will be called upon serialization. Thanks alexmorken{.interpreted-text role=”user”}.
  • Add load_only and dump_only class Meta options. Thanks kelvinhammond{.interpreted-text role=”user”}.
  • If a Nested field is required, recursively validate any required fields in the nested schema (235{.interpreted-text role=”issue”}). Thanks max-orhai{.interpreted-text role=”user”}.
  • Improve error message if a list of dicts is not passed to a Nested field for which many=True. Thanks again max-orhai{.interpreted-text role=”user”}.

Bug fixes:

  • [make_object]{.title-ref} is only called after all validators and postprocessors have finished (253{.interpreted-text role=”issue”}). Thanks sunsongxp{.interpreted-text role=”user”} for reporting.
  • If an invalid type is passed to Schema and strict=False, store a _schema error in the errors dict rather than raise an exception (261{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

Other changes:

  • make_object is only called when input data are completely valid (243{.interpreted-text role=”issue”}). Thanks kissgyorgy{.interpreted-text role=”user”} for reporting.
  • Change default error messages for URL and Email validators so that they don't include user input (255{.interpreted-text role=”issue”}).
  • Email validator permits email addresses with non-ASCII characters, as per RFC 6530 (221{.interpreted-text role=”issue”}). Thanks lextoumbourou{.interpreted-text role=”user”} for reporting and mwstobo{.interpreted-text role=”user”} for sending the patch.

2.0.0b4 (2015-07-07)

Features:

  • List field respects the attribute argument of the inner field. Thanks jmcarp{.interpreted-text role=”user”}.
  • The container field List field has access to its parent Schema via its parent attribute. Thanks again jmcarp{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Legacy validator functions have been removed (73{.interpreted-text role=”issue”}). Use the class-based validators in marshmallow.validate instead.

Bug fixes:

  • fields.Nested correctly serializes nested sets (233{.interpreted-text role=”issue”}). Thanks traut{.interpreted-text role=”user”}.

Changes from 2.0.0b3:

  • If load_from is used on deserialization, the value of load_from is used as the key in the errors dict (232{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”}.

2.0.0b3 (2015-06-14)

Features:

  • Add marshmallow.validates_schema decorator for defining schema-level validators (116{.interpreted-text role=”issue”}).
  • Add marshmallow.validates decorator for defining field validators as Schema methods (116{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Performance improvements.
  • Defining __marshallable__ on complex objects is no longer necessary.
  • Add fields.Constant. Thanks kevinastone{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Remove skip_missing class Meta option. By default, missing inputs are excluded from serialized output (211{.interpreted-text role=”issue”}).
  • Remove optional context parameter that gets passed to methods for Method fields.
  • Schema.validator is deprecated. Use marshmallow.validates_schema instead.
  • utils.get_func_name is removed. Use utils.get_callable_name instead.

Bug fixes:

  • Fix serializing values from keyed tuple types (regression of 28{.interpreted-text role=”issue”}). Thanks makmanalp{.interpreted-text role=”user”} for reporting.

Other changes:

  • Remove unnecessary call to utils.get_value for Function and Method fields (208{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”}.
  • Serializing a collection without passing many=True will not result in an error. Be very careful to pass the many argument when necessary.

Support:

  • Documentation: Update Flask and Peewee examples. Update Quickstart.

Changes from 2.0.0b2:

  • Boolean field serializes None to None, for consistency with other fields (213{.interpreted-text role=”issue”}). Thanks cmanallen{.interpreted-text role=”user”} for reporting.
  • Bug fix: load_only fields do not get validated during serialization.
  • Implicit passing of original, raw data to Schema validators is removed. Use @marshmallow.validates_schema(pass_original=True) instead.

2.0.0b2 (2015-05-03)

Features:

  • Add useful __repr__ methods to validators (204{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Backwards-incompatible: By default, NaN, Infinity, and -Infinity are invalid values for fields.Decimal. Pass allow_nan=True to allow these values. Thanks philtay{.interpreted-text role=”user”}.

Changes from 2.0.0b1:

  • Fix serialization of None for [Time]{.title-ref}, [TimeDelta]{.title-ref}, and [Date]{.title-ref} fields (a regression introduced in 2.0.0a1).

Includes bug fixes from 1.2.6.

2.0.0b1 (2015-04-26)

Features:

  • Errored fields will not appear in (de)serialized output dictionaries (153{.interpreted-text role=”issue”}, 202{.interpreted-text role=”issue”}).
  • Instantiate OPTIONS_CLASS in SchemaMeta. This makes Schema.opts available in metaclass methods. It also causes validation to occur earlier (upon Schema class declaration rather than instantiation).
  • Add SchemaMeta.get_declared_fields class method to support adding additional declared fields.

Deprecation/Removals:

  • Remove allow_null parameter of fields.Nested (203{.interpreted-text role=”issue”}).

Changes from 2.0.0a1:

  • Fix serialization of [None]{.title-ref} for fields.Email.

2.0.0a1 (2015-04-25)

Features:

  • Backwards-incompatible: When many=True, the errors dictionary returned by dump and load will be keyed on the indices of invalid items in the (de)serialized collection (75{.interpreted-text role=”issue”}). Add index_errors=False on a Schema's class Meta options to disable this behavior.
  • Backwards-incompatible: By default, fields will raise a ValidationError if the input is None. The allow_none parameter can override this behavior.
  • Backwards-incompatible: A Field's default parameter is only used if explicitly set and the field's value is missing in the input to [Schema.dump]{.title-ref}. If not set, the key will not be present in the serialized output for missing values . This is the behavior for all fields. fields.Str no longer defaults to '', fields.Int no longer defaults to 0, etc. (199{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the feedback.
  • In strict mode, a ValidationError is raised. Error messages are accessed via the ValidationError's messages attribute (128{.interpreted-text role=”issue”}).
  • Add allow_none parameter to fields.Field. If False (the default), validation fails when the field's value is None (76{.interpreted-text role=”issue”}, 111{.interpreted-text role=”issue”}). If allow_none is True, None is considered valid and will deserialize to None.
  • Schema-level validators can store error messages for multiple fields (118{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for the suggestion.
  • Add pre_load, post_load, pre_dump, and post_dump Schema method decorators for defining pre- and post- processing routines (153{.interpreted-text role=”issue”}, 179{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”}, taion{.interpreted-text role=”user”}, and jmcarp{.interpreted-text role=”user”} for the suggestions and feedback. Thanks taion{.interpreted-text role=”user”} for the implementation.
  • Error message for required validation is configurable. (78{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for the suggestion. Thanks 0xDCA{.interpreted-text role=”user”} for the implementation.
  • Add load_from parameter to fields (125{.interpreted-text role=”issue”}). Thanks hakjoon{.interpreted-text role=”user”}.
  • Add load_only and dump_only parameters to fields (61{.interpreted-text role=”issue”}, 87{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add [missing]{.title-ref} parameter to fields (115{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Schema validators can take an optional raw_data argument which contains raw input data, incl. data not specified in the schema (127{.interpreted-text role=”issue”}). Thanks ryanlowe0{.interpreted-text role=”user”}.
  • Add validate.OneOf (135{.interpreted-text role=”issue”}) and validate.ContainsOnly (149{.interpreted-text role=”issue”}) validators. Thanks philtay{.interpreted-text role=”user”}.
  • Error messages for validators can be interpolated with [{input}]{.title-ref} and other values (depending on the validator).
  • fields.TimeDelta always serializes to an integer value in order to avoid rounding errors (105{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add include class Meta option to support field names which are Python keywords (139{.interpreted-text role=”issue”}). Thanks nickretallack{.interpreted-text role=”user”} for the suggestion.
  • exclude parameter is respected when used together with only parameter (165{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the catch and patch.
  • fields.List works as expected with generators and sets (185{.interpreted-text role=”issue”}). Thanks sergey-aganezov-jr{.interpreted-text role=”user”}.

Deprecation/Removals:

  • MarshallingError and UnmarshallingError error are deprecated in favor of a single ValidationError (160{.interpreted-text role=”issue”}).
  • context argument passed to Method fields is deprecated. Use self.context instead (184{.interpreted-text role=”issue”}).
  • Remove ForcedError.
  • Remove support for generator functions that yield validators (74{.interpreted-text role=”issue”}). Plain generators of validators are still supported.
  • The Select/Enum field is deprecated in favor of using [validate.OneOf]{.title-ref} validator (135{.interpreted-text role=”issue”}).
  • Remove legacy, pre-1.0 API (Schema.data and Schema.errors properties) (73{.interpreted-text role=”issue”}).
  • Remove null value.

Other changes:

  • Marshaller, Unmarshaller were moved to marshmallow.marshalling. These should be considered private API (129{.interpreted-text role=”issue”}).
  • Make allow_null=True the default for Nested fields. This will make None serialize to None rather than a dictionary with empty values (132{.interpreted-text role=”issue”}). Thanks nickrellack{.interpreted-text role=”user”} for the suggestion.

1.2.6 (2015-05-03)

Bug fixes:

  • Fix validation error message for fields.Decimal.
  • Allow error message for fields.Boolean to be customized with the error parameter (like other fields).

1.2.5 (2015-04-25)

Bug fixes:

  • Fix validation of invalid types passed to a Nested field when many=True (188{.interpreted-text role=”issue”}). Thanks juanrossi{.interpreted-text role=”user”} for reporting.

Support:

  • Fix pep8 dev dependency for flake8. Thanks taion{.interpreted-text role=”user”}.

1.2.4 (2015-03-22)

Bug fixes:

  • Fix behavior of as_string on fields.Integer (173{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”} for the catch and patch.

Other changes:

  • Remove dead code from fields.Field. Thanks taion{.interpreted-text role=”user”}.

Support:

  • Correction to _postprocess method in docs. Thanks again taion{.interpreted-text role=”user”}.

1.2.3 (2015-03-15)

Bug fixes:

  • Fix inheritance of ordered class Meta option (162{.interpreted-text role=”issue”}). Thanks stephenfin{.interpreted-text role=”user”} for reporting.

1.2.2 (2015-02-23)

Bug fixes:

  • Fix behavior of skip_missing and accessor options when many=True (137{.interpreted-text role=”issue”}). Thanks 3rdcycle{.interpreted-text role=”user”}.
  • Fix bug that could cause an AttributeError when nesting schemas with schema-level validators (144{.interpreted-text role=”issue”}). Thanks vovanbo{.interpreted-text role=”user”} for reporting.

1.2.1 (2015-01-11)

Bug fixes:

  • A Schema's error_handler--if defined--will execute if Schema.validate returns validation errors (121{.interpreted-text role=”issue”}).
  • Deserializing [None]{.title-ref} returns [None]{.title-ref} rather than raising an AttributeError (123{.interpreted-text role=”issue”}). Thanks RealSalmon{.interpreted-text role=”user”} for the catch and patch.

1.2.0 (2014-12-22)

Features:

  • Add QuerySelect and QuerySelectList fields (84{.interpreted-text role=”issue”}).
  • Convert validators in marshmallow.validate into class-based callables to make them easier to use when declaring fields (85{.interpreted-text role=”issue”}).
  • Add Decimal field which is safe to use when dealing with precise numbers (86{.interpreted-text role=”issue”}).

Thanks philtay{.interpreted-text role=”user”} for these contributions.

Bug fixes:

  • Date fields correctly deserializes to a datetime.date object when python-dateutil is not installed (79{.interpreted-text role=”issue”}). Thanks malexer{.interpreted-text role=”user”} for the catch and patch.
  • Fix bug that raised an AttributeError when using a class-based validator.
  • Fix as_string behavior of Number fields when serializing to default value.
  • Deserializing None or the empty string with either a DateTime, Date, Time or TimeDelta results in the correct unmarshalling errors (96{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix error handling when deserializing invalid UUIDs (106{.interpreted-text role=”issue”}). Thanks vesauimonen{.interpreted-text role=”user”} for the catch and patch.
  • Schema.loads correctly defaults to use the value of self.many rather than defaulting to False (108{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”} for the catch and patch.
  • Validators, data handlers, and preprocessors are no longer shared between schema subclasses (88{.interpreted-text role=”issue”}). Thanks amikholap{.interpreted-text role=”user”} for reporting.
  • Fix error handling when passing a dict or list to a ValidationError (110{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for reporting.

Deprecation:

  • The validator functions in the validate module are deprecated in favor of the class-based validators (85{.interpreted-text role=”issue”}).
  • The Arbitrary, Price, and Fixed fields are deprecated in favor of the Decimal field (86{.interpreted-text role=”issue”}).

Support:

  • Update docs theme.
  • Update contributing docs (77{.interpreted-text role=”issue”}).
  • Fix namespacing example in "Extending Schema" docs. Thanks Ch00k{.interpreted-text role=”user”}.
  • Exclude virtualenv directories from syntax checking (99{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”}.

1.1.0 (2014-12-02)

Features:

  • Add Schema.validate method which validates input data against a schema. Similar to Schema.load, but does not call make_object and only returns the errors dictionary.
  • Add several validation functions to the validate module. Thanks philtay{.interpreted-text role=”user”}.
  • Store field name and instance on exceptions raised in strict mode.

Bug fixes:

  • Fix serializing dictionaries when field names are methods of dict (e.g. "items"). Thanks rozenm{.interpreted-text role=”user”} for reporting.
  • If a Nested field is passed many=True, None serializes to an empty list. Thanks nickretallack{.interpreted-text role=”user”} for reporting.
  • Fix behavior of many argument passed to dump and load. Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix skip_missing behavior for String and List fields. Thanks malexer{.interpreted-text role=”user”} for reporting.
  • Fix compatibility with python-dateutil 2.3.
  • More consistent error messages across DateTime, TimeDelta, Date, and Time fields.

Support:

  • Update Flask and Peewee examples.

1.0.1 (2014-11-18)

Hotfix release.

  • Ensure that errors dictionary is correctly cleared on each call to Schema.dump and Schema.load.

1.0.0 (2014-11-16)

Adds new features, speed improvements, better error handling, and updated documentation.

  • Add skip_missing class Meta option.
  • A field's default may be a callable.
  • Allow accessor function to be configured via the Schema.accessor decorator or the __accessor__ class member.
  • URL and Email fields are validated upon serialization.
  • dump and load can receive the many argument.
  • Move a number of utility functions from fields.py to utils.py.
  • More useful repr for Field classes.
  • If a field's default is fields.missing and its serialized value is None, it will not be included in the final serialized result.
  • Schema.dumps no longer coerces its result to a binary string on Python 3.
  • Backwards-incompatible: Schema output is no longer an OrderedDict by default. If you want ordered field output, you must explicitly set the ordered option to True.
  • Backwards-incompatible: [error]{.title-ref} parameter of the [Field]{.title-ref} constructor is deprecated. Raise a [ValidationError]{.title-ref} instead.
  • Expanded test coverage.
  • Updated docs.

1.0.0-a (2014-10-19)

Major reworking and simplification of the public API, centered around support for deserialization, improved validation, and a less stateful Schema class.

  • Rename Serializer to Schema.
  • Support for deserialization.
  • Use the Schema.dump and Schema.load methods for serializing and deserializing, respectively.
  • Backwards-incompatible: Remove Serializer.json and Serializer.to_json. Use Schema.dumps instead.
  • Reworked fields interface.
  • Backwards-incompatible: Field classes implement _serialize and _deserialize methods. serialize and deserialize comprise the public API for a Field. Field.format and Field.output have been removed.
  • Add exceptions.ForcedError which allows errors to be raised during serialization (instead of storing errors in the errors dict).
  • Backwards-incompatible: DateTime field serializes to ISO8601 format by default (instead of RFC822).
  • Backwards-incompatible: Remove Serializer.factory method. It is no longer necessary with the dump method.
  • Backwards-incompatible: Allow nesting a serializer within itself recursively. Use exclude or only to prevent infinite recursion.
  • Backwards-incompatible: Multiple errors can be stored for a single field. The errors dictionary returned by load and dump have lists of error messages keyed by field name.
  • Remove validated decorator. Validation occurs within Field methods.
  • Function field raises a ValueError if an uncallable object is passed to its constructor.
  • Nested fields inherit context from their parent.
  • Add Schema.preprocessor and Schema.validator decorators for registering preprocessing and schema-level validation functions respectively.
  • Custom error messages can be specified by raising a ValidationError within a validation function.
  • Extra keyword arguments passed to a Field are stored as metadata.
  • Fix ordering of field output.
  • Fix behavior of the required parameter on Nested fields.
  • Fix serializing keyed tuple types (e.g. namedtuple) with class Meta options.
  • Fix default value for Fixed and Price fields.
  • Fix serialization of binary strings.
  • Schemas can inherit fields from non-Schema base classes (e.g. mixins). Also, fields are inherited according to the MRO (rather than recursing over base classes). Thanks jmcarp{.interpreted-text role=”user”}.
  • Add Str, Bool, and Int field class aliases.

0.7.0 (2014-06-22)

  • Add Serializer.error_handler decorator that registers a custom error handler.
  • Add Serializer.data_handler decorator that registers data post-processing callbacks.
  • Backwards-incompatible: process_data method is deprecated. Use the data_handler decorator instead.
  • Fix bug that raised error when passing extra data together with many=True. Thanks buttsicles{.interpreted-text role=”user”} for reporting.
  • If required=True validation is violated for a given Field, it will raise an error message that is different from the message specified by the error argument. Thanks asteinlein{.interpreted-text role=”user”}.
  • More generic error message raised when required field is missing.
  • validated decorator should only wrap a Field class's output method.

0.6.0 (2014-06-03)

  • Fix bug in serializing keyed tuple types, e.g. namedtuple and KeyedTuple.
  • Nested field can load a serializer by its class name as a string. This makes it easier to implement 2-way nesting.
  • Make Serializer.data override-able.

0.5.5 (2014-05-02)

  • Add Serializer.factory for creating a factory function that returns a Serializer instance.
  • MarshallingError stores its underlying exception as an instance variable. This is useful for inspecting errors.
  • fields.Select is aliased to fields.Enum.
  • Add fields.__all__ and marshmallow.__all__ so that the modules can be more easily extended.
  • Expose Serializer.OPTIONS_CLASS as a class variable so that options defaults can be overridden.
  • Add Serializer.process_data hook that allows subclasses to manipulate the final output data.

0.5.4 (2014-04-17)

  • Add json_module class Meta option.
  • Add required option to fields . Thanks DeaconDesperado{.interpreted-text role=”user”}.
  • Tested on Python 3.4 and PyPy.

0.5.3 (2014-03-02)

  • Fix Integer field default. It is now 0 instead of 0.0. Thanks kalasjocke{.interpreted-text role=”user”}.
  • Add context param to Serializer. Allows accessing arbitrary objects in Function and Method fields.
  • Function and Method fields raise MarshallingError if their argument is uncallable.

0.5.2 (2014-02-10)

  • Enable custom field validation via the validate parameter.
  • Add utils.from_rfc for parsing RFC datestring to Python datetime object.

0.5.1 (2014-02-02)

  • Avoid unnecessary attribute access in utils.to_marshallable_type for improved performance.
  • Fix RFC822 formatting for localized datetimes.

0.5.0 (2013-12-29)

  • Can customize validation error messages by passing the error parameter to a field.
  • Backwards-incompatible: Rename fields.NumberField -> fields.Number.
  • Add fields.Select. Thanks ecarreras{.interpreted-text role=”user”}.
  • Support nesting a Serializer within itself by passing "self" into fields.Nested (only up to depth=1).
  • Backwards-incompatible: No implicit serializing of collections. Must set many=True if serializing to a list. This ensures that marshmallow handles singular objects correctly, even if they are iterable.
  • If Nested field only parameter is a field name, only return a single value for the nested object (instead of a dict) or a flat list of values.
  • Improved performance and stability.

0.4.1 (2013-12-01)

  • An object's __marshallable__ method, if defined, takes precedence over __getitem__.
  • Generator expressions can be passed to a serializer.
  • Better support for serializing list-like collections (e.g. ORM querysets).
  • Other minor bugfixes.

0.4.0 (2013-11-24)

  • Add additional [class Meta]{.title-ref} option.
  • Add dateformat [class Meta]{.title-ref} option.
  • Support for serializing UUID, date, time, and timedelta objects.
  • Remove Serializer.to_data method. Just use Serialize.data property.
  • String field defaults to empty string instead of None.
  • Backwards-incompatible: isoformat and rfcformat functions moved to utils.py.
  • Backwards-incompatible: Validation functions moved to validate.py.
  • Backwards-incompatible: Remove types.py.
  • Reorder parameters to DateTime field (first parameter is dateformat).
  • Ensure that to_json returns bytestrings.
  • Fix bug with including an object property in fields Meta option.
  • Fix bug with passing None to a serializer.

0.3.1 (2013-11-16)

  • Fix bug with serializing dictionaries.
  • Fix error raised when serializing empty list.
  • Add only and exclude parameters to Serializer constructor.
  • Add strict parameter and option: causes Serializer to raise an error if invalid data are passed in, rather than storing errors.
  • Updated Flask + SQLA example in docs.

0.3.0 (2013-11-14)

  • Declaring Serializers just got easier. The class Meta paradigm allows you to specify fields more concisely. Can specify fields and exclude options.
  • Allow date formats to be changed by passing format parameter to DateTime field constructor. Can either be "rfc" (default), "iso", or a date format string.
  • More useful error message when declaring fields as classes (instead of an instance, which is the correct usage).
  • Rename MarshallingException -> MarshallingError.
  • Rename marshmallow.core -> marshmallow.serializer.

0.2.1 (2013-11-12)

  • Allow prefixing field names.
  • Fix storing errors on Nested Serializers.
  • Python 2.6 support.

0.2.0 (2013-11-11)

  • Field-level validation.
  • Add fields.Method.
  • Add fields.Function.
  • Allow binding of extra data to a serialized object by passing the extra param when initializing a Serializer.
  • Add relative paramater to fields.Url that allows for relative URLs.

0.1.0 (2013-11-10)

  • First release.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
webargs

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged marshmallow at Robotics Stack Exchange

marshmallow package from marshmallow repo

marshmallow

Third-Party Package

This third-party package's source repository does not contain a package manifest. Instead, its package manifest is stored in its release repository. In order to build this package from source in a Catkin workspace, please download its package manifest.

Package Summary

Tags No category tags.
Version 2.9.1
License BSD
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/marshmallow-code/marshmallow.git
VCS Type git
VCS Version 2.9.1
Last Updated 2016-07-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

A lightweight library for converting complex objects to and from simple Python datatypes.

Additional Links

Maintainers

  • AlexV

Authors

  • Steven Loria

marshmallow: simplified object serialization

Latest version

Travis-CI

Documentation

marshmallow is an ORM/ODM/framework-agnostic library for converting complex datatypes, such as objects, to and from native Python datatypes.

``` {.sourceCode .python} from datetime import date from marshmallow import Schema, fields, pprint

class ArtistSchema(Schema): name = fields.Str()

class AlbumSchema(Schema): title = fields.Str() release_date = fields.Date() artist = fields.Nested(ArtistSchema())

bowie = dict(name=’David Bowie’) album = dict(artist=bowie, title=’Hunky Dory’, release_date=date(1971, 12, 17))

schema = AlbumSchema() result = schema.dump(album) pprint(result.data, indent=2)

{ ‘artist’: {‘name’: ‘David Bowie’},

‘release_date’: ‘1971-12-17’,

‘title’: ‘Hunky Dory’}

```

In short, marshmallow schemas can be used to:

  • Validate input data.
  • Deserialize input data to app-level objects.
  • Serialize app-level objects to primitive Python types. The serialized objects can then be rendered to standard formats such as JSON for use in an HTTP API.

Get It Now

$ pip install -U marshmallow

Documentation

Full documentation is available at http://marshmallow.readthedocs.io/ .

Requirements

  • Python >= 2.6 or >= 3.3

marshmallow has no external dependencies outside of the Python standard library, although python-dateutil is recommended for robust datetime deserialization.

Ecosystem

A list of marshmallow-related libraries can be found at the GitHub wiki here:

https://github.com/marshmallow-code/marshmallow/wiki/Ecosystem

License

MIT licensed. See the bundled LICENSE file for more details.

CHANGELOG

Changelog

2.9.1 (2016-07-21)

Bug fixes:

  • Fix serialization of datetime.time objects with microseconds (464{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for reporting and thanks vuonghv{.interpreted-text role=”user”} for the fix.
  • Make @validates consistent with field validator behavior: if validation fails, the field will not be included in the deserialized output (391{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for reporting and thanks @vuonghv{.interpreted-text role=”user”} for the fix.

2.9.0 (2016-07-06)

  • Decimal field coerces input values to a string before deserializing to a [decimal.Decimal]{.title-ref} object in order to avoid transformation of float values under 12 significant digits (434{.interpreted-text role=”issue”}, 435{.interpreted-text role=”issue”}). Thanks davidthornton{.interpreted-text role=”user”} for the PR.

2.8.0 (2016-06-23)

Features:

  • Allow only and exclude parameters to take nested fields, using dot-delimited syntax (e.g. only=['blog.author.email']) (402{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} and deckar01{.interpreted-text role=”user”} for the discussion and implementation.

Support:

  • Update tasks.py for compatibility with invoke>=0.13.0. Thanks deckar01{.interpreted-text role=”user”}.

2.7.3 (2016-05-05)

  • Make field.parent and field.name accessible to on_bind_field (449{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”}.

2.7.2 (2016-04-27)

No code changes in this release. This is a reupload in order to distribute an sdist for the last hotfix release. See 443{.interpreted-text role=”issue”}.

Support:

  • Update license entry in setup.py to fix RPM distributions (433{.interpreted-text role=”issue”}). Thanks rrajaravi{.interpreted-text role=”user”} for reporting.

2.7.1 (2016-04-08)

Bug fixes:

  • Only add Schemas to class registry if a class name is provided. This allows Schemas to be constructed dynamically using the type constructor without getting added to the class registry (which is useful for saving memory).

2.7.0 (2016-04-04)

Features:

  • Make context available to Nested field's on_bind_field method (408{.interpreted-text role=”issue”}). Thanks immerrr{.interpreted-text role=”user”} for the PR.
  • Pass through user ValidationError kwargs (418{.interpreted-text role=”issue”}). Thanks russelldavies{.interpreted-text role=”user”} for helping implement this.

Other changes:

  • Remove unused attributes root, parent, and name from SchemaABC (410{.interpreted-text role=”issue”}). Thanks Tim-Erwin{.interpreted-text role=”user”} for the PR.

2.6.1 (2016-03-17)

Bug fixes:

  • Respect [load_from]{.title-ref} when reporting errors for nested required fields (414{.interpreted-text role=”issue”}). Thanks yumike{.interpreted-text role=”user”}.

2.6.0 (2016-02-01)

Features:

  • Add partial argument to Schema.validate (379{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add equal argument to validate.Length. Thanks daniloakamine{.interpreted-text role=”user”}.
  • Collect all validation errors for each item deserialized by a List field (345{.interpreted-text role=”issue”}). Thanks maximkulkin{.interpreted-text role=”user”} for the report and the PR.

2.5.0 (2016-01-16)

Features:

  • Allow a tuple of field names to be passed as the partial argument to Schema.load (369{.interpreted-text role=”issue”}). Thanks tdevelioglu{.interpreted-text role=”user”} for the PR.
  • Add schemes argument to validate.URL (356{.interpreted-text role=”issue”}).

2.4.2 (2015-12-08)

Bug fixes:

  • Prevent duplicate error messages when validating nested collections (360{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”} for the catch and patch.

2.4.1 (2015-12-07)

Bug fixes:

  • Serializing an iterator will not drop the first item (343{.interpreted-text role=”issue”}, 353{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the patch. Thanks edgarallang{.interpreted-text role=”user”} and jmcarp{.interpreted-text role=”user”} for reporting.

2.4.0 (2015-12-06)

Features:

  • Add skip_on_field_errors parameter to validates_schema (323{.interpreted-text role=”issue”}). Thanks jjvattamattom{.interpreted-text role=”user”} for the suggestion and d-sutherland{.interpreted-text role=”user”} for the PR.

Bug fixes:

  • Fix FormattedString serialization (348{.interpreted-text role=”issue”}). Thanks acaird{.interpreted-text role=”user”} for reporting.
  • Fix @validates behavior when used when attribute is specified and strict=True (350{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

2.3.0 (2015-11-22)

Features:

  • Add dump_to parameter to fields (310{.interpreted-text role=”issue”}). Thanks ShayanArmanPercolate{.interpreted-text role=”user”} for the suggestion. Thanks franciscod{.interpreted-text role=”user”} and ewang{.interpreted-text role=”user”} for the PRs.
  • The deserialize function passed to fields.Function can optionally receive a context argument (324{.interpreted-text role=”issue”}). Thanks DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Function is optional (325{.interpreted-text role=”issue”}). Thanks again DamianHeard{.interpreted-text role=”user”}.
  • The serialize function passed to fields.Method is optional (329{.interpreted-text role=”issue”}). Thanks justanr{.interpreted-text role=”user”}.

Deprecation/Removal:

  • The func argument of fields.Function has been renamed to serialize.
  • The method_name argument of fields.Method has been renamed to serialize.

func and method_name are still present for backwards-compatibility, but they will both be removed in marshmallow 3.0.

2.2.1 (2015-11-11)

Bug fixes:

  • Skip field validators for fields that aren't included in only (320{.interpreted-text role=”issue”}). Thanks carlos-alberto{.interpreted-text role=”user”} for reporting and eprikazc{.interpreted-text role=”user”} for the PR.

2.2.0 (2015-10-26)

Features:

  • Add support for partial deserialization with the partial argument to Schema and Schema.load (290{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Query and QuerySelect fields are removed.
  • Passing of strings to required and allow_none is removed. Pass the error_messages argument instead.

Support:

  • Add example of Schema inheritance in docs (225{.interpreted-text role=”issue”}). Thanks martinstein{.interpreted-text role=”user”} for the suggestion and juanrossi{.interpreted-text role=”user”} for the PR.
  • Add "Customizing Error Messages" section to custom fields docs.

2.1.3 (2015-10-18)

Bug fixes:

  • Fix serialization of collections for which [iter]{.title-ref} will modify position, e.g. Pymongo cursors (303{.interpreted-text role=”issue”}). Thanks Mise{.interpreted-text role=”user”} for the catch and patch.

2.1.2 (2015-10-14)

Bug fixes:

  • Fix passing data to schema validator when using @validates_schema(many=True) (297{.interpreted-text role=”issue”}). Thanks d-sutherland{.interpreted-text role=”user”} for reporting.
  • Fix usage of @validates with a nested field when many=True (298{.interpreted-text role=”issue”}). Thanks nelfin{.interpreted-text role=”user”} for the catch and patch.

2.1.1 (2015-10-07)

Bug fixes:

  • Constant field deserializes to its value regardless of whether its field name is present in input data (291{.interpreted-text role=”issue”}). Thanks fayazkhan{.interpreted-text role=”user”} for reporting.

2.1.0 (2015-09-30)

Features:

  • Add Dict field for arbitrary mapping data (251{.interpreted-text role=”issue”}). Thanks dwieeb{.interpreted-text role=”user”} for adding this and Dowwie{.interpreted-text role=”user”} for the suggestion.
  • Add Field.root property, which references the field's Schema.

Deprecation/Removals:

  • The extra param of Schema is deprecated. Add extra data in a post_load method instead.
  • UnmarshallingError and MarshallingError are removed.

Bug fixes:

  • Fix storing multiple schema-level validation errors (287{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the patch.
  • If missing=None on a field, allow_none will be set to True.

Other changes:

  • A List's inner field will have the list field set as its parent. Use root to access the Schema.

2.0.0 (2015-09-25)

Features:

  • Make error messages configurable at the class level and instance level (Field.default_error_messages attribute and error_messages parameter, respectively).

Deprecation/Removals:

  • Remove make_object. Use a post_load method instead (277{.interpreted-text role=”issue”}).
  • Remove the error parameter and attribute of Field.
  • Passing string arguments to required and allow_none is deprecated. Pass the error_messages argument instead. This API will be removed in version 2.2.
  • Remove Arbitrary, Fixed, and Price fields (86{.interpreted-text role=”issue”}). Use Decimal instead.
  • Remove Select / Enum fields (135{.interpreted-text role=”issue”}). Use the OneOf validator instead.

Bug fixes:

  • Fix error format for Nested fields when many=True. Thanks alexmorken{.interpreted-text role=”user”}.
  • pre_dump methods are invoked before implicit field creation. Thanks makmanalp{.interpreted-text role=”user”} for reporting.
  • Return correct "required" error message for Nested field.
  • The only argument passed to a Schema is bounded by the fields option (183{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the suggestion.

Changes from 2.0.0rc2:

  • error_handler and accessor options are replaced with the handle_error and get_attribute methods 284{.interpreted-text role=”issue”}.
  • Remove marshmallow.compat.plain_function since it is no longer used.
  • Non-collection values are invalid input for List field (231{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.
  • Bug fix: Prevent infinite loop when validating a required, self-nested field. Thanks Bachmann1234{.interpreted-text role=”user”} for the fix.

2.0.0rc2 (2015-09-16)

Deprecation/Removals:

  • make_object is deprecated. Use a post_load method instead (277{.interpreted-text role=”issue”}). This method will be removed in the final 2.0 release.
  • Schema.accessor and Schema.error_handler decorators are deprecated. Define the accessor and error_handler class Meta options instead.

Bug fixes:

  • Allow non-field names to be passed to ValidationError (273{.interpreted-text role=”issue”}). Thanks evgeny-sureev{.interpreted-text role=”user”} for the catch and patch.

Changes from 2.0.0rc1:

  • The raw parameter of the pre_*, post_*, validates_schema decorators was renamed to pass_many (276{.interpreted-text role=”issue”}).
  • Add pass_original parameter to post_load and post_dump (216{.interpreted-text role=”issue”}).
  • Methods decorated with the pre_*, post_*, and validates_* decorators must be instance methods. Class methods and instance methods are not supported at this time.

2.0.0rc1 (2015-09-13)

Features:

  • Backwards-incompatible: fields.Field._deserialize now takes attr and data as arguments (172{.interpreted-text role=”issue”}). Thanks alexmic{.interpreted-text role=”user”} and kevinastone{.interpreted-text role=”user”} for the suggestion.
  • Allow a Field's attribute to be modified during deserialization (266{.interpreted-text role=”issue”}). Thanks floqqi{.interpreted-text role=”user”}.
  • Allow partially-valid data to be returned for Nested fields (269{.interpreted-text role=”issue”}). Thanks jomag{.interpreted-text role=”user”} for the suggestion.
  • Add Schema.on_bind_field hook which allows a Schema to modify its fields when they are bound.
  • Stricter validation of string, boolean, and number fields (231{.interpreted-text role=”issue”}). Thanks touilleMan{.interpreted-text role=”user”} for the suggestion.
  • Improve consistency of error messages.

Deprecation/Removals:

  • Schema.validator, Schema.preprocessor, and Schema.data_handler are removed. Use validates_schema, pre_load, and post_dump instead.
  • QuerySelect and QuerySelectList are deprecated (227{.interpreted-text role=”issue”}). These fields will be removed in version 2.1.
  • utils.get_callable_name is removed.

Bug fixes:

  • If a date format string is passed to a DateTime field, it is always used for deserialization (248{.interpreted-text role=”issue”}). Thanks bartaelterman{.interpreted-text role=”user”} and praveen-p{.interpreted-text role=”user”}.

Support:

  • Documentation: Add "Using Context" section to "Extending Schemas" page (224{.interpreted-text role=”issue”}).
  • Include tests and docs in release tarballs (201{.interpreted-text role=”issue”}).
  • Test against Python 3.5.

2.0.0b5 (2015-08-23)

Features:

  • If a field corresponds to a callable attribute, it will be called upon serialization. Thanks alexmorken{.interpreted-text role=”user”}.
  • Add load_only and dump_only class Meta options. Thanks kelvinhammond{.interpreted-text role=”user”}.
  • If a Nested field is required, recursively validate any required fields in the nested schema (235{.interpreted-text role=”issue”}). Thanks max-orhai{.interpreted-text role=”user”}.
  • Improve error message if a list of dicts is not passed to a Nested field for which many=True. Thanks again max-orhai{.interpreted-text role=”user”}.

Bug fixes:

  • [make_object]{.title-ref} is only called after all validators and postprocessors have finished (253{.interpreted-text role=”issue”}). Thanks sunsongxp{.interpreted-text role=”user”} for reporting.
  • If an invalid type is passed to Schema and strict=False, store a _schema error in the errors dict rather than raise an exception (261{.interpreted-text role=”issue”}). Thanks density{.interpreted-text role=”user”} for reporting.

Other changes:

  • make_object is only called when input data are completely valid (243{.interpreted-text role=”issue”}). Thanks kissgyorgy{.interpreted-text role=”user”} for reporting.
  • Change default error messages for URL and Email validators so that they don't include user input (255{.interpreted-text role=”issue”}).
  • Email validator permits email addresses with non-ASCII characters, as per RFC 6530 (221{.interpreted-text role=”issue”}). Thanks lextoumbourou{.interpreted-text role=”user”} for reporting and mwstobo{.interpreted-text role=”user”} for sending the patch.

2.0.0b4 (2015-07-07)

Features:

  • List field respects the attribute argument of the inner field. Thanks jmcarp{.interpreted-text role=”user”}.
  • The container field List field has access to its parent Schema via its parent attribute. Thanks again jmcarp{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Legacy validator functions have been removed (73{.interpreted-text role=”issue”}). Use the class-based validators in marshmallow.validate instead.

Bug fixes:

  • fields.Nested correctly serializes nested sets (233{.interpreted-text role=”issue”}). Thanks traut{.interpreted-text role=”user”}.

Changes from 2.0.0b3:

  • If load_from is used on deserialization, the value of load_from is used as the key in the errors dict (232{.interpreted-text role=”issue”}). Thanks alexmorken{.interpreted-text role=”user”}.

2.0.0b3 (2015-06-14)

Features:

  • Add marshmallow.validates_schema decorator for defining schema-level validators (116{.interpreted-text role=”issue”}).
  • Add marshmallow.validates decorator for defining field validators as Schema methods (116{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Performance improvements.
  • Defining __marshallable__ on complex objects is no longer necessary.
  • Add fields.Constant. Thanks kevinastone{.interpreted-text role=”user”}.

Deprecation/Removals:

  • Remove skip_missing class Meta option. By default, missing inputs are excluded from serialized output (211{.interpreted-text role=”issue”}).
  • Remove optional context parameter that gets passed to methods for Method fields.
  • Schema.validator is deprecated. Use marshmallow.validates_schema instead.
  • utils.get_func_name is removed. Use utils.get_callable_name instead.

Bug fixes:

  • Fix serializing values from keyed tuple types (regression of 28{.interpreted-text role=”issue”}). Thanks makmanalp{.interpreted-text role=”user”} for reporting.

Other changes:

  • Remove unnecessary call to utils.get_value for Function and Method fields (208{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”}.
  • Serializing a collection without passing many=True will not result in an error. Be very careful to pass the many argument when necessary.

Support:

  • Documentation: Update Flask and Peewee examples. Update Quickstart.

Changes from 2.0.0b2:

  • Boolean field serializes None to None, for consistency with other fields (213{.interpreted-text role=”issue”}). Thanks cmanallen{.interpreted-text role=”user”} for reporting.
  • Bug fix: load_only fields do not get validated during serialization.
  • Implicit passing of original, raw data to Schema validators is removed. Use @marshmallow.validates_schema(pass_original=True) instead.

2.0.0b2 (2015-05-03)

Features:

  • Add useful __repr__ methods to validators (204{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Backwards-incompatible: By default, NaN, Infinity, and -Infinity are invalid values for fields.Decimal. Pass allow_nan=True to allow these values. Thanks philtay{.interpreted-text role=”user”}.

Changes from 2.0.0b1:

  • Fix serialization of None for [Time]{.title-ref}, [TimeDelta]{.title-ref}, and [Date]{.title-ref} fields (a regression introduced in 2.0.0a1).

Includes bug fixes from 1.2.6.

2.0.0b1 (2015-04-26)

Features:

  • Errored fields will not appear in (de)serialized output dictionaries (153{.interpreted-text role=”issue”}, 202{.interpreted-text role=”issue”}).
  • Instantiate OPTIONS_CLASS in SchemaMeta. This makes Schema.opts available in metaclass methods. It also causes validation to occur earlier (upon Schema class declaration rather than instantiation).
  • Add SchemaMeta.get_declared_fields class method to support adding additional declared fields.

Deprecation/Removals:

  • Remove allow_null parameter of fields.Nested (203{.interpreted-text role=”issue”}).

Changes from 2.0.0a1:

  • Fix serialization of [None]{.title-ref} for fields.Email.

2.0.0a1 (2015-04-25)

Features:

  • Backwards-incompatible: When many=True, the errors dictionary returned by dump and load will be keyed on the indices of invalid items in the (de)serialized collection (75{.interpreted-text role=”issue”}). Add index_errors=False on a Schema's class Meta options to disable this behavior.
  • Backwards-incompatible: By default, fields will raise a ValidationError if the input is None. The allow_none parameter can override this behavior.
  • Backwards-incompatible: A Field's default parameter is only used if explicitly set and the field's value is missing in the input to [Schema.dump]{.title-ref}. If not set, the key will not be present in the serialized output for missing values . This is the behavior for all fields. fields.Str no longer defaults to '', fields.Int no longer defaults to 0, etc. (199{.interpreted-text role=”issue”}). Thanks jmcarp{.interpreted-text role=”user”} for the feedback.
  • In strict mode, a ValidationError is raised. Error messages are accessed via the ValidationError's messages attribute (128{.interpreted-text role=”issue”}).
  • Add allow_none parameter to fields.Field. If False (the default), validation fails when the field's value is None (76{.interpreted-text role=”issue”}, 111{.interpreted-text role=”issue”}). If allow_none is True, None is considered valid and will deserialize to None.
  • Schema-level validators can store error messages for multiple fields (118{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for the suggestion.
  • Add pre_load, post_load, pre_dump, and post_dump Schema method decorators for defining pre- and post- processing routines (153{.interpreted-text role=”issue”}, 179{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”}, taion{.interpreted-text role=”user”}, and jmcarp{.interpreted-text role=”user”} for the suggestions and feedback. Thanks taion{.interpreted-text role=”user”} for the implementation.
  • Error message for required validation is configurable. (78{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for the suggestion. Thanks 0xDCA{.interpreted-text role=”user”} for the implementation.
  • Add load_from parameter to fields (125{.interpreted-text role=”issue”}). Thanks hakjoon{.interpreted-text role=”user”}.
  • Add load_only and dump_only parameters to fields (61{.interpreted-text role=”issue”}, 87{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add [missing]{.title-ref} parameter to fields (115{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Schema validators can take an optional raw_data argument which contains raw input data, incl. data not specified in the schema (127{.interpreted-text role=”issue”}). Thanks ryanlowe0{.interpreted-text role=”user”}.
  • Add validate.OneOf (135{.interpreted-text role=”issue”}) and validate.ContainsOnly (149{.interpreted-text role=”issue”}) validators. Thanks philtay{.interpreted-text role=”user”}.
  • Error messages for validators can be interpolated with [{input}]{.title-ref} and other values (depending on the validator).
  • fields.TimeDelta always serializes to an integer value in order to avoid rounding errors (105{.interpreted-text role=”issue”}). Thanks philtay{.interpreted-text role=”user”}.
  • Add include class Meta option to support field names which are Python keywords (139{.interpreted-text role=”issue”}). Thanks nickretallack{.interpreted-text role=”user”} for the suggestion.
  • exclude parameter is respected when used together with only parameter (165{.interpreted-text role=”issue”}). Thanks lustdante{.interpreted-text role=”user”} for the catch and patch.
  • fields.List works as expected with generators and sets (185{.interpreted-text role=”issue”}). Thanks sergey-aganezov-jr{.interpreted-text role=”user”}.

Deprecation/Removals:

  • MarshallingError and UnmarshallingError error are deprecated in favor of a single ValidationError (160{.interpreted-text role=”issue”}).
  • context argument passed to Method fields is deprecated. Use self.context instead (184{.interpreted-text role=”issue”}).
  • Remove ForcedError.
  • Remove support for generator functions that yield validators (74{.interpreted-text role=”issue”}). Plain generators of validators are still supported.
  • The Select/Enum field is deprecated in favor of using [validate.OneOf]{.title-ref} validator (135{.interpreted-text role=”issue”}).
  • Remove legacy, pre-1.0 API (Schema.data and Schema.errors properties) (73{.interpreted-text role=”issue”}).
  • Remove null value.

Other changes:

  • Marshaller, Unmarshaller were moved to marshmallow.marshalling. These should be considered private API (129{.interpreted-text role=”issue”}).
  • Make allow_null=True the default for Nested fields. This will make None serialize to None rather than a dictionary with empty values (132{.interpreted-text role=”issue”}). Thanks nickrellack{.interpreted-text role=”user”} for the suggestion.

1.2.6 (2015-05-03)

Bug fixes:

  • Fix validation error message for fields.Decimal.
  • Allow error message for fields.Boolean to be customized with the error parameter (like other fields).

1.2.5 (2015-04-25)

Bug fixes:

  • Fix validation of invalid types passed to a Nested field when many=True (188{.interpreted-text role=”issue”}). Thanks juanrossi{.interpreted-text role=”user”} for reporting.

Support:

  • Fix pep8 dev dependency for flake8. Thanks taion{.interpreted-text role=”user”}.

1.2.4 (2015-03-22)

Bug fixes:

  • Fix behavior of as_string on fields.Integer (173{.interpreted-text role=”issue”}). Thanks taion{.interpreted-text role=”user”} for the catch and patch.

Other changes:

  • Remove dead code from fields.Field. Thanks taion{.interpreted-text role=”user”}.

Support:

  • Correction to _postprocess method in docs. Thanks again taion{.interpreted-text role=”user”}.

1.2.3 (2015-03-15)

Bug fixes:

  • Fix inheritance of ordered class Meta option (162{.interpreted-text role=”issue”}). Thanks stephenfin{.interpreted-text role=”user”} for reporting.

1.2.2 (2015-02-23)

Bug fixes:

  • Fix behavior of skip_missing and accessor options when many=True (137{.interpreted-text role=”issue”}). Thanks 3rdcycle{.interpreted-text role=”user”}.
  • Fix bug that could cause an AttributeError when nesting schemas with schema-level validators (144{.interpreted-text role=”issue”}). Thanks vovanbo{.interpreted-text role=”user”} for reporting.

1.2.1 (2015-01-11)

Bug fixes:

  • A Schema's error_handler--if defined--will execute if Schema.validate returns validation errors (121{.interpreted-text role=”issue”}).
  • Deserializing [None]{.title-ref} returns [None]{.title-ref} rather than raising an AttributeError (123{.interpreted-text role=”issue”}). Thanks RealSalmon{.interpreted-text role=”user”} for the catch and patch.

1.2.0 (2014-12-22)

Features:

  • Add QuerySelect and QuerySelectList fields (84{.interpreted-text role=”issue”}).
  • Convert validators in marshmallow.validate into class-based callables to make them easier to use when declaring fields (85{.interpreted-text role=”issue”}).
  • Add Decimal field which is safe to use when dealing with precise numbers (86{.interpreted-text role=”issue”}).

Thanks philtay{.interpreted-text role=”user”} for these contributions.

Bug fixes:

  • Date fields correctly deserializes to a datetime.date object when python-dateutil is not installed (79{.interpreted-text role=”issue”}). Thanks malexer{.interpreted-text role=”user”} for the catch and patch.
  • Fix bug that raised an AttributeError when using a class-based validator.
  • Fix as_string behavior of Number fields when serializing to default value.
  • Deserializing None or the empty string with either a DateTime, Date, Time or TimeDelta results in the correct unmarshalling errors (96{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix error handling when deserializing invalid UUIDs (106{.interpreted-text role=”issue”}). Thanks vesauimonen{.interpreted-text role=”user”} for the catch and patch.
  • Schema.loads correctly defaults to use the value of self.many rather than defaulting to False (108{.interpreted-text role=”issue”}). Thanks davidism{.interpreted-text role=”user”} for the catch and patch.
  • Validators, data handlers, and preprocessors are no longer shared between schema subclasses (88{.interpreted-text role=”issue”}). Thanks amikholap{.interpreted-text role=”user”} for reporting.
  • Fix error handling when passing a dict or list to a ValidationError (110{.interpreted-text role=”issue”}). Thanks ksesong{.interpreted-text role=”user”} for reporting.

Deprecation:

  • The validator functions in the validate module are deprecated in favor of the class-based validators (85{.interpreted-text role=”issue”}).
  • The Arbitrary, Price, and Fixed fields are deprecated in favor of the Decimal field (86{.interpreted-text role=”issue”}).

Support:

  • Update docs theme.
  • Update contributing docs (77{.interpreted-text role=”issue”}).
  • Fix namespacing example in "Extending Schema" docs. Thanks Ch00k{.interpreted-text role=”user”}.
  • Exclude virtualenv directories from syntax checking (99{.interpreted-text role=”issue”}). Thanks svenstaro{.interpreted-text role=”user”}.

1.1.0 (2014-12-02)

Features:

  • Add Schema.validate method which validates input data against a schema. Similar to Schema.load, but does not call make_object and only returns the errors dictionary.
  • Add several validation functions to the validate module. Thanks philtay{.interpreted-text role=”user”}.
  • Store field name and instance on exceptions raised in strict mode.

Bug fixes:

  • Fix serializing dictionaries when field names are methods of dict (e.g. "items"). Thanks rozenm{.interpreted-text role=”user”} for reporting.
  • If a Nested field is passed many=True, None serializes to an empty list. Thanks nickretallack{.interpreted-text role=”user”} for reporting.
  • Fix behavior of many argument passed to dump and load. Thanks svenstaro{.interpreted-text role=”user”} for reporting and helping with this.
  • Fix skip_missing behavior for String and List fields. Thanks malexer{.interpreted-text role=”user”} for reporting.
  • Fix compatibility with python-dateutil 2.3.
  • More consistent error messages across DateTime, TimeDelta, Date, and Time fields.

Support:

  • Update Flask and Peewee examples.

1.0.1 (2014-11-18)

Hotfix release.

  • Ensure that errors dictionary is correctly cleared on each call to Schema.dump and Schema.load.

1.0.0 (2014-11-16)

Adds new features, speed improvements, better error handling, and updated documentation.

  • Add skip_missing class Meta option.
  • A field's default may be a callable.
  • Allow accessor function to be configured via the Schema.accessor decorator or the __accessor__ class member.
  • URL and Email fields are validated upon serialization.
  • dump and load can receive the many argument.
  • Move a number of utility functions from fields.py to utils.py.
  • More useful repr for Field classes.
  • If a field's default is fields.missing and its serialized value is None, it will not be included in the final serialized result.
  • Schema.dumps no longer coerces its result to a binary string on Python 3.
  • Backwards-incompatible: Schema output is no longer an OrderedDict by default. If you want ordered field output, you must explicitly set the ordered option to True.
  • Backwards-incompatible: [error]{.title-ref} parameter of the [Field]{.title-ref} constructor is deprecated. Raise a [ValidationError]{.title-ref} instead.
  • Expanded test coverage.
  • Updated docs.

1.0.0-a (2014-10-19)

Major reworking and simplification of the public API, centered around support for deserialization, improved validation, and a less stateful Schema class.

  • Rename Serializer to Schema.
  • Support for deserialization.
  • Use the Schema.dump and Schema.load methods for serializing and deserializing, respectively.
  • Backwards-incompatible: Remove Serializer.json and Serializer.to_json. Use Schema.dumps instead.
  • Reworked fields interface.
  • Backwards-incompatible: Field classes implement _serialize and _deserialize methods. serialize and deserialize comprise the public API for a Field. Field.format and Field.output have been removed.
  • Add exceptions.ForcedError which allows errors to be raised during serialization (instead of storing errors in the errors dict).
  • Backwards-incompatible: DateTime field serializes to ISO8601 format by default (instead of RFC822).
  • Backwards-incompatible: Remove Serializer.factory method. It is no longer necessary with the dump method.
  • Backwards-incompatible: Allow nesting a serializer within itself recursively. Use exclude or only to prevent infinite recursion.
  • Backwards-incompatible: Multiple errors can be stored for a single field. The errors dictionary returned by load and dump have lists of error messages keyed by field name.
  • Remove validated decorator. Validation occurs within Field methods.
  • Function field raises a ValueError if an uncallable object is passed to its constructor.
  • Nested fields inherit context from their parent.
  • Add Schema.preprocessor and Schema.validator decorators for registering preprocessing and schema-level validation functions respectively.
  • Custom error messages can be specified by raising a ValidationError within a validation function.
  • Extra keyword arguments passed to a Field are stored as metadata.
  • Fix ordering of field output.
  • Fix behavior of the required parameter on Nested fields.
  • Fix serializing keyed tuple types (e.g. namedtuple) with class Meta options.
  • Fix default value for Fixed and Price fields.
  • Fix serialization of binary strings.
  • Schemas can inherit fields from non-Schema base classes (e.g. mixins). Also, fields are inherited according to the MRO (rather than recursing over base classes). Thanks jmcarp{.interpreted-text role=”user”}.
  • Add Str, Bool, and Int field class aliases.

0.7.0 (2014-06-22)

  • Add Serializer.error_handler decorator that registers a custom error handler.
  • Add Serializer.data_handler decorator that registers data post-processing callbacks.
  • Backwards-incompatible: process_data method is deprecated. Use the data_handler decorator instead.
  • Fix bug that raised error when passing extra data together with many=True. Thanks buttsicles{.interpreted-text role=”user”} for reporting.
  • If required=True validation is violated for a given Field, it will raise an error message that is different from the message specified by the error argument. Thanks asteinlein{.interpreted-text role=”user”}.
  • More generic error message raised when required field is missing.
  • validated decorator should only wrap a Field class's output method.

0.6.0 (2014-06-03)

  • Fix bug in serializing keyed tuple types, e.g. namedtuple and KeyedTuple.
  • Nested field can load a serializer by its class name as a string. This makes it easier to implement 2-way nesting.
  • Make Serializer.data override-able.

0.5.5 (2014-05-02)

  • Add Serializer.factory for creating a factory function that returns a Serializer instance.
  • MarshallingError stores its underlying exception as an instance variable. This is useful for inspecting errors.
  • fields.Select is aliased to fields.Enum.
  • Add fields.__all__ and marshmallow.__all__ so that the modules can be more easily extended.
  • Expose Serializer.OPTIONS_CLASS as a class variable so that options defaults can be overridden.
  • Add Serializer.process_data hook that allows subclasses to manipulate the final output data.

0.5.4 (2014-04-17)

  • Add json_module class Meta option.
  • Add required option to fields . Thanks DeaconDesperado{.interpreted-text role=”user”}.
  • Tested on Python 3.4 and PyPy.

0.5.3 (2014-03-02)

  • Fix Integer field default. It is now 0 instead of 0.0. Thanks kalasjocke{.interpreted-text role=”user”}.
  • Add context param to Serializer. Allows accessing arbitrary objects in Function and Method fields.
  • Function and Method fields raise MarshallingError if their argument is uncallable.

0.5.2 (2014-02-10)

  • Enable custom field validation via the validate parameter.
  • Add utils.from_rfc for parsing RFC datestring to Python datetime object.

0.5.1 (2014-02-02)

  • Avoid unnecessary attribute access in utils.to_marshallable_type for improved performance.
  • Fix RFC822 formatting for localized datetimes.

0.5.0 (2013-12-29)

  • Can customize validation error messages by passing the error parameter to a field.
  • Backwards-incompatible: Rename fields.NumberField -> fields.Number.
  • Add fields.Select. Thanks ecarreras{.interpreted-text role=”user”}.
  • Support nesting a Serializer within itself by passing "self" into fields.Nested (only up to depth=1).
  • Backwards-incompatible: No implicit serializing of collections. Must set many=True if serializing to a list. This ensures that marshmallow handles singular objects correctly, even if they are iterable.
  • If Nested field only parameter is a field name, only return a single value for the nested object (instead of a dict) or a flat list of values.
  • Improved performance and stability.

0.4.1 (2013-12-01)

  • An object's __marshallable__ method, if defined, takes precedence over __getitem__.
  • Generator expressions can be passed to a serializer.
  • Better support for serializing list-like collections (e.g. ORM querysets).
  • Other minor bugfixes.

0.4.0 (2013-11-24)

  • Add additional [class Meta]{.title-ref} option.
  • Add dateformat [class Meta]{.title-ref} option.
  • Support for serializing UUID, date, time, and timedelta objects.
  • Remove Serializer.to_data method. Just use Serialize.data property.
  • String field defaults to empty string instead of None.
  • Backwards-incompatible: isoformat and rfcformat functions moved to utils.py.
  • Backwards-incompatible: Validation functions moved to validate.py.
  • Backwards-incompatible: Remove types.py.
  • Reorder parameters to DateTime field (first parameter is dateformat).
  • Ensure that to_json returns bytestrings.
  • Fix bug with including an object property in fields Meta option.
  • Fix bug with passing None to a serializer.

0.3.1 (2013-11-16)

  • Fix bug with serializing dictionaries.
  • Fix error raised when serializing empty list.
  • Add only and exclude parameters to Serializer constructor.
  • Add strict parameter and option: causes Serializer to raise an error if invalid data are passed in, rather than storing errors.
  • Updated Flask + SQLA example in docs.

0.3.0 (2013-11-14)

  • Declaring Serializers just got easier. The class Meta paradigm allows you to specify fields more concisely. Can specify fields and exclude options.
  • Allow date formats to be changed by passing format parameter to DateTime field constructor. Can either be "rfc" (default), "iso", or a date format string.
  • More useful error message when declaring fields as classes (instead of an instance, which is the correct usage).
  • Rename MarshallingException -> MarshallingError.
  • Rename marshmallow.core -> marshmallow.serializer.

0.2.1 (2013-11-12)

  • Allow prefixing field names.
  • Fix storing errors on Nested Serializers.
  • Python 2.6 support.

0.2.0 (2013-11-11)

  • Field-level validation.
  • Add fields.Method.
  • Add fields.Function.
  • Allow binding of extra data to a serialized object by passing the extra param when initializing a Serializer.
  • Add relative paramater to fields.Url that allows for relative URLs.

0.1.0 (2013-11-10)

  • First release.

Wiki Tutorials

This package does not provide any links to tutorials in it's rosindex metadata. You can check on the ROS Wiki Tutorials page for the package.

Package Dependencies

System Dependencies

Dependant Packages

Name Deps
webargs

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged marshmallow at Robotics Stack Exchange