Return a nested dict containing values from `os.environ`. Specifically, values whose keys map to already-known configuration settings, allowing us to perform basic typecasting. See :ref:`env-vars` for details.
(self)
| 25 | self.data: Dict[str, Any] = {} # Accumulator |
| 26 | |
| 27 | def load(self) -> Dict[str, Any]: |
| 28 | """ |
| 29 | Return a nested dict containing values from `os.environ`. |
| 30 | |
| 31 | Specifically, values whose keys map to already-known configuration |
| 32 | settings, allowing us to perform basic typecasting. |
| 33 | |
| 34 | See :ref:`env-vars` for details. |
| 35 | """ |
| 36 | # Obtain allowed env var -> existing value map |
| 37 | env_vars = self._crawl(key_path=[], env_vars={}) |
| 38 | m = "Scanning for env vars according to prefix: {!r}, mapping: {!r}" |
| 39 | debug(m.format(self._prefix, env_vars)) |
| 40 | # Check for actual env var (honoring prefix) and try to set |
| 41 | for env_var, key_path in env_vars.items(): |
| 42 | real_var = (self._prefix or "") + env_var |
| 43 | if real_var in os.environ: |
| 44 | self._path_set(key_path, os.environ[real_var]) |
| 45 | debug("Obtained env var config: {!r}".format(self.data)) |
| 46 | return self.data |
| 47 | |
| 48 | def _crawl( |
| 49 | self, key_path: List[str], env_vars: Mapping[str, Sequence[str]] |
no test coverage detected