skillfed

wirerope

'Turn functions and methods into fully controllable objects'

wirerope v1.0.0 11.2M downloads/30d#1,413 on PyPI8
Permissive license BSD 2-Clause License AGING released

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 wirerope

uv

uv add wirerope

poetry

poetry add wirerope

Installing 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

License :: OSI Approved :: BSD LicenseProgramming Language :: Python :: 3Programming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.4Programming Language :: Python :: 3.5Programming Language :: Python :: 3.6Programming Language :: Python :: 3.7Programming Language :: Python :: 3.8Programming Language :: Python :: 3.9

Tags

callable wrapper with custom behaviormethod decoration frameworkfunction interception and controldecorator-like method bindingcallable object transformationmethod wrapping libraryfunction behavior customization
callable-wrappingdecorator-frameworkmethod-binding

More Software Development packages