{ "info": { "author": "Radim Rehurek, Victor R. Escobar, Andrey Usov, Prasanna Swaminathan, Jeff Quast, Taylor C. Richberger", "author_email": "tcr@absolute-performance.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python :: 2.5", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Database :: Front-Ends" ], "description": "=========================================================================\nexpiringsqlitedict -- persistent ``dict``, backed-up by SQLite and pickle\n=========================================================================\n\n.. _Downloads: https://pypi.python.org/pypi/expiringsqlitedict\n\nA lightweight wrapper around Python's sqlite3 database with a simple, Pythonic\ndict-like interface. This fork is modified to implement a metatable and\nautomatic expiring and vacuuming semantics, as well as some appropriate locking.\nThis also compresses values automatically.\n\n.. code-block:: python\n\n >>> from expiringsqlitedict import SqliteDict\n >>> with SqliteDict('./my_db.sqlite', autocommit=True) as mydict:\n >>> mydict['some_key'] = any_picklable_object\n >>> print mydict['some_key'] # prints the new value\n >>> for key, value in mydict.iteritems():\n >>> print key, value\n >>> print len(mydict) # etc... all dict functions work\n\nPickle is used internally to (de)serialize the values. Keys are arbitrary strings,\nvalues arbitrary pickle-able objects. This must be used within a context\nmanager.\n\nFeatures\n--------\n\n* Values can be **any picklable objects** (uses ``cPickle`` with the highest protocol).\n* Support for **access from multiple programs or threads**, using a lockfile.\n* Support for **custom serialization or compression**:\n\n .. code-block:: python\n\n # use JSON instead of pickle\n >>> import json\n >>> mydict = SqliteDict('./my_db.sqlite', encode=json.dumps, decode=json.loads)\n\n # apply zlib compression after pickling\n >>> import zlib, pickle, sqlite3\n >>> def my_encode(obj):\n ... return sqlite3.Binary(zlib.compress(pickle.dumps(obj, pickle.HIGHEST_PROTOCOL)))\n >>> def my_decode(obj):\n ... return pickle.loads(zlib.decompress(bytes(obj)))\n >>> mydict = SqliteDict('./my_db.sqlite', encode=my_encode, decode=my_decode)\n\n\nInstallation\n------------\n\nThe module has no dependencies beyond Python itself.\n\nInstall or upgrade with::\n\n pip install expiringsqlitedict\n\nor from the `source tar.gz `_::\n\n python setup.py install\n\nDocumentation\n-------------\n\nStandard Python document strings are inside the module:\n\n.. code-block:: python\n\n >>> import expiringsqlitedict\n >>> help(expiringsqlitedict)\n\n(but it's just ``dict`` with a commit, really).\n\n**Beware**: because of Python semantics, ``expiringsqlitedict`` cannot know when\na mutable SqliteDict-backed entry was modified in RAM. For example,\n``mydict.setdefault('new_key', []).append(1)`` will leave ``mydict['new_key']``\nequal to empty list, not ``[1]``. You'll need to explicitly assign the mutated\nobject back to SqliteDict to achieve the same effect:\n\n.. code-block:: python\n\n >>> val = mydict.get('new_key', [])\n >>> val.append(1) # sqlite DB not updated here!\n >>> mydict['new_key'] = val # now updated\n\n\nFor developers\n--------------\n\nInstall::\n\n # pip install nose\n # pip install coverage\n\nTo perform all tests::\n\n # make test-all\n\nTo perform all tests with coverage::\n\n # make test-all-with-coverage\n\n\nComments, bug reports\n---------------------\n\n``expiringsqlitedict`` resides on `github `_. You can file issues or pull\nrequests there.\n\n\n----\n\n``expiringsqlitedict`` is open source software released under the\n`Apache 2.0 license `_.\nCopyright (c) 2011-2018 `Radim \u0158eh\u016f\u0159ek `_ and\ncontributors. The changes in this fork copyright (c) 2018 Absolute Performance,\nInc.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "http://pypi.python.org/pypi/expiringsqlitedict", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/absperf/expiringsqlitedict", "keywords": "sqlite,persistent dict", "license": "Apache 2.0", "maintainer": "Taylor C. Richberger", "maintainer_email": "tcr@absolute-performance.com", "name": "expiringsqlitedict", "package_url": "https://pypi.org/project/expiringsqlitedict/", "platform": "any", "project_url": "https://pypi.org/project/expiringsqlitedict/", "project_urls": { "Download": "http://pypi.python.org/pypi/expiringsqlitedict", "Homepage": "https://github.com/absperf/expiringsqlitedict" }, "release_url": "https://pypi.org/project/expiringsqlitedict/1.2.4/", "requires_dist": null, "requires_python": "", "summary": "Persistent compressed expiring dict in Python, backed up by sqlite3 and pickle, with auto-cleaning and auto-vacuuming semantics", "version": "1.2.4" }, "last_serial": 5418140, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "dfa47af855979915b9a4b28984c150ae", "sha256": "3298bbb74034f8c11da9de505891190a3ca4a4d8bca541d664d0dcee98c9e9a8" }, "downloads": -1, "filename": "expiringsqlitedict-1.0.0-py3-none-any.whl", "has_sig": true, "md5_digest": "dfa47af855979915b9a4b28984c150ae", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10875, "upload_time": "2018-06-08T18:09:50", "url": "https://files.pythonhosted.org/packages/3c/30/97555bfadc5f931a2ea2b75aa000c63d75ecb68ed6829d455266243e53dc/expiringsqlitedict-1.0.0-py3-none-any.whl" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "53bc0576d358b222d29603123aaeff97", "sha256": "4c7fa5e729741444cb25c4fbac423474738d89abd4c04dc25b86fa2b08f01d01" }, "downloads": -1, "filename": "expiringsqlitedict-1.0.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "53bc0576d358b222d29603123aaeff97", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10880, "upload_time": "2018-06-11T16:19:10", "url": "https://files.pythonhosted.org/packages/e0/ab/3a9278fb09fb1791f8aa4c55535904f77add2141c561099bbeca3659e50e/expiringsqlitedict-1.0.1-py2.py3-none-any.whl" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "54e4d8c47c5e7633ba37a5b59b8289ae", "sha256": "0a4f782fa9cf15ee35155395633de6d99c24ee9a542916ecb1e218fd752b8ead" }, "downloads": -1, "filename": "expiringsqlitedict-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "54e4d8c47c5e7633ba37a5b59b8289ae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10906, "upload_time": "2018-06-11T21:33:55", "url": "https://files.pythonhosted.org/packages/f3/20/42e90acb0ff04affc0782d9a1825d55f8858b66a6e2ce49775440a7300af/expiringsqlitedict-1.1.0-py2.py3-none-any.whl" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "fb58196c9e4e92df72eab32c53cb4864", "sha256": "ad74c9125d4a95d1d66880c401f0c3cbbf3218d5bf3e31b6fb37cb48c881ec9a" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "fb58196c9e4e92df72eab32c53cb4864", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11079, "upload_time": "2018-06-13T23:01:36", "url": "https://files.pythonhosted.org/packages/10/9f/944cd66dc9c30c1558150d4c4492fcadf57e85338598f2ba0968f3c9c179/expiringsqlitedict-1.2.0-py2.py3-none-any.whl" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "0d5fd4124d2bd894033e744037bffe8e", "sha256": "ac58bcfecdb9a831600b3e8a5e9d2c10303c6aa3064fc04c5df44439d941b8f3" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "0d5fd4124d2bd894033e744037bffe8e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11150, "upload_time": "2018-06-28T16:43:42", "url": "https://files.pythonhosted.org/packages/98/5f/0c1a1364af6881f2bec4a77d9a40121fefab882f3339b03e43e0b3d366bd/expiringsqlitedict-1.2.1-py2.py3-none-any.whl" } ], "1.2.2": [ { "comment_text": "", "digests": { "md5": "9f7f379ff10bd6af3e4375a336adce66", "sha256": "7b777ce6e1a6bd1341d5e3ea517eab09cb06d84155b267fdbb8e88c3054ff58b" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "9f7f379ff10bd6af3e4375a336adce66", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11047, "upload_time": "2018-08-07T20:58:05", "url": "https://files.pythonhosted.org/packages/a9/29/601cdc688a868ce91125ca4c84f080c10f5108928b654870816fe353f38a/expiringsqlitedict-1.2.2-py2.py3-none-any.whl" } ], "1.2.3": [ { "comment_text": "", "digests": { "md5": "29cbbf9b0dda518f875b4f427e3431ad", "sha256": "60ba112c03c11ef8a63a83d364f5c281449ae506d10a08f4b080117afcd7eb23" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.3-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "29cbbf9b0dda518f875b4f427e3431ad", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11052, "upload_time": "2018-08-07T21:00:18", "url": "https://files.pythonhosted.org/packages/d3/6a/7b5420df710d99eec0fe2dc273552f0c3a392bcbd5ea4a6aa491df4c3130/expiringsqlitedict-1.2.3-py2.py3-none-any.whl" } ], "1.2.4": [ { "comment_text": "", "digests": { "md5": "d6a9eb8cbd8dc4127726f21d647e6f92", "sha256": "17a6f905ae3d0e91c2f5be0dae875d9599f1d630f38ec483c7dcc90bf469c9fc" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d6a9eb8cbd8dc4127726f21d647e6f92", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11147, "upload_time": "2019-06-19T02:22:32", "url": "https://files.pythonhosted.org/packages/a7/ea/67e0a3d3a2b29804c92a1b749f9d691e9c40193a79d7b276060dc296e7d2/expiringsqlitedict-1.2.4-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6a9eb8cbd8dc4127726f21d647e6f92", "sha256": "17a6f905ae3d0e91c2f5be0dae875d9599f1d630f38ec483c7dcc90bf469c9fc" }, "downloads": -1, "filename": "expiringsqlitedict-1.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d6a9eb8cbd8dc4127726f21d647e6f92", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 11147, "upload_time": "2019-06-19T02:22:32", "url": "https://files.pythonhosted.org/packages/a7/ea/67e0a3d3a2b29804c92a1b749f9d691e9c40193a79d7b276060dc296e7d2/expiringsqlitedict-1.2.4-py2.py3-none-any.whl" } ] }