summaryrefslogtreecommitdiff
path: root/amqp_codegen.py
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-07-05 16:40:31 +0100
committerSimon MacMullen <simon@rabbitmq.com>2010-07-05 16:40:31 +0100
commit0dca7e0b7673e8b4c4be3220e89d75d2e2016085 (patch)
tree268ae7570c8cff7e087198ffd0cf6a0c67a18ddf /amqp_codegen.py
parent6cda49994675395b25dac5bfccb55cdf07b9fe2b (diff)
downloadrabbitmq-codegen-0dca7e0b7673e8b4c4be3220e89d75d2e2016085.tar.gz
Refactor merge_dict_lists_by a bit.
Diffstat (limited to 'amqp_codegen.py')
-rw-r--r--amqp_codegen.py19
1 files changed, 10 insertions, 9 deletions
diff --git a/amqp_codegen.py b/amqp_codegen.py
index c1dbfae..2d6535d 100644
--- a/amqp_codegen.py
+++ b/amqp_codegen.py
@@ -88,23 +88,24 @@ def domains_merger(key, old, new, allow_overwrite):
return [[k, v] for (k, v) in o.iteritems()]
-def merge_dict_lists_by(dict_key, old, new, allow_overwrite, check_fields, **kwargs):
- old_index = dict((v[dict_key], v) for v in old)
+def merge_dict_lists_by(field, old, new, allow_overwrite, check_fields, **kwargs):
+ old_index = dict((item[field], item) for item in old)
result = list(old) # shallow copy
- for v in new:
- key = v[dict_key]
- if key in old_index.iterkeys():
+ for item in new:
+ key = item[field]
+ if old_index.has_key(key):
if not allow_overwrite:
raise AmqpSpecFileMergeConflict(description, old, new)
+ old_item = old_index[key]
for f in check_fields:
- old_val = old_index[key].get(f, None)
- new_val = v.get(f, None)
+ old_val = old_item.get(f, None)
+ new_val = item.get(f, None)
if old_val != new_val:
raise AmqpSpecFileMergeConflict(key, f, old_val, new_val)
if kwargs.has_key("sub_merge"):
- kwargs["sub_merge"](old_index[key], v)
+ kwargs["sub_merge"](old_item, item)
else:
- result.append(v)
+ result.append(item)
return result
def constants_merger(key, old, new, allow_overwrite):