Skip to content

Latest commit

 

History

History
1203 lines (851 loc) · 65.9 KB

File metadata and controls

1203 lines (851 loc) · 65.9 KB

Changelog

Warning

This version is not released yet and is under active development.

  • Fix ExtraVersionOption.cli_frame() crashing in Nuitka-compiled binaries where all stack frames belong to the Click ecosystem.
  • Fix ExtraVersionOption.module_version returning None in __main__ entry points by checking the parent package's __version__.
  • Fix test plan for Nuitka-compiled binary.
  • Fix test_default_pattern_roaming_force_posix test failures when XDG_CONFIG_HOME is set. Closes {issue}1541.
  • Add ExtraVersionOption.prebake_version() static method to pre-bake __version__ strings with Git hashes at compile time, complementing the runtime version property for Nuitka/PyInstaller binaries.
  • Fix test failures when optional config format dependencies are not installed. Closes {issue}1538.
  • Add _default_subcommands reserved configuration key to auto-invoke subcommands when none are provided on the CLI. Closes {issue}1405.
  • Add _prepend_subcommands reserved configuration key to always prepend subcommands to every invocation (requires chain=True). Closes {issue}1405.
  • Add --validate-config option to validate configuration files.
  • Add ConfigFormat.PYPROJECT_TOML format for [tool.*] section support in pyproject.toml. Closes {issue}1524.
  • Stop parent directory walk on inaccessible directories.
  • Add stop_at parameter to @config_option to limit parent directory walking. Defaults to VCS. Closes {issue}651.
  • Add VCS sentinel and VCS_DIRS constant for VCS root detection.
  • Resolve relative paths to absolute in parent_patterns before yielding.
  • Add included_params allowlist to ConfigOption and @config_option, the inverse of excluded_params. Closes {issue}1362.
  • Add human-friendly display labels to ConfigFormat.
  • Switch back from SPLIT to BRACE flag for multi-format config file patterns. Fixes a bug where only the first format received the directory prefix with SPLIT.
  • Hard code icon workaround for Sphinx index entries.
  • Automatically append Git short hash as a PEP 440 local version identifier to .dev versions (e.g., 1.2.3.dev0+abc1234).
  • Skip Git hash suffix for versions that already contain + (pre-baked local identifiers) to avoid invalid double-suffixed versions.
  • Recognize LLM environment variable to strip ANSI codes when running under an AI agent.

Note

7.5.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow disabling of autodiscovery of configuration files by setting default=NO_CONFIG on @config_option. Closes {issue}1495.
  • Implement resolve_any_xref in ClickDomain to prevent MyST-Parser warning. Closes {issue}1502.
  • Fix subcommand conflict detection checking against root-level params instead of parent params. Closes {pr}1286.

Note

7.5.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix GitHub alerts converter mangling list-table directive content. Closes {issue}1490.
  • Replace Dependabot by Renovate.
  • Move click_extra/docs_update.py to docs/docs_update.py.
  • Add pygments-ansi-color to docs dependency group for lexer table generation.

Note

7.5.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new aligned table format with single-space column separators and no borders.
  • Fix parallel mode support in Sphinx extension. Closes {issue}1482.

Note

7.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix TableFormat.GITHUB to render proper alignment hints in the separator row (:---, :---:, ---:).
  • Move auto-lock time from 8:43 to 4:43.
  • Set cooldown period via the pyproject.toml.
  • Add Download link to project metadata.
  • Include license file in package.
  • Replace deprecated codecov/test-results-action by codecov/codecov-action.
  • Remove utilization workaround for macos-15-intel.
  • Bump requirement of extra-platforms to 8.0.0.

Note

7.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add cooldown period for dependabot and uv.lock updates.
  • Uncap all dependencies.
  • Replace tool.uv section by build-system.
  • Merge all label jobs into a single one.
  • Unlock a CPU core stuck at 100% utilization on macos-15-intel.

Note

7.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add click:source directive as an alias to click:example directive in Sphinx extension.
  • Flag click:example directive as deprecated in favor of click:source.
  • Add support for nested GitHub alerts.
  • Fix fetching version when the CLI is implemented as a standalone script and not as a package module.

Note

7.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for auto-conversion of GitHub alerts into MyST admonitions in Sphinx extension.
  • Rename click-extra demo CLI to click-extra-demo to avoid confusion with the package name.
  • Run tests on ubuntu-slim GitHub Actions runner.
  • Run docs update job on ubuntu-slim runner.

