Skip to content

Latest commit

 

History

History
674 lines (419 loc) · 18.3 KB

CHANGELOG.rst

File metadata and controls

674 lines (419 loc) · 18.3 KB

Changelog

1.1.0 (2024-08-14)

Features:

  • sqlalchemy.Enum fields generate a corresponding marshmallow.fields.Enum field
(:issue:`485`, :issue:`112`). Thanks :user:`panda-byte` for the PR.

Support:

  • Drop support for marshmallow<3.18.0.

1.0.0 (2024-01-30)

  • Remove __version__ attribute. Use feature detection or importlib.metadata.version("marshmallow-sqlalchemy") instead (:pr:`568`).
  • Support marshmallow>=3.10.0 (:pr:`566`).
  • Passing info={"marshmallow": ...} to SQLAlchemy columns is removed, as it is redundant with the auto_field functionality (:pr:`567`).
  • Remove packaging as a dependency (:pr:`566`).
  • Support Python 3.12.

0.30.0 (2024-01-07)

Features:

Other changes:

  • Drop support for Python 3.7, which is EOL (:pr:`540`).

0.29.0 (2023-02-27)

Features:

Bug fixes:

  • Use mapper .attrs rather than .get_property and .iterate_properties to ensure registry.configure is called (call removed in SQLAlchemy 2.0.2) (:issue:`487`). Thanks :user:`ddoyon92` for the PR.

Other changes:

  • Drop support for SQLAlchemy 1.3, which is EOL (:pr:`493`).

0.28.2 (2023-02-23)

Bug fixes:

Other changes:

  • Lock SQLAlchemy<2.0 in setup.py. SQLAlchemy 2.x is not supported (:pr:`486`).
  • Test against Python 3.11 (:pr:`486`).

0.28.1 (2022-07-18)

Bug fixes:

  • Address DeprecationWarning re: usage of distutils (:pr:`435`).
Thanks :user:`Tenzer` for the PR.

0.28.0 (2022-03-09)

Features:

Other changes:

  • Drop support for Python 3.6, which is EOL.
  • Drop support for SQLAlchemy 1.2, which is EOL.

0.27.0 (2021-12-18)

Features:

Other changes:

0.26.1 (2021-06-05)

Bug fixes:

  • Fix generating fields for postgreql.ARRAY columns (:issue:`392`).
Thanks :user:`mjpieters` for the catch and patch.

0.26.0 (2021-05-26)

Bug fixes:

Other changes:

  • Backwards-incompatible: Remove deprecated ModelSchema and TableSchema classes.

0.25.0 (2021-05-02)

0.24.3 (2021-04-26)

0.24.2 (2021-02-07)

  • auto_field supports association_proxy fields with local multiplicity (uselist=True) (:issue:`364`). Thanks :user:`Unix-Code` for the catch and patch.

0.24.1 (2020-11-20)

0.24.0 (2020-10-20)

  • Backwards-incompatible: Drop support for marshmallow 2.x, which is now EOL.
  • Test against Python 3.9.

0.23.1 (2020-05-30)

Bug fixes:

0.23.0 (2020-04-26)

Bug fixes:

0.22.3 (2020-03-01)

Bug fixes:

  • Fix DeprecationWarning getting raised even when user code does not use TableSchema or ModelSchema (:issue:`289`). Thanks :user:`5uper5hoot` for reporting.

0.22.2 (2020-02-09)

Bug fixes:

  • Avoid error when using SQLAlchemyAutoSchema, ModelSchema, or fields_for_model with a model that has a SynonymProperty (:issue:`190`). Thanks :user:`TrilceAC` for reporting.
  • auto_field and field_for work with SynonymProperty (:pr:`280`).

Other changes:

  • Add hook in ModelConverter for changing field names based on SQLA columns and properties (:issue:`276`). Thanks :user:`davenquinn` for the suggestion and the PR.

0.22.1 (2020-02-09)

Bug fixes:

  • Fix behavior when passing table to auto_field (:pr:`277`).

0.22.0 (2020-02-09)

Features:

  • Add SQLAlchemySchema and SQLAlchemyAutoSchema, which have an improved API for generating marshmallow fields and overriding their arguments via auto_field (:issue:`240`). Thanks :user:`taion` for the idea and original implementation.
# Before
from marshmallow_sqlalchemy import ModelSchema, field_for

