Skip to content

Commit bbf8cc5

Browse files
committed
__getitem__ now raises a KeyError when a key doesn't exist
1 parent d63088a commit bbf8cc5

File tree

4 files changed

+11
-8
lines changed

4 files changed

+11
-8
lines changed

CHANGES

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
* 2.2.5 (in development)
22
* Support Jython, fixing #97. Thanks to Adam Vandenberg for the patch.
3+
* Using __getitem__ now properly raises a KeyError when the key is not
4+
found. Thanks Ionuț Arțăriși for the patch.
35
* 2.2.4
46
* WARNING: Potential backwards incompatible change - Changed order of
57
parameters of ZREVRANGEBYSCORE to match those of the actual Redis command.

redis/client.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -452,9 +452,9 @@ def __getitem__(self, name):
452452
Return the value at key ``name``, raises a KeyError if the key
453453
doesn't exist.
454454
"""
455-
_name = self.get(name)
456-
if _name:
457-
return _name
455+
value = self.get(name)
456+
if value:
457+
return value
458458
else:
459459
raise KeyError(name)
460460

tests/lock.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ def test_lock(self):
1717
self.assert_(lock.acquire())
1818
self.assertEquals(self.client['foo'], str(Lock.LOCK_FOREVER))
1919
lock.release()
20-
self.assertEquals(self.client['foo'], None)
20+
self.assertEquals(self.client.get('foo'), None)
2121

2222
def test_competing_locks(self):
2323
lock1 = self.client.lock('foo')
@@ -50,7 +50,7 @@ def test_non_blocking(self):
5050
def test_context_manager(self):
5151
with self.client.lock('foo'):
5252
self.assertEquals(self.client['foo'], str(Lock.LOCK_FOREVER))
53-
self.assertEquals(self.client['foo'], None)
53+
self.assertEquals(self.client.get('foo'), None)
5454

5555
def test_float_timeout(self):
5656
lock1 = self.client.lock('foo', timeout=1.5)

tests/server_commands.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ def test_get_and_set(self):
4141
def test_getitem_and_setitem(self):
4242
self.client['a'] = 'bar'
4343
self.assertEquals(self.client['a'], 'bar')
44+
self.assertRaises(KeyError, self.client.__getitem__, 'b')
4445

4546
def test_delete(self):
4647
self.assertEquals(self.client.delete('a'), False)
@@ -50,7 +51,7 @@ def test_delete(self):
5051
def test_delitem(self):
5152
self.client['a'] = 'foo'
5253
del self.client['a']
53-
self.assertEquals(self.client['a'], None)
54+
self.assertEquals(self.client.get('a'), None)
5455

5556
def test_config_get(self):
5657
data = self.client.config_get()
@@ -181,7 +182,7 @@ def test_msetnx(self):
181182
self.assert_(not self.client.msetnx(d2))
182183
for k,v in d.iteritems():
183184
self.assertEquals(self.client[k], v)
184-
self.assertEquals(self.client['d'], None)
185+
self.assertEquals(self.client.get('d'), None)
185186

186187
def test_randomkey(self):
187188
self.assertEquals(self.client.randomkey(), None)
@@ -193,7 +194,7 @@ def test_randomkey(self):
193194
def test_rename(self):
194195
self.client['a'] = '1'
195196
self.assert_(self.client.rename('a', 'b'))
196-
self.assertEquals(self.client['a'], None)
197+
self.assertEquals(self.client.get('a'), None)
197198
self.assertEquals(self.client['b'], '1')
198199

199200
def test_renamenx(self):

0 commit comments

Comments
 (0)