summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2014-06-13 13:45:08 -0400
committerMike Bayer <mike_mp@zzzcomputing.com>2014-06-13 13:49:12 -0400
commitfdbf2c8e78621ee5ba3f8b319569ea2164431f2b (patch)
tree51a7acfe8e5a395b4f7f7684bee9eb3b6497b7d3
parent99ba222c385dc885f27d6a69b10453b1797913ca (diff)
parentb052a62b90325ed912a7953108a8930e285e919c (diff)
downloaddogpile-cache-fdbf2c8e78621ee5ba3f8b319569ea2164431f2b.tar.gz
Merge branch 'empty-multi' of https://bitbucket.org/wichert/dogpile.cache/branch/empty-multi into pr/20
Fixes #58
-rw-r--r--docs/build/changelog.rst9
-rw-r--r--dogpile/cache/region.py5
-rw-r--r--tests/cache/_fixtures.py9
3 files changed, 23 insertions, 0 deletions
diff --git a/docs/build/changelog.rst b/docs/build/changelog.rst
index 25f32d9..1d33bf4 100644
--- a/docs/build/changelog.rst
+++ b/docs/build/changelog.rst
@@ -5,6 +5,15 @@ Changelog
:version: 0.5.4
.. change::
+ :tags: bug
+ :tickets: 58
+ :pullreq: 20
+
+ Fixed bug where calling :meth:`.CacheRegion.get_multi` or
+ :meth:`.CacheRegion.set_multi` with an empty list would cause failures
+ based on backend. Pull request courtesy Wichert Akkerman.
+
+ .. change::
:tags: feature
:pullreq: 17
diff --git a/dogpile/cache/region.py b/dogpile/cache/region.py
index e7d152b..39cfd0a 100644
--- a/dogpile/cache/region.py
+++ b/dogpile/cache/region.py
@@ -503,6 +503,9 @@ class CacheRegion(object):
.. versionadded:: 0.5.0
"""
+ if not keys:
+ return []
+
if self.key_mangler:
keys = list(map(lambda key: self.key_mangler(key), keys))
@@ -781,6 +784,8 @@ class CacheRegion(object):
.. versionadded:: 0.5.0
"""
+ if not mapping:
+ return
if self.key_mangler:
mapping = dict((self.key_mangler(k), self._value(v))
diff --git a/tests/cache/_fixtures.py b/tests/cache/_fixtures.py
index 0b6e2a0..f12c366 100644
--- a/tests/cache/_fixtures.py
+++ b/tests/cache/_fixtures.py
@@ -101,6 +101,10 @@ class _GenericBackendTest(_GenericBackendFixture, TestCase):
eq_(values['key2'], reg.get('key2'))
eq_(values['key3'], reg.get('key3'))
+ def test_region_set_zero_multiple_values(self):
+ reg = self._region()
+ reg.set_multi({})
+
def test_region_get_multiple_values(self):
reg = self._region()
key1 = 'value1'
@@ -126,6 +130,11 @@ class _GenericBackendTest(_GenericBackendFixture, TestCase):
]
)
+ def test_region_get_empty_multiple(self):
+ reg = self._region()
+ reg_values = reg.get_multi([])
+ eq_(reg_values, [])
+
def test_region_delete_multiple(self):
reg = self._region()
values = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'}