wirerope
'Turn functions and methods into fully controllable objects'
What it is and what it does
wirerope provides a framework for wrapping Python callables (functions, methods, classmethods, staticmethods) with custom behavior by binding Wire objects to them. The core idea is that instead of writing a simple decorator, you define a Wire subclass—which acts like a decorator function body—and attach it to a callable via WireRope. Each function or bound method gets its own Wire instance, automatically detecting whether it's a free function, instance method, classmethod, or property and binding accordingly.
The package depends on six, inspect2, and singledispatch for compatibility and introspection. It's designed for cases where you need fine-grained control over callable behavior—for example, wrapping methods with instance-specific state or creating complex decorator patterns. The library is stable (no known vulnerabilities) and supports Python 3.4 through 3.13, though it dropped Python 2 support in version 1.0.
Use it for:
- Implement method-specific caching or memoization where the cache state is bound to each instance or class.
- Create decorator-like wrappers that need to maintain state or behave differently for instance methods vs. classmethods.
- Build frameworks that wrap callable objects with custom pre/post-call hooks or logging tied to their owner.
- Develop tools that need to intercept and modify function or method behavior in a structured, reusable way.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Wraps Python callables (functions and methods) with custom behavior by binding user-defined Wire objects to them, enabling decorator-like control over how functions and methods are invoked.
Yes, if you need structured callable wrapping with instance-aware binding. The low install friction, permissive license, and lack of vulnerabilities make it safe to adopt. However, the aging maintenance status (575 days since release) and small community (8 GitHub stars) suggest it's a specialized tool—install it when your use case genuinely requires Wire-based decoration rather than standard decorators or functools.
Install
wirerope on PyPI
pip
pip install wireropeuv
uv add wireropepoetry
poetry add wireropeInstalling wirerope
Before you install
Low install friction with a pure-Python wheel. Maintenance is aging—last release was 575 days ago and the repository shows a commit from 2026-01-26, but the package remains active and unarchivedwith no known vulnerabilities.
License in practice
BSD 2-Clause License is permissive, allowing commercial and private use with minimal restrictions—you may use and modify the package freely as long as you retain the license notice.
Quickstart
pip install wirerope
from wirerope import WireRope, Wire
class MyWire(Wire):
def __call__(self, *args, **kwargs):
# Custom behavior before/after call
return self.func(*args, **kwargs)
@WireRope(MyWire)
def my_function():
pass
Verify before relying
- Whether the aging maintenance status (575 days since last release) signals planned dormancy or stable maturity for this specialized use case.
- Real-world adoption patterns beyond the referenced methodtools library—how widely used is wirerope in production codebases.
Package facts
| License | BSD 2-Clause License (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — six, inspect2, singledispatch |
| Maintenance | aging — 575 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 11,167,059/month — #1,413 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: wirerope-1.0.0-py2.py3-none-any.whl
Keywords: ring, methodtools, hack, method
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
ropeRope is a Python refactoring library that…
copyleft · top 5,000 on PyPI
xmodLets a module behave like a callable object or…
permissive · top 5,000 on PyPI
singleton-decoratorProvides a decorator that enforces singleton…
copyleft · top 15,000 on PyPI
wraptwrapt provides a Python module for building…
permissive · top 100 on PyPI
lazr.delegatesSimplifies creating wrapper objects that…
copyleft · top 15,000 on PyPI
mixed-methodsProvides a decorator that lets a single method…
permissive · top 15,000 on PyPI
multimethodMultimethod provides a decorator for adding…
permissive · top 5,000 on PyPI
logdecoratorLogdecorator provides Python decorators to add…
permissive · top 15,000 on PyPI
methodtoolsProvides LRU caching for methods, classmethods,…
permissive · top 5,000 on PyPI
izuluizulu provides a template-based,…
permissive · top 15,000 on PyPI