Note

7.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for aliases in EnumChoice type.
  • Register pre-configured render_table() utility in the context when table_format is set, in the same spirit as print_table().

Note

7.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Restore support for @extra_command, @extra_group and @extra_version_option, but mark them as deprecated.

Note

7.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow parent directories search for configuration files. Adds search_parents argument on @config_file. Closes {issue}651.
  • Allow fine-tuning of configuration file format pattern matching. Replaces formats argument on @config_file by file_format_patterns.
  • Adds search_pattern_flags and file_pattern_flags arguments on @config_file to allow user to tweak pattern matching behavior.
  • Use | as separator for multiple file patterns instead of {,} syntax. Replace glob.BRACE by glob.SPLIT for search pattern flags. Force glob.SPLIT for file pattern flags.
  • Remove glob.IGNORECASE flag to make case-sensitivity determined by the underlying platform at runtime.
  • Force glob.NODIR for search pattern flags to speed up search.
  • Rename click_extra.config.Formats enum to click_extra.config.ConfigFormat. Expose it at the root click_extra module.
  • Eat our own dog food: add a click-extra CLI to run self-tests.
  • Override base decorators and classes with Click Extra's own variants:
    • @command now points to what was @extra_command.
    • @group now points to what was @extra_group.
    • Option class now points to click_extra.Option, which is a subclass of cloup.Option.
    • Argument class now points to click_extra.Argument, which is a subclass of cloup.Argument.
    • @option now instantiates click_extra.Option by default.
    • @argument now instantiates click_extra.Argument by default.
    • @version_option now points to what was @extra_version_option.
    • Now if you want to use the previous aliases to Click's and Cloup's originals, import them directly from click or cloup instead of click_extra, which makes origination clearer.
  • Remove @extra_command, @extra_group and @extra_version_option.
  • Remove no_redefined argument in click_extra.pytest.command_decorators() method.
  • Validates that classes passed to the cls parameter of decorators are subclasses of the expected base classes.
  • Normalize the default value of EnumChoice parameters to their string choice representation in help screens.
  • Run tests on Python 3.14t and 3.15t free-threaded variants.

Note

6.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new EnumChoice type for fine-tunable Enum-based choices. Expose EnumChoice and ChoiceSource at the root click_extra module.
  • Relax dependencies to support Python 3.10. Closes {issue}1385.
  • Re-introduce tomli dependency for Python 3.10 users.
  • Skip tests on intermediate Python versions (3.11, 3.12 and 3.13) to reduce CI load.

Note

6.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for JSON5, JSONC and HJSON configuration files.
  • YAML and XML configuration support is now optional. You need to install the click_extra[yaml] and click_extra[xml] extra dependency groups to enable it.
  • Add new @lazy_group decorator and LazyGroup class to create groups that only load their subcommands when invoked. Closes {issue}1332.
  • Move all custom types to click_extra._types module.
  • Avoid importing all types at runtime to reduce startup time.
  • Upgrade tests runs from macos-13 to macos-15-intel, and from macos-15 to macos-26.
  • Use astral-sh/setup-uv action to install uv.

Note

6.0.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix regex_fullmatch_line_by_line to accept compiled regex patterns as well as string patterns.

Note

6.0.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Add a new regex_fullmatch_line_by_line utility to compare a wall of text against a regex, line by line, and raise a custom RegexLineMismatch exception on the first mismatch.

Note

6.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix @config_option to accept Path objects as default value. Closes {issue}1356.
  • Add official support of Python 3.14.
  • Run tests on Python 3.15-dev.

Note

