(self, v: Variable)
| 137 | return type(self)(parent=self, context=context, done=self.done) |
| 138 | |
| 139 | def _resolve_variable(self, v: Variable) -> object: |
| 140 | if v in self.context: |
| 141 | return self.resolve(self.context[v]) |
| 142 | |
| 143 | if self.parent is not None: |
| 144 | return self.parent.resolve_variable(v) |
| 145 | |
| 146 | if all(c.upper() or c == "_" for c in v.name): |
| 147 | s = os.environ.get(v.name) |
| 148 | if s is not None: |
| 149 | # using yaml.Loader instead of PathwayYamlLoader to prevent recursive |
| 150 | # parsing of environment variables |
| 151 | parsed_value = yaml.load(s, yaml.Loader) |
| 152 | if ( |
| 153 | isinstance(parsed_value, int) |
| 154 | or isinstance(parsed_value, float) |
| 155 | or isinstance(parsed_value, bool) |
| 156 | ): |
| 157 | return parsed_value |
| 158 | else: |
| 159 | return s |
| 160 | |
| 161 | raise KeyError(f"variable {v} is not defined") |
| 162 | |
| 163 | def resolve_variable(self, v: Variable) -> object: |
| 164 | res = self._resolve_variable(v) |
no test coverage detected