Merge "Fix recursive_keypairs output"
This commit is contained in:
@@ -482,7 +482,13 @@ def _flatten_metadata(metadata):
|
|||||||
to unicode strings.
|
to unicode strings.
|
||||||
"""
|
"""
|
||||||
if metadata:
|
if metadata:
|
||||||
return dict((k, unicode(v))
|
# After changing recursive_keypairs` output we need to keep
|
||||||
|
# flattening output unchanged.
|
||||||
|
# Example: recursive_keypairs({'a': {'b':{'c':'d'}}}, '.')
|
||||||
|
# output before: a.b:c=d
|
||||||
|
# output now: a.b.c=d
|
||||||
|
# So to keep the first variant just replace all dots except the first
|
||||||
|
return dict((k.replace('.', ':').replace(':', '.', 1), unicode(v))
|
||||||
for k, v in utils.recursive_keypairs(metadata,
|
for k, v in utils.recursive_keypairs(metadata,
|
||||||
separator='.')
|
separator='.')
|
||||||
if type(v) is not set)
|
if type(v) is not set)
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ def recursive_keypairs(d, separator=':'):
|
|||||||
"""
|
"""
|
||||||
for name, value in sorted(d.iteritems()):
|
for name, value in sorted(d.iteritems()):
|
||||||
if isinstance(value, dict):
|
if isinstance(value, dict):
|
||||||
for subname, subvalue in recursive_keypairs(value):
|
for subname, subvalue in recursive_keypairs(value, separator):
|
||||||
yield ('%s%s%s' % (name, separator, subname), subvalue)
|
yield ('%s%s%s' % (name, separator, subname), subvalue)
|
||||||
elif isinstance(value, (tuple, list)):
|
elif isinstance(value, (tuple, list)):
|
||||||
# When doing a pair of JSON encode/decode operations to the tuple,
|
# When doing a pair of JSON encode/decode operations to the tuple,
|
||||||
|
|||||||
Reference in New Issue
Block a user