diff options
author | Benjamin Schubert <ben.c.schubert@gmail.com> | 2019-07-10 13:59:12 +0100 |
---|---|---|
committer | bst-marge-bot <marge-bot@buildstream.build> | 2019-07-15 14:14:03 +0000 |
commit | 301d40d1a42c056f7c9e8e734b6ce6251378cafb (patch) | |
tree | d3b3f57bf620c54e0796d353ad55f4408c42e2d9 /src/buildstream/_loader | |
parent | 53019a61c926787b622b6a5f94f81096b043cf99 (diff) | |
download | buildstream-301d40d1a42c056f7c9e8e734b6ce6251378cafb.tar.gz |
_yaml: Split Node-related parts into 'node.pyx'
This makes the 'Node' API public, and available for use directly for
plugins.
Diffstat (limited to 'src/buildstream/_loader')
-rw-r--r-- | src/buildstream/_loader/loader.py | 3 | ||||
-rw-r--r-- | src/buildstream/_loader/metaelement.py | 12 | ||||
-rw-r--r-- | src/buildstream/_loader/types.pyx | 28 |
3 files changed, 22 insertions, 21 deletions
diff --git a/src/buildstream/_loader/loader.py b/src/buildstream/_loader/loader.py index 27975dc34..5a2624c6a 100644 --- a/src/buildstream/_loader/loader.py +++ b/src/buildstream/_loader/loader.py @@ -24,6 +24,7 @@ from .._exceptions import LoadError, LoadErrorReason from .. import Consistency from .. import _yaml from ..element import Element +from ..node import Node from .._profile import Topics, PROFILER from .._includes import Includes @@ -120,7 +121,7 @@ class Loader(): # Set up a dummy element that depends on all top-level targets # to resolve potential circular dependencies between them - dummy_target = LoadElement(_yaml.Node.from_dict({}), "", self) + dummy_target = LoadElement(Node.from_dict({}), "", self) dummy_target.dependencies.extend( LoadElement.Dependency(element, Symbol.RUNTIME) for element in target_elements diff --git a/src/buildstream/_loader/metaelement.py b/src/buildstream/_loader/metaelement.py index 8214e303d..67d2ec771 100644 --- a/src/buildstream/_loader/metaelement.py +++ b/src/buildstream/_loader/metaelement.py @@ -17,7 +17,7 @@ # Authors: # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> -from .. import _yaml +from ..node import Node class MetaElement(): @@ -48,12 +48,12 @@ class MetaElement(): self.kind = kind self.provenance = provenance self.sources = sources - self.config = config or _yaml.Node.from_dict({}) - self.variables = variables or _yaml.Node.from_dict({}) - self.environment = environment or _yaml.Node.from_dict({}) + self.config = config or Node.from_dict({}) + self.variables = variables or Node.from_dict({}) + self.environment = environment or Node.from_dict({}) self.env_nocache = env_nocache or [] - self.public = public or _yaml.Node.from_dict({}) - self.sandbox = sandbox or _yaml.Node.from_dict({}) + self.public = public or Node.from_dict({}) + self.sandbox = sandbox or Node.from_dict({}) self.build_dependencies = [] self.dependencies = [] self.first_pass = first_pass diff --git a/src/buildstream/_loader/types.pyx b/src/buildstream/_loader/types.pyx index fe1cea789..e8c16b36e 100644 --- a/src/buildstream/_loader/types.pyx +++ b/src/buildstream/_loader/types.pyx @@ -18,7 +18,7 @@ # Tristan Van Berkom <tristan.vanberkom@codethink.co.uk> from .._exceptions import LoadError, LoadErrorReason -from .. cimport _yaml +from ..node cimport MappingNode, Node, ProvenanceInformation, ScalarNode, SequenceNode # Symbol(): @@ -59,32 +59,32 @@ class Symbol(): # dependency was declared # cdef class Dependency: - cdef public _yaml.ProvenanceInformation provenance + cdef public ProvenanceInformation provenance cdef public str name cdef public str dep_type cdef public str junction def __init__(self, - _yaml.Node dep, + Node dep, str default_dep_type=None): cdef str dep_type self.provenance = dep.get_provenance() - if type(dep) is _yaml.ScalarNode: + if type(dep) is ScalarNode: self.name = dep.as_str() self.dep_type = default_dep_type self.junction = None - elif type(dep) is _yaml.MappingNode: + elif type(dep) is MappingNode: if default_dep_type: - (<_yaml.MappingNode> dep).validate_keys(['filename', 'junction']) + (<MappingNode> dep).validate_keys(['filename', 'junction']) dep_type = default_dep_type else: - (<_yaml.MappingNode> dep).validate_keys(['filename', 'type', 'junction']) + (<MappingNode> dep).validate_keys(['filename', 'type', 'junction']) # Make type optional, for this we set it to None - dep_type = (<_yaml.MappingNode> dep).get_str(<str> Symbol.TYPE, None) + dep_type = (<MappingNode> dep).get_str(<str> Symbol.TYPE, None) if dep_type is None or dep_type == <str> Symbol.ALL: dep_type = None elif dep_type not in [Symbol.BUILD, Symbol.RUNTIME]: @@ -93,9 +93,9 @@ cdef class Dependency: "{}: Dependency type '{}' is not 'build', 'runtime' or 'all'" .format(provenance, dep_type)) - self.name = (<_yaml.MappingNode> dep).get_str(<str> Symbol.FILENAME) + self.name = (<MappingNode> dep).get_str(<str> Symbol.FILENAME) self.dep_type = dep_type - self.junction = (<_yaml.MappingNode> dep).get_str(<str> Symbol.JUNCTION, None) + self.junction = (<MappingNode> dep).get_str(<str> Symbol.JUNCTION, None) else: raise LoadError(LoadErrorReason.INVALID_DATA, @@ -136,9 +136,9 @@ cdef class Dependency: # default_dep_type (str): type to give to the dependency # acc (list): a list in which to add the loaded dependencies # -cdef void _extract_depends_from_node(_yaml.Node node, str key, str default_dep_type, list acc) except *: - cdef _yaml.SequenceNode depends = node.get_sequence(key, []) - cdef _yaml.Node dep_node +cdef void _extract_depends_from_node(Node node, str key, str default_dep_type, list acc) except *: + cdef SequenceNode depends = node.get_sequence(key, []) + cdef Node dep_node for dep_node in depends: dependency = Dependency(dep_node, default_dep_type=default_dep_type) @@ -162,7 +162,7 @@ cdef void _extract_depends_from_node(_yaml.Node node, str key, str default_dep_t # Returns: # (list): a list of Dependency objects # -def extract_depends_from_node(_yaml.Node node): +def extract_depends_from_node(Node node): cdef list acc = [] _extract_depends_from_node(node, <str> Symbol.BUILD_DEPENDS, <str> Symbol.BUILD, acc) _extract_depends_from_node(node, <str> Symbol.RUNTIME_DEPENDS, <str> Symbol.RUNTIME, acc) |