Metadata-Version: 2.1
Name: yamicache
Version: 0.7.3
Summary: Yet another in-memory caching package
Home-page: https://github.com/mtik00/yamicache
License: MIT
Author: Timothy McFadden
Author-email: mtik00@users.noreply.github.com
Requires-Python: >=3.11,<4.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3
Project-URL: Documentation, https://yamicache.readthedocs.io
Project-URL: Repository, https://github.com/mtik00/yamicache
Description-Content-Type: text/x-rst

=========
yamicache
=========


.. image:: https://img.shields.io/pypi/v/yamicache.svg
        :target: https://pypi.org/project/yamicache/
        :alt: Pypi Version

.. image:: https://readthedocs.org/projects/yamicache/badge/?version=latest
        :target: https://yamicache.readthedocs.io/en/latest/?badge=latest
        :alt: Documentation Status

.. image:: https://coveralls.io/repos/github/mtik00/yamicache/badge.svg?branch=master
        :target: https://coveralls.io/github/mtik00/yamicache?branch=master
        :alt: Coveralls Status


Yet another in-memory caching package


* Free software: MIT license
* Documentation: https://yamicache.readthedocs.io.


Features
--------

* Memoization
* Selective caching based on decorators
* Mutli-threaded support
* Optional garbage collection thread
* Optional time-based cache expiration


Quick Start
-----------

.. code-block:: python

    from __future__ import print_function
    import time
    from yamicache import Cache
    c = Cache()
    class MyApp(object):
        @c.cached()
        def long_op(self):
                time.sleep(30)
                return 1

    app = MyApp()
    t_start = time.time()
    assert app.long_op() == 1  # takes 30s
    assert app.long_op() == 1  # takes 0s
    assert app.long_op() == 1  # takes 0s
    assert 1 < (time.time() - t_start) < 31

