lru-dict
Advanced tools
| [test] | ||
| pytest |
+143
-131
@@ -1,138 +0,9 @@ | ||
| Metadata-Version: 1.1 | ||
| Metadata-Version: 2.1 | ||
| Name: lru-dict | ||
| Version: 1.1.7 | ||
| Version: 1.1.8 | ||
| Summary: An Dict like LRU container. | ||
| Home-page: https://github.com/amitdev/lru-dict | ||
| Author: Amit Dev | ||
| Author-email: UNKNOWN | ||
| License: MIT | ||
| Description: .. image:: https://travis-ci.com/amitdev/lru-dict.svg?branch=master | ||
| :target: https://travis-ci.com/amitdev/lru-dict | ||
| LRU Dict | ||
| ======== | ||
| A fixed size dict like container which evicts Least Recently Used (LRU) items | ||
| once size limit is exceeded. There are many python implementations available | ||
| which does similar things. This is a fast and efficient C implementation. | ||
| LRU maximum capacity can be modified at run-time. | ||
| If you are looking for pure python version, look `else where <http://www.google.com/search?q=python+lru+dict>`_. | ||
| Usage | ||
| ===== | ||
| This can be used to build a LRU cache. Usage is almost like a dict. | ||
| .. code:: python | ||
| from lru import LRU | ||
| l = LRU(5) # Create an LRU container that can hold 5 items | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print None None | ||
| for i in range(5): | ||
| l[i] = str(i) | ||
| print l.items() # Prints items in MRU order | ||
| # Would print [(4, '4'), (3, '3'), (2, '2'), (1, '1'), (0, '0')] | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print (4, '4') (0, '0') | ||
| l[5] = '5' # Inserting one more item should evict the old item | ||
| print l.items() | ||
| # Would print [(5, '5'), (4, '4'), (3, '3'), (2, '2'), (1, '1')] | ||
| l[3] # Accessing an item would make it MRU | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (4, '4'), (2, '2'), (1, '1')] | ||
| # Now 3 is in front | ||
| l.keys() # Can get keys alone in MRU order | ||
| # Would print [3, 5, 4, 2, 1] | ||
| del l[4] # Delete an item | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2'), (1, '1')] | ||
| print l.get_size() | ||
| # Would print 5 | ||
| l.set_size(3) | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2')] | ||
| print l.get_size() | ||
| # Would print 3 | ||
| print l.has_key(5) | ||
| # Would print True | ||
| print 2 in l | ||
| # Would print True | ||
| l.get_stats() | ||
| # Would print (1, 0) | ||
| l.update(5='0') # Update an item | ||
| print l.items() | ||
| # Would print [(5, '0'), (3, '3'), (2, '2')] | ||
| l.clear() | ||
| print l.items() | ||
| # Would print [] | ||
| def evicted(key, value): | ||
| print "removing: %s, %s" % (key, value) | ||
| l = LRU(1, callback=evicted) | ||
| l[1] = '1' | ||
| l[2] = '2' | ||
| # callback would print removing: 1, 1 | ||
| l[2] = '3' | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [(2, '3')] | ||
| del l[2] | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [] | ||
| Install | ||
| ======= | ||
| :: | ||
| pip install lru-dict | ||
| or | ||
| :: | ||
| easy_install lru_dict | ||
| When to use this | ||
| ================ | ||
| Like mentioned above there are many python implementations of an LRU. Use this | ||
| if you need a faster and memory efficient alternative. It is implemented with a | ||
| dict and associated linked list to keep track of LRU order. See code for a more | ||
| detailed explanation. To see an indicative comparison with a pure python module, | ||
| consider a `benchmark <https://gist.github.com/amitdev/5773979>`_ against | ||
| `pylru <https://pypi.python.org/pypi/pylru/>`_ (just chosen at random, it should | ||
| be similar with other python implementations as well). | ||
| :: | ||
| $ python bench.py pylru.lrucache | ||
| Time : 3.31 s, Memory : 453672 Kb | ||
| $ python bench.py lru.LRU | ||
| Time : 0.23 s, Memory : 124328 Kb | ||
| Keywords: lru,dict | ||
| Platform: UNKNOWN | ||
| Classifier: Development Status :: 5 - Production/Stable | ||
@@ -146,3 +17,144 @@ Classifier: Intended Audience :: Developers | ||
| Classifier: Programming Language :: Python :: 3 | ||
| Classifier: Programming Language :: Python :: 3.6 | ||
| Classifier: Programming Language :: Python :: 3.7 | ||
| Classifier: Programming Language :: Python :: 3.8 | ||
| Classifier: Programming Language :: Python :: 3.9 | ||
| Classifier: Programming Language :: Python :: 3.10 | ||
| Classifier: Programming Language :: Python :: Implementation :: CPython | ||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | ||
| Description-Content-Type: text/x-rst | ||
| Provides-Extra: test | ||
| License-File: LICENSE | ||
| .. image:: https://travis-ci.com/amitdev/lru-dict.svg?branch=master | ||
| :target: https://travis-ci.com/amitdev/lru-dict | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml | ||
| LRU Dict | ||
| ======== | ||
| A fixed size dict like container which evicts Least Recently Used (LRU) items | ||
| once size limit is exceeded. There are many python implementations available | ||
| which does similar things. This is a fast and efficient C implementation. | ||
| LRU maximum capacity can be modified at run-time. | ||
| If you are looking for pure python version, look `else where <http://www.google.com/search?q=python+lru+dict>`_. | ||
| Usage | ||
| ===== | ||
| This can be used to build a LRU cache. Usage is almost like a dict. | ||
| .. code:: python | ||
| from lru import LRU | ||
| l = LRU(5) # Create an LRU container that can hold 5 items | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print None None | ||
| for i in range(5): | ||
| l[i] = str(i) | ||
| print l.items() # Prints items in MRU order | ||
| # Would print [(4, '4'), (3, '3'), (2, '2'), (1, '1'), (0, '0')] | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print (4, '4') (0, '0') | ||
| l[5] = '5' # Inserting one more item should evict the old item | ||
| print l.items() | ||
| # Would print [(5, '5'), (4, '4'), (3, '3'), (2, '2'), (1, '1')] | ||
| l[3] # Accessing an item would make it MRU | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (4, '4'), (2, '2'), (1, '1')] | ||
| # Now 3 is in front | ||
| l.keys() # Can get keys alone in MRU order | ||
| # Would print [3, 5, 4, 2, 1] | ||
| del l[4] # Delete an item | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2'), (1, '1')] | ||
| print l.get_size() | ||
| # Would print 5 | ||
| l.set_size(3) | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2')] | ||
| print l.get_size() | ||
| # Would print 3 | ||
| print l.has_key(5) | ||
| # Would print True | ||
| print 2 in l | ||
| # Would print True | ||
| l.get_stats() | ||
| # Would print (1, 0) | ||
| l.update(5='0') # Update an item | ||
| print l.items() | ||
| # Would print [(5, '0'), (3, '3'), (2, '2')] | ||
| l.clear() | ||
| print l.items() | ||
| # Would print [] | ||
| def evicted(key, value): | ||
| print "removing: %s, %s" % (key, value) | ||
| l = LRU(1, callback=evicted) | ||
| l[1] = '1' | ||
| l[2] = '2' | ||
| # callback would print removing: 1, 1 | ||
| l[2] = '3' | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [(2, '3')] | ||
| del l[2] | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [] | ||
| Install | ||
| ======= | ||
| :: | ||
| pip install lru-dict | ||
| or | ||
| :: | ||
| easy_install lru_dict | ||
| When to use this | ||
| ================ | ||
| Like mentioned above there are many python implementations of an LRU. Use this | ||
| if you need a faster and memory efficient alternative. It is implemented with a | ||
| dict and associated linked list to keep track of LRU order. See code for a more | ||
| detailed explanation. To see an indicative comparison with a pure python module, | ||
| consider a `benchmark <https://gist.github.com/amitdev/5773979>`_ against | ||
| `pylru <https://pypi.python.org/pypi/pylru/>`_ (just chosen at random, it should | ||
| be similar with other python implementations as well). | ||
| :: | ||
| $ python bench.py pylru.lrucache | ||
| Time : 3.31 s, Memory : 453672 Kb | ||
| $ python bench.py lru.LRU | ||
| Time : 0.23 s, Memory : 124328 Kb |
@@ -9,3 +9,4 @@ LICENSE | ||
| lru_dict.egg-info/dependency_links.txt | ||
| lru_dict.egg-info/requires.txt | ||
| lru_dict.egg-info/top_level.txt | ||
| test/test_lru.py |
+143
-131
@@ -1,138 +0,9 @@ | ||
| Metadata-Version: 1.1 | ||
| Metadata-Version: 2.1 | ||
| Name: lru-dict | ||
| Version: 1.1.7 | ||
| Version: 1.1.8 | ||
| Summary: An Dict like LRU container. | ||
| Home-page: https://github.com/amitdev/lru-dict | ||
| Author: Amit Dev | ||
| Author-email: UNKNOWN | ||
| License: MIT | ||
| Description: .. image:: https://travis-ci.com/amitdev/lru-dict.svg?branch=master | ||
| :target: https://travis-ci.com/amitdev/lru-dict | ||
| LRU Dict | ||
| ======== | ||
| A fixed size dict like container which evicts Least Recently Used (LRU) items | ||
| once size limit is exceeded. There are many python implementations available | ||
| which does similar things. This is a fast and efficient C implementation. | ||
| LRU maximum capacity can be modified at run-time. | ||
| If you are looking for pure python version, look `else where <http://www.google.com/search?q=python+lru+dict>`_. | ||
| Usage | ||
| ===== | ||
| This can be used to build a LRU cache. Usage is almost like a dict. | ||
| .. code:: python | ||
| from lru import LRU | ||
| l = LRU(5) # Create an LRU container that can hold 5 items | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print None None | ||
| for i in range(5): | ||
| l[i] = str(i) | ||
| print l.items() # Prints items in MRU order | ||
| # Would print [(4, '4'), (3, '3'), (2, '2'), (1, '1'), (0, '0')] | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print (4, '4') (0, '0') | ||
| l[5] = '5' # Inserting one more item should evict the old item | ||
| print l.items() | ||
| # Would print [(5, '5'), (4, '4'), (3, '3'), (2, '2'), (1, '1')] | ||
| l[3] # Accessing an item would make it MRU | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (4, '4'), (2, '2'), (1, '1')] | ||
| # Now 3 is in front | ||
| l.keys() # Can get keys alone in MRU order | ||
| # Would print [3, 5, 4, 2, 1] | ||
| del l[4] # Delete an item | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2'), (1, '1')] | ||
| print l.get_size() | ||
| # Would print 5 | ||
| l.set_size(3) | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2')] | ||
| print l.get_size() | ||
| # Would print 3 | ||
| print l.has_key(5) | ||
| # Would print True | ||
| print 2 in l | ||
| # Would print True | ||
| l.get_stats() | ||
| # Would print (1, 0) | ||
| l.update(5='0') # Update an item | ||
| print l.items() | ||
| # Would print [(5, '0'), (3, '3'), (2, '2')] | ||
| l.clear() | ||
| print l.items() | ||
| # Would print [] | ||
| def evicted(key, value): | ||
| print "removing: %s, %s" % (key, value) | ||
| l = LRU(1, callback=evicted) | ||
| l[1] = '1' | ||
| l[2] = '2' | ||
| # callback would print removing: 1, 1 | ||
| l[2] = '3' | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [(2, '3')] | ||
| del l[2] | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [] | ||
| Install | ||
| ======= | ||
| :: | ||
| pip install lru-dict | ||
| or | ||
| :: | ||
| easy_install lru_dict | ||
| When to use this | ||
| ================ | ||
| Like mentioned above there are many python implementations of an LRU. Use this | ||
| if you need a faster and memory efficient alternative. It is implemented with a | ||
| dict and associated linked list to keep track of LRU order. See code for a more | ||
| detailed explanation. To see an indicative comparison with a pure python module, | ||
| consider a `benchmark <https://gist.github.com/amitdev/5773979>`_ against | ||
| `pylru <https://pypi.python.org/pypi/pylru/>`_ (just chosen at random, it should | ||
| be similar with other python implementations as well). | ||
| :: | ||
| $ python bench.py pylru.lrucache | ||
| Time : 3.31 s, Memory : 453672 Kb | ||
| $ python bench.py lru.LRU | ||
| Time : 0.23 s, Memory : 124328 Kb | ||
| Keywords: lru,dict | ||
| Platform: UNKNOWN | ||
| Classifier: Development Status :: 5 - Production/Stable | ||
@@ -146,3 +17,144 @@ Classifier: Intended Audience :: Developers | ||
| Classifier: Programming Language :: Python :: 3 | ||
| Classifier: Programming Language :: Python :: 3.6 | ||
| Classifier: Programming Language :: Python :: 3.7 | ||
| Classifier: Programming Language :: Python :: 3.8 | ||
| Classifier: Programming Language :: Python :: 3.9 | ||
| Classifier: Programming Language :: Python :: 3.10 | ||
| Classifier: Programming Language :: Python :: Implementation :: CPython | ||
| Classifier: Topic :: Software Development :: Libraries :: Python Modules | ||
| Description-Content-Type: text/x-rst | ||
| Provides-Extra: test | ||
| License-File: LICENSE | ||
| .. image:: https://travis-ci.com/amitdev/lru-dict.svg?branch=master | ||
| :target: https://travis-ci.com/amitdev/lru-dict | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml | ||
| LRU Dict | ||
| ======== | ||
| A fixed size dict like container which evicts Least Recently Used (LRU) items | ||
| once size limit is exceeded. There are many python implementations available | ||
| which does similar things. This is a fast and efficient C implementation. | ||
| LRU maximum capacity can be modified at run-time. | ||
| If you are looking for pure python version, look `else where <http://www.google.com/search?q=python+lru+dict>`_. | ||
| Usage | ||
| ===== | ||
| This can be used to build a LRU cache. Usage is almost like a dict. | ||
| .. code:: python | ||
| from lru import LRU | ||
| l = LRU(5) # Create an LRU container that can hold 5 items | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print None None | ||
| for i in range(5): | ||
| l[i] = str(i) | ||
| print l.items() # Prints items in MRU order | ||
| # Would print [(4, '4'), (3, '3'), (2, '2'), (1, '1'), (0, '0')] | ||
| print l.peek_first_item(), l.peek_last_item() #return the MRU key and LRU key | ||
| # Would print (4, '4') (0, '0') | ||
| l[5] = '5' # Inserting one more item should evict the old item | ||
| print l.items() | ||
| # Would print [(5, '5'), (4, '4'), (3, '3'), (2, '2'), (1, '1')] | ||
| l[3] # Accessing an item would make it MRU | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (4, '4'), (2, '2'), (1, '1')] | ||
| # Now 3 is in front | ||
| l.keys() # Can get keys alone in MRU order | ||
| # Would print [3, 5, 4, 2, 1] | ||
| del l[4] # Delete an item | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2'), (1, '1')] | ||
| print l.get_size() | ||
| # Would print 5 | ||
| l.set_size(3) | ||
| print l.items() | ||
| # Would print [(3, '3'), (5, '5'), (2, '2')] | ||
| print l.get_size() | ||
| # Would print 3 | ||
| print l.has_key(5) | ||
| # Would print True | ||
| print 2 in l | ||
| # Would print True | ||
| l.get_stats() | ||
| # Would print (1, 0) | ||
| l.update(5='0') # Update an item | ||
| print l.items() | ||
| # Would print [(5, '0'), (3, '3'), (2, '2')] | ||
| l.clear() | ||
| print l.items() | ||
| # Would print [] | ||
| def evicted(key, value): | ||
| print "removing: %s, %s" % (key, value) | ||
| l = LRU(1, callback=evicted) | ||
| l[1] = '1' | ||
| l[2] = '2' | ||
| # callback would print removing: 1, 1 | ||
| l[2] = '3' | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [(2, '3')] | ||
| del l[2] | ||
| # doesn't call the evicted callback | ||
| print l.items() | ||
| # would print [] | ||
| Install | ||
| ======= | ||
| :: | ||
| pip install lru-dict | ||
| or | ||
| :: | ||
| easy_install lru_dict | ||
| When to use this | ||
| ================ | ||
| Like mentioned above there are many python implementations of an LRU. Use this | ||
| if you need a faster and memory efficient alternative. It is implemented with a | ||
| dict and associated linked list to keep track of LRU order. See code for a more | ||
| detailed explanation. To see an indicative comparison with a pure python module, | ||
| consider a `benchmark <https://gist.github.com/amitdev/5773979>`_ against | ||
| `pylru <https://pypi.python.org/pypi/pylru/>`_ (just chosen at random, it should | ||
| be similar with other python implementations as well). | ||
| :: | ||
| $ python bench.py pylru.lrucache | ||
| Time : 3.31 s, Memory : 453672 Kb | ||
| $ python bench.py lru.LRU | ||
| Time : 0.23 s, Memory : 124328 Kb |
+6
-0
| .. image:: https://travis-ci.com/amitdev/lru-dict.svg?branch=master | ||
| :target: https://travis-ci.com/amitdev/lru-dict | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/tests.yml | ||
| .. image:: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml/badge.svg | ||
| :target: https://github.com/amitdev/lru-dict/actions/workflows/build-and-deploy.yml | ||
| LRU Dict | ||
@@ -5,0 +11,0 @@ ======== |
+10
-1
@@ -7,5 +7,6 @@ from setuptools import setup, Extension | ||
| setup (name = 'lru-dict', | ||
| version = '1.1.7', | ||
| version = '1.1.8', | ||
| description = 'An Dict like LRU container.', | ||
| long_description = open('README.rst').read(), | ||
| long_description_content_type="text/x-rst", | ||
| author='Amit Dev', | ||
@@ -25,5 +26,13 @@ url='https://github.com/amitdev/lru-dict', | ||
| 'Programming Language :: Python :: 3', | ||
| 'Programming Language :: Python :: 3.6', | ||
| 'Programming Language :: Python :: 3.7', | ||
| 'Programming Language :: Python :: 3.8', | ||
| 'Programming Language :: Python :: 3.9', | ||
| 'Programming Language :: Python :: 3.10', | ||
| 'Programming Language :: Python :: Implementation :: CPython', | ||
| 'Topic :: Software Development :: Libraries :: Python Modules', | ||
| ], | ||
| extras_require={ | ||
| 'test': ['pytest'], | ||
| }, | ||
| ) |
Alert delta unavailable
Currently unable to show alert delta for PyPI packages.
13
8.33%359
2.57%49880
-0.01%