Skip to content

Latest commit

 

History

History
662 lines (412 loc) · 18 KB

CHANGELOG.rst

File metadata and controls

662 lines (412 loc) · 18 KB

Changelog

1.0.0 (2024-01-30)

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

0.30.0 (2024-01-07)

Features:

  • Use Session.get() load instances to improve deserialization performance (548). Thanks zippolyte for the PR.

Other changes:

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

0.29.0 (2023-02-27)

Features:

  • Support SQLAlchemy 2.0 (494). Thanks dependabot for the PR.
  • Enable (in tests) and fix SQLAlchemy 2.0 compatibility warnings (493).

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) (487). Thanks ddoyon92 for the PR.

Other changes:

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

0.28.2 (2023-02-23)

Bug fixes:

  • Use .scalar_subquery() for SQLAlchemy>1.4 to suppress a warning (459). Thanks indiVar0508 for the PR.

Other changes:

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

0.28.1 (2022-07-18)

Bug fixes:

* Address DeprecationWarning re: usage of distutils (435).

Thanks Tenzer for the PR.

0.28.0 (2022-03-09)

Features:

  • Add support for generating fields from column_property (97). Thanks mrname for the PR.

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:

  • Distribute type information per PEP 561 (420). Thanks bruceadams for the PR.

Other changes:

  • Test against Python 3.10 (421).

0.26.1 (2021-06-05)

Bug fixes:

* Fix generating fields for postgreql.ARRAY columns (392).

Thanks mjpieters for the catch and patch.

0.26.0 (2021-05-26)

Bug fixes:

  • Unwrap proxied columns to handle models for subqueries (383). Thanks mjpieters for the catch and patch
  • Fix setting transient on a per-instance basis when the transient Meta option is set (388). Thanks again mjpieters.

Other changes:

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

0.25.0 (2021-05-02)

  • Add load_instance as a parameter to SQLAlchemySchema and SQLAlchemyAutoSchema (380). Thanks mjpieters for the PR.

0.24.3 (2021-04-26)

  • Fix deprecation warnings from marshmallow 3.10 and SQLAlchemy 1.4 (369). Thanks peterschutt for the PR.

0.24.2 (2021-02-07)

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

0.24.1 (2020-11-20)

  • auto_field works with association_proxy (338). Thanks AbdealiJK.

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:

  • Don't add no-op Length validator (315). Thanks taion for the PR.

0.23.0 (2020-04-26)

Bug fixes:

  • Fix data keys when using Related with a Column that is named differently from its attribute (299). Thanks peterschutt for the catch and patch.
  • Fix bug that raised an exception when using the ordered = True option on a schema that has an auto_field (306). Thanks KwonL for reporting and thanks peterschutt for the PR.

0.22.3 (2020-03-01)

Bug fixes:

  • Fix DeprecationWarning getting raised even when user code does not use TableSchema or ModelSchema (289). Thanks 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 (190). Thanks TrilceAC for reporting.
  • auto_field and field_for work with SynonymProperty (280).

Other changes:

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

0.22.1 (2020-02-09)

Bug fixes:

  • Fix behavior when passing table to auto_field (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 (240). Thanks 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 (193, 270).
  • Add include_relationships option to configure generation of marshmallow fields for relationship properties (98). Thanks 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)

  • Add support for postgresql.OID type (262). Thanks petrus-v for the PR.
  • Remove imprecise Python 3 classifier from PyPI metadata (255). Thanks ecederstrand.

0.20.0 (2019-12-01)

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

Thanks evelyn9191 for the PR.

0.19.0 (2019-09-05)

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

0.18.0 (2019-09-05)