6.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new variables for version string template: {git_repo_path}, {git_branch}, {git_long_hash}, {git_short_hash} and {git_date}.
  • Add a new --no-config option on @extra_command and @extra_group to disable configuration files. Closes {issue}750.
  • Add --table-format option by default on @extra_command and @extra_group.
  • Let --table-format and --no-color affect the rendering of --show-params table.
  • Swap Class and Spec. columns in --show-params output.
  • Remove the -C short option associated with --config.
  • Remove the -t short option associated with --table-format.
  • Classify table formats into two categories: markup formats and plain-text formats.
  • Rename all table format identifiers to use dashes instead of underscores:
    • double_griddouble-grid
    • double_outlinedouble-outline
    • fancy_gridfancy-grid
    • fancy_outlinefancy-outline
    • heavy_gridheavy-grid
    • heavy_outlineheavy-outline
    • latex_booktabslatex-booktabs
    • latex_longtablelatex-longtable
    • latex_rawlatex-raw
    • mixed_gridmixed-grid
    • mixed_outlinemixed-outline
    • rounded_gridrounded-grid
    • rounded_outlinerounded-outline
    • simple_gridsimple-grid
    • simple_outlinesimple-outline
  • Fix display in --show-params for parameters sharing the same name.
  • Fix detection in the --version option of the module in which the user's CLI is implemented.
  • Rename click_extra.tabulate namespace to click_extra.table.
  • Expose click._utils.UNSET and click.logging.LogLevel at the root click_extra module.
  • Replace unmaintained mergedeep dependency by deepmerge.
  • Remove maximum capped version of all dependencies (relax all ~= specifiers to >=). This gives more freedom to downstream and upstream packagers. Document each minimal version choice.
  • Add unit tests for Sphinx extension.
  • Render GitHub-Flavored Markdown admonitions in Sphinx.

Note

5.1.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Relax Click dependency to account for yanked release. Closes {issue}1307.

Note

5.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for MyST Markdown syntax for click:example and click:run Sphinx directives.
  • Add support for all code-block options to click:example and click:run: :linenos:, :lineno-start:, :emphasize-lines:, :force:, :caption:, :name:, :class: and :dedent:.
  • Add new :show-source:/:hide-source:, :show-results:/:hide-results: and :language: options to click:example and click:run. Closes {issue}719.
  • Support non-string choices in colored help screens. Closes {issue}1284.
  • Replace LOG_LEVELS mapping with LogLevel enum.
  • Remove DEFAULT_LEVEL_NAME constants.
  • Fix rendering of default values in --show-params output.
  • Fix reconciliation of flags' environment variables.
  • Force requirement on cloup >= 3.0.7.
  • Be more informative when error is found in click:example and click:run Sphinx directives by displaying the path of the original document and the line number of the error.

Note

5.0.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Set ExtraCommand default prog_name to CLI's name to avoid it to be named python -m <module_name> if invoked out of a module.
  • Tweak exit code rendering of CLI runs.

Note

5.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix highlighting of deprecated messages.
  • Use ASCII characters instead of unicode for prompt rendering in messages.

Note

5.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Upgrade to Click 8.2.0.
  • Add support for custom deprecated messages on commands and parameters.
  • Remove ExtraOption.get_help_default() and rely on new Option.get_help_extra().
  • Remove dependency on pallets-sphinx-themes.
  • Drop supports for Python 3.10.
  • Add windows-11-arm to the test matrix.
  • Remove tests on ubuntu-22.04-arm, ubuntu-22.04 and windows-2022 to keep matrix small.

Note

4.15.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Regroup all envronment variables-related code.
  • Rename extend_envvars() to merge_envvar_ids() and allow it to merge arbitrary-nested structures. Normalize names to uppercase on Windows.
  • Rename normalize_envvar() to clean_envvar_id().
  • Rename all_envvars() to param_envvar_ids().
  • Rename auto_envvar() to param_auto_envvar_id().
  • Remove unused normalize parameter on all_envvars().
  • Add missing line returns in render_cli_run().
  • Prefix all types with capital-T.

Note

4.14.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Extract rendering part of the print_cli_run() helper to render_cli_run().
  • Remove unused click_extra.testing.run_cmd.
  • Relax requirement on extra-platforms.
  • Add tests on windows-2025. Remove tests on windows-2019.

Note

4.14.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix upload of Python package to GitHub release on tagging.

Note

4.14.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add a new --verbose option on @extra_command and @extra_group to increase the verbosity level for each additional repetition.
  • Add new @verbose_option pre-configured decorator.
  • Reassign the short -v option from --verbosity to --verbose.
  • Improve logging documentation.
  • Align ExtraStreamHandler behavior to logging.StreamHandler.
  • Move stream_handler_class and formatter_class arguments from new_extra_logger to extraBasicConfig.
  • Add new file_handler_class argument to extraBasicConfig.
  • Fix upload of Python package to GitHub release on tagging.
  • Remove dependency on pytest-cases.

Note

4.13.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Re-release to fix Github publishing.
  • Reactivates some color tests on Windows.

Note

4.13.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Re-release to fix Github publishing.

Note

