Changelog

1.2.1 (2024-03-18)

Bug fixes:

1.2.0 (2024-02-05)

Features:

  • Performance improvement to validate.FileSize (#293). Thanks @uncle-lv.

1.1.0 (2024-01-16)

Features:

  • Add type coverage (#290).

1.0.0 (2024-01-16)

Features:

  • Add field fields.File, validate.FileType, and validate.FileSize for deserializing uploaded files (#280, #282). Thanks @uncle-lv for the PR

  • Add field Config for serializing Flask configuration values (#280, #281). Thanks @greyli for the PR.

Support:

  • Support marshmallow-sqlalchemy>=0.29.0.

  • Test against Python 3.12.

  • Drop support for Python 3.7.

Other changes:

  • Backwards-incompatible: Remove `flask_marshmallow.__version__ and flask_marshmallow.__version_info__ attributes (#284). Use feature detection or importlib.metadata.version("flask-marshmallow") instead.

0.15.0 (2023-04-05)

  • Changes to supported software versions.

    • python3.6 or later and marshmallow>=3.0.0 are now required

    • Add support for python3.11

    • For sqlalchemy integration, marshmallow-sqlalchemy>=0.28.2 and flask-sqlalchemy>=3.0.0 are now required

  • Backwards-incompatible: URLFor and AbsoluteURLFor now do not accept parameters for flask.url_for as top-level parameters. They must always be passed in the values dictionary, as explained in the v0.14.0 changelog.

Bug fixes:

  • Address distutils deprecation warning in Python 3.10 (#242). Thanks @GabrielLins64 for the PR.

0.14.0 (2020-09-27)

  • Add values argument to URLFor and AbsoluteURLFor for passing values to flask.url_for. This prevents unrelated parameters from getting passed (#52, #67). Thanks @AlrasheedA for the PR.

Deprecation:

  • Passing params to flask.url_for via URLFor’s and AbsoluteURLFor’s constructor params is deprecated. Pass values instead.

# flask-marshmallow<0.14.0


class UserSchema(ma.Schema):
    _links = ma.Hyperlinks(
        {
            "self": ma.URLFor("user_detail", id="<id>"),
        }
    )


# flask-marshmallow>=0.14.0


class UserSchema(ma.Schema):
    _links = ma.Hyperlinks(
        {
            "self": ma.URLFor("user_detail", values=dict(id="<id>")),
        }
    )

0.13.0 (2020-06-07)

Bug fixes:

  • Fix compatibility with marshmallow-sqlalchemy<0.22.0 (#189). Thanks @PatrickRic for reporting.

Other changes:

  • Remove unused flask_marshmallow.sqla.SchemaOpts.

0.12.0 (2020-04-26)

  • Breaking change: ma.ModelSchema and ma.TableSchema are removed, since these are deprecated upstream.

Warning

It is highly recommended that you use the newer ma.SQLAlchemySchema and ma.SQLAlchemyAutoSchema classes instead of ModelSchema and TableSchema. See the release notes for marshmallow-sqlalchemy 0.22.0 for instructions on how to migrate.

If you need to use ModelSchema and TableSchema for the time being, you’ll need to import these directly from marshmallow_sqlalchemy.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////tmp/test.db"

db = SQLAlchemy(app)
ma = Marshmallow(app)

# flask-marshmallow<0.12.0


class AuthorSchema(ma.ModelSchema):
    class Meta:
        model = Author


# flask-marshmallow>=0.12.0 (recommended)


class AuthorSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = Author
        load_instance = True


# flask-marshmallow>=0.12.0 (not recommended)

from marshmallow_sqlalchemy import ModelSchema


class AuthorSchema(ModelSchema):
    class Meta:
        model = Author
        sql_session = db.session

Bug fixes:

  • Fix binding Flask-SQLAlchemy’s scoped session to ma.SQLAlchemySchema and ma.SQLAlchemyAutoSchema. (#180). Thanks @fnalonso for reporting.

0.11.0 (2020-02-09)

Features:

  • Add support for SQLAlchemySchema, SQLAlchemyAutoSchema, and auto_field from marshmallow-sqlalchemy>=0.22.0 (#166).

Bug fixes:

  • Properly restrict marshmallow-sqlalchemy version based on Python version (#158).

Other changes:

  • Test against Python 3.8.

0.10.1 (2019-05-05)

Bug fixes:

  • marshmallow 3.0.0rc6 compatibility (#134).

0.10.0 (2019-03-09)

Features:

  • Add ma.TableSchema (#124).

  • SQLAlchemy requirements can be installed with pip install 'flask-marshmallow[sqlalchemy]'.

Bug fixes:

Support:

  • Test against Python 3.7.

  • Drop support for Python 3.4. Only Python 2.7 and >=3.5 are supported.

0.9.0 (2018-04-29)

  • Add support for marshmallow 3 beta. Thanks @SBillion for the PR.

  • Drop support for Python 3.3. Only Python 2.7 and >=3.4 are supported.

  • Updated documentation to fix example ma.URLFor target.

0.8.0 (2017-05-28)

  • Fix compatibility with marshmallow>=3.0.

Support:

  • Backwards-incompatible: Drop support for marshmallow<=2.0.0.

  • Test against Python 3.6.

0.7.0 (2016-06-28)

  • many argument to Schema.jsonify defaults to value of the Schema instance’s many attribute (#42). Thanks @singingwolfboy.

  • Attach HyperlinkRelated to Marshmallow instances. Thanks @singingwolfboy for reporting.

Support:

  • Upgrade to invoke>=0.13.0.

  • Updated documentation to reference HyperlinkRelated instead of HyperlinkModelSchema. Thanks @singingwolfboy.

  • Updated documentation links to readthedocs.io subdomain. Thanks @adamchainz.

0.6.2 (2015-09-16)

  • Fix compatibility with marshmallow>=2.0.0rc2.

Support:

  • Tested against Python 3.5.

0.6.1 (2015-09-06)

  • Fix compatibility with marshmallow-sqlalchemy>=0.4.0 (#25). Thanks @svenstaro for reporting.

Support:

  • Include docs in release tarballs.

0.6.0 (2015-05-02)

Features:

  • Add Flask-SQLAlchemy/marshmallow-sqlalchemy support via the ModelSchema and HyperlinkModelSchema classes.

  • Schema.jsonify now takes the same arguments as marshmallow.Schema.dump. Additional keyword arguments are passed to flask.jsonify.

  • Hyperlinks field supports serializing a list of hyperlinks (#11). Thanks @royrusso for the suggestion.

Deprecation/Removal:

  • Remove support for MARSHMALLOW_DATEFORMAT and MARSHMALLOW_STRICT config options.

Other changes:

  • Drop support for marshmallow<1.2.0.

0.5.1 (2015-04-27)

  • Fix compatibility with marshmallow>=2.0.0.

0.5.0 (2015-03-29)

  • Backwards-incompatible: Remove flask_marshmallow.SchemaOpts class and remove support for MARSHMALLOW_DATEFORMAT and MARSHMALLOW_STRICT (#8). Prevents a RuntimeError when instantiating a Schema outside of a request context.

0.4.0 (2014-12-22)

  • Backwards-incompatible: Rename URL and AbsoluteURL to URLFor and AbsoluteURLFor, respectively, to prevent overriding marshmallow’s URL field (#6). Thanks @svenstaro for the suggestion.

  • Fix bug that raised an error when deserializing Hyperlinks and URL fields (#9). Thanks @raj-kesavan for reporting.

Deprecation:

  • Schema.jsonify is deprecated. Use flask.jsonify on the result of Schema.dump instead.

  • The MARSHMALLOW_DATEFORMAT and MARSHMALLOW_STRICT config values are deprecated. Use a base Schema class instead (#8).

0.3.0 (2014-10-19)

  • Supports marshmallow >= 1.0.0-a.

0.2.0 (2014-05-12)

  • Implementation as a proper class-based Flask extension.

  • Serializer and fields classes are available from the Marshmallow object.

0.1.0 (2014-04-25)

  • First release.

  • Hyperlinks, URL, and AbsoluteURL fields implemented.

  • Serializer#jsonify implemented.