Important
This version is not released yet and is under active development.
- 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. Closesmail-deduplicate#762
. - Fix eagerness of help option generated by
help_option_names
. Refsclick#2811
. - Display generated help option in
--show-params
results. - Force UTF-8 encoding everywhere.
- Allow
replace_content()
utility method to replace any content found after the start tag.
- Ignore hidden options when coloring help screen.
- Aligns dependencies.
- Aligns dependencies.
- Fix tests against development version of Click.
- 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 onubuntu-20.04
. - Upgrade tests from
macos-14
tomacos-15
.
- Move all platform detection utilities to its own standalone Extra Platforms project.
- Add dependency on
extra-platforms
.
- Switch from Poetry to
uv
. - Drop support for Python 3.8.
- Mark Python 3.13-dev tests as stable.
- Remove dependency on
regex
.
- Fix string interpolation in log message.
- Do not raise error if package version cannot be fetched.
- Do not fail on
docs_update
import ifpygments
is not installed.
- 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
andpytest
into optional extra dependencies. Closes {issue}836
. - Split
dev
dependency groups into optionaltest
,typing
anddocs
groups. - Remove direct dependency on
mypy
. - Allow running tests with Python 3.8 and 3.9 on
macos-14
runners.
- Remove bypass of
cloup.Color
re-import.
- 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 onmacos-12
.
- Run tests on Python 3.13-dev branch.
- Run tests on released Python 3.12 version.
- 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.
- 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.
- Highlight required label and value range in option description. Closes {issue}
748
.
- 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 onmacos-11
. - Ignore unstable tests on upcoming Click
8.2.x
/main
branch.
- Forces
ExtraContext
to properly close itself before exiting the program, to trigger all callbacks.
- Remove workaround for Cloup handling of
command_class
default on custom groups. - Force
@extra_group
to produce sub-groups of the same class.
- Inspect in
--version
the whole execution stack to find the package in which the user's CLI is implemented.
- 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, andExtraVersionOption
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
andAllowed in conf?
columns in--show-params
output. - Add a
hidden
column to--show-params
output. Refs {issue}689
.
- 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 fromVersionOption
class andversion_option
decorators. - Add new
%(env_info)
element. Default value is the same as what the removedprint_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.
- Add a
reduce()
utility to reduce a collection ofGroup
andPlatform
to a minimal set. - Remove
@destructive
and@non_destructive
pytest markers. - Rename the
exclude_params
argument ofParamStructure
andConfigOption
toexcluded_params
. - Fix over-styling of usage heading in help screen.
- Move
bump-my-version
configuration topyproject.toml
. - Remove
bump2version
from dev dependencies, and let the external workflows install it. - Remove workaround for
pallets-sphinx-themes
's outdated reference to oldclick
's Python 2 compatibility hack.
- Colorize envvars and default values in
--show-params
option. - Keep
<stdout>
and<stderr>
streams independent inExtraCliRunner
. - 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>
whenmix_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.
- 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 itsAnsiClickExtraFuroStyle
class.
- 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
toclick_extra.timer.TimerOption
.
- Drop support for Python 3.7.
- Add a simple
--telemetry
/--no-telemetry
option flag which respects theDO_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 theauto_envvar_prefix
context parameter. - Allow user to override hard-coded context defaults on
@extra_command
/@extra_group
. - Change default log level from
INFO
toWARNING
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 globalroot
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 withinfo:
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.
- Colorize help screens of subcommands spawned out of an
@extra_group
. Closes {issue}479
. - Remove deprecated
click_extra.platform
.
- 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.
- Let
--version
option output system details when run onpython >= 3.10
.
- Fix overlapping detection of
linux
andwsl2
platforms. - Renders platform groups in documentation in Mermaid format instead of Graphviz. Add new dependency on
sphinxcontrib-mermaid
, removed dependency ongraphviz
. - Produce dependency graph in Mermaid instead of Graphviz.
- Code, comments and documentation style change to conform to new QA workflows based on
ruff
.
- Rename
click_extra.platform
toclick_extra.platforms
. - Refactor platforms and their groups with dataclasses instead of string IDs.
- Add new
LINUX_LAYERS
,ALL_WINDOWS
,BSD_WITHOUT_MACOS
,EXTRA_GROUPS
andALL_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
todocs_update.py
and allow this module to be called directly.
- Add support for new ANSI-capable lexers:
ansi-gap-console
andansi-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
forPython < 3.8
.
- 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
.
- 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 toexclude_params
on theConfigOption
class. - Blocking parameters from configuration files now requires the fully qualified ID. Which adds support for selectively blocking parameters at any subcommand level.
- 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
.
- Streamline setup of Sphinx extensions.
- Document
.. click:example::
and.. click:run::
Sphinx extensions.
- Fix some types.
- Fix release workflow.
- Remove use of deprecated
::set-output
directives and replace them by environment files.
- Keep a copy of the table format ID in the context when set.
- Use
tabulate
dependency instead ofcli-helpers
for all the table rendering utilities. - Remove dependency on
cli-helpers
. - Re-implement locally the
vertical
table rendering format fromcli-helpers
. - Add new table rendering formats:
asciidoc
,fancy_outline
,heavy_grid
,heavy_outline
,latex_longtable
,latex_raw
,mixed_grid
,mixed_outline
,presto
,pretty
,unsafehtml
andyoutrack
. - Remove
minimal
table rendering formats, which was an alias ofplain
. - Add new
csv-excel
,csv-excel-tab
andcsv-unix
formats based on Python defaults dialects. - Remove
csv-tab
rendering format. - Make
csv
format an alias ofcsv-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.
- Fix argument's property getter in
--show-params
. - Remove GitHub edit link workaround in documentation.
- Add citation file.
- Fix type casting.
- Increase type coverage.
- Fix bad typing import.
- Move some command utility from test machinery to
run
submodule.
- New
--show-params
option to debug parameters defaults, values, environment variables and provenance. - Rename
ignored_options
toignored_params
onConfigOption
. - 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 populatingmeta
at instantiation. - Use the
Formats
enum to encode for default configuration file extensions. - Re-introduce
*.yml
as a possible extension for YAML files.
- 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
andforce_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 ovveriding. Closes {issue}
232
. - Document configuration option pattern matching and default folder. Closes {issue}
197
and {issue}211
.
- Fix wrong dependency bump on
pytest-cov
produced by major release.
- Make default extra features optional, so
click_extra
can act as a drop-in replacement forclick
andcloup
(closes {issue}173
):- Rename
click_extra.group
toclick_extra.extra_group
. - Rename
click_extra.command
toclick_extra.extra_command
. - Alias
click_extra.group
tocloup.group
. - Alias
click_extra.command
tocloup.group
.
- Rename
- Use declarative
params=
argument to set defaults options onextra_command
andextra_group
. - Move the implementation of options to classes.
- Hard-copy
version_option
code fromclick
to allow for more flexibility. Addresses {issue}176
. - All custom options inherits from
ExtraOption
class. - New
extra_option_at_end
toextra_command
to force position of all extra options (on by default). - Replace theme styles inherited from
click-log
by Python standardlogging
module. Addsinfo
and removesexception
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
andPallets-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
andmacos-12
. - Remove tests on deprecated
macos-10.15
.
- Do not render
None
cells in tables with<null>
string. - Disable workflow grouping and concurrency management.
- Fix auto-mapping and recognition of all missing Click option types in config module. Closes {issue}
170
. - Fix CI workflow grouping.
- 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.
- Add a
highlight
utility to style substrings. - Add
regex
dependency.
- 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
bysphinx-design
. - Add edit link to documentation pages.
- Fix mapping of file arguments in configuration files.
- Fix Sphinx documentation update and publishing.
- Run tests on
pypy-3.7
.
- 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 fromno-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.
- 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
.
- Split the
print_cli_output
method to expose the simplerformat_cli
utility.
- Refactor global logging management.
- Remove
click_extra.run.run
and rebase all run utilities aroundsubprocess.run
. - Use the
tomllib
from the standard library starting with Python 3.11.
- Fix extension of default environment variables.
- Add support for environment variables to run utilities.
- Temporarily skip displaying environment details in
--version
option results forpython >= 3.10
. - Reactivate all tests on Python 3.10.
- Expose some
cloup
versions ofclick
utilities at the root ofclick_extra
.
- Allow
click_extra
to be imported as a drop-in replacement forclick
. - Share the same set of default options between
click_extra.command
andclick_extra.group
. - Document default help screen comparison between simple
click
CLI and enhancedclick-extra
CLI.
- 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.
- 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
andtwine
.
- Allow downloading of a remote config URL.
- Add new dependencies on
requests
andpytest-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.
- Add support for YAML configuration file. Closes #13.
- Auto-detect configuration file on loading.
- Add
pyyaml
dependency.
- Evaluate format option dynamically at use to let third-party register new rendering formats.
- Fix creation of post-release version bump PR on tagging.
- Extend
cli-helper.TabularOutputFormatter
with new formats:simple_grid
,rounded_grid
,double_grid
,outline
,simple_outline
,rounded_outline
anddouble_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
andtabulate
. - Automate post-release version bump.
- Fix printing of additional non-grouped default options in help screen.
- Add a
--config
/-C
option to load CLI configuration from a TOML file.
- Re-release previous version with fixed dependency.
- 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
.
- Initial public release.