4.13.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Revamps logging helpers and aligns them with Python's logging module.
  • Remove extra_basic_config.
  • Adds new extraBasicConfig, and aligns it with Python's basicConfig.
  • Replace ExtraLogFormatter with ExtraFormatter.
  • Replace ExtraLogHandler with ExtraStreamHandler.
  • Add new new_extra_logger helper.
  • Rewrite the logging documentation with all use-cases and custom configuration examples. Closes {issue}989.
  • Removes old platforms page from documentation.

Note

4.12.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Remove Click Extra's own implementation of HelpOption class now that fixes have reached Click's upstream.
  • Redefine @help_option decorator to default to --help/-h options.
  • Add more logging examples in documentation.
  • Add tests on ubuntu-24.04-arm and ubuntu-22.04-arm.
  • Use uv to install specific versions of Python.

Note

4.11.7 is available on 🐍 PyPI and 🐙 GitHub.

  • Remove support for comments in JSON configuration files. Remove dependency on unmaintained commentjson. Closes click-extra#1152.

Note

4.11.6 is available on 🐍 PyPI and 🐙 GitHub.

  • Make --timer option eager so it can jumps the queue of processing order.
  • Fix configuration of help option generated by the help_option_names context setting. Closes mail-deduplicate#762.
  • Fix eagerness of help option generated by help_option_names. Refs click#2811.
  • Display generated help option in --show-params results.
  • Force UTF-8 encoding everywhere.

Note

4.11.5 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow replace_content() utility method to replace any content found after the start tag.

Note

4.11.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Ignore hidden options when coloring help screen.

Note

4.11.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Aligns dependencies.

Note

4.11.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Aligns dependencies.

Note

4.11.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix tests against development version of Click.

Note

4.11.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for Python 3.13.
  • Drop supports for Python 3.9.
  • Run tests on Python 3.14-dev.
  • Add tests on ubuntu-24.04. Remove tests on ubuntu-20.04.
  • Upgrade tests from macos-14 to macos-15.

Note

4.10.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Move all platform detection utilities to its own standalone Extra Platforms project.
  • Add dependency on extra-platforms.

Note

4.9.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Switch from Poetry to uv.
  • Drop support for Python 3.8.
  • Mark Python 3.13-dev tests as stable.
  • Remove dependency on regex.

Note

4.8.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix string interpolation in log message.

Note

4.8.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Do not raise error if package version cannot be fetched.

Note

4.8.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Do not fail on docs_update import if pygments is not installed.

Note

4.8.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Slim down package by moving unit tests out of the main package.
  • Allow reuse of Pytest fixures and marks by other packages.
  • Move dependencies extending pygments, sphinx and pytest into optional extra dependencies. Closes {issue}836.
  • Split dev dependency groups into optional test, typing and docs groups.
  • Remove direct dependency on mypy.
  • Allow running tests with Python 3.8 and 3.9 on macos-14 runners.

Note

4.7.5 is available on 🐍 PyPI and 🐙 GitHub.

  • Remove bypass of cloup.Color re-import.

Note

4.7.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow standalone --version option to output its debug messages.
  • Force closing of context before exiting CLIs to provoque callback calls and prevent state leaks.
  • Run tests on macos-14. Remove tests on macos-12.

Note

4.7.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Run tests on Python 3.13-dev branch.

Note

4.7.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Run tests on released Python 3.12 version.

Note

4.7.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Distinguish between parameter type and Python type in --show-params output.
  • Recognize custom parameter type as string-based. Closes {issue}721.
  • Rely on bump-my-version to update citation file metadata.

Note

4.7.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Switch to format string style for version template.
  • Add new variables for version string template: {module}, {module_name}, {module_file}, {module_version}, {package_version} and {exec_name}.
  • Remove support for Click-specific %(prog) and %(package) variables in version string.
  • Print all versions string variables in debug mode.

Note

4.6.5 is available on 🐍 PyPI and 🐙 GitHub.

  • Highlight required label and value range in option description. Closes {issue}748.

Note

4.6.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix collection of subcommand parameters in --show-params output. Closes {issue}725.
  • Set %(package_name) in --version to file name for CLI that are standalone scripts and not packaged. Fix {issue}729.
  • Allow standalone scripts to define a local __version__ variable to set the %(version) element in --version output.
  • Allow building of documentation with Sphinx 7.
  • Run tests on macos-13. Remove tests on macos-11.
  • Ignore unstable tests on upcoming Click 8.2.x / main branch.

Note

4.6.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Forces ExtraContext to properly close itself before exiting the program, to trigger all callbacks.

Note

4.6.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Remove workaround for Cloup handling of command_class default on custom groups.
  • Force @extra_group to produce sub-groups of the same class.

