Back to Explore

GrahamDumpleton/wrapt

GitHub
6 updates · last 90 days1 watchersOpen source

Last release: 1 week ago

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

  • Actively maintained, with an upstream push on 2026-05-25 and multiple wrapt 2.2.x updates appearing back to back in late May 2026.
  • Apparent update cadence: a busy period around 2026-05-21 to 2026-05-22 (2.2.0.dev1, 2.2.0rc12, 2.2.0, 2.2.1rc1, 2.2.1), followed by a larger gap since 2.1.2 on 2026-03-06, suggesting a roughly multi-month cadence with bursts.

AI summary generated 5 days ago

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • 2.2.1

    1 week ago

    The release notes for wrapt 2.2.1 provide only general installation and distribution information, without describing specific code changes. The actual diff compared to 2.2.1rc1 shows a single change to the package version metadata.

  • 2.2.1rc1

    1 week ago

    This release candidate primarily bumps the package version to 2.2.1rc1 and updates documentation (adding an API reference page and related docs navigation). The code change of substance is in the C extension’s descriptor handling logic for FunctionWrapper-based wrappers. It adjusts how NULL versus Py_None is handled when invoking a wrapped descriptor’s tp_descr_get, addressing a regression in class attribute access behavior.

  • 2.2.0

    1 week ago

    The release notes for wrapt 2.2.0 are minimal and do not enumerate any functional changes. Code diff between 2.2.0rc12 and 2.2.0 shows only a version tuple adjustment in src/wrapt/__init__.py.

  • 2.2.0rc12

    1 week ago

    The release notes for wrapt 2.2.0rc12 are minimal, describing this as a release candidate and pointing to the upcoming 2.2.0 final changes page. The provided code diff only updates the package version metadata from 2.2.0 dev1 to 2.2.0 rc12.

  • 2.2.0.dev1

    1 week ago

    wrapt 2.2.0.dev1 is a development snapshot intended to exercise the release pipeline, with release notes pointing to the in-progress 2.2.0 changelog. The provided release notes do not enumerate any user-facing API changes, fixes, or breaking changes.

    Features
  • 2.1.2

    2 months ago

    wrapt 2.1.2 makes several behavior fixes and adds regression tests. The most notable code changes adjust how weakly-referenced wrapped instance methods behave after the instance is garbage collected, and how attribute deletion for __annotations__ is propagated to the wrapped object. Build-test-release CI was also adjusted to restore riscv64 wheel coverage.

    Breaking
  • 2.1.1

    3 months ago

    wrapt 2.1.1 is a small maintenance release with no runtime/library logic changes shown in the diff. The changes are focused on packaging and documentation build behavior, including fixing the Read the Docs search UI.

  • 2.1.0

    4 months ago

    wrapt 2.1.0 updates the package version and refreshes typing support, especially the type stubs for decorator and wrapper behavior on class methods. The repo also removes Python 3.8 from the documented supported versions and adjusts CI/test matrices accordingly.

  • 2.0.1

    6 months ago

    wrapt 2.0.1 focuses on fixing lazy_import behavior, especially around correctly presenting the proxy as callable or iterable before the target module is imported. It adds an interface keyword argument to guide LazyObjectProxy to inject the expected special methods up front.

    Features
  • 2.0.0

    7 months ago

    wrapt 2.0.0 introduces a substantially reworked public API surface in `src/wrapt/__init__.py`, including new exports related to proxies (lazy loading) and a new top-level `partial()` helper. The release notes provided for 2.0.0 are effectively empty (they link only to the PyPI page), so the code diff suggests multiple meaningful changes that are not documented there.

    BreakingFeatures
  • 1.14.2

    9 months ago

    wrapt 1.14.2 includes a C-extension bug fix related to reference counting for the PartialCallableObjectProxy type during module initialization. The code diff also shows packaging and CI metadata changes that materially affect supported Python versions, which are not covered by the release notes displayed in the prompt.

    Breaking
  • 1.17.3

    9 months ago

    wrapt 1.17.3 introduces a new module layout, including a conditional C-extension import path (via the WRAPT_DISABLE_EXTENSIONS environment variable), plus newly added pure-Python modules for patching and weak references. The core ObjectProxy C implementation also gained/changed special methods, and the post-import hook mechanism was refactored for locking and proxying behavior.

    BreakingFeatures
  • 1.17.2

    9 months ago

    wrapt 1.17.2 primarily updates build and packaging outputs, specifically adding universal macOS wheels. It also bumps the library version metadata from 1.17.1 to 1.17.2 and refreshes documentation build configuration to match the new release.

    Features
  • 1.17.1

    1/11/2025

    wrapt 1.17.1 primarily fixes two issues: packaging wheel availability on macOS after GitHub Actions runner changes, and an incorrect NotImplementedError message related to pickling on ObjectProxy. The code change updates the error text raised by __reduce__ (and the corresponding C implementation) to reference the correct method name.

  • 1.17.0

    11/22/2024

    wrapt 1.17.0 adds ObjectProxy.__format__ support and updates ObjectProxy.__round__ to accept an optional ndigits parameter (including forwarding to the wrapped object). It also adds internal support for Python 3.13 free threading, including CI and wheel build changes. Release notes mention Python 3.6/3.7 dropping and a set of binding related bug fixes.

    BreakingFeatures