Metadata-Version: 2.1 Name: decorator Version: 4.4.0 Summary: Better living through Python with decorators Home-page: https://github.com/micheles/decorator Author: Michele Simionato Author-email: michele.simionato@gmail.com License: new BSD License Keywords: decorators generic utility Platform: All Classifier: Development Status :: 5 - Production/Stable Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Natural Language :: English Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python Classifier: Programming Language :: Python :: 2 Classifier: Programming Language :: Python :: 2.6 Classifier: Programming Language :: Python :: 2.7 Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.2 Classifier: Programming Language :: Python :: 3.3 Classifier: Programming Language :: Python :: 3.4 Classifier: Programming Language :: Python :: 3.5 Classifier: Programming Language :: Python :: 3.6 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: Implementation :: CPython Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Utilities Requires-Python: >=2.6, !=3.0.*, !=3.1.* Decorator module ================= The goal of the decorator module is to make it easy to define signature-preserving function decorators and decorator factories. It also includes an implementation of multiple dispatch and other niceties (please check the docs). It is released under a two-clauses BSD license, i.e. basically you can do whatever you want with it but I am not responsible. Installation ------------- If you are lazy, just perform ``$ pip install decorator`` which will install just the module on your system. If you prefer to install the full distribution from source, including the documentation, clone the [GitHub repo]( https://github.com/micheles/decorator) or download the [tarball](http://pypi.python.org/pypi/decorator), unpack it and run ``$ pip install .`` in the main directory, possibly as superuser. Testing -------- If you have the source code installation you can run the tests with ``$ python src/tests/test.py -v`` or (if you have setuptools installed) ``$ python setup.py test`` Notice that you may run into trouble if in your system there is an older version of the decorator module; in such a case remove the old version. It is safe even to copy the module `decorator.py` over an existing one, since we kept backward-compatibility for a long time. Repository --------------- The project is hosted on GitHub. You can look at the source here: https://github.com/micheles/decorator Documentation --------------- The documentation has been moved to GitHub: https://raw.githubusercontent.com/micheles/decorator/master/docs/documentation.md From there you can get a PDF version by simply using the print functionality of your browser. For the impatient ----------------- Here is an example of how to define a family of decorators tracing slow operations: ```python from decorator import decorator @decorator def warn_slow(func, timelimit=60, *args, **kw): t0 = time.time() result = func(*args, **kw) dt = time.time() - t0 if dt > timelimit: logging.warn('%s took %d seconds', func.__name__, dt) else: logging.info('%s took %d seconds', func.__name__, dt) return result @warn_slow # warn if it takes more than 1 minute def preprocess_input_files(inputdir, tempdir): ... @warn_slow(timelimit=600) # warn if it takes more than 10 minutes def run_calculation(tempdir, outdir): ... ``` Enjoy!