Drop support for Python 2 and 3.5.
--helpoption in completion. #1504
importlib_metadatabackport) instead of
If validation fails for a prompt with
hide_input=True, the value is not shown in the error message. #1460
IntRangeoption shows the accepted range in its help text. #1525
An option defined with duplicate flag names (
"--foo/--foo") raises a
echo()will not fail when using pytest’s
capsysfixture on Windows. #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 like
Revert applying shell quoting to commands for
edit. This was intended to allows spaces in commands, but caused issues if the string was actually a command and arguments, or on Windows. Instead, the string must be quoted manually as it should appear on the command line. #1514
ClickExceptionoutput going to stdout instead of stderr. #1495
Fix PyPI package name, “click” is lowercase again.
Fix link in
unicode_literalserror message. #1151
Add support for colored output on UNIX Jupyter notebooks. #1185
Operations that strip ANSI controls will strip the cursor hide/show sequences. #1216
Remove unused compat shim for
Expand testing around termui, especially getchar on Windows. #1116
Fix output on Windows Python 2.7 built with MSVC 14. #1342
OSErrorwhen running in MSYS2. #1338
OSErrorwhen redirecting to
NULstream on Windows. #1065
Fix memory leak when parsing Unicode arguments on Windows. #1136
Fix error in new AppEngine environments. #1462
click.Command, defaults to False #1167
Contextto enable showing defaults globally. #1018
env MYPATH=''as though the option were not passed. #1196
It is once again possible to call
next(bar)on an active progress bar instance. #1125
atomic=Trueretains permissions of existing files and respects the current umask for new files. #1376
When using the test
result.stderris empty it will not raise a
Remove the unused
TypeErrorraised when using bool flags and specifying
Newlines in option help text are replaced with spaces before re-wrapping to avoid uneven line breaks. #834
MissingParameterexceptions are printable in the Python interpreter. #1139
Fix how default values for file-type options are shown during prompts. #914
Fix environment variable automatic generation for commands containing
Option help text that is wrapped adds an extra newline at the end to distinguish it from the next option. #1075
sensible-editorwhen determining the editor to use for
Arguments to system calls such as the executable path passed to
click.editcan contains spaces. #1470
Add ZSH completion autoloading and error handling. #1348
Add a repr to
Argument, showing the name for friendlier debugging. #1267
Completion doesn’t consider option names if a value starts with
ZSH completion escapes special characters in values. #1418
Add completion support for Fish shell. #1423
Decoding bytes option values falls back to UTF-8 in more cases. #1468
Make the warning about old 2-arg parameter callbacks a deprecation warning, to be removed in 8.0. This has been a warning since Click 2.0. #1492
Adjust error messages to standardize the types of quotes used so they match error messages from Python.
Document that ANSI color info isn’t parsed from bytearrays in Python 2. #334
Extract bar formatting to its own method. #414
DateTimetype for converting input in given date time formats. #423
secho’s first argument can now be
None, like in
Show progressbar only if total execution time is visible. #487
Added the ability to hide commands and options from help. #500
case_sensitive=Falseas an option to Choice. #569
Fix encoding issue with
click.getchar(echo=True)on Linux. #1115
Add a test that ensures that when an argument is formatted into a usage error, its metavar is used, not its name. #612
launchnow works properly under Cygwin. #650
CliRunner.invokenow may receive
argsas a string representing a Unix shell command. #664
Argument.make_metavar()default to type metavar. #675
Add documentation for
show_envvarfor showing environment variables in help. #710
sys._getframes()on Python interpreters that don’t support it. #728
Fix bug in test runner when calling
Fix crash on Windows console. #744
Added support for dynamic bash completion from a user-supplied callback. #755
Added support for bash completions containing spaces. #773
Add test and documentation for
Optionnaming: functionality. #799
Update doc to match arg name for
Raw strings added so correct escaping occurs. #807
Add bool conversion for “t” and “f”. #842
--helphint gets printed in error output. #860
Fixed the behavior of Click error messages with regards to Unicode on 2.x and 3.x. Message is now always Unicode and the str and Unicode special methods work as you expect on that platform. #862
Progress bar now uses stderr by default. #863
CliRunnerto separate stdout and stderr. #868
Fix invalid escape sequences. #877
ResourceWarningthat occurs during some tests. #878
When detecting a misconfigured locale, don’t fail if the
localecommand fails. #880
case_sensitive=Falseas an option to
Force stdout/stderr writable. This works around issues with badly patched standard streams like those from Jupyter. #918
_AtomicFilenow uses the
realpathof the original filename so that changing the working directory does not affect it. #920
“x” and “a” file modes now use stdout when file is
Fix missing comma in
Stdout is now automatically set to non blocking. #954
Do not set options twice. #962
Fix Google App Engine
Better handling of help text for dynamic default option values. #996
get_winter_size()so it correctly returns
Add test case checking for custom param type. #1001
Allow short width to address cmd formatting. #1002
Add details about Python version support. #1004
Added deprecation flag to commands. #1005
Fixed issues where
fdwas undefined. #1007
Fix formatting for short help. #1008
auto_envvar_prefixworks with command groups. #1011
Don’t add newlines by default for progress bars. #1013
Document that parameter names are converted to lowercase by default. #1055
Subcommands that are named by the function now automatically have the underscore replaced with a dash. If you register a function named
my-commandin the command line interface.
Fix issue where a lowercase
auto_envvar_prefixwould not be converted to uppercase. #1105
Fix bug in bash completion where click would discard one or more trailing arguments. #471
Fix argument checks for interpreter invoke with
Fixed a bug that cased locale detection to error out on Python 3.
Correct fix for hidden progress bars.
Resolved an issue with invisible progress bars no longer rendering.
Disable chain commands with subcommands as they were inherently broken.
MissingParameternot working without parameters passed.
Released 2015-11-24, codename “pow pow”
Optimized the progressbar rendering to not render when it did not actually change.
nargs=-1with a set default.
The context is now closed before it’s popped from the stack.
Added support for short aliases for the false flag on toggles.
Click will now attempt to aid you with debugging locale errors better by listing with the help of the OS what locales are available.
Click used to return byte strings on Python 2 in some unit-testing situations. This has been fixed to correctly return unicode strings now.
For Windows users on Python 2, Click will now handle Unicode more correctly handle Unicode coming in from the system. This also has the disappointing side effect that filenames will now be always unicode by default in the
Pathtype which means that this can introduce small bugs for code not aware of this.
Pathto force a specific string type on the value.
For users running Python on Windows the
promptfunctions now work with full unicode functionality in the Python windows console by emulating an output stream. This also applies to getting the virtual output and input streams via
Unittests now always force a certain virtual terminal width.
Added support for allowing dashes to indicate standard streams to the
Multi commands in chain mode no longer propagate arguments left over from parsing to the callbacks. It’s also now disallowed through an exception when optional arguments are attached to multi commands if chain mode is enabled.
Relaxed restriction that disallowed chained commands to have other chained commands as child commands.
Arguments with positive nargs can now have defaults implemented. Previously this configuration would often result in slightly unexpected values be returned.
Fix a bug in
pass_objthat would accidentally pass the context too.
Released 2015-08-16, codename “tok tok”
Removed various deprecated functionality.
Atomic files now only accept the
Change the usage part of help output for very long commands to wrap their arguments onto the next line, indented by 4 spaces.
Fix a bug where return code and error messages were incorrect when using
metadictionary to the context which is shared across the linked list of contexts to allow click utilities to place state there.
echofunction is now threadsafe: It calls the
writemethod of the underlying object only once.
prompt(hide_input=True)now prints a newline on
Click will now warn if users are using
Click will now ignore the
PAGERenvironment variable if it is empty or contains only whitespace.
click-contribGitHub organization was created.
Fix a bug where error messages would include a trailing
Fix a bug where Click would crash on docstrings with trailing newlines.
Support streams with encoding set to
Noneon Python 3 by barfing with a better error.
Handle ^C in less-pager properly.
Handle return value of
Fix crash when writing to unicode files with
Fix type inference with multiple options.
Released 2015-03-31, codename “zoom zoom”
colorparameters to lots of interfaces that directly or indirectly call into echoing. This previously was always autodetection (with the exception of the
echo_via_pagerfunction). Now you can forcefully enable or disable it, overriding the auto detection of Click.
UNPROCESSEDtype which does not perform any type changes which simplifies text handling on 2.x / 3.x in some special advanced usecases.
BadOptionUsageexceptions for more generic handling of errors.
Added support for handling of unprocessed options which can be useful in situations where arguments are forwarded to underlying tools.
max_content_widthparameter to the context which can be used to change the maximum width of help output. By default Click will not format content for more than 80 characters width.
Added support for writing prompts to stderr.
Fix a bug when showing the default for multiple arguments.
Added support for custom subclasses to
Fix bug in
clear()on Windows when colorama is installed.
nargs=-1for options properly. Options cannot be variadic.
Fixed an issue with bash completion not working properly for commands with non ASCII characters or dashes.
Added a way to manually update the progressbar.
Changed the formatting of missing arguments. Previously the internal argument name was shown in error messages, now the metavar is shown if passed. In case an automated metavar is selected, it’s stripped of extra formatting first.
Fixed an issue with error reporting on Python 3 for invalid forwarding of commands.
errparameter forwarding to the
Fixed default parameters not being handled properly by the context invoke method. This is a backwards incompatible change if the function was used improperly. See Upgrading to 3.2 for more information.
invoked_subcommandsattribute largely. It is not possible to provide it to work error free due to how the parsing works so this API has been deprecated. See Upgrading to 3.2 for more information.
Restored the functionality of
invoked_subcommandwhich was broken as a regression in 3.1.
Fixed a regression that caused contexts of subcommands to be created before the parent command was invoked which was a regression from earlier Click versions.
Released 2014-08-12, codename “clonk clonk”
Formatter now no longer attempts to accommodate for terminals smaller than 50 characters. If that happens it just assumes a minimal width.
Added a way to not swallow exceptions in the test system.
Added better support for colors with pagers and ways to override the autodetection.
The CLI runner’s result object now has a traceback attached.
Improved automatic short help detection to work better with dots that do not terminate sentences.
When defining options without actual valid option strings now, Click will give an error message instead of silently passing. This should catch situations where users wanted to created arguments instead of options.
Restructured Click internally to support vendoring.
Added support for multi command chaining.
Added support for defaults on options with
multipleand options and arguments with
nargs != 1.
Label passed to
progressbaris no longer rendered with whitespace stripped.
Added a way to disable the standalone mode of the
mainmethod on a Click command to be able to handle errors better.
Added support for returning values from command callbacks.
Added simplifications for printing to stderr from
Added result callbacks for groups.
Entering a context multiple times defers the cleanup until the last exit occurs.
Fixed an issue where the wrapped streams on Python 3 would be reporting incorrect values for seekable.
Fixed a bug with text wrapping on Python 3.
Corrected a bug in the change of the help option in 2.3.
Fixed an incorrectly formatted help record for count options.
Add support for ansi code stripping on Windows if colorama is not available.
Restored the Click 1.0 handling of the help parameter for certain edge cases.
Fixed tty detection on PyPy.
Fixed an issue that progress bars were not rendered when the context manager was entered.
launch()function on windows.
Improved the colorama support on windows to try hard to not screw up the console if the application is interrupted.
Fixed windows terminals incorrectly being reported to be 80 characters wide instead of 79
Use colorama win32 bindings if available to get the correct dimensions of a windows terminal.
Fixed an issue with custom function types on Python 3.
Fixed an issue with unknown options being incorrectly reported in error messages.
Released 2014-06-06, codename “tap tap tap”
Added support for opening stdin/stdout on Windows in binary mode correctly.
Added support for atomic writes to files by going through a temporary file.
BadParameterwhich can be used to easily perform custom validation with the same error messages as in the type system.
progressbar(); a function to show progress bars.
get_app_dir(); a function to calculate the home folder for configs.
Added transparent handling for ANSI codes into the
Breaking change: parameter callbacks now get the parameter object passed as second argument. There is legacy support for old callbacks which will warn but still execute the script.
edit()function that invokes the default editor.
launch()function that launches browsers and applications.
Nargs of -1 for arguments can now be forced to be a single item through the required flag. It defaults to not required.
Setting a default for arguments now implicitly makes it non required.
Changed “yN” / “Yn” to “y/N” and “Y/n” in confirmation prompts.
Added basic support for bash completion.
getchar()to fetch a single character from the terminal.
Errors now go to stderr as intended.
Fixed various issues with more exotic parameter formats like DOS/Windows style arguments.
pause()which works similar to the Windows
pausecmd built-in but becomes an automatic noop if the application is not run through a terminal.
Added a bit of extra information about missing choice parameters.
Changed how the help function is implemented to allow global overriding of the help option.
Added support for token normalization to implement case insensitive handling.
Added support for providing defaults for context settings.
Fixed a bug that caused text files in Python 2 to not accept native strings.