Bug fixes:
- Fix File field when it receives an empty value (:pr:`301`, :issue:`apiflask/apiflask#551`). Thanks :user:`uncle-lv`.
- Fix validate.FileSize to handle SpooledTemporaryFile (:pr:`300`). Thanks again :user:`uncle-lv`.
Features:
- Performance improvement to validate.FileSize (:pr:`293`). Thanks :user:`uncle-lv`.
Features:
- Add type coverage (:pr:`290`).
Features:
- Add field
fields.File
,validate.FileType
, andvalidate.FileSize
for deserializing uploaded files (:issue:`280`, :pr:`282`). Thanks :user:`uncle-lv` for the PR - Add field
Config
for serializing Flask configuration values (:issue:`280`, :pr:`281`). Thanks :user:`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__
andflask_marshmallow.__version_info__
attributes (:pr:`284`). Use feature detection orimportlib.metadata.version("flask-marshmallow")
instead.
- 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
andAbsoluteURLFor
now do not accept parameters forflask.url_for
as top-level parameters. They must always be passed in thevalues
dictionary, as explained in the v0.14.0 changelog.
Bug fixes:
- Address distutils deprecation warning in Python 3.10 (:pr:`242`). Thanks :user:`GabrielLins64` for the PR.
- Add
values
argument toURLFor
andAbsoluteURLFor
for passing values toflask.url_for
. This prevents unrelated parameters from getting passed (:issue:`52`, :issue:`67`). Thanks :user:`AlrasheedA` for the PR.
Deprecation:
- Passing params to
flask.url_for
viaURLFor
's andAbsoluteURLFor
's constructor params is deprecated. Passvalues
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>")),
}
)
Bug fixes:
- Fix compatibility with marshmallow-sqlalchemy<0.22.0 (:issue:`189`). Thanks :user:`PatrickRic` for reporting.
Other changes:
- Remove unused
flask_marshmallow.sqla.SchemaOpts
.
- Breaking change:
ma.ModelSchema
andma.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
andma.SQLAlchemyAutoSchema
. (:issue:`180`). Thanks :user:`fnalonso` for reporting.
Features:
- Add support for
SQLAlchemySchema
,SQLAlchemyAutoSchema
, andauto_field
from marshmallow-sqlalchemy>=0.22.0 (:pr:`166`).
Bug fixes:
- Properly restrict marshmallow-sqlalchemy version based on Python version (:pr:`158`).
Other changes:
- Test against Python 3.8.
Bug fixes:
- marshmallow 3.0.0rc6 compatibility (:pr:`134`).
Features:
- Add ma.TableSchema (:pr:`124`).
- SQLAlchemy requirements can be installed with
pip install 'flask-marshmallow[sqlalchemy]'
.
Bug fixes:
URLFor
,AbsoluteURLFor
, andHyperlinkRelated
serialize toNone
if a passed attribute value isNone
(:issue:`18`, :issue:`68`, :pr:`72`). Thanks :user:`RobinRamuel`, :user:`ocervell`, and :user:`feigner` for reporting.
Support:
- Test against Python 3.7.
- Drop support for Python 3.4. Only Python 2.7 and >=3.5 are supported.
- Add support for marshmallow 3 beta. Thanks :user:`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.
- Fix compatibility with marshmallow>=3.0.
Support:
- Backwards-incompatible: Drop support for marshmallow<=2.0.0.
- Test against Python 3.6.
many
argument toSchema.jsonify
defaults to value of theSchema
instance'smany
attribute (:issue:`42`). Thanks :user:`singingwolfboy`.- Attach HyperlinkRelated to Marshmallow instances. Thanks :user:`singingwolfboy` for reporting.
Support:
- Upgrade to invoke>=0.13.0.
- Updated documentation to reference HyperlinkRelated instead of HyperlinkModelSchema. Thanks :user:`singingwolfboy`.
- Updated documentation links to readthedocs.io subdomain. Thanks :user:`adamchainz`.
- Fix compatibility with marshmallow>=2.0.0rc2.
Support:
- Tested against Python 3.5.
- Fix compatibility with marshmallow-sqlalchemy>=0.4.0 (:issue:`25`). Thanks :user:`svenstaro` for reporting.
Support:
- Include docs in release tarballs.
Features:
- Add Flask-SQLAlchemy/marshmallow-sqlalchemy support via the
ModelSchema
andHyperlinkModelSchema
classes. Schema.jsonify
now takes the same arguments asmarshmallow.Schema.dump
. Additional keyword arguments are passed toflask.jsonify
.Hyperlinks
field supports serializing a list of hyperlinks (:issue:`11`). Thanks :user:`royrusso` for the suggestion.
Deprecation/Removal:
- Remove support for
MARSHMALLOW_DATEFORMAT
andMARSHMALLOW_STRICT
config options.
Other changes:
- Drop support for marshmallow<1.2.0.
- Fix compatibility with marshmallow>=2.0.0.
- Backwards-incompatible: Remove
flask_marshmallow.SchemaOpts
class and remove support forMARSHMALLOW_DATEFORMAT
andMARSHMALLOW_STRICT
(:issue:`8`). Prevents aRuntimeError
when instantiating aSchema
outside of a request context.
- Backwards-incompatible: Rename
URL
andAbsoluteURL
toURLFor
andAbsoluteURLFor
, respectively, to prevent overriding marshmallow'sURL
field (:issue:`6`). Thanks :user:`svenstaro` for the suggestion. - Fix bug that raised an error when deserializing
Hyperlinks
andURL
fields (:issue:`9`). Thanks :user:`raj-kesavan` for reporting.
Deprecation:
Schema.jsonify
is deprecated. Useflask.jsonify
on the result ofSchema.dump
instead.- The
MARSHMALLOW_DATEFORMAT
andMARSHMALLOW_STRICT
config values are deprecated. Use a baseSchema
class instead (:issue:`8`).
- Supports marshmallow >= 1.0.0-a.
- Implementation as a proper class-based Flask extension.
- Serializer and fields classes are available from the
Marshmallow
object.
- First release.
Hyperlinks
,URL
, andAbsoluteURL
fields implemented.Serializer#jsonify
implemented.