Skip to content

chore(deps): bump the production-dependencies group with 9 updates - #118

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/production-dependencies-d7ac428bab
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/uv/production-dependencies-d7ac428bab

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Nov 2, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the production-dependencies group with 9 updates:

Package From To
mypy 2.4.0 2.4.1
nodeenv 1.11.0 1.11.1
platformdirs 4.13.5 4.14.0
pydantic 2.14.1 2.14.2
pydantic-core 2.50.1 2.50.2
python-discovery 1.6.4 1.6.7
tzdata 2026.5 2026.6
virtualenv 21.14.13 21.15.1
wrapt 2.5.1 2.5.2

Updates mypy from 2.4.0 to 2.4.1

Changelog

Sourced from mypy's changelog.

Mypy 2.4.1

  • Process overloads as a whole in two-phase type checking (Ivan Levkivskyi, PR 22231)
  • Skip recursive setup for frame-private nested functions in mypyc (Piotr Sawicki, PR 22187)

Acknowledgements

Thanks to all mypy contributors who contributed to this release:

  • A5rocks
  • Adam Dangoor
  • Alex Waygood
  • Ali Hamdan
  • Brian Helba
  • Chad Dombrova
  • David Foster
  • dnwpark
  • Edgar Ramírez Mondragón
  • Giorgos Michas
  • Ivan Levkivskyi
  • Jelle Zijlstra
  • Jukka Lehtosalo
  • Marc Mueller
  • Michael R. Crusoe
  • NIYONSHUTI Emmanuel
  • Piotr Sawicki
  • Shantanu
  • themylogin
  • Vaggelis Danias
  • Willy Bruns

I'd also like to thank my employer, Dropbox, for supporting mypy development.

Mypy 2.3

We've just uploaded mypy 2.3.0 to the Python Package Index (PyPI). Mypy is a static type checker for Python. This release includes new features, performance improvements and bug fixes. You can install it as follows:

python3 -m pip install -U mypy

You can read the full documentation for this release on Read the Docs.

The Upcoming Switch to the New Native Parser

We are planning to enable the new native parser (--native-parser) by default soon. We recommend that you test the native parser in your projects and report any issues in the mypy issue tracker.

Mypyc Free-threading Memory Safety

... (truncated)

Commits

Updates nodeenv from 1.11.0 to 1.11.1

Release notes

Sourced from nodeenv's releases.

1.11.1

What's Changed

Fixed bugs 🐛

