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

Reply via email to