You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildstream.apache.org by tv...@apache.org on 2021/02/04 07:24:18 UTC

[buildstream] 03/10: _options/option.py: Pass the node instead of the str to 'transform'

This is an automated email from the ASF dual-hosted git repository.

tvb pushed a commit to branch bschubert/more-mypy
in repository https://gitbox.apache.org/repos/asf/buildstream.git

commit 5cd1cce5af0bf3dee0dd9c33d4c82be23247d130
Author: Benjamin Schubert <co...@benschubert.me>
AuthorDate: Tue Oct 15 11:51:54 2019 +0100

    _options/option.py: Pass the node instead of the str to 'transform'
    
    This is in order to consolidate how we substitute variables.
    
    _project: use 'node_substitute_variable' instead of '_subst_list'
    as the first one expects a node.
---
 src/buildstream/_options/optionbool.py  | 2 +-
 src/buildstream/_options/optionenum.py  | 6 ++++--
 src/buildstream/_options/optionflags.py | 5 +++--
 src/buildstream/_project.py             | 2 +-
 4 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/buildstream/_options/optionbool.py b/src/buildstream/_options/optionbool.py
index af67df6..f91cb25 100644
--- a/src/buildstream/_options/optionbool.py
+++ b/src/buildstream/_options/optionbool.py
@@ -37,7 +37,7 @@ class OptionBool(Option):
 
     def load_value(self, node, *, transform=None):
         if transform:
-            self.set_value(transform(node.get_str(self.name)))
+            self.set_value(transform(node.get_scalar(self.name)))
         else:
             self.value = node.get_bool(self.name)
 
diff --git a/src/buildstream/_options/optionenum.py b/src/buildstream/_options/optionenum.py
index be9799a..4a09413 100644
--- a/src/buildstream/_options/optionenum.py
+++ b/src/buildstream/_options/optionenum.py
@@ -56,9 +56,11 @@ class OptionEnum(Option):
 
     def load_value(self, node, *, transform=None):
         value_node = node.get_scalar(self.name)
-        self.value = value_node.as_str()
         if transform:
-            self.value = transform(self.value)
+            self.value = transform(value_node)
+        else:
+            self.value = value_node.as_str()
+
         self.validate(self.value, value_node)
 
     def set_value(self, value):
diff --git a/src/buildstream/_options/optionflags.py b/src/buildstream/_options/optionflags.py
index 0ce9957..e5217a7 100644
--- a/src/buildstream/_options/optionflags.py
+++ b/src/buildstream/_options/optionflags.py
@@ -58,9 +58,10 @@ class OptionFlags(Option):
 
     def load_value(self, node, *, transform=None):
         value_node = node.get_sequence(self.name)
-        self.value = value_node.as_str_list()
         if transform:
-            self.value = [transform(x) for x in self.value]
+            self.value = [transform(x) for x in value_node]
+        else:
+            self.value = value_node.as_str_list()
         self.value = sorted(self.value)
         self.validate(self.value, value_node)
 
diff --git a/src/buildstream/_project.py b/src/buildstream/_project.py
index 7ba93bb..0c63e33 100644
--- a/src/buildstream/_project.py
+++ b/src/buildstream/_project.py
@@ -789,7 +789,7 @@ class Project():
         output.options.load(options_node)
         if self.junction:
             # load before user configuration
-            output.options.load_yaml_values(self.junction.options, transform=self.junction._subst_string)
+            output.options.load_yaml_values(self.junction.options, transform=self.junction.node_substitute_variables)
 
         # Collect option values specified in the user configuration
         overrides = self._context.get_overrides(self.name)