diff --git a/samcli/cli/cli_config_file.py b/samcli/cli/cli_config_file.py index e4606e4555..8b56d033e9 100644 --- a/samcli/cli/cli_config_file.py +++ b/samcli/cli/cli_config_file.py @@ -10,6 +10,7 @@ import logging import os from pathlib import Path +from typing import Any, Callable, Dict, List, Optional import click @@ -17,38 +18,52 @@ from samcli.commands.exceptions import ConfigException from samcli.lib.config.samconfig import DEFAULT_CONFIG_FILE_NAME, DEFAULT_ENV, SamConfig -__all__ = ("TomlProvider", "configuration_option", "get_ctx_defaults") +__all__ = ("ConfigProvider", "configuration_option", "get_ctx_defaults") LOG = logging.getLogger(__name__) -class TomlProvider: +class ConfigProvider: """ - A parser for toml configuration files + A parser for sam configuration files """ def __init__(self, section=None, cmd_names=None): """ - The constructor for TomlProvider class - :param section: section defined in the configuration file nested within `cmd` - :param cmd_names: cmd_name defined in the configuration file + The constructor for ConfigProvider class + + Parameters + ---------- + section + The section defined in the configuration file nested within `cmd` + cmd_names + The cmd_name defined in the configuration file """ self.section = section self.cmd_names = cmd_names - def __call__(self, config_path, config_env, cmd_names): + def __call__(self, config_path: Path, config_env: str, cmd_names: List[str]) -> dict: """ Get resolved config based on the `file_path` for the configuration file, `config_env` targeted inside the config file and corresponding `cmd_name` as denoted by `click`. - :param config_path: The path of configuration file. - :param config_env: The name of the sectional config_env within configuration file. - :param list cmd_names: sam command name as defined by click - :returns dictionary containing the configuration parameters under specified config_env + Parameters + ---------- + config_path: Path + The path of configuration file. + config_env: str + The name of the sectional config_env within configuration file. + cmd_names: List[str] + The sam command name as defined by click. + + Returns + ------- + dict + A dictionary containing the configuration parameters under specified config_env. """ - resolved_config = {} + resolved_config: dict = {} # Use default sam config file name if config_path only contain the directory config_file_path = ( @@ -105,27 +120,47 @@ def __call__(self, config_path, config_env, cmd_names): return resolved_config -def configuration_callback(cmd_name, option_name, saved_callback, provider, ctx, param, value): +def configuration_callback( + cmd_name: str, + option_name: str, + saved_callback: Optional[Callable], + provider: Callable, + ctx: click.Context, + param: click.Parameter, + value, +): """ Callback for reading the config file. Also takes care of calling user specified custom callback afterwards. - :param cmd_name: `sam` command name derived from click. - :param option_name: The name of the option. This is used for error messages. - :param saved_callback: User-specified callback to be called later. - :param provider: A callable that parses the configuration file and returns a dictionary + Parameters + ---------- + cmd_name: str + The `sam` command name derived from click. + option_name: str + The name of the option. This is used for error messages. + saved_callback: Optional[Callable] + User-specified callback to be called later. + provider: Callable + A callable that parses the configuration file and returns a dictionary of the configuration parameters. Will be called as `provider(file_path, config_env, cmd_name)`. - :param ctx: Click context - :param param: Click parameter - :param value: Specified value for config_env - :returns specified callback or the specified value for config_env. + ctx: click.Context + Click context + param: click.Parameter + Click parameter + value + Specified value for config_env + + Returns + ------- + The specified callback or the specified value for config_env. """ # ctx, param and value are default arguments for click specified callbacks. ctx.default_map = ctx.default_map or {} - cmd_name = cmd_name or ctx.info_name + cmd_name = cmd_name or str(ctx.info_name) param.default = None config_env_name = ctx.params.get("config_env") or DEFAULT_ENV @@ -154,21 +189,35 @@ def configuration_callback(cmd_name, option_name, saved_callback, provider, ctx, return saved_callback(ctx, param, config_env_name) if saved_callback else config_env_name -def get_ctx_defaults(cmd_name, provider, ctx, config_env_name, config_file=None): +def get_ctx_defaults( + cmd_name: str, provider: Callable, ctx: click.Context, config_env_name: str, config_file: Optional[str] = None +) -> Any: """ Get the set of the parameters that are needed to be set into the click command. + This function also figures out the command name by looking up current click context's parent and constructing the parsed command name that is used in default configuration file. If a given cmd_name is start-api, the parsed name is "local_start_api". provider is called with `config_file`, `config_env_name` and `parsed_cmd_name`. - :param cmd_name: `sam` command name - :param provider: provider to be called for reading configuration file - :param ctx: Click context - :param config_env_name: config-env within configuration file, sam configuration file will be relative to the - supplied original template if its path is not specified - :param config_file: configuration file name - :return: dictionary of defaults for parameters + Parameters + ---------- + cmd_name: str + The `sam` command name. + provider: Callable + The provider to be called for reading configuration file. + ctx: click.Context + Click context + config_env_name: str + The config-env within configuration file, sam configuration file will be relative to the + supplied original template if its path is not specified. + config_file: Optional[str] + The configuration file name. + + Returns + ------- + Any + A dictionary of defaults for parameters. """ return provider(config_file, config_env_name, get_cmd_names(cmd_name, ctx)) @@ -180,30 +229,38 @@ def configuration_option(*param_decls, **attrs): """ Adds configuration file support to a click application. - NOTE: This decorator should be added to the top of parameter chain, right below click.command, before - any options are declared. - - Example: - >>> @click.command("hello") - @configuration_option(provider=TomlProvider(section="parameters")) - @click.option('--name', type=click.String) - def hello(name): - print("Hello " + name) - This will create a hidden click option whose callback function loads configuration parameters from default configuration environment [default] in default configuration file [samconfig.toml] in the template file directory. - :param preconfig_decorator_list: A list of click option decorator which need to place before this function. For - exmple, if we want to add option "--config-file" and "--config-env" to allow customized configuration file + + Note + ---- + This decorator should be added to the top of parameter chain, right below click.command, before + any options are declared. + + Example + ------- + >>> @click.command("hello") + @configuration_option(provider=ConfigProvider(section="parameters")) + @click.option('--name', type=click.String) + def hello(name): + print("Hello " + name) + + Parameters + ---------- + preconfig_decorator_list: list + A list of click option decorator which need to place before this function. For + example, if we want to add option "--config-file" and "--config-env" to allow customized configuration file and configuration environment, we will use configuration_option as below: @configuration_option( preconfig_decorator_list=[decorator_customize_config_file, decorator_customize_config_env], - provider=TomlProvider(section=CONFIG_SECTION), + provider=ConfigProvider(section=CONFIG_SECTION), ) By default, we enable these two options. - :param provider: A callable that parses the configuration file and returns a dictionary + provider: Callable + A callable that parses the configuration file and returns a dictionary of the configuration parameters. Will be called as - `provider(file_path, config_env, cmd_name) + `provider(file_path, config_env, cmd_name)` """ def decorator_configuration_setup(f): @@ -240,14 +297,22 @@ def decorator(f): return composed_decorator(decorator_list) -def decorator_customize_config_file(f): +def decorator_customize_config_file(f: Callable) -> Callable: """ CLI option to customize configuration file name. By default it is 'samconfig.toml' in project directory. Ex: --config-file samconfig.toml - :param f: Callback function passed by Click - :return: Callback function + + Parameters + ---------- + f: Callable + Callback function passed by Click + + Returns + ------- + Callable + A Callback function """ - config_file_attrs = {} + config_file_attrs: Dict[str, Any] = {} config_file_param_decls = ("--config-file",) config_file_attrs["help"] = "Configuration file containing default parameter values." config_file_attrs["default"] = "samconfig.toml" @@ -258,14 +323,22 @@ def decorator_customize_config_file(f): return click.option(*config_file_param_decls, **config_file_attrs)(f) -def decorator_customize_config_env(f): +def decorator_customize_config_env(f: Callable) -> Callable: """ CLI option to customize configuration environment name. By default it is 'default'. Ex: --config-env default - :param f: Callback function passed by Click - :return: Callback function + + Parameters + ---------- + f: Callable + Callback function passed by Click + + Returns + ------- + Callable + A Callback function """ - config_env_attrs = {} + config_env_attrs: Dict[str, Any] = {} config_env_param_decls = ("--config-env",) config_env_attrs["help"] = "Environment name specifying default parameter values in the configuration file." config_env_attrs["default"] = "default" diff --git a/samcli/commands/_utils/custom_options/hook_name_option.py b/samcli/commands/_utils/custom_options/hook_name_option.py index 745ab6c64a..a2cb334157 100644 --- a/samcli/commands/_utils/custom_options/hook_name_option.py +++ b/samcli/commands/_utils/custom_options/hook_name_option.py @@ -141,7 +141,7 @@ def _get_customer_input_beta_features_option(default_map, experimental_entry, op if beta_features is not None: return beta_features - # Get the beta-features flag value from the SamConfig toml file if provided. + # Get the beta-features flag value from the SamConfig file if provided. beta_features = default_map.get("beta_features") if beta_features is not None: return beta_features diff --git a/samcli/commands/build/command.py b/samcli/commands/build/command.py index b8ba89052a..788b2627ba 100644 --- a/samcli/commands/build/command.py +++ b/samcli/commands/build/command.py @@ -26,7 +26,7 @@ from samcli.cli.main import pass_context, common_options as cli_framework_options, aws_creds_options, print_cmdline_args from samcli.commands.build.core.command import BuildCommand from samcli.lib.telemetry.metric import track_command -from samcli.cli.cli_config_file import configuration_option, TomlProvider +from samcli.cli.cli_config_file import configuration_option, ConfigProvider from samcli.lib.utils.version_checker import check_newer_version from samcli.commands.build.click_container import ContainerOptions from samcli.commands.build.utils import MountMode @@ -68,7 +68,7 @@ short_help=HELP_TEXT, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @hook_name_click_option( force_prepare=True, invalid_coexist_options=["t", "template-file", "template", "parameter-overrides"], diff --git a/samcli/commands/delete/delete_context.py b/samcli/commands/delete/delete_context.py index 3ebcf29669..b1583ef115 100644 --- a/samcli/commands/delete/delete_context.py +++ b/samcli/commands/delete/delete_context.py @@ -9,7 +9,7 @@ import click from click import confirm, prompt -from samcli.cli.cli_config_file import TomlProvider +from samcli.cli.cli_config_file import ConfigProvider from samcli.cli.context import Context from samcli.commands.delete.exceptions import CfDeleteFailedStatusError from samcli.lib.bootstrap.companion_stack.companion_stack_builder import CompanionStack @@ -82,8 +82,8 @@ def parse_config_file(self): """ Read the provided config file if it exists and assign the options values. """ - toml_provider = TomlProvider(CONFIG_SECTION, [CONFIG_COMMAND]) - config_options = toml_provider( + config_provider = ConfigProvider(CONFIG_SECTION, [CONFIG_COMMAND]) + config_options = config_provider( config_path=self.config_file, config_env=self.config_env, cmd_names=[CONFIG_COMMAND] ) if not config_options: diff --git a/samcli/commands/deploy/command.py b/samcli/commands/deploy/command.py index aeefe4d25f..557a601261 100644 --- a/samcli/commands/deploy/command.py +++ b/samcli/commands/deploy/command.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.cdk_support_decorators import unsupported_command_cdk from samcli.commands._utils.click_mutex import ClickMutex @@ -75,7 +75,7 @@ description=DESCRIPTION, requires_credentials=True, ) -@configuration_option(provider=TomlProvider(section=CONFIG_SECTION)) +@configuration_option(provider=ConfigProvider(section=CONFIG_SECTION)) @click.option( "--guided", "-g", diff --git a/samcli/commands/init/command.py b/samcli/commands/init/command.py index 8702b3f9a9..f31e967a04 100644 --- a/samcli/commands/init/command.py +++ b/samcli/commands/init/command.py @@ -7,7 +7,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import common_options, pass_context, print_cmdline_args from samcli.commands._utils.click_mutex import ClickMutex from samcli.commands.init.core.command import InitCommand @@ -112,7 +112,7 @@ def wrapped(*args, **kwargs): description=DESCRIPTION, requires_credentials=False, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @click.option( "--no-interactive", is_flag=True, diff --git a/samcli/commands/list/endpoints/command.py b/samcli/commands/list/endpoints/command.py index 6de1c41bb2..f11543ef8c 100644 --- a/samcli/commands/list/endpoints/command.py +++ b/samcli/commands/list/endpoints/command.py @@ -4,7 +4,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.command_exception_handler import command_exception_handler from samcli.commands._utils.options import parameter_override_option, template_option_without_build @@ -21,7 +21,7 @@ @click.command(name="endpoints", help=HELP_TEXT) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @parameter_override_option @stack_name_option @output_option diff --git a/samcli/commands/list/resources/command.py b/samcli/commands/list/resources/command.py index 5dd2b41034..dacfac30e2 100644 --- a/samcli/commands/list/resources/command.py +++ b/samcli/commands/list/resources/command.py @@ -4,7 +4,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.command_exception_handler import command_exception_handler from samcli.commands._utils.options import parameter_override_option, template_option_without_build @@ -20,7 +20,7 @@ @click.command(name="resources", help=HELP_TEXT) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @parameter_override_option @stack_name_option @output_option diff --git a/samcli/commands/list/stack_outputs/command.py b/samcli/commands/list/stack_outputs/command.py index 3800c009b2..e988f98045 100644 --- a/samcli/commands/list/stack_outputs/command.py +++ b/samcli/commands/list/stack_outputs/command.py @@ -4,7 +4,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.command_exception_handler import command_exception_handler from samcli.commands.list.cli_common.options import output_option @@ -23,7 +23,7 @@ required=True, type=click.STRING, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @output_option @aws_creds_options @common_options diff --git a/samcli/commands/local/generate_event/event_generation.py b/samcli/commands/local/generate_event/event_generation.py index 5715bded73..9bf8e49e7a 100644 --- a/samcli/commands/local/generate_event/event_generation.py +++ b/samcli/commands/local/generate_event/event_generation.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.options import debug_option from samcli.lib.generated_sample_events import events from samcli.lib.telemetry.metric import track_command @@ -160,7 +160,7 @@ def get_command(self, ctx, cmd_name): callback=command_callback, ) - cmd = configuration_option(provider=TomlProvider(section="parameters"))(debug_option(cmd)) + cmd = configuration_option(provider=ConfigProvider(section="parameters"))(debug_option(cmd)) return cmd def list_commands(self, ctx): diff --git a/samcli/commands/local/invoke/cli.py b/samcli/commands/local/invoke/cli.py index a9a3fc9571..0442e7b7ed 100644 --- a/samcli/commands/local/invoke/cli.py +++ b/samcli/commands/local/invoke/cli.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.experimental import ExperimentalFlag, is_experimental_enabled @@ -43,7 +43,7 @@ short_help=HELP_TEXT, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @hook_name_click_option( force_prepare=False, invalid_coexist_options=["t", "template-file", "template", "parameter-overrides"] ) diff --git a/samcli/commands/local/start_api/cli.py b/samcli/commands/local/start_api/cli.py index 145b0a58a2..76d218b482 100644 --- a/samcli/commands/local/start_api/cli.py +++ b/samcli/commands/local/start_api/cli.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.option_value_processor import process_image_options @@ -53,7 +53,7 @@ requires_credentials=False, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @service_common_options(3000) @click.option( "--static-dir", diff --git a/samcli/commands/local/start_lambda/cli.py b/samcli/commands/local/start_lambda/cli.py index 9aaec50976..ded8b786fc 100644 --- a/samcli/commands/local/start_lambda/cli.py +++ b/samcli/commands/local/start_lambda/cli.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.experimental import ExperimentalFlag, is_experimental_enabled @@ -52,7 +52,7 @@ requires_credentials=False, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @hook_name_click_option( force_prepare=False, invalid_coexist_options=["t", "template-file", "template", "parameter-overrides"] ) diff --git a/samcli/commands/logs/command.py b/samcli/commands/logs/command.py index 7a3b1d8c6a..70b94f7473 100644 --- a/samcli/commands/logs/command.py +++ b/samcli/commands/logs/command.py @@ -6,7 +6,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -51,7 +51,7 @@ @click.command("logs", help=HELP_TEXT, short_help="Fetch logs for a function") -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @click.option( "--name", "-n", diff --git a/samcli/commands/package/command.py b/samcli/commands/package/command.py index ee74b67c37..1bf0d141e0 100644 --- a/samcli/commands/package/command.py +++ b/samcli/commands/package/command.py @@ -3,7 +3,7 @@ """ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.cdk_support_decorators import unsupported_command_cdk from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -56,7 +56,7 @@ def resources_and_properties_help_string(): @click.command("package", short_help=SHORT_HELP, help=HELP_TEXT, context_settings=dict(max_content_width=120)) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @template_click_option(include_build=True) @click.option( "--output-template-file", diff --git a/samcli/commands/pipeline/bootstrap/cli.py b/samcli/commands/pipeline/bootstrap/cli.py index d357adf5dd..943c3ef68f 100644 --- a/samcli/commands/pipeline/bootstrap/cli.py +++ b/samcli/commands/pipeline/bootstrap/cli.py @@ -7,7 +7,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, common_options, pass_context, print_cmdline_args from samcli.commands._utils.click_mutex import ClickMutex from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -38,7 +38,7 @@ @click.command("bootstrap", short_help=SHORT_HELP, help=HELP_TEXT, context_settings=dict(max_content_width=120)) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @click.option( "--interactive/--no-interactive", is_flag=True, diff --git a/samcli/commands/pipeline/init/cli.py b/samcli/commands/pipeline/init/cli.py index 9e42f6e74b..ec675fb608 100644 --- a/samcli/commands/pipeline/init/cli.py +++ b/samcli/commands/pipeline/init/cli.py @@ -5,7 +5,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import common_options as cli_framework_options from samcli.cli.main import pass_context from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -24,7 +24,7 @@ @click.command("init", help=HELP_TEXT, short_help=SHORT_HELP) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @click.option( "--bootstrap", is_flag=True, diff --git a/samcli/commands/publish/command.py b/samcli/commands/publish/command.py index 091a044192..4ebfb3e8e5 100644 --- a/samcli/commands/publish/command.py +++ b/samcli/commands/publish/command.py @@ -7,7 +7,7 @@ import click from serverlessrepo.publish import CREATE_APPLICATION -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -44,7 +44,7 @@ @click.command("publish", help=HELP_TEXT, short_help=SHORT_HELP) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @template_common_option @click.option("--semantic-version", help=SEMANTIC_VERSION_HELP) @aws_creds_options diff --git a/samcli/commands/sync/command.py b/samcli/commands/sync/command.py index 26eccac4b3..ba80adbbe1 100644 --- a/samcli/commands/sync/command.py +++ b/samcli/commands/sync/command.py @@ -5,7 +5,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.context import Context from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options @@ -111,7 +111,7 @@ requires_credentials=True, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @template_option_without_build @click.option( "--code", diff --git a/samcli/commands/traces/command.py b/samcli/commands/traces/command.py index 183a2bd156..d82b6871ab 100644 --- a/samcli/commands/traces/command.py +++ b/samcli/commands/traces/command.py @@ -5,7 +5,7 @@ import click -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options from samcli.commands._utils.command_exception_handler import command_exception_handler @@ -28,7 +28,7 @@ @click.command("traces", help=HELP_TEXT, short_help="Fetch AWS X-Ray traces") -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @click.option( "--trace-id", "-ti", diff --git a/samcli/commands/validate/validate.py b/samcli/commands/validate/validate.py index 1c5c2b28b1..221284b1ac 100644 --- a/samcli/commands/validate/validate.py +++ b/samcli/commands/validate/validate.py @@ -8,7 +8,7 @@ from botocore.exceptions import NoCredentialsError from samtranslator.translator.arn_generator import NoRegionFound -from samcli.cli.cli_config_file import TomlProvider, configuration_option +from samcli.cli.cli_config_file import ConfigProvider, configuration_option from samcli.cli.context import Context from samcli.cli.main import aws_creds_options, pass_context, print_cmdline_args from samcli.cli.main import common_options as cli_framework_options @@ -35,7 +35,7 @@ requires_credentials=False, context_settings={"max_content_width": 120}, ) -@configuration_option(provider=TomlProvider(section="parameters")) +@configuration_option(provider=ConfigProvider(section="parameters")) @template_option_without_build @aws_creds_options @cli_framework_options diff --git a/tests/unit/cli/test_cli_config_file.py b/tests/unit/cli/test_cli_config_file.py index 3395c12786..93502deb44 100644 --- a/tests/unit/cli/test_cli_config_file.py +++ b/tests/unit/cli/test_cli_config_file.py @@ -8,7 +8,7 @@ import tomlkit from samcli.commands.exceptions import ConfigException -from samcli.cli.cli_config_file import TomlProvider, configuration_option, configuration_callback, get_ctx_defaults +from samcli.cli.cli_config_file import ConfigProvider, configuration_option, configuration_callback, get_ctx_defaults from samcli.lib.config.exceptions import FileParseException, SamConfigFileReadException, SamConfigVersionException from samcli.lib.config.samconfig import DEFAULT_ENV, TomlFileManager @@ -24,9 +24,9 @@ def __init__(self, info_name, parent, params=None, command=None, default_map=Non self.default_map = default_map -class TestTomlProvider(TestCase): +class TestConfigProvider(TestCase): def setUp(self): - self.toml_provider = TomlProvider() + self.config_provider = ConfigProvider() self.config_env = "config_env" self.parameters = "parameters" self.cmd_name = "topic" @@ -36,7 +36,7 @@ def test_toml_valid_with_section(self): config_path = Path(config_dir, "samconfig.toml") config_path.write_text("version=0.1\n[config_env.topic.parameters]\nword='clarity'\n") self.assertEqual( - TomlProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]), {"word": "clarity"} + ConfigProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]), {"word": "clarity"} ) def test_toml_valid_with_no_version(self): @@ -44,14 +44,14 @@ def test_toml_valid_with_no_version(self): config_path = Path(config_dir, "samconfig.toml") config_path.write_text("[config_env.topic.parameters]\nword='clarity'\n") with self.assertRaises(SamConfigVersionException): - TomlProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]) + ConfigProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]) def test_toml_valid_with_invalid_version(self): config_dir = tempfile.gettempdir() config_path = Path(config_dir, "samconfig.toml") config_path.write_text("version='abc'\n[config_env.topic.parameters]\nword='clarity'\n") with self.assertRaises(SamConfigVersionException): - TomlProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]) + ConfigProvider(section=self.parameters)(config_path, self.config_env, [self.cmd_name]) def test_toml_invalid_empty_dict(self): config_dir = tempfile.gettempdir() @@ -59,7 +59,7 @@ def test_toml_invalid_empty_dict(self): config_path.write_text("[topic]\nword=clarity\n") with self.assertRaises(SamConfigFileReadException): - self.toml_provider(config_path, self.config_env, [self.cmd_name]) + self.config_provider(config_path, self.config_env, [self.cmd_name]) def test_toml_invalid_file_name(self): config_dir = tempfile.gettempdir() @@ -68,7 +68,7 @@ def test_toml_invalid_file_name(self): config_path_invalid = Path(config_dir, "samconfig.toml") with self.assertRaises(SamConfigFileReadException): - self.toml_provider(config_path_invalid, self.config_env, [self.cmd_name]) + self.config_provider(config_path_invalid, self.config_env, [self.cmd_name]) def test_toml_invalid_syntax(self): config_dir = tempfile.gettempdir() @@ -76,7 +76,7 @@ def test_toml_invalid_syntax(self): config_path.write_text("version=0.1\n[config_env.topic.parameters]\nword=_clarity'\n") with self.assertRaises(SamConfigFileReadException): - self.toml_provider(config_path, self.config_env, [self.cmd_name]) + self.config_provider(config_path, self.config_env, [self.cmd_name]) class TestCliConfiguration(TestCase): @@ -201,8 +201,8 @@ def test_callback_with_config_file_from_pipe(self): self.assertNotIn(self.value, self.saved_callback.call_args[0]) def test_configuration_option(self): - toml_provider = TomlProvider() - click_option = configuration_option(provider=toml_provider) + config_provider = ConfigProvider() + click_option = configuration_option(provider=config_provider) clc = click_option(self.Dummy()) self.assertEqual(clc.__click_params__[0].is_eager, True) self.assertEqual( @@ -211,7 +211,7 @@ def test_configuration_option(self): ) self.assertEqual(clc.__click_params__[0].hidden, True) self.assertEqual(clc.__click_params__[0].expose_value, False) - self.assertEqual(clc.__click_params__[0].callback.args, (None, None, None, toml_provider)) + self.assertEqual(clc.__click_params__[0].callback.args, (None, None, None, config_provider)) def test_get_ctx_defaults_non_nested(self): provider = MagicMock() diff --git a/tests/unit/commands/delete/test_delete_context.py b/tests/unit/commands/delete/test_delete_context.py index 75559d5416..4aa2f32ee1 100644 --- a/tests/unit/commands/delete/test_delete_context.py +++ b/tests/unit/commands/delete/test_delete_context.py @@ -6,7 +6,7 @@ from samcli.commands.delete.delete_context import DeleteContext from samcli.lib.package.artifact_exporter import Template -from samcli.cli.cli_config_file import TomlProvider +from samcli.cli.cli_config_file import ConfigProvider from samcli.lib.delete.cfn_utils import CfnUtils from samcli.lib.package.s3_uploader import S3Uploader from samcli.lib.package.ecr_uploader import ECRUploader @@ -56,7 +56,7 @@ def test_delete_context_enter(self, patched_boto3): self.assertEqual(delete_context.init_clients.call_count, 1) @patch.object( - TomlProvider, + ConfigProvider, "__call__", MagicMock( return_value=( @@ -121,7 +121,7 @@ def test_delete_no_user_input( self.assertEqual(expected_prompt_calls, patched_prompt.call_args_list) @patch.object( - TomlProvider, + ConfigProvider, "__call__", MagicMock( return_value=( @@ -488,7 +488,7 @@ def test_s3_option_flag(self): self.assertEqual(delete_context.s3_prefix, "s3_prefix") @patch.object( - TomlProvider, + ConfigProvider, "__call__", MagicMock( return_value=(