Metadata-Version: 2.1
Name: methodtools
Version: 0.1.0
Summary: Expand standard functools to methods
Home-page: https://github.com/youknowone/methodtools
Author: Jeong YunWon
Author-email: methodtools@youknowone.org
License: UNKNOWN
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 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
Requires-Dist: wirerope (>=0.2.1)
Provides-Extra: dev
Requires-Dist: pytest (>=3.0.2) ; extra == 'dev'
Requires-Dist: pytest-cov ; extra == 'dev'
Requires-Dist: functools32 (>=3.2.3-2) ; extra == 'dev'
Requires-Dist: sphinx ; extra == 'dev'
Provides-Extra: docs
Requires-Dist: sphinx ; extra == 'docs'
Provides-Extra: tests
Requires-Dist: pytest (>=3.0.2) ; extra == 'tests'
Requires-Dist: pytest-cov ; extra == 'tests'
Requires-Dist: functools32 (>=3.2.3-2) ; extra == 'tests'

methodtools
===========

.. image:: https://travis-ci.com/youknowone/methodtools.svg?branch=master
    :target: https://travis-ci.com/youknowone/methodtools
.. image:: https://codecov.io/gh/youknowone/methodtools/graph/badge.svg
    :target: https://codecov.io/gh/youknowone/methodtools

Expand functools features to methods, classmethods, staticmethods and even for
(unofficial) hybrid methods.

Use `methodtools` module instead of `functools` module. Than it will work as
you expected.

.. code:: python

    from methodtools import lru_cache

    class A(object):

        # cached method. the storage lifetime follows `self` object
        @lru_cache()
        def cached_method(self, args):
            ...

        # cached classmethod. the storage lifetime follows `A` class
        @lru_cache()
        @classmethod()
        def cached_classmethod(self, args):
            ...

        # cached staticmethod. the storage lifetime follows `A` class
        @lru_cache()
        @staticmethod()
        def cached_staticmethod(self, args):
            ...

    @lru_cache()  # just same as functools.lru_cache
    def cached_function():
        ...


Documentation
-------------

For now, `methodtools` only provides `lru_cache`.
See above for example.
See documentation of `functools.lru_cache` for arguments details.


Installation
------------

PyPI is the recommended way.

.. sourcecode:: shell

    $ pip install methodtools

To browse versions and tarballs, visit:
    `<https://pypi.python.org/pypi/methodtools/>`_


See also
--------

This project is derived from `Ring <https://github.com/youknowone/ring/>`_,
a rich cache interface using the same method handling technique.

