Changelog

0.24.0 (2020-12-27)

Deprecations/Removals:

  • Drop support for marshmallow 2, which is now EOL (#332).

Bug fixes:

Other changes:

  • Test against Python 3.8 and 3.9 (#332).

0.23.2 (2020-07-20)

Bug fixes:

0.23.1 (2020-03-22)

Bug fixes:

0.23.0 (2020-02-02)

  • Improve performance of link generation from Relationship (#277). Thanks @iamareebjamal for reporting and fixing.

0.22.0 (2019-09-15)

Deprecation/Removals:

  • Drop support for Python 2.7 and 3.5. Only Python>=3.6 is supported (#251).

  • Drop support for marshmallow 3 pre-releases. Only stable versions >=2.15.2 are supported.

  • Remove fields.Meta.

Bug fixes:

  • Address DeprecationWarning raised by Field.fail on marshmallow 3.

0.21.2 (2019-07-01)

Bug fixes:

  • marshmallow 3.0.0rc7 compatibility (#233).

Other changes:

  • Format with pyupgrade and black (#235).

  • Switch to Azure Pipelines for CI (#234).

0.21.1 (2019-05-05)

Bug fixes:

  • marshmallow 3.0.0rc6 cmpatibility (#221).

0.21.0 (2018-12-16)

Bug fixes:

  • Backwards-incompatible: Revert URL quoting introduced in 0.20.2 (#184). If you need quoting, override Schema.generate_url.

from marshmallow_jsonapi import Schema
from werkzeug.urls import url_fix


class MySchema(Schema):
    def generate_url(self, link, **kwargs):
        url = super().generate_url(link, **kwargs)
        return url_fix(url)

Thanks @kgutwin for reporting the issue.

  • Fix Relationship deserialization behavior when required=False (#177). Thanks @aberres for reporting and @scottwernervt for the fix.

Other changes:

  • Test against Python 3.7.

0.20.5 (2018-10-27)

Bug fixes:

  • Fix deserializing id field to non-string types (#179). Thanks @aberres for the catch and patch.

0.20.4 (2018-10-04)

Bug fixes:

  • Fix bug where multi-level nested relationships would not be properly deserialized (#127). Thanks @ww3pl for the catch and patch.

0.20.3 (2018-09-13)

Bug fixes:

  • Fix missing load validation when data is not a collection but many=True (#161). Thanks @grantHarris.

0.20.2 (2018-08-15)

Bug fixes:

Other changes:

  • Fix tests against marshmallow 3.0.0b13.

0.20.1 (2018-07-15)

Bug fixes:

  • Fix deserializing missing with a Relationship field (#130). Thanks @kumy for the catch and patch.

0.20.0 (2018-06-10)

Bug fixes:

  • Fix serialization of id for Relationship fields when attribute is set (#69). Thanks @jordal for reporting and thanks @scottwernervt for the fix.

Note: The above fix could break some code that set Relationship.id_field before instantiating it. Set Relationship.default_id_field instead.

# before
fields.Relationship.id_field = "item_id"

# after
fields.Relationship.default_id_field = "item_id"

Support:

0.19.0 (2018-05-27)

Features:

  • Schemas passed to fields.Relationship will inherit context from the parent schema (#84). Thanks @asteinlein and @scottwernervt for the PRs.

0.18.0 (2018-05-19)

Features:

  • Add fields.ResourceMeta for serializing a resource-level meta object (#107). Thanks @scottwernervt.

Other changes:

  • Backwards-incompatible: Drop official support for Python 3.4.

0.17.0 (2018-04-29)

Features:

0.16.0 (2017-11-08)

Features:

  • Add support for exluding or including nested fields on relationships (#94). Thanks @scottwernervt for the PR.

Other changes:

  • Backwards-incompatible: Drop support for marshmallow<2.8.0

0.15.1 (2017-08-23)

Bug fixes:

  • Fix pointer for id in error objects (#90). Thanks @rgant for the catch and patch.

0.15.0 (2017-06-27)

Features:

0.14.0 (2017-04-30)

Features:

  • Relationship respects its passed Schema's get_attribute method when getting the id field for resource linkages (#80). Thanks @scmmmh for the PR.

0.13.0 (2017-04-18)

Features:

  • Add support for including deeply nested relationships in compount documents (#61). Thanks @mrhanky17 for the PR.

0.12.0 (2017-04-16)

Features:

  • Use default attribute value instead of raising exception if relationship is None on Relationship field (#75). Thanks @akira-dev.

0.11.1 (2017-04-06)

Bug fixes:

  • Fix formatting JSON pointer when serializing an invalid object at index 0 (#77). Thanks @danpoland for the catch and patch.

0.11.0 (2017-03-12)

Bug fixes:

  • Fix compatibility with marshmallow 3.x.

Other changes:

  • Backwards-incompatible: Remove unused utils.get_value_or_raise function.

0.10.2 (2017-03-08)

Bug fixes:

  • Fix format of error object returned when data key is not included in input (#66). Thanks @RazerM.

  • Fix serializing compound documents when Relationship is passed a schema class and many=True (#67). Thanks @danpoland for the catch and patch.

0.10.1 (2017-02-05)

Bug fixes:

  • Serialize None and empty lists ([]) to valid JSON-API objects (#58). Thanks @rgant for reporting and sending a PR.

0.10.0 (2017-01-05)

Features:

  • Add fields.Meta for (de)serializing meta data on resource objects (#28). Thanks @rubdos for the suggestion and initial work. Thanks @RazerM for the PR.

Other changes:

  • Test against Python 3.6.

0.9.0 (2016-10-08)

Features:

  • Add Flask-specific schema with class Meta options for self link generation: self_view, self_view_kwargs, and self_view_many (#51). Thanks @asteinlein.

Bug fixes:

  • Fix formatting of validation error messages on newer versions of marshmallow.

Other changes:

  • Drop official support for Python 3.3.

0.8.0 (2016-06-20)

Features:

  • Add support for compound documents (#11). Thanks @Tim-Erwin and @woodb for implementing this.

  • Backwards-incompatible: Remove include_data parameter from Relationship. Use include_resource_linkage instead.

0.7.1 (2016-05-08)

Bug fixes:

  • Format correction for error objects (#47). Thanks @ZeeD26 for the PR.

0.7.0 (2016-04-03)

Features:

  • Correctly format messages attribute of ValidationError raised when type key is missing in input (#43). Thanks @ZeeD26 for the catch and patch.

  • JSON pointers for error objects for relationships will point to the data key (#41). Thanks @cmanallen for the PR.

0.6.0 (2016-03-24)

Features:

  • Relationship deserialization improvements: properly validate to-one and to-many relatinoships and validate the presense of the data key (#37). Thanks @cmanallen for the PR.

  • attributes is no longer a required key in the data object (#39, #42). Thanks @ZeeD26 for reporting and @cmanallen for the PR.

  • Added id serialization (#39). Thanks again @cmanallen.

0.5.0 (2016-02-08)

Features:

  • Add relationship deserialization (#15).

  • Allow serialization of foreign key attributes (#32).

  • Relationship IDs serialize to strings, as is required by JSON-API (#31).

  • Relationship field respects dump_to parameter (#33).

Thanks @cmanallen for all of these changes.

Other changes:

  • The minimum supported marshmallow version is 2.3.0.

0.4.2 (2015-12-21)

Bug fixes:

  • Relationship names are inflected when appropriate (#22). Thanks @angelosarto for reporting.

0.4.1 (2015-12-19)

Bug fixes:

  • Fix serializing null and empty relationships with flask.Relationship (#24). Thanks @floqqi for the catch and patch.

0.4.0 (2015-12-06)

  • Correctly serialize null and empty relationships (#10). Thanks @jo-tham for the PR.

  • Add self_url, self_url_kwargs, and self_url_many class Meta options for adding self links. Thanks @asteinlein for the PR.

0.3.0 (2015-10-18)

  • Backwards-incompatible: Replace HyperlinkRelated with Relationship field. Supports related links (related), relationship links (self), and resource linkages.

  • Backwards-incompatible: Validate and deserialize JSON API-formatted request payloads.

  • Fix error formatting when many=True.

  • Fix error formatting in strict mode.

0.2.2 (2015-09-26)

  • Fix for marshmallow 2.0.0 compat.

0.2.1 (2015-09-16)

  • Compatibility with marshmallow>=2.0.0rc2.

0.2.0 (2015-09-13)

Features:

  • Add framework-independent HyperlinkRelated field.

  • Support inflection of attribute names via the inflect class Meta option.

Bug fixes:

  • Fix for making HyperlinkRelated read-only by defualt.

Support:

  • Docs updates.

  • Tested on Python 3.5.

0.1.0 (2015-09-12)

  • First PyPI release.

  • Include Schema that serializes objects to resource objects.

  • Flask-compatible HyperlinkRelate field for serializing relationships.

  • Errors are formatted as JSON API errror objects.