Hello community, here is the log from the commit of package python-dogpile.cache for openSUSE:Factory checked in at 2014-01-14 19:52:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-dogpile.cache (Old) and /work/SRC/openSUSE:Factory/.python-dogpile.cache.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "python-dogpile.cache" Changes: -------- --- /work/SRC/openSUSE:Factory/python-dogpile.cache/python-dogpile.cache.changes 2013-12-31 10:09:00.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.python-dogpile.cache.new/python-dogpile.cache.changes 2014-01-14 19:52:59.000000000 +0100 @@ -1,0 +2,7 @@ +Mon Jan 13 13:39:05 UTC 2014 - dmueller@suse.com + +- update to 0.5.3: + * Fixed bug where the key_mangler would get in the way of usage of the + async_creation_runner feature within the :meth:` + +------------------------------------------------------------------- Old: ---- dogpile.cache-0.5.2.tar.gz New: ---- dogpile.cache-0.5.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-dogpile.cache.spec ++++++ --- /var/tmp/diff_new_pack.fWhkrv/_old 2014-01-14 19:52:59.000000000 +0100 +++ /var/tmp/diff_new_pack.fWhkrv/_new 2014-01-14 19:52:59.000000000 +0100 @@ -1,7 +1,7 @@ # # spec file for package python-dogpile.cache # -# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -17,7 +17,7 @@ Name: python-dogpile.cache -Version: 0.5.2 +Version: 0.5.3 Release: 0 Summary: A caching front-end based on the Dogpile lock License: BSD-3-Clause ++++++ dogpile.cache-0.5.2.tar.gz -> dogpile.cache-0.5.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/LICENSE new/dogpile.cache-0.5.3/LICENSE --- old/dogpile.cache-0.5.2/LICENSE 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/LICENSE 2014-01-09 03:42:50.000000000 +0100 @@ -1,4 +1,4 @@ -Copyright (c) 2011-2013 Mike Bayer +Copyright (c) 2011-2014 Mike Bayer All rights reserved. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/PKG-INFO new/dogpile.cache-0.5.3/PKG-INFO --- old/dogpile.cache-0.5.2/PKG-INFO 2013-11-15 23:29:13.000000000 +0100 +++ new/dogpile.cache-0.5.3/PKG-INFO 2014-01-09 03:47:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: dogpile.cache -Version: 0.5.2 +Version: 0.5.3 Summary: A caching front-end based on the Dogpile lock. Home-page: http://bitbucket.org/zzzeek/dogpile.cache Author: Mike Bayer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/_sources/api.txt new/dogpile.cache-0.5.3/docs/_sources/api.txt --- old/dogpile.cache-0.5.2/docs/_sources/api.txt 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/_sources/api.txt 2014-01-09 03:42:16.000000000 +0100 @@ -14,12 +14,12 @@ ============= See the section :ref:`creating_backends` for details on how to -register new backends or :ref:`changing_backend_behavior` for details on -how to alter the behavior of existing backends. +register new backends or :ref:`changing_backend_behavior` for details on +how to alter the behavior of existing backends. .. automodule:: dogpile.cache.api :members: - + Backends ========== @@ -35,11 +35,11 @@ .. automodule:: dogpile.cache.backends.file :members: - + .. automodule:: dogpile.cache.proxy :members: - - + + Plugins ======== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/_sources/changelog.txt new/dogpile.cache-0.5.3/docs/_sources/changelog.txt --- old/dogpile.cache-0.5.2/docs/_sources/changelog.txt 2013-11-15 23:25:50.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/_sources/changelog.txt 2014-01-09 03:43:52.000000000 +0100 @@ -2,6 +2,56 @@ Changelog ============== .. changelog:: + :version: 0.5.3 + :released: Wed Jan 8 2014 + + .. change:: + :tags: bug + :pullreq: 10 + + Fixed bug where the key_mangler would get in the way of usage of the + async_creation_runner feature within the :meth:`.Region.get_or_create` + method, by sending in the mangled key instead of the original key. The + "mangled" key is only supposed to be exposed within the backend storage, + not the creation function which sends the key back into the :meth:`.Region.set`, + which does the mangling itself. Pull request courtesy Ryan Kolak. + + .. change:: + :tags: bug, py3k + + Fixed bug where the :meth:`.Region.get_multi` method wasn't calling + the backend correctly in Py3K (e.g. was passing a destructive ``map()`` + object) which would cause this method to fail on the memcached backend. + + .. change:: + :tags: feature + :tickets: 55 + + Added a ``get()`` method to complement the ``set()``, ``invalidate()`` + and ``refresh()`` methods established on functions decorated by + :meth:`.CacheRegion.cache_on_arguments` and + :meth:`.CacheRegion.cache_multi_on_arguments`. Pullreq courtesy + Eric Hanchrow. + + .. change:: + :tags: feature + :tickets: 51 + :pullreq: 11 + + Added a new variant on :class:`.MemoryBackend`, :class:`.MemoryPickleBackend`. + This backend applies ``pickle.dumps()`` and ``pickle.loads()`` to cached + values upon set and get, so that similar copy-on-cache behavior as that + of other backends is employed, guarding cached values against subsequent + in-memory state changes. Pullreq courtesy Jonathan Vanasco. + + .. change:: + :tags: bug + :pullreq: 9 + + Fixed a format call in the redis backend which would otherwise fail + on Python 2.6; courtesy Jeff Dairiki. + +.. changelog:: :version: 0.5.2 :released: Fri Nov 15 2013 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/_sources/usage.txt new/dogpile.cache-0.5.3/docs/_sources/usage.txt --- old/dogpile.cache-0.5.2/docs/_sources/usage.txt 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/_sources/usage.txt 2014-01-09 03:42:16.000000000 +0100 @@ -173,7 +173,9 @@ from dogpile.cache import make_region - region = make_region("dictionary") + region = make_region("myregion") + + region.configure("dictionary") data = region.set("somekey", "somevalue") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/api.html new/dogpile.cache-0.5.3/docs/api.html --- old/dogpile.cache-0.5.2/docs/api.html 2013-11-15 23:27:05.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/api.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>API — dogpile.cache 0.5.2 documentation</title> + <title>API — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> <link rel="next" title="Changelog" href="changelog.html" /> <link rel="prev" title="Usage Guide" href="usage.html" /> </head> @@ -43,7 +43,7 @@ <li class="right" > <a href="usage.html" title="Usage Guide" accesskey="P">previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -58,7 +58,7 @@ <span id="region"></span><h2>Region<a class="headerlink" href="#module-dogpile.cache.region" title="Permalink to this headline">¶</a></h2> <dl class="class"> <dt id="dogpile.cache.region.CacheRegion"> -<em class="property">class </em><tt class="descclassname">dogpile.cache.region.</tt><tt class="descname">CacheRegion</tt><big>(</big><em>name=None</em>, <em>function_key_generator=<function function_key_generator at 0x103b7c668></em>, <em>function_multi_key_generator=<function function_multi_key_generator at 0x103b7c848></em>, <em>key_mangler=None</em>, <em>async_creation_runner=None</em><big>)</big><a class="headerlink" href="#dogpile.cache.region.CacheRegion" title="Permalink to this definition">¶</a></dt> +<em class="property">class </em><tt class="descclassname">dogpile.cache.region.</tt><tt class="descname">CacheRegion</tt><big>(</big><em>name=None</em>, <em>function_key_generator=<function function_key_generator at 0x10207c848></em>, <em>function_multi_key_generator=<function function_multi_key_generator at 0x10207ca28></em>, <em>key_mangler=None</em>, <em>async_creation_runner=None</em><big>)</big><a class="headerlink" href="#dogpile.cache.region.CacheRegion" title="Permalink to this definition">¶</a></dt> <dd><p>A front end to a particular cache backend.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> @@ -243,17 +243,26 @@ <span class="s">"k2"</span><span class="p">:</span> <span class="s">"value2"</span><span class="p">,</span> <span class="s">"k3"</span><span class="p">:</span> <span class="s">"value3"</span><span class="p">})</span> </pre></div> </div> -<p>an <tt class="docutils literal"><span class="pre">invalidate()</span></tt> method, which has the effect of deleting +<p>...an <tt class="docutils literal"><span class="pre">invalidate()</span></tt> method, which has the effect of deleting the given sequence of keys using the same mechanism as that of <a class="reference internal" href="#dogpile.cache.region.CacheRegion.delete_multi" title="dogpile.cache.region.CacheRegion.delete_multi"><tt class="xref py py-meth docutils literal"><span class="pre">CacheRegion.delete_multi()</span></tt></a>:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">generate_something</span><span class="o">.</span><span class="n">invalidate</span><span class="p">(</span><span class="s">"k1"</span><span class="p">,</span> <span class="s">"k2"</span><span class="p">,</span> <span class="s">"k3"</span><span class="p">)</span> </pre></div> </div> -<p>and finally a <tt class="docutils literal"><span class="pre">refresh()</span></tt> method, which will call the creation +<p>...a <tt class="docutils literal"><span class="pre">refresh()</span></tt> method, which will call the creation function, cache the new values, and return them:</p> <div class="highlight-python"><div class="highlight"><pre><span class="n">values</span> <span class="o">=</span> <span class="n">generate_something</span><span class="o">.</span><span class="n">refresh</span><span class="p">(</span><span class="s">"k1"</span><span class="p">,</span> <span class="s">"k2"</span><span class="p">,</span> <span class="s">"k3"</span><span class="p">)</span> </pre></div> </div> +<p>...and a <tt class="docutils literal"><span class="pre">get()</span></tt> method, which will return values +based on the given arguments:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="n">values</span> <span class="o">=</span> <span class="n">generate_something</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s">"k1"</span><span class="p">,</span> <span class="s">"k2"</span><span class="p">,</span> <span class="s">"k3"</span><span class="p">)</span> +</pre></div> +</div> +<div class="versionadded"> +<p><span>New in version 0.5.3: </span>Added <tt class="docutils literal"><span class="pre">get()</span></tt> method to decorated +function.</p> +</div> <p>Parameters passed to <a class="reference internal" href="#dogpile.cache.region.CacheRegion.cache_multi_on_arguments" title="dogpile.cache.region.CacheRegion.cache_multi_on_arguments"><tt class="xref py py-meth docutils literal"><span class="pre">CacheRegion.cache_multi_on_arguments()</span></tt></a> have the same meaning as those passed to <a class="reference internal" href="#dogpile.cache.region.CacheRegion.cache_on_arguments" title="dogpile.cache.region.CacheRegion.cache_on_arguments"><tt class="xref py py-meth docutils literal"><span class="pre">CacheRegion.cache_on_arguments()</span></tt></a>.</p> @@ -355,6 +364,16 @@ <p><span>New in version 0.5.0: </span>Added <tt class="docutils literal"><span class="pre">refresh()</span></tt> method to decorated function.</p> </div> +<p>Lastly, the <tt class="docutils literal"><span class="pre">get()</span></tt> method returns either the value cached +for the given key, or the token <tt class="docutils literal"><span class="pre">NO_VALUE</span></tt> if no such key +exists:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="n">value</span> <span class="o">=</span> <span class="n">generate_something</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> +</pre></div> +</div> +<div class="versionadded"> +<p><span>New in version 0.5.3: </span>Added <tt class="docutils literal"><span class="pre">get()</span></tt> method to decorated +function.</p> +</div> <p>The default key generation will use the name of the function, the module name for the function, the arguments passed, as well as an optional “namespace” @@ -1020,7 +1039,7 @@ <dl class="data"> <dt id="dogpile.cache.api.NO_VALUE"> -<tt class="descclassname">dogpile.cache.api.</tt><tt class="descname">NO_VALUE</tt><em class="property"> = <dogpile.cache.api.NoValue object at 0x103b7e790></em><a class="headerlink" href="#dogpile.cache.api.NO_VALUE" title="Permalink to this definition">¶</a></dt> +<tt class="descclassname">dogpile.cache.api.</tt><tt class="descname">NO_VALUE</tt><em class="property"> = <dogpile.cache.api.NoValue object at 0x10207fbd0></em><a class="headerlink" href="#dogpile.cache.api.NO_VALUE" title="Permalink to this definition">¶</a></dt> <dd><p>Value returned from <tt class="docutils literal"><span class="pre">get()</span></tt> that describes a key not present.</p> </dd></dl> @@ -1036,9 +1055,12 @@ </div> <div class="section" id="module-dogpile.cache.backends.memory"> <span id="backends"></span><h2>Backends<a class="headerlink" href="#module-dogpile.cache.backends.memory" title="Permalink to this headline">¶</a></h2> -<div class="section" id="memory-backend"> -<h3>Memory Backend<a class="headerlink" href="#memory-backend" title="Permalink to this headline">¶</a></h3> -<p>Provides a simple dictionary-based backend.</p> +<div class="section" id="memory-backends"> +<h3>Memory Backends<a class="headerlink" href="#memory-backends" title="Permalink to this headline">¶</a></h3> +<p>Provides simple dictionary-based backends.</p> +<p>The two backends are <a class="reference internal" href="#dogpile.cache.backends.memory.MemoryBackend" title="dogpile.cache.backends.memory.MemoryBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryBackend</span></tt></a> and <a class="reference internal" href="#dogpile.cache.backends.memory.MemoryPickleBackend" title="dogpile.cache.backends.memory.MemoryPickleBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryPickleBackend</span></tt></a>; +the latter applies a serialization step to cached values while the former +places the value as given into the dictionary.</p> <dl class="class"> <dt id="dogpile.cache.backends.memory.MemoryBackend"> <em class="property">class </em><tt class="descclassname">dogpile.cache.backends.memory.</tt><tt class="descname">MemoryBackend</tt><big>(</big><em>arguments</em><big>)</big><a class="headerlink" href="#dogpile.cache.backends.memory.MemoryBackend" title="Permalink to this definition">¶</a></dt> @@ -1071,6 +1093,37 @@ </div> </dd></dl> +<dl class="class"> +<dt id="dogpile.cache.backends.memory.MemoryPickleBackend"> +<em class="property">class </em><tt class="descclassname">dogpile.cache.backends.memory.</tt><tt class="descname">MemoryPickleBackend</tt><big>(</big><em>arguments</em><big>)</big><a class="headerlink" href="#dogpile.cache.backends.memory.MemoryPickleBackend" title="Permalink to this definition">¶</a></dt> +<dd><p>A backend that uses a plain dictionary, but serializes objects on +<tt class="xref py py-meth docutils literal"><span class="pre">MemoryBackend.set()</span></tt> and deserializes <tt class="xref py py-meth docutils literal"><span class="pre">MemoryBackend.get()</span></tt>.</p> +<p>E.g.:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">dogpile.cache</span> <span class="kn">import</span> <span class="n">make_region</span> + +<span class="n">region</span> <span class="o">=</span> <span class="n">make_region</span><span class="p">()</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span> + <span class="s">'dogpile.cache.memory_pickle'</span> +<span class="p">)</span> +</pre></div> +</div> +<p>The usage of pickle to serialize cached values allows an object +as placed in the cache to be a copy of the original given object, so +that any subsequent changes to the given object aren’t reflected +in the cached value, thus making the backend behave the same way +as other backends which make use of serialization.</p> +<p>The serialization is performed via pickle, and incurs the same +performance hit in doing so as that of other backends; in this way +the <a class="reference internal" href="#dogpile.cache.backends.memory.MemoryPickleBackend" title="dogpile.cache.backends.memory.MemoryPickleBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryPickleBackend</span></tt></a> performance is somewhere in between +that of the pure <a class="reference internal" href="#dogpile.cache.backends.memory.MemoryBackend" title="dogpile.cache.backends.memory.MemoryBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryBackend</span></tt></a> and the remote server oriented +backends such as that of Memcached or Redis.</p> +<p>Pickle behavior here is the same as that of the Redis backend, using +either <tt class="docutils literal"><span class="pre">cPickle</span></tt> or <tt class="docutils literal"><span class="pre">pickle</span></tt> and specifying <tt class="docutils literal"><span class="pre">HIGHEST_PROTOCOL</span></tt> +upon serialize.</p> +<div class="versionadded"> +<p><span>New in version 0.5.3.</span></p> +</div> +</dd></dl> + </div> <span class="target" id="module-dogpile.cache.backends.memcached"></span><div class="section" id="memcached-backends"> <h3>Memcached Backends<a class="headerlink" href="#memcached-backends" title="Permalink to this headline">¶</a></h3> @@ -1715,7 +1768,7 @@ <li><a class="reference internal" href="#module-dogpile.cache.region">Region</a></li> <li><a class="reference internal" href="#backend-api">Backend API</a></li> <li><a class="reference internal" href="#module-dogpile.cache.backends.memory">Backends</a><ul> -<li><a class="reference internal" href="#memory-backend">Memory Backend</a></li> +<li><a class="reference internal" href="#memory-backends">Memory Backends</a></li> <li><a class="reference internal" href="#memcached-backends">Memcached Backends</a></li> <li><a class="reference internal" href="#redis-backends">Redis Backends</a></li> <li><a class="reference internal" href="#file-backends">File Backends</a></li> @@ -1774,11 +1827,11 @@ <li class="right" > <a href="usage.html" title="Usage Guide" >previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/build/api.rst new/dogpile.cache-0.5.3/docs/build/api.rst --- old/dogpile.cache-0.5.2/docs/build/api.rst 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/build/api.rst 2014-01-09 03:42:16.000000000 +0100 @@ -14,12 +14,12 @@ ============= See the section :ref:`creating_backends` for details on how to -register new backends or :ref:`changing_backend_behavior` for details on -how to alter the behavior of existing backends. +register new backends or :ref:`changing_backend_behavior` for details on +how to alter the behavior of existing backends. .. automodule:: dogpile.cache.api :members: - + Backends ========== @@ -35,11 +35,11 @@ .. automodule:: dogpile.cache.backends.file :members: - + .. automodule:: dogpile.cache.proxy :members: - - + + Plugins ======== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/build/changelog.rst new/dogpile.cache-0.5.3/docs/build/changelog.rst --- old/dogpile.cache-0.5.2/docs/build/changelog.rst 2013-11-15 23:25:50.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/build/changelog.rst 2014-01-09 03:43:52.000000000 +0100 @@ -2,6 +2,56 @@ Changelog ============== .. changelog:: + :version: 0.5.3 + :released: Wed Jan 8 2014 + + .. change:: + :tags: bug + :pullreq: 10 + + Fixed bug where the key_mangler would get in the way of usage of the + async_creation_runner feature within the :meth:`.Region.get_or_create` + method, by sending in the mangled key instead of the original key. The + "mangled" key is only supposed to be exposed within the backend storage, + not the creation function which sends the key back into the :meth:`.Region.set`, + which does the mangling itself. Pull request courtesy Ryan Kolak. + + .. change:: + :tags: bug, py3k + + Fixed bug where the :meth:`.Region.get_multi` method wasn't calling + the backend correctly in Py3K (e.g. was passing a destructive ``map()`` + object) which would cause this method to fail on the memcached backend. + + .. change:: + :tags: feature + :tickets: 55 + + Added a ``get()`` method to complement the ``set()``, ``invalidate()`` + and ``refresh()`` methods established on functions decorated by + :meth:`.CacheRegion.cache_on_arguments` and + :meth:`.CacheRegion.cache_multi_on_arguments`. Pullreq courtesy + Eric Hanchrow. + + .. change:: + :tags: feature + :tickets: 51 + :pullreq: 11 + + Added a new variant on :class:`.MemoryBackend`, :class:`.MemoryPickleBackend`. + This backend applies ``pickle.dumps()`` and ``pickle.loads()`` to cached + values upon set and get, so that similar copy-on-cache behavior as that + of other backends is employed, guarding cached values against subsequent + in-memory state changes. Pullreq courtesy Jonathan Vanasco. + + .. change:: + :tags: bug + :pullreq: 9 + + Fixed a format call in the redis backend which would otherwise fail + on Python 2.6; courtesy Jeff Dairiki. + +.. changelog:: :version: 0.5.2 :released: Fri Nov 15 2013 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/build/conf.py new/dogpile.cache-0.5.3/docs/build/conf.py --- old/dogpile.cache-0.5.2/docs/build/conf.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/build/conf.py 2014-01-09 03:42:45.000000000 +0100 @@ -51,7 +51,7 @@ # General information about the project. project = u'dogpile.cache' -copyright = u'2011-2013 Mike Bayer' +copyright = u'2011-2014 Mike Bayer' # The version info for the project you're documenting, acts as replacement for # |version| and |release|, also used in various other places throughout the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/build/usage.rst new/dogpile.cache-0.5.3/docs/build/usage.rst --- old/dogpile.cache-0.5.2/docs/build/usage.rst 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/build/usage.rst 2014-01-09 03:42:16.000000000 +0100 @@ -173,7 +173,9 @@ from dogpile.cache import make_region - region = make_region("dictionary") + region = make_region("myregion") + + region.configure("dictionary") data = region.set("somekey", "somevalue") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/changelog.html new/dogpile.cache-0.5.3/docs/changelog.html --- old/dogpile.cache-0.5.2/docs/changelog.html 2013-11-15 23:27:05.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/changelog.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Changelog — dogpile.cache 0.5.2 documentation</title> + <title>Changelog — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> <link rel="prev" title="API" href="api.html" /> </head> <body> @@ -39,7 +39,7 @@ <li class="right" > <a href="api.html" title="API" accesskey="P">previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -50,6 +50,50 @@ <div class="section" id="changelog"> <h1>Changelog<a class="headerlink" href="#changelog" title="Permalink to this headline">¶</a></h1> +<div class="section" id="change-0.5.3"> +<h2>0.5.3<a class="headerlink" href="#change-0.5.3" title="Permalink to this headline">¶</a></h2> +Released: Wed Jan 8 2014<div class="section" id="change-0.5.3-feature"> +<h3>feature<a class="headerlink" href="#change-0.5.3-feature" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li><p id="change-0.5.3-0"><span class="target" id="change-3babe0e2e93d2e81205cc8420f7dd948"><strong>[feature] </strong></span>Added a <tt class="docutils literal"><span class="pre">get()</span></tt> method to complement the <tt class="docutils literal"><span class="pre">set()</span></tt>, <tt class="docutils literal"><span class="pre">invalidate()</span></tt> +and <tt class="docutils literal"><span class="pre">refresh()</span></tt> methods established on functions decorated by +<a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.cache_on_arguments" title="dogpile.cache.region.CacheRegion.cache_on_arguments"><tt class="xref py py-meth docutils literal"><span class="pre">CacheRegion.cache_on_arguments()</span></tt></a> and +<a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.cache_multi_on_arguments" title="dogpile.cache.region.CacheRegion.cache_multi_on_arguments"><tt class="xref py py-meth docutils literal"><span class="pre">CacheRegion.cache_multi_on_arguments()</span></tt></a>. Pullreq courtesy +Eric Hanchrow.<a class="changeset-link reference internal" href="#change-3babe0e2e93d2e81205cc8420f7dd948">(link)</a><p>References: <a class="reference external" href="https://bitbucket.org/zzzeek/dogpile.cache/issue/55">#55</a></p> +</p> +</li> +<li><p id="change-0.5.3-1"><span class="target" id="change-b069b36d12644a4149d11dfcb071bd57"><strong>[feature] </strong></span>Added a new variant on <a class="reference internal" href="api.html#dogpile.cache.backends.memory.MemoryBackend" title="dogpile.cache.backends.memory.MemoryBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryBackend</span></tt></a>, <a class="reference internal" href="api.html#dogpile.cache.backends.memory.MemoryPickleBackend" title="dogpile.cache.backends.memory.MemoryPickleBackend"><tt class="xref py py-class docutils literal"><span class="pre">MemoryPickleBackend</span></tt></a>. +This backend applies <tt class="docutils literal"><span class="pre">pickle.dumps()</span></tt> and <tt class="docutils literal"><span class="pre">pickle.loads()</span></tt> to cached +values upon set and get, so that similar copy-on-cache behavior as that +of other backends is employed, guarding cached values against subsequent +in-memory state changes. Pullreq courtesy Jonathan Vanasco.<a class="changeset-link reference internal" href="#change-b069b36d12644a4149d11dfcb071bd57">(link)</a><p>References: <a class="reference external" href="https://bitbucket.org/zzzeek/dogpile.cache/issue/51">#51</a>, <a class="reference external" href="https://bitbucket.org/zzzeek/dogpile.cache/pull-request/11">pull request 11</a></p> +</p> +</li> +</ul> +</div> +<div class="section" id="change-0.5.3-bug"> +<h3>bug<a class="headerlink" href="#change-0.5.3-bug" title="Permalink to this headline">¶</a></h3> +<ul class="simple"> +<li><p id="change-0.5.3-2"><span class="target" id="change-62ae95cc1002bd5a5448b29bd7496d41"><strong>[bug] </strong></span>Fixed bug where the key_mangler would get in the way of usage of the +async_creation_runner feature within the <tt class="xref py py-meth docutils literal"><span class="pre">Region.get_or_create()</span></tt> +method, by sending in the mangled key instead of the original key. The +“mangled” key is only supposed to be exposed within the backend storage, +not the creation function which sends the key back into the <tt class="xref py py-meth docutils literal"><span class="pre">Region.set()</span></tt>, +which does the mangling itself. Pull request courtesy Ryan Kolak.<a class="changeset-link reference internal" href="#change-62ae95cc1002bd5a5448b29bd7496d41">(link)</a><p>References: <a class="reference external" href="https://bitbucket.org/zzzeek/dogpile.cache/pull-request/10">pull request 10</a></p> +</p> +</li> +<li><p id="change-0.5.3-3"><span class="target" id="change-6f12ed1f7c824e7ea17d6e5b6e8d8b0d"><strong>[bug] [py3k] </strong></span>Fixed bug where the <tt class="xref py py-meth docutils literal"><span class="pre">Region.get_multi()</span></tt> method wasn’t calling +the backend correctly in Py3K (e.g. was passing a destructive <tt class="docutils literal"><span class="pre">map()</span></tt> +object) which would cause this method to fail on the memcached backend.<a class="changeset-link reference internal" href="#change-6f12ed1f7c824e7ea17d6e5b6e8d8b0d">(link)</a><p></p> +</p> +</li> +<li><p id="change-0.5.3-4"><span class="target" id="change-ffcac0cb0d7f15730564fa0218645249"><strong>[bug] </strong></span>Fixed a format call in the redis backend which would otherwise fail +on Python 2.6; courtesy Jeff Dairiki.<a class="changeset-link reference internal" href="#change-ffcac0cb0d7f15730564fa0218645249">(link)</a><p>References: <a class="reference external" href="https://bitbucket.org/zzzeek/dogpile.cache/pull-request/9">pull request 9</a></p> +</p> +</li> +</ul> +</div> +</div> <div class="section" id="change-0.5.2"> <h2>0.5.2<a class="headerlink" href="#change-0.5.2" title="Permalink to this headline">¶</a></h2> Released: Fri Nov 15 2013<div class="section" id="change-0.5.2-feature"> @@ -466,6 +510,11 @@ <h3><a href="index.html">Table Of Contents</a></h3> <ul> <li><a class="reference internal" href="#">Changelog</a><ul> +<li><a class="reference internal" href="#change-0.5.3">0.5.3</a><ul> +<li><a class="reference internal" href="#change-0.5.3-feature">feature</a></li> +<li><a class="reference internal" href="#change-0.5.3-bug">bug</a></li> +</ul> +</li> <li><a class="reference internal" href="#change-0.5.2">0.5.2</a><ul> <li><a class="reference internal" href="#change-0.5.2-feature">feature</a></li> <li><a class="reference internal" href="#change-0.5.2-bug">bug</a></li> @@ -557,11 +606,11 @@ <li class="right" > <a href="api.html" title="API" >previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/front.html new/dogpile.cache-0.5.3/docs/front.html --- old/dogpile.cache-0.5.2/docs/front.html 2013-11-15 23:27:05.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/front.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Front Matter — dogpile.cache 0.5.2 documentation</title> + <title>Front Matter — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> <link rel="next" title="Usage Guide" href="usage.html" /> <link rel="prev" title="Welcome to dogpile.cache’s documentation!" href="index.html" /> </head> @@ -43,7 +43,7 @@ <li class="right" > <a href="index.html" title="Welcome to dogpile.cache’s documentation!" accesskey="P">previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -153,11 +153,11 @@ <li class="right" > <a href="index.html" title="Welcome to dogpile.cache’s documentation!" >previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/genindex.html new/dogpile.cache-0.5.3/docs/genindex.html --- old/dogpile.cache-0.5.2/docs/genindex.html 2013-11-15 23:27:06.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/genindex.html 2014-01-09 03:44:32.000000000 +0100 @@ -7,7 +7,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Index — dogpile.cache 0.5.2 documentation</title> + <title>Index — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -15,7 +15,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -24,7 +24,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> </head> <body> <div class="related"> @@ -36,7 +36,7 @@ <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -324,17 +324,21 @@ <dt><a href="api.html#dogpile.cache.backends.memcached.MemcachedBackend">MemcachedBackend (class in dogpile.cache.backends.memcached)</a> </dt> - </dl></td> - <td style="width: 33%" valign="top"><dl> <dt><a href="api.html#dogpile.cache.backends.memcached.MemcachedLock">MemcachedLock (class in dogpile.cache.backends.memcached)</a> </dt> + </dl></td> + <td style="width: 33%" valign="top"><dl> <dt><a href="api.html#dogpile.cache.backends.memory.MemoryBackend">MemoryBackend (class in dogpile.cache.backends.memory)</a> </dt> + <dt><a href="api.html#dogpile.cache.backends.memory.MemoryPickleBackend">MemoryPickleBackend (class in dogpile.cache.backends.memory)</a> + </dt> + + <dt><a href="api.html#dogpile.cache.api.CachedValue.metadata">metadata (dogpile.cache.api.CachedValue attribute)</a> </dt> @@ -509,11 +513,11 @@ <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/index.html new/dogpile.cache-0.5.3/docs/index.html --- old/dogpile.cache-0.5.2/docs/index.html 2013-11-15 23:27:05.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/index.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Welcome to dogpile.cache’s documentation! — dogpile.cache 0.5.2 documentation</title> + <title>Welcome to dogpile.cache’s documentation! — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="#" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="#" /> <link rel="next" title="Front Matter" href="front.html" /> </head> <body> @@ -39,7 +39,7 @@ <li class="right" > <a href="front.html" title="Front Matter" accesskey="N">next</a> |</li> - <li><a href="#">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="#">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -87,6 +87,7 @@ </ul> </li> <li class="toctree-l1"><a class="reference internal" href="changelog.html">Changelog</a><ul> +<li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.5.3">0.5.3</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.5.2">0.5.2</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.5.1">0.5.1</a></li> <li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.5.0">0.5.0</a></li> @@ -168,11 +169,11 @@ <li class="right" > <a href="front.html" title="Front Matter" >next</a> |</li> - <li><a href="#">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="#">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/py-modindex.html new/dogpile.cache-0.5.3/docs/py-modindex.html --- old/dogpile.cache-0.5.2/docs/py-modindex.html 2013-11-15 23:27:06.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/py-modindex.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Python Module Index — dogpile.cache 0.5.2 documentation</title> + <title>Python Module Index — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> @@ -38,7 +38,7 @@ <li class="right" > <a href="#" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -138,11 +138,11 @@ <li class="right" > <a href="#" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/search.html new/dogpile.cache-0.5.3/docs/search.html --- old/dogpile.cache-0.5.2/docs/search.html 2013-11-15 23:27:06.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/search.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Search — dogpile.cache 0.5.2 documentation</title> + <title>Search — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -24,7 +24,7 @@ <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> <script type="text/javascript" src="_static/searchtools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> <script type="text/javascript"> jQuery(function() { Search.loadIndex("searchindex.js"); }); </script> @@ -43,7 +43,7 @@ <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -94,11 +94,11 @@ <li class="right" > <a href="py-modindex.html" title="Python Module Index" >modules</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/searchindex.js new/dogpile.cache-0.5.3/docs/searchindex.js --- old/dogpile.cache-0.5.2/docs/searchindex.js 2013-11-15 23:27:06.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/searchindex.js 2014-01-09 03:44:32.000000000 +0100 @@ -1 +1 @@ -Search.setIndex({envversion:42,terms:{all:[4,2,3],code:[0,2],edg:4,chain:[4,2],illustr:[4,2],queri:[4,2],global:2,focus:4,prefix:[4,2],sleep:2,client_fn:2,abil:2,skip:[4,2],follow:[4,2],gdbm:3,whose:2,depend:[4,2],advantag:2,mysecondproxi:2,concret:2,my_multi_key_gener:[4,2],those:[4,2,3],under:[4,2],deriv:[4,2],suitabl:[4,2],multivalu:3,"case":[4,2,3],uninstanti:4,string:[4,2,3],fals:[4,2,3],account:2,mechan:[4,2],jack:3,failur:3,veri:1,affect:2,entrypoint:[4,2],entry_point:4,condition:[4,2],recip:1,highest_protocol:3,hour:2,level:[4,2],did:4,overid:[4,2],list:[0,4,2],appropri:[4,2],"try":[4,2],retry_count:4,register_backend:4,adjust:[1,3],small:4,somemethod:[4,2],readthedoc:0,user_fn_two_:4,zip:2,prevent:[4,2,3],impli:2,properti:2,pickleabl:2,direct:[2,3],sign:3,past:2,second:[4,2],design:4,pass:[4,2,3],run:[4,2],delete_multi:[2,3],port:2,append:2,bmemcach:[2,3],"0x103b7c668":[4,2],deleg:2,cachebackend:[4,2],compar:4,neg:3,section:[4,2],invok:[4,2],current:[4,2,3],delet:[4,2,3],version:[0,4,2],"new":[4,1,2,3],method:[4,2,3],can:[4,2,3],celeri:[4,2],elimin:4,"0x103b7e790":2,hash:[4,2],"_config_argument_dict":[4,2],cachedvalu:[4,2],gener:[4,2,3],never:2,here:[0,4,2],redis_expiration_tim:2,coerc:[4,2,3],inher:2,path:[4,2],becom:[0,4,2],modifi:2,sinc:[4,2],valu:[4,2,3],wait:[4,2,3],incom:[4,2],convert:[4,2],purpos:4,larger:2,host:[0,2],subsitut:3,queue:[4,2],datetim:[4,2,3],implement:[4,2,3],honor:[2,3],retrydeleteproxi:4,semant:3,via:[0,4,2],regardless:[4,2],extra:[4,2],apr:3,appli:[4,2],modul:[4,1,2],no_valu:[4,2],filenam:[4,2],unix:[2,3],"boolean":2,sobrinho:3,"__name__":[4,2],instal:3,total:2,establish:[4,2],select:2,from:[0,4,2],ketama:2,asdict:[2,3],longer:3,config_dict:[4,2],regist:[4,2],two:[4,2],dure:[2,3],next:[4,2],key3:2,disambigu:[4,2],value2:2,value1:2,recommend:[4,2],function_multi_key_gener:[4,2],basi:[4,2],type:[4,2],until:[4,2,3],more:[4,2,3],beaker:[1,2],desir:2,idempot:[4,2],share:[4,3],enhanc:0,flag:[4,2,3],indic:2,particular:[0,4,2],actual:[4,2,3],effort:3,cach:[0,2,3],behalf:4,must:[2,3],none:[4,2,3],anydbm:2,join:[4,2],left:2,augment:[4,2,3],setup:[0,4,2,3],work:[2,3],uniqu:2,oct:3,descriptor:2,remain:2,minimum:[2,3],whatev:[4,2],caveat:[4,2],dec:3,def:[4,2],problemat:2,overrid:[4,2],defer:[4,2],memcached_expire_tim:[2,3],process:[4,2,3],lock:[4,1,2,3],myfirstproxi:2,accept:[4,2,3],high:[4,1],critic:3,sourc:[0,4,2,3],want:[4,2],set_multi:[2,3],serial:[4,2,3],rw_lockfil:2,occur:[4,2,3],alwai:[4,2],end:[4,1,2],hoc:4,thing:[4,3],rather:[4,2],anoth:[4,2,3],ordinari:2,readwritemutex:2,write:[4,2,3],how:[4,2],sever:2,pure:2,instead:3,somevalu:4,config:[4,2,3],map:2,product:4,unsupport:3,recogn:[4,2],overridden:4,after:[4,2,3],variant:2,usabl:4,befor:[4,2],function_key_gener:[4,2,3],date:[4,2,3],multipl:[4,2,3],bertin:3,makoplugin:2,associ:[0,4,2],circumst:4,attempt:[4,2],third:2,readwrite_lock:2,counter:4,correspond:2,produc:[4,2,3],mangl:[4,2],inform:[0,4,2],maintain:3,combin:[4,2],amix:2,allow:[4,2,3],generate_kei:[4,2],callabl:[4,2,3],volum:1,fallback:3,first:[0,4,2,3],order:[4,2],talk:[4,2],configure_from_config:[4,2,3],user_fn_three_:4,creation:[4,2,3],help:[4,2],anticip:0,over:2,move:[0,3],my_funct:[4,2],mabei:3,scott:2,lockfil:2,appar:3,still:[4,2,3],dynam:[4,2,3],paramet:[4,2,3],conjunct:[4,2],thank:3,memorybackend:2,call:[4,2,3],fix:[4,2,3],better:0,platform:[2,3],window:[2,3],bypass:[4,2,3],persist:[4,2],mail:0,therefor:[4,2],might:[4,2],alter:[4,2],non:[4,2,3],lock_sleep:[2,3],dogpilecach:0,greater:2,thei:[4,2],python:[0,4,2,3],timestamp:[4,2,3],safe:[4,2],dai:[4,2],initi:[4,2,3],number:[4,2],underneath:4,therebi:3,front:2,portalock:2,now:[4,2,3],term:[4,2],name:[4,2,3],anyth:4,simpl:[4,1,2,3],drop:[2,3],unlik:2,refresh:[4,2,3],separ:[4,2],easili:4,token:[4,2],mode:4,timeout:3,each:[4,2,3],debug:4,klinger:3,unicod:[4,2,3],complet:[1,2],mean:[4,2,3],subset:2,fail:2,regener:[4,2,3],replac:[4,1,2,3],individu:2,hard:[2,3],continu:[2,3],user_fn_thre:4,cacheimpl:2,usernam:2,connect:[2,3],our:4,flock:[2,3],mangler:[4,2],event:4,out:[4,3],timedelta:[4,2,3],item:2,goe:2,antoin:3,"_config_prefix":[4,2],publish:0,payload:[4,2],content:2,hayden:3,mybackend:4,adapt:[1,2],rel:[4,2],reader:[2,3],print:4,mypackag:4,correct:4,async_creation_runn:[4,2],model:4,insid:[4,2],found:[4,2],cache_multi_on_argu:[4,2,3],given:[4,2,3],standard:2,pip:0,base:[4,1,2,3],bayer:0,dictionari:[4,2,3],put:4,org:0,async_cr:[4,2],cache_dict:2,coerce_string_conf:3,extend:[4,2],thread:[4,2,3],could:3,omit:2,ask:2,david:3,turn:4,length:[4,2],place:[0,4,2,3],isn:[4,2,3],outsid:[4,2],my_data:[4,2],is_configur:[2,3],oper:[4,2,3],semaphor:2,suffix:2,directli:[4,2],onc:[2,3],user_fn_on:4,scene:4,someregion:[4,2],mai:[4,2,3],instruct:4,alreadi:[4,2,3],least:2,wasn:3,custom:[4,2,3],miss:[2,3],primari:0,size:2,differ:[4,2,3],key_templ:4,my_region:[4,2],attach:2,data:[4,2],creator:[4,2,3],system:[4,1,2],reentrant:3,cache_region:2,paramt:2,which:[4,2,3],conveni:[4,2],"final":[4,2],store:[4,2,3],includ:[4,1,2,3],option:[4,2,3],namespac:[4,2,3],get_mutex:2,tool:[0,4,2],setuptool:4,specifi:[4,2,3],getter:[2,3],consult:[4,2],dont_cache_non:[4,2],myclass:[4,2],than:[4,2],mako_lookup:2,kind:[4,2],scheme:3,beitei:3,target:[4,2],whenev:[4,2],provid:[4,1,2,3],remov:[4,2],structur:[4,2],some_databas:4,unconfigur:3,str:[4,2,3],were:[4,2],posit:3,stale:[4,2],toward:2,cache_on_argu:[4,2,3],comput:[4,2],abov:[4,2],runner:[4,2],well:[4,2,3],py2:3,arg:[4,2],mind:4,ani:[4,2],rosebaugh:3,get_or_cr:[4,2,3],properli:4,expir:[4,2,3],have:[4,2,3],need:[4,1,2,3],notimplementederror:2,incompat:[2,3],novalu:2,caus:3,built:[4,2],equival:[4,2,3],self:[4,2],offer:4,strictredi:[2,3],note:[4,2],also:[4,2,3],builtin:[4,2],exampl:[4,2,3],take:[4,2,3],make_region:[4,2],tupl:[4,2],environ:[1,2],analogu:2,singl:[4,2,3],expens:[4,2],even:[2,3],courtesi:3,sure:[0,4,2],unless:[4,2],distribut:[0,2],though:[4,1,2,3],track:[0,4,2],object:[4,2,3],reach:[4,2],create_valu:[4,2],most:[0,2],regular:2,acquire_write_lock:2,choos:2,key_mangl:[4,2,3],mutexlock:2,appear:2,don:[2,3],url:[4,2,3],doc:3,later:[4,2],cover:3,doe:[4,2,3],part:[4,2],runtim:4,determin:[4,2,3],newvalu:[4,2],bsddb:[4,2],redisbackend:[2,3],fact:[4,2],yank:3,araujo:3,dbm:[4,2,3],serializ:4,verbos:4,concurr:[4,2],particularli:4,threshold:2,cache_timeout:3,dogpile_lockfil:2,involv:2,access:[4,2,3],onli:[4,2,3],explicitli:2,locat:4,acquir:[4,2],writer:[4,2],releas:[0,4,2,3],behind:4,should:[0,4,2],jan:3,configur:[1,2,3],dict:2,templat:[4,2],my_key_gener:[4,2],local:[4,2],azoff:3,wichert:3,info:3,distributed_lock:[4,2],hit:4,variou:2,get:[4,2,3],ignore_expir:[4,2,3],pypi:0,foremost:4,nativ:4,bean:3,cannot:[4,2],increas:0,ben:3,requir:[4,1,2,3],memcachedlock:2,d_arg1_arg2_arg3:4,enabl:3,held:2,patch:3,"default":[4,2,3],akkerman:3,common:[4,2,3],contain:4,loggingproxi:4,metadata:[4,2],where:[4,2,3],bother:4,altern:[4,2],set:[4,2,3],sep:3,proce:[2,3],invalidate_user_id:4,see:[4,2,3],full:3,result:[4,2],respons:[4,2],bytestr:[4,2,3],christian:3,modulu:2,concern:1,awar:[4,2],statu:0,detect:2,parent:[4,2],correctli:3,pattern:[4,1],ralph:3,written:4,won:[4,2],mutex:[4,2],between:[4,2],"import":[4,2],irc:0,approach:[4,2],across:[2,3],attribut:[4,2],fcntl:2,signatur:2,kei:[2,3],complement:3,wrap:[4,2],set_argu:2,pluck:[4,2],itertool:4,job:2,entir:[4,2,3],cache_arg:2,uncondition:[4,2],distinguish:[4,2],from_url:[2,3],tue:3,jon:3,popul:[4,2],both:2,protect:2,last:[4,2],release_read_lock:2,howev:[4,2,3],against:[4,2],etc:2,instanc:[4,2],should_cache_fn:[4,2,3],logic:2,improv:2,seri:4,memcached_region:[4,2],expiration_tim:[4,2,3],dogpil:[0,2,3],load:[4,2],among:4,generate_someth:[4,2],kwd:2,point:[4,2,3],instanti:[4,2],overview:1,mako_cach:[2,3],period:[4,2],pop:4,user_fn_two:4,suppli:[4,2],typic:[4,2],guid:1,rougher:4,expiri:2,ultim:[4,2],rudimentari:1,user_id:4,creat:[1,2,3],addition:3,fri:3,three:[4,2],been:[4,2,3],accessor:[2,3],compon:4,interpret:[4,2],basic:[4,2],addit:[4,2,3],markedli:4,mike:0,modern:2,value_vers:2,worker:4,search:1,argument:[4,2,3],tiger:2,coordin:[4,2],get_multi:[2,3],get_or_create_multi:[4,2,3],sha1_mangle_kei:[4,2],instant:4,present:[4,2,3],my_dictionari:2,look:4,packag:[0,3],plain:[2,3],erron:3,lookup_user_by_id:4,defin:4,"while":[4,2,3],match:2,behavior:[1,2,3],error:3,report:[0,4,2],loos:0,pylon:0,fname_:4,would:[4,2,3],proxybackend:[4,2,3],lock_timeout:[2,3],helper:4,readi:[4,2],key2:2,key1:2,henc:4,them:[4,2],origin:[4,2],kwarg:2,lock_factori:[2,3],myapp:[4,2],"return":[4,2,3],somekei:[4,2],ascii:[4,2],templatelookup:2,"__init__":[4,2],decor:[4,2,3],cachefil:2,develop:[0,3],open:1,prior:2,perform:[4,1],parti:2,make:[4,2,3],same:[4,2,3],easier:4,bmemcachedbackend:2,binari:2,when:[4,2,3],document:[0,2,3],higher:1,week:[4,2],finish:[4,2],http:[0,1,2],context:2,again:[4,2],lutz:3,upon:[4,2,3],effect:[1,2],rais:[2,3],user:[4,1],mani:4,immedi:[4,2],local_region:[4,2],stack:2,hanu:3,recreat:[4,2],task:[4,2],lib:2,older:[4,2],whole:3,thu:[4,2,3],itself:[4,2],without:[4,2],pickl:[4,3],client:[4,2],wherebi:3,thi:[0,4,2,3],filesystem:2,everyth:4,genericmemcachedbackend:2,latter:2,promptli:[4,2],usual:4,olli:3,construct:4,identifi:4,background:[4,2],just:[4,2],"2to3":3,detail:[4,2],relianc:3,simultan:[4,2],yet:[4,2,3],py3k:3,versu:[4,2],easi:1,wed:3,except:[4,2,3],param:2,blog:2,script:0,add:[4,3],other:[2,3],myconfig:[4,2],fedorov:3,passthrough:2,els:2,subsequ:[4,2],app:3,morgan:3,build:3,real:4,applic:[4,1,2],marco:3,fname:[4,2],format:2,read:2,sha1:[4,2],cache_impl:2,know:4,acquire_read_lock:2,mysect:2,moc:[4,2],cacheregion:[4,2,3],bit:4,password:[2,3],tweak:1,you:[0,4,2],python3:3,like:[0,4,2,3],specif:[0,1,2,3,4],glitch:3,threadsaf:2,resolv:[4,2],integ:[4,2,3],server:[4,2],either:[0,4,2],popular:4,async:3,soft:[2,3],page:[0,1],memcachedbackend:2,underli:4,didn:3,old:[2,3],deal:2,compat:[2,3],some:[4,2],back:2,certain:[4,2],understood:2,intern:[4,2],with_stat:3,authent:2,user_kei:4,librari:[4,2],nov:3,lead:[0,3],channel:0,coercion:3,normal:[4,2],subclass:[4,2],dbmbackend:[2,3],unsur:0,substitut:[4,2],retri:4,unit:3,pylibmc:[2,3],foo:[4,2],localhost:2,refer:3,core:[0,1,2,3,4],encourag:1,previou:[4,2],throttl:2,usag:[0,1,2],filelock:[2,3],step:4,repositori:[0,3],"0x103b7c848":[4,2],genericmemachedbackend:2,post:[0,2],zzzeek:0,"super":4,abstractfilelock:[2,3],describ:[4,2],session:1,about:0,alexand:3,justin:3,valid:2,ef206ed4473fec3b639:3,load_user_info:4,manag:[4,2],total_second:3,issu:[0,4,3],constructor:[4,2],own:[1,2],discard:2,disabl:[4,2],"\u0142ukasz":3,repair:3,"__future__":3,within:[4,2,3],tag:2,automat:2,due:3,down:[4,2],supersed:[4,2],dbmfile:[4,2],ensur:3,chang:[0,1,2,3],storag:4,your:2,per:[4,2,3],pullreq:3,retry_proxi:4,git:[0,3],log:4,wai:[4,2],rutherfurd:3,aren:2,support:[0,4,2,3],"long":[4,2],"class":[4,2,3],avail:[0,4,2],start:[4,2],adventag:4,interfac:4,tracker:0,lot:1,suit:2,value3:2,user_fn_one_:4,routin:3,errant:3,ret:2,"function":[4,2,3],min_compress_len:[2,3],regen:2,form:[4,2],enough:2,forc:[2,3],great:3,jun:3,keyerror:3,link:[2,3],scope:2,sun:3,"true":[4,2,3],faster:4,count:4,pull:[4,2,3],made:[2,3],release_write_lock:2,consist:4,possibl:[4,2],whether:[4,2],best:2,somedatabas:[4,2],necessarili:[4,2],asynchron:[4,2,3],below:[4,2],otherwis:[4,2],deadlock:3,similar:[0,4,2,3],fidosz:3,block:[4,2],featur:2,evalu:[4,2],"int":3,retriev:[4,2,3],"abstract":3,myotherclass:[4,2],life:4,doesn:2,repres:[4,2],plu:3,exist:[4,2,3],request:[4,2,3],pileup:3,sat:3,check:[4,2,3],assembl:2,jimmei:3,dictionarybackend:4,index:[0,1],excel:4,unnecessari:2,invalid:[2,3],tim:3,declar:[4,2],lookup:2,futur:[4,2],rememb:[4,2],test:[4,2,3],ignor:[4,2,3],is_open:2,riak:4,unlimit:2,registri:2,sequenc:2,fainberg:3,push:2,recent:0,length_conditional_mangl:2,consid:[4,2],previous:3,pool:2,multithread:[4,2],bitbucket:0,receiv:[4,2,3],handl:2,tcp_nodelai:2,directori:[2,3],redundantli:4,space:4,to_str:[4,2,3],portion:4,pylibmcbackend:2,potenti:4,time:[4,2,3],far:1,sasl:2,backward:2,newli:[4,2,3],getlogg:4,togeth:[4,2]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:data","5":"py:function"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","data","Python data"],"5":["py","function","Python function"]},filenames:["front","index","api","changelog","usage"],titles:["Front Matter","Welcome to dogpile.cache’s documentation!","API","Changelog","Usage Guide"],objects:{"dogpile.cache.region":{CacheRegion:[2,1,1,""],make_region:[2,5,1,""],value_version:[2,4,1,""]},"dogpile.cache.backends.file.AbstractFileLock":{release_read_lock:[2,2,1,""],read:[2,2,1,""],acquire:[2,2,1,""],write:[2,2,1,""],acquire_write_lock:[2,2,1,""],acquire_read_lock:[2,2,1,""],release:[2,2,1,""],is_open:[2,3,1,""],release_write_lock:[2,2,1,""]},"dogpile.cache.backends":{memcached:[2,0,1,""],redis:[2,0,1,""],file:[2,0,1,""],memory:[2,0,1,""]},"dogpile.cache.proxy.ProxyBackend":{wrap:[2,2,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend":{set_arguments:[2,3,1,""],client:[2,3,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend":{delete_multi:[2,2,1,""]},"dogpile.cache.region.CacheRegion":{configure_from_config:[2,2,1,""],is_configured:[2,3,1,""],set:[2,2,1,""],configure:[2,2,1,""],invalidate:[2,2,1,""],get:[2,2,1,""],cache_on_arguments:[2,2,1,""],get_or_create_multi:[2,2,1,""],delete_multi:[2,2,1,""],get_multi:[2,2,1,""],cache_multi_on_arguments:[2,2,1,""],set_multi:[2,2,1,""],wrap:[2,2,1,""],get_or_create:[2,2,1,""],"delete":[2,2,1,""]},"dogpile.cache.backends.redis":{RedisBackend:[2,1,1,""]},"dogpile.cache.plugins.mako_cache":{MakoPlugin:[2,1,1,""]},"dogpile.cache.api.CacheBackend":{set:[2,2,1,""],get:[2,2,1,""],get_mutex:[2,2,1,""],set_multi:[2,2,1,""],delete_multi:[2,2,1,""],get_multi:[2,2,1,""],key_mangler:[2,3,1,""],"delete":[2,2,1,""]},"dogpile.cache.backends.memory":{MemoryBackend:[2,1,1,""]},"dogpile.cache.backends.memcached":{BMemcachedBackend:[2,1,1,""],GenericMemcachedBackend:[2,1,1,""],PylibmcBackend:[2,1,1,""],MemcachedLock:[2,1,1,""],MemcachedBackend:[2,1,1,""]},"dogpile.cache.api":{NO_VALUE:[2,4,1,""],CachedValue:[2,1,1,""],NoValue:[2,1,1,""],CacheBackend:[2,1,1,""]},"dogpile.cache.backends.file":{FileLock:[2,1,1,""],AbstractFileLock:[2,1,1,""],DBMBackend:[2,1,1,""]},"dogpile.cache.proxy":{ProxyBackend:[2,1,1,""]},"dogpile.cache.api.CachedValue":{payload:[2,3,1,""],metadata:[2,3,1,""]},"dogpile.cache.plugins":{mako_cache:[2,0,1,""]},"dogpile.cache.util":{function_key_generator:[2,5,1,""],length_conditional_mangler:[2,5,1,""],sha1_mangle_key:[2,5,1,""]},"dogpile.cache":{region:[2,0,1,""],api:[2,0,1,""],proxy:[2,0,1,""]}},titleterms:{featur:3,creat:4,overview:4,misc:3,indic:1,api:2,file:2,tabl:1,instal:0,redi:2,guid:4,backend:[4,2],mako:2,group:4,welcom:1,commun:0,configur:4,invalid:4,bug:[0,3],pylibmc:4,document:1,proxi:2,kei:4,relat:4,usag:4,util:2,front:0,rudimentari:4,homepag:0,cach:1,recip:4,memori:2,changelog:3,region:[4,2],plugin:2,memcach:2,project:0,matter:0,integr:2,behavior:4,chang:4,dogpil:1}}) \ No newline at end of file +Search.setIndex({envversion:42,terms:{all:[4,2,3],code:[0,2],edg:4,chain:[4,2],illustr:[4,2],queri:[4,2],global:2,focus:4,prefix:[4,2],sleep:2,client_fn:2,abil:2,skip:[4,2],follow:[4,2],gdbm:3,whose:2,depend:[4,2],advantag:2,mysecondproxi:2,send:3,concret:2,my_multi_key_gener:[4,2],those:[4,2,3],under:[4,2],deriv:[4,2],suitabl:[4,2],multivalu:3,emploi:3,uninstanti:4,string:[4,2,3],fals:[4,2,3],myregion:4,account:2,mechan:[4,2],jack:3,failur:3,veri:1,affect:2,entrypoint:[4,2],entry_point:4,condition:[4,2],recip:1,highest_protocol:[2,3],hour:2,level:[4,2],did:4,overid:[4,2],list:[0,4,2],appropri:[4,2],ryan:3,"try":[4,2],retry_count:4,register_backend:4,adjust:[1,3],small:4,somemethod:[4,2],readthedoc:0,user_fn_two_:4,zip:2,prevent:[4,2,3],impli:2,properti:2,pickleabl:2,direct:[2,3],sign:3,past:2,second:[4,2],design:4,pass:[4,2,3],run:[4,2],memorypicklebackend:[2,3],port:2,append:2,bmemcach:[2,3],index:[0,1],deleg:2,cachebackend:[4,2],compar:4,neg:3,section:[4,2],invok:[4,2],current:[4,2,3],delet:[4,2,3],version:[0,4,2],"new":[4,1,2,3],method:[4,2,3],can:[4,2,3],celeri:[4,2],elimin:4,full:3,hash:[4,2],"_config_argument_dict":[4,2],cachedvalu:[4,2],gener:[4,2,3],never:2,here:[0,4,2],redis_expiration_tim:2,coerc:[4,2,3],inher:2,path:[4,2],becom:[0,4,2],modifi:2,sinc:[4,2],valu:[4,2,3],wait:[4,2,3],incom:[4,2],convert:[4,2],purpos:4,larger:2,step:[4,2],subsitut:3,queue:[4,2],datetim:[4,2,3],behav:2,within:[4,2,3],implement:[4,2,3],honor:[2,3],retrydeleteproxi:4,semant:3,via:[0,4,2],regardless:[4,2],extra:[4,2],apr:3,appli:[4,2,3],modul:[4,1,2],no_valu:[4,2],filenam:[4,2],unix:[2,3],"boolean":2,sobrinho:3,"__name__":[4,2],instal:3,total:2,establish:[4,2,3],select:2,from:[0,4,2],ketama:2,asdict:[2,3],config_dict:[4,2],regist:[4,2],two:[4,2],dure:[2,3],next:[4,2],key3:2,disambigu:[4,2],value2:2,value1:2,recommend:[4,2],suppos:3,basi:[4,2],type:[4,2],until:[4,2,3],more:[4,2,3],beaker:[1,2],desir:2,idempot:[4,2],share:[4,3],enhanc:0,tim:3,flag:[4,2,3],indic:2,particular:[0,4,2],actual:[4,2,3],effort:3,cach:[0,2,3],behalf:4,must:[2,3],none:[4,2,3],anydbm:2,join:[4,2],left:2,augment:[4,2,3],setup:[0,4,2,3],work:[2,3],uniqu:2,oct:3,other:[2,3],descriptor:2,remain:2,minimum:[2,3],whatev:[4,2],caveat:[4,2],dec:3,def:[4,2],problemat:2,overrid:[4,2],defer:[4,2],memcached_expire_tim:[2,3],process:[4,2,3],lock:[4,1,2,3],myfirstproxi:2,accept:[4,2,3],high:[4,1],critic:3,sourc:[0,4,2,3],want:[4,2],set_multi:[2,3],serial:[4,2,3],rw_lockfil:2,occur:[4,2,3],alwai:[4,2],end:[4,1,2],hoc:4,thing:[4,3],rather:[4,2],anoth:[4,2,3],ordinari:2,readwritemutex:2,write:[4,2,3],how:[4,2],sever:2,pure:2,instead:3,somevalu:4,config:[4,2,3],map:[2,3],product:4,unsupport:3,recogn:[4,2],timedelta:[4,2,3],after:[4,2,3],variant:[2,3],usabl:4,reflect:2,befor:[4,2],function_key_gener:[4,2,3],date:[4,2,3],multipl:[4,2,3],bertin:3,makoplugin:2,associ:[0,4,2],function_multi_key_gener:[4,2],circumst:4,attempt:[4,2],third:2,readwrite_lock:2,counter:4,correspond:2,produc:[4,2,3],mangl:[4,2,3],inform:[0,4,2],maintain:3,combin:[4,2],amix:2,allow:[4,2,3],generate_kei:[4,2],callabl:[4,2,3],volum:1,fallback:3,first:[0,4,2,3],order:[4,2],talk:[4,2],configure_from_config:[4,2,3],user_fn_three_:4,creation:[4,2,3],help:[4,2],anticip:0,over:2,move:[0,3],my_funct:[4,2],mabei:3,scott:2,lockfil:2,appar:3,still:[4,2,3],dynam:[4,2,3],paramet:[4,2,3],conjunct:[4,2],thank:3,memorybackend:[2,3],call:[4,2,3],fix:[4,2,3],better:0,platform:[2,3],window:[2,3],bypass:[4,2,3],persist:[4,2],mail:0,therefor:[4,2],might:[4,2],easier:4,non:[4,2,3],lock_sleep:[2,3],dogpilecach:0,greater:2,thei:[4,2],python:[0,4,2,3],timestamp:[4,2,3],safe:[4,2],dai:[4,2],initi:[4,2,3],number:[4,2],underneath:4,therebi:3,front:2,portalock:2,now:[4,2,3],term:[4,2],somewher:2,name:[4,2,3],anyth:4,simpl:[4,1,2,3],drop:[2,3],unlik:2,refresh:[4,2,3],separ:[4,2],easili:4,token:[4,2],mode:4,timeout:3,each:[4,2,3],debug:4,klinger:3,unicod:[4,2,3],complet:[1,2],mean:[4,2,3],subset:2,fail:[2,3],regener:[4,2,3],replac:[4,1,2,3],individu:2,hard:[2,3],continu:[2,3],user_fn_thre:4,cacheimpl:2,usernam:2,connect:[2,3],our:4,flock:[2,3],mangler:[4,2],orient:2,out:[4,3],overridden:4,item:2,goe:2,antoin:3,"_config_prefix":[4,2],publish:0,payload:[4,2],content:2,hayden:3,mybackend:4,adapt:[1,2],rel:[4,2],reader:[2,3],print:4,mypackag:4,correct:4,async_creation_runn:[4,2,3],model:4,insid:[4,2],state:3,cache_multi_on_argu:[4,2,3],given:[4,2,3],standard:2,pip:0,base:[4,1,2,3],bayer:0,dictionari:[4,2,3],put:4,org:0,async_cr:[4,2],cache_dict:2,coerce_string_conf:3,extend:[4,2],thread:[4,2,3],could:3,omit:2,ask:2,david:3,turn:4,length:[4,2],place:[0,4,2,3],isn:[4,2,3],outsid:[4,2],my_data:[4,2],is_configur:[2,3],oper:[4,2,3],semaphor:2,suffix:2,directli:[4,2],onc:[2,3],user_fn_on:4,scene:4,someregion:[4,2],mai:[4,2,3],instruct:4,alreadi:[4,2,3],least:2,wasn:3,custom:[4,2,3],miss:[2,3],primari:0,lookup_user_by_id:4,size:2,avail:[0,4,2],differ:[4,2,3],key_templ:4,my_region:[4,2],attach:2,data:[4,2],creator:[4,2,3],system:[4,1,2],reentrant:3,cache_region:2,paramt:2,which:[4,2,3],conveni:[4,2],offer:4,"final":[4,2],store:[4,2,3],includ:[4,1,2,3],option:[4,2,3],namespac:[4,2,3],get_mutex:2,tool:[0,4,2],copi:[2,3],setuptool:4,specifi:[4,2,3],getter:[2,3],incur:2,"0x10207ca28":[4,2],dont_cache_non:[4,2],myclass:[4,2],than:[4,2],mako_lookup:2,kind:[4,2],scheme:3,beitei:3,target:[4,2],whenev:[4,2],provid:[4,1,2,3],remov:[4,2],structur:[4,2],some_databas:4,unconfigur:3,str:[4,2,3],were:[4,2],posit:3,stale:[4,2],toward:2,cache_on_argu:[4,2,3],comput:[4,2],abov:[4,2],runner:[4,2],well:[4,2,3],py2:3,arg:[4,2],mind:4,ani:[4,2],rosebaugh:3,get_or_cr:[4,2,3],properli:4,expir:[4,2,3],have:[4,2,3],need:[4,1,2,3],notimplementederror:2,incompat:[2,3],novalu:2,caus:3,built:[4,2],equival:[4,2,3],self:[4,2],expos:3,strictredi:[2,3],note:[4,2],also:[4,2,3],builtin:[4,2],exampl:[4,2,3],take:[4,2,3],make_region:[4,2],tupl:[4,2],environ:[1,2],analogu:2,singl:[4,2,3],expens:[4,2],even:[2,3],courtesi:3,sure:[0,4,2],unless:[4,2],distribut:[0,2],though:[4,1,2,3],track:[0,4,2],object:[4,2,3],reach:[4,2],create_valu:[4,2],most:[0,2],regular:2,acquire_write_lock:2,choos:2,key_mangl:[4,2,3],mutexlock:2,appear:2,don:[2,3],url:[4,2,3],doc:3,later:[4,2],cover:3,destruct:3,doe:[4,2,3],part:[4,2],runtim:4,determin:[4,2,3],newvalu:[4,2],bsddb:[4,2],redisbackend:[2,3],fact:[4,2],yank:3,araujo:3,dbm:[4,2,3],serializ:4,consult:[4,2],concurr:[4,2],particularli:4,threshold:2,cache_timeout:3,dogpile_lockfil:2,involv:2,access:[4,2,3],onli:[4,2,3],explicitli:2,locat:4,acquir:[4,2],async:3,writer:[4,2],releas:[0,4,2,3],behind:4,should:[0,4,2],jan:3,configur:[1,2,3],dict:2,templat:[4,2],my_key_gener:[4,2],local:[4,2],azoff:3,wichert:3,info:3,distributed_lock:[4,2],hit:[4,2],variou:2,get:[4,2,3],ignore_expir:[4,2,3],pypi:0,foremost:4,nativ:4,bean:3,cannot:[4,2],increas:0,ben:3,requir:[4,1,2,3],memcachedlock:2,d_arg1_arg2_arg3:4,"0x10207fbd0":2,enabl:3,held:2,pylibmc:[2,3],patch:3,remot:2,akkerman:3,common:[4,2,3],contain:4,loggingproxi:4,metadata:[4,2],where:[4,2,3],bother:4,altern:[4,2],set:[4,2,3],dump:3,sep:3,proce:[2,3],invalidate_user_id:4,see:[4,2,3],result:[4,2],respons:[4,2],bytestr:[4,2,3],christian:3,modulu:2,concern:1,awar:[4,2],statu:0,detect:2,parent:[4,2],correctli:3,pattern:[4,1],ralph:3,yet:[4,2,3],"case":[4,2,3],written:4,won:[4,2],mutex:[4,2],between:[4,2],"import":[4,2],irc:0,approach:[4,2],across:[2,3],attribut:[4,2],fcntl:2,signatur:2,vanasco:3,kei:[2,3],complement:3,wrap:[4,2],set_argu:2,pluck:[4,2],itertool:4,job:2,entir:[4,2,3],cache_arg:2,uncondition:[4,2],distinguish:[4,2],from_url:[2,3],tue:3,jon:3,addit:[4,2,3],both:2,protect:2,last:[4,2],release_read_lock:2,howev:[4,2,3],against:[4,2,3],etc:2,instanc:[4,2],should_cache_fn:[4,2,3],logic:2,improv:2,seri:4,memcached_region:[4,2],expiration_tim:[4,2,3],dogpil:[0,2,3],load:[4,2,3],among:4,generate_someth:[4,2],kwd:2,point:[4,2,3],instanti:[4,2],overview:1,mako_cach:[2,3],period:[4,2],pop:4,user_fn_two:4,suppli:[4,2],typic:[4,2],guid:1,rougher:4,expiri:2,ultim:[4,2],rudimentari:1,user_id:4,creat:[1,2,3],addition:3,fri:3,three:[4,2],been:[4,2,3],accessor:[2,3],retry_proxi:4,interpret:[4,2],basic:[4,2],popul:[4,2],markedli:4,mike:0,modern:2,dairiki:3,value_vers:2,worker:4,search:1,argument:[4,2,3],tiger:2,coordin:[4,2],get_multi:[2,3],get_or_create_multi:[4,2,3],sha1_mangle_kei:[4,2],instant:4,when:[4,2,3],former:2,present:[4,2,3],my_dictionari:2,look:4,packag:[0,3],plain:[2,3],"0x10207c848":[4,2],erron:3,alter:[4,2],defin:4,"while":[4,2,3],match:2,behavior:[1,2,3],error:3,hanchrow:3,loos:0,pylon:0,fname_:4,would:[4,2,3],proxybackend:[4,2,3],lock_timeout:[2,3],helper:4,readi:[4,2],key2:2,key1:2,henc:4,them:[4,2],origin:[4,2,3],kwarg:2,lock_factori:[2,3],myapp:[4,2],"return":[4,2,3],somekei:[4,2],ascii:[4,2],templatelookup:2,"__init__":[4,2],decor:[4,2,3],cachefil:2,develop:[0,3],cpickl:2,open:1,prior:2,perform:[4,1,2],parti:2,make:[4,2,3],same:[4,2,3],check:[4,2,3],bmemcachedbackend:2,binari:2,report:[0,4,2],document:[0,2,3],higher:1,week:[4,2],finish:[4,2],http:[0,1,2],context:2,again:[4,2],lutz:3,upon:[4,2,3],effect:[1,2],rais:[2,3],user:[4,1],mani:4,immedi:[4,2],local_region:[4,2],stack:2,hanu:3,recreat:[4,2],task:[4,2],lib:2,older:[4,2],whole:3,thu:[4,2,3],itself:[4,2,3],without:[4,2],pickl:[4,2,3],client:[4,2],wherebi:3,thi:[0,4,2,3],filesystem:2,everyth:4,genericmemcachedbackend:2,latter:2,promptli:[4,2],usual:4,olli:3,construct:4,identifi:4,background:[4,2],just:[4,2],"2to3":3,detail:[4,2],relianc:3,kolak:3,simultan:[4,2],memory_pickl:2,py3k:3,versu:[4,2],easi:1,wed:3,jeff:3,except:[4,2,3],param:2,blog:2,script:0,add:[4,3],valid:2,myconfig:[4,2],fedorov:3,passthrough:2,els:2,subsequ:[4,2,3],app:3,morgan:3,build:3,real:4,applic:[4,1,2],marco:3,fname:[4,2],format:[2,3],read:2,sha1:[4,2],cache_impl:2,know:4,acquire_read_lock:2,mysect:2,moc:[4,2],cacheregion:[4,2,3],bit:4,password:[2,3],tweak:1,you:[0,4,2],python3:3,like:[0,4,2,3],specif:[0,1,2,3,4],glitch:3,threadsaf:2,resolv:[4,2],integ:[4,2,3],server:[4,2],delete_multi:[2,3],either:[0,4,2],popular:4,tcp_nodelai:2,soft:[2,3],page:[0,1],memcachedbackend:2,underli:4,didn:3,old:[2,3],deal:2,compat:[2,3],some:[4,2],back:[2,3],certain:[4,2],understood:2,intern:[4,2],with_stat:3,authent:2,user_kei:4,librari:[4,2],nov:3,lead:[0,3],channel:0,coercion:3,normal:[4,2],subclass:[4,2],dbmbackend:[2,3],unsur:0,substitut:[4,2],retri:4,unit:3,jonathan:3,foo:[4,2],localhost:2,refer:3,core:[0,1,2,3,4],encourag:1,previou:[4,2],throttl:2,usag:[0,1,2,3],filelock:[2,3],host:[0,2],repositori:[0,3],found:[4,2],genericmemachedbackend:2,post:[0,2],zzzeek:0,"super":4,abstractfilelock:[2,3],describ:[4,2],session:1,about:0,alexand:3,justin:3,ef206ed4473fec3b639:3,load_user_info:4,manag:[4,2],total_second:3,issu:[0,4,3],constructor:[4,2],own:[1,2],discard:2,disabl:[4,2],"\u0142ukasz":3,repair:3,"__future__":3,lastli:[4,2],tag:2,automat:2,due:3,down:[4,2],guard:3,supersed:[4,2],dbmfile:[4,2],ensur:3,chang:[0,1,2,3],storag:[4,3],your:2,per:[4,2,3],pullreq:3,compon:4,git:[0,3],log:4,wai:[4,2,3],rutherfurd:3,aren:2,support:[0,4,2,3],"long":[4,2],"class":[4,2,3],verbos:4,start:[4,2],adventag:4,interfac:4,tracker:0,lot:1,suit:2,value3:2,user_fn_one_:4,routin:3,errant:3,ret:2,"function":[4,2,3],min_compress_len:[2,3],regen:2,form:[4,2],enough:2,forc:[2,3],great:3,jun:3,keyerror:3,link:[2,3],scope:2,sun:3,"true":[4,2,3],longer:3,count:4,pull:[4,2,3],made:[2,3],release_write_lock:2,consist:4,possibl:[4,2],whether:[4,2],best:2,somedatabas:[4,2],necessarili:[4,2],asynchron:[4,2,3],below:[4,2],otherwis:[4,2,3],deadlock:3,similar:[0,4,2,3],fidosz:3,block:[4,2],featur:2,evalu:[4,2],"int":3,retriev:[4,2,3],"abstract":3,myotherclass:[4,2],life:4,doesn:2,repres:[4,2],plu:3,exist:[4,2,3],request:[4,2,3],pileup:3,sat:3,eric:3,assembl:2,jimmei:3,dictionarybackend:4,excel:4,unnecessari:2,invalid:[2,3],event:4,"default":[4,2,3],declar:[4,2],lookup:2,futur:[4,2],rememb:[4,2],test:[4,2,3],ignor:[4,2,3],is_open:2,riak:4,unlimit:2,deseri:2,registri:2,sequenc:2,fainberg:3,push:2,recent:0,length_conditional_mangl:2,consid:[4,2],previous:3,pool:2,multithread:[4,2],bitbucket:0,receiv:[4,2,3],handl:2,faster:4,directori:[2,3],redundantli:4,space:4,to_str:[4,2,3],portion:4,pylibmcbackend:2,potenti:4,time:[4,2,3],far:1,sasl:2,backward:2,newli:[4,2,3],getlogg:4,togeth:[4,2]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute","4":"py:data","5":"py:function"},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"],"4":["py","data","Python data"],"5":["py","function","Python function"]},filenames:["front","index","api","changelog","usage"],titles:["Front Matter","Welcome to dogpile.cache’s documentation!","API","Changelog","Usage Guide"],objects:{"dogpile.cache.region":{CacheRegion:[2,1,1,""],make_region:[2,5,1,""],value_version:[2,4,1,""]},"dogpile.cache.backends.file.AbstractFileLock":{release_read_lock:[2,2,1,""],read:[2,2,1,""],acquire:[2,2,1,""],write:[2,2,1,""],acquire_write_lock:[2,2,1,""],acquire_read_lock:[2,2,1,""],release:[2,2,1,""],is_open:[2,3,1,""],release_write_lock:[2,2,1,""]},"dogpile.cache.backends":{memcached:[2,0,1,""],redis:[2,0,1,""],file:[2,0,1,""],memory:[2,0,1,""]},"dogpile.cache.proxy.ProxyBackend":{wrap:[2,2,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend":{set_arguments:[2,3,1,""],client:[2,3,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend":{delete_multi:[2,2,1,""]},"dogpile.cache.region.CacheRegion":{configure_from_config:[2,2,1,""],is_configured:[2,3,1,""],set:[2,2,1,""],configure:[2,2,1,""],invalidate:[2,2,1,""],get:[2,2,1,""],cache_on_arguments:[2,2,1,""],get_or_create_multi:[2,2,1,""],delete_multi:[2,2,1,""],get_multi:[2,2,1,""],cache_multi_on_arguments:[2,2,1,""],set_multi:[2,2,1,""],wrap:[2,2,1,""],get_or_create:[2,2,1,""],"delete":[2,2,1,""]},"dogpile.cache.backends.redis":{RedisBackend:[2,1,1,""]},"dogpile.cache.plugins.mako_cache":{MakoPlugin:[2,1,1,""]},"dogpile.cache.api.CacheBackend":{set:[2,2,1,""],get:[2,2,1,""],get_mutex:[2,2,1,""],set_multi:[2,2,1,""],delete_multi:[2,2,1,""],get_multi:[2,2,1,""],key_mangler:[2,3,1,""],"delete":[2,2,1,""]},"dogpile.cache.backends.memory":{MemoryPickleBackend:[2,1,1,""],MemoryBackend:[2,1,1,""]},"dogpile.cache.backends.memcached":{BMemcachedBackend:[2,1,1,""],GenericMemcachedBackend:[2,1,1,""],PylibmcBackend:[2,1,1,""],MemcachedLock:[2,1,1,""],MemcachedBackend:[2,1,1,""]},"dogpile.cache.api":{NO_VALUE:[2,4,1,""],CachedValue:[2,1,1,""],NoValue:[2,1,1,""],CacheBackend:[2,1,1,""]},"dogpile.cache.backends.file":{FileLock:[2,1,1,""],AbstractFileLock:[2,1,1,""],DBMBackend:[2,1,1,""]},"dogpile.cache.proxy":{ProxyBackend:[2,1,1,""]},"dogpile.cache.api.CachedValue":{payload:[2,3,1,""],metadata:[2,3,1,""]},"dogpile.cache.plugins":{mako_cache:[2,0,1,""]},"dogpile.cache.util":{function_key_generator:[2,5,1,""],length_conditional_mangler:[2,5,1,""],sha1_mangle_key:[2,5,1,""]},"dogpile.cache":{region:[2,0,1,""],api:[2,0,1,""],proxy:[2,0,1,""]}},titleterms:{featur:3,creat:4,overview:4,misc:3,indic:1,api:2,file:2,tabl:1,instal:0,redi:2,guid:4,backend:[4,2],mako:2,group:4,welcom:1,commun:0,configur:4,invalid:4,bug:[0,3],pylibmc:4,document:1,proxi:2,kei:4,relat:4,usag:4,util:2,front:0,rudimentari:4,homepag:0,cach:1,recip:4,memori:2,changelog:3,region:[4,2],plugin:2,memcach:2,project:0,matter:0,integr:2,behavior:4,chang:4,dogpil:1}}) \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/docs/usage.html new/dogpile.cache-0.5.3/docs/usage.html --- old/dogpile.cache-0.5.2/docs/usage.html 2013-11-15 23:27:06.000000000 +0100 +++ new/dogpile.cache-0.5.3/docs/usage.html 2014-01-09 03:44:32.000000000 +0100 @@ -6,7 +6,7 @@ <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> - <title>Usage Guide — dogpile.cache 0.5.2 documentation</title> + <title>Usage Guide — dogpile.cache 0.5.3 documentation</title> <link rel="stylesheet" href="_static/nature.css" type="text/css" /> <link rel="stylesheet" href="_static/pygments.css" type="text/css" /> @@ -14,7 +14,7 @@ <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: './', - VERSION: '0.5.2', + VERSION: '0.5.3', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true @@ -23,7 +23,7 @@ <script type="text/javascript" src="_static/jquery.js"></script> <script type="text/javascript" src="_static/underscore.js"></script> <script type="text/javascript" src="_static/doctools.js"></script> - <link rel="top" title="dogpile.cache 0.5.2 documentation" href="index.html" /> + <link rel="top" title="dogpile.cache 0.5.3 documentation" href="index.html" /> <link rel="next" title="API" href="api.html" /> <link rel="prev" title="Front Matter" href="front.html" /> </head> @@ -43,7 +43,7 @@ <li class="right" > <a href="front.html" title="Front Matter" accesskey="P">previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> @@ -133,7 +133,7 @@ <p>The <a class="reference internal" href="api.html#dogpile.cache.region.make_region" title="dogpile.cache.region.make_region"><tt class="xref py py-func docutils literal"><span class="pre">make_region()</span></tt></a> function currently calls the <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion" title="dogpile.cache.region.CacheRegion"><tt class="xref py py-class docutils literal"><span class="pre">CacheRegion</span></tt></a> constructor directly.</p> <dl class="class"> <dt> -<em class="property">class </em><tt class="descclassname">dogpile.cache.region.</tt><tt class="descname">CacheRegion</tt><big>(</big><em>name=None</em>, <em>function_key_generator=<function function_key_generator at 0x103b7c668></em>, <em>function_multi_key_generator=<function function_multi_key_generator at 0x103b7c848></em>, <em>key_mangler=None</em>, <em>async_creation_runner=None</em><big>)</big></dt> +<em class="property">class </em><tt class="descclassname">dogpile.cache.region.</tt><tt class="descname">CacheRegion</tt><big>(</big><em>name=None</em>, <em>function_key_generator=<function function_key_generator at 0x10207c848></em>, <em>function_multi_key_generator=<function function_multi_key_generator at 0x10207ca28></em>, <em>key_mangler=None</em>, <em>async_creation_runner=None</em><big>)</big></dt> <dd><p>A front end to a particular cache backend.</p> <table class="docutils field-list" frame="void" rules="none"> <col class="field-name" /> @@ -560,6 +560,16 @@ <p><span>New in version 0.5.0: </span>Added <tt class="docutils literal"><span class="pre">refresh()</span></tt> method to decorated function.</p> </div> +<p>Lastly, the <tt class="docutils literal"><span class="pre">get()</span></tt> method returns either the value cached +for the given key, or the token <tt class="docutils literal"><span class="pre">NO_VALUE</span></tt> if no such key +exists:</p> +<div class="highlight-python"><div class="highlight"><pre><span class="n">value</span> <span class="o">=</span> <span class="n">generate_something</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span> +</pre></div> +</div> +<div class="versionadded"> +<p><span>New in version 0.5.3: </span>Added <tt class="docutils literal"><span class="pre">get()</span></tt> method to decorated +function.</p> +</div> <p>The default key generation will use the name of the function, the module name for the function, the arguments passed, as well as an optional “namespace” @@ -711,7 +721,9 @@ <p>Our new backend would be usable in a region like this:</p> <div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">dogpile.cache</span> <span class="kn">import</span> <span class="n">make_region</span> -<span class="n">region</span> <span class="o">=</span> <span class="n">make_region</span><span class="p">(</span><span class="s">"dictionary"</span><span class="p">)</span> +<span class="n">region</span> <span class="o">=</span> <span class="n">make_region</span><span class="p">(</span><span class="s">"myregion"</span><span class="p">)</span> + +<span class="n">region</span><span class="o">.</span><span class="n">configure</span><span class="p">(</span><span class="s">"dictionary"</span><span class="p">)</span> <span class="n">data</span> <span class="o">=</span> <span class="n">region</span><span class="o">.</span><span class="n">set</span><span class="p">(</span><span class="s">"somekey"</span><span class="p">,</span> <span class="s">"somevalue"</span><span class="p">)</span> </pre></div> @@ -943,11 +955,11 @@ <li class="right" > <a href="front.html" title="Front Matter" >previous</a> |</li> - <li><a href="index.html">dogpile.cache 0.5.2 documentation</a> »</li> + <li><a href="index.html">dogpile.cache 0.5.3 documentation</a> »</li> </ul> </div> <div class="footer"> - © Copyright 2011-2013 Mike Bayer. + © Copyright 2011-2014 Mike Bayer. Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.2b1. </div> </body> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/__init__.py new/dogpile.cache-0.5.3/dogpile/cache/__init__.py --- old/dogpile.cache-0.5.2/dogpile/cache/__init__.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/__init__.py 2014-01-09 03:42:16.000000000 +0100 @@ -1,3 +1,3 @@ -__version__ = '0.5.2' +__version__ = '0.5.3' from .region import CacheRegion, register_backend, make_region diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/backends/__init__.py new/dogpile.cache-0.5.3/dogpile/cache/backends/__init__.py --- old/dogpile.cache-0.5.2/dogpile/cache/backends/__init__.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/backends/__init__.py 2014-01-09 03:42:16.000000000 +0100 @@ -5,4 +5,5 @@ register_backend("dogpile.cache.bmemcached", "dogpile.cache.backends.memcached", "BMemcachedBackend") register_backend("dogpile.cache.memcached", "dogpile.cache.backends.memcached", "MemcachedBackend") register_backend("dogpile.cache.memory", "dogpile.cache.backends.memory", "MemoryBackend") +register_backend("dogpile.cache.memory_pickle", "dogpile.cache.backends.memory", "MemoryPickleBackend") register_backend("dogpile.cache.redis", "dogpile.cache.backends.redis", "RedisBackend") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/backends/memory.py new/dogpile.cache-0.5.3/dogpile/cache/backends/memory.py --- old/dogpile.cache-0.5.2/dogpile/cache/backends/memory.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/backends/memory.py 2014-01-09 03:42:16.000000000 +0100 @@ -1,12 +1,17 @@ """ -Memory Backend --------------- +Memory Backends +--------------- -Provides a simple dictionary-based backend. +Provides simple dictionary-based backends. + +The two backends are :class:`.MemoryBackend` and :class:`.MemoryPickleBackend`; +the latter applies a serialization step to cached values while the former +places the value as given into the dictionary. """ from dogpile.cache.api import CacheBackend, NO_VALUE +from dogpile.cache.compat import pickle class MemoryBackend(CacheBackend): """A backend that uses a plain dictionary. @@ -41,23 +46,38 @@ """ + pickle_values = False + def __init__(self, arguments): self._cache = arguments.pop("cache_dict", {}) def get(self, key): - return self._cache.get(key, NO_VALUE) + value = self._cache.get(key, NO_VALUE) + if value is not NO_VALUE and self.pickle_values: + value = pickle.loads(value) + return value def get_multi(self, keys): - return [ - self._cache.get(key, NO_VALUE) - for key in keys - ] + ret = [self._cache.get(key, NO_VALUE) + for key in keys] + if self.pickle_values: + ret = [ + pickle.loads(value) + if value is not NO_VALUE else value + for value in ret + ] + return ret def set(self, key, value): + if self.pickle_values: + value = pickle.dumps(value, pickle.HIGHEST_PROTOCOL) self._cache[key] = value def set_multi(self, mapping): - for key,value in mapping.items(): + pickle_values = self.pickle_values + for key, value in mapping.items(): + if pickle_values: + value = pickle.dumps(value, pickle.HIGHEST_PROTOCOL) self._cache[key] = value def delete(self, key): @@ -66,3 +86,37 @@ def delete_multi(self, keys): for key in keys: self._cache.pop(key, None) + + +class MemoryPickleBackend(MemoryBackend): + """A backend that uses a plain dictionary, but serializes objects on + :meth:`.MemoryBackend.set` and deserializes :meth:`.MemoryBackend.get`. + + E.g.:: + + from dogpile.cache import make_region + + region = make_region().configure( + 'dogpile.cache.memory_pickle' + ) + + The usage of pickle to serialize cached values allows an object + as placed in the cache to be a copy of the original given object, so + that any subsequent changes to the given object aren't reflected + in the cached value, thus making the backend behave the same way + as other backends which make use of serialization. + + The serialization is performed via pickle, and incurs the same + performance hit in doing so as that of other backends; in this way + the :class:`.MemoryPickleBackend` performance is somewhere in between + that of the pure :class:`.MemoryBackend` and the remote server oriented + backends such as that of Memcached or Redis. + + Pickle behavior here is the same as that of the Redis backend, using + either ``cPickle`` or ``pickle`` and specifying ``HIGHEST_PROTOCOL`` + upon serialize. + + .. versionadded:: 0.5.3 + + """ + pickle_values = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/backends/redis.py new/dogpile.cache-0.5.3/dogpile/cache/backends/redis.py --- old/dogpile.cache-0.5.2/dogpile/cache/backends/redis.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/backends/redis.py 2014-01-09 03:42:16.000000000 +0100 @@ -105,8 +105,8 @@ def get_mutex(self, key): if self.distributed_lock: - return self.client.lock(u('_lock{}').format(key), self.lock_timeout, - self.lock_sleep) + return self.client.lock(u('_lock{0}').format(key), + self.lock_timeout, self.lock_sleep) else: return None diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/region.py new/dogpile.cache-0.5.3/dogpile/cache/region.py --- old/dogpile.cache-0.5.2/dogpile/cache/region.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/region.py 2014-01-09 03:42:16.000000000 +0100 @@ -504,7 +504,7 @@ """ if self.key_mangler: - keys = map(lambda key: self.key_mangler(key), keys) + keys = list(map(lambda key: self.key_mangler(key), keys)) backend_values = self.backend.get_multi(keys) @@ -587,6 +587,7 @@ :meth:`.CacheRegion.get_or_create_multi` - multiple key/value version """ + orig_key = key if self.key_mangler: key = self.key_mangler(key) @@ -624,7 +625,7 @@ if self.async_creation_runner: def async_creator(mutex): - return self.async_creation_runner(self, key, creator, mutex) + return self.async_creation_runner(self, orig_key, creator, mutex) else: async_creator = None @@ -813,7 +814,7 @@ """ if self.key_mangler: - keys = map(lambda key: self.key_mangler(key), keys) + keys = list(map(lambda key: self.key_mangler(key), keys)) self.backend.delete_multi(keys) @@ -875,6 +876,15 @@ .. versionadded:: 0.5.0 Added ``refresh()`` method to decorated function. + Lastly, the ``get()`` method returns either the value cached + for the given key, or the token ``NO_VALUE`` if no such key + exists:: + + value = generate_something.get(5, 6) + + .. versionadded:: 0.5.3 Added ``get()`` method to decorated + function. + The default key generation will use the name of the function, the module name for the function, the arguments passed, as well as an optional "namespace" @@ -1005,6 +1015,10 @@ key = key_generator(*arg, **kw) self.set(key, value) + def get(*arg, **kw): + key = key_generator(*arg, **kw) + return self.get(key) + def refresh(*arg, **kw): key = key_generator(*arg, **kw) value = fn(*arg, **kw) @@ -1014,6 +1028,7 @@ decorate.set = set_ decorate.invalidate = invalidate decorate.refresh = refresh + decorate.get = get return decorate return decorator @@ -1069,17 +1084,25 @@ generate_something.set({"k1": "value1", "k2": "value2", "k3": "value3"}) - an ``invalidate()`` method, which has the effect of deleting + ...an ``invalidate()`` method, which has the effect of deleting the given sequence of keys using the same mechanism as that of :meth:`.CacheRegion.delete_multi`:: generate_something.invalidate("k1", "k2", "k3") - and finally a ``refresh()`` method, which will call the creation + ...a ``refresh()`` method, which will call the creation function, cache the new values, and return them:: values = generate_something.refresh("k1", "k2", "k3") + ...and a ``get()`` method, which will return values + based on the given arguments:: + + values = generate_something.get("k1", "k2", "k3") + + .. versionadded:: 0.5.3 Added ``get()`` method to decorated + function. + Parameters passed to :meth:`.CacheRegion.cache_multi_on_arguments` have the same meaning as those passed to :meth:`.CacheRegion.cache_on_arguments`. @@ -1173,6 +1196,10 @@ in zip(gen_keys, keys)) ) + def get(*arg): + keys = key_generator(*arg) + return self.get_multi(keys) + def refresh(*arg): keys = key_generator(*arg) values = fn(*arg) @@ -1190,6 +1217,7 @@ decorate.set = set_ decorate.invalidate = invalidate decorate.refresh = refresh + decorate.get = get return decorate return decorator @@ -1205,4 +1233,3 @@ """ return CacheRegion(*arg, **kw) - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile/cache/util.py new/dogpile.cache-0.5.3/dogpile/cache/util.py --- old/dogpile.cache-0.5.2/dogpile/cache/util.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile/cache/util.py 2014-01-09 03:42:16.000000000 +0100 @@ -1,6 +1,5 @@ from hashlib import sha1 import inspect -import sys import re import collections from . import compat @@ -31,10 +30,8 @@ def load(self, name): if name in self.impls: - return self.impls[name]() - else: #pragma NO COVERAGE - # TODO: if someone has ideas on how to - # unit test entrypoint stuff, let me know. + return self.impls[name]() + else: # pragma NO COVERAGE import pkg_resources for impl in pkg_resources.iter_entry_points( self.group, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/dogpile.cache.egg-info/PKG-INFO new/dogpile.cache-0.5.3/dogpile.cache.egg-info/PKG-INFO --- old/dogpile.cache-0.5.2/dogpile.cache.egg-info/PKG-INFO 2013-11-15 23:29:13.000000000 +0100 +++ new/dogpile.cache-0.5.3/dogpile.cache.egg-info/PKG-INFO 2014-01-09 03:47:12.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 1.1 Name: dogpile.cache -Version: 0.5.2 +Version: 0.5.3 Summary: A caching front-end based on the Dogpile lock. Home-page: http://bitbucket.org/zzzeek/dogpile.cache Author: Mike Bayer diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/tests/cache/test_decorator.py new/dogpile.cache-0.5.3/tests/cache/test_decorator.py --- old/dogpile.cache-0.5.2/tests/cache/test_decorator.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/tests/cache/test_decorator.py 2014-01-09 03:42:16.000000000 +0100 @@ -99,6 +99,22 @@ go.set(0, 1, 3) eq_(go(1, 3), 0) + def test_explicit_get(self): + go = self._fixture(expiration_time=1) + eq_(go(1, 2), (1, 1, 2)) + eq_(go.get(1, 2), (1, 1, 2)) + eq_(go.get(2, 1), NO_VALUE) + eq_(go(2, 1), (2, 2, 1)) + eq_(go.get(2, 1), (2, 2, 1)) + + def test_explicit_get_multi(self): + go = self._multi_fixture(expiration_time=1) + eq_(go(1, 2), ['1 1', '1 2']) + eq_(go.get(1, 2), ['1 1', '1 2']) + eq_(go.get(3, 1), [NO_VALUE, '1 1']) + eq_(go(3, 1), ['2 3', '1 1']) + eq_(go.get(3, 1), ['2 3', '1 1']) + def test_explicit_set_multi(self): go = self._multi_fixture(expiration_time=1) eq_(go(1, 2), ['1 1', '1 2']) @@ -385,5 +401,3 @@ generate.set({7: 18, 10: 15}) eq_(generate(2, 7, 10), ['2 5', 18, 15]) - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.5.2/tests/cache/test_memory_backend.py new/dogpile.cache-0.5.3/tests/cache/test_memory_backend.py --- old/dogpile.cache-0.5.2/tests/cache/test_memory_backend.py 2013-11-15 23:25:17.000000000 +0100 +++ new/dogpile.cache-0.5.3/tests/cache/test_memory_backend.py 2014-01-09 03:42:16.000000000 +0100 @@ -3,3 +3,6 @@ class MemoryBackendTest(_GenericBackendTest): backend = "dogpile.cache.memory" + +class MemoryPickleBackendTest(_GenericBackendTest): + backend = "dogpile.cache.memory_pickle" -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org