Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-marshmallow for
openSUSE:Factory checked in at 2026-10-27 16:47:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-marshmallow (Old)
and /work/SRC/openSUSE:Factory/.python-marshmallow.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-marshmallow"
Tue Oct 27 16:47:05 2026 rev:31 rq:1392436 version:4.3.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-marshmallow/python-marshmallow.changes
2026-04-25 21:35:42.113697656 +0200
+++
/work/SRC/openSUSE:Factory/.python-marshmallow.new.2252680/python-marshmallow.changes
2026-10-27 16:47:37.112106468 +0100
@@ -1,0 +2,11 @@
+Sun Oct 25 14:24:56 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 4.3.1:
+ * If by_value is enabled on an enum with a None value
+ allow_none now defaults to True. Thanks
+ :user:`GeraldineGalindo` for the suggestion (:issue:`2985`).
+ * marshmallow.validate.URL accepts a fragment that follows an
+ empty path, e.g. https://example.com#frag (:pr:`3016`).
+ Thanks :user:`hdimer` for the PR.
+
+-------------------------------------------------------------------
Old:
----
marshmallow-4.3.0.tar.gz
New:
----
marshmallow-4.3.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-marshmallow.spec ++++++
--- /var/tmp/diff_new_pack.4Urofa/_old 2026-10-27 16:47:37.952141696 +0100
+++ /var/tmp/diff_new_pack.4Urofa/_new 2026-10-27 16:47:37.957141906 +0100
@@ -26,7 +26,7 @@
%endif
%{?sle15_python_module_pythons}
Name: python-marshmallow
-Version: 4.3.0
+Version: 4.3.1
Release: 0
Summary: ORM/ODM/framework-agnostic library to convert datatypes
from/to Python types
License: BSD-3-Clause AND MIT
++++++ marshmallow-4.3.0.tar.gz -> marshmallow-4.3.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/CHANGELOG.rst
new/marshmallow-4.3.1/CHANGELOG.rst
--- old/marshmallow-4.3.0/CHANGELOG.rst 2026-04-03 23:45:50.049361000 +0200
+++ new/marshmallow-4.3.1/CHANGELOG.rst 2026-08-08 16:26:35.903399500 +0200
@@ -1,6 +1,19 @@
Changelog
=========
+4.3.1 (2026-08-08)
+------------------
+
+Features:
+
+- If `by_value` is enabled on an enum with a `None` value `allow_none` now
defaults to `True`.
+ Thanks :user:`GeraldineGalindo` for the suggestion (:issue:`2985`).
+
+Bug fixes:
+
+- `marshmallow.validate.URL` accepts a fragment that follows an empty path,
+ e.g. ``https://example.com#frag`` (:pr:`3016`). Thanks :user:`hdimer` for
the PR.
+
4.3.0 (2026-04-03)
------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/CONTRIBUTING.rst
new/marshmallow-4.3.1/CONTRIBUTING.rst
--- old/marshmallow-4.3.0/CONTRIBUTING.rst 2026-04-03 23:45:50.049361000
+0200
+++ new/marshmallow-4.3.1/CONTRIBUTING.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1,154 +0,0 @@
-Contributing guidelines
-=======================
-
-So you're interested in contributing to marshmallow or `one of our associated
-projects <https://github.com/marshmallow-code>`__? That's awesome! We
-welcome contributions from anyone willing to work in good faith with
-other contributors and the community (see also our
-:doc:`code_of_conduct`).
-
-Security contact information
-----------------------------
-
-To report a security vulnerability, please use the
-`Tidelift security contact <https://tidelift.com/security>`_.
-Tidelift will coordinate the fix and disclosure.
-
-Questions, feature requests, bug reports, and feedback…
--------------------------------------------------------
-
-…should all be reported on the `Github Issue Tracker`_ .
-
-.. _`Github Issue Tracker`:
https://github.com/marshmallow-code/marshmallow/issues?state=open
-
-Ways to contribute
-------------------
-
-- Comment on some of marshmallow's `open issues
<https://github.com/marshmallow-code/marshmallow/issues>`_ (especially those
`labeled "feedback welcome"
<https://github.com/marshmallow-code/marshmallow/issues?q=is%3Aopen+is%3Aissue+label%3A%22feedback+welcome%22>`_).
Share a solution or workaround. Make a suggestion for how a feature can be
made better. Opinions are welcome!
-- Improve `the docs <https://marshmallow.readthedocs.io>`_.
- For straightforward edits, click the edit button in the top-right corner of
the page.
- See the :ref:`Documentation <contributing_documentation>` section of this
page if you want to build the docs locally.
-- If you think you've found a bug, `open an issue
<https://github.com/marshmallow-code/marshmallow/issues>`_.
-- Contribute an :ref:`example usage <contributing_examples>` of marshmallow.
-- Send a PR for an open issue (especially one `labeled "help wanted"
<https://github.com/marshmallow-code/marshmallow/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22>`_).
The next section details how to contribute code.
-
-
-Contributing code
------------------
-
-Setting up for local development
-++++++++++++++++++++++++++++++++
-
-1. Fork marshmallow_ on Github.
-
-.. code-block:: shell-session
-
- $ git clone https://github.com/marshmallow-code/marshmallow.git
- $ cd marshmallow
-
-2. Install `uv <https://docs.astral.sh/uv/getting-started/installation/>`_.
-
-3. Install development requirements.
-
-.. code-block:: shell-session
-
- $ uv sync
-
-4. (Optional but recommended) Install the pre-commit hooks, which will format
and lint your git staged files.
-
-.. code-block:: shell-session
-
- $ uv run pre-commit install --allow-missing-config
-
-Git branch structure
-++++++++++++++++++++
-
-marshmallow abides by the following branching model:
-
-``dev``
- Current development branch. **New features should branch off here**.
-
-``X.Y-line``
- Maintenance branch for release ``X.Y``. **Bug fixes should be sent to the
most recent release branch.** A maintainer will forward-port the fix to
``dev``. Note: exceptions may be made for bug fixes that introduce large code
changes.
-
-**Always make a new branch for your work**, no matter how small. Also, **do
not put unrelated changes in the same branch or pull request**. This makes it
more difficult to merge your changes.
-
-Pull requests
-++++++++++++++
-
-1. Create a new local branch.
-
-For a new feature:
-
-.. code-block:: shell-session
-
- $ git checkout -b name-of-feature dev
-
-For a bugfix:
-
-.. code-block:: shell-session
-
- $ git checkout -b fix-something 3.x-line
-
-2. Commit your changes. Write `good commit messages
<https://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html>`_.
-
-.. code-block:: shell-session
-
- $ git commit -m "Detailed commit message"
- $ git push origin name-of-feature
-
-3. Before submitting a pull request, check the following:
-
-- If the pull request adds functionality, it is tested and the docs are
updated.
-- You've added yourself to ``AUTHORS.rst``.
-
-4. Submit a pull request to ``marshmallow-code:dev`` or the appropriate
maintenance branch. The `CI
<https://dev.azure.com/sloria1/sloria/_build/latest?definitionId=5&branchName=dev>`_
build must be passing before your pull request is merged.
-
-Running tests
-+++++++++++++
-
-To run all tests:
-
-.. code-block:: shell-session
-
- $ uv run pytest
-
-To run formatting and syntax checks:
-
-.. code-block:: shell-session
-
- $ uv run tox -e lint
-
-(Optional) To run tests in all supported Python versions in their own virtual
environments (must have each interpreter installed):
-
-.. code-block:: shell-session
-
- $ uv run tox
-
-.. _contributing_documentation:
-
-Documentation
-+++++++++++++
-
-Contributions to the documentation are welcome. Documentation is written in
`reStructuredText`_ (rST). A quick rST reference can be found `here
<https://docutils.sourceforge.io/docs/user/rst/quickref.html>`_. Builds are
powered by Sphinx_.
-
-To build and serve the docs in "watch" mode:
-
-.. code-block:: shell-session
-
- $ uv run tox -e docs-serve
-
-Changes to documentation will automatically trigger a rebuild.
-
-
-.. _contributing_examples:
-
-Contributing examples
-+++++++++++++++++++++
-
-Have a usage example you'd like to share? A custom `Field
<marshmallow.fields.Field>` that others might find useful? Feel free to add it
to the `examples
<https://github.com/marshmallow-code/marshmallow/tree/dev/examples>`_ directory
and send a pull request.
-
-
-.. _Sphinx: https://www.sphinx-doc.org/
-.. _`reStructuredText`: https://docutils.sourceforge.io/rst.html
-.. _marshmallow: https://github.com/marshmallow-code/marshmallow
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/PKG-INFO
new/marshmallow-4.3.1/PKG-INFO
--- old/marshmallow-4.3.0/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
+++ new/marshmallow-4.3.1/PKG-INFO 1970-01-01 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.4
Name: marshmallow
-Version: 4.3.0
+Version: 4.3.1
Summary: A lightweight library for converting complex datatypes to and from
native Python datatypes.
Author-email: Steven Loria <[email protected]>
Maintainer-email: Steven Loria <[email protected]>, Jérôme Lafréchoux
<[email protected]>, Jared Deckard <[email protected]>
@@ -114,7 +114,7 @@
This project exists thanks to all the people who contribute.
**You're highly encouraged to participate in marshmallow's development.**
-Check out the `Contributing Guidelines
<https://marshmallow.readthedocs.io/en/latest/contributing.html>`_ to see how
you can help.
+Check out the `Contributing Guidelines
<https://github.com/marshmallow-code/.github/blob/main/CONTRIBUTING.md>`_ to
see how you can help.
Thank you to all who have already contributed to marshmallow!
@@ -176,7 +176,7 @@
- Docs: https://marshmallow.readthedocs.io/
- Changelog: https://marshmallow.readthedocs.io/en/latest/changelog.html
-- Contributing Guidelines:
https://marshmallow.readthedocs.io/en/latest/contributing.html
+- Contributing Guidelines:
https://github.com/marshmallow-code/.github/blob/main/CONTRIBUTING.md
- PyPI: https://pypi.org/project/marshmallow/
- Issues: https://github.com/marshmallow-code/marshmallow/issues
- Donate: https://opencollective.com/marshmallow
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/README.rst
new/marshmallow-4.3.1/README.rst
--- old/marshmallow-4.3.0/README.rst 2026-04-03 23:45:50.049482300 +0200
+++ new/marshmallow-4.3.1/README.rst 2026-08-08 16:26:35.903399500 +0200
@@ -88,7 +88,7 @@
This project exists thanks to all the people who contribute.
**You're highly encouraged to participate in marshmallow's development.**
-Check out the `Contributing Guidelines
<https://marshmallow.readthedocs.io/en/latest/contributing.html>`_ to see how
you can help.
+Check out the `Contributing Guidelines
<https://github.com/marshmallow-code/.github/blob/main/CONTRIBUTING.md>`_ to
see how you can help.
Thank you to all who have already contributed to marshmallow!
@@ -150,7 +150,7 @@
- Docs: https://marshmallow.readthedocs.io/
- Changelog: https://marshmallow.readthedocs.io/en/latest/changelog.html
-- Contributing Guidelines:
https://marshmallow.readthedocs.io/en/latest/contributing.html
+- Contributing Guidelines:
https://github.com/marshmallow-code/.github/blob/main/CONTRIBUTING.md
- PyPI: https://pypi.org/project/marshmallow/
- Issues: https://github.com/marshmallow-code/marshmallow/issues
- Donate: https://opencollective.com/marshmallow
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/docs/code_of_conduct.rst
new/marshmallow-4.3.1/docs/code_of_conduct.rst
--- old/marshmallow-4.3.0/docs/code_of_conduct.rst 2026-04-03
23:45:50.050572200 +0200
+++ new/marshmallow-4.3.1/docs/code_of_conduct.rst 1970-01-01
01:00:00.000000000 +0100
@@ -1,274 +0,0 @@
-Code of Conduct
-===============
-
-This code of conduct applies to the marshmallow project and all associated
-projects in the `marshmallow-code <https://github.com/marshmallow-code>`__
-organization.
-
-
-.. _coc-when-something-happens:
-
-When something happens
-----------------------
-
-If you see a Code of Conduct violation, follow these steps:
-
-1. Let the person know that what they did is not appropriate and ask
- them to stop and/or edit their message(s) or commits.
-2. That person should immediately stop the behavior and correct the
- issue.
-3. If this doesn’t happen, or if you're uncomfortable speaking up,
- :ref:`contact the maintainers <coc-contacting-maintainers>`.
-4. As soon as possible, a maintainer will look into the issue, and take
- :ref:`further action (see below) <coc-further-enforcement>`, starting with
- a warning, then temporary block, then long-term repo or organization
- ban.
-
-When reporting, please include any relevant details, links, screenshots,
-context, or other information that may be used to better understand and
-resolve the situation.
-
-**The maintainer team will prioritize the well-being and comfort of the
-recipients of the violation over the comfort of the violator.** See
-:ref:`some examples below <coc-enforcement-examples>`.
-
-Our pledge
-----------
-
-In the interest of fostering an open and welcoming environment, we as
-contributors and maintainers of this project pledge to making
-participation in our community a harassment-free experience for
-everyone, regardless of age, body size, disability, ethnicity, gender
-identity and expression, level of experience, technical preferences,
-nationality, personal appearance, race, religion, or sexual identity and
-orientation.
-
-Our standards
--------------
-
-Examples of behavior that contributes to creating a positive environment
-include:
-
-- Using welcoming and inclusive language.
-- Being respectful of differing viewpoints and experiences.
-- Gracefully accepting constructive feedback.
-- Focusing on what is best for the community.
-- Showing empathy and kindness towards other community members.
-- Encouraging and raising up your peers in the project so you can all
- bask in hacks and glory.
-
-Examples of unacceptable behavior by participants include:
-
-- The use of sexualized language or imagery and unwelcome sexual
- attention or advances, including when simulated online. The only
- exception to sexual topics is channels/spaces specifically for topics
- of sexual identity.
-- Casual mention of slavery or indentured servitude and/or false
- comparisons of one's occupation or situation to slavery. Please
- consider using or asking about alternate terminology when referring
- to such metaphors in technology.
-- Making light of/making mocking comments about trigger warnings and
- content warnings.
-- Trolling, insulting/derogatory comments, and personal or political
- attacks.
-- Public or private harassment, deliberate intimidation, or threats.
-- Publishing others' private information, such as a physical or
- electronic address, without explicit permission. This includes any
- sort of "outing" of any aspect of someone's identity without their
- consent.
-- Publishing private screenshots or quotes of interactions in the
- context of this project without all quoted users' *explicit* consent.
-- Publishing of private communication that doesn't have to do with
- reporting harassment.
-- Any of the above even when `presented as "ironic" or
- "joking" <https://en.wikipedia.org/wiki/Hipster_racism>`__.
-- Any attempt to present "reverse-ism" versions of the above as
- violations. Examples of reverse-isms are "reverse racism", "reverse
- sexism", "heterophobia", and "cisphobia".
-- Unsolicited explanations under the assumption that someone doesn't
- already know it. Ask before you teach! Don't assume what people's
- knowledge gaps are.
-- `Feigning or exaggerating
- surprise <https://www.recurse.com/manual#no-feigned-surprise>`__ when
- someone admits to not knowing something.
-- "`Well-actuallies <https://www.recurse.com/manual#no-well-actuallys>`__"
-- Other conduct which could reasonably be considered inappropriate in a
- professional or community setting.
-
-Scope
------
-
-This Code of Conduct applies both within spaces involving this project
-and in other spaces involving community members. This includes the
-repository, its Pull Requests and Issue tracker, its Twitter community,
-private email communications in the context of the project, and any
-events where members of the project are participating, as well as
-adjacent communities and venues affecting the project's members.
-
-Depending on the violation, the maintainers may decide that violations
-of this code of conduct that have happened outside of the scope of the
-community may deem an individual unwelcome, and take appropriate action
-to maintain the comfort and safety of its members.
-
-.. _coc-other-community-standards:
-
-Other community standards
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-As a project on GitHub, this project is additionally covered by the
-`GitHub Community
-Guidelines <https://help.github.com/articles/github-community-guidelines/>`__.
-
-Enforcement of those guidelines after violations overlapping with the
-above are the responsibility of the entities, and enforcement may happen
-in any or all of the services/communities.
-
-Maintainer enforcement process
-------------------------------
-
-Once the maintainers get involved, they will follow a documented series
-of steps and do their best to preserve the well-being of project
-members. This section covers actual concrete steps.
-
-
-.. _coc-contacting-maintainers:
-
-Contacting maintainers
-~~~~~~~~~~~~~~~~~~~~~~
-
-As a small project, we don't yet have a Code of Conduct
-enforcement team. Hopefully that will be addressed as we grow, but for
-now, any issues should be addressed to `@sloria
-<https://github.com/sloria>`__, via `email <mailto:[email protected]>`__
-or any other medium that you feel comfortable with. Using words like
-"marshmallow code of conduct" in your subject will help make sure your
-message is noticed quickly.
-
-
-.. _coc-further-enforcement:
-
-Further enforcement
-~~~~~~~~~~~~~~~~~~~
-
-If you've already followed the :ref:`initial enforcement steps
-<coc-when-something-happens>`, these are the steps maintainers will
-take for further enforcement, as needed:
-
-1. Repeat the request to stop.
-2. If the person doubles down, they will be given an official warning. The PR
or Issue
- may be locked.
-3. If the behavior continues or is repeated later, the person will be
- blocked from participating for 24 hours.
-4. If the behavior continues or is repeated after the temporary block, a
- long-term (6-12mo) ban will be used.
-5. If after this the behavior still continues, a permanent ban may be
- enforced.
-
-On top of this, maintainers may remove any offending messages, images,
-contributions, etc, as they deem necessary.
-
-Maintainers reserve full rights to skip any of these steps, at their
-discretion, if the violation is considered to be a serious and/or
-immediate threat to the health and well-being of members of the
-community. These include any threats, serious physical or verbal
-attacks, and other such behavior that would be completely unacceptable
-in any social setting that puts our members at risk.
-
-Members expelled from events or venues with any sort of paid attendance
-will not be refunded.
-
-Who watches the watchers?
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Maintainers and other leaders who do not follow or enforce the Code of
-Conduct in good faith may face temporary or permanent repercussions as
-determined by other members of the project's leadership. These may
-include anything from removal from the maintainer team to a permanent
-ban from the community.
-
-Additionally, as a project hosted on GitHub, :ref:`their Code of
-Conduct may be applied against maintainers of this project
-<coc-other-community-standards>`, externally of this project's
-procedures.
-
-
-.. _coc-enforcement-examples:
-
-Enforcement examples
---------------------
-
-The best case
-~~~~~~~~~~~~~
-
-The vast majority of situations work out like this. This interaction is
-common, and generally positive.
-
- Alex: "Yeah I used X and it was really crazy!"
-
- Patt (not a maintainer): "Hey, could you not use that word? What
- about 'ridiculous' instead?"
-
- Alex: "oh sorry, sure." -> edits old comment to say "it was really
- confusing!"
-
-The maintainer case
-~~~~~~~~~~~~~~~~~~~
-
-Sometimes, though, you need to get maintainers involved. Maintainers
-will do their best to resolve conflicts, but people who were harmed by
-something **will take priority**.
-
- Patt: "Honestly, sometimes I just really hate using $library and
- anyone who uses it probably sucks at their job."
-
- Alex: "Whoa there, could you dial it back a bit? There's a CoC thing
- about attacking folks' tech use like that."
-
- Patt: "I'm not attacking anyone, what's your problem?"
-
- Alex: "@maintainers hey uh. Can someone look at this issue? Patt is
- getting a bit aggro. I tried to nudge them about it, but nope."
-
- KeeperOfCommitBits: (on issue) "Hey Patt, maintainer here. Could you
- tone it down? This sort of attack is really not okay in this space."
-
- Patt: "Leave me alone I haven't said anything bad wtf is wrong with
- you."
-
- KeeperOfCommitBits: (deletes user's comment), "@patt I mean it.
- Please refer to the CoC over at (URL to this CoC) if you have
- questions, but you can consider this an actual warning. I'd
- appreciate it if you reworded your messages in this thread, since
- they made folks there uncomfortable. Let's try and be kind, yeah?"
-
- Patt: "@KeeperOfCommitBits Okay sorry. I'm just frustrated and I'm kinda
- burnt out and I guess I got carried away. I'll DM Alex a note
- apologizing and edit my messages. Sorry for the trouble."
-
- KeeperOfCommitBits: "@patt Thanks for that. I hear you on the
- stress. Burnout sucks :/. Have a good one!"
-
-The nope case
-~~~~~~~~~~~~~
-
- PepeTheFrog🐸: "Hi, I am a literal actual nazi and I think white
- supremacists are quite fashionable."
-
- Patt: "NOOOOPE. OH NOPE NOPE."
-
- Alex: "JFC NO. NOPE. @KeeperOfCommitBits NOPE NOPE LOOK HERE"
-
- KeeperOfCommitBits: "👀 Nope. NOPE NOPE NOPE. 🔥"
-
- PepeTheFrog🐸 has been banned from all organization or user
- repositories belonging to KeeperOfCommitBits.
-
-Attribution
------------
-
-This Code of Conduct is based on `Trio's Code of Conduct
<https://trio.readthedocs.io/en/latest/code-of-conduct.html>`_, which is based
on the
-`WeAllJS Code of Conduct <https://wealljs.org/code-of-conduct>`__, which
-is itself based on `Contributor
-Covenant <https://contributor-covenant.org>`__, version 1.4, available at
-https://contributor-covenant.org/version/1/4, and the LGBTQ in Technology
-Slack `Code of Conduct <https://lgbtq.technology/coc.html>`__.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/docs/contributing.rst
new/marshmallow-4.3.1/docs/contributing.rst
--- old/marshmallow-4.3.0/docs/contributing.rst 2026-04-03 23:45:50.050572200
+0200
+++ new/marshmallow-4.3.1/docs/contributing.rst 1970-01-01 01:00:00.000000000
+0100
@@ -1 +0,0 @@
-.. include:: ../CONTRIBUTING.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/docs/index.rst
new/marshmallow-4.3.1/docs/index.rst
--- old/marshmallow-4.3.0/docs/index.rst 2026-04-03 23:45:50.051643000
+0200
+++ new/marshmallow-4.3.1/docs/index.rst 2026-08-08 16:26:35.904921000
+0200
@@ -79,8 +79,8 @@
whos_using
license
authors
- contributing
- code_of_conduct
+ Contributing
<https://github.com/marshmallow-code/.github/blob/main/CONTRIBUTING.md>
+ Code of Conduct
<https://github.com/marshmallow-code/.github/blob/main/CODE_OF_CONDUCT.md>
kudos
donate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/docs/nesting.rst
new/marshmallow-4.3.1/docs/nesting.rst
--- old/marshmallow-4.3.0/docs/nesting.rst 2026-04-03 23:45:50.051643000
+0200
+++ new/marshmallow-4.3.1/docs/nesting.rst 2026-08-08 16:26:35.904921000
+0200
@@ -275,7 +275,9 @@
email = fields.Email()
# Use the 'exclude' argument to avoid infinite recursion
employer = fields.Nested(lambda: UserSchema(exclude=("employer",
"friends")))
- friends = fields.List(fields.Nested(lambda: UserSchema("employer",
"friends")))
+ friends = fields.List(
+ fields.Nested(lambda: UserSchema(exclude=("employer", "friends")))
+ )
user = User("Steve", "[email protected]")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/pyproject.toml
new/marshmallow-4.3.1/pyproject.toml
--- old/marshmallow-4.3.0/pyproject.toml 2026-04-03 23:45:50.052954000
+0200
+++ new/marshmallow-4.3.1/pyproject.toml 2026-08-08 16:26:35.905834000
+0200
@@ -1,6 +1,6 @@
[project]
name = "marshmallow"
-version = "4.3.0"
+version = "4.3.1"
description = "A lightweight library for converting complex datatypes to and
from native Python datatypes."
readme = "README.rst"
license = "MIT"
@@ -43,10 +43,19 @@
"sphinxext-opengraph",
]
tests = ["pytest", "simplejson"]
-dev = [{ include-group = "tests" }, "tox", "tox-uv", "pre-commit>=3.5,<5.0"]
+lint = ["pre-commit>=3.5,<5.0"]
+mypy = ["mypy>=1.14.1", "types-simplejson"]
+dev = [
+ { include-group = "tests" },
+ { include-group = "lint" },
+ { include-group = "mypy" },
+ "tox",
+ "tox-uv",
+]
[tool.uv]
default-groups = ["dev"]
+exclude-newer = "1 week"
[build-system]
requires = ["flit_core>=3.12,<4"]
@@ -57,7 +66,6 @@
"docs/",
"tests/",
"CHANGELOG.rst",
- "CONTRIBUTING.rst",
"SECURITY.md",
"NOTICE",
"tox.ini",
@@ -79,6 +87,7 @@
"ARG", # unused arguments are common w/ interfaces
"COM", # let formatter take care commas
"C901", # don't enforce complexity level
+ "CPY001", # don't require copyright notice at top of file
"D", # don't require docstrings
"DTZ007", # ignore false positives due to
https://github.com/astral-sh/ruff/issues/1306
"E501", # leave line-length enforcement to formatter
@@ -120,6 +129,9 @@
"S", # allow asserts
"T", # allow prints
]
+"performance/benchmark.py" = [
+ "PLR0917", # allow many positional arguments
+]
"src/marshmallow/orderedset.py" = [
"FBT002", # allow boolean positional argument
"T", # allow prints
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/src/marshmallow/fields.py
new/marshmallow-4.3.1/src/marshmallow/fields.py
--- old/marshmallow-4.3.0/src/marshmallow/fields.py 2026-04-03
23:45:50.053634000 +0200
+++ new/marshmallow-4.3.1/src/marshmallow/fields.py 2026-08-08
16:26:35.906248300 +0200
@@ -347,7 +347,7 @@
attr: str | None = None,
data: typing.Mapping[str, typing.Any] | None = None,
**kwargs,
- ) -> None | _InternalT: ...
+ ) -> _InternalT | None: ...
# If value is not None, internal type is returned
@typing.overload
@@ -1928,6 +1928,7 @@
If `by_value` is `False` (default), enum members are (de)serialized by
symbol (name).
If it is `True`, they are (de)serialized by value using
`marshmallow.fields.Raw`.
If it is a field instance or class, they are (de)serialized by value using
this field.
+ If `by_value` is enabled on an enum with a `None` value, `allow_none`
defaults to `True`.
.. versionadded:: 3.18.0
"""
@@ -1968,6 +1969,8 @@
self.choices_text = ", ".join(
str(self.field._serialize(m.value, None, None)) for m in enum
)
+ if "allow_none" not in kwargs and any(m.value is None for m in
enum):
+ self.allow_none = True
def _serialize(
self, value: _EnumT | None, attr: str | None, obj: typing.Any, **kwargs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/src/marshmallow/schema.py
new/marshmallow-4.3.1/src/marshmallow/schema.py
--- old/marshmallow-4.3.0/src/marshmallow/schema.py 2026-04-03
23:45:50.053634000 +0200
+++ new/marshmallow-4.3.1/src/marshmallow/schema.py 2026-08-08
16:26:35.906360100 +0200
@@ -620,8 +620,7 @@
:return: The deserialized data as `dict_class` instance or list of
`dict_class`
instances if `many` is `True`.
"""
- index_errors = self.opts.index_errors
- index = index if index_errors else None
+ index = index if self.opts.index_errors else None
if many:
if not is_sequence_but_not_string(data):
error_store.store_error([self.error_messages["type"]],
index=index)
@@ -701,7 +700,7 @@
error_store.store_error(
[self.error_messages["unknown"]],
key,
- (index if index_errors else None),
+ index,
)
return ret_d
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/src/marshmallow/validate.py
new/marshmallow-4.3.1/src/marshmallow/validate.py
--- old/marshmallow-4.3.0/src/marshmallow/validate.py 2026-04-03
23:45:50.053634000 +0200
+++ new/marshmallow-4.3.1/src/marshmallow/validate.py 2026-08-08
16:26:35.906360100 +0200
@@ -157,7 +157,7 @@
r"(?::\d+)?",
)
)
- relative_part = r"(?:/?|[/?]\S+)\Z"
+ relative_part = r"(?:/?|[/?#]\S+)\Z"
if relative:
if absolute:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/tests/base.py
new/marshmallow-4.3.1/tests/base.py
--- old/marshmallow-4.3.0/tests/base.py 2026-04-03 23:45:50.054477700 +0200
+++ new/marshmallow-4.3.1/tests/base.py 2026-08-08 16:26:35.906940200 +0200
@@ -28,6 +28,11 @@
red = "red hair"
+class UltimatumEnum(Enum):
+ all = float("inf")
+ nothing = None
+
+
class DateEnum(Enum):
date_1 = dt.date(2004, 2, 29)
date_2 = dt.date(2008, 2, 29)
@@ -57,6 +62,7 @@
functools.partial(fields.Enum, GenderEnum),
functools.partial(fields.Enum, HairColorEnum, by_value=fields.String),
functools.partial(fields.Enum, GenderEnum, by_value=fields.Integer),
+ functools.partial(fields.Enum, UltimatumEnum, allow_none=False),
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/tests/test_deserialization.py
new/marshmallow-4.3.1/tests/test_deserialization.py
--- old/marshmallow-4.3.0/tests/test_deserialization.py 2026-04-03
23:45:50.054662700 +0200
+++ new/marshmallow-4.3.1/tests/test_deserialization.py 2026-08-08
16:26:35.907048500 +0200
@@ -24,6 +24,7 @@
DateEnum,
GenderEnum,
HairColorEnum,
+ UltimatumEnum,
assert_date_equal,
assert_time_equal,
central,
@@ -1281,6 +1282,10 @@
with pytest.raises(ValidationError, match="Not a valid date."):
field.deserialize("30/02/2004")
+ def test_enum_by_value_allow_none_default(self):
+ field = fields.Enum(UltimatumEnum, by_value=True)
+ assert field.deserialize(None) is None
+
def test_deserialization_function_must_be_callable(self):
with pytest.raises(TypeError):
fields.Function(lambda x: None, deserialize="notvalid")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/tests/test_validate.py
new/marshmallow-4.3.1/tests/test_validate.py
--- old/marshmallow-4.3.0/tests/test_validate.py 2026-04-03
23:45:50.054662700 +0200
+++ new/marshmallow-4.3.1/tests/test_validate.py 2026-08-08
16:26:35.907360300 +0200
@@ -32,6 +32,8 @@
"http://:[email protected]",
"http://@example.com",
"http://AZaz09-._~%2A!$&'()*+,;=:@example.com",
+ "http://example.org#fragment",
+ "http://[email protected]#fragment",
],
)
def test_url_absolute_valid(valid_url):
@@ -88,6 +90,7 @@
"/foo/bar",
"/foo?bar",
"/foo?bar#baz",
+ "#frag",
],
)
def test_url_relative_valid(valid_url):
@@ -124,6 +127,7 @@
"/foo?bar",
"?bar",
"/foo?bar#baz",
+ "#frag",
],
)
def test_url_relative_only_valid(valid_url):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/marshmallow-4.3.0/tox.ini
new/marshmallow-4.3.1/tox.ini
--- old/marshmallow-4.3.0/tox.ini 2026-04-03 23:45:50.054662700 +0200
+++ new/marshmallow-4.3.1/tox.ini 2026-08-08 16:26:35.907360300 +0200
@@ -1,19 +1,19 @@
[tox]
+requires = tox-uv
envlist = lint,mypy,py{310,311,312,313,314},docs
[testenv]
+runner = uv-venv-lock-runner
dependency_groups = tests
commands = pytest {posargs}
[testenv:lint]
-deps = pre-commit>=3.5,<5.0
+dependency_groups = lint
skip_install = true
commands = pre-commit run --all-files
[testenv:mypy]
-deps =
- mypy>=1.14.1
- types-simplejson
+dependency_groups = mypy
commands = mypy --show-error-codes
[testenv:docs]
@@ -23,15 +23,18 @@
; Below tasks are for development only (not run in CI)
[testenv:docs-serve]
+runner = uv-venv-runner
deps = sphinx-autobuild
dependency_groups = docs
-commands = sphinx-autobuild --port=0 --open-browser --delay=2 docs/
docs/_build {posargs} --watch src --watch CONTRIBUTING.rst --watch README.rst
+commands = sphinx-autobuild --port=0 --open-browser --delay=2 docs/
docs/_build {posargs} --watch src --watch README.rst
[testenv:readme-serve]
+runner = uv-venv-runner
deps = restview
skip_install = true
commands = restview README.rst
[testenv:benchmark]
+runner = uv-venv-runner
usedevelop = true
commands = python performance/benchmark.py --iterations=100 --repeat=3