from . import models


class ArtistSchema(ModelSchema):
    class Meta:
        model = models.Artist

    id = field_for(models.Artist, "id", dump_only=True)
    created_at = field_for(models.Artist, "created_at", dump_only=True)


# After
from marshmallow_sqlalchemy import SQLAlchemySchema, auto_field

from . import models


class ArtistSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = models.Artist

    id = auto_field(dump_only=True)
    created_at = auto_field(dump_only=True)
  • Add load_instance option to configure deserialization to model instances (:issue:`193`, :issue:`270`).
  • Add include_relationships option to configure generation of marshmallow fields for relationship properties (:issue:`98`). Thanks :user:`dusktreader` for the suggestion.

Deprecations:

  • ModelSchema and TableSchema are deprecated, since SQLAlchemyAutoSchema has equivalent functionality.
# Before
from marshmallow_sqlalchemy import ModelSchema, TableSchema

from . import models


class ArtistSchema(ModelSchema):
    class Meta:
        model = models.Artist


class AlbumSchema(TableSchema):
    class Meta:
        table = models.Album.__table__


# After
from marshmallow_sqlalchemy import SQLAlchemyAutoSchema

from . import models


class ArtistSchema(SQLAlchemyAutoSchema):
    class Meta:
        model = models.Artist
        include_relationships = True
        load_instance = True


class AlbumSchema(SQLAlchemyAutoSchema):
    class Meta:
        table = models.Album.__table__
  • Passing info={"marshmallow": ...} to SQLAlchemy columns is deprecated, as it is redundant with the auto_field functionality.

Other changes:

  • Backwards-incompatible: fields_for_model does not include relationships by default. Use fields_for_model(..., include_relationships=True) to preserve the old behavior.

0.21.0 (2019-12-04)

0.20.0 (2019-12-01)

  • Add support for mysql.DATETIME and mysql.INTEGER type (:issue:`204`).
  • Add support for postgresql.CIDR type (:issue:`183`).
  • Add support for postgresql.DATE and postgresql.TIME type.

Thanks :user:`evelyn9191` for the PR.

0.19.0 (2019-09-05)

  • Drop support for Python 2.7 and 3.5 (:issue:`241`).
  • Drop support for marshmallow<2.15.2.
  • Only support sqlalchemy>=1.2.0.

0.18.0 (2019-09-05)

Features:

Note: This is the last release to support Python 2.7 and 3.5.

0.17.2 (2019-08-31)

Bug fixes:

  • Fix error handling when passing an invalid type to Related (:issue:`223`). Thanks :user:`heckad` for reporting.
  • Address DeprecationWarning raised when using Related with marshmallow 3 (:pr:`243`).

0.17.1 (2019-08-31)

Bug fixes:

  • Add marshmallow_sqlalchemy.fields.Nested field that inherits its session from its schema. This fixes a bug where an exception was raised when using Nested within a ModelSchema (:issue:`67`). Thanks :user:`nickw444` for reporting and thanks :user:`samueljsb` for the PR.

User code should be updated to use marshmallow-sqlalchemy's Nested instead of marshmallow.fields.Nested.

# Before
from marshmallow import fields
from marshmallow_sqlalchemy import ModelSchema


class ArtistSchema(ModelSchema):
    class Meta:
        model = models.Artist


class AlbumSchema(ModelSchema):
    class Meta:
        model = models.Album

    artist = fields.Nested(ArtistSchema)


# After
from marshmallow import fields
from marshmallow_sqlalchemy import ModelSchema
from marshmallow_sqlalchemy.fields import Nested


class ArtistSchema(ModelSchema):
    class Meta:
        model = models.Artist


class AlbumSchema(ModelSchema):
    class Meta:
        model = models.Album

    artist = Nested(ArtistSchema)

0.17.0 (2019-06-22)

Features:

0.16.4 (2019-06-15)

Bug fixes:

  • Compatibility with marshmallow 3.0.0rc7. Thanks :user:`heckad` for the catch and patch.

0.16.3 (2019-05-05)

Bug fixes:

  • Compatibility with marshmallow 3.0.0rc6.

0.16.2 (2019-04-10)

Bug fixes:

  • Prevent ValueError when using the exclude class Meta option with TableSchema (:pr:`202`).

0.16.1 (2019-03-11)

Bug fixes:

