Changelog History
Page 1
-
v8.2.0 Changes
๐ Unreleased
-
v8.1.3 Changes
๐ Released 2022-04-28
- Use verbose form of
typing.Callablefor@commandand@group. :issue:2255 - Show error when attempting to create an option with
multiple=True, is_flag=True. Usecountinstead. :issue:2246
- Use verbose form of
-
v8.1.2 Changes
๐ Released 2022-03-31
- Fix error message for readable path check that was mixed up with the
executable check. :pr:
2236 - โช Restore parameter order for
Path, placing theexecutableparameter at the end. It is recommended to use keyword arguments instead of positional arguments. :issue:2235
- Fix error message for readable path check that was mixed up with the
executable check. :pr:
-
v8.1.1 Changes
๐ Released 2022-03-30
- Fix an issue with decorator typing that caused type checking to
report that a command was not callable. :issue:
2227
- Fix an issue with decorator typing that caused type checking to
report that a command was not callable. :issue:
-
v8.1.0 Changes
๐ Released 2022-03-28
- ๐ Drop support for Python 3.6. :pr:
2129 ๐ Remove previously deprecated code. :pr:
2130-
Group.resultcallbackis renamed toresult_callback. -
autocompletionparameter toCommandis renamed toshell_complete. -
get_terminal_sizeis removed, useshutil.get_terminal_sizeinstead. -
get_os_argsis removed, usesys.argv[1:]instead.
-
Rely on :pep:
538and :pep:540to handle selecting UTF-8 encoding instead of ASCII. Click's locale encoding detection is removed. :issue:21980๏ธโฃ Single options boolean flags with
show_default=Trueonly show the default if it isTrue. :issue:1971The
commandandgroupdecorators can be applied with or without parentheses. :issue:1359The
Pathtype can check whether the target is executable. :issue:19610๏ธโฃ
Command.show_defaultoverridesContext.show_default, instead of the other way around. :issue:1963Parameter decorators and
@grouphandlescls=Nonethe same as not passingcls.@optionhandleshelp=Nonethe same as not passinghelp. :issue:#1959A flag option with
required=Truerequires that the flag is passed instead of choosing the implicit default value. :issue:1978Indentation in help text passed to
OptionandCommandis cleaned the same as using the@optionand@commanddecorators does. A command'sepilogandshort_helpare also processed. :issue:1985Store unprocessed
Command.help,epilogandshort_helpstrings. Processing is only done when formatting help text for output. :issue:2149Allow empty str input for
prompt()whenconfirmation_prompt=Trueanddefault="". :issue:2157๐ Windows glob pattern expansion doesn't fail if a value is an invalid pattern. :issue:
2195It's possible to pass a list of
paramsto@command. Any params defined with decorators are appended to the passed params. :issue:2131.@commanddecorator is annotated as returning the correct type if aclsargument is used. :issue:2211A
Groupwithinvoke_without_command=Trueandchain=Falsewill invoke its result callback with the group function's return value. :issue:2124to_info_dictwill not fail if aParamTypedoesn't define aname. :issue:2168๐ Shell completion prioritizes option values with option prefixes over new options. :issue:
2040Options that get an environment variable value using
autoenvvar_prefixtreat an empty value asNone, consistent with a directenvvar. :issue:2146
- ๐ Drop support for Python 3.6. :pr:
-
v8.0.4 Changes
๐ Released 2022-02-18
-
open_filerecognizesPath("-")as a standard stream, the same as the string"-". :issue:2106 - The
optionandargumentdecorators preserve the type annotation of the decorated function. :pr:2155 - 0๏ธโฃ A callable default value can customize its help text by overriding
__str__instead of always showing(dynamic). :issue:2099 - Fix a typo in the Bash completion script that affected file and
directory completion. If this script was generated by a previous
version, it should be regenerated. :issue:
2163 - Fix typing for
echoandsechofile argument. :issue:2174, 2185
-
-
v8.0.3 Changes
๐ Released 2021-10-10
- Fix issue with
Path(resolve_path=True)type creating invalid paths. :issue:2088 - Importing
readlinedoes not cause theconfirm()prompt to disappear when pressing backspace. :issue:2092 - 0๏ธโฃ Any default values injected by
invoke()are cast to the corresponding parameter's type. :issue:2089, 2090
- Fix issue with
-
v8.0.2 Changes
๐ Released 2021-10-08
-
is_bool_flagis not set toTrueifis_flagisFalse. :issue:1925 - Bash version detection is locale independent. :issue:
1940 - 0๏ธโฃ Empty
defaultvalue is not shown formultiple=True. :issue:1969 - Fix shell completion for arguments that start with a forward slash
such as absolute file paths. :issue:
1929 -
Pathtype withresolve_path=Trueresolves relative symlinks to be relative to the containing directory. :issue:1921 - Completion does not skip Python's resource cleanup when exiting,
avoiding some unexpected warning output. :issue:
1738, 2017 - Fix type annotation for
typeargument inpromptfunction. :issue:2062 - ๐
Fix overline and italic styles, which were incorrectly added when
adding underline. :pr:
2058 - An option with
count=Truewill not show "[x>=0]" in help text. :issue:2072 - 0๏ธโฃ Default values are not cast to the parameter type twice during
processing. :issue:
2085 - Options with
multipleandflag_valueuse the flag value instead of leaving an internal placeholder. :issue:2001
-
-
v8.0.1 Changes
๐ Released 2021-05-19
- Mark top-level names as exported so type checking understand imports
in user projects. :issue:
1879 - Annotate
Context.objasAnyso type checking allows all operations on the arbitrary object. :issue:1885 - Fix some types that weren't available in Python 3.6.0. :issue:
1882 - Fix type checking for iterating over
ProgressBarobject. :issue:1892 - ๐ The
importlib_metadatabackport package is installed on Python < 3.8. :issue:1889 - Arguments with
nargs=-1only use env var value if no command line values are given. :issue:1903 - Flag options guess their type from
flag_valueif given, like regular options do fromdefault. :issue:1886 - ๐ Added documentation that custom parameter types may be passed
already valid values in addition to strings. :issue:
1898 - Resolving commands returns the name that was given, not
command.name, fixing an unintended change to help text anddefault_maplookups. When using patterns likeAliasedGroup, overrideresolve_commandto change the name that is returned if needed. :issue:1895 - 0๏ธโฃ If a default value is invalid, it does not prevent showing help
text. :issue:
1889 - Pass
windows_expand_args=Falsewhen calling the main command to disable pattern expansion on Windows. There is no way to escape patterns in CMD, so if the program needs to pass them on as-is then expansion must be disabled. :issue:1901
- Mark top-level names as exported so type checking understand imports
in user projects. :issue:
-
v8.0 Changes
๐ Unreleased
- ๐ Drop support for Python 2 and 3.5.
- ๐
Colorama is always installed on Windows in order to provide style
and color support. :pr:
1784 - Adds a repr to Command, showing the command name for friendlier
debugging. :issue:
1267, :pr:1295 - ๐ Add support for distinguishing the source of a command line
parameter. :issue:
1264, :pr:1329 - โก๏ธ Add an optional parameter to
ProgressBar.updateto set thecurrent_item. :issue:1226, :pr:1332 - ๐
version_optionusesimportlib.metadata(or theimportlib_metadatabackport) instead ofpkg_resources. :issue:1582 - If validation fails for a prompt with
hide_input=True, the value is not shown in the error message. :issue:1460 - An
IntRangeorFloatRangeoption shows the accepted range in its help text. :issue:1525, :pr:1303 -
IntRangeandFloatRangebounds can be open (<) instead of closed (<=) by settingmin_openandmax_open. Error messages have changed to reflect this. :issue:1100 - An option defined with duplicate flag names (
"--foo/--foo") raises aValueError. :issue:1465 - โ
echo()will not fail when using pytest'scapsysfixture on Windows. :issue:1590 - Resolving commands returns the canonical command name instead of the
matched name. This makes behavior such as help text and
Context.invoked_subcommandconsistent when using patterns likeAliasedGroup. :issue:1422 - The
BOOLtype accepts the values "on" and "off". :issue:1629 - A
Groupwithinvoke_without_command=Truewill always invoke its result callback. :issue:1178 - ๐
nargs == -1andnargs > 1is parsed and validated for values from environment variables and defaults. :issue:729 - ๐ฆ Detect the program name when executing a module or package with
python -m name. :issue:1603 - Include required parent arguments in help synopsis of subcommands.
:issue:
1475 - 0๏ธโฃ Help for boolean flags with
show_default=Trueshows the flag name instead ofTrueorFalse. :issue:1538 - ๐
Non-string objects passed to
style()andsecho()will be converted to string. :pr:1146 -
edit(require_save=True)will detect saves for editors that exit very fast on filesystems with 1 second resolution. :pr:1050 New class attributes make it easier to use custom core objects throughout an entire application. :pr:
938-
Command.context_classcontrols the context created when running the command. -
Context.invokecreates new contexts of the same type, so a custom type will persist to invoked subcommands. -
Context.formatter_classcontrols the formatter used to generate help and usage. -
Group.command_classchanges the default type for subcommands with@group.command(). -
Group.group_classchanges the default type for subgroups with@group.group(). Setting it totypewill create subgroups of the same type as the group itself. - Core objects use
super()consistently for better support of subclassing.
-
Use
Context.with_resource()to manage resources that would normally be used in awithstatement, allowing them to be used across subcommands and callbacks, then cleaned up when the context ends. :pr:1191โ The result object returned by the test runner's
invoke()method has areturn_valueattribute with the value returned by the invoked command. :pr:1312Required arguments with the
Choicetype show the choices in curly braces to indicate that one is required ({a|b|c}). :issue:1272If only a name is passed to
option(), Click suggests renaming it to--name. :pr:13550๏ธโฃ A context's
show_defaultparameter defaults to the value from the parent context. :issue:1565๐
click.style()can output 256 and RGB color codes. Most modern terminals support these codes. :pr:1429When using
CliRunner.invoke(), the replacedstdinfile hasnameandmodeattributes. This letsFileoptions with the-value match non-testing behavior. :issue:1064When creating a
Group, allow passing a list of commands instead of a dict. :issue:1339๐ When a long option name isn't valid, use
difflibto make better suggestions for possible corrections. :issue:1446Core objects have a
to_info_dict()method. This gathers information about the object's structure that could be useful for a tool generating user-facing documentation. To get the structure of an entire CLI, useContext(cli).to_info_dict(). :issue:461Redesign the shell completion system. :issue:
1484, :pr:1622- Support Bash >= 4.4, Zsh, and Fish, with the ability for extensions to add support for other shells.
- Allow commands, groups, parameters, and types to override their completions suggestions.
- Groups complete the names commands were registered with, which can differ from the name they were created with.
- The
autocompletionparameter for options and arguments is renamed toshell_complete. The function must takectx, param, incomplete, must do matching rather than return all values, and must return a list of strings or a list ofShellComplete. The old name and behavior is deprecated and will be removed in 8.1. - The env var values used to start completion have changed order.
The shell now comes first, such as
{shell}_sourcerather thansource_{shell}, and is always required.
๐ Completion correctly parses command line strings with incomplete quoting or escape sequences. :issue:
1708Extra context settings (
obj=..., etc.) are passed on to the completion system. :issue:942Include
--helpoption in completion. :pr:1504ParameterSourceis anenum.Enumsubclass. :issue:1530Boolean and UUID types strip surrounding space before converting. :issue:
1605Adjusted error message from parameter type validation to be more consistent. Quotes are used to distinguish the invalid value. :issue:
16050๏ธโฃ The default value for a parameter with
nargs> 1 andmultiple=Truemust be a list of tuples. :issue:16490๏ธโฃ When getting the value for a parameter, the default is tried in the same section as other sources to ensure consistent processing. :issue:
1649All parameter types accept a value that is already the correct type. :issue:
1649For shell completion, an argument is considered incomplete if its value did not come from the command line args. :issue:
1649Added
ParameterSource.PROMPTto track parameter values that were prompted for. :issue:16490๏ธโฃ Options with
nargs> 1 no longer raise an error if a default is not given. Parameters withnargs> 1 default toNone, and parameters withmultiple=Trueornargs=-1default to an empty tuple. :issue:472Handle empty env vars as though the option were not passed. This extends the change introduced in 7.1 to be consistent in more cases. :issue:
12850๏ธโฃ
Parameter.get_default()checksContext.default_mapto handle overrides consistently in help text,invoke(), and prompts. :issue:1548Add
prompt_requiredparam toOption. When set toFalse, the user will only be prompted for an input if no value was passed. :issue:736Providing the value to an option can be made optional through
is_flag=False, and the value can instead be prompted for or passed in as a default value. :issue:549, 736, 764, 921, 1015, 1618Fix formatting when
Command.options_metavaris empty. :pr:1551โช Revert adding space between option help text that wraps. :issue:
18310๏ธโฃ The default value passed to
promptwill be cast to the correct type like an input value would be. :pr:1517Automatically generated short help messages will stop at the first ending of a phrase or double linebreak. :issue:
1082Skip progress bar render steps for efficiency with very fast iterators by setting
update_min_steps. :issue:676Respect
case_sensitive=Falsewhen doing shell completion forChoice:issue:1692Use
mkstemp()instead ofmktemp()in pager implementation. :issue:17520๏ธโฃ If
Option.show_defaultis a string, it is displayed even ifdefaultisNone. :issue:1732click.get_terminal_size()is deprecated and will be removed in 8.1. Use :func:shutil.get_terminal_sizeinstead. :issue:1736Control the location of the temporary directory created by
CLIRunner.isolated_filesystemby passingtemp_dir. A custom directory will not be removed automatically. :issue:395click.confirm()will prompt until input is given if called withdefault=None. :issue:1381Option prompts validate the value with the option's callback in addition to its type. :issue:
457confirmation_promptcan be set to a custom string. :issue:723๐ Allow styled output in Jupyter on Windows. :issue:
1271๐
style()supports thestrikethrough,italic, andoverlinestyles. :issue:805, 1821๐ Multiline marker is removed from short help text. :issue:
1597โช Restore progress bar behavior of echoing only the label if the file is not a TTY. :issue:
1138Progress bar output is shown even if execution time is less than 0.5 seconds. :issue:
1648๐ Progress bar
item_show_funcshows the current item, not the previous item. :issue:1353The
Pathparam type can be passedpath_type=pathlib.Pathto return a path object instead of a string. :issue:405TypeErroris raised when parameter withmultiple=Trueornargs > 1has non-iterable default. :issue:1749Add a
pass_meta_keydecorator for passing a key fromContext.meta. This is useful for extensions usingmetato store information. :issue:1739๐
Pathresolve_pathresolves symlinks on Windows Python < 3.8. :issue:1813๐ Command deprecation notice appears at the start of the help text, as well as in the short help. The notice is not in all caps. :issue:
1791๐ When taking arguments from
sys.argvon Windows, glob patterns, user dir, and env vars are expanded. :issue:1096Marked messages shown by the CLI with
gettext()to allow applications to translate Click's built-in strings. :issue:303โ Writing invalid characters to
stderrwhen using the test runner does not raise aUnicodeEncodeError. :issue:848Fix an issue where
readlinewould clear the entireprompt()line instead of only the input when pressing backspace. :issue:665Add all kwargs passed to
Context.invoke()toctx.params. Fixes an inconsistency when nestingContext.forward()calls. :issue:1568The
MultiCommand.resultcallbackdecorator is renamed toresult_callback. The old name is deprecated. :issue:1160Fix issues with
CliRunneroutput when usingecho_stdin=True. :issue:11010๏ธโฃ Fix a bug of
click.utils.make_default_short_helpfor which the returned string could be as long asmax_width + 3. :issue:18490๏ธโฃ When defining a parameter,
defaultis validated withmultipleandnargs. More validation is done for values being processed as well. :issue:1806