1.11.1 is 1.11.0 plus this fix only. nodejs.org now lists 27.0.0-alpha.0.0.0 first, and nodeenv stopped with a traceback when it used the default latest or a semver range (#453).

Full Changelog: ekalinin/nodeenv@1.11.0...1.11.1

Changelog

Sourced from nodeenv's changelog.

Version 1.11.1

  • latest, the default, and semver ranges such as --node=26 no longer pick pre-releases: once nodejs.org listed 27.0.0-alpha.0.0.0, both stopped with a traceback. An exact pre-release, such as --node=27.0.0-alpha.0.0.0, installs instead of crashing as well [#453](https://github.com/ekalinin/nodeenv/issues/453) <https://github.com/ekalinin/nodeenv/issues/453>_
Commits
  • b94e6f5 chore(release): bump nodeenv version to 1.11.1
  • ac52b66 fix(nodeenv): skip node.js pre-releases for latest and ranges
  • See full diff in compare view

Updates platformdirs from 4.13.5 to 4.14.0

Release notes

Sourced from platformdirs's releases.

4.14.0

Features

  • Accept a keyword-only ensure_exists in the module-level media directory functions, such as user_documents_path, to create a directory set through XDG_*_DIR or user-dirs.dirs (#656) by @​darrenhuai and @​gaborbernat.

Bug fixes

  • Return the media and fonts directories under root's home for root with use_site_for_root, ignoring the invoking user's XDG_*_DIR, user-dirs.dirs and XDG_DATA_HOME, and create no inherited media directory under ensure_exists (#661) by @​gaborbernat.
  • Raise ValueError from site_data_dir and site_config_dir under multipath=True when appname or version contains os.pathsep, rather than returning a string that splits into a directory outside the site base (#662) by @​gaborbernat.
  • Parse an unquoted user-dirs.dirs value with a long run of blanks in linear time, rather than in time quadratic in the run's length on every Unix media directory lookup (#663) by @​gaborbernat.
  • Treat a relative HOME as unset on Unix, macOS and iOS, taking the home from the password database or raising RuntimeError, rather than resolving user directories against the working directory (#664) by @​gaborbernat.
  • Refuse a symlink as XDG_RUNTIME_DIR in user_runtime_dir when the value ends with / or /., which made the check follow the link (#665) by @​gaborbernat.
  • Redirect user_*_dir calls with use_site_for_root=True when the effective uid is 0, so a setuid-root process gets the site directories, and name and check the runtime directory by the effective uid (#666) by @​gaborbernat.
  • Apply the XDG_RUNTIME_DIR check of the Unix user_runtime_dir to the macOS one, so it no longer uses a directory that is a symlink, owned by another user or not mode 0700 (#667) by @​gaborbernat.
  • Reject an XDG_RUNTIME_DIR below a parent that another user can replace, such as their own entry in /tmp, instead of creating the runtime directory through it (#668) by @​gaborbernat.
  • Stop accepting a Unix runtime directory that another user creates between the owner check and its use: ensure_exists and place_runtime_file create it before checking it, and find_runtime_file checks it again after a hit (#669) by @​gaborbernat.
  • Raise PermissionError on macOS when ensure_exists would create the site cache through a /Library/Caches/$appname that is a symlink, not a directory, or owned by a user other than root and the current one (#670) by @​gaborbernat.
  • With ensure_exists, raise FileExistsError when a configured media directory such as user_documents_dir is a regular file or a symlink to one, instead of returning the file's path. Dangling symlinks are still returned unchanged (#672) by @​rupayon123 and @​gaborbernat.

New Contributors

PyPI release

Full Changelog

4.13.7

Bug fixes

  • Fall back to the default media directories when user-dirs.dirs exists but cannot be read, rather than raising PermissionError or IsADirectoryError (#632) by @​Debasishhh and @​gaborbernat.
  • Resolve the Windows Projects directory from USERPROFILE when HOME is empty, rather than raising RuntimeError (#635) by @​pabszero and @​gaborbernat.
  • Resolve $HOME entries in user-dirs.dirs to /Documents instead of //Documents when the home directory is / (#636) by @​darrenhuai and @​gaborbernat.
  • Print the error and keep listing directories in python -m platformdirs when the home directory is unknown, rather than stopping with RuntimeError (#638) by @​tongwentao and @​gaborbernat.
  • Raise FileNotFoundError from the place_*_file methods when the user directory is on a missing Windows drive or network share, rather than recursing until RecursionError (#639) by @​nk-batman21 and @​gaborbernat.
  • Search the directories of a subclass's overridden iter_*_paths method in find_*_file and find_*_files, rather than the base class ones (#640) by @​KennyMcSimpson and @​gaborbernat.
  • Keep isolated_dirs paths under a relative root after the working directory changes, and yield the root as an absolute path (#643) by @​0x5t4l1n and @​gaborbernat.
  • Ignore Windows folder overrides with a UNC path missing its server or share name, such as \\server, instead of treating the application name as the share (#647) by @​RedCat888 and @​gaborbernat.

Documentation

  • Remove the literal /opt/homebrew from a macOS source comment. Homebrew replaces it with a placeholder when bottling on Apple Silicon but not on Linux, so formulae that bundle platformdirs could not share one bottle across both (#644) by @​Moisan and @​gaborbernat.

... (truncated)

Changelog

Sourced from platformdirs's changelog.

########### Changelog ###########

.. towncrier-draft-entries:: Unreleased

.. towncrier release notes start

.. _release-4-14-3:


4.14.3 (2026-11-01)


.. _release-4-14-3-fixed:

Fixed

  • Preserve trailing whitespace in absolute XDG directory values instead of resolving a different directory (:pr:679) by :user:mikegit123git and :user:gaborbernat.

.. _release-4-14-2:


4.14.2 (2026-10-31)


.. _release-4-14-2-fixed:

Fixed

  • Deduplicate equivalent XDG directory spellings across string and path iterators and file searches (:pr:677) by :user:AlvaroBalbin and :user:gaborbernat.

.. _release-4-14-1:


4.14.1 (2026-10-30)


.. _release-4-14-1-fixed:

Fixed

  • Fall back to the real user ID on platforms without an effective user ID, restoring imports and Unix directory lookups on Pyodide (:pr:676) by :user:mayankdhingra02.

... (truncated)

Commits
  • c40ff0b release 4.14.0
  • 18620ed 🐛 fix(unix): check XDG_RUNTIME_DIR parents (#668)
  • 3a5e7d0 🐛 fix(api): raise when a media dir is a file (#672)
  • 790ff18 🐛 fix(unix): decide root redirect by effective uid (#666)
  • 7753a02 🔒 fix(macos): refuse planted site cache entries (#670)
  • 9f5ff8a 🐛 fix(macos): pass missing_ok to runtime dir check (#674)
  • 3ee973f 🐛 fix(unix): ignore inherited media vars for root (#661)
  • a94826e 🐛 fix(unix): parse user-dirs blank runs in linear time (#663)
  • 3b4cf5f 🐛 fix(unix): reject runtime dir symlink with trailing / (#665)
  • f5b537b 🐛 fix(dirs): treat a relative HOME as unset (#664)
  • Additional commits viewable in compare view

Updates pydantic from 2.14.1 to 2.14.2

Release notes

Sourced from pydantic's releases.

v2.14.2 2026-10-29

v2.14.2 (2026-10-29)

This release addresses 2 security issues, GHSA-qpmf-fgh3-ff25 and GHSA-3r8g-cqwr-jr29.

Packaging

Performance

Fixes

  • Make JSON validation by iteration consistent with Python approach by @​davidhewitt in #13275.

    JSON validation now handles field lookup and extra data the same way as Python validation. In particular, keys that only match an unused alias or field name are now treated as extra data, instead of being silently dropped:

    from pydantic import BaseModel, ConfigDict
    from pydantic.alias_generators import to_camel
    class Page(BaseModel):
    model_config = ConfigDict(extra='forbid', alias_generator=to_camel)
    page_size: int = 10
    
    Page.model_validate_json('{"page_size": 50}')
    Before: Page(page_size=10)
    After: ValidationError (extra_forbidden)

    See the pull request for the full list of behavior changes. This change addresses GHSA-qpmf-fgh3-ff25.

  • Ignore extra data matching a field name in TypedDict and dataclasses with extra=allow by @​Viicos in #14090. Addresses GHSA-3r8g-cqwr-jr29.

  • Fix unpickling of generic classes defined in separate module by @​Viicos in #13994

  • Support explicit by_alias overriding validate_by_alias in validation JSON schemas by @​Viicos in #13997

  • Fix mypy plugin crash on deferred empty model by @​ilevkivskyi in #14027

  • Fix infinite recursion when validating an invalid default with PydanticUseDefault by @​Viicos in #14028

  • Implement recursion guard for validate_strings() by @​Viicos in #14029

... (truncated)

Changelog

Sourced from pydantic's changelog.

v2.14.2 (2026-10-29)

GitHub release

What's Changed

Packaging

Performance

Fixes

  • Make JSON validation by iteration consistent with Python approach by @​davidhewitt in #13275.

    JSON validation now handles field lookup and extra data the same way as Python validation. In particular, keys that only match an unused alias or field name are now treated as extra data, instead of being silently dropped:

    from pydantic import BaseModel, ConfigDict
    from pydantic.alias_generators import to_camel
    class Page(BaseModel):
    model_config = ConfigDict(extra='forbid', alias_generator=to_camel)
    page_size: int = 10
    
    Page.model_validate_json('{"page_size": 50}')
    Before: Page(page_size=10)
    After: ValidationError (extra_forbidden)

    See the pull request for the full list of behavior changes.

  • Fix unpickling of generic classes defined in separate module by @​Viicos in #13994

  • Support explicit by_alias overriding validate_by_alias in validation JSON schemas by @​Viicos in #13997

  • Fix mypy plugin crash on deferred empty model by @​ilevkivskyi in #14027

  • Fix infinite recursion when validating an invalid default with PydanticUseDefault by @​Viicos in #14028

  • Implement recursion guard for validate_strings() by @​Viicos in #14029

  • Support named tuples in Sequence serialization by @​Viicos in #14033

... (truncated)

Commits
  • aa540ac Update changelog for v2.14.2
  • 6cde12f Update changelog for v2.14.2
  • 2db7c25 Fix deep copy of self-referential models
  • d783154 Update changelog for v2.14.2
  • df49b6c Avoid heap allocation for small JSON model field buffers
  • cd93e69 Skip decorator field checks when no field decorators exist
  • 2771e57 Make JSON validation by iteration consistent with Python approach
  • 8102e3f Avoid Python tuple allocation during model fields validation
  • dd139b5 Bump pydantic.v1 namespace to v1.10.27
  • 66155f9 Prepare release v2.14.2
  • Additional commits viewable in compare view

Updates pydantic-core from 2.50.1 to 2.50.2

Commits
  • aa540ac Update changelog for v2.14.2
  • 6cde12f Update changelog for v2.14.2
  • 2db7c25 Fix deep copy of self-referential models
  • d783154 Update changelog for v2.14.2
  • df49b6c Avoid heap allocation for small JSON model field buffers
  • cd93e69 Skip decorator field checks when no field decorators exist
  • 2771e57 Make JSON validation by iteration consistent with Python approach
  • 8102e3f Avoid Python tuple allocation during model fields validation
  • dd139b5 Bump pydantic.v1 namespace to v1.10.27
  • 66155f9 Prepare release v2.14.2
  • Additional commits viewable in compare view

Updates python-discovery from 1.6.4 to 1.6.7

Release notes

Sourced from python-discovery's releases.

v1.6.7

Bug fixes

  • Rank uv's minor version links behind the concrete install on Windows too, where uv creates them as directory junctions that Path.is_symlink() does not report (#170) by @​darrenhuai and @​gaborbernat.
  • Stop a venv lookup from rewriting the executable of earlier results, PythonInfo.current() and PythonInfo.current_system() when they share its base interpreter (#171) by @​darrenhuai and @​gaborbernat.

PyPI release

Full Changelog

v1.6.6

Bug fixes

  • Treat version specifiers with an item that cannot be parsed, such as >=3.x, >=3.12 <4 or >=3.12,foo, as literal executable paths instead of raising a bare AssertionError or ignoring the item during discovery (#157) by @​darrenhuai and @​gaborbernat.
  • Accept relative interpreter paths that step up a directory, such as ../venv/bin/python, which were found and queried but never matched the spec (#158) by @​darrenhuai and @​gaborbernat.
  • Match ~=X.Y compatible-release specifiers against later minor versions, as PEP 440 defines, instead of only the same minor; ~=3.10 now accepts 3.11 and newer 3.x (#159) by @​darrenhuai and @​gaborbernat.

🐍 PyPI release

📜 Full Changelog

v1.6.5

Packaging

  • Releases now run on the shared tox-dev/github-workflows pipeline, with a locked release toolchain and generated GitHub Release notes (#164) by @​gaborbernat.

🐍 PyPI release

📜 Full Changelog

Changelog

Sourced from python-discovery's changelog.

################# Release History #################

.. towncrier-draft-entries::

.. towncrier release notes start

.. _release-1-9-0:


v1.9.0 (2026-10-30)


.. _release-1-9-0-added:

Added

  • Expose the 11 marker keys through MarkerEnvironment for callers that type-check PythonInfo.marker_environment (:pr:179) by :user:gaborbernat.

.. _release-1-8-0:


v1.8.0 (2026-10-30)


.. _release-1-8-0-added:

Added

  • Expose the selected interpreter's dependency marker values as PythonInfo.marker_environment (:pr:178) by :user:gaborbernat.

.. _release-1-7-0:


v1.7.0 (2026-10-30)


.. _release-1-7-0-added:

Added

  • Accept the free-threaded, debug, architecture and machine suffixes after a version specifier, as in >=3.13t or cpython>=3.11,<3.14-64, and raise ValueError for a spec that starts with a comparison operator but does not parse, such as >=3.13., instead of looking it up as an executable name (:pr:176) by :user:gaborbernat.

... (truncated)

Commits
  • a60893d release 1.6.7
  • 77f64b9 🐛 fix(uv): rank minor version junctions behind the concrete install on Window...
  • 57e1308 🐛 fix(py_info): stop venv lookups rewriting each other's executable (#171)
  • 7cc1c22 release 1.6.6
  • 27f51c2 🐛 fix(spec): let ~=X.Y match later minor versions (#159)
  • 38a7454 🐛 fix(discovery): match relative interpreter paths with ".." (#158)
  • d323a51 🐛 fix(spec): treat unparsable version specifiers as literal paths (#157)
  • 8050a82 release 1.6.5
  • bb5d08f 📦 build(release): note the shared release pipeline (#164)
  • 8a6eff7 👷 ci(release): move releases to shared github-workflows (#156)
  • See full diff in compare view

Updates tzdata from 2026.5 to 2026.6

Release notes

Sourced from tzdata's releases.

2026.6: Release of upstream tzdata 2026f

Version 2026.6

Upstream version 2026f released 2026-10-28T06:16:49+00:00

Briefly:

Cuba will not fall back 2026-11-01; stays on -04 through 2027-11-07. No more leap seconds, and leap second tables no longer expire. Improve 1965/1966 data for Brazil.

Changes to future timestamps

Cuba will not fall back to -05 on 2026-11-01 and instead plans to maintain -04 through 2027-11-07.

Changes to past timestamps

In 1965 Brazil ended DST on 03-31 at 24:00 not 00:00, and in 1966 it ended DST on 03-01 at 01:00 not 00:00. (Thanks to Daniel Dias Rodrigues.)

Changes to documentation and commentary

Documentation and commentary now reflect leap seconds’ demise.

Changes to commentary

Discussion on timekeeping in northwestern Ontario has been updated to reflect that provincial regulation has been issued to allow these areas to stay aligned with America/Winnipeg and follow Manitoba’s adoption of year-round -05 after all. (Thanks to Aoun Khan, Chris Walton, and Heitor David Pinto.)

Discussion on timekeeping in Saskatchewan has been updated to document its new Time Act, 2026 which comes into force on 2026-10-30. (Thanks to Heitor David Pinto.) No change is expected.

Changelog

Sourced from tzdata's changelog.

Version 2026.6

Upstream version 2026f released 2026-10-28T06:16:49+00:00

Briefly:

Cuba will not fall back 2026-11-01; stays on -04 through 2027-11-07. No more leap seconds, and leap second tables no longer expire. Improve 1965/1966 data for Brazil.

Changes to future timestamps

Cuba will not fall back to -05 on 2026-11-01 and instead plans to maintain -04 through 2027-11-07.

Changes to past timestamps

In 1965 Brazil ended DST on 03-31 at 24:00 not 00:00, and in 1966 it ended DST on 03-01 at 01:00 not 00:00. (Thanks to Daniel Dias Rodrigues.)

Changes to documentation and commentary

Documentation and commentary now reflect leap seconds’ demise.

Changes to commentary

Discussion on timekeeping in northwestern Ontario has been updated to reflect that provincial regulation has been issued to allow these areas to stay aligned with America/Winnipeg and follow Manitoba’s adoption of year-round -05 after all. (Thanks to Aoun Khan, Chris Walton, and Heitor David Pinto.)

Discussion on timekeeping in Saskatchewan has been updated to document its new Time Act, 2026 which comes into force on 2026-10-30. (Thanks to Heitor David Pinto.) No change is expected.


Commits

Updates virtualenv from 21.14.13 to 21.15.1

Release notes

Sourced from virtualenv's releases.

21.15.1

Bug fixes

  • Keep the name of a seeded console_scripts entry that contains digits but does not end in a version, such as python3-config or 2to3, instead of truncating it at the first digit; python3-config overwrote the environment's python executable (#3451) by @​JingHao-Leon and @​gaborbernat.
  • Copy the content of a symlinked directory when a tree is copied into an environment, instead of dropping it (#3454) by @​JingHao-Leon and @​gaborbernat.
  • Count each -v, -q, -p and --try-first-with option once instead of once per internal parsing pass, so Session.verbosity is 3 rather than 9 for a single -v (#3457) by @​darrenhuai and @​gaborbernat.
  • Copy the seed packages instead of failing when VIRTUALENV_SYMLINK_APP_DATA or symlink_app_data in the config file turns on symlink seeding on a host that cannot create symlinks, such as Windows without the symlink privilege (#3465) by @​darrenhuai and @​gaborbernat.
  • Run the interpreter that collects the target debug information (-vv output and Creator.debug) without PYTHONPATH and with the environment passed to cli_run, so the reported sys.path no longer lists the caller's PYTHONPATH entries (#3474) by @​RaphaelFakhri and @​gaborbernat.

New Contributors

PyPI release

Full Changelog

21.15.0

Features

  • Bundle dependencies for Python 3.15 in the standalone zipapp and stop bundling Python 3.8, which is outside the package's supported range (#3458) by @​gaborbernat.

Packaging

  • Publish GitHub Releases with categorized notes from the tagged changelog, retaining the zipapp, SBOM, and PyPI links (#3458) by @​gaborbernat.

🐍 PyPI release

📜 Full Changelog

Changelog

Sourced from virtualenv's changelog.

################# Release History #################

.. towncrier-draft-entries:: [UNRELEASED DRAFT]

.. towncrier release notes start

.. _release-21-15-2:


21.15.2 (2026-10-30)


.. _release-21-15-2-fixed:

Fixed

  • Build the default application data folder only when no folder was given through --app-data, VIRTUALENV_APP_DATA or the configuration file, so --read-only-app-data with an explicit folder works when the default folder is missing, and writable runs stop creating an unused one. Folders from VIRTUALENV_APP_DATA and the configuration file now get the same checks as --app-data (:pr:3488) by :user:darrenhuai and :user:gaborbernat.
  • Build the seed wheel image in a staging folder and move it into place only once it is complete, so an extraction that fails part way, for example on a full disk, after a killed process or on a path over the Windows length limit, no longer leaves a partial image that later runs seed as a pip without METADATA, RECORD or INSTALLER (:pr:3487) by :user:darrenhuai and :user:gaborbernat.
  • Make -p/--python and --try-first-with replace the interpreters set by VIRTUALENV_PYTHON, VIRTUALENV_TRY_FIRST_WITH or the configuration file instead of being merged with them, so the configured interpreter no longer wins over the one asked for and a -p that finds nothing fails instead of falling back to it. Try several VIRTUALENV_PYTHON values in the order given rather than starting with the second (:pr:3494) by :user:darrenhuai and :user:gaborbernat.
  • On Windows, re-create an environment in place when its copied interpreter files, such as python.exe, or its seeded packages are read-only, instead of failing with PermissionError (:pr:3492) by :user:darrenhuai and :user:gaborbernat.
  • Reject an empty or whitespace-only destination. An empty one, and on Windows one made only of spaces, resolved to the current directory, so an unset VENV in virtualenv --clear "$VENV" deleted the working directory. Pass . to create the environment in the current directory (:pr:3491) by :user:darrenhuai and :user:gaborbernat.
  • Restore the default prompt in deactivate.bat when PROMPT was undefined at activation, instead of leaving the environment name in front of it (:pr:3489) by :user:darrenhuai.
  • Undefine PATH again in deactivate.bat when it was undefined at activation, instead of leaving the environment's Scripts folder on it, and stop a second activate.bat from adding that folder twice (:pr:3493) by :user:darrenhuai and :user:gaborbernat.

.. _release-21-15-1:


21.15.1 (2026-10-28)


... (truncated)

Commits
  • d46a1e2 release 21.15.1
  • 15a9c35 🐛 fix(seed): keep console script names that are not version suffixes (#3451)
  • b6aff2b 🐛 fix(seed): copy seed packages when symlinks are unsupported (#3465)
  • 9b3883e 🐛 fix(config): stop CLI options accumulating across parse passes (#3457)
  • 784cb1b 📝 docs: fix dead links in two code comments (#3463)
  • b539794 🧪 test(activation): use bash from PATH (#3468)
  • e899805 ♻️ refactor(path): drop the copytree forwarder (#3480)
  • 3def145 🐛 fix(create): drop PYTHONPATH from the debug interpreter (#3474)
  • 852e6e3 🐛 fix(path): copy the content of a symlinked directory (#3454)
  • e52dc49 👷 ci(release): pin github-workflows 6.2.1 (#3479)
  • Additional commits viewable in compare view

Updates wrapt from 2.5.1 to 2.5.2

Release notes

Sourced from wrapt's releases.

wrapt 2.5.2

Full release notes: https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-2

Install from PyPi (recommended):

pip install wrapt==2.5.2

PyPi uploads follow each GitHub release; if pip reports the version is unavailable, the matching PyPi upload may not have happened yet.

Pre-built wheels are provided for a range of Python versions and platforms (Linux x86_64/aarch64/riscv64, macOS x86_64 and arm64, Windows x86_64 and arm64, plus PyPy and free-threaded builds). The source distribution is also attached together with SHA256SUMS for verification.

wrapt 2.5.2rc1

Release candidate. Release notes for the upcoming 2.5.2 final (work in progress): https://wrapt.readthedocs.io/en/latest/changes.html#version-2-5-2

May be installable from PyPi:

pip install wrapt==2.5.2rc1

If pip reports the version is unavailable, this candidate either has not been uploaded yet or is not being published to PyPi. Use the attached wheels or build from the source distribution instead:

tar xf wrapt-2.5.2rc1.tar.gz
cd wrapt-2.5.2rc1
pip install .

SHA256SUMS is attached for verification of the archives.

Changelog

Sourced from wrapt's changelog.

Version 2.5.2

Bugs Fixed

  • The special methods added to the class generated for an wrapt.AutoObjectProxy, and adjusted when __wrapped__ was reassigned, were determined by inspecting the wrapped object itself, rather than the type of the wrapped object. As special methods are only ever looked up on the type of an object, this gave the wrong result in several cases. When the wrapped object was a class, the special methods it defined for its instances were added to the proxy class, so a proxy for a class defining __set_name__() raised TypeError when assigned to an attribute in a class body, a proxy for a class defining __get__() was bound as a descriptor on attribute access, and a proxy for a class defining __await__() or __iter__() was reported as awaitable or iterable by inspect.isawaitable() and collections.abc checks, even though the class itself was not. Special methods provided by the metaclass of a wrapped class, such as __iter__(), were not added to the proxy class. When the wrapped object was an instance, instance attributes shadowing the dunder names were treated as special methods of the wrapped object, and special methods which a __dir__() method of the wrapped object did not report were missed. The special methods are now always determined from the type of the wrapped object, so a proxy behaves the same as the object it wraps. This also covers a wrapt.LazyObjectProxy whose factory returns an object, as resolving the wrapped object reassigns __wrapped__. With thanks to ybai08 for pull request [#361](https://github.com/GrahamDumpleton/wrapt/issues/361) <https://github.com/GrahamDumpleton/wrapt/pull/361>_ which identified the issue.
Commits
  • c82d75d Merge branch 'hotfix/2.5.2'
  • 522e8cc Pin the remaining CI jobs to ubuntu-24.04 so the whole pipeline uses the same...
  • bdce62f Merge branch 'hotfix/2.5.2'
  • 13218c6 Pin Linux CI test jobs to ubuntu-24.04 as ubuntu-latest moved to 26.04.
  • c452d19 Merge branch 'release/2.5.2'
  • c4b9a10 Drop the release candidate suffix for the 2.5.2 release.
  • 6b4e844 Drop end of life PyPy 3.9 from the CI test matrix.
  • 8dcd47a Determine auto proxy special methods from the type of the wrapped object.
  • f72bbde Update to 2.5.2rc1.
  • b521fe6 Merge tag '2.5.1' into develop
  • See full diff in compare view

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions

Bumps the production-dependencies group with 9 updates:

| Package | From | To |
| --- | --- | --- |
| [mypy](https://github.com/python/mypy) | `2.4.0` | `2.4.1` |
| [nodeenv](https://github.com/ekalinin/nodeenv) | `1.11.0` | `1.11.1` |
| [platformdirs](https://github.com/tox-dev/platformdirs) | `4.13.5` | `4.14.0` |
| [pydantic](https://github.com/pydantic/pydantic) | `2.14.1` | `2.14.2` |
| [pydantic-core](https://github.com/pydantic/pydantic) | `2.50.1` | `2.50.2` |
| [python-discovery](https://github.com/tox-dev/python-discovery) | `1.6.4` | `1.6.7` |
| [tzdata](https://github.com/python/tzdata) | `2026.5` | `2026.6` |
| [virtualenv](https://github.com/pypa/virtualenv) | `21.14.13` | `21.15.1` |
| [wrapt](https://github.com/GrahamDumpleton/wrapt) | `2.5.1` | `2.5.2` |


Updates `mypy` from 2.4.0 to 2.4.1
- [Changelog](https://github.com/python/mypy/blob/master/CHANGELOG.md)
- [Commits](python/mypy@v2.4.0...v2.4.1)

Updates `nodeenv` from 1.11.0 to 1.11.1
- [Release notes](https://github.com/ekalinin/nodeenv/releases)
- [Changelog](https://github.com/ekalinin/nodeenv/blob/master/CHANGES)
- [Commits](ekalinin/nodeenv@1.11.0...1.11.1)

Updates `platformdirs` from 4.13.5 to 4.14.0
- [Release notes](https://github.com/tox-dev/platformdirs/releases)
- [Changelog](https://github.com/tox-dev/platformdirs/blob/main/docs/changelog.rst)
- [Commits](tox-dev/platformdirs@4.13.5...4.14.0)

Updates `pydantic` from 2.14.1 to 2.14.2
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/v2.14.2/HISTORY.md)
- [Commits](pydantic/pydantic@v2.14.1...v2.14.2)

Updates `pydantic-core` from 2.50.1 to 2.50.2
- [Release notes](https://github.com/pydantic/pydantic/releases)
- [Changelog](https://github.com/pydantic/pydantic/blob/main/HISTORY.md)
- [Commits](pydantic/pydantic@core-v2.50.1...core-v2.50.2)

Updates `python-discovery` from 1.6.4 to 1.6.7
- [Release notes](https://github.com/tox-dev/python-discovery/releases)
- [Changelog](https://github.com/tox-dev/python-discovery/blob/main/docs/changelog.rst)
- [Commits](tox-dev/python-discovery@1.6.4...1.6.7)

Updates `tzdata` from 2026.5 to 2026.6
- [Release notes](https://github.com/python/tzdata/releases)
- [Changelog](https://github.com/python/tzdata/blob/master/NEWS.md)
- [Commits](python/tzdata@2026.5...2026.6)

Updates `virtualenv` from 21.14.13 to 21.15.1
- [Release notes](https://github.com/pypa/virtualenv/releases)
- [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst)
- [Commits](pypa/virtualenv@21.14.13...21.15.1)

Updates `wrapt` from 2.5.1 to 2.5.2
- [Release notes](https://github.com/GrahamDumpleton/wrapt/releases)
- [Changelog](https://github.com/GrahamDumpleton/wrapt/blob/develop/docs/changes.rst)
- [Commits](GrahamDumpleton/wrapt@2.5.1...2.5.2)

---
updated-dependencies:
- dependency-name: mypy
  dependency-version: 2.4.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: nodeenv
  dependency-version: 1.11.1
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: platformdirs
  dependency-version: 4.14.0
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: pydantic
  dependency-version: 2.14.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: pydantic-core
  dependency-version: 2.50.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: python-discovery
  dependency-version: 1.6.7
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
- dependency-name: tzdata
  dependency-version: '2026.6'
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: virtualenv
  dependency-version: 21.15.1
  dependency-type: indirect
  update-type: version-update:semver-minor
  dependency-group: production-dependencies
- dependency-name: wrapt
  dependency-version: 2.5.2
  dependency-type: indirect
  update-type: version-update:semver-patch
  dependency-group: production-dependencies
...

Signed-off-by: dependabot[bot] <[email protected]>
@dependabot
dependabot Bot requested a review from JonZeolla as a code owner November 2, 2026 09:11
@dependabot @github

dependabot Bot commented on behalf of github Nov 2, 2026

Copy link
Copy Markdown
Contributor Author

Assignees

The following users could not be added as assignees: jonzeolla. Either the username does not exist or it does not have the correct permissions to be added as an assignee.

Labels

The following labels could not be found: dependencies, python. Please create them before Dependabot can add them to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

@ai-coding-guardrails ai-coding-guardrails Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice work! 😎

I didn't find anything of concern

Risk: 🟢 Low

Reviewed with 🤟 by Zenable

@ai-coding-guardrails ai-coding-guardrails Bot added the zenable/risk:low Zenable assessed this PR as LOW risk. label Nov 2, 2026
@dependabot @github

dependabot Bot commented on behalf of github Nov 9, 2026

Copy link
Copy Markdown
Contributor Author

Looks like these dependencies are updatable in another way, so this is no longer needed.

@dependabot dependabot Bot closed this Nov 9, 2026
@dependabot
dependabot Bot deleted the dependabot/uv/production-dependencies-d7ac428bab branch November 9, 2026 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

zenable/risk:low Zenable assessed this PR as LOW risk.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant