NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #197 most downloaded on PyPI
Decorators for Humans
Last release 4 months ago
18 May 2026
Release timing varies
gaps range from 2 weeks to 3.1 years
Nearly every release is documented
notes for 36 of 36 stable releases
3 versions withdrawn
withdrawn after publishing
15 years old
39 releases · first in 2011
Bumped the version to 5.3.1
Bumped the version to 5.3.1
Added license SPDX identifier to pyproject.toml (reported by Christian Lackas).
Updated CHANGES.md [ci skip]
Updated CHANGES.md [ci skip]
Added official support for Python 3.14 (thanks to Hugo van Kemenade,
David Cain and the GitHub user bersbersbers).
Fixed a bug with "return await" contributed by Kadir Can Ozden.
Moved decorator.py to a package structure (decorator/__init__.py) and
added a stub file (decorator/__init__.pyi) contributed by Marco Gorelli.
One column per quarter.
Managed functions without name
Managed functions without name
Shiv Krishna Jaiswal suggested how to manage che case of functions
without __name__.
Michał Górny contributed a fix for the generation of the source package.
Moved tests outside of src
Moved tests outside of src
Changed the build procedure to use pyproject.toml and moved the tests outside of the generated wheel/tarball.
Added official support for Python 3.11, 3.12, 3.13 (thanks to Hugo van Kemenade).
Dropped official support for Python < 3.8: the module is expected to work on older Python versions, but I cannot test such versions on GitHub actions, so I cannot claim that it is officially supported.
Dafu Wu provided support for decorating partial functions, i.e. functions wrapped by functools.partial.
Updated changelog and bumped version to 5.1.1
Updated changelog and bumped version to 5.1.1
Sangwoo Shim contributed a fix so that cythonized functions can be decorated.
Brian McFee pointed out an issue in the decorator_apply example and
Wim Glenn pointed out that the "fix" in version 5.1 broke
decorator.contextmanager even more. Both issues are now solved.
Added a function decoratorx using the FunctionMaker and thus preserving the signature of __code__ objects. Then fixed three small bugs:
Added a function decoratorx using the FunctionMaker and thus
preserving the signature of __code__ objects. Then fixed three small bugs:
decorator.contextmanager were one-shot,
as discovered by Alex Pizarro.decorator.decorator was not passing the kwsyntax argument.Fixed a test breaking PyPy and restored support for RST docs
Fixed a test breaking PyPy and restored support for RST docs
Fixed a test breaking PyPy. Restored support for Sphinx.
Decorating builtin functions
Decorating builtin functions
Made the decorator module more robust when decorating builtin functions
lacking dunder attributes, like dict.__setitem__.
Fixed doctest breaking in Python 3.5
Fixed doctest breaking in Python 3.5
The decorator module was not passing correctly the defaults inside the
*args tuple, thanks to Dan Shult for the fix. Also fixed some misspellings
in the documentation and integrated codespell in the CI, thanks to
Christian Clauss.
Tested docstring preservation
Tested docstring preservation
The decorator module was not copying the __module__ attribute anymore.
Thanks to Nikolay Markov for the notice.
Dropped support for Python < 3.5 with a substantial simplification of the code base (now building a decorator does not require calling "exec"). Added
Dropped support for Python < 3.5 with a substantial simplification of the code base (now building a decorator does not require calling "exec"). Added a way to mimic functools.wraps-generated decorators. Ported the Continuous Integration from Travis to GitHub.
Nothing published for this version
Nothing published for this version
Sylvan Mosberger (https://github.com/Infinisil) contributed a patch to some doctests that were breaking on NixOS. John Vandenberg (https://github.com/
Sylvan Mosberger (https://github.com/Infinisil) contributed a patch to
some doctests that were breaking on NixOS.
John Vandenberg (https://github.com/jayvdb) made a case for removing the usage
of __file__, that was breaking PyOxidizer.
Miro Hrončok (https://github.com/hroncok) contributed some fixes for the
future Python 3.9.
Hugo van Kemenade (https://github.com/hugovk) contributed some fixes for the
future Python 3.10.
Changed the description to "Decorators for Humans" are requested by several users. Fixed a .rst bug in the description as seen in PyPI.
Changed the description to "Decorators for Humans" are requested by several users. Fixed a .rst bug in the description as seen in PyPI.
Fixed a regression with decorator factories breaking the case with no arguments by going back to the syntax used in version 4.2. Accepted a small fix
Fixed a regression with decorator factories breaking the case with no
arguments by going back to the syntax used in version 4.2.
Accepted a small fix from Eric Larson (https://github.com/larsoner) affecting
isgeneratorfunction for old Python versions.
Moved the documentation from ReadTheDocs to GitHub to simplify the
release process and replaced ReStructuredText with Markdown: it is
an inferior solution, but it works better with GitHub and it is good enough.
Accepted a patch from Sylvain Marie (https://github.com/smarie): now the decorator module can decorate generator functions by preserving their being g
Accepted a patch from Sylvain Marie (https://github.com/smarie): now the
decorator module can decorate generator functions by preserving their
being generator functions. Set python_requires='>=2.6, !=3.0.*, !=3.1.*'
in setup.py, as suggested by https://github.com/hugovk.
Added a section "For the impatient" to the README, addressing an issue raised by Amir Malekpour. Added support for Python 3.7. Now the path to the dec
Added a section "For the impatient" to the README, addressing an issue raised by Amir Malekpour. Added support for Python 3.7. Now the path to the decorator module appears in the tracebacks, as suggested by an user at EuroPython 2018.
Extended the decorator family facility to work with positional arguments and updated the documentation. Removed decorator.getargspec and provided deco
Extended the decorator family facility to work with positional
arguments and updated the documentation. Removed
decorator.getargspec and provided decorator.getfullargspec
instead. This is convenient for users of Python 2.6/2.7, the others
can just use inspect.getfullargspec.
Fixed a regression breaking IPython reported by https://github.com/spapini .
Fixed a regression breaking IPython reported by https://github.com/spapini .
Made it possible to define decorators converting coroutines into regular functions, as requested by Itaï Ben Yaacov.
Made it possible to define decorators converting coroutines into regular functions, as requested by Itaï Ben Yaacov.
Changed the documentation build system to sphinx and uploaded the docs on readthedocs.org.
Changed the documentation build system to sphinx and uploaded the docs on readthedocs.org.
Support for Python 3.5 coroutines defined with async def, thanks to Victor-Nicolae Savu who raised the issue of iscoroutinefunction not giving the rig
Support for Python 3.5 coroutines defined with async def, thanks to
Victor-Nicolae Savu who raised the issue of iscoroutinefunction not
giving the right answer for coroutines decorated with the decorator module.
Small improvements to the documentation and tested with Python 3.6
Small improvements to the documentation and tested with Python 3.6
Improved the documentation thanks to Tony Goodchild (zearin) who also provided a much better CSS than the one I was using.
Improved the documentation thanks to Tony Goodchild (zearin) who also provided a much better CSS than the one I was using.
Same as 4.0.7 and 4.0.8, re-uploaded due to issues on PyPI.
Same as 4.0.7 and 4.0.8, re-uploaded due to issues on PyPI.
Switched to a new changelog format (the one in http://keepachangelog.com/) since it was contributed by Alexander Artemenko. Re-added a newline to supp
Switched to a new changelog format (the one in http://keepachangelog.com/) since it was contributed by Alexander Artemenko. Re-added a newline to support old version of Python, as requested by azjps.
Removed a file x.py accidentally entered in the tarball.
Removed a file x.py accidentally entered in the tarball.
Included a patch from Zev Benjamin: now decorated functions play well with cProfile.
Included a patch from Zev Benjamin: now decorated functions play well with cProfile.
Added a warning about the memoize example, as requested by Robert Buchholz.
Added a warning about the memoize example, as requested by Robert Buchholz.
docs/README.rst was not included in MANIFEST.in by accident, thus breaking the source installation.
docs/README.rst was not included in MANIFEST.in by accident, thus breaking the source installation.
Added docs directory and upload_docs command. Fixed bug with __qualname__, reported by Lucian Petrut.
Added docs directory and upload_docs command. Fixed bug with
__qualname__, reported by Lucian Petrut.
Reworked the documentation and introduced decorator.decorated. Removed any dependence from inspect.getargspec, which is deprecated in Python 3.5, as s…
Removed the need for 2to3 by dropping the support for Python 2.5.
Added a MANIFEST.in file and produced a proper wheel. Improved
the integration with setuptools so that python setup.py test works.
Reworked the documentation and introduced decorator.decorated.
Removed any dependence from inspect.getargspec, which is deprecated
in Python 3.5, as signaled by Ralf Gommers.
Fixed contextmanager to work with Python 3.5.
Copied the __qualname__ attribute, as requested by Frazer McLean.
Added a dispatch_on facility to implement generic functions.
Same as 3.4.1, re-uploaded to PyPI.
Same as 3.4.1, re-uploaded to PyPI.
Ported the repository from GoogleCode to GitHub and added Travis CI support. Tests are executed with the new command python test.py -v. setuptools is
Ported the repository from GoogleCode to GitHub and added Travis CI
support. Tests are executed with the new command python test.py -v.
setuptools is now mandatory in Python 3. The suggested
installation tool is now pip, not easy_install. Supported IronPython
and other Python implementations without sys._getframe, as requested by
Doug Blank.
Added the ability to use classes and generic callables as callers and implemented a signature-preserving contexmanager decorator. Fixed a bug with the
Added the ability to use classes and generic callables as callers and implemented a signature-preserving contexmanager decorator. Fixed a bug with the signature f(**kw) in Python 3 and fixed a couple of doctests broken by Python 3.3, both issues pointed out by Dominic Sacré.
Fixed a bug with kwonlyargs for Python 3, submitted by Chris Ellison.
Fixed a bug with kwonlyargs for Python 3, submitted by Chris Ellison.
Fixed a bug with __kwdefaults__ for Python 3, submitted by Chris Ellison.
Fixed a bug with __kwdefaults__ for Python 3, submitted by Chris
Ellison.
Fixed a doctest broken for Python 3.2, as noted by Arfrever Frehtes Taifersar Arahesis; changed the name of the attribute undecorated to __wrapped__,
Fixed a doctest broken for Python 3.2, as noted by
Arfrever Frehtes Taifersar Arahesis; changed the name of
the attribute undecorated to __wrapped__, by following the
Python 3.2 convention, as requested by Ram Rachum; added
the Python 3 classifier to setup.py.
Your coding agent can read these notes before it upgrades. Set up the MCP server →