Note

4.6.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Inspect in --version the whole execution stack to find the package in which the user's CLI is implemented.

Note

4.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Keep the promise of drop-in replacement for @version_option which is now a proxy to Click's original.
  • Rename the colored, enhanced --version option to @extra_version_option for its decorator, and ExtraVersionOption for its class.
  • Activate colors on @extra_command and @extra_group by default, even if stripped of all their default parameters. Closes {issue}534 and {pr}543.
  • Expose location and content of user's configuration file in the Context's meta property. Closes {issue}673.
  • Render specs of hidden parameters in --show-params output. Fixes {issue}689.
  • Swap Exposed and Allowed in conf? columns in --show-params output.
  • Add a hidden column to --show-params output. Refs {issue}689.

Note

4.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Expose verbosity level name, table format ID and CLI start timestamp in the Context's meta property.
  • Refactor VersionOption. Introduce internal caching.
  • Expose version string elements in the Context's meta property. Closes {issue}325.
  • Remove print_env_info option from VersionOption class and version_option decorators.
  • Add new %(env_info) element. Default value is the same as what the removed print_env_info produced (i.e. a JSON dump of the environment).
  • Allow %(env_info) value to be set by user on --version.
  • Rename in version string formatting the %(prog) element to %(prog_name), and %(package) to %(package_name).
  • Detect Click-specific %(prog) and %(package) and raise a deprecated warning.
  • Do not print environment info in --version by default. Change default message from %(prog)s, version %(version)s\n%(env_info) to %(prog_name)s, version %(version)s.
  • Automaticcaly augment version string with environment info in DEBUG log level.
  • Expose click_extra.search_params utility.

Note

4.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add a reduce() utility to reduce a collection of Group and Platform to a minimal set.
  • Remove @destructive and @non_destructive pytest markers.
  • Rename the exclude_params argument of ParamStructure and ConfigOption to excluded_params.
  • Fix over-styling of usage heading in help screen.
  • Move bump-my-version configuration to pyproject.toml.
  • Remove bump2version from dev dependencies, and let the external workflows install it.
  • Remove workaround for pallets-sphinx-themes's outdated reference to old click's Python 2 compatibility hack.

Note

4.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Colorize envvars and default values in --show-params option.
  • Keep <stdout> and <stderr> streams independent in ExtraCliRunner.
  • Always collect <stderr> output and never raise an exception.
  • Add a new <output> stream to simulate what the user sees in its terminal.
  • Only mix <stdout> and <stderr> in <output> when mix_stderr=True.
  • Print detailed CLI execution trace in logs.
  • Document inline tests in Sphinx CLI execution blocks.
  • Improve Pygments ANSI formatter and lexers documentation.
  • Document usage of pygmentize command line.
  • Regroup all parameter-related code.
  • Regroup all testing and CLI execution utilities.
  • Activate zoom on big Mermaid graphs.

Note

4.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for dedicated styling of environment variables, defaults, command aliases, aliases punctuation, subcommands and deprecated tag in help screen.
  • Update default colors of help screen to improve readability.
  • Change default style of critical log messages' prefix to bold red.
  • Document the full matrix of colors and styles.
  • Render bright variants of ANSI colors in documentation.
  • Dynamically patch the style provided to AnsiHtmlFormatter to augment it with ANSI colors.
  • Remove main dependency on furo, make it a development dependency.
  • Remove the custom ansi-click-extra-furo-style Pygments style for Furo and its AnsiClickExtraFuroStyle class.

Note

4.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new global show_envvar option to display all environment variables in help screens.
  • Global show_choices setting to show or hide choices when prompting a user for input.
  • Populate the Allowed in conf? column in --show-params output if there is a --config option in the command.
  • Print all modified loggers and their levels in DEBUG mode.
  • Directly download Pygments source code from GitHub to check for candidates for ANSI-coloring in unittests.
  • Test continuously against Click and Cloup development version. Closes {issue}525.
  • Move click_extra.commands.TimerOption to click_extra.timer.TimerOption.

Note

