def __init__()

in knack/config.py [0:0]


    def __init__(self, config_dir=None, config_env_var_prefix=None, config_file_name=None, use_local_config=None):
        """ Manages configuration options available in the CLI

        :param config_dir: The directory to store config files
        :type config_dir: str
        :param config_env_var_prefix: The prefix for config environment variables
        :type config_env_var_prefix: str
        :param config_file_name: The name given to the config file to be created
        :type config_file_name: str
        """
        config_dir = config_dir or CLIConfig._DEFAULT_CONFIG_DIR
        ensure_dir(config_dir)
        config_env_var_prefix = config_env_var_prefix or CLIConfig._DEFAULT_CONFIG_ENV_VAR_PREFIX
        env_var_prefix = '{}_'.format(config_env_var_prefix.upper())
        default_config_dir = os.path.expanduser(config_dir)
        self.config_dir = os.environ.get('{}CONFIG_DIR'.format(env_var_prefix), default_config_dir)
        configuration_file_name = config_file_name or CLIConfig._DEFAULT_CONFIG_FILE_NAME
        self.config_path = os.path.join(self.config_dir, configuration_file_name)
        self._env_var_format = '{}{}'.format(env_var_prefix, '{section}_{option}')
        self.defaults_section_name = CLIConfig._CONFIG_DEFAULTS_SECTION
        self.use_local_config = use_local_config
        self._config_file_chain = []

        current_dir = None
        try:
            current_dir = os.getcwd()
        except FileNotFoundError:
            from .log import get_logger
            logger = get_logger()
            logger.warning("The working directory has been deleted or recreated. "
                           "Local config is ignored.")

        config_dir_name = os.path.basename(self.config_dir)
        while current_dir:
            current_config_dir = os.path.join(current_dir, config_dir_name)
            # Stop if already in the default .azure
            if (os.path.normcase(os.path.normpath(current_config_dir)) ==
                    os.path.normcase(os.path.normpath(self.config_dir))):
                break
            if os.path.isdir(current_config_dir):
                self._config_file_chain.append(_ConfigFile(current_config_dir,
                                                           os.path.join(current_config_dir, configuration_file_name)))
            # Stop if already in root drive
            if current_dir == os.path.dirname(current_dir):
                break
            current_dir = os.path.dirname(current_dir)
        self._config_file_chain.append(_ConfigFile(self.config_dir, self.config_path))