INNER CODE UNIT · Python

envvar_constructor

opsdroid/opsdroid · opsdroid/configuration/__init__.py:99

    def envvar_constructor(loader, node):
        """Yaml parser for env vars."""
        return os.path.expandvars(node.value)

    yaml.SafeLoader.add_implicit_resolver("!envvar", env_var_pattern, None)
    yaml.SafeLoader.add_constructor("!envvar", envvar_constructor)

    try:
        with open(config_path, "r") as stream:
            _LOGGER.info(_("Loaded config from %s."), config_path)

            data = yaml.load(stream, Loader=yaml.SafeLoader)

            # Resolvers do not run correctly on JSON so if the config is a JSON
            # file dump it to a temporary file as YAML and read it back in again.
            if config_path.endswith(".json"):
                with tempfile.NamedTemporaryFile("r+") as tmp:
                    yaml.dump(data, tmp, allow_unicode=True)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…