4.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Drop support for Python 3.7.
  • Add a simple --telemetry/--no-telemetry option flag which respects the DO_NOT_TRACK environment variable.
  • Add new populate_auto_envvars parameter to @extra_command/@extra_group decorators to allow auto-generated environment variables to be displayed in help screens.
  • Display all environment variables in --show-params output, including those auto-generated by the way of the auto_envvar_prefix context parameter.
  • Allow user to override hard-coded context defaults on @extra_command/@extra_group.
  • Change default log level from INFO to WARNING to aligns with Python's global root logger.
  • Force resetting of log level on --verbosity's context closing to the hard-coded default.
  • Use a dedicated click_extra logger for all internal messages, instead of sending them to the user-defined one.
  • Aligns click_extra logger level to --verbosity option level.
  • Set default logger of --verbosity to Python's global root logger, instead a local wrapped logger. Closes {issue}318.
  • Allow user to provide a string as the default logger to --verbosity that will be used to fetch the global logger singleton of that name. Closes {issue}318.
  • Only colorize the %(levelname)s field during log record formatting, not the : message separator.
  • Prefix INFO-level log message with info: prefix by default.
  • Raise an error if multiple --version options are defined in the same command. Closes {issue}317.
  • Remove dependency on click-log.
  • Remove supports for Pallets-Sphinx-Themes < 2.1.0.
  • Force closing of the context before stopping the execution flow, to make sure all callbacks are called.
  • Fix rendering of GitHub-Flavored Markdown tables in canonical format.

Note

3.10.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Colorize help screens of subcommands spawned out of an @extra_group. Closes {issue}479.
  • Remove deprecated click_extra.platform.

Note

3.9.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow @color_option, @command, @config_option, @extra_command, @extra_group, @group, @help_option, @show_params_option, @table_format_option, @timer_option, @verbosity_option and @version_option decorators to be used without parenthesis.
  • Fix wrapping of Cloup decorators by @extra_group/@extra_command decorators. Closes {issue}489.
  • Add main dependency on furo which is referenced in ANSI-aware Pygment styles.
  • Move all documentation assets to assets subfolder.

Note

3.8.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Let --version option output system details when run on python >= 3.10.

Note

3.8.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix overlapping detection of linux and wsl2 platforms.
  • Renders platform groups in documentation in Mermaid format instead of Graphviz. Add new dependency on sphinxcontrib-mermaid, removed dependency on graphviz.
  • Produce dependency graph in Mermaid instead of Graphviz.

Note

3.8.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Code, comments and documentation style change to conform to new QA workflows based on ruff.

Note

3.8.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Rename click_extra.platform to click_extra.platforms.
  • Refactor platforms and their groups with dataclasses instead of string IDs.
  • Add new LINUX_LAYERS, ALL_WINDOWS, BSD_WITHOUT_MACOS, EXTRA_GROUPS and ALL_GROUPS groups.
  • Add new dependency on graphviz.
  • Activate Graphviz extension in Sphinx.
  • Let Sphinx produce the dependency graph from Graphviz file.
  • Produce platform graph dynamically.
  • Rename docs.py to docs_update.py and allow this module to be called directly.

Note

3.7.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for new ANSI-capable lexers: ansi-gap-console and ansi-gap-repl.
  • Auto-update table of supported lexers in documentation.
  • Add test to search in Pygments' test data for REPL/terminal-like lexers, as candidates for ANSI-coloring.
  • Depends on importlib_metadata for Python < 3.8.

Note

3.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new constants to group platforms by family.
  • Add heuristics to recognize new platforms: IBM AIX, Cygwin, FreeBSD, GNU/Hurd, NetBSD, OpenBSD, Oracle Solaris, SunOS, Windows Subsystem for Linux v1 and v2.
  • Document version option usage.
  • Split version code to its own file and tests.
  • Run tests on Python 3.12-dev.

Note

3.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Print fully qualified class of options in --show-params output.
  • Add new columns in --show-params table to show option specifications, configuration exclusion and exposed attribute.
  • Rename ignored_params argument to exclude_params on the ConfigOption class.
  • Blocking parameters from configuration files now requires the fully qualified ID. Which adds support for selectively blocking parameters at any subcommand level.

Note

3.4.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix highlighting of +-prefixed options in help screens. Closes {issue}316.
  • Fix highlighting of hard-coded deprecated labels in option help.
  • Document parameter introspection. Closes {issue}319.

Note

3.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Streamline setup of Sphinx extensions.
  • Document click:example and click:run Sphinx extensions.

Note

3.3.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix some types.

Note

3.3.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix release workflow.

Warning

3.3.2 is not available on 🐍 PyPI.

Note

3.3.2 is available on 🐙 GitHub.

  • Remove use of deprecated ::set-output directives and replace them by environment files.

Note

3.3.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Keep a copy of the table format ID in the context when set.

Note

