skillfed

undecorated

Undecorate python functions, methods or classes

undecorated v0.3.0 88.7K downloads/30d#13,707 on PyPI44
Permissive license Abandoned released

What it is and what it does

undecorated is a small utility that extracts the original, undecorated implementation from a Python function, method, or class. It works by unwrapping the decorator layers that have been applied, returning the core callable underneath. The library supports both function and class decorators.

The package has no runtime dependencies and installs easily, but it has been abandoned since 2017 with no active maintenance. It was tested on Python 2.6 through 3.6 at the time of its last release. If your codebase needs to introspect or access the original function beneath decorators—for testing, debugging, or metaprogramming—this package provides a straightforward way to do so, though you should be aware of its inactive status.

Use it for:

  • Testing decorated functions by accessing their undecorated versions to verify core logic independently
  • Debugging by temporarily bypassing decorator side effects to isolate function behavior
  • Metaprogramming that requires inspecting or calling the original implementation hidden by decorators

Worth the install?

AI-flagged interpretation of the facts on this page — verify before relying

Strips decorators from Python functions, methods, or classes to access the original undecorated implementation.

Yes, if you specifically need to strip decorators and are comfortable with an abandoned package. The utility is simple, has zero dependencies, and no known vulnerabilities. However, verify it works on your Python version (last tested on 3.6) and consider forking if you need future maintenance.

Install

undecorated on PyPI

pip

pip install undecorated

uv

uv add undecorated

poetry

poetry add undecorated

Installing undecorated

Before you install

Installation is frictionless with no runtime dependencies, but the project is abandoned—last release was in 2017 and last commit in 2020. Use only if you need this specific utility and are comfortable maintaining a fork if issues arise.

License in practice

Licensed under Apache License 2.0 (permissive), which allows commercial and private use with minimal restrictions, though you must include a copy of the license and state significant changes.

Quickstart

pip install undecorated

from undecorated import undecorated

@decorator
def my_function():
    pass

original = undecorated(my_function)

Verify before relying

  • Whether the package works reliably on Python versions beyond 3.6 (last tested version mentioned in description)
  • Whether edge cases with complex or nested decorator chains are fully handled

Package facts

License not declared (permissive)
Python support not specified
Install friction low — pure-Python wheel
Runtime dependencies none
Maintenance abandoned — 3,436 days since the last release
Last repo commit
First released
Downloads 88,735/month — #13,707 on PyPI (30-day window, as of 2026-08-14)
Known vulnerabilities none known (OSV.dev, checked 2026-08-14)

Evidence: undecorated-0.3.0-py2-none-any.whl; undecorated-0.3.0-py3-none-any.whl

Intended Audience :: DevelopersLicense :: OSI Approved :: Apache Software LicenseProgramming Language :: Python

Tags

remove decorators from functionstrip function decorators pythonaccess undecorated functionunwrap decorated functiondecorator removal utility
decorator-introspectionmetaprogramming

More Application Frameworks packages