def items()

in knack/config.py [0:0]


    def items(self, section):
        import re
        # Only allow valid env vars, in all caps: CLI_SECTION_TEST_OPTION, CLI_SECTION__TEST_OPTION
        pattern = self.env_var_name(section, '([0-9A-Z_]+)')
        env_entries = []
        for k in os.environ:
            # Must be a full match, otherwise CLI_SECTION_T part in CLI_MYSECTION_Test_Option will match
            matched = re.fullmatch(pattern, k)
            if matched:
                # (name, value, ENV_VAR_NAME)
                item = (matched.group(1).lower(), os.environ[k], k)
                env_entries.append(item)

        # Prepare result with env entries first
        result = {c[0]: c for c in env_entries}
        # Add entries from config files if they do not exist yet
        for config in self._config_file_chain if self.use_local_config else self._config_file_chain[-1:]:
            try:
                entries = config.items(section)
                for name, value in entries:
                    if name not in result:
                        result[name] = (name, value, config.config_path)
            except (configparser.NoSectionError, configparser.NoOptionError):
                pass
        return [{'name': name, 'value': value, 'source': source} for name, value, source in result.values()]