wrapt is a Python module for building decorators, function and object wrappers, and runtime monkey patching. It focuses on preserving decorator introspection and signatures, and uses a C extension for performance-critical parts with a pure Python fallback when needed.
Project status
- The source is actively maintained, with an upstream push on 2026-10-30 and updates continuing through late October.
- Updates have been frequent, with several development, candidate, and stable updates across September and October 2026.
AI summary generated
Recent updates
2.6.0.dev1
wrapt 2.6.0.dev1 is a development snapshot whose supplied release announcement mainly points readers to the work-in-progress 2.6.0 notes. The code changes raise the minimum supported Python version to 3.10 and update development tooling and CI, including tests for free-threaded Python builds.
Breaking2.5.2
wrapt 2.5.2 is the final release following 2.5.2rc1. The supplied diff finalizes the package version metadata and pins several GitHub Actions jobs to Ubuntu 24.04; it shows no package API or runtime behavior changes.
2.5.2rc1
wrapt 2.5.2rc1 is a release candidate with a focus on correcting how AutoObjectProxy and related proxy classes expose Python special methods. The provided release notes do not describe the actual behavioral change included in this candidate.
2.5.1
This release (wrapt 2.5.1) is primarily a version finalization from the 2.5.1rc1 release candidate to the stable 2.5.1 release. The provided release notes do not enumerate specific code changes beyond the general PyPI/wheel information.
2.5.1rc1
This release is a release candidate build of wrapt version 2.5.1rc1. The release notes are minimal and primarily instruct how to install the candidate from PyPi or from the provided source/wheels.
2.5.1.dev1
wrapt 2.5.1.dev1 is a development snapshot build intended to exercise the release pipeline, with wheels and source provided. The code diff shows several behavior fixes targeting adapter factories, LazyObjectProxy path-like support, and WeakFunctionProxy callback handling.
2.5.0
wrapt 2.5.0 is published with pre-built wheels for multiple Python versions and platforms, plus an sdist and SHA256SUMS for verification. The provided release notes do not enumerate any functional changes in-line. The actual code diff between 2.5.0rc1 and 2.5.0 shows only a version metadata update.
2.5.0rc1
wrapt 2.5.0rc1 is a release candidate, but the release notes do not document any specific functional changes beyond directing readers to the upcoming 2.5.0 changes page. The code diff for 2.4.2rc1 to 2.5.0rc1 shows multiple user-facing behavior and API updates, most notably new docstring override support and changes to how __doc__ is resolved for proxy instances.
2.4.2rc1
This release candidate bumps wrapt from 2.4.1 to 2.4.2rc1. The code changes focus on fixing serious C-extension crashes and error behavior around proxy descriptor binding, deletion of __module__/__doc__, and calling wrappers that were created without running their __init__.
2.4.1
wrapt 2.4.1 is published, but the provided release notes do not list any specific code or API changes. The actual diff between 2.4.1rc1 and 2.4.1 only updates the package version metadata in src/wrapt/__init__.py.
2.4.1rc1
This release candidate targets wrapt 2.4.1. The actual code changes mainly update the behavior of PartialCallableObjectProxy across the pure Python and C extension implementations, especially around bound-argument introspection (_self_args, _self_kwargs) and inspect.signature via __signature__. It also improves the C extension's handling of __module__ and __doc__ attribute access for non-interned attribute-name strings.
BreakingFeatures2.4.0
wrapt 2.4.0 is cut from the 2.4.0rc5 release candidate. The provided release notes do not list any functional or API changes.
2.4.0rc5
This release is a release candidate for wrapt 2.4.0 (version updated to 2.4.0rc5). The provided release notes are generic and do not enumerate functional changes.
2.4.0rc4
This release candidate (2.4.0rc4) updates version metadata and introduces significant runtime validation for the async_to_sync and sync_to_async adapters. The release notes provided are minimal and do not describe these behavioral changes, but the code and tests clearly add new error and warning cases plus altered introspection behavior.
BreakingFeatures2.4.0rc3
This release is a release candidate bump for wrapt 2.4.0, updating the package version string to 2.4.0rc3. While the published release notes for the RC are essentially empty, the code diff includes a behavioral change to the mark_as_async marker and expanded test coverage around call semantics.
2.4.0rc2
This release candidate (2.4.0rc2) introduces substantial new monkey-patching and wrapper-introspection APIs, including facilities to remove installed wrappers and to traverse wrapper chains. The provided release notes are essentially a pointer to the 2.4.0 final change log, so the actual behavioral and API changes are not meaningfully documented here.
Features2.4.0rc1
This release is a wrapt 2.4.0 release candidate (2.4.0rc1). The release notes are minimal and mainly describe how to install the candidate from PyPI or from the provided source/wheels, with verification via SHA256SUMS.
2.4.0.dev3
This is a development snapshot release (wrapt 2.4.0.dev3) with no specific functional changes described in the provided release notes. The actual code diff, however, includes a substantial C extension update focused on free-threading memory safety and reference lifetime management across proxy and wrapper operations.
2.4.0.dev2
This release is a development snapshot (wrapt 2.4.0.dev2) intended to exercise the build and release pipeline. The provided release notes focus on installation from the attached wheel and source archives, plus SHA256 verification, but do not describe any build-matrix or wheel-building behavior changes.
2.4.0.dev1
wrapt 2.4.0.dev1 is a development snapshot and is not normally published to PyPI. The provided release notes do not describe any specific functional changes beyond distribution/testing instructions.