Hello community,
here is the log from the commit of package python-dogpile.cache for openSUSE:Factory checked in at 2019-03-10 09:40:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-dogpile.cache (Old)
and /work/SRC/openSUSE:Factory/.python-dogpile.cache.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-dogpile.cache"
Sun Mar 10 09:40:38 2019 rev:21 rq:682880 version:0.7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-dogpile.cache/python-dogpile.cache.changes 2018-12-13 19:47:30.988773046 +0100
+++ /work/SRC/openSUSE:Factory/.python-dogpile.cache.new.28833/python-dogpile.cache.changes 2019-03-10 09:40:40.924099993 +0100
@@ -1,0 +2,12 @@
+Fri Mar 8 14:37:22 UTC 2019 - Tomáš Chvátal
+
+- Update to 0.7.1:
+ * fix python3 deprecation warnings
+ * Restore the API for async_creation_runner in all cases
+
+-------------------------------------------------------------------
+Thu Mar 7 10:53:24 UTC 2019 - Tomáš Chvátal
+
+- Fix fdupes call
+
+-------------------------------------------------------------------
Old:
----
dogpile.cache-0.6.8.tar.gz
New:
----
dogpile.cache-0.7.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-dogpile.cache.spec ++++++
--- /var/tmp/diff_new_pack.jfNUrI/_old 2019-03-10 09:40:41.728099801 +0100
+++ /var/tmp/diff_new_pack.jfNUrI/_new 2019-03-10 09:40:41.732099800 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-dogpile.cache
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,32 +19,30 @@
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
%define oldpython python
Name: python-dogpile.cache
-Version: 0.6.8
+Version: 0.7.1
Release: 0
Summary: A caching front-end based on the Dogpile lock
License: BSD-3-Clause
Group: Development/Languages/Python
-Url: https://github.com/sqlalchemy/dogpile.cache
-Source: https://pypi.io/packages/source/d/dogpile.cache/dogpile.cache-%{version}.tar.gz
+URL: https://github.com/sqlalchemy/dogpile.cache
+Source: https://files.pythonhosted.org/packages/source/d/dogpile.cache/dogpile.cache-%{version}.tar.gz
BuildRequires: %{python_module Mako}
+BuildRequires: %{python_module decorator}
BuildRequires: %{python_module mock}
-BuildRequires: %{python_module pytest-cov}
BuildRequires: %{python_module pytest}
BuildRequires: %{python_module setuptools}
+Requires: python-decorator
+BuildRequires: %{python_module six}
+Requires: python-six
BuildRequires: fdupes
BuildRequires: python-rpm-macros
-# NOTE(toabctl): upstream merged dogpile.core into dogpile.cache
-# see https://gerrit.sqlalchemy.org/#/c/89/
+Provides: python-dogpile.core = %{version}
+Obsoletes: python-dogpile.core < 0.4.1
+BuildArch: noarch
%ifpython2
Obsoletes: %{oldpython}-dogpile.core < 0.4.1
Provides: %{oldpython}-dogpile.core = %{version}
%endif
-%ifpython3
-Provides: python3-dogpile.core = %{version}
-Obsoletes: python3-dogpile.core < 0.4.1
-%endif
-BuildRoot: %{_tmppath}/%{name}-%{version}-build
-BuildArch: noarch
%python_subpackages
%description
@@ -60,11 +58,10 @@
%install
%python_install
-%python_expand %fdupes -s %{buildroot}/%{python_sitelib}
+%python_expand %fdupes %{buildroot}/%{$python_sitelib}
%check
-export RUNTESTS="-k 'not test_dbm_backend and not test_memcached_backend and not test_redis_backend'"
-%python_exec -m pytest --ignore=tests/test_lock.py
+%pytest
%files %{python_files}
%license LICENSE
++++++ dogpile.cache-0.6.8.tar.gz -> dogpile.cache-0.7.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/PKG-INFO new/dogpile.cache-0.7.1/PKG-INFO
--- old/dogpile.cache-0.6.8/PKG-INFO 2018-11-25 03:24:28.000000000 +0100
+++ new/dogpile.cache-0.7.1/PKG-INFO 2018-12-12 03:33:55.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: dogpile.cache
-Version: 0.6.8
+Version: 0.7.1
Summary: A caching front-end based on the Dogpile lock.
Home-page: https://github.com/sqlalchemy/dogpile.cache
Author: Mike Bayer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/_sources/changelog.rst.txt new/dogpile.cache-0.7.1/docs/_sources/changelog.rst.txt
--- old/dogpile.cache-0.6.8/docs/_sources/changelog.rst.txt 2018-11-25 03:24:24.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/_sources/changelog.rst.txt 2018-12-12 03:33:50.000000000 +0100
@@ -3,6 +3,49 @@
==============
.. changelog::
+ :version: 0.7.1
+ :released: Tue Dec 11 2018
+
+ .. change::
+ :tags: bug, region
+ :tickets: 139
+
+ Fixed regression in 0.7.0 caused by :ticket:`136` where the assumed
+ arguments for the :paramref:`.CacheRegion.async_creation_runner` expanded to
+ include the new :paramref:`.CacheRegion.get_or_create.creator_args`
+ parameter, as it was not tested that the async runner would be implicitly
+ called with these arguments when the :meth:`.CacheRegion.cache_on_arguments`
+ decorator was used. The exact signature of ``async_creation_runner`` is
+ now restored to have the same arguments in all cases.
+
+
+.. changelog::
+ :version: 0.7.0
+ :released: Mon Dec 10 2018
+
+ .. change::
+ :tags: bug
+ :tickets: 137
+
+ The ``decorator`` module is now used when creating function decorators
+ within :meth:`.CacheRegion.cache_on_arguments` and
+ :meth:`.CacheRegion.cache_multi_on_arguments` so that function signatures
+ are preserved. Pull request courtesy ankitpatel96.
+
+ Additionally adds a small performance enhancement which is to avoid
+ internally creating a ``@wraps()`` decorator for the creator function on
+ every get operation, by allowing the arguments to the creator be passed
+ separately to :meth:`.CacheRegion.get_or_create`.
+
+
+ .. change::
+ :tags: bug, py3k
+ :tickets: 129
+
+ Fixed all Python 3.x deprecation warnings including
+ ``inspect.getargspec()``.
+
+.. changelog::
:version: 0.6.8
:released: Sat Nov 24 2018
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/_static/documentation_options.js new/dogpile.cache-0.7.1/docs/_static/documentation_options.js
--- old/dogpile.cache-0.6.8/docs/_static/documentation_options.js 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/_static/documentation_options.js 2018-12-12 03:33:55.000000000 +0100
@@ -1,6 +1,6 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
- VERSION: '0.6.8',
+ VERSION: '0.7.1',
LANGUAGE: 'None',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/api.html new/dogpile.cache-0.7.1/docs/api.html
--- old/dogpile.cache-0.6.8/docs/api.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/api.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>API — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -725,7 +725,7 @@
<dl class="method">
<dt id="dogpile.cache.region.CacheRegion.get_or_create">
-<code class="descname">get_or_create</code><span class="sig-paren">(</span><em>key</em>, <em>creator</em>, <em>expiration_time=None</em>, <em>should_cache_fn=None</em><span class="sig-paren">)</span><a class="headerlink" href="#dogpile.cache.region.CacheRegion.get_or_create" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_or_create</code><span class="sig-paren">(</span><em>key</em>, <em>creator</em>, <em>expiration_time=None</em>, <em>should_cache_fn=None</em>, <em>creator_args=None</em><span class="sig-paren">)</span><a class="headerlink" href="#dogpile.cache.region.CacheRegion.get_or_create" title="Permalink to this definition">¶</a></dt>
<dd><p>Return a cached value based on the given key.</p>
<p>If the value does not exist or is considered to be expired
based on its creation time, the given
@@ -760,6 +760,12 @@
be of any type recognized by the backend or by the key_mangler
function, if present.</li>
<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.creator"></span><strong>creator</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.creator">¶</a> – function which creates a new value.</li>
+<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.creator_args"></span><strong>creator_args</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.creator_args">¶</a> – <p>optional tuple of (args, kwargs) that will be
+passed to the creator function if present.</p>
+<div class="versionadded">
+<p><span class="versionmodified">New in version 0.7.0.</span></p>
+</div>
+</li>
<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.expiration_time"></span><strong>expiration_time</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.expiration_time">¶</a> – optional expiration time which will overide
the expiration time already configured on this <a class="reference internal" href="#dogpile.cache.region.CacheRegion" title="dogpile.cache.region.CacheRegion"><code class="xref py py-class docutils literal notranslate"><span class="pre">CacheRegion</span></code></a>
if not None. To set no expiration, use the value -1.</li>
@@ -3149,7 +3155,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/build/changelog.rst new/dogpile.cache-0.7.1/docs/build/changelog.rst
--- old/dogpile.cache-0.6.8/docs/build/changelog.rst 2018-11-25 03:24:24.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/build/changelog.rst 2018-12-12 03:33:50.000000000 +0100
@@ -3,6 +3,49 @@
==============
.. changelog::
+ :version: 0.7.1
+ :released: Tue Dec 11 2018
+
+ .. change::
+ :tags: bug, region
+ :tickets: 139
+
+ Fixed regression in 0.7.0 caused by :ticket:`136` where the assumed
+ arguments for the :paramref:`.CacheRegion.async_creation_runner` expanded to
+ include the new :paramref:`.CacheRegion.get_or_create.creator_args`
+ parameter, as it was not tested that the async runner would be implicitly
+ called with these arguments when the :meth:`.CacheRegion.cache_on_arguments`
+ decorator was used. The exact signature of ``async_creation_runner`` is
+ now restored to have the same arguments in all cases.
+
+
+.. changelog::
+ :version: 0.7.0
+ :released: Mon Dec 10 2018
+
+ .. change::
+ :tags: bug
+ :tickets: 137
+
+ The ``decorator`` module is now used when creating function decorators
+ within :meth:`.CacheRegion.cache_on_arguments` and
+ :meth:`.CacheRegion.cache_multi_on_arguments` so that function signatures
+ are preserved. Pull request courtesy ankitpatel96.
+
+ Additionally adds a small performance enhancement which is to avoid
+ internally creating a ``@wraps()`` decorator for the creator function on
+ every get operation, by allowing the arguments to the creator be passed
+ separately to :meth:`.CacheRegion.get_or_create`.
+
+
+ .. change::
+ :tags: bug, py3k
+ :tickets: 129
+
+ Fixed all Python 3.x deprecation warnings including
+ ``inspect.getargspec()``.
+
+.. changelog::
:version: 0.6.8
:released: Sat Nov 24 2018
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/build/requirements.txt new/dogpile.cache-0.7.1/docs/build/requirements.txt
--- old/dogpile.cache-0.6.8/docs/build/requirements.txt 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/build/requirements.txt 2018-12-12 03:33:43.000000000 +0100
@@ -1,4 +1,5 @@
-git+https://bitbucket.org/zzzeek/changelog.git@HEAD#egg=changelog
-git+https://bitbucket.org/zzzeek/sphinx-paramlinks.git@HEAD#egg=sphinx-paramlink...
+git+https://github.com/sqlalchemyorg/changelog.git#egg=changelog
+git+https://github.com/sqlalchemyorg/sphinx-paramlinks.git#egg=sphinx-paramlinks
sphinx
mako
+decorator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/changelog.html new/dogpile.cache-0.7.1/docs/changelog.html
--- old/dogpile.cache-0.6.8/docs/changelog.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/changelog.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Changelog — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -42,6 +42,45 @@
<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.7.1">
+<h2>0.7.1<a class="headerlink" href="#change-0.7.1" title="Permalink to this headline">¶</a></h2>
+Released: Tue Dec 11 2018<div class="section" id="change-0.7.1-bug">
+<h3>bug<a class="headerlink" href="#change-0.7.1-bug" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li><p id="change-0.7.1-0"><span class="target" id="change-adf737934be9e364a66f48c9724e7ec8"><strong>[bug] [region] </strong></span>Fixed regression in 0.7.0 caused by <a class="reference external" href="https://github.com/sqlalchemy/dogpile.cache/issues/136">#136</a> where the assumed
+arguments for the <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.params.async_creation_runner" title="dogpile.cache.region.CacheRegion"><code class="xref py py-paramref docutils literal notranslate"><span class="pre">CacheRegion.async_creation_runner</span></code></a> expanded to
+include the new <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.get_or_create.params.creator_args" title="dogpile.cache.region.CacheRegion.get_or_create"><code class="xref py py-paramref docutils literal notranslate"><span class="pre">CacheRegion.get_or_create.creator_args</span></code></a>
+parameter, as it was not tested that the async runner would be implicitly
+called with these arguments when the <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.cache_on_arguments" title="dogpile.cache.region.CacheRegion.cache_on_arguments"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CacheRegion.cache_on_arguments()</span></code></a>
+decorator was used. The exact signature of <code class="docutils literal notranslate"><span class="pre">async_creation_runner</span></code> is
+now restored to have the same arguments in all cases.<a class="changeset-link headerlink reference internal" href="#change-adf737934be9e364a66f48c9724e7ec8">¶</a><p>References: <a class="reference external" href="https://github.com/sqlalchemy/dogpile.cache/issues/139">#139</a></p>
+</p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="change-0.7.0">
+<h2>0.7.0<a class="headerlink" href="#change-0.7.0" title="Permalink to this headline">¶</a></h2>
+Released: Mon Dec 10 2018<div class="section" id="change-0.7.0-bug">
+<h3>bug<a class="headerlink" href="#change-0.7.0-bug" title="Permalink to this headline">¶</a></h3>
+<ul class="simple">
+<li><p id="change-0.7.0-0"><span class="target" id="change-9a3359c7d4ed55a3ebb5dcca6d40e1e1"><strong>[bug] </strong></span>The <code class="docutils literal notranslate"><span class="pre">decorator</span></code> module is now used when creating function decorators
+within <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.cache_on_arguments" title="dogpile.cache.region.CacheRegion.cache_on_arguments"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CacheRegion.cache_on_arguments()</span></code></a> and
+<a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.cache_multi_on_arguments" title="dogpile.cache.region.CacheRegion.cache_multi_on_arguments"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CacheRegion.cache_multi_on_arguments()</span></code></a> so that function signatures
+are preserved. Pull request courtesy ankitpatel96.<p>Additionally adds a small performance enhancement which is to avoid
+internally creating a <code class="docutils literal notranslate"><span class="pre">@wraps()</span></code> decorator for the creator function on
+every get operation, by allowing the arguments to the creator be passed
+separately to <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion.get_or_create" title="dogpile.cache.region.CacheRegion.get_or_create"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CacheRegion.get_or_create()</span></code></a>.</p>
+<a class="changeset-link headerlink reference internal" href="#change-9a3359c7d4ed55a3ebb5dcca6d40e1e1">¶</a><p>References: <a class="reference external" href="https://github.com/sqlalchemy/dogpile.cache/issues/137">#137</a></p>
+</p>
+</li>
+<li><p id="change-0.7.0-1"><span class="target" id="change-fced77f26953f045d5a893bad9b324b2"><strong>[bug] [py3k] </strong></span>Fixed all Python 3.x deprecation warnings including
+<code class="docutils literal notranslate"><span class="pre">inspect.getargspec()</span></code>.<a class="changeset-link headerlink reference internal" href="#change-fced77f26953f045d5a893bad9b324b2">¶</a><p>References: <a class="reference external" href="https://github.com/sqlalchemy/dogpile.cache/issues/129">#129</a></p>
+</p>
+</li>
+</ul>
+</div>
+</div>
<div class="section" id="change-0.6.8">
<h2>0.6.8<a class="headerlink" href="#change-0.6.8" title="Permalink to this headline">¶</a></h2>
Released: Sat Nov 24 2018<ul class="simple">
@@ -828,6 +867,14 @@
<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.7.1">0.7.1</a><ul>
+<li><a class="reference internal" href="#change-0.7.1-bug">bug</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#change-0.7.0">0.7.0</a><ul>
+<li><a class="reference internal" href="#change-0.7.0-bug">bug</a></li>
+</ul>
+</li>
<li><a class="reference internal" href="#change-0.6.8">0.6.8</a></li>
<li><a class="reference internal" href="#change-0.6.7">0.6.7</a><ul>
<li><a class="reference internal" href="#change-0.6.7-bug">bug</a></li>
@@ -973,7 +1020,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/core_usage.html new/dogpile.cache-0.7.1/docs/core_usage.html
--- old/dogpile.cache-0.6.8/docs/core_usage.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/core_usage.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>dogpile Core — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -327,7 +327,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/front.html new/dogpile.cache-0.7.1/docs/front.html
--- old/dogpile.cache-0.6.8/docs/front.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/front.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Front Matter — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -120,7 +120,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/genindex.html new/dogpile.cache-0.7.1/docs/genindex.html
--- old/dogpile.cache-0.6.8/docs/genindex.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/genindex.html 2018-12-12 03:33:54.000000000 +0100
@@ -7,7 +7,7 @@
<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.8 documentation</title>
+ <title>Index — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -169,6 +169,8 @@
<li><a href="api.html#dogpile.util.NameRegistry.params.creator">(dogpile.util.NameRegistry parameter)</a>
</li>
</ul></li>
+ <li><a href="api.html#dogpile.cache.region.CacheRegion.get_or_create.params.creator_args">creator_args (dogpile.cache.region.CacheRegion.get_or_create parameter)</a>, <a href="usage.html#dogpile.cache.region.CacheRegion.get_or_create.params.creator_args">[1]</a>
+</li>
</ul></td>
</tr></table>
@@ -776,7 +778,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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/index.html new/dogpile.cache-0.7.1/docs/index.html
--- old/dogpile.cache-0.6.8/docs/index.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/index.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Welcome to dogpile.cache’s documentation! — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -96,6 +96,8 @@
</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.7.1">0.7.1</a></li>
+<li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.7.0">0.7.0</a></li>
<li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.6.8">0.6.8</a></li>
<li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.6.7">0.6.7</a></li>
<li class="toctree-l2"><a class="reference internal" href="changelog.html#change-0.6.6">0.6.6</a></li>
@@ -185,7 +187,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="#">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/py-modindex.html new/dogpile.cache-0.7.1/docs/py-modindex.html
--- old/dogpile.cache-0.6.8/docs/py-modindex.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/py-modindex.html 2018-12-12 03:33:55.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Python Module Index — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -139,7 +139,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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/recipes.html new/dogpile.cache-0.7.1/docs/recipes.html
--- old/dogpile.cache-0.6.8/docs/recipes.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/recipes.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Recipes — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -341,7 +341,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/search.html new/dogpile.cache-0.7.1/docs/search.html
--- old/dogpile.cache-0.6.8/docs/search.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/search.html 2018-12-12 03:33:55.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Search — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -36,7 +36,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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -87,7 +87,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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/docs/searchindex.js new/dogpile.cache-0.7.1/docs/searchindex.js
--- old/dogpile.cache-0.6.8/docs/searchindex.js 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/searchindex.js 2018-12-12 03:33:55.000000000 +0100
@@ -1 +1 @@
-Search.setIndex({docnames:["api","changelog","core_usage","front","index","recipes","usage"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:55},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,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,5],coerc:[0,1,6],coerce_string_conf:1,coercion:1,collect:0,collis:5,com:[1,3],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,1,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,excess:1,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,field: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],frequent:1,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,github:[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,had:1,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,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,1,3],hour:0,how:[0,2,6],howev:[0,1,2,5,6],http:[0,1,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,jul:1,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,5],learn:4,least:[0,2,5],leav:5,left:0,length:[0,1,6],length_conditional_mangl:0,lennox:1,less: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],organ:1,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: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],pluggabl:1,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:[1,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],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],regress:1,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,1,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,6],space:6,special:1,specif:[0,1,4,6],specifi:[0,1,5,6],sqlalchemi:[1,3,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,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],typeerror:1,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,5,6],usual:[1,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,1,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},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:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.intersphinx":1,sphinx:55},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,""],creator_args:[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],ankitpatel96:1,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,1],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:[1,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,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,5],coerc:[0,1,6],coerce_string_conf:1,coercion:1,collect:0,collis:5,com:[1,3],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,1,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],creator_arg:[0,1,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:[1,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:[1,2],everyth:5,exact:1,exampl:[0,1,4,5,6],excel:6,except:[1,4,5,6],exception:5,excess:1,execut:4,exist:[0,1,2,6],existing_valu:0,expand:1,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,field: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],frequent:1,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,getargspec:1,getlogg:6,getter:[0,1],git:1,github:[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,had:1,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,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,1,3],hour:0,how:[0,2,6],howev:[0,1,2,5,6],http:[0,1,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],implicitli:1,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],inspect:1,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,1,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,jul:1,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,6],kwarg_function_key_gener:[0,1,6],lambda:5,larger:0,last:[0,6],lastli:[0,6],later:[0,6],latter:0,lead:[1,5],learn:4,least:[0,2,5],leav:5,left:0,length:[0,1,6],length_conditional_mangl:0,lennox:1,less: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],organ:1,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: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,1,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],pluggabl:1,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:[1,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:[1,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],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],regress:1,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,1,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,1,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,1],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:[1,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,6],space:6,special:1,specif:[0,1,4,6],specifi:[0,1,5,6],sqlalchemi:[1,3,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,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],typeerror:1,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,5,6],usual:[1,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],warn:1,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,1,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},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.8/docs/usage.html new/dogpile.cache-0.7.1/docs/usage.html
--- old/dogpile.cache-0.6.8/docs/usage.html 2018-11-25 03:24:27.000000000 +0100
+++ new/dogpile.cache-0.7.1/docs/usage.html 2018-12-12 03:33:54.000000000 +0100
@@ -6,7 +6,7 @@
<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.8 documentation</title>
+ <title>Usage Guide — dogpile.cache 0.7.1 documentation</title>
<link rel="stylesheet" href="_static/nature_override.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="_static/changelog.css" />
@@ -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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
@@ -432,7 +432,7 @@
<dl class="method">
<dt>
-<code class="descclassname">CacheRegion.</code><code class="descname">get_or_create</code><span class="sig-paren">(</span><em>key</em>, <em>creator</em>, <em>expiration_time=None</em>, <em>should_cache_fn=None</em><span class="sig-paren">)</span></dt>
+<code class="descclassname">CacheRegion.</code><code class="descname">get_or_create</code><span class="sig-paren">(</span><em>key</em>, <em>creator</em>, <em>expiration_time=None</em>, <em>should_cache_fn=None</em>, <em>creator_args=None</em><span class="sig-paren">)</span></dt>
<dd><p>Return a cached value based on the given key.</p>
<p>If the value does not exist or is considered to be expired
based on its creation time, the given
@@ -467,6 +467,12 @@
be of any type recognized by the backend or by the key_mangler
function, if present.</li>
<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.creator"></span><strong>creator</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.creator">¶</a> – function which creates a new value.</li>
+<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.creator_args"></span><strong>creator_args</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.creator_args">¶</a> – <p>optional tuple of (args, kwargs) that will be
+passed to the creator function if present.</p>
+<div class="versionadded">
+<p><span class="versionmodified">New in version 0.7.0.</span></p>
+</div>
+</li>
<li><span class="target" id="dogpile.cache.region.CacheRegion.get_or_create.params.expiration_time"></span><strong>expiration_time</strong><a class="paramlink headerlink reference internal" href="#dogpile.cache.region.CacheRegion.get_or_create.params.expiration_time">¶</a> – optional expiration time which will overide
the expiration time already configured on this <a class="reference internal" href="api.html#dogpile.cache.region.CacheRegion" title="dogpile.cache.region.CacheRegion"><code class="xref py py-class docutils literal notranslate"><span class="pre">CacheRegion</span></code></a>
if not None. To set no expiration, use the value -1.</li>
@@ -901,7 +907,7 @@
<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.8 documentation</a> »</li>
+ <li class="nav-item nav-item-0"><a href="index.html">dogpile.cache 0.7.1 documentation</a> »</li>
</ul>
</div>
<div class="footer" role="contentinfo">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile/__init__.py new/dogpile.cache-0.7.1/dogpile/__init__.py
--- old/dogpile.cache-0.6.8/dogpile/__init__.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile/__init__.py 2018-12-12 03:33:43.000000000 +0100
@@ -1,4 +1,4 @@
-__version__ = '0.6.8'
+__version__ = '0.7.1'
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.8/dogpile/cache/region.py new/dogpile.cache-0.7.1/dogpile/cache/region.py
--- old/dogpile.cache-0.6.8/dogpile/cache/region.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile/cache/region.py 2018-12-12 03:33:43.000000000 +0100
@@ -10,8 +10,9 @@
import time
import datetime
from numbers import Number
-from functools import wraps
+from functools import wraps, partial
import threading
+from decorator import decorate
_backend_loader = PluginLoader("dogpile.cache")
register_backend = _backend_loader.register
@@ -188,7 +189,7 @@
class CacheRegion(object):
- """A front end to a particular cache backend.
+ r"""A front end to a particular cache backend.
:param name: Optional, a string name for the region.
This isn't used internally
@@ -743,7 +744,8 @@
]
def get_or_create(
- self, key, creator, expiration_time=None, should_cache_fn=None):
+ self, key, creator, expiration_time=None, should_cache_fn=None,
+ creator_args=None):
"""Return a cached value based on the given key.
If the value does not exist or is considered to be expired
@@ -779,6 +781,11 @@
:param creator: function which creates a new value.
+ :param creator_args: optional tuple of (args, kwargs) that will be
+ passed to the creator function if present.
+
+ .. versionadded:: 0.7.0
+
:param expiration_time: optional expiration time which will overide
the expiration time already configured on this :class:`.CacheRegion`
if not None. To set no expiration, use the value -1.
@@ -828,7 +835,10 @@
return value.payload, ct
def gen_value():
- created_value = creator()
+ if creator_args:
+ created_value = creator(*creator_args[0], **creator_args[1])
+ else:
+ created_value = creator()
value = self._value(created_value)
if not should_cache_fn or \
@@ -851,8 +861,13 @@
if self.async_creation_runner:
def async_creator(mutex):
- return self.async_creation_runner(
- self, orig_key, creator, mutex)
+ if creator_args:
+ @wraps(creator)
+ def go():
+ return creator(*creator_args[0], **creator_args[1])
+ else:
+ go = creator
+ return self.async_creation_runner(self, orig_key, go, mutex)
else:
async_creator = None
@@ -1248,26 +1263,31 @@
if function_key_generator is None:
function_key_generator = self.function_key_generator
- def decorator(fn):
+ def get_or_create_for_user_func(key_generator, user_func, *arg, **kw):
+ key = key_generator(*arg, **kw)
+
+ timeout = expiration_time() if expiration_time_is_callable \
+ else expiration_time
+ return self.get_or_create(key, user_func, timeout,
+ should_cache_fn, (arg, kw))
+
+ def cache_decorator(user_func):
if to_str is compat.string_type:
# backwards compatible
- key_generator = function_key_generator(namespace, fn)
+ key_generator = function_key_generator(namespace, user_func)
else:
key_generator = function_key_generator(
- namespace, fn,
+ namespace, user_func,
to_str=to_str)
- @wraps(fn)
- def decorate(*arg, **kw):
+ def refresh(*arg, **kw):
+ """
+ Like invalidate, but regenerates the value instead
+ """
key = key_generator(*arg, **kw)
-
- @wraps(fn)
- def creator():
- return fn(*arg, **kw)
- timeout = expiration_time() if expiration_time_is_callable \
- else expiration_time
- return self.get_or_create(key, creator, timeout,
- should_cache_fn)
+ value = user_func(*arg, **kw)
+ self.set(key, value)
+ return value
def invalidate(*arg, **kw):
key = key_generator(*arg, **kw)
@@ -1281,20 +1301,18 @@
key = key_generator(*arg, **kw)
return self.get(key)
- def refresh(*arg, **kw):
- key = key_generator(*arg, **kw)
- value = fn(*arg, **kw)
- self.set(key, value)
- return value
+ user_func.set = set_
+ user_func.invalidate = invalidate
+ user_func.get = get
+ user_func.refresh = refresh
+ user_func.original = user_func
- decorate.set = set_
- decorate.invalidate = invalidate
- decorate.refresh = refresh
- decorate.get = get
- decorate.original = fn
+ # Use `decorate` to preserve the signature of :param:`user_func`.
- return decorate
- return decorator
+ return decorate(user_func, partial(
+ get_or_create_for_user_func, key_generator))
+
+ return cache_decorator
def cache_multi_on_arguments(
self, namespace=None, expiration_time=None,
@@ -1422,50 +1440,49 @@
if function_multi_key_generator is None:
function_multi_key_generator = self.function_multi_key_generator
- def decorator(fn):
- key_generator = function_multi_key_generator(
- namespace, fn,
- to_str=to_str)
-
- @wraps(fn)
- def decorate(*arg, **kw):
- cache_keys = arg
- keys = key_generator(*arg, **kw)
- key_lookup = dict(zip(keys, cache_keys))
-
- @wraps(fn)
- def creator(*keys_to_create):
- return fn(*[key_lookup[k] for k in keys_to_create])
-
- timeout = expiration_time() if expiration_time_is_callable \
- else expiration_time
+ def get_or_create_for_user_func(key_generator, user_func, *arg, **kw):
+ cache_keys = arg
+ keys = key_generator(*arg, **kw)
+ key_lookup = dict(zip(keys, cache_keys))
+
+ @wraps(user_func)
+ def creator(*keys_to_create):
+ return user_func(*[key_lookup[k] for k in keys_to_create])
+
+ timeout = expiration_time() if expiration_time_is_callable \
+ else expiration_time
+
+ if asdict:
+ def dict_create(*keys):
+ d_values = creator(*keys)
+ return [
+ d_values.get(key_lookup[k], NO_VALUE)
+ for k in keys]
+
+ def wrap_cache_fn(value):
+ if value is NO_VALUE:
+ return False
+ elif not should_cache_fn:
+ return True
+ else:
+ return should_cache_fn(value)
+
+ result = self.get_or_create_multi(
+ keys, dict_create, timeout, wrap_cache_fn)
+ result = dict(
+ (k, v) for k, v in zip(cache_keys, result)
+ if v is not NO_VALUE)
+ else:
+ result = self.get_or_create_multi(
+ keys, creator, timeout,
+ should_cache_fn)
- if asdict:
- def dict_create(*keys):
- d_values = creator(*keys)
- return [
- d_values.get(key_lookup[k], NO_VALUE)
- for k in keys]
-
- def wrap_cache_fn(value):
- if value is NO_VALUE:
- return False
- elif not should_cache_fn:
- return True
- else:
- return should_cache_fn(value)
-
- result = self.get_or_create_multi(
- keys, dict_create, timeout, wrap_cache_fn)
- result = dict(
- (k, v) for k, v in zip(cache_keys, result)
- if v is not NO_VALUE)
- else:
- result = self.get_or_create_multi(
- keys, creator, timeout,
- should_cache_fn)
+ return result
- return result
+ def cache_decorator(user_func):
+ key_generator = function_multi_key_generator(
+ namespace, user_func,
+ to_str=to_str)
def invalidate(*arg):
keys = key_generator(*arg)
@@ -1486,7 +1503,7 @@
def refresh(*arg):
keys = key_generator(*arg)
- values = fn(*arg)
+ values = user_func(*arg)
if asdict:
self.set_multi(
dict(zip(keys, [values[a] for a in arg]))
@@ -1498,13 +1515,18 @@
)
return values
- decorate.set = set_
- decorate.invalidate = invalidate
- decorate.refresh = refresh
- decorate.get = get
+ user_func.set = set_
+ user_func.invalidate = invalidate
+ user_func.refresh = refresh
+ user_func.get = get
+
+ # Use `decorate` to preserve the signature of :param:`user_func`.
+
+ return decorate(user_func, partial(get_or_create_for_user_func, key_generator))
+
+ return cache_decorator
+
- return decorate
- return decorator
def make_region(*arg, **kw):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile/cache/util.py new/dogpile.cache-0.7.1/dogpile/cache/util.py
--- old/dogpile.cache-0.6.8/dogpile/cache/util.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile/cache/util.py 2018-12-12 03:33:43.000000000 +0100
@@ -1,5 +1,4 @@
from hashlib import sha1
-import inspect
from ..util import compat
from ..util import langhelpers
@@ -28,7 +27,7 @@
else:
namespace = '%s:%s|%s' % (fn.__module__, fn.__name__, namespace)
- args = inspect.getargspec(fn)
+ args = compat.inspect_getargspec(fn)
has_self = args[0] and args[0][0] in ('self', 'cls')
def generate_key(*args, **kw):
@@ -50,7 +49,7 @@
else:
namespace = '%s:%s|%s' % (fn.__module__, fn.__name__, namespace)
- args = inspect.getargspec(fn)
+ args = compat.inspect_getargspec(fn)
has_self = args[0] and args[0][0] in ('self', 'cls')
def generate_keys(*args, **kw):
@@ -88,7 +87,7 @@
else:
namespace = '%s:%s|%s' % (fn.__module__, fn.__name__, namespace)
- argspec = inspect.getargspec(fn)
+ argspec = compat.inspect_getargspec(fn)
default_list = list(argspec.defaults or [])
# Reverse the list, as we want to compare the argspec by negative index,
# meaning default_list[0] should be args[-1], which works well with
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile/util/compat.py new/dogpile.cache-0.7.1/dogpile/util/compat.py
--- old/dogpile.cache-0.6.8/dogpile/util/compat.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile/util/compat.py 2018-12-12 03:33:43.000000000 +0100
@@ -1,65 +1,87 @@
-import sys
-
-py2k = sys.version_info < (3, 0)
-py3k = sys.version_info >= (3, 0)
-py32 = sys.version_info >= (3, 2)
-py27 = sys.version_info >= (2, 7)
-jython = sys.platform.startswith('java')
-win32 = sys.platform.startswith('win')
-
-try:
- import threading
-except ImportError:
- import dummy_threading as threading # noqa
-
-
-if py3k: # pragma: no cover
- string_types = str,
- text_type = str
- string_type = str
-
- if py32:
- callable = callable
- else:
- def callable(fn):
- return hasattr(fn, '__call__')
-
- def u(s):
- return s
-
- def ue(s):
- return s
-
- import configparser
- import io
- import _thread as thread
-else:
- string_types = basestring,
- text_type = unicode
- string_type = str
-
- def u(s):
- return unicode(s, "utf-8")
-
- def ue(s):
- return unicode(s, "unicode_escape")
-
- import ConfigParser as configparser # noqa
- import StringIO as io # noqa
-
- callable = callable # noqa
- import thread # noqa
-
-
-if py3k or jython:
- import pickle
-else:
- import cPickle as pickle # noqa
-
-
-def timedelta_total_seconds(td):
- if py27:
- return td.total_seconds()
- else:
- return (td.microseconds + (
- td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
+import sys
+
+py2k = sys.version_info < (3, 0)
+py3k = sys.version_info >= (3, 0)
+py32 = sys.version_info >= (3, 2)
+py27 = sys.version_info >= (2, 7)
+jython = sys.platform.startswith('java')
+win32 = sys.platform.startswith('win')
+
+try:
+ import threading
+except ImportError:
+ import dummy_threading as threading # noqa
+
+
+if py3k: # pragma: no cover
+ string_types = str,
+ text_type = str
+ string_type = str
+
+ if py32:
+ callable = callable
+ else:
+ def callable(fn):
+ return hasattr(fn, '__call__')
+
+ def u(s):
+ return s
+
+ def ue(s):
+ return s
+
+ import configparser
+ import io
+ import _thread as thread
+else:
+ string_types = basestring,
+ text_type = unicode
+ string_type = str
+
+ def u(s):
+ return unicode(s, "utf-8")
+
+ def ue(s):
+ return unicode(s, "unicode_escape")
+
+ import ConfigParser as configparser # noqa
+ import StringIO as io # noqa
+
+ callable = callable # noqa
+ import thread # noqa
+
+
+if py3k:
+ import collections
+ ArgSpec = collections.namedtuple(
+ "ArgSpec",
+ ["args", "varargs", "keywords", "defaults"])
+
+ from inspect import getfullargspec as inspect_getfullargspec
+
+ def inspect_getargspec(func):
+ return ArgSpec(
+ *inspect_getfullargspec(func)[0:4]
+ )
+else:
+ from inspect import getargspec as inspect_getargspec # noqa
+
+if py3k or jython:
+ import pickle
+else:
+ import cPickle as pickle # noqa
+
+if py3k:
+ def read_config_file(config, fileobj):
+ return config.read_file(fileobj)
+else:
+ def read_config_file(config, fileobj):
+ return config.readfp(fileobj)
+
+
+def timedelta_total_seconds(td):
+ if py27:
+ return td.total_seconds()
+ else:
+ return (td.microseconds + (
+ td.seconds + td.days * 24 * 3600) * 1e6) / 1e6
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile/util/nameregistry.py new/dogpile.cache-0.7.1/dogpile/util/nameregistry.py
--- old/dogpile.cache-0.6.8/dogpile/util/nameregistry.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile/util/nameregistry.py 2018-12-12 03:33:43.000000000 +0100
@@ -50,7 +50,7 @@
self.creator = creator
def get(self, identifier, *args, **kw):
- """Get and possibly create the value.
+ r"""Get and possibly create the value.
:param identifier: Hash key for the value.
If the creation function is called, this identifier
@@ -75,10 +75,12 @@
if identifier in self._values:
return self._values[identifier]
else:
- self._values[identifier] = value = self.creator(identifier, *args, **kw)
+ self._values[identifier] = value = self.creator(
+ identifier, *args, **kw)
return value
except KeyError:
- self._values[identifier] = value = self.creator(identifier, *args, **kw)
+ self._values[identifier] = value = self.creator(
+ identifier, *args, **kw)
return value
finally:
self._mutex.release()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile.cache.egg-info/PKG-INFO new/dogpile.cache-0.7.1/dogpile.cache.egg-info/PKG-INFO
--- old/dogpile.cache-0.6.8/dogpile.cache.egg-info/PKG-INFO 2018-11-25 03:24:28.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile.cache.egg-info/PKG-INFO 2018-12-12 03:33:55.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 1.1
Name: dogpile.cache
-Version: 0.6.8
+Version: 0.7.1
Summary: A caching front-end based on the Dogpile lock.
Home-page: https://github.com/sqlalchemy/dogpile.cache
Author: Mike Bayer
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile.cache.egg-info/SOURCES.txt new/dogpile.cache-0.7.1/dogpile.cache.egg-info/SOURCES.txt
--- old/dogpile.cache-0.6.8/dogpile.cache.egg-info/SOURCES.txt 2018-11-25 03:24:28.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile.cache.egg-info/SOURCES.txt 2018-12-12 03:33:55.000000000 +0100
@@ -72,6 +72,7 @@
dogpile.cache.egg-info/dependency_links.txt
dogpile.cache.egg-info/entry_points.txt
dogpile.cache.egg-info/not-zip-safe
+dogpile.cache.egg-info/requires.txt
dogpile.cache.egg-info/top_level.txt
dogpile/cache/__init__.py
dogpile/cache/api.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/dogpile.cache.egg-info/requires.txt new/dogpile.cache-0.7.1/dogpile.cache.egg-info/requires.txt
--- old/dogpile.cache-0.6.8/dogpile.cache.egg-info/requires.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/dogpile.cache-0.7.1/dogpile.cache.egg-info/requires.txt 2018-12-12 03:33:55.000000000 +0100
@@ -0,0 +1 @@
+decorator
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/setup.cfg new/dogpile.cache-0.7.1/setup.cfg
--- old/dogpile.cache-0.6.8/setup.cfg 2018-11-25 03:24:28.000000000 +0100
+++ new/dogpile.cache-0.7.1/setup.cfg 2018-12-12 03:33:55.000000000 +0100
@@ -16,6 +16,8 @@
exclude = docs/*
[tool:pytest]
-addopts = --tb native -v -r fxX -p no:warnings -p no:logging
+addopts = --tb native -v -r fxX -p no:logging
python_files = tests/*test_*.py
+filterwarnings =
+ error
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/setup.py new/dogpile.cache-0.7.1/setup.py
--- old/dogpile.cache-0.6.8/setup.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/setup.py 2018-12-12 03:33:43.000000000 +0100
@@ -58,6 +58,7 @@
dogpile.cache = dogpile.cache.plugins.mako_cache:MakoPlugin
""",
zip_safe=False,
+ install_requires=['decorator'],
tests_require=['pytest', 'pytest-cov', 'mock', 'Mako'],
cmdclass={'test': PyTest},
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/tests/cache/test_decorator.py new/dogpile.cache-0.7.1/tests/cache/test_decorator.py
--- old/dogpile.cache-0.6.8/tests/cache/test_decorator.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/tests/cache/test_decorator.py 2018-12-12 03:33:43.000000000 +0100
@@ -586,3 +586,27 @@
generate.set({7: 18, 10: 15})
eq_(generate(2, 7, 10), ['2 5', 18, 15])
+
+ def test_cache_preserve_sig(self):
+ reg = self._region()
+
+ def func(a, b, c=True, *args, **kwargs):
+ return None
+
+ signature = compat.inspect_getargspec(func)
+ cached_func = reg.cache_on_arguments()(func)
+ cached_signature = compat.inspect_getargspec(cached_func)
+
+ self.assertEqual(signature, cached_signature)
+
+ def test_cache_multi_preserve_sig(self):
+ reg = self._region()
+
+ def func(a, b, c=True, *args, **kwargs):
+ return None, None
+
+ signature = compat.inspect_getargspec(func)
+ cached_func = reg.cache_multi_on_arguments()(func)
+ cached_signature = compat.inspect_getargspec(cached_func)
+
+ self.assertEqual(signature, cached_signature)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/tests/cache/test_region.py new/dogpile.cache-0.7.1/tests/cache/test_region.py
--- old/dogpile.cache-0.6.8/tests/cache/test_region.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/tests/cache/test_region.py 2018-12-12 03:33:43.000000000 +0100
@@ -6,10 +6,12 @@
from dogpile.cache.proxy import ProxyBackend
from dogpile.cache.region import _backend_loader
from dogpile.cache.region import RegionInvalidationStrategy
+from dogpile.util import compat
from . import eq_, is_, assert_raises_message, io, configparser
import time
import datetime
import itertools
+import mock
from collections import defaultdict
from ._fixtures import MockBackend
@@ -57,7 +59,7 @@
my_region = make_region()
config = configparser.ConfigParser()
- config.readfp(io.StringIO(my_conf))
+ compat.read_config_file(config, io.StringIO(my_conf))
my_region.configure_from_config(
dict(config.items('xyz')), 'cache.example.')
@@ -527,6 +529,79 @@
return reg
+class AsyncCreatorTest(TestCase):
+ def _fixture(self):
+
+ def async_creation_runner(cache, somekey, creator, mutex):
+ try:
+ value = creator()
+ cache.set(somekey, value)
+ finally:
+ mutex.release()
+
+ return mock.Mock(side_effect=async_creation_runner)
+
+ def test_get_or_create(self):
+ acr = self._fixture()
+ reg = CacheRegion(async_creation_runner=acr)
+ reg.configure("mock", expiration_time=.2)
+
+ def some_value():
+ return "some value"
+
+ def some_new_value():
+ return "some new value"
+
+ eq_(reg.get_or_create("some key", some_value), "some value")
+ time.sleep(.5)
+ eq_(
+ reg.get_or_create("some key", some_new_value),
+ "some value")
+ eq_(
+ reg.get_or_create("some key", some_new_value),
+ "some new value")
+ eq_(
+ acr.mock_calls, [
+ mock.call(reg, "some key",
+ some_new_value, reg._mutex("some key"))
+ ])
+
+ def test_fn_decorator(self):
+ acr = self._fixture()
+ reg = CacheRegion(async_creation_runner=acr)
+ reg.configure("mock", expiration_time=5)
+
+ canary = mock.Mock()
+
+ @reg.cache_on_arguments()
+ def go(x, y):
+ canary(x, y)
+ return x + y
+
+ eq_(go(1, 2), 3)
+ eq_(go(1, 2), 3)
+
+ eq_(canary.mock_calls, [mock.call(1, 2)])
+
+ eq_(go(3, 4), 7)
+
+ eq_(canary.mock_calls, [mock.call(1, 2), mock.call(3, 4)])
+
+ reg.invalidate(hard=False)
+
+ eq_(go(1, 2), 3)
+
+ eq_(canary.mock_calls, [
+ mock.call(1, 2), mock.call(3, 4), mock.call(1, 2)])
+
+ eq_(
+ acr.mock_calls, [
+ mock.call(reg, "tests.cache.test_region:go|1 2",
+ mock.ANY,
+ reg._mutex("tests.cache.test_region:go|1 2"))
+ ])
+
+
class ProxyBackendTest(TestCase):
class GetCounterProxy(ProxyBackend):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dogpile.cache-0.6.8/tests/test_lock.py new/dogpile.cache-0.7.1/tests/test_lock.py
--- old/dogpile.cache-0.6.8/tests/test_lock.py 2018-11-25 03:24:16.000000000 +0100
+++ new/dogpile.cache-0.7.1/tests/test_lock.py 2018-12-12 03:33:43.000000000 +0100
@@ -304,8 +304,8 @@
with Lock(
mutex, creator, value_and_created_fn, expiration_time
) as entered_value:
- self.assertEquals("the value", entered_value)
+ self.assertEqual("the value", entered_value)
- self.assertEquals(
+ self.assertEqual(
value_and_created_fn.call_count, 1
)