Features:

  • marshmallow_sqlalchemy.fields.Nested propagates the value of transient on the call to load (177, 206). Thanks leonidumanskiy for reporting.

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 (223). Thanks heckad for reporting.
  • Address DeprecationWarning raised when using Related with marshmallow 3 (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 (67). Thanks nickw444 for reporting and thanks 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:

  • Add support for postgresql.MONEY type (218). Thanks heckad for the PR.

0.16.4 (2019-06-15)

Bug fixes:

  • Compatibility with marshmallow 3.0.0rc7. Thanks 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 (202).

0.16.1 (2019-03-11)

Bug fixes:

  • Fix compatibility with SQLAlchemy 1.3 (185).

0.16.0 (2019-02-03)

Features:

  • Add support for deserializing transient objects (62). Thanks jacksmith15 for the PR.

0.15.0 (2018-11-05)

Features:

  • Add ModelConverter._should_exclude_field hook (139). Thanks jeanphix for the PR.
  • Allow field kwargs to be overriden by passing info['marshmallow'] to column properties (21). Thanks dpwrussell for the suggestion and PR. Thanks jeanphix for the final implementation.

0.14.2 (2018-11-03)

Bug fixes:

  • Fix behavior of Related field (150). Thanks zezic for reporting and thanks AbdealiJK for the PR.
  • Related now works with AssociationProxy fields (151). Thanks AbdealiJK for the catch and patch.

Other changes:

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

0.14.1 (2018-07-19)

Bug fixes:

  • Fix behavior of exclude with marshmallow 3.0 (131). Thanks yaheath for reporting and thanks deckar01 for the fix.

0.14.0 (2018-05-28)

Features:

  • Make ModelSchema.session a property, which allows session to be retrieved from context (129). Thanks 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:

  • Unset instance attribute when an error occurs during a load call (114). Thanks vgavro for the catch and patch.

0.13.1 (2017-04-06)

Bug fixes:

  • Prevent unnecessary queries when using the fields.Related (106). Thanks xarg for reporting and thanks jmuhlich for the PR.

0.13.0 (2017-03-12)

Features:

  • Invalid inputs for compound primary keys raise a ValidationError when deserializing a scalar value (103). Thanks 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 (78). Thanks georgexsh for reporting.

Other changes:

  • Test against Python 3.6.

0.12.0 (2016-10-08)

Features:

  • Add support for TypeDecorator-based types (83). Thanks frol.

Bug fixes:

  • Fix bug that caused a validation errors for custom column types that have the python_type of uuid.UUID (54). Thanks wkevina and thanks kelvinhammond for the fix.

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:

  • Allow overriding field class returned by field_for by adding the field_class param (81). Thanks cancan101.

0.10.0 (2016-08-14)

Features:

  • Support for SQLAlchemy JSON type (in SQLAlchemy>=1.1) (74). Thanks ewittle for the PR.

0.9.0 (2016-07-02)

Features:

  • Enable deserialization of many-to-one nested objects that do not exist in the database (69). Thanks seanharr11 for the PR.

Bug fixes:

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

0.8.1 (2016-02-21)

Bug fixes:

  • ModelSchema and TableSchema respect field order if the ordered=True class Meta option is set (52). Thanks jeffwidman for reporting and jmcarp for the patch.
  • Declared fields are not introspected in order to support, e.g. column_property (57). Thanks jmcarp.

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 (42). Thanks dwieeb for the suggestion.

0.7.1 (2015-12-13)

Bug fixes:

  • Don't make marshmallow fields required for non-nullable columns if a column has a default value or autoincrements (47). Thanks jmcarp for the fix. Thanks AdrielVelazquez for reporting.

0.7.0 (2015-12-07)

Features:

  • Add include_fk class Meta option (36). Thanks jmcarp.
  • Non-nullable columns will generated required marshmallow Fields (40). Thanks jmcarp.
  • Improve support for MySQL BIT field (41). Thanks 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:

  • Fix serializing relationships when using non-default column names (44). Thanks jmcarp for the fix. Thanks repole for the bug report.

0.6.0 (2015-09-29)

Features:

  • Support for compound primary keys. Thanks jmcarp.

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 (26). Thanks sssilver for reporting and jmcarp for the patch.
  • Don't autogenerate fields that are in Meta.exclude (27). Thanks jmcarp.
  • Raise ModelConversionError if converting properties whose column don't define a python_type. Thanks 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 (25). Thanks sssilver for reporting.

0.4.0 (2015-09-03)

Features:

  • Add TableSchema for generating Schemas from tables (4). Thanks jmcarp.

Bug fixes:

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

Support:

  • Docs: Add new recipe for automatic generation of schemas. Thanks dpwrussell.

0.3.0 (2015-08-27)

Features:

  • Backwards-incompatible: Relationships are (de)serialized by a new, more efficient Related column (7). Thanks jmcarp.
  • Improve support for MySQL types (1). Thanks rmackinnon.
  • Improve support for Postgres ARRAY types (6). Thanks jmcarp.
  • ModelSchema no longer requires the sqla_session class Meta option. A Session can be passed to the constructor or to the ModelSchema.load method (11). Thanks dtheodor for the suggestion.

Bug fixes:

  • Null foreign keys are serialized correctly as None (8). Thanks mitchej123.
  • Properly handle a relationship specifies uselist=False (#17). Thanks dpwrussell.

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.