diff options
author | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-06-06 17:36:15 +0100 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2019-06-07 16:38:57 +0000 |
commit | fc1503a84ba33dffb7034d4522458facd1178a09 (patch) | |
tree | f4c167ecff1460bda363f45941d57a707d560aab | |
parent | 20747fc2a275c61d4aa135831e3967aca2081267 (diff) | |
download | buildstream-fc1503a84ba33dffb7034d4522458facd1178a09.tar.gz |
_yaml: Restrict parameter of node_items and node_keys to be 'Node'
In order to move to a cleaner Node api, we need to ensure that what we
are treating is correctly set up as being Nodes.
-rw-r--r-- | src/buildstream/_yaml.pxd | 2 | ||||
-rw-r--r-- | src/buildstream/_yaml.pyx | 18 | ||||
-rw-r--r-- | src/buildstream/element.py | 2 |
3 files changed, 8 insertions, 14 deletions
diff --git a/src/buildstream/_yaml.pxd b/src/buildstream/_yaml.pxd index 6a12fa7b3..b6043e5a8 100644 --- a/src/buildstream/_yaml.pxd +++ b/src/buildstream/_yaml.pxd @@ -41,5 +41,5 @@ cdef class ProvenanceInformation: cpdef object node_get(Node node, object expected_type, str key, list indices=*, object default_value=*, bint allow_none=*) cpdef void node_validate(Node node, list valid_keys) except * cpdef void node_set(Node node, object key, object value, list indices=*) except * -cpdef list node_keys(object node) +cpdef list node_keys(Node node) cpdef ProvenanceInformation node_get_provenance(Node node, str key=*, list indices=*) diff --git a/src/buildstream/_yaml.pyx b/src/buildstream/_yaml.pyx index f14b55e51..c565fe12e 100644 --- a/src/buildstream/_yaml.pyx +++ b/src/buildstream/_yaml.pyx @@ -693,21 +693,17 @@ def node_extend_list(Node node, str key, Py_ssize_t length, object default): # tuples in a dictionary loaded from project YAML. # # Args: -# node (dict): The dictionary node +# node (Node): The dictionary node # # Yields: # (str): The key name # (anything): The value for the key # -def node_items(node): - if type(node) is not Node: - node = Node(node, _SYNTHETIC_FILE_INDEX, 0, 0) - +def node_items(Node node): cdef str key + cdef Node value for key, value in node.value.items(): - if type(value) is not Node: - value = Node(value, _SYNTHETIC_FILE_INDEX, 0, 0) if type(value.value) is dict: yield (key, value) elif type(value.value) is list: @@ -722,15 +718,13 @@ def node_items(node): # in a dictionary loaded from project YAML. # # Args: -# node (dict): The dictionary node +# node (Node): The dictionary node # # Yields: # (str): The key name # -cpdef list node_keys(object node): - if type(node) is Node: - return list((<Node> node).value.keys()) - return list(node.keys()) +cpdef list node_keys(Node node): + return list(node.value.keys()) # node_del() diff --git a/src/buildstream/element.py b/src/buildstream/element.py index 84c8f20ff..a60546084 100644 --- a/src/buildstream/element.py +++ b/src/buildstream/element.py @@ -1986,7 +1986,7 @@ class Element(Plugin): flags |= SandboxFlags.NETWORK_ENABLED | SandboxFlags.INHERIT_UID # Apply project defined environment vars to set for a shell - for key, value in _yaml.node_items(shell_environment): + for key, value in shell_environment.items(): environment[key] = value # Setup any requested bind mounts |