Hello community,
here is the log from the commit of package python-dogpile.cache for
openSUSE:Factory checked in at 2018-10-25 08:20:11
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dogpile.cache (Old)
and /work/SRC/openSUSE:Factory/.python-dogpile.cache.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dogpile.cache"
Thu Oct 25 08:20:11 2018 rev:19 rq:642929 version:0.6.6
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-dogpile.cache/python-dogpile.cache.changes
2018-04-24 15:33:39.001092034 +0200
+++
/work/SRC/openSUSE:Factory/.python-dogpile.cache.new/python-dogpile.cache.changes
2018-10-25 08:20:21.559964683 +0200
@@ -1,0 +2,8 @@
+Thu Oct 11 11:29:30 UTC 2018 - Dirk Mueller <[email protected]>
+
+- update to 0.6.6:
+ Added method :attr:`.CacheRegion.actual_backend` which calculates and
+ caches the actual backend for the region, which may be abstracted by
+ the use of one or more :class:`.ProxyBackend` subclasses.
+
+-------------------------------------------------------------------
Old:
----
dogpile.cache-0.6.5.tar.gz
New:
----
dogpile.cache-0.6.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dogpile.cache.spec ++++++
--- /var/tmp/diff_new_pack.G2hOIw/_old 2018-10-25 08:20:22.155964418 +0200
+++ /var/tmp/diff_new_pack.G2hOIw/_new 2018-10-25 08:20:22.155964418 +0200
@@ -12,14 +12,14 @@
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define oldpython python
Name: python-dogpile.cache
-Version: 0.6.5
+Version: 0.6.6
Release: 0
Summary: A caching front-end based on the Dogpile lock
License: BSD-3-Clause
@@ -68,8 +68,8 @@
%python_exec -m pytest --ignore=tests/test_lock.py
%files %{python_files}
-%defattr(-,root,root,-)
-%doc LICENSE README.rst
+%license LICENSE
+%doc README.rst
%{python_sitelib}/dogpile
%{python_sitelib}/dogpile.cache-%{version}-py%{python_version}.egg-info
++++++ dogpile.cache-0.6.5.tar.gz -> dogpile.cache-0.6.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/PKG-INFO
new/dogpile.cache-0.6.6/PKG-INFO
--- old/dogpile.cache-0.6.5/PKG-INFO 2018-03-05 21:49:27.000000000 +0100
+++ new/dogpile.cache-0.6.6/PKG-INFO 2018-06-27 20:44:43.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: dogpile.cache
-Version: 0.6.5
+Version: 0.6.6
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.6.5/docs/_sources/changelog.rst.txt
new/dogpile.cache-0.6.6/docs/_sources/changelog.rst.txt
--- old/dogpile.cache-0.6.5/docs/_sources/changelog.rst.txt 2018-03-05
21:49:22.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/_sources/changelog.rst.txt 2018-06-27
20:44:38.000000000 +0200
@@ -3,6 +3,29 @@
==============
.. changelog::
+ :version: 0.6.6
+ :released: Wed Jun 27 2018
+
+ .. change::
+ :tags: feature
+ :tickets: 123
+
+ Added method :attr:`.CacheRegion.actual_backend` which calculates and
+ caches the actual backend for the region, which may be abstracted by
+ the use of one or more :class:`.ProxyBackend` subclasses.
+
+
+
+
+ .. change::
+ :tags: bug
+ :tickets: 122
+
+ Fixed a condition in the :class:`.Lock` where the "get" function could
be
+ called a second time unnecessarily, when returning an existing, expired
+ value from the cache.
+
+.. changelog::
:version: 0.6.5
:released: Mon Mar 5 2018
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/_static/doctools.js
new/dogpile.cache-0.6.6/docs/_static/doctools.js
--- old/dogpile.cache-0.6.5/docs/_static/doctools.js 2018-03-05
21:49:26.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/_static/doctools.js 2018-06-27
20:44:42.000000000 +0200
@@ -70,7 +70,9 @@
if (node.nodeType === 3) {
var val = node.nodeValue;
var pos = val.toLowerCase().indexOf(text);
- if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+ if (pos >= 0 &&
+ !jQuery(node.parentNode).hasClass(className) &&
+ !jQuery(node.parentNode).hasClass("nohighlight")) {
var span;
var isInSVG = jQuery(node).closest("body, svg,
foreignObject").is("svg");
if (isInSVG) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/dogpile.cache-0.6.5/docs/_static/documentation_options.js
new/dogpile.cache-0.6.6/docs/_static/documentation_options.js
--- old/dogpile.cache-0.6.5/docs/_static/documentation_options.js
2018-03-05 21:49:26.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/_static/documentation_options.js
2018-06-27 20:44:42.000000000 +0200
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
- VERSION: '0.6.5',
+ URL_ROOT:
document.getElementById("documentation_options").getAttribute('data-url_root'),
+ VERSION: '0.6.6',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/api.html
new/dogpile.cache-0.6.6/docs/api.html
--- old/dogpile.cache-0.6.5/docs/api.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/api.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>API — dogpile.cache 0.6.5 documentation</title>
+ <title>API — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="core_usage.html" title="dogpile Core"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -195,6 +195,17 @@
</tr>
</tbody>
</table>
+<dl class="attribute">
+<dt id="dogpile.cache.region.CacheRegion.actual_backend">
+<code class="descname">actual_backend</code><a class="headerlink"
href="#dogpile.cache.region.CacheRegion.actual_backend" title="Permalink to
this definition">¶</a></dt>
+<dd><p>Return the ultimate backend underneath any proxies.</p>
+<p>The backend might be the result of one or more <code class="docutils
literal notranslate"><span class="pre">proxy.wrap</span></code>
+applications. If so, derive the actual underlying backend.</p>
+<div class="versionadded">
+<p><span class="versionmodified">New in version 0.6.6.</span></p>
+</div>
+</dd></dl>
+
<dl class="method">
<dt id="dogpile.cache.region.CacheRegion.cache_multi_on_arguments">
<code class="descname">cache_multi_on_arguments</code><span
class="sig-paren">(</span><em>namespace=None</em>,
<em>expiration_time=None</em>, <em>should_cache_fn=None</em>,
<em>asdict=False</em>, <em>to_str=<class 'str'></em>,
<em>function_multi_key_generator=None</em><span class="sig-paren">)</span><a
class="headerlink"
href="#dogpile.cache.region.CacheRegion.cache_multi_on_arguments"
title="Permalink to this definition">¶</a></dt>
@@ -3145,12 +3156,12 @@
<li class="right" >
<a href="core_usage.html" title="dogpile Core"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/build/changelog.rst
new/dogpile.cache-0.6.6/docs/build/changelog.rst
--- old/dogpile.cache-0.6.5/docs/build/changelog.rst 2018-03-05
21:49:22.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/build/changelog.rst 2018-06-27
20:44:38.000000000 +0200
@@ -3,6 +3,29 @@
==============
.. changelog::
+ :version: 0.6.6
+ :released: Wed Jun 27 2018
+
+ .. change::
+ :tags: feature
+ :tickets: 123
+
+ Added method :attr:`.CacheRegion.actual_backend` which calculates and
+ caches the actual backend for the region, which may be abstracted by
+ the use of one or more :class:`.ProxyBackend` subclasses.
+
+
+
+
+ .. change::
+ :tags: bug
+ :tickets: 122
+
+ Fixed a condition in the :class:`.Lock` where the "get" function could
be
+ called a second time unnecessarily, when returning an existing, expired
+ value from the cache.
+
+.. changelog::
:version: 0.6.5
:released: Mon Mar 5 2018
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/changelog.html
new/dogpile.cache-0.6.6/docs/changelog.html
--- old/dogpile.cache-0.6.5/docs/changelog.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/changelog.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Changelog — dogpile.cache 0.6.5 documentation</title>
+ <title>Changelog — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -31,7 +31,7 @@
<li class="right" >
<a href="api.html" title="API"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -42,6 +42,29 @@
<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.6.6">
+<h2>0.6.6<a class="headerlink" href="#change-0.6.6" title="Permalink to this
headline">¶</a></h2>
+Released: Wed Jun 27 2018<div class="section" id="change-0.6.6-feature">
+<h3>feature<a class="headerlink" href="#change-0.6.6-feature" title="Permalink
to this headline">¶</a></h3>
+<ul class="simple">
+<li><p id="change-0.6.6-0"><span class="target"
id="change-36f31a05f30752a06d57f3a498648762"><strong>[feature]
</strong></span>Added method <a class="reference internal"
href="api.html#dogpile.cache.region.CacheRegion.actual_backend"
title="dogpile.cache.region.CacheRegion.actual_backend"><code class="xref py
py-attr docutils literal notranslate"><span
class="pre">CacheRegion.actual_backend</span></code></a> which calculates and
+caches the actual backend for the region, which may be abstracted by
+the use of one or more <a class="reference internal"
href="api.html#dogpile.cache.proxy.ProxyBackend"
title="dogpile.cache.proxy.ProxyBackend"><code class="xref py py-class docutils
literal notranslate"><span class="pre">ProxyBackend</span></code></a>
subclasses.<a class="changeset-link headerlink reference internal"
href="#change-36f31a05f30752a06d57f3a498648762">¶</a><p>References: <a
class="reference external"
href="https://bitbucket.org/zzzeek/dogpile.cache/issue/123">#123</a></p>
+</p>
+</li>
+</ul>
+</div>
+<div class="section" id="change-0.6.6-bug">
+<h3>bug<a class="headerlink" href="#change-0.6.6-bug" title="Permalink to this
headline">¶</a></h3>
+<ul class="simple">
+<li><p id="change-0.6.6-1"><span class="target"
id="change-c41a88ee274426bafc78e1715c824989"><strong>[bug]
</strong></span>Fixed a condition in the <a class="reference internal"
href="api.html#dogpile.Lock" title="dogpile.Lock"><code class="xref py py-class
docutils literal notranslate"><span class="pre">Lock</span></code></a> where
the “get” function could be
+called a second time unnecessarily, when returning an existing, expired
+value from the cache.<a class="changeset-link headerlink reference internal"
href="#change-c41a88ee274426bafc78e1715c824989">¶</a><p>References: <a
class="reference external"
href="https://bitbucket.org/zzzeek/dogpile.cache/issue/122">#122</a></p>
+</p>
+</li>
+</ul>
+</div>
+</div>
<div class="section" id="change-0.6.5">
<h2>0.6.5<a class="headerlink" href="#change-0.6.5" title="Permalink to this
headline">¶</a></h2>
Released: Mon Mar 5 2018<div class="section" id="change-0.6.5-bug">
@@ -779,6 +802,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.6.6">0.6.6</a><ul>
+<li><a class="reference internal" href="#change-0.6.6-feature">feature</a></li>
+<li><a class="reference internal" href="#change-0.6.6-bug">bug</a></li>
+</ul>
+</li>
<li><a class="reference internal" href="#change-0.6.5">0.6.5</a><ul>
<li><a class="reference internal" href="#change-0.6.5-bug">bug</a></li>
</ul>
@@ -921,12 +949,12 @@
<li class="right" >
<a href="api.html" title="API"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/core_usage.html
new/dogpile.cache-0.6.6/docs/core_usage.html
--- old/dogpile.cache-0.6.5/docs/core_usage.html 2018-03-05
21:49:26.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/core_usage.html 2018-06-27
20:44:42.000000000 +0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>dogpile Core — dogpile.cache 0.6.5 documentation</title>
+ <title>dogpile Core — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="recipes.html" title="Recipes"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -334,12 +334,12 @@
<li class="right" >
<a href="recipes.html" title="Recipes"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/front.html
new/dogpile.cache-0.6.6/docs/front.html
--- old/dogpile.cache-0.6.5/docs/front.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/front.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Front Matter — dogpile.cache 0.6.5 documentation</title>
+ <title>Front Matter — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="index.html" title="Welcome to dogpile.cache’s
documentation!"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -127,12 +127,12 @@
<li class="right" >
<a href="index.html" title="Welcome to dogpile.cache’s
documentation!"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/genindex.html
new/dogpile.cache-0.6.6/docs/genindex.html
--- old/dogpile.cache-0.6.5/docs/genindex.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/genindex.html 2018-06-27 20:44:42.000000000
+0200
@@ -7,12 +7,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Index — dogpile.cache 0.6.5 documentation</title>
+ <title>Index — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -28,7 +28,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -105,6 +105,8 @@
</ul></li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
+ <li><a
href="api.html#dogpile.cache.region.CacheRegion.actual_backend">actual_backend
(dogpile.cache.region.CacheRegion attribute)</a>
+</li>
<li><a
href="api.html#dogpile.cache.region.CacheRegion.configure.params.arguments">arguments
(dogpile.cache.region.CacheRegion.configure parameter)</a>, <a
href="usage.html#dogpile.cache.region.CacheRegion.configure.params.arguments">[1]</a>
</li>
<li><a
href="api.html#dogpile.cache.region.CacheRegion.cache_multi_on_arguments.params.asdict">asdict
(dogpile.cache.region.CacheRegion.cache_multi_on_arguments parameter)</a>
@@ -774,12 +776,12 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/index.html
new/dogpile.cache-0.6.6/docs/index.html
--- old/dogpile.cache-0.6.5/docs/index.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/index.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Welcome to dogpile.cache’s documentation! — dogpile.cache
0.6.5 documentation</title>
+ <title>Welcome to dogpile.cache’s documentation! — dogpile.cache
0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -31,7 +31,7 @@
<li class="right" >
<a href="front.html" title="Front Matter"
accesskey="N">next</a> |</li>
- <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.6.5
documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.6.6
documentation</a> »</li>
</ul>
</div>
@@ -96,6 +96,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.6.6">0.6.6</a></li>
<li class="toctree-l2"><a class="reference internal"
href="changelog.html#change-0.6.5">0.6.5</a></li>
<li class="toctree-l2"><a class="reference internal"
href="changelog.html#change-0.6.4">0.6.4</a></li>
<li class="toctree-l2"><a class="reference internal"
href="changelog.html#change-0.6.3">0.6.3</a></li>
@@ -189,12 +190,12 @@
<li class="right" >
<a href="front.html" title="Front Matter"
>next</a> |</li>
- <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.6.5
documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.6.6
documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/py-modindex.html
new/dogpile.cache-0.6.6/docs/py-modindex.html
--- old/dogpile.cache-0.6.5/docs/py-modindex.html 2018-03-05
21:49:26.000000000 +0100
+++ new/dogpile.cache-0.6.6/docs/py-modindex.html 2018-06-27
20:44:42.000000000 +0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Python Module Index — dogpile.cache 0.6.5
documentation</title>
+ <title>Python Module Index — dogpile.cache 0.6.6
documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -30,7 +30,7 @@
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -139,12 +139,12 @@
<li class="right" >
<a href="#" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/recipes.html
new/dogpile.cache-0.6.6/docs/recipes.html
--- old/dogpile.cache-0.6.5/docs/recipes.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/recipes.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Recipes — dogpile.cache 0.6.5 documentation</title>
+ <title>Recipes — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="usage.html" title="Usage Guide"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -348,12 +348,12 @@
<li class="right" >
<a href="usage.html" title="Usage Guide"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/search.html
new/dogpile.cache-0.6.6/docs/search.html
--- old/dogpile.cache-0.6.5/docs/search.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/search.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Search — dogpile.cache 0.6.5 documentation</title>
+ <title>Search — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -86,12 +86,12 @@
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/searchindex.js
new/dogpile.cache-0.6.6/docs/searchindex.js
--- old/dogpile.cache-0.6.5/docs/searchindex.js 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/searchindex.js 2018-06-27 20:44:42.000000000
+0200
@@ -1 +1 @@
-Search.setIndex({docnames:["api","changelog","core_usage","front","index","recipes","usage"],envversion:53,filenames:["api.rst","changelog.rst","core_usage.rst","front.rst","index.rst","recipes.rst","usage.rst"],objects:{"dogpile.Lock.params":{async_creator:[0,1,1,""],creator:[0,1,1,""],expiretime:[0,1,1,""],mutex:[0,1,1,""],value_and_created_fn:[0,1,1,""]},"dogpile.cache":{api:[0,2,0,"-"],exception:[0,2,0,"-"],proxy:[0,2,0,"-"],region:[0,2,0,"-"]},"dogpile.cache.api":{CacheBackend:[0,0,1,""],CachedValue:[0,0,1,""],NO_VALUE:[0,5,1,""],NoValue:[0,0,1,""]},"dogpile.cache.api.CacheBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],key_mangler:[0,4,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.api.CachedValue":{metadata:[0,4,1,""],payload:[0,4,1,""]},"dogpile.cache.backends":{"null":[0,2,0,"-"],file:[0,2,0,"-"],memcached:[0,2,0,"-"],memory:[0,2,0,"-"],redis:[0,2,0,"-"]},"dogpile.cache.backends.file":{AbstractFileLock:[0,0,1,""],DBMBackend:[0,0,1,""],FileLock:[0,0,1,""]},"dogpile.cache.backends.file.AbstractFileLock":{acquire:[0,3,1,""],acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],is_open:[0,4,1,""],read:[0,3,1,""],release:[0,3,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""],write:[0,3,1,""]},"dogpile.cache.backends.file.DBMBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.file.DBMBackend.params":{dogpile_lockfile:[0,1,1,""],filename:[0,1,1,""],lock_factory:[0,1,1,""],rw_lockfile:[0,1,1,""]},"dogpile.cache.backends.file.FileLock":{acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],is_open:[0,4,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""]},"dogpile.cache.backends.memcached":{BMemcachedBackend:[0,0,1,""],GenericMemcachedBackend:[0,0,1,""],MemcachedBackend:[0,0,1,""],MemcachedLock:[0,0,1,""],PylibmcBackend:[0,0,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend":{delete_multi:[0,3,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend.params":{password:[0,1,1,""],username:[0,1,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend":{"delete":[0,3,1,""],client:[0,4,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_arguments:[0,4,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend.params":{distributed_lock:[0,1,1,""],lock_timeout:[0,1,1,""],memcached_expire_time:[0,1,1,""],url:[0,1,1,""]},"dogpile.cache.backends.memcached.PylibmcBackend.params":{behaviors:[0,1,1,""],binary:[0,1,1,""],min_compress_len:[0,1,1,""]},"dogpile.cache.backends.memory":{MemoryBackend:[0,0,1,""],MemoryPickleBackend:[0,0,1,""]},"dogpile.cache.backends.memory.MemoryBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.null":{NullBackend:[0,0,1,""]},"dogpile.cache.backends.null.NullBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.redis":{RedisBackend:[0,0,1,""]},"dogpile.cache.backends.redis.RedisBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.redis.RedisBackend.params":{connection_pool:[0,1,1,""],db:[0,1,1,""],distributed_lock:[0,1,1,""],host:[0,1,1,""],lock_sleep:[0,1,1,""],lock_timeout:[0,1,1,""],password:[0,1,1,""],port:[0,1,1,""],redis_expiration_time:[0,1,1,""],socket_timeout:[0,1,1,""],url:[0,1,1,""]},"dogpile.cache.exception":{DogpileCacheException:[0,6,1,""],PluginNotFound:[0,6,1,""],RegionAlreadyConfigured:[0,6,1,""],RegionNotConfigured:[0,6,1,""],ValidationError:[0,6,1,""]},"dogpile.cache.plugins":{mako_cache:[0,2,0,"-"]},"dogpile.cache.plugins.mako_cache":{MakoPlugin:[0,0,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin":{get:[0,3,1,""],get_or_create:[0,3,1,""],invalidate:[0,3,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.get.params":{"**kw":[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.get_or_create.params":{"**kw":[0,1,1,""],creation_function:[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.invalidate.params":{"**kw":[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.proxy":{ProxyBackend:[0,0,1,""]},"dogpile.cache.proxy.ProxyBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""],wrap:[0,3,1,""]},"dogpile.cache.region":{CacheRegion:[0,0,1,""],DefaultInvalidationStrategy:[0,0,1,""],RegionInvalidationStrategy:[0,0,1,""],make_region:[0,7,1,""],value_version:[0,5,1,""]},"dogpile.cache.region.CacheRegion":{"delete":[0,3,1,""],cache_multi_on_arguments:[0,3,1,""],cache_on_arguments:[0,3,1,""],configure:[0,3,1,""],configure_from_config:[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_or_create:[0,3,1,""],get_or_create_multi:[0,3,1,""],invalidate:[0,3,1,""],is_configured:[0,4,1,""],set:[0,3,1,""],set_multi:[0,3,1,""],wrap:[0,3,1,""]},"dogpile.cache.region.CacheRegion.cache_multi_on_arguments.params":{asdict:[0,1,1,""],expiration_time:[0,1,1,""],function_multi_key_generator:[0,1,1,""],namespace:[0,1,1,""],should_cache_fn:[0,1,1,""],to_str:[0,1,1,""]},"dogpile.cache.region.CacheRegion.cache_on_arguments.params":{expiration_time:[6,1,1,""],function_key_generator:[6,1,1,""],namespace:[6,1,1,""],should_cache_fn:[6,1,1,""],to_str:[6,1,1,""]},"dogpile.cache.region.CacheRegion.configure.params":{arguments:[6,1,1,""],backend:[6,1,1,""],expiration_time:[6,1,1,""],region_invalidator:[6,1,1,""],replace_existing_backend:[6,1,1,""],wrap:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get.params":{expiration_time:[6,1,1,""],ignore_expiration:[6,1,1,""],key:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get_or_create.params":{creator:[6,1,1,""],expiration_time:[6,1,1,""],key:[6,1,1,""],should_cache_fn:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get_or_create_multi.params":{creator:[0,1,1,""],expiration_time:[0,1,1,""],keys:[0,1,1,""],should_cache_fn:[0,1,1,""]},"dogpile.cache.region.CacheRegion.invalidate.params":{hard:[0,1,1,""]},"dogpile.cache.region.CacheRegion.params":{async_creation_runner:[6,1,1,""],function_key_generator:[6,1,1,""],function_multi_key_generator:[6,1,1,""],key_mangler:[6,1,1,""],name:[6,1,1,""]},"dogpile.cache.region.DefaultInvalidationStrategy":{invalidate:[0,3,1,""],is_hard_invalidated:[0,3,1,""],is_invalidated:[0,3,1,""],is_soft_invalidated:[0,3,1,""],was_hard_invalidated:[0,3,1,""],was_soft_invalidated:[0,3,1,""]},"dogpile.cache.region.RegionInvalidationStrategy":{invalidate:[0,3,1,""],is_hard_invalidated:[0,3,1,""],is_invalidated:[0,3,1,""],is_soft_invalidated:[0,3,1,""],was_hard_invalidated:[0,3,1,""],was_soft_invalidated:[0,3,1,""]},"dogpile.cache.util":{function_key_generator:[0,7,1,""],kwarg_function_key_generator:[0,7,1,""],length_conditional_mangler:[0,7,1,""],sha1_mangle_key:[0,7,1,""]},"dogpile.util":{NameRegistry:[0,0,1,""],ReadWriteMutex:[0,0,1,""]},"dogpile.util.NameRegistry":{get:[0,3,1,""]},"dogpile.util.NameRegistry.get.params":{"**kw":[0,1,1,""],identifier:[0,1,1,""]},"dogpile.util.NameRegistry.params":{creator:[0,1,1,""]},"dogpile.util.ReadWriteMutex":{acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""]},dogpile:{Lock:[0,0,1,""],NeedRegenerationException:[0,0,1,""]}},objnames:{"0":["py","class","Python
class"],"1":["py","parameter","Python parameter"],"2":["py","module","Python
module"],"3":["py","method","Python method"],"4":["py","attribute","Python
attribute"],"5":["py","data","Python data"],"6":["py","exception","Python
exception"],"7":["py","function","Python
function"]},objtypes:{"0":"py:class","1":"py:parameter","2":"py:module","3":"py:method","4":"py:attribute","5":"py:data","6":"py:exception","7":"py:function"},terms:{"2to3":1,"53def077a4264bd3183d4eb21b1f56f883e1b572":2,"\u0142ukasz":1,"abstract":1,"boolean":[0,1],"case":[0,1,2,5,6],"class":[0,1,2,5,6],"default":[0,1,5,6],"final":[0,6],"float":[0,1],"function":[0,1,2,5,6],"import":[0,1,2,5,6],"int":1,"long":[0,1,6],"menkevi\u010diu":1,"new":[0,1,2,4,5,6],"null":1,"return":[0,1,2,5,6],"short":2,"super":6,"true":[0,1,5,6],"try":[0,5,6],"while":[0,1,4,5,6],Added:[0,1,6],For:[0,2,6],NFS:2,One:[0,6],Such:[0,6],The:[0,1,2,3,5,6],Then:6,There:[0,2],These:6,Use:[0,1],Used:[0,6],Using:[1,4,5],With:[0,6],__future__:1,__init__:[0,6],__name__:[0,5,6],__repr__:1,_config_argument_dict:[0,6],_config_prefix:[0,6],_encodedproxi:5,_hard_invalid:0,_soft_invalid:0,abil:0,about:3,abov:[0,2,5,6],abstractfilelock:[0,1],accept:[0,1,6],access:[0,1,2,6],accessor:[0,1],accomplish:2,account:[0,1],acheiv:5,acquir:[0,1,6],acquire_read_lock:0,acquire_write_lock:0,across:[0,1,2],act:2,actual:[0,1,2,5,6],adapt:[0,4],add:[1,5],add_new_data:5,added:[0,1,6],addit:[0,1,2,6],addition:[1,4],address:2,adjust:[1,4],advantag:0,adventag:6,affect:0,after:[0,1,5,6],after_commit:5,again:[0,2,6],against:[0,1,2,6],ahead:2,akkerman:1,alert:2,alexand:1,all:[0,1,2,4,6],allow:[0,1,2,4,6],along:[2,5],alphabet:0,alreadi:[0,1,6],also:[0,1,2,5,6],alter:[0,6],altern:[0,6],although:1,alwai:[0,6],amix:0,among:6,analogu:0,anderson:1,anentrop:1,ani:[0,2,4,6],anoth:[0,1,2,4,6],answer:2,anticip:2,antoin:1,anydbm:0,anyth:6,api:[1,4,5,6],app:1,appar:1,appear:0,append:[0,5],appli:[0,1,5,6],applic:[0,2,4,6],approach:[0,1,2,5,6],appropri:[0,6],approxim:2,apr:1,araujo:1,arbitrari:0,aren:0,arg:[0,5,6],argnam:0,argspec:0,argument:[0,1,2,5,6],argvalu:0,around:[0,2],ascii:[0,6],asdict:[0,1],ask:0,assembl:0,assert:5,associ:[0,5,6],assum:0,async:1,async_cr:[0,6],async_creation_runn:[0,1,5,6],asynchron:[0,1,4,6],attach:0,attempt:[0,6],attribut:[0,6],aug:1,augment:[0,1,6],authent:0,automat:0,avail:[0,1,3,4,5,6],avoid:5,awar:[0,5,6],azoff:1,back:[0,1],backend:[1,2,4,5],background:[0,5,6],backward:0,base:[0,1,2,5,6],basi:[0,1,6],basic:[0,6],baton:2,beaker:[0,2],bean:1,becom:[0,6],been:[0,1,2,5,6],befor:[0,1,2,6],behalf:6,behav:0,behavior:[0,1,4,5],behind:6,being:[0,1,5,6],beitei:1,below:[0,5,6],ben:1,bertin:1,besid:5,best:0,between:[0,6],beyond:1,binari:0,bit:6,bitbucket:3,block:[0,2,4,5,6],blog:0,bmemcach:[0,1],bmemcachedbackend:0,bookkeep:5,bool:0,both:[0,1],bother:6,brian:1,brown:1,bsddb:[0,6],bug:4,build:[0,1,2,4,5],built:[0,6],builtin:[0,6],bypass:[0,1,6],bytestr:[0,1,6],cach:[0,1,3,5,6],cache_arg:0,cache_dict:0,cache_impl:0,cache_multi_on_argu:[0,1,6],cache_on_argu:[0,1,5,6],cache_refresh:5,cache_region:0,cache_timeout:1,cachebackend:[0,6],cachedvalu:[0,5,6],cachefil:0,cacheimpl:0,cacheregion:[0,1,5,6],call:[0,1,2,5,6],callabl:[0,1,5,6],caller:0,can:[0,1,2,5,6],cannot:[0,1,6],categori:2,caus:1,caveat:[0,6],celeri:[0,6],certain:[0,6],chain:[0,6],chang:[0,1,2,4,5],changelog:4,check:[0,1,2,6],choos:0,christian:1,circumst:6,client:[0,1,2,5,6],client_fn:0,cls:[0,6],code:[0,2,3,5],coerc:[0,1,6],coerce_string_conf:1,coercion:1,collect:0,collis:5,combin:[0,6],commit:5,common:[0,1,2,6],commun:1,compar:[0,6],compat:[0,1],complement:1,complet:[0,2],compon:6,comput:[0,6],concept:[0,2,4],concern:5,concret:0,concurr:[0,2,6],condit:0,condition:[0,6],conf:1,config:[0,1,6],config_dict:[0,6],configur:[0,1,4,5],configure_from_config:[0,1,6],conjunct:[0,1,6],connect:[0,1],connection_pool:[0,1],connectionpool:[0,1],consid:[0,6],consist:[4,6],constant:1,construct:[0,1,6],constructor:[0,6],consult:[0,6],contain:[0,5,6],content:0,context:[0,2],continu:[0,1,2],contribut:1,control:4,conveni:[0,6],convert:[0,6],coordin:[0,2,6],copi:[0,1],core:[1,4,6],correct:[0,6],correctli:1,correspond:0,could:[0,1,5],count:5,counter:5,courtesi:1,cover:1,cpickl:0,creat:[0,1,2,4],create_some_resourc:2,create_valu:[0,6],createdtim:2,creation:[0,1,2,4,6],creation_funct:0,creation_tim:0,creationtim:2,creator:[0,1,4,6],critic:1,cross:2,current:[0,1,2,6],custom:[0,1,5,6],custominvalidationstrategi:0,customiz:1,cutom:0,d_arg1_arg2_arg3:5,daemon:5,dai:[0,6],dairiki:1,daniel:1,data:[0,4,6],databas:5,date:[0,1,6],datetim:[0,1,6],david:1,dbclass:5,dbm:[0,1,6],dbmbackend:[0,1],dbmfile:[0,6],deadlock:1,deal:0,debug:6,dec:1,declar:[0,6],decod:4,decor:[0,1,2,5,6],def:[0,2,5,6],defaultinvalidationstrategi:0,defer:[0,2,6],defin:[5,6],delai:5,deleg:0,delet:[0,1,5,6],delete_multi:[0,1],deliv:1,depend:[0,1,6],deprec:1,deriv:[0,6],describ:[0,2,6],descriptor:0,deseri:0,design:[2,6],desir:0,destruct:1,detail:[0,6],detect:0,determin:[0,1,6],develop:1,dict:[0,5],dictionari:[0,1,6],dictionarybackend:6,did:[1,6],didn:1,differ:[0,1,2,5,6],digest:2,direct:[0,1,5],directli:[0,1,4,6],directori:[0,1],disabl:[0,1,6],disambigu:[0,6],disappear:2,discard:0,distinguish:[0,6],distribut:[0,1,4],distributed_lock:[0,1,6],do_refresh:5,do_someth:2,doc:1,document:[0,1,3],doe:[0,1,5,6],doesn:[0,2],dogpil:[1,3,5,6],dogpile_lockfil:0,dogpilecach:3,dogpilecacheexcept:0,doing:0,don:[0,1],done:5,dont_cache_non:[0,6],down:[0,6],drop:[0,1],due:1,dump:1,dure:[0,1,2],dynam:[0,1,6],each:[0,1,2,5,6],easi:4,easier:6,easili:[5,6],edg:6,ef206ed4473fec3b639:1,effect:0,effici:2,effort:1,either:[0,1,5,6],elect:0,elimin:6,els:[0,2],emploi:1,empti:1,enabl:1,encapsul:2,encod:4,encourag:4,end:[0,1,2,6],enhanc:3,enough:0,ensur:[1,2],enter:5,entir:[0,1,6],entri:1,entry_point:6,entrypoint:[0,1,6],environ:[0,4],equival:[0,1,6],eric:1,errant:1,erron:1,error:[0,1],establish:[0,1,6],etc:[0,1],evalu:[0,6],even:[0,1],event:[4,6],everi:2,everyth:5,exampl:[0,1,4,5,6],excel:6,except:[1,4,5,6],exception:5,execut:4,exist:[0,1,2,6],existing_valu:0,expect:2,expedi:5,expens:[0,2,6],expir:[0,1,2,6],expiration_tim:[0,1,2,5,6],expiretim:0,expiri:0,explicitli:0,expos:1,extend:[0,5,6],extra:[0,6],face:1,fact:[0,6],fail:[0,1],failur:1,fainberg:1,fall:2,fallback:1,fals:[0,1,5,6],far:2,faster:6,fcntl:0,featur:[0,3,6],feb:1,fedorov:1,fidosz:1,file:[1,4,6],filelock:[0,1,2],filenam:[0,2,6],filesystem:[0,2],filter:5,finish:[0,2,6],first:[0,1,2,6],fix:[0,1,6],flag:[0,1,6],flock:[0,1,2],flufl:2,fly:5,fname:[0,5,6],fname_:5,focus:6,follow:[0,2,6],foo1:0,foo:[0,6],forc:[0,1],foremost:6,form:[0,1,6],format:[0,1,4],former:0,found:[0,6],fri:1,frit:1,from:[0,1,2,3,5,6],from_url:[0,1],front:[0,2,4,6],full:1,function_key_gener:[0,1,5,6],function_multi_key_gener:[0,1,6],futur:[0,6],garbag:0,gdbm:1,gen:[0,6],gen_cach:2,gener:[0,1,2,4,5,6],generate_kei:[0,5,6],generate_my_expensive_valu:2,generate_someth:[0,6],genericmemachedbackend:0,genericmemcachedbackend:[0,1],get:[0,1,2,5,6],get_multi:[0,1,5],get_mutex:0,get_or_cr:[0,1,6],get_or_create_multi:[0,1,5,6],get_some_data:5,get_valu:2,getlogg:6,getter:[0,1],git:[1,3],given:[0,1,2,5,6],glitch:1,global:[0,2],goe:[0,2],good:[2,5],great:1,greater:0,group:4,guard:1,guid:4,hanchrow:1,hand:[0,6],handl:0,hanu:1,happen:5,hard:[0,1,5],has:[0,1,2,5,6],has_valu:0,hash:[0,6],hashlib:2,have:[0,1,2,5,6],hayden:1,hbccbh:1,held:0,help:[0,5,6],helper:6,henc:6,here:[0,2,3,6],hex:2,hexdigest:2,high:[4,6],highest_protocol:[0,1],hit:[0,5],hoc:[2,6],homepag:4,hongbin:1,honor:[0,1],hood:5,hook:[4,5],hope:5,host:[0,3],hour:0,how:[0,2,6],howev:[0,1,2,5,6],http:[0,3,5],idea:[2,5],idempot:[0,6],identifi:[0,6],ignor:[0,1,6],ignore_expir:[0,1,6],illustr:[0,2,6],immedi:[0,6],impact:0,implement:[0,1,5,6],impli:[0,2],improv:[0,5],includ:[0,1,6],incom:[0,6],incompat:[0,1],incur:0,index:[3,4],indic:[0,6],indirectli:2,individu:0,info:1,inform:[0,3,6],inher:0,inherit:[0,5],initi:[0,1,2,6],inject:0,insid:[0,6],instal:[1,4,6],instanc:[0,1,2,5,6],instant:6,instanti:[0,5,6],instead:[1,2,5],instruct:6,integ:[0,1,5,6],integr:4,intend:1,intent:0,interfac:[0,2,4,6],intern:[0,2,6],interpret:[0,6],invalid:[0,1,4,6],invalidate_user_id:5,invoc:[0,2],invok:[0,2,6],involv:0,is_configur:[0,1],is_hard_invalid:0,is_invalid:0,is_open:0,is_soft_invalid:0,is_unittest:1,isinst:5,isn:[0,1,6],issu:[1,2,3,6],item:0,iteritem:5,itertool:5,its:[0,1,2,4,6],itself:[0,1,2,6],jack:1,jami:1,jan:1,jeff:1,jimmei:1,job:0,john:1,join:[0,2,5,6],jon:1,jonathan:1,json:5,jun:1,just:[0,2,5,6],justin:1,keep:[0,2],kei:[0,1,2,4,6],ketama:0,key1:0,key2:0,key3:0,key_mangl:[0,1,5,6],key_templ:5,keyerror:1,keyreentrantmutex:1,keyword:[0,1,6],kind:[0,6],klinger:1,know:5,kolak:1,krau:1,kwarg:[0,5],kwarg_function_key_gener:[0,1,6],lambda:5,larger:0,last:[0,6],lastli:[0,6],later:[0,6],latter:0,lead:[1,3,5],learn:4,least:[0,2,5],leav:5,left:0,length:[0,1,6],length_conditional_mangl:0,lennox:1,level:[0,2,6],lib:0,librari:[0,1,6],life:6,like:[0,1,2,5,6],link:[0,5],list:[0,1,6],listens_for:5,load:[0,1,6],load_user_info:6,local:[0,2,5,6],local_region:[0,6],localhost:[0,2],locat:[1,6],lock:[0,1,4,6],lock_factori:[0,1],lock_path:2,lock_sleep:[0,1],lock_timeout:[0,1],lockfil:[0,2],log:6,loggingproxi:6,logic:0,longer:1,look:6,lookup:[0,2],lookup_user_by_id:6,lose:1,lot:4,lutz:1,mabei:1,made:[0,1,2],mai:[0,1,2,5,6],main:5,maintain:1,makarov:1,make:[0,1,2,6],make_region:[0,5,6],mako:1,mako_cach:[0,1],mako_lookup:0,makoplugin:0,manag:[0,2,5,6],mangl:[0,1,5,6],mangler:[0,5,6],mani:[1,6],map:[0,1,5],mapping_set:5,mar:1,marco:1,markedli:6,masayuko:1,match:[0,1],matter:4,mc_pool:2,mean:[0,1,5,6],mechan:[0,1,4,6],memcach:[1,2,6],memcached_expire_tim:[0,1],memcached_region:[0,6],memcachedbackend:0,memcachedlock:0,memoized_properti:1,memori:[1,5],memory_pickl:0,memorybackend:[0,1],memorypickl:1,memorypicklebackend:[0,1],metadata:[0,5,6],method:[0,1,5,6],might:[0,6],min_compress_len:[0,1],mind:6,minim:5,minimum:[0,1],minu:2,miss:[0,1],moc:[0,6],mode:[0,6],model:6,modern:0,modifi:0,modul:[0,1,4,6],modulu:0,moment:5,mon:1,more:[0,1,2,6],morgan:1,most:[0,2,3],move:1,msgpack:5,msgpackproxi:5,much:5,multipl:[0,1,2,6],multithread:[0,6],multivalu:1,must:[0,1],mutex:[0,2,6],mutexlock:0,my_data:[0,6],my_dictionari:0,my_foo:0,my_funct:[0,6],my_key_gener:[0,5,6],my_multi_key_gener:[0,6],my_region:[0,6],myapp:[0,5,6],mybackend:6,myclass:[0,6],myconfig:[0,6],myfirstproxi:0,myfoo:0,myinvalid:0,myotherclass:[0,6],mypackag:6,myregion:6,mysecondproxi:0,mysect:0,name:[0,1,6],nameregistri:[0,1],namespac:[0,1,5,6],nativ:6,necessari:5,necessarili:[0,1,6],need:[0,1,4,5,6],needregenerationexcept:[0,2],neg:1,negat:5,nest:5,never:0,new_valu:0,newli:[0,1,2,6],newvalu:[0,6],next:[0,2,5],no_valu:[0,1,5,6],non:[0,1,2,6],none:[0,1,2,6],nor:1,normal:[0,2,6],note:[0,2,6],notimplementederror:[0,5],nov:1,novalu:0,now:[0,1,2,5,6],nullbackend:[0,1],nulllock:1,number:[0,2,6],object:[0,1,2,4,6],object_hook:5,occur:[0,1,6],oct:1,off:2,offer:6,offload:5,often:2,old:[0,1,5],older:[0,2,6],olli:1,omit:0,onc:[0,1,2],one:[0,1,2,4,5,6],ones:[0,5],onli:[0,1,2,5,6],oper:[0,1,2,5,6],optimist:5,option:[0,1,6],order:[0,1,2,5,6],ordinari:0,org:[3,5],orient:0,origin:[0,1,6],orm:4,other:[0,1,2,4,5,6],otherwis:[0,1,5,6],our:[2,5,6],out:[1,5],output:[1,2],outsid:[0,2,6],over:0,overid:[0,6],overrid:[0,5,6],overridden:6,overview:4,own:[0,2,4,5],packag:[0,1,2,3],packb:5,page:[3,4],pair:2,param:0,paramet:[0,1,6],paramt:0,parent:[0,6],pars:1,part:[0,1,6],parti:0,particular:[0,1,2,5,6],particularli:6,pass:[0,1,2,5,6],passthrough:0,password:[0,1],past:0,patch:1,path:[0,2,6],pattern:6,paul:1,payload:[0,5,6],per:[0,1,2,6],perform:[0,2,5,6],period:[0,2,6],persist:[0,5,6],pickl:[0,1,5,6],pickleabl:0,pileup:1,pip:3,place:[0,1,5,6],plain:[0,1],platform:[0,1],plu:1,pluck:[0,6],plugin:[1,4,6],pluginload:1,pluginnotfound:[0,1],point:[0,1,5,6],pool:0,pop:[1,6],popul:[0,6],popular:6,port:0,portalock:0,portion:6,posit:1,possibl:[0,5,6],post:0,potenti:[1,5,6],pre:5,prefix:[0,4,6],present:[0,1,5,6],preserv:5,prevent:[0,1,6],previou:[0,2,4,6],previous:[1,2],primari:2,print:5,prior:0,probabl:5,problem:1,problemat:0,proce:[0,1,2,4],process:[0,1,2,5,6],produc:[0,1,6],product:[1,6],project:4,promptli:[0,6],propag:[0,1],properli:6,properti:0,protect:0,protocol:1,provid:[0,1,2,4,6],proxi:[5,6],proxybackend:[0,1,5,6],publish:3,pull:[0,1,5,6],pullreq:1,pure:0,purpos:[1,2,5],push:[0,5],put:[2,6],py2:1,py3k:1,pylibmc:[0,1,2,5],pylibmcbackend:0,pypi:3,pytest:1,python3:1,python:[0,1,2,3,5,6],queri:[0,5,6],queue:[0,6],rais:[0,1,2,5,6],ralph:1,rather:[0,2,6],raw:5,reach:[0,2,6],read:0,reader:[0,1],readi:[0,6],readthedoc:3,readwrite_lock:[0,1],readwritemutex:[0,1],real:6,receiv:[0,1,6],recent:3,recip:[1,2,4],recod:5,recogn:[0,1,6],recommend:[0,6],record:5,recreat:[0,6],redi:[1,4,6],redis_expiration_tim:0,redisbackend:[0,1],redundantli:6,reentrant:1,refer:[0,1,2,4],referenc:0,reflect:0,refresh:[0,1,5,6],regardless:[0,6],regen:0,regener:[0,1,2,6],region:[1,4,5],region_invalid:[0,6],regionalreadyconfigur:0,regioninvalidationstrategi:[0,1,6],regionnotconfigur:0,regist:[0,1,6],register_backend:6,registri:[0,5],regular:0,rel:[0,6],relat:4,releas:[0,1,3,6],release_read_lock:0,release_write_lock:0,reli:[1,2],relianc:1,remain:[0,1],rememb:[0,6],remot:0,remov:[0,1,2,6],repair:1,replac:[0,1,5,6],replace_existing_backend:[0,1,6],report:[0,3,6],repositori:1,repres:[0,6],request:[0,1,6],requir:[0,1,2,4,6],reserv:2,resolv:[0,6],resourc:[2,4],respect:1,respons:[0,6],restor:1,result:[0,5,6],ret:0,retir:1,retri:6,retriev:[0,1,2,6],retrieve_resourc:2,retry_count:6,retry_proxi:6,retrydeleteproxi:6,roll:1,rosebaugh:1,rougher:6,round:2,routin:1,rudimentari:4,run:[0,1,6],runner:[0,6],runtim:6,rutherfurd:1,rw_lockfil:0,ryan:1,safe:[0,2,6],same:[0,1,2,6],sasl:0,sat:1,sauerwein:1,sauliu:1,scenario:1,scene:6,scheme:[1,2,5],scope:0,scoped_sess:5,scott:0,search:4,second:[0,2,6],section:[0,2,6],see:[0,1,2,6],select:[0,4],self:[0,5,6],semant:1,semaphor:0,send:1,sent:5,sep:1,separ:[0,1,2,6],sequenc:[0,5],seri:5,serial:[0,1,5,6],serializ:6,serv:1,server:[0,2,6],servic:2,session:5,sessionmak:5,set:[0,1,5,6],set_argu:0,set_multi:[0,1,5],setup:[0,1,2,6],setuptool:[1,6],sever:[0,1],sha1:[0,2,6],sha1_mangle_kei:[0,6],share:[1,2,6],sheldon:1,should:[0,3,6],should_cache_fn:[0,1,6],sign:1,signatur:0,similar:[0,1,3,6],simpl:[0,1,2,5,6],simpli:5,simultan:[0,6],sinc:[0,5,6],singl:[0,1,2,4,6],singleton:0,size:[0,5],skip:[0,6],sleep:0,slow_databas:2,small:6,smaller:5,sobrinho:1,socket:0,socket_timeout:[0,1],soft:[0,1],some:[0,1,2,4,5,6],some_creation_funct:2,some_databas:6,some_kei:2,somedatabas:[0,6],somekei:[0,6],somemethod:[0,6],someregion:[0,6],something_new:5,somevalu:6,somewher:0,sourc:[0,1,2,3,6],space:6,special:1,specif:[0,1,4,6],specifi:[0,1,5,6],sqlalchemi:5,stack:0,stale:[0,2,6],standard:0,start:[0,5,6],state:[0,1],statu:3,stegmann:1,step:[0,6],still:[0,1,2,5,6],storag:[1,5,6],store:[0,1,2,5,6],str:[0,1,5,6],strategi:[0,1,2,6],strictredi:[0,1],string:[0,1,6],strongli:0,structur:[0,4,6],stuff:2,subclass:[0,6],submit:0,subsequ:[0,1,6],subset:0,subsitut:1,substitut:[0,6],subsystem:4,success:1,successfulli:2,suffix:0,suit:[0,1],suitabl:[0,6],sun:1,supersed:[0,6],suppli:[0,6],support:[0,1,6],suppos:[1,5],sure:[0,6],symbol:[1,2],symlink:2,synchron:[0,2],syncreaderdogpil:1,syntax:1,sys:6,system:[0,1,2,5,6],tag:0,take:[0,1,6],talk:[0,6],target:[0,5,6],task:[0,6],tcp_nodelai:0,techniqu:5,templat:[0,1,5],templatelookup:0,term:[0,6],test:[0,1,6],than:[0,2,5,6],thank:1,the_resourc:2,thei:[0,2,6],them:[0,1,5],therebi:1,therefor:[0,6],thi:[0,1,2,3,4,5,6],thing:[1,6],third:[0,5],those:[0,1,4,5,6],though:[0,1,6],thread:[0,1,2,4,5,6],threadmappedpool:2,threadsaf:[0,2],three:[0,5],threshold:0,throttl:0,through:[2,5],thrown:[0,1],thu:[0,1,2,6],tiger:0,tim:1,time:[0,1,2,6],timedelta:[0,1,6],timeout:[0,1],timestamp:[0,1,6],tmp:2,to_list:1,to_str:[0,1,6],tobia:1,togeth:[0,6],token:[0,6],tool:[0,3,6],top:4,total:0,total_second:1,toward:0,track:[0,2,3,5],tracker:3,transform:5,translat:5,trip:2,tue:1,tup:2,tupl:[0,2,6],turn:6,tweak:4,twice:2,two:[0,2,4,5,6],type:[0,6],typic:[0,5,6],ultim:[0,1,2,6],unaffect:1,uncondition:[0,6],unconfigur:1,under:[0,1,5,6],underli:6,underneath:6,understood:0,undesir:0,unencod:5,unicod:[0,1,6],uninstanti:6,uniqu:[0,2,5],unit:1,unix:[0,1,2],unless:[0,2,6],unlik:[0,2],unlimit:0,unnecessari:[0,1],unpackb:5,unsupport:1,until:[0,1,2,4,5,6],updat:4,upon:[0,1,2,6],upstream:0,url:[0,1,5,6],usabl:6,usag:[0,1,4],use:[0,1,2,4,5,6],use_bin_typ:5,used:[0,1,2,5,6],user:[1,2,4,5,6],user_fn_on:5,user_fn_one_:5,user_fn_thre:5,user_fn_three_:5,user_fn_two:5,user_fn_two_:5,user_id:[5,6],user_kei:5,usernam:0,uses:[0,1,2,5,6],using:[0,1,2,3,5,6],usual:[2,6],utf:5,util:[1,4],valid:0,validationerror:0,valu:[0,1,2,5,6],value1:0,value2:0,value3:0,value_and_created_fn:0,value_decod:5,value_encod:5,value_plus_tim:2,value_vers:0,vanasco:1,variabl:1,variant:[0,1,5],varieti:4,variou:[0,2],verbos:6,veri:4,version:[0,2,3,4,6],versu:[0,6],via:[0,1,2,5,6],volum:4,wai:[0,1,5,6],wait:[0,1,6],want:[0,2,5,6],was_hard_invalid:0,was_soft_invalid:0,wasn:1,wed:1,week:[0,6],well:[0,1,2,5,6],were:[0,1,6],what:[0,1,2],whatev:[0,6],when:[0,1,2,5,6],whenev:[0,6],where:[0,1,2,6],wherebi:1,whether:[0,6],which:[0,1,2,4,5,6],whole:1,whose:0,wichert:1,wide:1,window:[0,1],wish:0,with_stat:1,within:[0,1,5,6],without:[0,2,6],won:[0,2,6],work:[0,1,2,5],worker:6,would:[0,1,5,6],wrap:[0,1,5,6],write:[0,1,6],writer:[0,5,6],written:6,wrong:1,yank:1,yet:[0,1,6],you:[0,2,5,6],your:[0,2,5],zero:1,zip:0,zoomorph:1,zzzeek:3},titles:["API","Changelog","dogpile
Core","Front Matter","Welcome to dogpile.cache\u2019s
documentation!","Recipes","Usage
Guide"],titleterms:{"null":0,Using:[2,6],all:5,anoth:5,api:[0,2],asynchron:5,backend:[0,6],behavior:6,bug:[1,3],cach:[2,4],chang:6,changelog:1,configur:6,core:[0,2],creat:6,data:5,decod:5,directli:2,distribut:2,document:4,dogpil:[0,2,4],encod:5,event:5,exampl:2,except:0,featur:1,file:[0,2],format:5,front:3,group:5,guid:6,homepag:3,indic:4,instal:3,integr:0,invalid:5,kei:5,learn:2,lock:2,mako:0,matter:3,memcach:0,memori:0,misc:1,need:2,note:5,orm:5,overview:6,plugin:0,prefix:5,project:3,proxi:0,pylibmc:6,recip:5,redi:[0,5],region:[0,6],relat:5,rudimentari:[2,6],tabl:4,updat:5,usag:[2,6],util:0,welcom:4}})
\ No newline at end of file
+Search.setIndex({docnames:["api","changelog","core_usage","front","index","recipes","usage"],envversion:53,filenames:["api.rst","changelog.rst","core_usage.rst","front.rst","index.rst","recipes.rst","usage.rst"],objects:{"dogpile.Lock.params":{async_creator:[0,1,1,""],creator:[0,1,1,""],expiretime:[0,1,1,""],mutex:[0,1,1,""],value_and_created_fn:[0,1,1,""]},"dogpile.cache":{api:[0,2,0,"-"],exception:[0,2,0,"-"],proxy:[0,2,0,"-"],region:[0,2,0,"-"]},"dogpile.cache.api":{CacheBackend:[0,0,1,""],CachedValue:[0,0,1,""],NO_VALUE:[0,5,1,""],NoValue:[0,0,1,""]},"dogpile.cache.api.CacheBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],key_mangler:[0,4,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.api.CachedValue":{metadata:[0,4,1,""],payload:[0,4,1,""]},"dogpile.cache.backends":{"null":[0,2,0,"-"],file:[0,2,0,"-"],memcached:[0,2,0,"-"],memory:[0,2,0,"-"],redis:[0,2,0,"-"]},"dogpile.cache.backends.file":{AbstractFileLock:[0,0,1,""],DBMBackend:[0,0,1,""],FileLock:[0,0,1,""]},"dogpile.cache.backends.file.AbstractFileLock":{acquire:[0,3,1,""],acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],is_open:[0,4,1,""],read:[0,3,1,""],release:[0,3,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""],write:[0,3,1,""]},"dogpile.cache.backends.file.DBMBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.file.DBMBackend.params":{dogpile_lockfile:[0,1,1,""],filename:[0,1,1,""],lock_factory:[0,1,1,""],rw_lockfile:[0,1,1,""]},"dogpile.cache.backends.file.FileLock":{acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],is_open:[0,4,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""]},"dogpile.cache.backends.memcached":{BMemcachedBackend:[0,0,1,""],GenericMemcachedBackend:[0,0,1,""],MemcachedBackend:[0,0,1,""],MemcachedLock:[0,0,1,""],PylibmcBackend:[0,0,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend":{delete_multi:[0,3,1,""]},"dogpile.cache.backends.memcached.BMemcachedBackend.params":{password:[0,1,1,""],username:[0,1,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend":{"delete":[0,3,1,""],client:[0,4,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_arguments:[0,4,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.memcached.GenericMemcachedBackend.params":{distributed_lock:[0,1,1,""],lock_timeout:[0,1,1,""],memcached_expire_time:[0,1,1,""],url:[0,1,1,""]},"dogpile.cache.backends.memcached.PylibmcBackend.params":{behaviors:[0,1,1,""],binary:[0,1,1,""],min_compress_len:[0,1,1,""]},"dogpile.cache.backends.memory":{MemoryBackend:[0,0,1,""],MemoryPickleBackend:[0,0,1,""]},"dogpile.cache.backends.memory.MemoryBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.null":{NullBackend:[0,0,1,""]},"dogpile.cache.backends.null.NullBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.redis":{RedisBackend:[0,0,1,""]},"dogpile.cache.backends.redis.RedisBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""]},"dogpile.cache.backends.redis.RedisBackend.params":{connection_pool:[0,1,1,""],db:[0,1,1,""],distributed_lock:[0,1,1,""],host:[0,1,1,""],lock_sleep:[0,1,1,""],lock_timeout:[0,1,1,""],password:[0,1,1,""],port:[0,1,1,""],redis_expiration_time:[0,1,1,""],socket_timeout:[0,1,1,""],url:[0,1,1,""]},"dogpile.cache.exception":{DogpileCacheException:[0,6,1,""],PluginNotFound:[0,6,1,""],RegionAlreadyConfigured:[0,6,1,""],RegionNotConfigured:[0,6,1,""],ValidationError:[0,6,1,""]},"dogpile.cache.plugins":{mako_cache:[0,2,0,"-"]},"dogpile.cache.plugins.mako_cache":{MakoPlugin:[0,0,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin":{get:[0,3,1,""],get_or_create:[0,3,1,""],invalidate:[0,3,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.get.params":{"**kw":[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.get_or_create.params":{"**kw":[0,1,1,""],creation_function:[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.plugins.mako_cache.MakoPlugin.invalidate.params":{"**kw":[0,1,1,""],key:[0,1,1,""]},"dogpile.cache.proxy":{ProxyBackend:[0,0,1,""]},"dogpile.cache.proxy.ProxyBackend":{"delete":[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_mutex:[0,3,1,""],set:[0,3,1,""],set_multi:[0,3,1,""],wrap:[0,3,1,""]},"dogpile.cache.region":{CacheRegion:[0,0,1,""],DefaultInvalidationStrategy:[0,0,1,""],RegionInvalidationStrategy:[0,0,1,""],make_region:[0,7,1,""],value_version:[0,5,1,""]},"dogpile.cache.region.CacheRegion":{"delete":[0,3,1,""],actual_backend:[0,4,1,""],cache_multi_on_arguments:[0,3,1,""],cache_on_arguments:[0,3,1,""],configure:[0,3,1,""],configure_from_config:[0,3,1,""],delete_multi:[0,3,1,""],get:[0,3,1,""],get_multi:[0,3,1,""],get_or_create:[0,3,1,""],get_or_create_multi:[0,3,1,""],invalidate:[0,3,1,""],is_configured:[0,4,1,""],set:[0,3,1,""],set_multi:[0,3,1,""],wrap:[0,3,1,""]},"dogpile.cache.region.CacheRegion.cache_multi_on_arguments.params":{asdict:[0,1,1,""],expiration_time:[0,1,1,""],function_multi_key_generator:[0,1,1,""],namespace:[0,1,1,""],should_cache_fn:[0,1,1,""],to_str:[0,1,1,""]},"dogpile.cache.region.CacheRegion.cache_on_arguments.params":{expiration_time:[6,1,1,""],function_key_generator:[6,1,1,""],namespace:[6,1,1,""],should_cache_fn:[6,1,1,""],to_str:[6,1,1,""]},"dogpile.cache.region.CacheRegion.configure.params":{arguments:[6,1,1,""],backend:[6,1,1,""],expiration_time:[6,1,1,""],region_invalidator:[6,1,1,""],replace_existing_backend:[6,1,1,""],wrap:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get.params":{expiration_time:[6,1,1,""],ignore_expiration:[6,1,1,""],key:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get_or_create.params":{creator:[6,1,1,""],expiration_time:[6,1,1,""],key:[6,1,1,""],should_cache_fn:[6,1,1,""]},"dogpile.cache.region.CacheRegion.get_or_create_multi.params":{creator:[0,1,1,""],expiration_time:[0,1,1,""],keys:[0,1,1,""],should_cache_fn:[0,1,1,""]},"dogpile.cache.region.CacheRegion.invalidate.params":{hard:[0,1,1,""]},"dogpile.cache.region.CacheRegion.params":{async_creation_runner:[6,1,1,""],function_key_generator:[6,1,1,""],function_multi_key_generator:[6,1,1,""],key_mangler:[6,1,1,""],name:[6,1,1,""]},"dogpile.cache.region.DefaultInvalidationStrategy":{invalidate:[0,3,1,""],is_hard_invalidated:[0,3,1,""],is_invalidated:[0,3,1,""],is_soft_invalidated:[0,3,1,""],was_hard_invalidated:[0,3,1,""],was_soft_invalidated:[0,3,1,""]},"dogpile.cache.region.RegionInvalidationStrategy":{invalidate:[0,3,1,""],is_hard_invalidated:[0,3,1,""],is_invalidated:[0,3,1,""],is_soft_invalidated:[0,3,1,""],was_hard_invalidated:[0,3,1,""],was_soft_invalidated:[0,3,1,""]},"dogpile.cache.util":{function_key_generator:[0,7,1,""],kwarg_function_key_generator:[0,7,1,""],length_conditional_mangler:[0,7,1,""],sha1_mangle_key:[0,7,1,""]},"dogpile.util":{NameRegistry:[0,0,1,""],ReadWriteMutex:[0,0,1,""]},"dogpile.util.NameRegistry":{get:[0,3,1,""]},"dogpile.util.NameRegistry.get.params":{"**kw":[0,1,1,""],identifier:[0,1,1,""]},"dogpile.util.NameRegistry.params":{creator:[0,1,1,""]},"dogpile.util.ReadWriteMutex":{acquire_read_lock:[0,3,1,""],acquire_write_lock:[0,3,1,""],release_read_lock:[0,3,1,""],release_write_lock:[0,3,1,""]},dogpile:{Lock:[0,0,1,""],NeedRegenerationException:[0,0,1,""]}},objnames:{"0":["py","class","Python
class"],"1":["py","parameter","Python parameter"],"2":["py","module","Python
module"],"3":["py","method","Python method"],"4":["py","attribute","Python
attribute"],"5":["py","data","Python data"],"6":["py","exception","Python
exception"],"7":["py","function","Python
function"]},objtypes:{"0":"py:class","1":"py:parameter","2":"py:module","3":"py:method","4":"py:attribute","5":"py:data","6":"py:exception","7":"py:function"},terms:{"2to3":1,"53def077a4264bd3183d4eb21b1f56f883e1b572":2,"\u0142ukasz":1,"abstract":1,"boolean":[0,1],"case":[0,1,2,5,6],"class":[0,1,2,5,6],"default":[0,1,5,6],"final":[0,6],"float":[0,1],"function":[0,1,2,5,6],"import":[0,1,2,5,6],"int":1,"long":[0,1,6],"menkevi\u010diu":1,"new":[0,1,2,4,5,6],"null":1,"return":[0,1,2,5,6],"short":2,"super":6,"true":[0,1,5,6],"try":[0,5,6],"while":[0,1,4,5,6],Added:[0,1,6],For:[0,2,6],NFS:2,One:[0,6],Such:[0,6],The:[0,1,2,3,5,6],Then:6,There:[0,2],These:6,Use:[0,1],Used:[0,6],Using:[1,4,5],With:[0,6],__future__:1,__init__:[0,6],__name__:[0,5,6],__repr__:1,_config_argument_dict:[0,6],_config_prefix:[0,6],_encodedproxi:5,_hard_invalid:0,_soft_invalid:0,abil:0,about:3,abov:[0,2,5,6],abstractfilelock:[0,1],accept:[0,1,6],access:[0,1,2,6],accessor:[0,1],accomplish:2,account:[0,1],acheiv:5,acquir:[0,1,6],acquire_read_lock:0,acquire_write_lock:0,across:[0,1,2],act:2,actual:[0,1,2,5,6],actual_backend:[0,1],adapt:[0,4],add:[1,5],add_new_data:5,added:[0,1,6],addit:[0,1,2,6],addition:[1,4],address:2,adjust:[1,4],advantag:0,adventag:6,affect:0,after:[0,1,5,6],after_commit:5,again:[0,2,6],against:[0,1,2,6],ahead:2,akkerman:1,alert:2,alexand:1,all:[0,1,2,4,6],allow:[0,1,2,4,6],along:[2,5],alphabet:0,alreadi:[0,1,6],also:[0,1,2,5,6],alter:[0,6],altern:[0,6],although:1,alwai:[0,6],amix:0,among:6,analogu:0,anderson:1,anentrop:1,ani:[0,2,4,6],anoth:[0,1,2,4,6],answer:2,anticip:2,antoin:1,anydbm:0,anyth:6,api:[1,4,5,6],app:1,appar:1,appear:0,append:[0,5],appli:[0,1,5,6],applic:[0,2,4,6],approach:[0,1,2,5,6],appropri:[0,6],approxim:2,apr:1,araujo:1,arbitrari:0,aren:0,arg:[0,5,6],argnam:0,argspec:0,argument:[0,1,2,5,6],argvalu:0,around:[0,2],ascii:[0,6],asdict:[0,1],ask:0,assembl:0,assert:5,associ:[0,5,6],assum:0,async:1,async_cr:[0,6],async_creation_runn:[0,1,5,6],asynchron:[0,1,4,6],attach:0,attempt:[0,6],attribut:[0,6],aug:1,augment:[0,1,6],authent:0,automat:0,avail:[0,1,3,4,5,6],avoid:5,awar:[0,5,6],azoff:1,back:[0,1],backend:[1,2,4,5],background:[0,5,6],backward:0,base:[0,1,2,5,6],basi:[0,1,6],basic:[0,6],baton:2,beaker:[0,2],bean:1,becom:[0,6],been:[0,1,2,5,6],befor:[0,1,2,6],behalf:6,behav:0,behavior:[0,1,4,5],behind:6,being:[0,1,5,6],beitei:1,below:[0,5,6],ben:1,bertin:1,besid:5,best:0,between:[0,6],beyond:1,binari:0,bit:6,bitbucket:3,block:[0,2,4,5,6],blog:0,bmemcach:[0,1],bmemcachedbackend:0,bookkeep:5,bool:0,both:[0,1],bother:6,brian:1,brown:1,bsddb:[0,6],bug:4,build:[0,1,2,4,5],built:[0,6],builtin:[0,6],bypass:[0,1,6],bytestr:[0,1,6],cach:[0,1,3,5,6],cache_arg:0,cache_dict:0,cache_impl:0,cache_multi_on_argu:[0,1,6],cache_on_argu:[0,1,5,6],cache_refresh:5,cache_region:0,cache_timeout:1,cachebackend:[0,6],cachedvalu:[0,5,6],cachefil:0,cacheimpl:0,cacheregion:[0,1,5,6],calcul:1,call:[0,1,2,5,6],callabl:[0,1,5,6],caller:0,can:[0,1,2,5,6],cannot:[0,1,6],categori:2,caus:1,caveat:[0,6],celeri:[0,6],certain:[0,6],chain:[0,6],chang:[0,1,2,4,5],changelog:4,check:[0,1,2,6],choos:0,christian:1,circumst:6,client:[0,1,2,5,6],client_fn:0,cls:[0,6],code:[0,2,3,5],coerc:[0,1,6],coerce_string_conf:1,coercion:1,collect:0,collis:5,combin:[0,6],commit:5,common:[0,1,2,6],commun:1,compar:[0,6],compat:[0,1],complement:1,complet:[0,2],compon:6,comput:[0,6],concept:[0,2,4],concern:5,concret:0,concurr:[0,2,6],condit:[0,1],condition:[0,6],conf:1,config:[0,1,6],config_dict:[0,6],configur:[0,1,4,5],configure_from_config:[0,1,6],conjunct:[0,1,6],connect:[0,1],connection_pool:[0,1],connectionpool:[0,1],consid:[0,6],consist:[4,6],constant:1,construct:[0,1,6],constructor:[0,6],consult:[0,6],contain:[0,5,6],content:0,context:[0,2],continu:[0,1,2],contribut:1,control:4,conveni:[0,6],convert:[0,6],coordin:[0,2,6],copi:[0,1],core:[1,4,6],correct:[0,6],correctli:1,correspond:0,could:[0,1,5],count:5,counter:5,courtesi:1,cover:1,cpickl:0,creat:[0,1,2,4],create_some_resourc:2,create_valu:[0,6],createdtim:2,creation:[0,1,2,4,6],creation_funct:0,creation_tim:0,creationtim:2,creator:[0,1,4,6],critic:1,cross:2,current:[0,1,2,6],custom:[0,1,5,6],custominvalidationstrategi:0,customiz:1,cutom:0,d_arg1_arg2_arg3:5,daemon:5,dai:[0,6],dairiki:1,daniel:1,data:[0,4,6],databas:5,date:[0,1,6],datetim:[0,1,6],david:1,dbclass:5,dbm:[0,1,6],dbmbackend:[0,1],dbmfile:[0,6],deadlock:1,deal:0,debug:6,dec:1,declar:[0,6],decod:4,decor:[0,1,2,5,6],def:[0,2,5,6],defaultinvalidationstrategi:0,defer:[0,2,6],defin:[5,6],delai:5,deleg:0,delet:[0,1,5,6],delete_multi:[0,1],deliv:1,depend:[0,1,6],deprec:1,deriv:[0,6],describ:[0,2,6],descriptor:0,deseri:0,design:[2,6],desir:0,destruct:1,detail:[0,6],detect:0,determin:[0,1,6],develop:1,dict:[0,5],dictionari:[0,1,6],dictionarybackend:6,did:[1,6],didn:1,differ:[0,1,2,5,6],digest:2,direct:[0,1,5],directli:[0,1,4,6],directori:[0,1],disabl:[0,1,6],disambigu:[0,6],disappear:2,discard:0,distinguish:[0,6],distribut:[0,1,4],distributed_lock:[0,1,6],do_refresh:5,do_someth:2,doc:1,document:[0,1,3],doe:[0,1,5,6],doesn:[0,2],dogpil:[1,3,5,6],dogpile_lockfil:0,dogpilecach:3,dogpilecacheexcept:0,doing:0,don:[0,1],done:5,dont_cache_non:[0,6],down:[0,6],drop:[0,1],due:1,dump:1,dure:[0,1,2],dynam:[0,1,6],each:[0,1,2,5,6],easi:4,easier:6,easili:[5,6],edg:6,ef206ed4473fec3b639:1,effect:0,effici:2,effort:1,either:[0,1,5,6],elect:0,elimin:6,els:[0,2],emploi:1,empti:1,enabl:1,encapsul:2,encod:4,encourag:4,end:[0,1,2,6],enhanc:3,enough:0,ensur:[1,2],enter:5,entir:[0,1,6],entri:1,entry_point:6,entrypoint:[0,1,6],environ:[0,4],equival:[0,1,6],eric:1,errant:1,erron:1,error:[0,1],establish:[0,1,6],etc:[0,1],evalu:[0,6],even:[0,1],event:[4,6],everi:2,everyth:5,exampl:[0,1,4,5,6],excel:6,except:[1,4,5,6],exception:5,execut:4,exist:[0,1,2,6],existing_valu:0,expect:2,expedi:5,expens:[0,2,6],expir:[0,1,2,6],expiration_tim:[0,1,2,5,6],expiretim:0,expiri:0,explicitli:0,expos:1,extend:[0,5,6],extra:[0,6],face:1,fact:[0,6],fail:[0,1],failur:1,fainberg:1,fall:2,fallback:1,fals:[0,1,5,6],far:2,faster:6,fcntl:0,featur:[0,3,6],feb:1,fedorov:1,fidosz:1,file:[1,4,6],filelock:[0,1,2],filenam:[0,2,6],filesystem:[0,2],filter:5,finish:[0,2,6],first:[0,1,2,6],fix:[0,1,6],flag:[0,1,6],flock:[0,1,2],flufl:2,fly:5,fname:[0,5,6],fname_:5,focus:6,follow:[0,2,6],foo1:0,foo:[0,6],forc:[0,1],foremost:6,form:[0,1,6],format:[0,1,4],former:0,found:[0,6],fri:1,frit:1,from:[0,1,2,3,5,6],from_url:[0,1],front:[0,2,4,6],full:1,function_key_gener:[0,1,5,6],function_multi_key_gener:[0,1,6],futur:[0,6],garbag:0,gdbm:1,gen:[0,6],gen_cach:2,gener:[0,1,2,4,5,6],generate_kei:[0,5,6],generate_my_expensive_valu:2,generate_someth:[0,6],genericmemachedbackend:0,genericmemcachedbackend:[0,1],get:[0,1,2,5,6],get_multi:[0,1,5],get_mutex:0,get_or_cr:[0,1,6],get_or_create_multi:[0,1,5,6],get_some_data:5,get_valu:2,getlogg:6,getter:[0,1],git:[1,3],given:[0,1,2,5,6],glitch:1,global:[0,2],goe:[0,2],good:[2,5],great:1,greater:0,group:4,guard:1,guid:4,hanchrow:1,hand:[0,6],handl:0,hanu:1,happen:5,hard:[0,1,5],has:[0,1,2,5,6],has_valu:0,hash:[0,6],hashlib:2,have:[0,1,2,5,6],hayden:1,hbccbh:1,held:0,help:[0,5,6],helper:6,henc:6,here:[0,2,3,6],hex:2,hexdigest:2,high:[4,6],highest_protocol:[0,1],hit:[0,5],hoc:[2,6],homepag:4,hongbin:1,honor:[0,1],hood:5,hook:[4,5],hope:5,host:[0,3],hour:0,how:[0,2,6],howev:[0,1,2,5,6],http:[0,3,5],idea:[2,5],idempot:[0,6],identifi:[0,6],ignor:[0,1,6],ignore_expir:[0,1,6],illustr:[0,2,6],immedi:[0,6],impact:0,implement:[0,1,5,6],impli:[0,2],improv:[0,5],includ:[0,1,6],incom:[0,6],incompat:[0,1],incur:0,index:[3,4],indic:[0,6],indirectli:2,individu:0,info:1,inform:[0,3,6],inher:0,inherit:[0,5],initi:[0,1,2,6],inject:0,insid:[0,6],instal:[1,4,6],instanc:[0,1,2,5,6],instant:6,instanti:[0,5,6],instead:[1,2,5],instruct:6,integ:[0,1,5,6],integr:4,intend:1,intent:0,interfac:[0,2,4,6],intern:[0,2,6],interpret:[0,6],invalid:[0,1,4,6],invalidate_user_id:5,invoc:[0,2],invok:[0,2,6],involv:0,is_configur:[0,1],is_hard_invalid:0,is_invalid:0,is_open:0,is_soft_invalid:0,is_unittest:1,isinst:5,isn:[0,1,6],issu:[1,2,3,6],item:0,iteritem:5,itertool:5,its:[0,1,2,4,6],itself:[0,1,2,6],jack:1,jami:1,jan:1,jeff:1,jimmei:1,job:0,john:1,join:[0,2,5,6],jon:1,jonathan:1,json:5,jun:1,just:[0,2,5,6],justin:1,keep:[0,2],kei:[0,1,2,4,6],ketama:0,key1:0,key2:0,key3:0,key_mangl:[0,1,5,6],key_templ:5,keyerror:1,keyreentrantmutex:1,keyword:[0,1,6],kind:[0,6],klinger:1,know:5,kolak:1,krau:1,kwarg:[0,5],kwarg_function_key_gener:[0,1,6],lambda:5,larger:0,last:[0,6],lastli:[0,6],later:[0,6],latter:0,lead:[1,3,5],learn:4,least:[0,2,5],leav:5,left:0,length:[0,1,6],length_conditional_mangl:0,lennox:1,level:[0,2,6],lib:0,librari:[0,1,6],life:6,like:[0,1,2,5,6],link:[0,5],list:[0,1,6],listens_for:5,load:[0,1,6],load_user_info:6,local:[0,2,5,6],local_region:[0,6],localhost:[0,2],locat:[1,6],lock:[0,1,4,6],lock_factori:[0,1],lock_path:2,lock_sleep:[0,1],lock_timeout:[0,1],lockfil:[0,2],log:6,loggingproxi:6,logic:0,longer:1,look:6,lookup:[0,2],lookup_user_by_id:6,lose:1,lot:4,lutz:1,mabei:1,made:[0,1,2],mai:[0,1,2,5,6],main:5,maintain:1,makarov:1,make:[0,1,2,6],make_region:[0,5,6],mako:1,mako_cach:[0,1],mako_lookup:0,makoplugin:0,manag:[0,2,5,6],mangl:[0,1,5,6],mangler:[0,5,6],mani:[1,6],map:[0,1,5],mapping_set:5,mar:1,marco:1,markedli:6,masayuko:1,match:[0,1],matter:4,mc_pool:2,mean:[0,1,5,6],mechan:[0,1,4,6],memcach:[1,2,6],memcached_expire_tim:[0,1],memcached_region:[0,6],memcachedbackend:0,memcachedlock:0,memoized_properti:1,memori:[1,5],memory_pickl:0,memorybackend:[0,1],memorypickl:1,memorypicklebackend:[0,1],metadata:[0,5,6],method:[0,1,5,6],might:[0,6],min_compress_len:[0,1],mind:6,minim:5,minimum:[0,1],minu:2,miss:[0,1],moc:[0,6],mode:[0,6],model:6,modern:0,modifi:0,modul:[0,1,4,6],modulu:0,moment:5,mon:1,more:[0,1,2,6],morgan:1,most:[0,2,3],move:1,msgpack:5,msgpackproxi:5,much:5,multipl:[0,1,2,6],multithread:[0,6],multivalu:1,must:[0,1],mutex:[0,2,6],mutexlock:0,my_data:[0,6],my_dictionari:0,my_foo:0,my_funct:[0,6],my_key_gener:[0,5,6],my_multi_key_gener:[0,6],my_region:[0,6],myapp:[0,5,6],mybackend:6,myclass:[0,6],myconfig:[0,6],myfirstproxi:0,myfoo:0,myinvalid:0,myotherclass:[0,6],mypackag:6,myregion:6,mysecondproxi:0,mysect:0,name:[0,1,6],nameregistri:[0,1],namespac:[0,1,5,6],nativ:6,necessari:5,necessarili:[0,1,6],need:[0,1,4,5,6],needregenerationexcept:[0,2],neg:1,negat:5,nest:5,never:0,new_valu:0,newli:[0,1,2,6],newvalu:[0,6],next:[0,2,5],no_valu:[0,1,5,6],non:[0,1,2,6],none:[0,1,2,6],nor:1,normal:[0,2,6],note:[0,2,6],notimplementederror:[0,5],nov:1,novalu:0,now:[0,1,2,5,6],nullbackend:[0,1],nulllock:1,number:[0,2,6],object:[0,1,2,4,6],object_hook:5,occur:[0,1,6],oct:1,off:2,offer:6,offload:5,often:2,old:[0,1,5],older:[0,2,6],olli:1,omit:0,onc:[0,1,2],one:[0,1,2,4,5,6],ones:[0,5],onli:[0,1,2,5,6],oper:[0,1,2,5,6],optimist:5,option:[0,1,6],order:[0,1,2,5,6],ordinari:0,org:[3,5],orient:0,origin:[0,1,6],orm:4,other:[0,1,2,4,5,6],otherwis:[0,1,5,6],our:[2,5,6],out:[1,5],output:[1,2],outsid:[0,2,6],over:0,overid:[0,6],overrid:[0,5,6],overridden:6,overview:4,own:[0,2,4,5],packag:[0,1,2,3],packb:5,page:[3,4],pair:2,param:0,paramet:[0,1,6],paramt:0,parent:[0,6],pars:1,part:[0,1,6],parti:0,particular:[0,1,2,5,6],particularli:6,pass:[0,1,2,5,6],passthrough:0,password:[0,1],past:0,patch:1,path:[0,2,6],pattern:6,paul:1,payload:[0,5,6],per:[0,1,2,6],perform:[0,2,5,6],period:[0,2,6],persist:[0,5,6],pickl:[0,1,5,6],pickleabl:0,pileup:1,pip:3,place:[0,1,5,6],plain:[0,1],platform:[0,1],plu:1,pluck:[0,6],plugin:[1,4,6],pluginload:1,pluginnotfound:[0,1],point:[0,1,5,6],pool:0,pop:[1,6],popul:[0,6],popular:6,port:0,portalock:0,portion:6,posit:1,possibl:[0,5,6],post:0,potenti:[1,5,6],pre:5,prefix:[0,4,6],present:[0,1,5,6],preserv:5,prevent:[0,1,6],previou:[0,2,4,6],previous:[1,2],primari:2,print:5,prior:0,probabl:5,problem:1,problemat:0,proce:[0,1,2,4],process:[0,1,2,5,6],produc:[0,1,6],product:[1,6],project:4,promptli:[0,6],propag:[0,1],properli:6,properti:0,protect:0,protocol:1,provid:[0,1,2,4,6],proxi:[5,6],proxybackend:[0,1,5,6],publish:3,pull:[0,1,5,6],pullreq:1,pure:0,purpos:[1,2,5],push:[0,5],put:[2,6],py2:1,py3k:1,pylibmc:[0,1,2,5],pylibmcbackend:0,pypi:3,pytest:1,python3:1,python:[0,1,2,3,5,6],queri:[0,5,6],queue:[0,6],rais:[0,1,2,5,6],ralph:1,rather:[0,2,6],raw:5,reach:[0,2,6],read:0,reader:[0,1],readi:[0,6],readthedoc:3,readwrite_lock:[0,1],readwritemutex:[0,1],real:6,receiv:[0,1,6],recent:3,recip:[1,2,4],recod:5,recogn:[0,1,6],recommend:[0,6],record:5,recreat:[0,6],redi:[1,4,6],redis_expiration_tim:0,redisbackend:[0,1],redundantli:6,reentrant:1,refer:[0,1,2,4],referenc:0,reflect:0,refresh:[0,1,5,6],regardless:[0,6],regen:0,regener:[0,1,2,6],region:[1,4,5],region_invalid:[0,6],regionalreadyconfigur:0,regioninvalidationstrategi:[0,1,6],regionnotconfigur:0,regist:[0,1,6],register_backend:6,registri:[0,5],regular:0,rel:[0,6],relat:4,releas:[0,1,3,6],release_read_lock:0,release_write_lock:0,reli:[1,2],relianc:1,remain:[0,1],rememb:[0,6],remot:0,remov:[0,1,2,6],repair:1,replac:[0,1,5,6],replace_existing_backend:[0,1,6],report:[0,3,6],repositori:1,repres:[0,6],request:[0,1,6],requir:[0,1,2,4,6],reserv:2,resolv:[0,6],resourc:[2,4],respect:1,respons:[0,6],restor:1,result:[0,5,6],ret:0,retir:1,retri:6,retriev:[0,1,2,6],retrieve_resourc:2,retry_count:6,retry_proxi:6,retrydeleteproxi:6,roll:1,rosebaugh:1,rougher:6,round:2,routin:1,rudimentari:4,run:[0,1,6],runner:[0,6],runtim:6,rutherfurd:1,rw_lockfil:0,ryan:1,safe:[0,2,6],same:[0,1,2,6],sasl:0,sat:1,sauerwein:1,sauliu:1,scenario:1,scene:6,scheme:[1,2,5],scope:0,scoped_sess:5,scott:0,search:4,second:[0,1,2,6],section:[0,2,6],see:[0,1,2,6],select:[0,4],self:[0,5,6],semant:1,semaphor:0,send:1,sent:5,sep:1,separ:[0,1,2,6],sequenc:[0,5],seri:5,serial:[0,1,5,6],serializ:6,serv:1,server:[0,2,6],servic:2,session:5,sessionmak:5,set:[0,1,5,6],set_argu:0,set_multi:[0,1,5],setup:[0,1,2,6],setuptool:[1,6],sever:[0,1],sha1:[0,2,6],sha1_mangle_kei:[0,6],share:[1,2,6],sheldon:1,should:[0,3,6],should_cache_fn:[0,1,6],sign:1,signatur:0,similar:[0,1,3,6],simpl:[0,1,2,5,6],simpli:5,simultan:[0,6],sinc:[0,5,6],singl:[0,1,2,4,6],singleton:0,size:[0,5],skip:[0,6],sleep:0,slow_databas:2,small:6,smaller:5,sobrinho:1,socket:0,socket_timeout:[0,1],soft:[0,1],some:[0,1,2,4,5,6],some_creation_funct:2,some_databas:6,some_kei:2,somedatabas:[0,6],somekei:[0,6],somemethod:[0,6],someregion:[0,6],something_new:5,somevalu:6,somewher:0,sourc:[0,1,2,3,6],space:6,special:1,specif:[0,1,4,6],specifi:[0,1,5,6],sqlalchemi:5,stack:0,stale:[0,2,6],standard:0,start:[0,5,6],state:[0,1],statu:3,stegmann:1,step:[0,6],still:[0,1,2,5,6],storag:[1,5,6],store:[0,1,2,5,6],str:[0,1,5,6],strategi:[0,1,2,6],strictredi:[0,1],string:[0,1,6],strongli:0,structur:[0,4,6],stuff:2,subclass:[0,1,6],submit:0,subsequ:[0,1,6],subset:0,subsitut:1,substitut:[0,6],subsystem:4,success:1,successfulli:2,suffix:0,suit:[0,1],suitabl:[0,6],sun:1,supersed:[0,6],suppli:[0,6],support:[0,1,6],suppos:[1,5],sure:[0,6],symbol:[1,2],symlink:2,synchron:[0,2],syncreaderdogpil:1,syntax:1,sys:6,system:[0,1,2,5,6],tag:0,take:[0,1,6],talk:[0,6],target:[0,5,6],task:[0,6],tcp_nodelai:0,techniqu:5,templat:[0,1,5],templatelookup:0,term:[0,6],test:[0,1,6],than:[0,2,5,6],thank:1,the_resourc:2,thei:[0,2,6],them:[0,1,5],therebi:1,therefor:[0,6],thi:[0,1,2,3,4,5,6],thing:[1,6],third:[0,5],those:[0,1,4,5,6],though:[0,1,6],thread:[0,1,2,4,5,6],threadmappedpool:2,threadsaf:[0,2],three:[0,5],threshold:0,throttl:0,through:[2,5],thrown:[0,1],thu:[0,1,2,6],tiger:0,tim:1,time:[0,1,2,6],timedelta:[0,1,6],timeout:[0,1],timestamp:[0,1,6],tmp:2,to_list:1,to_str:[0,1,6],tobia:1,togeth:[0,6],token:[0,6],tool:[0,3,6],top:4,total:0,total_second:1,toward:0,track:[0,2,3,5],tracker:3,transform:5,translat:5,trip:2,tue:1,tup:2,tupl:[0,2,6],turn:6,tweak:4,twice:2,two:[0,2,4,5,6],type:[0,6],typic:[0,5,6],ultim:[0,1,2,6],unaffect:1,uncondition:[0,6],unconfigur:1,under:[0,1,5,6],underli:[0,6],underneath:[0,6],understood:0,undesir:0,unencod:5,unicod:[0,1,6],uninstanti:6,uniqu:[0,2,5],unit:1,unix:[0,1,2],unless:[0,2,6],unlik:[0,2],unlimit:0,unnecessari:[0,1],unnecessarili:1,unpackb:5,unsupport:1,until:[0,1,2,4,5,6],updat:4,upon:[0,1,2,6],upstream:0,url:[0,1,5,6],usabl:6,usag:[0,1,4],use:[0,1,2,4,5,6],use_bin_typ:5,used:[0,1,2,5,6],user:[1,2,4,5,6],user_fn_on:5,user_fn_one_:5,user_fn_thre:5,user_fn_three_:5,user_fn_two:5,user_fn_two_:5,user_id:[5,6],user_kei:5,usernam:0,uses:[0,1,2,5,6],using:[0,1,2,3,5,6],usual:[2,6],utf:5,util:[1,4],valid:0,validationerror:0,valu:[0,1,2,5,6],value1:0,value2:0,value3:0,value_and_created_fn:0,value_decod:5,value_encod:5,value_plus_tim:2,value_vers:0,vanasco:1,variabl:1,variant:[0,1,5],varieti:4,variou:[0,2],verbos:6,veri:4,version:[0,2,3,4,6],versu:[0,6],via:[0,1,2,5,6],volum:4,wai:[0,1,5,6],wait:[0,1,6],want:[0,2,5,6],was_hard_invalid:0,was_soft_invalid:0,wasn:1,wed:1,week:[0,6],well:[0,1,2,5,6],were:[0,1,6],what:[0,1,2],whatev:[0,6],when:[0,1,2,5,6],whenev:[0,6],where:[0,1,2,6],wherebi:1,whether:[0,6],which:[0,1,2,4,5,6],whole:1,whose:0,wichert:1,wide:1,window:[0,1],wish:0,with_stat:1,within:[0,1,5,6],without:[0,2,6],won:[0,2,6],work:[0,1,2,5],worker:6,would:[0,1,5,6],wrap:[0,1,5,6],write:[0,1,6],writer:[0,5,6],written:6,wrong:1,yank:1,yet:[0,1,6],you:[0,2,5,6],your:[0,2,5],zero:1,zip:0,zoomorph:1,zzzeek:3},titles:["API","Changelog","dogpile
Core","Front Matter","Welcome to dogpile.cache\u2019s
documentation!","Recipes","Usage
Guide"],titleterms:{"null":0,Using:[2,6],all:5,anoth:5,api:[0,2],asynchron:5,backend:[0,6],behavior:6,bug:[1,3],cach:[2,4],chang:6,changelog:1,configur:6,core:[0,2],creat:6,data:5,decod:5,directli:2,distribut:2,document:4,dogpil:[0,2,4],encod:5,event:5,exampl:2,except:0,featur:1,file:[0,2],format:5,front:3,group:5,guid:6,homepag:3,indic:4,instal:3,integr:0,invalid:5,kei:5,learn:2,lock:2,mako:0,matter:3,memcach:0,memori:0,misc:1,need:2,note:5,orm:5,overview:6,plugin:0,prefix:5,project:3,proxi:0,pylibmc:6,recip:5,redi:[0,5],region:[0,6],relat:5,rudimentari:[2,6],tabl:4,updat:5,usag:[2,6],util:0,welcom:4}})
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/docs/usage.html
new/dogpile.cache-0.6.6/docs/usage.html
--- old/dogpile.cache-0.6.5/docs/usage.html 2018-03-05 21:49:26.000000000
+0100
+++ new/dogpile.cache-0.6.6/docs/usage.html 2018-06-27 20:44:42.000000000
+0200
@@ -6,12 +6,12 @@
<head>
<meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Usage Guide — dogpile.cache 0.6.5 documentation</title>
+ <title>Usage Guide — dogpile.cache 0.6.6 documentation</title>
<link rel="stylesheet" href="_static/nature.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/changelog.css" type="text/css" />
<link rel="stylesheet" href="_static/sphinx_paramlinks.css"
type="text/css" />
- <script type="text/javascript"
src="_static/documentation_options.js"></script>
+ <script type="text/javascript" id="documentation_options"
data-url_root="./" src="_static/documentation_options.js"></script>
<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>
@@ -35,7 +35,7 @@
<li class="right" >
<a href="front.html" title="Front Matter"
accesskey="P">previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
@@ -908,12 +908,12 @@
<li class="right" >
<a href="front.html" title="Front Matter"
>previous</a> |</li>
- <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.5 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache
0.6.6 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
© Copyright 2011-2018 Mike Bayer.
- Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.1.
+ Created using <a href="http://sphinx-doc.org/">Sphinx</a> 1.7.5.
</div>
</body>
</html>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/dogpile/__init__.py
new/dogpile.cache-0.6.6/dogpile/__init__.py
--- old/dogpile.cache-0.6.5/dogpile/__init__.py 2018-03-05 21:49:09.000000000
+0100
+++ new/dogpile.cache-0.6.6/dogpile/__init__.py 2018-06-27 20:44:24.000000000
+0200
@@ -1,4 +1,4 @@
-__version__ = '0.6.5'
+__version__ = '0.6.6'
from .lock import Lock # noqa
from .lock import NeedRegenerationException # noqa
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/dogpile/cache/region.py
new/dogpile.cache-0.6.6/dogpile/cache/region.py
--- old/dogpile.cache-0.6.5/dogpile/cache/region.py 2018-03-05
21:49:09.000000000 +0100
+++ new/dogpile.cache-0.6.6/dogpile/cache/region.py 2018-06-27
20:44:24.000000000 +0200
@@ -484,6 +484,26 @@
else:
return self._LockWrapper()
+ # cached value
+ _actual_backend = None
+
+ @property
+ def actual_backend(self):
+ """Return the ultimate backend underneath any proxies.
+
+ The backend might be the result of one or more ``proxy.wrap``
+ applications. If so, derive the actual underlying backend.
+
+ .. versionadded:: 0.6.6
+
+ """
+ if self._actual_backend is None:
+ _backend = self.backend
+ while hasattr(_backend, 'proxied'):
+ _backend = _backend.proxied
+ self._actual_backend = _backend
+ return self._actual_backend
+
def invalidate(self, hard=True):
"""Invalidate this :class:`.CacheRegion`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/dogpile/lock.py
new/dogpile.cache-0.6.6/dogpile/lock.py
--- old/dogpile.cache-0.6.5/dogpile/lock.py 2018-03-05 21:49:09.000000000
+0100
+++ new/dogpile.cache-0.6.6/dogpile/lock.py 2018-06-27 20:44:24.000000000
+0200
@@ -69,11 +69,10 @@
"""Return true if the expiration time is reached, or no
value is available."""
- return not self._has_value(createdtime) or \
- (
- self.expiretime is not None and
- time.time() - createdtime > self.expiretime
- )
+ return not self._has_value(createdtime) or (
+ self.expiretime is not None and
+ time.time() - createdtime > self.expiretime
+ )
def _has_value(self, createdtime):
"""Return true if the creation function has proceeded
@@ -91,68 +90,100 @@
value = NOT_REGENERATED
createdtime = -1
- generated = self._enter_create(createdtime)
+ generated = self._enter_create(value, createdtime)
if generated is not NOT_REGENERATED:
generated, createdtime = generated
return generated
elif value is NOT_REGENERATED:
+ # we called upon the creator, and it said that it
+ # didn't regenerate. this typically means another
+ # thread is running the creation function, and that the
+ # cache should still have a value. However,
+ # we don't have a value at all, which is unusual since we just
+ # checked for it, so check again (TODO: is this a real codepath?)
try:
value, createdtime = value_fn()
return value
except NeedRegenerationException:
- raise Exception("Generation function should "
- "have just been called by a concurrent "
- "thread.")
+ raise Exception(
+ "Generation function should "
+ "have just been called by a concurrent "
+ "thread.")
else:
return value
- def _enter_create(self, createdtime):
-
+ def _enter_create(self, value, createdtime):
if not self._is_expired(createdtime):
return NOT_REGENERATED
_async = False
if self._has_value(createdtime):
+ has_value = True
if not self.mutex.acquire(False):
- log.debug("creation function in progress "
- "elsewhere, returning")
+ log.debug(
+ "creation function in progress "
+ "elsewhere, returning")
return NOT_REGENERATED
else:
+ has_value = False
log.debug("no value, waiting for create lock")
self.mutex.acquire()
try:
log.debug("value creation lock %r acquired" % self.mutex)
- # see if someone created the value already
- try:
- value, createdtime = self.value_and_created_fn()
- except NeedRegenerationException:
- pass
- else:
- if not self._is_expired(createdtime):
- log.debug("value already present")
- return value, createdtime
- elif self.async_creator:
- log.debug("Passing creation lock to async runner")
- self.async_creator(self.mutex)
- _async = True
- return value, createdtime
-
- log.debug("Calling creation function")
- created = self.creator()
- return created
+ if not has_value:
+ # we entered without a value, or at least with "creationtime ==
+ # 0". Run the "getter" function again, to see if another
+ # thread has already generated the value while we waited on the
+ # mutex, or if the caller is otherwise telling us there is a
+ # value already which allows us to use async regeneration. (the
+ # latter is used by the multi-key routine).
+ try:
+ value, createdtime = self.value_and_created_fn()
+ except NeedRegenerationException:
+ # nope, nobody created the value, we're it.
+ # we must create it right now
+ pass
+ else:
+ has_value = True
+ # caller is telling us there is a value and that we can
+ # use async creation if it is expired.
+ if not self._is_expired(createdtime):
+ # it's not expired, return it
+ log.debug("Concurrent thread created the value")
+ return value, createdtime
+
+ # otherwise it's expired, call creator again
+
+ if has_value and self.async_creator:
+ # we have a value we can return, safe to use async_creator
+ log.debug("Passing creation lock to async runner")
+
+ # so...run it!
+ self.async_creator(self.mutex)
+ _async = True
+
+ # and return the expired value for now
+ return value, createdtime
+
+ # it's expired, and it's our turn to create it synchronously, *or*,
+ # there's no value at all, and we have to create it synchronously
+ log.debug(
+ "Calling creation function for %s value",
+ "not-yet-present" if not has_value else
+ "previously expired"
+ )
+ return self.creator()
finally:
if not _async:
self.mutex.release()
log.debug("Released creation lock")
-
def __enter__(self):
return self._enter()
def __exit__(self, type, value, traceback):
pass
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/dogpile.cache.egg-info/PKG-INFO
new/dogpile.cache-0.6.6/dogpile.cache.egg-info/PKG-INFO
--- old/dogpile.cache-0.6.5/dogpile.cache.egg-info/PKG-INFO 2018-03-05
21:49:27.000000000 +0100
+++ new/dogpile.cache-0.6.6/dogpile.cache.egg-info/PKG-INFO 2018-06-27
20:44:43.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: dogpile.cache
-Version: 0.6.5
+Version: 0.6.6
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.6.5/tests/cache/test_region.py
new/dogpile.cache-0.6.6/tests/cache/test_region.py
--- old/dogpile.cache-0.6.5/tests/cache/test_region.py 2018-03-05
21:49:09.000000000 +0100
+++ new/dogpile.cache-0.6.6/tests/cache/test_region.py 2018-06-27
20:44:24.000000000 +0200
@@ -1,5 +1,6 @@
from unittest import TestCase
from dogpile.cache.api import NO_VALUE, CachedValue
+from dogpile.cache.api import CacheBackend
from dogpile.cache import exception
from dogpile.cache import make_region, CacheRegion
from dogpile.cache.proxy import ProxyBackend
@@ -627,3 +628,19 @@
# make sure 1 was set, but 5 was not
eq_(reg.get(5), NO_VALUE)
eq_(reg.get(1), True)
+
+ def test_actual_backend_proxied(self):
+ # ensure that `reg.actual_backend` is the actual backend
+ # also ensure that `reg.backend` is a proxied backend
+ reg = self._region(config_args={"wrap": [
+ ProxyBackendTest.GetCounterProxy,
+ ProxyBackendTest.SetCounterProxy]})
+ assert isinstance(reg.backend, ProxyBackend)
+ assert isinstance(reg.actual_backend, CacheBackend)
+
+ def test_actual_backend_noproxy(self):
+ # ensure that `reg.actual_backend` is the actual backend
+ # also ensure that `reg.backend` is NOT a proxied backend
+ reg = self._region()
+ assert isinstance(reg.backend, CacheBackend)
+ assert isinstance(reg.actual_backend, CacheBackend)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/dogpile.cache-0.6.5/tests/test_lock.py
new/dogpile.cache-0.6.6/tests/test_lock.py
--- old/dogpile.cache-0.6.5/tests/test_lock.py 2018-03-05 21:49:09.000000000
+0100
+++ new/dogpile.cache-0.6.6/tests/test_lock.py 2018-06-27 20:44:24.000000000
+0200
@@ -6,6 +6,7 @@
import contextlib
import math
import logging
+import mock
log = logging.getLogger(__name__)
@@ -277,3 +278,34 @@
len(the_resource),
expected_generations)
+
+class RaceConditionTests(TestCase):
+ def test_no_double_get_on_expired(self):
+ mutex = threading.Lock()
+
+ the_value = "the value"
+ expiration_time = 10
+ created_time = 10
+ current_time = 22 # e.g. it's expired
+
+ def creator():
+ return the_value, current_time
+
+ def value_and_created_fn():
+ return the_value, created_time
+
+ value_and_created_fn = mock.Mock(side_effect=value_and_created_fn)
+
+ def time_mock():
+ return current_time
+
+ with mock.patch("dogpile.lock.time.time", time_mock):
+
+ with Lock(
+ mutex, creator, value_and_created_fn, expiration_time
+ ) as entered_value:
+ self.assertEquals("the value", entered_value)
+
+ self.assertEquals(
+ value_and_created_fn.call_count, 1
+ )