3.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Use tabulate dependency instead of cli-helpers for all the table rendering utilities.
  • Remove dependency on cli-helpers.
  • Re-implement locally the vertical table rendering format from cli-helpers.
  • Add new table rendering formats: asciidoc, fancy_outline, heavy_grid, heavy_outline, latex_longtable, latex_raw, mixed_grid, mixed_outline, presto, pretty, unsafehtml and youtrack.
  • Remove minimal table rendering formats, which was an alias of plain.
  • Add new csv-excel, csv-excel-tab and csv-unix formats based on Python defaults dialects.
  • Remove csv-tab rendering format.
  • Make csv format an alias of csv-excel.
  • Deactivate number alignment and extra-spacing in table rendering by default.
  • Remove tests on Pypy. Nobody asked for it and I need to speed up tests.

Note

3.2.5 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix argument's property getter in --show-params.
  • Remove GitHub edit link workaround in documentation.

Note

3.2.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Add citation file.
  • Fix type casting.

Note

3.2.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Increase type coverage.

Note

3.2.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix bad typing import.

Note

3.2.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Move some command utility from test machinery to run submodule.

Note

3.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • New --show-params option to debug parameters defaults, values, environment variables and provenance.
  • Rename ignored_options to ignored_params on ConfigOption.
  • Highlight command's metavars, default values and deprecated flag in help.
  • Finer highlighting of options, subcommands and their aliases in help screens.
  • Fix highlight of dynamic metavars and secondary option in help screen.
  • New custom ExtraContext which allows populating meta at instantiation.
  • Use the Formats enum to encode for default configuration file extensions.
  • Re-introduce *.yml as a possible extension for YAML files.

Note

3.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for pattern matching to search for configuration file.
  • Add a new formats option to specify which dialects the configuration file is written in, regardless of its name or file extension. Closes {issue}197.
  • Set default configuration folder according each OS preferred location. Closes {issue}211.
  • Add roaming and force_posix option to influence default application directory of configuration file.
  • Add a ignored_options parameter to the configuration file instead of hard-coding them.
  • Add dependency on wcmatch.
  • Remove tests on deprecated ubuntu-18.04.
  • Document preset options overriding. Closes {issue}232.
  • Document configuration option pattern matching and default folder. Closes {issue}197 and {issue}211.

Note

3.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix wrong dependency bump on pytest-cov produced by major release.

Note

3.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Make default extra features optional, so click_extra can act as a drop-in replacement for click and cloup (closes {issue}173):
    • Rename click_extra.group to click_extra.extra_group.
    • Rename click_extra.command to click_extra.extra_command.
    • Alias click_extra.group to cloup.group.
    • Alias click_extra.command to cloup.group.
  • Use declarative params= argument to set defaults options on extra_command and extra_group.
  • Move the implementation of options to classes.
  • Hard-copy version_option code from click to allow for more flexibility. Addresses {issue}176.
  • All custom options inherits from ExtraOption class.
  • New extra_option_at_end to extra_command to force position of all extra options (on by default).
  • Replace theme styles inherited from click-log by Python standard logging module. Adds info and removes exception styles.
  • Add a tutorial in documentation.
  • Add support for click:example and click:run directives in documentation.
  • Add ANSI session and console lexers for Pygments.
  • Add a Pygments filter to transform tokens into ANSI tokens.
  • Add custom Pygment style to render ANSI tokens in furo theme.
  • Add dependency on pygments, pygments-ansi-color and Pallets-Sphinx-Themes.
  • Allow translation of short help in extra options.
  • Add minimal type hints.
  • Pre-compute test matrix to allow for a subset of jobs to fail if flagged as unstable.
  • Run tests on ubuntu-22.04 and macos-12.
  • Remove tests on deprecated macos-10.15.

Note

2.1.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Do not render None cells in tables with <null> string.
  • Disable workflow grouping and concurrency management.

Note

2.1.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix auto-mapping and recognition of all missing Click option types in config module. Closes {issue}170.
  • Fix CI workflow grouping.

Note

2.1.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix compatibility with cloup >= 0.14.0.
  • Group workflow jobs so new commits cancels in-progress execution triggered by previous commits.
  • Run tests on early Python 3.11 releases.

Note

2.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add a highlight utility to style substrings.
  • Add regex dependency.

Note

2.0.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix and unittest derivation of configuration template and types from CLI options.
  • Fix dependency requirements induced by overzealous automatic post-release version bump workflow.
  • Replace sphinx_tabs by sphinx-design.
  • Add edit link to documentation pages.

