From 4f3a71f898ad550e98c1e74f96ffa1fd145c9980 Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Wed, 5 Jul 2017 22:17:32 +0900 Subject: Testing --- buildstream/_yaml.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'buildstream/_yaml.py') diff --git a/buildstream/_yaml.py b/buildstream/_yaml.py index 93fae4903..c8151d501 100644 --- a/buildstream/_yaml.py +++ b/buildstream/_yaml.py @@ -602,3 +602,33 @@ def list_chain_copy(source): copy.append(item) return copy + + +def node_copy(source): + copy = {} + for key, value in source.items(): + if isinstance(value, collections.Mapping): + copy[key] = node_copy(value) + elif isinstance(value, list): + copy[key] = list_copy(value) + elif isinstance(value, Provenance): + copy[key] = value.clone() + + ensure_provenance(copy) + + return copy + + +def list_copy(source): + copy = [] + for item in source: + if isinstance(item, collections.Mapping): + copy.append(node_copy(item)) + elif isinstance(item, list): + copy.append(list_copy(item)) + elif isinstance(item, Provenance): + copy.append(item.clone()) + else: + copy.append(item) + + return copy -- cgit v1.2.1