def add_metadata(target, key, metadata): if not is_interesting(metadata): return for part in key: if part not in target: target[part] = {} target = target[part] for prop in simple_props: if metadata.has_key(prop): target[prop] = get_condition_value_list(metadata, prop) if metadata.has_key("expected"): values = metadata.get("expected") by_status = defaultdict(list) for item in values: if isinstance(item, tuple): condition, status = item else: condition = None status = item by_status[status].append(condition) for status in statuses: if status in by_status: target["expected_%s" % status] = [ serialize(item) if item else None for item in by_status[status] ]
def get_condition_value_list(metadata, key): conditions = [] for item in metadata.get(key): if isinstance(item, tuple): assert len(item) == 2 conditions.append((serialize(item[0]), item[1])) else: conditions.append((None, item)) return conditions
def add_metadata(target, key, metadata): if not is_interesting(metadata): return for part in key: if part not in target: target[part] = {} target = target[part] for prop in simple_props: if metadata.has_key(prop): # noqa W601 target[prop] = get_condition_value_list(metadata, prop) if metadata.has_key("expected"): # noqa W601 intermittent = [] values = metadata.get("expected") by_status = defaultdict(list) for item in values: if isinstance(item, tuple): condition, status = item else: condition = None status = item if isinstance(status, list): intermittent.append((condition, status)) expected_status = status[0] else: expected_status = status by_status[expected_status].append(condition) for status in statuses: if status in by_status: target["expected_%s" % status] = [ serialize(item) if item else None for item in by_status[status] ] if intermittent: target["intermittent"] = [ [serialize(cond) if cond else None, intermittent_statuses] for cond, intermittent_statuses in intermittent ]
def make_changes(ancestor_manifest, current_manifest, new_manifest): changes = record_changes(ancestor_manifest, new_manifest) apply_changes(current_manifest, changes) return serialize(current_manifest.node)
def visit_ConditionalNode(self, node): assert len(node.children) == 2 # For conditional nodes, just return the subtree return serialize(node.children[0]), self.visit(node.children[1])