Changelog

2.21.0 (2020-03-05)

Bug fixes:

  • Don’t match string-ending newlines in URL and Email fields (#1522). Thanks @nbanmp for the PR.

Other changes:

  • Drop support for Python 3.4 (#1525).

2.20.5 (2019-09-15)

Bug fixes:

  • Fix behavior when a non-list collection is passed to the validate argument of fields.Email and fields.URL (#1400).

2.20.4 (2019-09-11)

Bug fixes:

  • Respect the many value on Schema instances passed to Nested (#1160). Thanks @Kamforka for reporting.

2.20.3 (2019-09-04)

Bug fixes:

  • Don’t swallow TypeError exceptions raised by Field._bind_to_schema or Schema.on_bind_field.

2.20.2 (2019-08-20)

Bug fixes:

  • Prevent warning about importing from collections on Python 3.7 (#1354). Thanks @nicktimko for the PR.

2.20.1 (2019-08-13)

Bug fixes:

  • Fix bug that raised TypeError when invalid data type is passed to a nested schema with @validates (#1342).

2.20.0 (2019-08-10)

Bug fixes:

  • Fix deprecated functions’ compatibility with Python 2 (#1337). Thanks @airstandley for the catch and patch.

  • Fix error message consistency for invalid input types on nested fields (#1303). This is a backport of the fix in #857. Thanks @cristi23 for the thorough bug report and the PR.

Deprecation/Removal:

  • Python 2.6 is no longer officially supported (#1274).

2.19.5 (2019-06-18)

Bug fixes:

  • Fix deserializing ISO8601-formatted datetimes with less than 6-digit miroseconds (#1251). Thanks @diego-plan9 for reporting.

2.19.4 (2019-06-16)

Bug fixes:

  • Microseconds no longer gets lost when deserializing datetimes without dateutil installed (#1147).

2.19.3 (2019-06-15)

Bug fixes:

  • Fix bug where nested fields in Meta.exclude would not work on multiple instantiations (#1212). Thanks @MHannila for reporting.

2.19.2 (2019-03-30)

Bug fixes:

  • Handle OverflowError when (de)serializing large integers with fields.Float (#1177). Thanks @brycedrennan for the PR.

2.19.1 (2019-03-16)

Bug fixes:

  • Fix bug where Nested(many=True) would skip first element when serializing a generator (#1163). Thanks @khvn26 for the catch and patch.

2.19.0 (2019-03-07)

Deprecation/Removal:

  • A RemovedInMarshmallow3 warning is raised when using fields.FormattedString. Use fields.Method or fields.Function instead (#1141).

2.18.1 (2019-02-15)

Bug fixes:

  • A ChangedInMarshmallow3Warning is no longer raised when strict=False (#1108). Thanks @Aegdesil for reporting.

2.18.0 (2019-01-13)

Features:

  • Add warnings for functions in marshmallow.utils that are removed in marshmallow 3.

Bug fixes:

  • Copying missing with copy.copy or copy.deepcopy will not duplicate it (#1099).

2.17.0 (2018-12-26)

Features:

  • Add marshmallow.__version_info__ (#1074).

  • Add warnings for API that is deprecated or changed to help users prepare for marshmallow 3 (#1075).

2.16.3 (2018-11-01)

Bug fixes:

  • Prevent memory leak when dynamically creating classes with type() (#732). Thanks @asmodehn for writing the tests to reproduce this issue.

2.16.2 (2018-10-30)

Bug fixes:

  • Prevent warning about importing from collections on Python 3.7 (#1027). Thanks @nkonin for reporting and @jmargeta for the PR.

2.16.1 (2018-10-17)

Bug fixes:

  • Remove spurious warning about implicit collection handling (#998). Thanks @lalvarezguillen for reporting.

2.16.0 (2018-10-10)

Bug fixes:

  • Allow username without password in basic auth part of the url in fields.Url (#982). Thanks user:alefnula for the PR.

Other changes:

  • Drop support for Python 3.3 (#987).

2.15.6 (2018-09-20)

Bug fixes:

  • Prevent TypeError when a non-collection is passed to a Schema with many=True. Instead, raise ValidationError with {'_schema': ['Invalid input type.']} (#906).

  • Fix root attribute for nested container fields on list on inheriting schemas (#956). Thanks @bmcbu for reporting.

These fixes were backported from 3.0.0b15 and 3.0.0b16.

2.15.5 (2018-09-15)

Bug fixes:

  • Handle empty SQLAlchemy lazy lists gracefully when dumping (#948). Thanks @vke-code for the catch and @YuriHeupa for the patch.

2.15.4 (2018-08-04)

Bug fixes:

  • Respect load_from when reporting errors for @validates('field_name') (#748). Thanks @m-novikov for the catch and patch.

2.15.3 (2018-05-20)

Bug fixes:

  • Fix passing only as a string to nested when the passed field defines dump_to (#800, #822). Thanks @deckar01 for the catch and patch.

2.15.2 (2018-05-10)

Bug fixes:

  • Fix a race condition in validation when concurrent threads use the same Schema instance (#783). Thanks @yupeng0921 and @lafrech for the fix.

  • Fix serialization behavior of fields.List(fields.Integer(as_string=True)) (#788). Thanks @cactus for reporting and @lafrech for the fix.

  • Fix behavior of exclude parameter when passed from parent to nested schemas (#728). Thanks @timc13 for reporting and @deckar01 for the fix.

2.15.1 (2018-04-25)

Bug fixes:

2.15.0 (2017-12-02)

Bug fixes:

2.14.0 (2017-10-23)

Features:

  • Add require_tld parameter to validate.URL (#664). Thanks @sduthil for the suggestion and the PR.

2.13.6 (2017-08-16)

Bug fixes:

2.13.5 (2017-04-12)

Bug fixes:

  • Fix validation of iso8601-formatted dates (#556). Thanks @lafrech for reporting.

2.13.4 (2017-03-19)

Bug fixes:

  • Fix symmetry of serialization and deserialization behavior when passing a dot-delimited path to the attribute parameter of fields (#450). Thanks @itajaja for reporting.

2.13.3 (2017-03-11)

Bug fixes:

  • Restore backwards-compatibility of SchemaOpts constructor (#597). Thanks @Wesmania for reporting and thanks @frol for the fix.

2.13.2 (2017-03-10)

Bug fixes:

  • Fix inheritance of ordered option when Schema subclasses define class Meta (#593). Thanks @frol.

Support:

  • Update contributing docs.

2.13.1 (2017-03-04)

Bug fixes:

  • Fix sorting on Schema subclasses when ordered=True (#592). Thanks @frol.

2.13.0 (2017-02-18)

Features:

2.12.2 (2017-01-30)

Bug fixes:

  • Unbound fields return None rather returning the field itself. This fixes a corner case introduced in #572. Thanks @touilleMan for reporting and @YuriHeupa for the fix.

2.12.1 (2017-01-23)

Bug fixes:

  • Fix behavior when a Nested field is composed within a List field (#572). Thanks @avish for reporting and @YuriHeupa for the PR.

2.12.0 (2017-01-22)

Features:

  • Allow passing nested attributes (e.g. 'child.field') to the dump_only and load_only parameters of Schema (#572). Thanks @YuriHeupa for the PR.

  • Add schemes parameter to fields.URL (#574). Thanks @mosquito for the PR.

2.11.1 (2017-01-08)

Bug fixes:

2.11.0 (2017-01-08)

Features:

  • Import marshmallow.fields in marshmallow/__init__.py to save an import when importing the marshmallow module (#557). Thanks @mindojo-victor.

Support:

  • Documentation: Improve example in “Validating Original Input Data” (#558). Thanks @altaurog.

  • Test against Python 3.6.

2.10.5 (2016-12-19)

Bug fixes:

  • Reset user-defined kwargs passed to ValidationError on each Schema.load call (#565). Thanks @jbasko for the catch and patch.

Support:

  • Tests: Fix redefinition of test_utils.test_get_value() (#562). Thanks @nelfin.

2.10.4 (2016-11-18)

Bug fixes:

2.10.3 (2016-10-02)

Bug fixes:

  • Fix behavior for serializing missing data with Number fields when as_string=True is passed (#538). Thanks @jessemyers for reporting.

2.10.2 (2016-09-25)

Bug fixes:

  • Use fixed-point notation rather than engineering notation when serializing with Decimal (#534). Thanks @gdub.

  • Fix UUID validation on serialization and deserialization of uuid.UUID objects (#532). Thanks @pauljz.

2.10.1 (2016-09-14)

Bug fixes:

  • Fix behavior when using validate.Equal(False) (#484). Thanks @pktangyue for reporting and thanks @tuukkamustonen for the fix.

  • Fix strict behavior when errors are raised in pre_dump/post_dump processors (#521). Thanks @tvuotila for the catch and patch.

  • Fix validation of nested fields on dumping (#528). Thanks again @tvuotila.

2.10.0 (2016-09-05)

Features:

  • Errors raised by pre/post-load/dump methods will be added to a schema’s errors dictionary (#472). Thanks @dbertouille for the suggestion and for the PR.

2.9.1 (2016-07-21)

Bug fixes:

  • Fix serialization of datetime.time objects with microseconds (#464). Thanks @Tim-Erwin for reporting and thanks @vuonghv for the fix.

  • Make @validates consistent with field validator behavior: if validation fails, the field will not be included in the deserialized output (#391). Thanks @martinstein for reporting and thanks @vuonghv for the fix.

2.9.0 (2016-07-06)

  • Decimal field coerces input values to a string before deserializing to a decimal.Decimal object in order to avoid transformation of float values under 12 significant digits (#434, #435). Thanks @davidthornton 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). Thanks @Tim-Erwin and @deckar01 for the discussion and implementation.

Support:

  • Update tasks.py for compatibility with invoke>=0.13.0. Thanks @deckar01.

2.7.3 (2016-05-05)

  • Make field.parent and field.name accessible to on_bind_field (#449). Thanks @immerrr.

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.

Support:

  • Update license entry in setup.py to fix RPM distributions (#433). Thanks @rrajaravi 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). Thanks @immerrr for the PR.

  • Pass through user ValidationError kwargs (#418). Thanks @russelldavies for helping implement this.

Other changes:

  • Remove unused attributes root, parent, and name from SchemaABC (#410). Thanks @Tim-Erwin for the PR.

2.6.1 (2016-03-17)

Bug fixes:

  • Respect load_from when reporting errors for nested required fields (#414). Thanks @yumike.

2.6.0 (2016-02-01)

Features:

  • Add partial argument to Schema.validate (#379). Thanks @tdevelioglu for the PR.

  • Add equal argument to validate.Length. Thanks @daniloakamine.

  • Collect all validation errors for each item deserialized by a List field (#345). Thanks @maximkulkin 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). Thanks @tdevelioglu for the PR.

  • Add schemes argument to validate.URL (#356).

2.4.2 (2015-12-08)

Bug fixes:

  • Prevent duplicate error messages when validating nested collections (#360). Thanks @alexmorken for the catch and patch.

2.4.1 (2015-12-07)

Bug fixes:

2.4.0 (2015-12-06)

Features:

Bug fixes:

  • Fix FormattedString serialization (#348). Thanks @acaird for reporting.

  • Fix @validates behavior when used when attribute is specified and strict=True (#350). Thanks @density for reporting.

2.3.0 (2015-11-22)

Features:

  • Add dump_to parameter to fields (#310). Thanks @ShayanArmanPercolate for the suggestion. Thanks @franciscod and @ewang for the PRs.

  • The deserialize function passed to fields.Function can optionally receive a context argument (#324). Thanks @DamianHeard.

  • The serialize function passed to fields.Function is optional (#325). Thanks again @DamianHeard.

  • The serialize function passed to fields.Method is optional (#329). Thanks @justanr.

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:

2.2.0 (2015-10-26)

Features:

  • Add support for partial deserialization with the partial argument to Schema and Schema.load (#290). Thanks @taion.

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). Thanks @martinstein for the suggestion and @juanrossi 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 will modify position, e.g. Pymongo cursors (#303). Thanks @Mise 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). Thanks @d-sutherland for reporting.

  • Fix usage of @validates with a nested field when many=True (#298). Thanks @nelfin 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). Thanks @fayazkhan for reporting.

2.1.0 (2015-09-30)

Features:

  • Add Dict field for arbitrary mapping data (#251). Thanks @dwieeb for adding this and @Dowwie 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). Thanks @evgeny-sureev 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).

  • 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). Use Decimal instead.

  • Remove Select / Enum fields (#135). Use the OneOf validator instead.

Bug fixes:

  • Fix error format for Nested fields when many=True. Thanks @alexmorken.

  • pre_dump methods are invoked before implicit field creation. Thanks @makmanalp for reporting.

  • Return correct “required” error message for Nested field.

  • The only argument passed to a Schema is bounded by the fields option (#183). Thanks @lustdante for the suggestion.

Changes from 2.0.0rc2:

  • error_handler and accessor options are replaced with the handle_error and get_attribute methods #284.

  • Remove marshmallow.compat.plain_function since it is no longer used.

  • Non-collection values are invalid input for List field (#231). Thanks @density for reporting.

  • Bug fix: Prevent infinite loop when validating a required, self-nested field. Thanks @Bachmann1234 for the fix.

2.0.0rc2 (2015-09-16)

Deprecation/Removals:

  • make_object is deprecated. Use a post_load method instead (#277). 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). Thanks @evgeny-sureev 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).

  • Add pass_original parameter to post_load and post_dump (#216).

  • 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). Thanks @alexmic and @kevinastone for the suggestion.

  • Allow a Field's attribute to be modified during deserialization (#266). Thanks @floqqi.

  • Allow partially-valid data to be returned for Nested fields (#269). Thanks @jomag 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). Thanks @touilleMan 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). 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). Thanks @bartaelterman and @praveen-p.

Support:

  • Documentation: Add “Using Context” section to “Extending Schemas” page (#224).

  • Include tests and docs in release tarballs (#201).

  • 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.

  • Add load_only and dump_only class Meta options. Thanks @kelvinhammond.

  • If a Nested field is required, recursively validate any required fields in the nested schema (#235). Thanks @max-orhai.

  • Improve error message if a list of dicts is not passed to a Nested field for which many=True. Thanks again @max-orhai.

Bug fixes:

  • make_object is only called after all validators and postprocessors have finished (#253). Thanks @sunsongxp 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). Thanks @density for reporting.

Other changes:

  • make_object is only called when input data are completely valid (#243). Thanks @kissgyorgy for reporting.

  • Change default error messages for URL and Email validators so that they don’t include user input (#255).

  • Email validator permits email addresses with non-ASCII characters, as per RFC 6530 (#221). Thanks @lextoumbourou for reporting and @mwstobo for sending the patch.

2.0.0b4 (2015-07-07)

Features:

  • List field respects the attribute argument of the inner field. Thanks @jmcarp.

  • The container field List field has access to its parent Schema via its parent attribute. Thanks again @jmcarp.

Deprecation/Removals:

  • Legacy validator functions have been removed (#73). Use the class-based validators in marshmallow.validate instead.

Bug fixes:

  • fields.Nested correctly serializes nested sets (#233). Thanks @traut.

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). Thanks @alexmorken.

2.0.0b3 (2015-06-14)

Features:

  • Add marshmallow.validates_schema decorator for defining schema-level validators (#116).

  • Add marshmallow.validates decorator for defining field validators as Schema methods (#116). Thanks @philtay.

  • Performance improvements.

  • Defining __marshallable__ on complex objects is no longer necessary.

  • Add fields.Constant. Thanks @kevinastone.

Deprecation/Removals:

  • Remove skip_missing class Meta option. By default, missing inputs are excluded from serialized output (#211).

  • 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). Thanks @makmanalp for reporting.

Other changes:

  • Remove unnecessary call to utils.get_value for Function and Method fields (#208). Thanks @jmcarp.

  • 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). Thanks @cmanallen 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). Thanks @philtay.

  • Backwards-incompatible: By default, NaN, Infinity, and -Infinity are invalid values for fields.Decimal. Pass allow_nan=True to allow these values. Thanks @philtay.

Changes from 2.0.0b1:

  • Fix serialization of None for Time, TimeDelta, and Date 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, #202).

  • 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).

Changes from 2.0.0a1:

  • Fix serialization of None 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). 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. 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). Thanks @jmcarp for the feedback.

  • In strict mode, a ValidationError is raised. Error messages are accessed via the ValidationError's messages attribute (#128).

  • Add allow_none parameter to fields.Field. If False (the default), validation fails when the field’s value is None (#76, #111). 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). Thanks @ksesong for the suggestion.

  • Add pre_load, post_load, pre_dump, and post_dump Schema method decorators for defining pre- and post- processing routines (#153, #179). Thanks @davidism, @taion, and @jmcarp for the suggestions and feedback. Thanks @taion for the implementation.

  • Error message for required validation is configurable. (#78). Thanks @svenstaro for the suggestion. Thanks @0xDCA for the implementation.

  • Add load_from parameter to fields (#125). Thanks @hakjoon.

  • Add load_only and dump_only parameters to fields (#61, #87). Thanks @philtay.

  • Add missing parameter to fields (#115). Thanks @philtay.

  • Schema validators can take an optional raw_data argument which contains raw input data, incl. data not specified in the schema (#127). Thanks @ryanlowe0.

  • Add validate.OneOf (#135) and validate.ContainsOnly (#149) validators. Thanks @philtay.

  • Error messages for validators can be interpolated with {input} and other values (depending on the validator).

  • fields.TimeDelta always serializes to an integer value in order to avoid rounding errors (#105). Thanks @philtay.

  • Add include class Meta option to support field names which are Python keywords (#139). Thanks @nickretallack for the suggestion.

  • exclude parameter is respected when used together with only parameter (#165). Thanks @lustdante for the catch and patch.

  • fields.List works as expected with generators and sets (#185). Thanks @sergey-aganezov-jr.

Deprecation/Removals:

  • MarshallingError and UnmarshallingError error are deprecated in favor of a single ValidationError (#160).

  • context argument passed to Method fields is deprecated. Use self.context instead (#184).

  • Remove ForcedError.

  • Remove support for generator functions that yield validators (#74). Plain generators of validators are still supported.

  • The Select/Enum field is deprecated in favor of using validate.OneOf validator (#135).

  • Remove legacy, pre-1.0 API (Schema.data and Schema.errors properties) (#73).

  • Remove null value.

Other changes:

  • Marshaller, Unmarshaller were moved to marshmallow.marshalling. These should be considered private API (#129).

  • Make allow_null=True the default for Nested fields. This will make None serialize to None rather than a dictionary with empty values (#132). Thanks @nickrellack 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). Thanks @juanrossi for reporting.

Support:

  • Fix pep8 dev dependency for flake8. Thanks @taion.

1.2.4 (2015-03-22)

Bug fixes:

  • Fix behavior of as_string on fields.Integer (#173). Thanks @taion for the catch and patch.

Other changes:

  • Remove dead code from fields.Field. Thanks @taion.

Support:

  • Correction to _postprocess method in docs. Thanks again @taion.

1.2.3 (2015-03-15)

Bug fixes:

  • Fix inheritance of ordered class Meta option (#162). Thanks @stephenfin for reporting.

1.2.2 (2015-02-23)

Bug fixes:

  • Fix behavior of skip_missing and accessor options when many=True (#137). Thanks @3rdcycle.

  • Fix bug that could cause an AttributeError when nesting schemas with schema-level validators (#144). Thanks @vovanbo 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).

  • Deserializing None returns None rather than raising an AttributeError (#123). Thanks @RealSalmon for the catch and patch.

1.2.0 (2014-12-22)

Features:

  • Add QuerySelect and QuerySelectList fields (#84).

  • Convert validators in marshmallow.validate into class-based callables to make them easier to use when declaring fields (#85).

  • Add Decimal field which is safe to use when dealing with precise numbers (#86).

Thanks @philtay for these contributions.

Bug fixes:

  • Date fields correctly deserializes to a datetime.date object when python-dateutil is not installed (#79). Thanks @malexer 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). Thanks @svenstaro for reporting and helping with this.

  • Fix error handling when deserializing invalid UUIDs (#106). Thanks @vesauimonen for the catch and patch.

  • Schema.loads correctly defaults to use the value of self.many rather than defaulting to False (#108). Thanks @davidism for the catch and patch.

  • Validators, data handlers, and preprocessors are no longer shared between schema subclasses (#88). Thanks @amikholap for reporting.

  • Fix error handling when passing a dict or list to a ValidationError (#110). Thanks @ksesong for reporting.

Deprecation:

  • The validator functions in the validate module are deprecated in favor of the class-based validators (#85).

  • The Arbitrary, Price, and Fixed fields are deprecated in favor of the Decimal field (#86).

Support:

  • Update docs theme.

  • Update contributing docs (#77).

  • Fix namespacing example in “Extending Schema” docs. Thanks @Ch00k.

  • Exclude virtualenv directories from syntax checking (#99). Thanks @svenstaro.

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.

  • 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 for reporting.

  • If a Nested field is passed many=True, None serializes to an empty list. Thanks @nickretallack for reporting.

  • Fix behavior of many argument passed to dump and load. Thanks @svenstaro for reporting and helping with this.

  • Fix skip_missing behavior for String and List fields. Thanks @malexer 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 parameter of the Field constructor is deprecated. Raise a ValidationError 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.

  • 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 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.

  • 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.

  • 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.

  • 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.

  • 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 option.

  • Add dateformat class Meta 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.