diff options
author | Sean Reifschneider <jafo00@gmail.com> | 2023-04-15 18:10:58 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-15 18:10:58 -0600 |
commit | 6daa72751273c3a4bde9319adc9d0cc91ff32b31 (patch) | |
tree | a7bfab48f6d82ae83cbc6aafae8aa4564ad88440 | |
parent | 511604b5e829962b1dc40132cd84ea629e141c32 (diff) | |
parent | f6672ee3139ed64f6a97e50e87f4431356cf4a91 (diff) | |
download | python-memcached-6daa72751273c3a4bde9319adc9d0cc91ff32b31.tar.gz |
Merge pull request #158 from samupl/support_default
Add support for default value in get()
-rw-r--r-- | memcache.py | 8 | ||||
-rw-r--r-- | tests/test_memcache.py | 14 |
2 files changed, 18 insertions, 4 deletions
diff --git a/memcache.py b/memcache.py index 06f1efb..09cac56 100644 --- a/memcache.py +++ b/memcache.py @@ -1064,7 +1064,7 @@ class Client(threading.local): server.mark_dead(msg) return 0 - def _get(self, cmd, key): + def _get(self, cmd, key, default=None): key = self._encode_key(key) if self.do_check_key: self.check_key(key) @@ -1093,7 +1093,7 @@ class Client(threading.local): ) if not rkey: - return None + return default try: value = self._recv_value(server, flags, rlen) finally: @@ -1118,12 +1118,12 @@ class Client(threading.local): server.mark_dead(msg) return None - def get(self, key): + def get(self, key, default=None): '''Retrieves a key from the memcache. @return: The value or None. ''' - return self._get('get', key) + return self._get('get', key, default) def gets(self, key): '''Retrieves a key from the memcache. Used in conjunction with 'cas'. diff --git a/tests/test_memcache.py b/tests/test_memcache.py index 621ac5c..d0f4857 100644 --- a/tests/test_memcache.py +++ b/tests/test_memcache.py @@ -54,6 +54,20 @@ class TestMemcache(unittest.TestCase): self.assertEqual(result, True) self.assertEqual(self.mc.get("long"), None) + def test_default(self): + key = "default" + default = object() + result = self.mc.get(key, default=default) + self.assertEqual(result, default) + + self.mc.set("default", None) + result = self.mc.get(key, default=default) + self.assertIsNone(result) + + self.mc.set("default", 123) + result = self.mc.get(key, default=default) + self.assertEqual(result, 123) + @mock.patch.object(_Host, 'send_cmd') @mock.patch.object(_Host, 'readline') def test_touch(self, mock_readline, mock_send_cmd): |