(
values: Iterable[Tuple[str, Optional[str]]],
override: bool,
)
| 287 | |
| 288 | |
| 289 | def resolve_variables( |
| 290 | values: Iterable[Tuple[str, Optional[str]]], |
| 291 | override: bool, |
| 292 | ) -> Mapping[str, Optional[str]]: |
| 293 | new_values: Dict[str, Optional[str]] = {} |
| 294 | |
| 295 | for name, value in values: |
| 296 | if value is None: |
| 297 | result = None |
| 298 | else: |
| 299 | atoms = parse_variables(value) |
| 300 | env: Dict[str, Optional[str]] = {} |
| 301 | if override: |
| 302 | env.update(os.environ) # type: ignore |
| 303 | env.update(new_values) |
| 304 | else: |
| 305 | env.update(new_values) |
| 306 | env.update(os.environ) # type: ignore |
| 307 | result = "".join(atom.resolve(env) for atom in atoms) |
| 308 | |
| 309 | new_values[name] = result |
| 310 | |
| 311 | return new_values |
| 312 | |
| 313 | |
| 314 | def _walk_to_root(path: str) -> Iterator[str]: |
no test coverage detected
searching dependent graphs…