diff options
author | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-07-16 18:31:19 +0100 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2019-07-17 08:26:26 +0000 |
commit | b2a91466511f60e33e2e77fed2bf9c60bc31803d (patch) | |
tree | a34e90c980bf95d96c5db60a822e8954edf5c150 /src/buildstream/node.pyx | |
parent | a7ac4fed521881f54b76b199233c5aee3ba1f1ce (diff) | |
download | buildstream-b2a91466511f60e33e2e77fed2bf9c60bc31803d.tar.gz |
node: Add 'get_str_list' on 'MappingNode'
`mapping.get_sequence(...).as_str_list()` is a very common
pattern seen both in plugins and the core. Adding a helper to reduce
the number of operations will make usage smoother
Diffstat (limited to 'src/buildstream/node.pyx')
-rw-r--r-- | src/buildstream/node.pyx | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/buildstream/node.pyx b/src/buildstream/node.pyx index aa1ff609d..fc17b8efa 100644 --- a/src/buildstream/node.pyx +++ b/src/buildstream/node.pyx @@ -679,6 +679,28 @@ cdef class MappingNode(Node): cdef ScalarNode scalar = self.get_scalar(key, default) return scalar.as_str() + cpdef list get_str_list(self, str key, object default=_sentinel): + """get_str_list(key, default=sentinel) + + Get the value of the node for `key` as a list of strings. + + This is equivalent to: :code:`mapping.get_sequence(my_key, my_default).as_str_list()`. + + Args: + key (str): key for which to get the value + default (str): default value to return if `key` is not in the mapping + + Raises: + :class:`buildstream._exceptions.LoadError`: if the value at `key` is not a + :class:`.SequenceNode` or if any + of its internal values is not a ScalarNode. + + Returns: + :class:`list`: the value at `key` or the default + """ + cdef SequenceNode sequence = self.get_sequence(key, default) + return sequence.as_str_list() + cpdef object items(self): """Get a new view of the mapping items ((key, value) pairs). |