{ "info": { "author": "Alice Bevan-McGregor", "author_email": "alice@gothcandy.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.2", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "============\nMarrow Cache\n============\n\n \u00a9 2014-2015 Alice Bevan-McGregor and contributors.\n\n..\n\n https://github.com/marrow/cache\n\n..\n\n |latestversion| |downloads| |masterstatus| |mastercover| |masterrequires| |climate| |issuecount|\n\n1. What is Marrow Cache?\n========================\n\nMarrow Cache is a light-weight transparent caching system for memoizing functions and MongoEngine Document model\nmethods. It is fully tested and highly focused to this task. Primary features include:\n\n* \"Memoize\" the result of arbitrary function calls.\n\n* Organize cached values into \"prefixes\".\n\n* Intelligently cache the result of Document method calls, with the cached value bound to the primary key of the\n document; optionally also keying on other fields.\n\nA TTL index in MongoDB will automatically cull expired values once a minute. If overwhelmed, it won't be able to do\nthem all in one pass. Incremental garbage collection is automatically accounted for by validating the expiry time\non any potential cache hit. If invalid, the record will be explicitly deleted and a new one generated.\n\nBe aware of MongoDB's `power of 2 sized allocations `_.\n\n\n2. Installation\n===============\n\nInstalling ``marrow.cache`` is easy, just execute the following in a terminal::\n\n pip install marrow.cache\n\n**Note:** We *strongly* recommend always using a container, virtualization, or sandboxing environment of some kind when\ndeveloping using Python; installing things system-wide is yucky (for a variety of reasons) nine times out of ten. We prefer light-weight `virtualenv `_, others prefer solutions as robust as `Vagrant `_.\n\nIf you add ``marrow.cache`` to the ``install_requires`` argument of the call to ``setup()`` in your applicaiton's\n``setup.py`` file, Marrow Cache will be automatically installed and made available when your own application or\nlibrary is installed. We recommend using \"less than\" version numbers to ensure there are no unintentional\nside-effects when updating. Use ``marrow.cache<1.1`` to get all bugfixes for the current release, and\n``marrow.cache<2.0`` to get bugfixes and feature updates while ensuring that large breaking changes are not installed.\n\n**Remember to build the indexes.** Executing ``Cache.ensure_indexes()`` in a shell after first deployment will do so.\nIf you forget and begin to cache data, refer to the `MongoEngine\ndocumentation `_ on building indexes\nin the background.\n\n2.1. Development Version\n------------------------\n\n |developstatus| |developcover| |developrequires|\n\nDevelopment takes place on `GitHub `_ in the\n`marrow.cache `_ project. Issue tracking, documentation, and downloads\nare provided there.\n\nInstalling the current development version requires `Git `_, a distributed source code management\nsystem. If you have Git you can run the following to download and *link* the development version into your Python\nruntime::\n\n git clone https://github.com/marrow/cache.git\n (cd cache; python setup.py develop)\n\nYou can then upgrade to the latest version at any time::\n\n (cd cache; git pull; python setup.py develop)\n\nIf you would like to make changes and contribute them back to the project, fork the GitHub project, make your changes,\nand submit a pull request. This process is beyond the scope of this documentation; for more information see\n`GitHub's documentation `_.\n\n\n3. Functional Interface\n=======================\n\nGiven you have a function that is expensive to execute you can use the Marrow Cache functional interface to\nautomatically preserve the result for more rapid recall on subsequent calls.\n\nThere are some important notes regarding behaviour:\n\n* Arguments to the \"generation\" function are hashed after being passed through ``pprint``; collisions may occur.\n This can be alleviated by ensuring reasonable ``__repr__`` implementations or participation in the pretty-print\n protocol.\n\n* The returned (and hence cached) values must be encodeable as a DynamicField, i.e. it must map to a BSON type.\n Some transformations may occur; subclasses of ``dict`` will return as an instance of the subclass on cache miss,\n only to be returned as an actual ``dict`` instance on cache hit. See the examples for an approach that works\n around this.\n\nThe most basic approach is a function that takes arguments, does something to them, and returns a result::\n\n from marrow.cache import Cache\n \n @Cache.memoize(minutes=1)\n def multiply(x, y):\n return x * y\n\nThe ``memoize`` decorator takes the same named arguments as ``timedelta``, and defaults to a one week period. The full\nargument specification is as follows::\n\n Cache.memoize(\n prefix = None, # defaults to callable's qualified name\n reference = None, # ObjectId or saved Document instance, optional\n expires = datetime.utcnow, # you can override the expiry time point of reference\n \n # timedelta values used against the expiry time during generation\n weeks = 0, # actually defaults to 1, but not if anything else is defined\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n \n refresh = False # automatically re-calculate and update the expiry time\n )\n\nIn our example, a call such as ``print(multiply(2, 4))`` will generate a MongoDB record like the following::\n\n {\n _id: {\n p: '__main__.multiply',\n r: None,\n hash: '... hash of arguments ...'\n },\n v: 8,\n e: now() + timedelta(minutes=1)\n }\n\nIf attempting to cache the result of an unreachable function (i.e. most closures) you must supply a prefix.\n\nThe original decorated function is available (to bypass caching) using the ``__func__`` attribute.\n\n3.1. Cache Control\n------------------\n\nThe decorated function is given an attribute that when dereferenced becomes a QuerySet mapping to the cached values\nrelevant to that callable. It can be further queried, cleared, etc.\n\n\n4. Object-Oriented Interface\n============================\n\nThere is a second decorator that is method-aware. It takes the same arguments as the ``memoize`` decorator, but only\nas positional parameters. It has a simple definition::\n\n Cache.method(*attributes, **kw)\n\nPositional arguments may be strings referring to attributes pulled from the first argument passed to the callable.\nPresumably this will be a ``self`` or ``cls`` refernece. These may be nested using dot-notation, with attributes\ntried first, then array dereferencing. (Numerical values will be array dereferenced regardless.)\n\nFor example, to make the value cached automatically dependant on the ``x`` attribute of the instance::\n\n from marrow.schema import Container, Attribute\n \n class Multiply(Container):\n x = Attribute()\n \n @Cache.method('x', minutes=1)\n def do(self, y):\n return self.x * y\n\nIf the first argument (``self``, etc.) is a saved Document instance, ``pk`` will be automatically included in the\ndependant attribute list.\n\n\n5. Version History\n==================\n\nVersion 1.0\n-----------\n\n* **Initial release.** Extract from `Illico Hodes `_ RITA project.\n\nVersion 1.0.1\n-------------\n\n* **Timezone issue correction.** Now correctly handles when timezone-awareness is enabled in MongoEngine/pymongo.\n\nVersion 1.0.2\n-------------\n\n* **Automatic prefix naming.** Automatic prefixes are now available on Python versions < 3.3.\n\n\n6. License\n==========\n\nMarrow Cache has been released under the MIT Open Source license.\n\n6.1. The MIT License\n--------------------\n\nCopyright \u00a9 2014-2015 Alice Bevan-McGregor and contributors.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated\ndocumentation files (the \u201cSoftware\u201d), to deal in the Software without restriction, including without limitation the\nrights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit\npersons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the\nSoftware.\n\nTHE SOFTWARE IS PROVIDED \u201cAS IS\u201d, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE\nWARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\nOTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n.. |masterstatus| image:: http://img.shields.io/travis/marrow/cache/master.svg?style=flat\n :target: https://travis-ci.org/marrow/cache\n :alt: Release Build Status\n\n.. |developstatus| image:: http://img.shields.io/travis/marrow/cache/develop.svg?style=flat\n :target: https://travis-ci.org/marrow/cache\n :alt: Development Build Status\n\n.. |masterrequires| image:: https://requires.io/github/marrow/cache/requirements.svg?branch=master\n :target: https://requires.io/github/marrow/cache/requirements/?branch=master\n :alt: Package Requirements\n\n.. |developrequires| image:: https://requires.io/github/marrow/cache/requirements.svg?branch=develop\n :target: https://requires.io/github/marrow/cache/requirements/?branch=develop\n :alt: Package Requirements\n\n.. |latestversion| image:: http://img.shields.io/pypi/v/marrow.cache.svg?style=flat\n :target: https://pypi.python.org/pypi/marrow.cache\n :alt: Latest Version\n\n.. |downloads| image:: http://img.shields.io/pypi/dw/marrow.cache.svg?style=flat\n :target: https://pypi.python.org/pypi/marrow.cache\n :alt: Downloads per Week\n\n.. |mastercover| image:: http://img.shields.io/coveralls/marrow/cache/master.svg?style=flat\n :target: https://travis-ci.org/marrow/cache\n :alt: Release Test Coverage\n\n.. |developcover| image:: http://img.shields.io/coveralls/marrow/cache/develop.svg?style=flat\n :target: https://travis-ci.org/marrow/cache\n :alt: Development Test Coverage\n\n.. |issuecount| image:: http://img.shields.io/github/issues/marrow/cache.svg?style=flat\n :target: https://github.com/marrow/cache/issues\n :alt: Github Issues\n\n.. |climate| image:: https://codeclimate.com/github/marrow/cache/badges/gpa.svg\n :target: https://codeclimate.com/github/marrow/cache\n :alt: Code Climate\n\n.. |cake| image:: http://img.shields.io/badge/cake-lie-1b87fb.svg?style=flat", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/marrow/cache/", "keywords": "", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "marrow.cache", "package_url": "https://pypi.org/project/marrow.cache/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/marrow.cache/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/marrow/cache/" }, "release_url": "https://pypi.org/project/marrow.cache/1.0.3/", "requires_dist": null, "requires_python": null, "summary": "An extension to MongoEngine for memoization and document-aware caching.", "version": "1.0.3" }, "last_serial": 4911122, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "aa8e39637c66586898ed3801dc391701", "sha256": "25f136ef970e3cc2ee0706078358fe1b5353a508f0ef56765ac99ae0f32330c5" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py2.6.egg", "has_sig": false, "md5_digest": "aa8e39637c66586898ed3801dc391701", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 16981, "upload_time": "2014-12-15T07:00:04", "url": "https://files.pythonhosted.org/packages/17/38/9c6e3eb2ff4d2a3492222e7daa95f35bbebef13dbe67cfb58ee6643a37a0/marrow.cache-1.0.0-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "b876b5977bdf1ad1c26a8de44dba1449", "sha256": "229b5ad9871a0c7bd3659a2e34905d33b57b49a3354c3c75b6cb8da6ae444d4f" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "b876b5977bdf1ad1c26a8de44dba1449", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16891, "upload_time": "2014-12-15T07:00:13", "url": "https://files.pythonhosted.org/packages/c3/84/2891ff7fc155dd465ebe47ec05e65da8866a7ef7f6fac21563a535ba56d3/marrow.cache-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "cea2c884f37d012a44c87ab8f83caedb", "sha256": "cbdfcdaaa71cdf4499f8a46eb83c79d55a521d154c9301e8fbb503997427a050" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "cea2c884f37d012a44c87ab8f83caedb", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 16054, "upload_time": "2014-12-15T07:00:06", "url": "https://files.pythonhosted.org/packages/88/b4/40fcc88ad3a89a20ce16be3c48373872c30b0afce5860eb69ed64462fe6a/marrow.cache-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "38f3f158607d4c6033957ce690f866dd", "sha256": "6ec4e5e5efaa0f58a67ffbaf0770630831574391f70be04f521410903f0e1c10" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py3.2.egg", "has_sig": false, "md5_digest": "38f3f158607d4c6033957ce690f866dd", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 17244, "upload_time": "2014-12-15T07:00:19", "url": "https://files.pythonhosted.org/packages/6e/32/d73e13adde88a815f3a1b93d2e7ea632107297b16cc11ffcbb2107cec29b/marrow.cache-1.0.0-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "5afd29ba0fa8fa1048824fae9467cd06", "sha256": "9cdddc507becbb1213d61c140126981ef71b8c1672f97159a0d6b7ead1115bd5" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py3.3.egg", "has_sig": false, "md5_digest": "5afd29ba0fa8fa1048824fae9467cd06", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 17477, "upload_time": "2014-12-15T07:00:26", "url": "https://files.pythonhosted.org/packages/ed/69/63f4d2f6c72b90fc6a0664aa891e320d2dbbd581aabed58237be9913483a/marrow.cache-1.0.0-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "2370286f2a25944bfedb69de5a97c209", "sha256": "0e555973eae20b04ab2a6c16b2a862baae223a2a361a346bd7e9137138c6b574" }, "downloads": -1, "filename": "marrow.cache-1.0.0-py3.4.egg", "has_sig": false, "md5_digest": "2370286f2a25944bfedb69de5a97c209", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 17331, "upload_time": "2014-12-15T07:00:33", "url": "https://files.pythonhosted.org/packages/d1/d3/27dfe436d7caf5d1d35b2b25723bd394eb900511aa331e36a81944a89300/marrow.cache-1.0.0-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "4a55f4da8d1a8d958608f198b745a227", "sha256": "c257fb20e87340865b25904441612efe7c6c9716e959828beaf886d2b5219fc0" }, "downloads": -1, "filename": "marrow.cache-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4a55f4da8d1a8d958608f198b745a227", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18667, "upload_time": "2014-12-15T07:00:00", "url": "https://files.pythonhosted.org/packages/40/19/143a24d486caab224233de277420a7cdbd916b1ffbf499045151b040748d/marrow.cache-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "612681744e803059d830df3316cff84b", "sha256": "36c394061a00336b99e2a9b9b838732d07afa0aa8847fd03345428494260ebf5" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py2.6.egg", "has_sig": false, "md5_digest": "612681744e803059d830df3316cff84b", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 16974, "upload_time": "2014-12-16T18:17:52", "url": "https://files.pythonhosted.org/packages/13/c1/4e3c42a7857ddcc5254741dfc44718655c24e652e7beb9334c3ad5904193/marrow.cache-1.0.1-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "d22e373f82185dfc5063edba472b01a9", "sha256": "d80c757d680cb74cecc37c7d75682180eb766c0b24b7209d86a894f39ee540a8" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py2.7.egg", "has_sig": false, "md5_digest": "d22e373f82185dfc5063edba472b01a9", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 16879, "upload_time": "2014-12-16T18:18:01", "url": "https://files.pythonhosted.org/packages/a1/94/c3ecbd2fbffc245e664d4301172a0cf2c031fb3bff6b3a48bc55a4df6b6c/marrow.cache-1.0.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "3f256b342dea1ce5459bcdc3539c256c", "sha256": "b88aae9de9571b73da56d8b0b6e1dba1c86004490cd4d96e9f1fe016ee8b62d0" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "3f256b342dea1ce5459bcdc3539c256c", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 15969, "upload_time": "2014-12-16T18:17:54", "url": "https://files.pythonhosted.org/packages/8b/a6/46806d6e5f4120336ab6c3735adb2e275852202f13cbbdef2e39acf980f0/marrow.cache-1.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1cd64961fc5b5a8a4636bde969a349cb", "sha256": "27e12d782177bbd622764a92776eaf151c3f0bbce26a165f24b37775bde106a2" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py3.2.egg", "has_sig": false, "md5_digest": "1cd64961fc5b5a8a4636bde969a349cb", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 17237, "upload_time": "2014-12-16T18:18:07", "url": "https://files.pythonhosted.org/packages/f3/9a/e50c59dd427ce8f92c9d31bf4172b97725ad97e419323596ec2db6e4dee7/marrow.cache-1.0.1-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "2d39febc22b95f5b3421ef57a88b57e9", "sha256": "8b47e6106ef912d8eb65d002e5c3c89099ec9427ef6cabb215fea12fe6234660" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py3.3.egg", "has_sig": false, "md5_digest": "2d39febc22b95f5b3421ef57a88b57e9", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 17471, "upload_time": "2014-12-16T18:18:13", "url": "https://files.pythonhosted.org/packages/6e/0a/47e8f810679983ea8f18987644bae48a3cf8d93281a2a3297f1de0aa5259/marrow.cache-1.0.1-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "501ef040e729ec18784ba1ebeb73000e", "sha256": "948532a3fcd7c4e837d91bfe04e61805324c609c75a9138170c186c21cd9474c" }, "downloads": -1, "filename": "marrow.cache-1.0.1-py3.4.egg", "has_sig": false, "md5_digest": "501ef040e729ec18784ba1ebeb73000e", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 17312, "upload_time": "2014-12-16T18:18:20", "url": "https://files.pythonhosted.org/packages/e8/24/57b25398a179396b5c242cea751630158ca463b06ead20db1e60c344b738/marrow.cache-1.0.1-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "c3ff5f63d8e7598f8c7f27ec45b8fa11", "sha256": "416a3dfc5dee0d770d60c62551931f9125c631f4ad6f5bf03fd21813acd1997a" }, "downloads": -1, "filename": "marrow.cache-1.0.1.tar.gz", "has_sig": false, "md5_digest": "c3ff5f63d8e7598f8c7f27ec45b8fa11", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18573, "upload_time": "2014-12-16T18:17:50", "url": "https://files.pythonhosted.org/packages/68/d5/ecba99893edcf731e74f71c5786a50c59a6dc3dd9d45d590ac841380c20d/marrow.cache-1.0.1.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "810c999dc3f7f43bf01f1b3fa6767029", "sha256": "1757fa9624c1742af5436775653fa78934359168ba621f13a8f32baaba616f85" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.6.egg", "has_sig": false, "md5_digest": "810c999dc3f7f43bf01f1b3fa6767029", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 17333, "upload_time": "2015-04-23T17:49:47", "url": "https://files.pythonhosted.org/packages/4b/11/72f97a91830d2d1e288164cd6665bcdeed6b5512b413e87390916c6e558a/marrow.cache-1.0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "3c87177f450c2d513915e1a9c0d8f136", "sha256": "bbeada1459b49f0137a8dc1ee6f0eac35f87be52b24dac4c1c618305c67ca523" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.7.egg", "has_sig": false, "md5_digest": "3c87177f450c2d513915e1a9c0d8f136", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17252, "upload_time": "2015-04-23T17:49:58", "url": "https://files.pythonhosted.org/packages/e6/fa/d7132b5c99fa45244535dd7b0acaa7e06308a37dbf6f12daa383f798445e/marrow.cache-1.0.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "dad8da9402a01128c7fa3871e8a8efa7", "sha256": "9b094436a3359b6b6aa2851500c9006fdc13ea01e22b1dd70f77bdd334cf6812" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dad8da9402a01128c7fa3871e8a8efa7", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 16133, "upload_time": "2015-04-23T17:49:51", "url": "https://files.pythonhosted.org/packages/1d/dc/1e9cfd3e15a90c785f7863f88947ffb2ddc487fc026a719244902ebde87f/marrow.cache-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94ec5f341993623738ccef3853089293", "sha256": "fec506a6e66be23167cc7dec3898d45673288e8bedef8588e40d13844a9b22db" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.2.egg", "has_sig": false, "md5_digest": "94ec5f341993623738ccef3853089293", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 17612, "upload_time": "2015-04-23T17:50:06", "url": "https://files.pythonhosted.org/packages/dc/09/bfc908fe9d790ee63e818199980a7e69b1fbd37db3b70b44e95f1a3ed139/marrow.cache-1.0.3-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "05f1aa92d54bf377001663169dbb023c", "sha256": "b0b1faa819528b4f8b2ccea0519e7674057d529d0ce0cf7aee8003aad36fc870" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.3.egg", "has_sig": false, "md5_digest": "05f1aa92d54bf377001663169dbb023c", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 17835, "upload_time": "2015-04-23T17:50:14", "url": "https://files.pythonhosted.org/packages/b6/55/af9e6b99ce3304508750a87aa4a4c6c9acfbcf7d76ea79b5d8e7778878e0/marrow.cache-1.0.3-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "80c2fb12daaf4bed2740d3737196baec", "sha256": "28334eda36029d3119adf826fd823310bf6da7fd44dc234f8d4b439c30ed0558" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.4.egg", "has_sig": false, "md5_digest": "80c2fb12daaf4bed2740d3737196baec", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 17683, "upload_time": "2015-04-23T17:50:22", "url": "https://files.pythonhosted.org/packages/8f/52/2ad0fb34d926c6003e6fc7b0cd8988b643114ff99c2a0076fd24f09723fc/marrow.cache-1.0.3-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "3fb10a668036f7f0750abc888ec44ca1", "sha256": "03e2ce865bfb9442817b6c65d0d3102c69964cddcab8e85afdb72d7c48e78ad0" }, "downloads": -1, "filename": "marrow.cache-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3fb10a668036f7f0750abc888ec44ca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18304, "upload_time": "2015-04-23T17:49:44", "url": "https://files.pythonhosted.org/packages/a2/b3/a718463f40aaecc0e5e11b10f1a23be8baaf28899e6189a709f305b10939/marrow.cache-1.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "810c999dc3f7f43bf01f1b3fa6767029", "sha256": "1757fa9624c1742af5436775653fa78934359168ba621f13a8f32baaba616f85" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.6.egg", "has_sig": false, "md5_digest": "810c999dc3f7f43bf01f1b3fa6767029", "packagetype": "bdist_egg", "python_version": "2.6", "requires_python": null, "size": 17333, "upload_time": "2015-04-23T17:49:47", "url": "https://files.pythonhosted.org/packages/4b/11/72f97a91830d2d1e288164cd6665bcdeed6b5512b413e87390916c6e558a/marrow.cache-1.0.3-py2.6.egg" }, { "comment_text": "", "digests": { "md5": "3c87177f450c2d513915e1a9c0d8f136", "sha256": "bbeada1459b49f0137a8dc1ee6f0eac35f87be52b24dac4c1c618305c67ca523" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.7.egg", "has_sig": false, "md5_digest": "3c87177f450c2d513915e1a9c0d8f136", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17252, "upload_time": "2015-04-23T17:49:58", "url": "https://files.pythonhosted.org/packages/e6/fa/d7132b5c99fa45244535dd7b0acaa7e06308a37dbf6f12daa383f798445e/marrow.cache-1.0.3-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "dad8da9402a01128c7fa3871e8a8efa7", "sha256": "9b094436a3359b6b6aa2851500c9006fdc13ea01e22b1dd70f77bdd334cf6812" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dad8da9402a01128c7fa3871e8a8efa7", "packagetype": "bdist_wheel", "python_version": "2.6", "requires_python": null, "size": 16133, "upload_time": "2015-04-23T17:49:51", "url": "https://files.pythonhosted.org/packages/1d/dc/1e9cfd3e15a90c785f7863f88947ffb2ddc487fc026a719244902ebde87f/marrow.cache-1.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "94ec5f341993623738ccef3853089293", "sha256": "fec506a6e66be23167cc7dec3898d45673288e8bedef8588e40d13844a9b22db" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.2.egg", "has_sig": false, "md5_digest": "94ec5f341993623738ccef3853089293", "packagetype": "bdist_egg", "python_version": "3.2", "requires_python": null, "size": 17612, "upload_time": "2015-04-23T17:50:06", "url": "https://files.pythonhosted.org/packages/dc/09/bfc908fe9d790ee63e818199980a7e69b1fbd37db3b70b44e95f1a3ed139/marrow.cache-1.0.3-py3.2.egg" }, { "comment_text": "", "digests": { "md5": "05f1aa92d54bf377001663169dbb023c", "sha256": "b0b1faa819528b4f8b2ccea0519e7674057d529d0ce0cf7aee8003aad36fc870" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.3.egg", "has_sig": false, "md5_digest": "05f1aa92d54bf377001663169dbb023c", "packagetype": "bdist_egg", "python_version": "3.3", "requires_python": null, "size": 17835, "upload_time": "2015-04-23T17:50:14", "url": "https://files.pythonhosted.org/packages/b6/55/af9e6b99ce3304508750a87aa4a4c6c9acfbcf7d76ea79b5d8e7778878e0/marrow.cache-1.0.3-py3.3.egg" }, { "comment_text": "", "digests": { "md5": "80c2fb12daaf4bed2740d3737196baec", "sha256": "28334eda36029d3119adf826fd823310bf6da7fd44dc234f8d4b439c30ed0558" }, "downloads": -1, "filename": "marrow.cache-1.0.3-py3.4.egg", "has_sig": false, "md5_digest": "80c2fb12daaf4bed2740d3737196baec", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 17683, "upload_time": "2015-04-23T17:50:22", "url": "https://files.pythonhosted.org/packages/8f/52/2ad0fb34d926c6003e6fc7b0cd8988b643114ff99c2a0076fd24f09723fc/marrow.cache-1.0.3-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "3fb10a668036f7f0750abc888ec44ca1", "sha256": "03e2ce865bfb9442817b6c65d0d3102c69964cddcab8e85afdb72d7c48e78ad0" }, "downloads": -1, "filename": "marrow.cache-1.0.3.tar.gz", "has_sig": false, "md5_digest": "3fb10a668036f7f0750abc888ec44ca1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18304, "upload_time": "2015-04-23T17:49:44", "url": "https://files.pythonhosted.org/packages/a2/b3/a718463f40aaecc0e5e11b10f1a23be8baaf28899e6189a709f305b10939/marrow.cache-1.0.3.tar.gz" } ] }