0.16.0 (2019-02-03)

Features:

0.15.0 (2018-11-05)

Features:

0.14.2 (2018-11-03)

Bug fixes:

Other changes:

  • Test against Python 3.7.
  • Bring development environment in line with marshmallow.

0.14.1 (2018-07-19)

Bug fixes:

0.14.0 (2018-05-28)

Features:

  • Make ModelSchema.session a property, which allows session to be retrieved from context (:issue:`129`). Thanks :user:`gtxm`.

Other changes:

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

0.13.2 (2017-10-23)

Bug fixes:

0.13.1 (2017-04-06)

Bug fixes:

0.13.0 (2017-03-12)

Features:

  • Invalid inputs for compound primary keys raise a ValidationError when deserializing a scalar value (:issue:`103`). Thanks :user:`YuriHeupa` for the PR.

Bug fixes:

  • Fix compatibility with marshmallow>=3.x.

0.12.1 (2017-01-05)

Bug fixes:

  • Reset ModelSchema.instance after each load call, allowing schema instances to be reused (:issue:`78`). Thanks :user:`georgexsh` for reporting.

Other changes:

  • Test against Python 3.6.

0.12.0 (2016-10-08)

Features:

Bug fixes:

Other changes:

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

0.11.0 (2016-10-01)

Features:

0.10.0 (2016-08-14)

Features:

0.9.0 (2016-07-02)

Features:

Bug fixes:

  • Depend on SQLAlchemy>=0.9.7, since marshmallow-sqlalchemy uses sqlalchemy.dialects.postgresql.JSONB (:issue:`65`). Thanks :user:`alejom99` for reporting.

0.8.1 (2016-02-21)

Bug fixes:

0.8.0 (2015-12-28)

Features:

  • ModelSchema and TableSchema will respect the TYPE_MAPPING class variable of Schema subclasses when converting Columns to Fields (:issue:`42`). Thanks :user:`dwieeb` for the suggestion.

0.7.1 (2015-12-13)

Bug fixes:

0.7.0 (2015-12-07)

Features:

  • Add include_fk class Meta option (:issue:`36`). Thanks :user:`jmcarp`.
  • Non-nullable columns will generated required marshmallow Fields (:issue:`40`). Thanks :user:`jmcarp`.
  • Improve support for MySQL BIT field (:issue:`41`). Thanks :user:`rudaporto`.
  • Backwards-incompatible: Remove fields.get_primary_columns in favor of fields.get_primary_keys.
  • Backwards-incompatible: Remove Related.related_columns in favor of fields.related_keys.

Bug fixes:

0.6.0 (2015-09-29)

Features:

Other changes:

  • Supports marshmallow>=2.0.0.

0.5.0 (2015-09-27)

  • Add instance argument to ModelSchema constructor and ModelSchema.load which allows for updating existing DB rows (:issue:`26`). Thanks :user:`sssilver` for reporting and :user:`jmcarp` for the patch.
  • Don't autogenerate fields that are in Meta.exclude (:issue:`27`). Thanks :user:`jmcarp`.
  • Raise ModelConversionError if converting properties whose column don't define a python_type. Thanks :user:`jmcarp`.
  • Backwards-incompatible: ModelSchema.make_object is removed in favor of decorated make_instance method for compatibility with marshmallow>=2.0.0rc2.

0.4.1 (2015-09-13)

Bug fixes:

  • Now compatible with marshmallow>=2.0.0rc1.
  • Correctly pass keyword arguments from field_for to generated List fields (:issue:`25`). Thanks :user:`sssilver` for reporting.

0.4.0 (2015-09-03)

Features:

Bug fixes:

  • Allow session to be passed to ModelSchema.validate, since it requires it. Thanks :user:`dpwrussell`.
  • When serializing, don't skip overriden fields that are part of a polymorphic hierarchy (:issue:`18`). Thanks again :user:`dpwrussell`.

Support:

0.3.0 (2015-08-27)

Features:

Bug fixes:

0.2.0 (2015-05-03)

Features:

  • Add field_for function for generating marshmallow Fields from SQLAlchemy mapped class properties.

Support:

  • Docs: Add "Overriding generated fields" section to "Recipes".

0.1.1 (2015-05-02)

Bug fixes:

  • Fix keygetter class Meta option.

0.1.0 (2015-04-28)

  • First release.