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
DeprecationWarning
raised byField.fail
on 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
id
field 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
missing
with a Relationship field (:issue:`130`). Thanks :user:`kumy` for the catch and patch.
Bug fixes:
- Fix serialization of
id
forRelationship
fields whenattribute
is 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.Relationship
will inherit context from the parent schema (:issue:`84`). Thanks :user:`asteinlein` and :user:`scottwernervt` for the PRs.
Features:
- Add
fields.ResourceMeta
for 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
id
in error objects (:issue:`90`). Thanks :user:`rgant` for the catch and patch.
Features:
Relationship
field supports deserializing included data (:issue:`83`). Thanks :user:`anuragagarwal561994` for the suggestion and thanks :user:`asteinlein` for the PR.
Features:
Relationship
respects its passedSchema's
get_attribute
method when getting theid
field 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
None
onRelationship
field (: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
data
key is not included in input (:issue:`66`). Thanks :user:`RazerM`. - Fix serializing compound documents when
Relationship
is passed a schema class andmany=True
(:issue:`67`). Thanks :user:`danpoland` for the catch and patch.
Bug fixes:
- Serialize
None
and empty lists ([]
) to valid JSON-API objects (:issue:`58`). Thanks :user:`rgant` for reporting and sending a PR.
Features:
- Add
fields.Meta
for (de)serializingmeta
data 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_data
parameter fromRelationship
. Useinclude_resource_linkage
instead.
Bug fixes:
- Format correction for error objects (:issue:`47`). Thanks :user:`ZeeD26` for the PR.
Features:
- Correctly format
messages
attribute ofValidationError
raised whentype
key 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
data
key (:issue:`41`). Thanks :user:`cmanallen` for the PR.
Features:
Relationship
deserialization improvements: properly validate to-one and to-many relatinoships and validate the presense of thedata
key (:issue:`37`). Thanks :user:`cmanallen` for the PR.attributes
is no longer a required key in thedata
object (:issue:`#39`, :issue:`42`). Thanks :user:`ZeeD26` for reporting and :user:`cmanallen` for the PR.- Added
id
serialization (: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`).
Relationship
field respectsdump_to
parameter (: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_many
class Meta options for addingself
links. Thanks :user:`asteinlein` for the PR.
- Backwards-incompatible: Replace
HyperlinkRelated
withRelationship
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.
- Fix for marshmallow 2.0.0 compat.
- Compatibility with marshmallow>=2.0.0rc2.
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.
- 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.