Note

2.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix mapping of file arguments in configuration files.
  • Fix Sphinx documentation update and publishing.
  • Run tests on pypy-3.7.

Note

2.0.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for XML configuration file. Closes {issue}122.
  • Add strict mode to fail on unrecognized configuration options.
  • Support the NO_COLOR environment variable convention from no-color.org.
  • Recognize a subset of (FORCE_)(CLI)(NO_)COLOR(S)(_FORCE) variations as color-sensitive environment variables.
  • Print version and environment details in logs at the DEBUG level.
  • Add Sphinx-based documentation.
  • Add a logo.
  • Outsource documentation publishing to external workflow.

Note

1.9.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add supports for .ini configuration files.
  • Add supports for commented JSON configuration files.
  • Fix identification of TOML and JSON configuration files.
  • Fix leak of local environment variable update on extend_env() usage.
  • Ignore help boolean in configuration files.
  • Add new dependency on mergedeep.

Note

1.8.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Split the print_cli_output method to expose the simpler format_cli utility.

Note

1.7.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Refactor global logging management.
  • Remove click_extra.run.run and rebase all run utilities around subprocess.run.
  • Use the tomllib from the standard library starting with Python 3.11.

Note

1.6.4 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix extension of default environment variables.

Note

1.6.3 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for environment variables to run utilities.

Note

1.6.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Temporarily skip displaying environment details in --version option results for python >= 3.10.
  • Reactivate all tests on Python 3.10.

Note

1.6.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Expose some cloup versions of click utilities at the root of click_extra.

Note

1.6.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow click_extra to be imported as a drop-in replacement for click.
  • Share the same set of default options between click_extra.command and click_extra.group.
  • Document default help screen comparison between simple click CLI and enhanced click-extra CLI.

Note

1.5.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for JSON configuration file.
  • Search all supported formats in default location if configuration file not provided.
  • Print configuration file default location in help screens.

Note

1.4.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Add new external workflow to modernize Python code.
  • Use external workflow suite to manage changelog and build & publish packages on PyPi on release.
  • Use external workflow to label sponsored issues and PRs.
  • Replace local workflow by external one to label issues and PRs.
  • Reuse externnal workflow to produce dependency graph.
  • Remove dev dependencies on check-wheel-contents, graphviz, pipdeptree and twine.

Note

1.4.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Allow downloading of a remote config URL.
  • Add new dependencies on requests and pytest-httpserver.
  • Fix inference of config file top-level section name.
  • Document usage of click_extra.config.config_option.
  • Use external workflows for GitHub actions.
  • Automate version and changelog management.

Note

1.3.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add support for YAML configuration file. Closes #13.
  • Auto-detect configuration file on loading.
  • Add pyyaml dependency.

Note

1.2.2 is available on 🐍 PyPI and 🐙 GitHub.

  • Evaluate format option dynamically at use to let third-party register new rendering formats.

Note

1.2.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix creation of post-release version bump PR on tagging.

Note

1.2.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Extend cli-helper.TabularOutputFormatter with new formats: simple_grid, rounded_grid, double_grid, outline, simple_outline, rounded_outline and double_outline. Address {issue}astanin/python-tabulate#151.
  • Add a new --table-format/-t option to select table format rendering mode.
  • Add new dependency on cli-helper and tabulate.
  • Automate post-release version bump.

Note

1.1.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Fix printing of additional non-grouped default options in help screen.

Note

1.1.0 is available on 🐍 PyPI and 🐙 GitHub.

  • Add a --config/-C option to load CLI configuration from a TOML file.

Note

1.0.1 is available on 🐍 PyPI and 🐙 GitHub.

  • Re-release previous version with fixed dependency.

Warning

1.0.0 is not available on 🐍 PyPI.

Note

1.0.0 is available on 🐙 GitHub.

  • Add colorization of options, choices and metavars in help screens.
  • Add --color/--no-color option flag (aliased to --ansi/--no-ansi).
  • Add colored --version option.
  • Add colored --verbosity option and logs.
  • Add dependency on click-log.
  • --time/--no-time flag to measure duration of command execution.
  • Add platform recognition utilities.
  • Add new conditional markers for pytest: @skip_{linux,macos,windows}, @unless_{linux,macos,windows}, @destructive and @non_destructive.

Note

0.0.1 is the first version available on 🐍 PyPI and 🐙 GitHub.

  • Initial public release.