Deprecations/Removals:
- Drop support for marshmallow 2, which is now EOL (:pr:`332`).
Bug fixes:
- Fix behavior when serializing
None(:pr:`302`). Thanks :user:`mahenzon`.
Other changes:
- Test against Python 3.8 and 3.9 (:pr:`332`).
Bug fixes:
- Import from collections.abc for forward-compatibility with Python 3.10 (:issue:`318`). Thanks :user:`tirkarthi`.
Bug fixes:
- Fix nested fields validation error formatting (:issue:`120`). Thanks :user:`mahenzon` and :user:`debonzi` for the PRs.
- Improve performance of link generation from Relationship (:issue:`277`). Thanks :user:`iamareebjamal` for reporting and fixing.
Deprecation/Removals:
- Drop support for Python 2.7 and 3.5. Only Python>=3.6 is supported (:issue:`251`).
- Drop support for marshmallow 3 pre-releases. Only stable versions >=2.15.2 are supported.
- Remove
fields.Meta.
Bug fixes:
- Address
DeprecationWarningraised byField.failon marshmallow 3.
Bug fixes:
- marshmallow 3.0.0rc7 compatibility (:pr:`233`).
Other changes:
Bug fixes:
- marshmallow 3.0.0rc6 cmpatibility (:pr:`221`).
Bug fixes:
- Backwards-incompatible: Revert URL quoting introduced in 0.20.2 (:issue:`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 :user:`kgutwin` for reporting the issue.
- Fix Relationship deserialization behavior when
required=False(:issue:`177`). Thanks :user:`aberres` for reporting and :user:`scottwernervt` for the fix.
Other changes:
- Test against Python 3.7.
Bug fixes:
- Fix deserializing
idfield to non-string types (:pr:`179`). Thanks :user:`aberres` for the catch and patch.
Bug fixes:
- Fix bug where multi-level nested relationships would not be properly deserialized (:issue:`127`). Thanks :user:`ww3pl` for the catch and patch.
Bug fixes:
- Fix missing load validation when data is not a collection but many=True (:pr:`161`). Thanks :user:`grantHarris`.
Bug fixes:
- Fix issues where generated URLs are unquoted (:pr:`147`). Thanks :user:`grantHarris`.
Other changes:
- Fix tests against marshmallow 3.0.0b13.
Bug fixes:
- Fix deserializing
missingwith a Relationship field (:issue:`130`). Thanks :user:`kumy` for the catch and patch.
Bug fixes:
- Fix serialization of
idforRelationshipfields whenattributeis set (:issue:`69`). Thanks :user:`jordal` for reporting and thanks :user:`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:
- Test refactoring and various doc improvements (:issue:`63`, :issue:`86`, :issue:`121,` and :issue:`122`). Thanks :user:`scottwernervt`.
Features:
- Schemas passed to
fields.Relationshipwill inherit context from the parent schema (:issue:`84`). Thanks :user:`asteinlein` and :user:`scottwernervt` for the PRs.
Features:
- Add
fields.ResourceMetafor serializing a resource-level meta object (:issue:`107`). Thanks :user:`scottwernervt`.
Other changes:
- Backwards-incompatible: Drop official support for Python 3.4.
Features:
- Add support for marshmallow 3 (:issue:`97`). Thanks :user:`rockmnew`.
- Thanks :user:`mdodsworth` for helping with :issue:`101`.
- Move meta information object to document top level (:issue:`95`). Thanks :user:`scottwernervt`.
Features:
- Add support for exluding or including nested fields on relationships (:issue:`94`). Thanks :user:`scottwernervt` for the PR.
Other changes:
- Backwards-incompatible: Drop support for marshmallow<2.8.0
Bug fixes:
- Fix pointer for
idin error objects (:issue:`90`). Thanks :user:`rgant` for the catch and patch.
Features:
Relationshipfield supports deserializing included data (:issue:`83`). Thanks :user:`anuragagarwal561994` for the suggestion and thanks :user:`asteinlein` for the PR.
Features:
Relationshiprespects its passedSchema'sget_attributemethod when getting theidfield for resource linkages (:issue:`80`). Thanks :user:`scmmmh` for the PR.
Features:
- Add support for including deeply nested relationships in compount documents (:issue:`61`). Thanks :user:`mrhanky17` for the PR.
Features:
- Use default attribute value instead of raising exception if relationship is
NoneonRelationshipfield (:issue:`75`). Thanks :user:`akira-dev`.
Bug fixes:
- Fix formatting JSON pointer when serializing an invalid object at index 0 (:issue:`77`). Thanks :user:`danpoland` for the catch and patch.
Bug fixes:
- Fix compatibility with marshmallow 3.x.
Other changes:
- Backwards-incompatible: Remove unused utils.get_value_or_raise function.
Bug fixes:
- Fix format of error object returned when
datakey is not included in input (:issue:`66`). Thanks :user:`RazerM`. - Fix serializing compound documents when
Relationshipis passed a schema class andmany=True(:issue:`67`). Thanks :user:`danpoland` for the catch and patch.
Bug fixes:
- Serialize
Noneand empty lists ([]) to valid JSON-API objects (:issue:`58`). Thanks :user:`rgant` for reporting and sending a PR.
Features:
- Add
fields.Metafor (de)serializingmetadata on resource objects (:issue:`28`). Thanks :user:`rubdos` for the suggestion and initial work. Thanks :user:`RazerM` for the PR.
Other changes:
- Test against Python 3.6.
Features:
- Add Flask-specific schema with class Meta options for self link generation:
self_view,self_view_kwargs, andself_view_many(:issue:`51`). Thanks :user:`asteinlein`.
Bug fixes:
- Fix formatting of validation error messages on newer versions of marshmallow.
Other changes:
- Drop official support for Python 3.3.
Features:
- Add support for compound documents (:issue:`11`). Thanks :user:`Tim-Erwin` and :user:`woodb` for implementing this.
- Backwards-incompatible: Remove
include_dataparameter fromRelationship. Useinclude_resource_linkageinstead.
Bug fixes:
- Format correction for error objects (:issue:`47`). Thanks :user:`ZeeD26` for the PR.
Features:
- Correctly format
messagesattribute ofValidationErrorraised whentypekey is missing in input (:issue:`43`). Thanks :user:`ZeeD26` for the catch and patch. - JSON pointers for error objects for relationships will point to the
datakey (:issue:`41`). Thanks :user:`cmanallen` for the PR.
Features:
Relationshipdeserialization improvements: properly validate to-one and to-many relatinoships and validate the presense of thedatakey (:issue:`37`). Thanks :user:`cmanallen` for the PR.attributesis no longer a required key in thedataobject (:issue:`#39`, :issue:`42`). Thanks :user:`ZeeD26` for reporting and :user:`cmanallen` for the PR.- Added
idserialization (:issue:`39`). Thanks again :user:`cmanallen`.
Features:
- Add relationship deserialization (:issue:`15`).
- Allow serialization of foreign key attributes (:issue:`32`).
- Relationship IDs serialize to strings, as is required by JSON-API (:issue:`31`).
Relationshipfield respectsdump_toparameter (:issue:`33`).
Thanks :user:`cmanallen` for all of these changes.
Other changes:
- The minimum supported marshmallow version is 2.3.0.
Bug fixes:
- Relationship names are inflected when appropriate (:issue:`22`). Thanks :user:`angelosarto` for reporting.
Bug fixes:
- Fix serializing null and empty relationships with
flask.Relationship(:issue:`24`). Thanks :user:`floqqi` for the catch and patch.
- Correctly serialize null and empty relationships (:issue:`10`). Thanks :user:`jo-tham` for the PR.
- Add
self_url,self_url_kwargs, andself_url_manyclass Meta options for addingselflinks. Thanks :user:`asteinlein` for the PR.
- Backwards-incompatible: Replace
HyperlinkRelatedwithRelationshipfield. 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.
- Fix for marshmallow 2.0.0 compat.
- Compatibility with marshmallow>=2.0.0rc2.
Features:
- Add framework-independent
HyperlinkRelatedfield. - Support inflection of attribute names via the
inflectclass Meta option.
Bug fixes:
- Fix for making
HyperlinkRelatedread-only by defualt.
Support:
- Docs updates.
- Tested on Python 3.5.
- 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.