NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #299 most downloaded on PyPI
A lightweight library for converting complex datatypes to and from native Python datatypes.
Last release 1 months ago
08 Aug 2026
Release timing varies
gaps range from 8 days to 4 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
201 releases · first in 2013
Fix typing for Schema.dump[s] (1416).
Bug fixes:
Fix typing for Schema.dump[s] (1416).
Add type annotations to marshmallow.schema and marshmallow.validate (1407, 663).
Features:
Add type annotations to marshmallow.schema and marshmallow.validate (1407, 663).
Bug fixes:
Fix compatibility with Python < 3.5.3 (1409). Thanks lukaszdudek-silvair for reporting.
Refactoring:
Remove unnecessary BaseSchema superclass (1406).
One column per quarter.
Restore inheritance hierarchy of Number fields (1403). fields.Integer and fields.Decimal inherit from fields.Number.
Bug fixes:
Restore inheritance hierarchy of Number fields (1403). fields.Integer and fields.Decimal inherit from fields.Number.
Fix bug that raised an uncaught error when a nested schema instance had an unpickleable object in its context (1404). Thanks metheoryt for reporting.
Add more type annotations (663). Type information is distributed per PEP 561 _ . Thanks fuhrysteve for helping with this.
Features:
Add more type annotations (663). Type information is distributed per PEP 561 . Thanks fuhrysteve for helping with this.
Bug fixes:
Includes bug fix from 2.20.5.
Fix bug that raised an uncaught error when passing both a schema instance and only to Nested (1395). This bug also affected passing a schema instance
Bug fixes:
Fix bug that raised an uncaught error when passing both a schema instance and only to Nested (1395). This bug also affected passing a schema instance to fields.Pluck.
Fix propagating dot-delimited only and exclude parameters to nested schema instances (1384).
Bug fixes:
Fix propagating dot-delimited only and exclude parameters to nested schema instances (1384).
Includes bug fix from 2.20.4 (1160).
Handle when data_key is an empty string (1378). Thanks jtrakk for reporting.
Bug fixes:
Handle when data_key is an empty string (1378). Thanks jtrakk for reporting.
Bug fixes:
Handle when data_key is an empty string ( #1378 ). Thanks @jtrakk for reporting.
Includes bug fix from 2.20.3 (1376).
Bug fixes:
Includes bug fix from 2.20.3 (1376).
Fix incorrect super() call in SchemaMeta.__init__ (1362).
Fix bug when nesting fields.DateTime within fields.List or fields.Tuple (1357). This bug was introduced in 3.0.0rc9. Thanks zblz for reporting.
Bug fixes:
Fix bug when nesting fields.DateTime within fields.List or fields.Tuple (1357). This bug was introduced in 3.0.0rc9. Thanks zblz for reporting.
Field.fail is deprecated. Use Field.make_error instead.
Features:
Optimize List(Nested(...)) (779).
Minor performance improvements and cleanup (1328).
Add Schema.from_dict (1312).
Deprecations/Removals:
Field.fail is deprecated. Use Field.make_error instead.
Remove UUID validation from fields.UUID, for consistency with other fields (1132).
Support:
Various docs improvements (1329).
*Backwards-incompatible*: Validation does not occur on serialization (1132). This significantly improves serialization performance.
Features:
Backwards-incompatible: Validation does not occur on serialization (1132). This significantly improves serialization performance.
Backwards-incompatible: DateTime does not affect timezone information on serialization and deserialization (1234, 1278).
Add NaiveDateTime and AwareDateTime to enforce timezone awareness (1234, 1287).
Backwards-incompatible: List does not wrap single values in a list on serialization (1307).
Backwards-incompatible: Schema.handle_error receives many and partial as keyword arguments (1321).
Use raise from more uniformly to improve stack traces (1313).
Rename Nested.__schema to Nested._schema to prevent name mangling (1289).
Performance improvements (1309).
Deprecations/Removals:
LocalDateTime is removed (1234).
marshmallow.utils.utc is removed. Use datetime.timezone.utc instead.
Bug fixes:
Fix behavior of List(Nested("self")) (#779 (comment)).
Support:
Document usage of validate.Regexp's usage re.search (1285). Thanks macdonaldezra.
Propagate only and exclude parameters to Nested fields within List and Dict (779, 946).
Features:
Propagate only and exclude parameters to Nested fields within List and Dict (779, 946).
Use email.utils.parsedate_to_datetime instead of conditionally using dateutil for parsing RFC dates (1246).
Use internal util functions instead of conditionally using dateutil for parsing ISO 8601 datetimes, dates and times. Timezone info is now correctly deserialized whether or not dateutil is installed. (1265)
Improve error messages for validate.Range.
Use raise from error for better stack traces (1254). Thanks fuhrysteve.
python-dateutil is no longer used. This resolves the inconsistent behavior based on the presence of python-dateutil (497, 1234).
Bug fixes:
Fix method resolution for __init__ method of fields.Email and fields.URL (1268). Thanks dursk for the catch and patch.
Includes bug fixes from 2.19.4 and 2.19.5.
Other changes:
Backwards-incompatible: Rename fields.List.container to fields.List.inner, fields.Dict.key_container to fields.Dict.key_field, and fields.Dict.value_container to fields.Dict.value_field.
Switch to Azure Pipelines for CI (1261).
*Backwards-incompatible*: many is passed as a keyword argument to methods decorated with pre_load, post_load, pre_dump, post_dump, and validates_schem
Features:
Backwards-incompatible: many is passed as a keyword argument to methods decorated with pre_load, post_load, pre_dump, post_dump, and validates_schema. partial is passed as a keyword argument to methods decorated with pre_load, post_load and validates_schema. **kwargs should be added to all decorated methods.
Add min_inclusive and max_exclusive parameters to validate.Range (1221). Thanks kdop for the PR.
Bug fixes:
Fix propagation of partial to Nested containers (part of 779).
Includes bug fix from 2.19.3.
Other changes:
Backwards-incompatible: Use keyword-only arguments (1216).
*Backwards-incompatible*: Remove support for Python 2 (1120). Only Python>=3.5 is supported. Thank you rooterkyberian for the suggestion and the PR.
Support:
Backwards-incompatible: Remove support for Python 2 (1120). Only Python>=3.5 is supported. Thank you rooterkyberian for the suggestion and the PR.
Backwards-incompatible: Remove special-casing in fields.List and fields.Tuple for accessing nested attributes (1188). Use fields.List(fields.Pluck(...)) instead.
Add python_requires to setup.py (1194). Thanks hugovk.
Upgrade syntax with pyupgrade in pre-commit (1195). Thanks again hugovk.
Allow input value to be included in error messages for a number of fields (1129). Thanks hdoupe for the PR.
Features:
Allow input value to be included in error messages for a number of fields (1129). Thanks hdoupe for the PR.
Improve default error messages for OneOf and ContainsOnly (885). Thanks mcgfeller for the suggestion and maxalbert for the PR.
Deprecations/Removals:
Remove fields.FormattedString (1141). Use fields.Function or fields.Method instead.
Bug fixes:
Includes bug fix from 2.19.2.
Add fields.Tuple (1103) Thanks zblz for the PR.
Features:
Add fields.Tuple (1103) Thanks zblz for the PR.
Add fields.Mapping, which makes it easier to support other mapping types (e.g. OrderedDict) (1092). Thank sayanarijit for the suggestion and the PR.
Features:
Add fields.Tuple ( #1103 ) Thanks @zblz for the PR.
Add fields.Mapping , which makes it easier to support other mapping types (e.g. OrderedDict ) ( #1092 ). Thank @sayanarijit for the suggestion and the PR.
Make the error messages for "unknown fields" and "invalid data type" configurable (852). Thanks Dunstrom for the PR.
Features:
Make the error messages for "unknown fields" and "invalid data type" configurable (852). Thanks Dunstrom for the PR.
fields.Boolean parses "yes"/"no" values (1081). Thanks r1b.
Other changes:
Backwards-incompatible with previous 3.x versions: Change ordering of keys and values arguments to fields.Dict.
Remove unused code in marshmallow.utils: is_indexable_but_not_string, float_to_decimal, decimal_to_fixed, from_iso (1088).
Remove unused marshmallow.compat.string_types.
Bug fixes:
Includes bug fix from 2.18.0.
Add register *class Meta* option to allow bypassing marshmallow's internal class registry when memory usage is critical (660).
Features:
Add register class Meta option to allow bypassing marshmallow's internal class registry when memory usage is critical (660).
Bug fixes:
Fix serializing dict-like objects with properties (1060). Thanks taion for the fix.
Fix populating ValidationError.valid_data for List and Dict fields (766).
Other changes:
Add marshmallow.__version_info__ (1074).
Remove the marshmallow.marshalling internal module (1070).
A ValueError is raised when the missing parameter is passed for required fields (1040).
Extra keyword arguments passed to ValidationError in validators are no longer passed to the final ValidationError raised upon validation completion (996).
*Backwards-incompatible*: Rework ValidationError API. It now expects a single field name, and error structures are merged in the final ValidationError
Features:
Backwards-incompatible: Rework ValidationError API. It now expects a single field name, and error structures are merged in the final ValidationError raised when validation completes. This allows schema-level validators to raise errors for individual fields (441). Thanks maximkulkin for writing the original merge_errors implementation in 442 and thanks lafrech for completing the implementation in 1026.
Bug fixes:
Fix TypeError when serializing None with Pluck (1049). Thanks toffan for the catch and patch.
Includes bug fixes from 2.16.2 and 2.16.3.
Bug fixes:
Includes bug fixes from 2.16.2 and 2.16.3.
Support partial loading of nested fields (438). Thanks arbor-dwatson for the PR. *Note*: Subclasses of fields.Nested now take an additional partial pa
Features:
Support partial loading of nested fields (438). Thanks arbor-dwatson for the PR. Note: Subclasses of fields.Nested now take an additional partial parameter in the _deserialize method.
Bug fixes:
Restore Schema.TYPE_MAPPING, which was removed in 3.0.0b17 (1012).
Other changes:
Backwards-incompatible: _serialize and _deserialize methods of all fields.Field subclasses must accept **kwargs (1007).
Fix Date deserialization when using custom format (1001). Thanks Ondkloss for reporting.
Bug fixes:
Fix Date deserialization when using custom format (1001). Thanks Ondkloss for reporting.
Deprecations/Removals:
prefix parameter or Schema class is removed (991). The same can be achieved using a @post_dump method.
Add format option to Date field (869).
Features:
Add format option to Date field (869).
Backwards-incompatible: Rename DateTime's dateformat Meta option to datetimeformat. dateformat now applies to Date (869). Thanks knagra for implementing these changes.
Enforce ISO 8601 when deserializing date and time (899). Thanks dushr for the report and the work on the PR.
Backwards-incompatible: Raise ValueError on Schema instantiation in case of attribute or data_key collision (992).
Bug fixes:
Fix inconsistencies in field inference by refactoring the inference feature into a dedicated field (809). Thanks taion for the PR.
When unknown is not passed to Nested, default to nested Schema unknown meta option rather than RAISE (963). Thanks vgavro for the PR.
Fix loading behavior of fields.Pluck (990).
Includes bug fix from 2.16.0.
Fix root attribute for nested container fields on inheriting schemas (956). Thanks bmcbu for reporting.
Bug fixes:
Fix root attribute for nested container fields on inheriting schemas (956). Thanks bmcbu for reporting.
Bug fixes:
Fix root attribute for nested container fields on inheriting schemas ( #956 ). Thanks @bmcbu for reporting.
Raise ValidationError instead of TypeError when non-iterable types are validated with many=True (851).
Bug fixes:
Raise ValidationError instead of TypeError when non-iterable types are validated with many=True (851).
many=True no longer iterates over str and collections.abc.Mapping objects and instead raises a ValidationError with {'_schema': ['Invalid input type.']} (930).
Return [] as ValidationError.valid_data instead of {} when many=True (907).
Thanks tuukkamustonen for implementing these changes.
Add fields.Pluck for serializing a single field from a nested object (800). Thanks timc13 for the feedback and deckar01 for the implementation.
Features:
Add fields.Pluck for serializing a single field from a nested object (800). Thanks timc13 for the feedback and deckar01 for the implementation.
Backwards-incompatible: Passing a string argument as only to fields.Nested is no longer supported. Use fields.Pluck instead (800).
Raise a StringNotCollectionError if only or exclude is passed as a string to fields.Nested (931).
Backwards-incompatible: Float takes an allow_nan parameter to explicitly allow serializing and deserializing special values (nan, inf and -inf). allow_nan defaults to False.
Other changes:
Backwards-incompatible: Nested field now defaults to unknown=RAISE instead of EXCLUDE. This harmonizes behavior with Schema that already defaults to RAISE (908). Thanks tuukkamustonen.
Tested against Python 3.7.
Errors reported by a schema-level validator for a field in a Nested field are stored under corresponding field name, not _schema key (862).
Bug fixes:
Errors reported by a schema-level validator for a field in a Nested field are stored under corresponding field name, not _schema key (862).
Includes bug fix from 2.15.4.
Other changes:
Backwards-incompatible: The unknown option now defaults to RAISE (#524 (comment), 851).
Backwards-incompatible: When a schema error is raised with a dict as payload, the dict overwrites any existing error list. Before this change, it would be appended to the list.
Raise a StringNotCollectionError if only or exclude is passed as a string (316). Thanks paulocheque for reporting.
The behavior to apply when encountering unknown fields while deserializing can be controlled with the unknown option (524, 747, 127). It makes it poss
Features:
The behavior to apply when encountering unknown fields while deserializing can be controlled with the unknown option (524, 747, 127). It makes it possible to either "include", "exclude", or "raise". Thanks tuukkamustonen for the suggestion and thanks ramnes for the PR.
Warning
The default for unknown will be changed to RAISE in the next release.
Other changes:
Backwards-incompatible: Pre/Post-processors MUST return modified data. Returning None does not imply data were mutated (347). Thanks tdevelioglu for reporting.
Backwards-incompatible: only and exclude are bound by declared and additional fields. A ValueError is raised if invalid fields are passed (636). Thanks jan-23 for reporting. Thanks ikilledthecat and deckar01 for the PRs.
Format code using pre-commit (855).
Deprecations/Removals:
ValidationError.fields is removed (840). Access field instances from Schema.fields.
Clean up code for schema hooks (814). Thanks taion.
Features:
Clean up code for schema hooks (814). Thanks taion.
Minor performance improvement from simplifying utils.get_value (811). Thanks again taion.
Add require_tld argument to fields.URL (749). Thanks DenerKup for reporting and thanks surik00 for the PR.
fields.UUID deserializes bytes strings using UUID(bytes=b'...') (625). Thanks JeffBerger for the suggestion and the PR.
Bug fixes:
Fields nested within Dict correctly inherit context from their parent schema (820). Thanks RosanneZe for reporting and deckar01 for the PR.
Includes bug fix from 2.15.3.
Features:
Clean up code for schema hooks ( #814 ). Thanks @taion .
Minor performance improvement from simplifying utils.get_value ( #811 ). Thanks again @taion .
Add require_tld argument to fields.URL ( #749 ). Thanks @DenerKup for reporting and thanks @surik00 for the PR.
fields.UUID deserializes bytes strings using UUID(bytes=b'...') ( #625 ). Thanks @JeffBerger for the suggestion and the PR.
Bug fixes:
Fields nested within Dict correctly inherit context from their parent schema ( #820 ). Thanks @RosanneZe for reporting and @deckar01 for the PR.
Includes bug fix from 2.15.3.
Bug fixes: - Includes bugfixes from 2.15.2.
Bug fixes:
Includes bugfixes from 2.15.2.
*Backwards-incompatible*: missing and default values are passed in deserialized form (378). Thanks chadrik for the suggestion and thanks lafrech for t
Features:
Backwards-incompatible: missing and default values are passed in deserialized form (378). Thanks chadrik for the suggestion and thanks lafrech for the PR.
Bug fixes:
Includes the bugfix from 2.15.1.
Features:
Backwards-incompatible : missing and default values are passed in deserialized form ( #378 ). Thanks @chadrik for the suggestion and thanks @lafrech for the PR.
Bug fixes:
Includes the bugfix from 2.15.1.
*Backwards-incompatible*: Add data_key parameter to fields for specifying the key in the input and output data dict. This parameter replaces both load
Features:
Backwards-incompatible: Add data_key parameter to fields for specifying the key in the input and output data dict. This parameter replaces both load_from and dump_to (717). Thanks lafrech.
Backwards-incompatible: When pass_original=True is passed to one of the decorators and a collection is being (de)serialized, the original_data argument will be a single object unless pass_many=True is also passed to the decorator (315, 743). Thanks stj for the PR.
Backwards-incompatible: Don't recursively check nested required fields when the Nested field's key is missing (319). This reverts 235. Thanks chekunkov reporting and thanks lafrech for the PR.
Backwards-incompatible: Change error message collection for Dict field (730). Note: this is backwards-incompatible with previous 3.0.0bX versions. Thanks shabble for the report and thanks lafrech for the PR.
*Backwards-incompatible*: Schemas are always strict (377). The strict parameter is removed.
Features:
Backwards-incompatible: Schemas are always strict (377). The strict parameter is removed.
Backwards-incompatible: Schema().load and Schema().dump return data instead of a (data, errors) tuple (598).
Backwards-incompatible: Schema().load(None) raises a ValidationError (511).
See upgrading_3_0 for a guide on updating your code.
Thanks lafrech for implementing these changes. Special thanks to MichalKononenko, douglas-treadwell, and maximkulkin for the discussions on these changes.
Other changes:
Backwards-incompatible: Field name is not checked when load_from is specified (714). Thanks lafrech.
Support:
Add Code of Conduct.
Features:
Backwards-incompatible : Schemas are always strict ( #377 ). The strict parameter is removed.
Backwards-incompatible : Schema().load and Schema().dump return data instead of a (data, errors) tuple ( #598 ).
Backwards-incompatible : Schema().load(None) raises a ValidationError ( #511 ).
See Upgrading to 3.0 for a guide on updating your code.
Thanks @lafrech for implementing these changes. Special thanks to @MichalKononenko , @douglas-treadwell , and @maximkulkin for the discussions on these changes.
Other changes:
Backwards-incompatible : Field name is not checked when load_from is specified ( #714 ). Thanks @lafrech .
Support:
Add Code of Conduct .
Fixes ValidationError.valid_data when a nested field contains errors (710). This bug was introduced in 3.0.0b3. Thanks lafrech.
Bug fixes:
Fixes ValidationError.valid_data when a nested field contains errors (710). This bug was introduced in 3.0.0b3. Thanks lafrech.
Other changes:
Backwards-incompatible: Email and URL fields don't validate on serialization (608). This makes them more consistent with the other fields and improves serialization performance. Thanks again lafrech.
validate.URL requires square brackets around IPv6 URLs (707). Thanks harlov.
*Backwards-incompatible*: utils.from_iso is deprecated in favor of utils.from_iso_datetime (694). Thanks sklarsa.
Features:
Add support for structured dictionaries by providing values and keys arguments to the Dict field's constructor. This mirrors the List field's ability to validate its items (483). Thanks deckar01.
Other changes:
Backwards-incompatible: utils.from_iso is deprecated in favor of utils.from_iso_datetime (694). Thanks sklarsa.
Add support for millisecond, minute, hour, and week precisions to fields.TimeDelta (537). Thanks Fedalto for the suggestion and the PR.
Features:
Add support for millisecond, minute, hour, and week precisions to fields.TimeDelta (537). Thanks Fedalto for the suggestion and the PR.
Includes features from release 2.14.0.
Support:
Copyright year in docs uses CHANGELOG.rst's modified date for reproducible builds (679). Thanks bmwiedemann.
Test against Python 3.6 in tox. Thanks Fedalto.
Fix typo in exception message (659). Thanks wonderbeyond for reporting and thanks yoichi for the PR.
Features:
Add support for millisecond, minute, hour, and week precisions to fields.TimeDelta ( #537 ). Thanks @Fedalto for the suggestion and the PR.
Includes features from release 2.14.0.
Support:
Copyright year in docs uses CHANGELOG.rst ’s modified date for reproducible builds ( #679 ). Thanks @bmwiedemann .
Test against Python 3.6 in tox. Thanks @Fedalto .
Fix typo in exception message ( #659 ). Thanks @wonderbeyond for reporting and thanks @yoichi for the PR.
Deprecate json_module option in favor of render_module (364, 130). Thanks justanr for the suggestion.
Features:
Add valid_data attribute to ValidationError.
Add strict parameter to Integer (667). Thanks yoichi.
Deprecations/Removals:
Deprecate json_module option in favor of render_module (364, 130). Thanks justanr for the suggestion.
Bug fixes:
Includes bug fixes from releases 2.13.5 and 2.13.6.
Backwards-incompatible: Number fields don't accept booleans as valid input (623). Thanks tuukkamustonen for the suggestion and thanks rowillia for the PR.
Support:
Add benchmark script. Thanks rowillia.
Add truthy and falsy params to fields.Boolean (580). Thanks zwack for the PR. Note: This is potentially a breaking change if your code passes the defa…
Features:
Add truthy and falsy params to fields.Boolean (580). Thanks zwack for the PR. Note: This is potentially a breaking change if your code passes the default parameter positionally. Pass default as a keyword argument instead, e.g. fields.Boolean(default=True).
Other changes:
Backwards-incompatible: validate.ContainsOnly allows empty and duplicate values (516, 603). Thanks maximkulkin for the suggestion and thanks lafrech for the PR.
Bug fixes:
Includes bug fixes from release 2.13.4.
fields.Nested respects only='field' when deserializing (307). Thanks erlingbo for the suggestion and the PR.
Features:
fields.Nested respects only='field' when deserializing (307). Thanks erlingbo for the suggestion and the PR.
fields.Boolean parses "on"/"off" (580). Thanks marcellarius for the suggestion.
Other changes:
Includes changes from release 2.13.2.
Backwards-incompatible: skip_on_field_errors defaults to True for validates_schema (352).
This is consistent with the behavior of inspect.signature. This change prevents a DeprecationWarning on Python 3.5 (415, 479). Thanks deckar01 for the…
Features:
dump_only and load_only for Function and Method are set based on serialize and deserialize arguments (328).
Other changes:
Backwards-incompatible: fields.Method and fields.Function no longer swallow AttributeErrors (395). Thanks bereal for the suggestion.
Backwards-incompatible: validators.Length is no longer a subclass of validators.Range (458). Thanks deckar01 for the catch and patch.
Backwards-incompatible: utils.get_func_args no longer returns bound arguments. This is consistent with the behavior of inspect.signature. This change prevents a DeprecationWarning on Python 3.5 (415, 479). Thanks deckar01 for the PR.
Backwards-incompatible: Change the signature of utils.get_value and Schema.get_attribute for consistency with Python builtins (e.g. getattr) (341). Thanks stas for reporting and thanks deckar01 for the PR.
Backwards-incompatible: Don't unconditionally call callable attributes (430, reverts 242). Thanks mirko for the suggestion.
Drop support for Python 2.6 and 3.3.
Deprecation/Removals:
Remove __error_handler__, __accessor__, @Schema.error_handler, and @Schema.accessor. Override Schema.handle_error and Schema.get_attribute instead.
Remove func parameter of fields.Function. Remove method_name parameter of fields.Method (issue:325). Use the serialize parameter instead.
Remove extra parameter from Schema. Use a @post_dump method to add additional data.
Don't match string-ending newlines in URL and Email fields (1522). Thanks nbanmp for the PR.
Bug fixes:
Don't match string-ending newlines in URL and Email fields (1522). Thanks nbanmp for the PR.
Other changes:
Drop support for Python 3.4 (1525).
Fix behavior when a non-list collection is passed to the validate argument of fields.Email and fields.URL (1400).
Bug fixes:
Fix behavior when a non-list collection is passed to the validate argument of fields.Email and fields.URL (1400).
Respect the many value on Schema instances passed to Nested (1160). Thanks Kamforka for reporting.
Bug fixes:
Respect the many value on Schema instances passed to Nested (1160). Thanks Kamforka for reporting.
Bug fixes:
Respect the many value on Schema instances passed to Nested ( #1160 ). Thanks @Kamforka for reporting.
Don't swallow TypeError exceptions raised by Field._bind_to_schema or Schema.on_bind_field (1376).
Bug fixes:
Don't swallow TypeError exceptions raised by Field._bind_to_schema or Schema.on_bind_field (1376).
Prevent warning about importing from collections on Python 3.7 (1354). Thanks nicktimko for the PR.
Bug fixes:
Prevent warning about importing from collections on Python 3.7 (1354). Thanks nicktimko for the PR.
Bug fixes:
Prevent warning about importing from collections on Python 3.7 ( #1354 ). Thanks @nicktimko for the PR.
Fix bug that raised TypeError when invalid data type is passed to a nested schema with @validates (1342).
Bug fixes:
Fix bug that raised TypeError when invalid data type is passed to a nested schema with @validates (1342).
Fix deprecated functions' compatibility with Python 2 (1337). Thanks airstandley for the catch and patch.
Bug fixes:
Fix deprecated functions' compatibility with Python 2 (1337). Thanks airstandley for the catch and patch.
Fix error message consistency for invalid input types on nested fields (1303). This is a backport of the fix in 857. Thanks cristi23 for the thorough bug report and the PR.
Deprecation/Removals:
Python 2.6 is no longer officially supported (1274).
Fix deserializing ISO8601-formatted datetimes with less than 6-digit miroseconds (1251). Thanks diego-plan9 for reporting.
Bug fixes:
Fix deserializing ISO8601-formatted datetimes with less than 6-digit miroseconds (1251). Thanks diego-plan9 for reporting.
Bug fixes:
Fix deserializing ISO8601-formatted datetimes with less than 6-digit miroseconds ( #1251 ). Thanks @diego-plan9 for reporting.
Microseconds no longer gets lost when deserializing datetimes without dateutil installed (1147).
Bug fixes:
Microseconds no longer gets lost when deserializing datetimes without dateutil installed (1147).
Fix bug where nested fields in Meta.exclude would not work on multiple instantiations (1212). Thanks MHannila for reporting.
Bug fixes:
Fix bug where nested fields in Meta.exclude would not work on multiple instantiations (1212). Thanks MHannila for reporting.
Bug fixes:
Fix bug where nested fields in Meta.exclude would not work on multiple instantiations ( #1212 ). Thanks @MHannila for reporting.
Handle OverflowError when (de)serializing large integers with fields.Float (1177). Thanks brycedrennan for the PR.
Bug fixes:
Handle OverflowError when (de)serializing large integers with fields.Float (1177). Thanks brycedrennan for the PR.
Bug fixes:
Handle OverflowError when (de)serializing large integers with fields.Float ( #1177 ). Thanks @brycedrennan for the PR.
Fix bug where Nested(many=True) would skip first element when serializing a generator (1163). Thanks khvn26 for the catch and patch.
Bug fixes:
Fix bug where Nested(many=True) would skip first element when serializing a generator (1163). Thanks khvn26 for the catch and patch.
A RemovedInMarshmallow3 warning is raised when using fields.FormattedString. Use fields.Method or fields.Function instead (1141).
Deprecation/Removal:
A RemovedInMarshmallow3 warning is raised when using fields.FormattedString. Use fields.Method or fields.Function instead (1141).
A ChangedInMarshmallow3Warning is no longer raised when strict=False (1108). Thanks Aegdesil for reporting.
Bug fixes:
A ChangedInMarshmallow3Warning is no longer raised when strict=False (1108). Thanks Aegdesil for reporting.
Bug fixes:
A ChangedInMarshmallow3Warning is no longer raised when strict=False ( #1108 ). Thanks @Aegdesil for reporting.
Add warnings for functions in marshmallow.utils that are removed in marshmallow 3.
Features:
Add warnings for functions in marshmallow.utils that are removed in marshmallow 3.
Bug fixes:
Copying missing with copy.copy or copy.deepcopy will not duplicate it (1099).
Add warnings for API that is deprecated or changed to help users prepare for marshmallow 3 (1075).
Features:
Add marshmallow.__version_info__ (1074).
Add warnings for API that is deprecated or changed to help users prepare for marshmallow 3 (1075).
Prevent memory leak when dynamically creating classes with type() (732). Thanks asmodehn for writing the tests to reproduce this issue.
Bug fixes:
Prevent memory leak when dynamically creating classes with type() (732). Thanks asmodehn for writing the tests to reproduce this issue.
Bug fixes:
Prevent memory leak when dynamically creating classes with type() ( #732 ). Thanks @asmodehn for writing the tests to reproduce this issue.
Prevent warning about importing from collections on Python 3.7 (1027). Thanks nkonin for reporting and jmargeta for the PR.
Bug fixes:
Prevent warning about importing from collections on Python 3.7 (1027). Thanks nkonin for reporting and jmargeta for the PR.
Bug fixes:
Prevent warning about importing from collections on Python 3.7 ( #1027 ). Thanks @nkonin for reporting and @jmargeta for the PR.
Remove spurious warning about implicit collection handling (998). Thanks lalvarezguillen for reporting.
Bug fixes:
Remove spurious warning about implicit collection handling (998). Thanks lalvarezguillen for reporting.
Bug fixes:
Remove spurious warning about implicit collection handling ( #998 ). Thanks @lalvarezguillen for reporting.
Allow username without password in basic auth part of the url in fields.Url (982). Thanks user:alefnula for the PR.
Bug fixes:
Allow username without password in basic auth part of the url in fields.Url (982). Thanks user:alefnula for the PR.
Other changes:
Drop support for Python 3.3 (987).
Your coding agent can read these notes before it upgrades. Set up the MCP server →