diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-06-13 13:45:08 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2014-06-13 13:49:12 -0400 |
commit | fdbf2c8e78621ee5ba3f8b319569ea2164431f2b (patch) | |
tree | 51a7acfe8e5a395b4f7f7684bee9eb3b6497b7d3 | |
parent | 99ba222c385dc885f27d6a69b10453b1797913ca (diff) | |
parent | b052a62b90325ed912a7953108a8930e285e919c (diff) | |
download | dogpile-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.rst | 9 | ||||
-rw-r--r-- | dogpile/cache/region.py | 5 | ||||
-rw-r--r-- | tests/cache/_fixtures.py | 9 |
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'} |