Hello community, here is the log from the commit of package python-marshmallow for openSUSE:Factory checked in at 2019-11-14 23:52:56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-marshmallow (Old) and /work/SRC/openSUSE:Factory/.python-marshmallow.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-marshmallow" Thu Nov 14 23:52:56 2019 rev:12 rq:748433 version:3.2.2 Changes: -------- --- /work/SRC/openSUSE:Factory/python-marshmallow/python-marshmallow.changes 2019-10-09 15:19:45.512451727 +0200 +++ /work/SRC/openSUSE:Factory/.python-marshmallow.new.26869/python-marshmallow.changes 2019-11-14 23:52:57.464529787 +0100 @@ -1,0 +2,10 @@ +Wed Nov 13 15:40:31 UTC 2019 - Sebastian Wagner <[email protected]> + +- Update to version 3.2.2: + - Bug fixes: + - Don't load fields for which ``load_only`` and ``dump_only`` are both ``True`` (:pr:`1448`). + - Fix types in ``marshmallow.validate`` (:pr:`1446`). + - Support: + - Test against Python 3.8 (pr:`1431`). + +------------------------------------------------------------------- Old: ---- marshmallow-3.2.1.tar.gz New: ---- marshmallow-3.2.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-marshmallow.spec ++++++ --- /var/tmp/diff_new_pack.Ayk8vF/_old 2019-11-14 23:52:57.976529609 +0100 +++ /var/tmp/diff_new_pack.Ayk8vF/_new 2019-11-14 23:52:57.976529609 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-marshmallow # -# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2019 SUSE LLC. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ %{?!python_module:%define python_module() python-%{**} python3-%{**}} %define skip_python2 1 Name: python-marshmallow -Version: 3.2.1 +Version: 3.2.2 Release: 0 Summary: ORM/ODM/framework-agnostic library to convert datatypes from/to Python types License: MIT AND BSD-3-Clause ++++++ marshmallow-3.2.1.tar.gz -> marshmallow-3.2.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/AUTHORS.rst new/marshmallow-3.2.2/AUTHORS.rst --- old/marshmallow-3.2.1/AUTHORS.rst 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/AUTHORS.rst 2019-11-04 22:14:53.000000000 +0100 @@ -139,3 +139,4 @@ - Charles-Axel Dein `@charlax <https://github.com/charlax>`_ - `@phrfpeixoto <https://github.com/phrfpeixoto>`_ - `@jceresini <https://github.com/jceresini>`_ +- Nikolay Shebanov `@killthekitten <https://github.com/killthekitten>`_ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/CHANGELOG.rst new/marshmallow-3.2.2/CHANGELOG.rst --- old/marshmallow-3.2.1/CHANGELOG.rst 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/CHANGELOG.rst 2019-11-04 22:14:53.000000000 +0100 @@ -1,6 +1,18 @@ Changelog --------- +3.2.2 (2019-11-04) +****************** + +Bug fixes: + +- Don't load fields for which ``load_only`` and ``dump_only`` are both ``True`` (:pr:`1448`). +- Fix types in ``marshmallow.validate`` (:pr:`1446`). + +Support: + +- Test against Python 3.8 (pr:`1431`). + 3.2.1 (2019-09-30) ++++++++++++++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/PKG-INFO new/marshmallow-3.2.2/PKG-INFO --- old/marshmallow-3.2.1/PKG-INFO 2019-10-01 05:36:28.000000000 +0200 +++ new/marshmallow-3.2.2/PKG-INFO 2019-11-04 22:15:05.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: marshmallow -Version: 3.2.1 +Version: 3.2.2 Summary: A lightweight library for converting complex datatypes to and from native Python datatypes. Home-page: https://github.com/marshmallow-code/marshmallow Author: Steven Loria @@ -186,8 +186,9 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 Requires-Python: >=3.5 -Provides-Extra: dev +Provides-Extra: tests Provides-Extra: lint Provides-Extra: docs -Provides-Extra: tests +Provides-Extra: dev diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/setup.py new/marshmallow-3.2.2/setup.py --- old/marshmallow-3.2.1/setup.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/setup.py 2019-11-04 22:14:53.000000000 +0100 @@ -4,13 +4,13 @@ EXTRAS_REQUIRE = { "tests": ["pytest", "pytz", "simplejson"], "lint": [ - "mypy==0.730", - "flake8==3.7.8", + "mypy==0.740", + "flake8==3.7.9", "flake8-bugbear==19.8.0", - "pre-commit~=1.17", + "pre-commit~=1.20", ], "docs": [ - "sphinx==2.2.0", + "sphinx==2.2.1", "sphinx-issues==1.2.0", "alabaster==0.7.12", "sphinx-version-warning==1.1.2", @@ -80,6 +80,7 @@ "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", + "Programming Language :: Python :: 3.8", ], test_suite="tests", project_urls={ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow/__init__.py new/marshmallow-3.2.2/src/marshmallow/__init__.py --- old/marshmallow-3.2.1/src/marshmallow/__init__.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow/__init__.py 2019-11-04 22:14:53.000000000 +0100 @@ -13,7 +13,7 @@ from marshmallow.exceptions import ValidationError from distutils.version import LooseVersion -__version__ = "3.2.1" +__version__ = "3.2.2" __version_info__ = tuple(LooseVersion(__version__).version) __all__ = [ "EXCLUDE", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow/error_store.py new/marshmallow-3.2.2/src/marshmallow/error_store.py --- old/marshmallow-3.2.1/src/marshmallow/error_store.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow/error_store.py 2019-11-04 22:14:53.000000000 +0100 @@ -54,7 +54,7 @@ return errors return dict(errors1, **{SCHEMA: merge_errors(errors1.get(SCHEMA), errors2)}) if isinstance(errors2, list): - return [errors1] + errors2 if errors2 else errors1 + return [errors1] + errors2 if isinstance(errors2, dict): return dict(errors2, **{SCHEMA: merge_errors(errors1, errors2.get(SCHEMA))}) return [errors1, errors2] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow/schema.py new/marshmallow-3.2.2/src/marshmallow/schema.py --- old/marshmallow-3.2.1/src/marshmallow/schema.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow/schema.py 2019-11-04 22:14:53.000000000 +0100 @@ -245,7 +245,7 @@ @dataclass class Album: title: str - release_data: dt.date + release_date: dt.date class AlbumSchema(Schema): title = fields.Str() @@ -969,12 +969,9 @@ load_fields, dump_fields = self.dict_class(), self.dict_class() for field_name, field_obj in fields_dict.items(): - if field_obj.load_only: - load_fields[field_name] = field_obj - elif field_obj.dump_only: - dump_fields[field_name] = field_obj - else: + if not field_obj.dump_only: load_fields[field_name] = field_obj + if not field_obj.load_only: dump_fields[field_name] = field_obj dump_data_keys = [ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow/validate.py new/marshmallow-3.2.2/src/marshmallow/validate.py --- old/marshmallow-3.2.1/src/marshmallow/validate.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow/validate.py 2019-11-04 22:14:53.000000000 +0100 @@ -16,6 +16,8 @@ add a useful `__repr__` implementation for validators. """ + error = None # type: typing.Optional[str] + def __repr__(self) -> str: args = self._repr_args() args = "{}, ".format(args) if args else "" @@ -95,7 +97,7 @@ error: str = None ): self.relative = relative - self.error = error or self.default_message + self.error = error or self.default_message # type: str self.schemes = schemes or self.default_schemes self.require_tld = require_tld @@ -153,7 +155,7 @@ default_message = "Not a valid email address." def __init__(self, *, error: str = None): - self.error = error or self.default_message + self.error = error or self.default_message # type: str def _format_error(self, value) -> typing.Any: return self.error.format(input=value) @@ -336,7 +338,7 @@ def __init__(self, comparable, *, error: str = None): self.comparable = comparable - self.error = error or self.default_message + self.error = error or self.default_message # type: str def _repr_args(self) -> str: return "comparable={!r}".format(self.comparable) @@ -377,7 +379,7 @@ self.regex = ( re.compile(regex, flags) if isinstance(regex, (str, bytes)) else regex ) - self.error = error or self.default_message + self.error = error or self.default_message # type: str def _repr_args(self) -> str: return "regex={!r}".format(self.regex) @@ -408,7 +410,7 @@ def __init__(self, method: str, *, error: str = None, **kwargs): self.method = method - self.error = error or self.default_message + self.error = error or self.default_message # type: str self.kwargs = kwargs def _repr_args(self) -> str: @@ -439,7 +441,7 @@ def __init__(self, iterable: typing.Iterable, *, error: str = None): self.iterable = iterable self.values_text = ", ".join(str(each) for each in self.iterable) - self.error = error or self.default_message + self.error = error or self.default_message # type: str def _repr_args(self) -> str: return "iterable={!r}".format(self.iterable) @@ -479,7 +481,7 @@ self.choices_text = ", ".join(str(choice) for choice in self.choices) self.labels = labels if labels is not None else [] self.labels_text = ", ".join(str(label) for label in self.labels) - self.error = error or self.default_message + self.error = error or self.default_message # type: str def _repr_args(self) -> str: return "choices={!r}, labels={!r}".format(self.choices, self.labels) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow.egg-info/PKG-INFO new/marshmallow-3.2.2/src/marshmallow.egg-info/PKG-INFO --- old/marshmallow-3.2.1/src/marshmallow.egg-info/PKG-INFO 2019-10-01 05:36:28.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow.egg-info/PKG-INFO 2019-11-04 22:15:05.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: marshmallow -Version: 3.2.1 +Version: 3.2.2 Summary: A lightweight library for converting complex datatypes to and from native Python datatypes. Home-page: https://github.com/marshmallow-code/marshmallow Author: Steven Loria @@ -186,8 +186,9 @@ Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 Requires-Python: >=3.5 -Provides-Extra: dev +Provides-Extra: tests Provides-Extra: lint Provides-Extra: docs -Provides-Extra: tests +Provides-Extra: dev diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/src/marshmallow.egg-info/requires.txt new/marshmallow-3.2.2/src/marshmallow.egg-info/requires.txt --- old/marshmallow-3.2.1/src/marshmallow.egg-info/requires.txt 2019-10-01 05:36:28.000000000 +0200 +++ new/marshmallow-3.2.2/src/marshmallow.egg-info/requires.txt 2019-11-04 22:15:05.000000000 +0100 @@ -3,23 +3,23 @@ pytest pytz simplejson -mypy==0.730 -flake8==3.7.8 +mypy==0.740 +flake8==3.7.9 flake8-bugbear==19.8.0 -pre-commit~=1.17 +pre-commit~=1.20 tox [docs] -sphinx==2.2.0 +sphinx==2.2.1 sphinx-issues==1.2.0 alabaster==0.7.12 sphinx-version-warning==1.1.2 [lint] -mypy==0.730 -flake8==3.7.8 +mypy==0.740 +flake8==3.7.9 flake8-bugbear==19.8.0 -pre-commit~=1.17 +pre-commit~=1.20 [tests] pytest diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/tests/test_deserialization.py new/marshmallow-3.2.2/tests/test_deserialization.py --- old/marshmallow-3.2.1/tests/test_deserialization.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/tests/test_deserialization.py 2019-11-04 22:14:53.000000000 +0100 @@ -1010,7 +1010,7 @@ field.deserialize("invalid") def test_field_deserialization_with_user_validator_that_raises_error_with_list( - self + self, ): def validator(val): raise ValidationError(["err1", "err2"]) @@ -1258,7 +1258,7 @@ assert load_data == {"bar": {"baz": 42}} def test_deserialize_with_attribute_param_error_returns_field_name_not_attribute_name( - self + self, ): class AliasingUserSerializer(Schema): username = fields.Email(attribute="email") @@ -1271,7 +1271,7 @@ assert errors["username"] == ["Not a valid email address."] def test_deserialize_with_attribute_param_error_returns_data_key_not_attribute_name( - self + self, ): class AliasingUserSerializer(Schema): name = fields.String(data_key="Name") @@ -1308,12 +1308,19 @@ class AliasingUserSerializer(Schema): name = fields.String() years = fields.Integer(dump_only=True) + size = fields.Integer(dump_only=True, load_only=True) nicknames = fields.List(fields.Str(), dump_only=True) - data = {"name": "Mick", "years": "42", "nicknames": ["Your Majesty", "Brenda"]} + data = { + "name": "Mick", + "years": "42", + "size": "12", + "nicknames": ["Your Majesty", "Brenda"], + } result = AliasingUserSerializer(unknown=EXCLUDE).load(data) assert result["name"] == "Mick" assert "years" not in result + assert "size" not in result assert "nicknames" not in result def test_deserialize_with_missing_param_value(self): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/tests/test_fields.py new/marshmallow-3.2.2/tests/test_fields.py --- old/marshmallow-3.2.1/tests/test_fields.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/tests/test_fields.py 2019-11-04 22:14:53.000000000 +0100 @@ -215,7 +215,7 @@ ] def test_default_error_messages_get_merged_with_parent_error_messages_cstm_msg( - self + self, ): field = self.MyField() assert field.error_messages["custom"] == "Custom error message." diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/marshmallow-3.2.1/tests/test_serialization.py new/marshmallow-3.2.2/tests/test_serialization.py --- old/marshmallow-3.2.1/tests/test_serialization.py 2019-10-01 05:36:17.000000000 +0200 +++ new/marshmallow-3.2.2/tests/test_serialization.py 2019-11-04 22:14:53.000000000 +0100 @@ -77,6 +77,25 @@ with pytest.raises(AttributeError): field.serialize("key", user) + def test_serialize_with_load_only_param(self): + class AliasingUserSerializer(Schema): + name = fields.String() + years = fields.Integer(load_only=True) + size = fields.Integer(dump_only=True, load_only=True) + nicknames = fields.List(fields.Str(), load_only=True) + + data = { + "name": "Mick", + "years": "42", + "size": "12", + "nicknames": ["Your Majesty", "Brenda"], + } + result = AliasingUserSerializer().dump(data) + assert result["name"] == "Mick" + assert "years" not in result + assert "size" not in result + assert "nicknames" not in result + def test_function_field_load_only(self): field = fields.Function(deserialize=lambda obj: None) assert field.load_only @@ -598,7 +617,7 @@ assert len(result) == 2 def test_list_field_work_with_generators_empty_generator_returns_none_for_every_non_returning_yield_statement( # noqa: B950 - self + self, ): def custom_generator(): yield
