Skip to content

Commit ddb47b4

Browse files
authored
Merge pull request #523 from basho/features/lrb/gh-405
Add a workaround for Python bug 19542
2 parents 45cd074 + b27163d commit ddb47b4

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

riak/client/__init__.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,9 @@ def bucket(self, name, bucket_type='default'):
275275
raise TypeError('bucket_type must be a string '
276276
'or riak.bucket.BucketType')
277277

278-
return self._buckets.setdefault((bucket_type, name),
279-
RiakBucket(self, name, bucket_type))
278+
b = RiakBucket(self, name, bucket_type)
279+
return self._setdefault_handle_none(
280+
self._buckets, (bucket_type, name), b)
280281

281282
def bucket_type(self, name):
282283
"""
@@ -291,12 +292,9 @@ def bucket_type(self, name):
291292
if not isinstance(name, string_types):
292293
raise TypeError('BucketType name must be a string')
293294

294-
if name in self._bucket_types:
295-
return self._bucket_types[name]
296-
else:
297-
btype = BucketType(self, name)
298-
self._bucket_types[name] = btype
299-
return btype
295+
btype = BucketType(self, name)
296+
return self._setdefault_handle_none(
297+
self._bucket_types, name, btype)
300298

301299
def table(self, name):
302300
"""
@@ -390,6 +388,16 @@ def _error_rate(node):
390388
else:
391389
return random.choice(good)
392390

391+
def _setdefault_handle_none(self, wvdict, key, value):
392+
# TODO FIXME FUTURE
393+
# This is a workaround for Python issue 19542
394+
# http://bugs.python.org/issue19542
395+
rv = wvdict.setdefault(key, value)
396+
if rv is None:
397+
return value
398+
else:
399+
return rv
400+
393401
@lazy_property
394402
def _multiget_pool(self):
395403
if self._multiget_pool_size:

0 commit comments

Comments
 (0)