Add built-in shell completion support for PowerShell (Windows PowerShell
5.1+ and pwsh 7+) alongside the existing bash, zsh, and fish
completers. Use _FOO_BAR_COMPLETE=powershell_source foo-bar to generate
the completion script. {issue}2672 {pr}3637
Supported versions of Windows enable ANSI terminal styles by default.
Colorama is no longer a dependency and is not used. {issue}2986 {pr}3505
{class}Argument accepts a help parameter, and help output includes
a Positional arguments section when argument help is available. {issue}2983 {pr}3473
confirm() and prompt() strip ANSI color and style codes from the
prompt when the output stream does not support them, matching echo().
This stripping was lost in 8.4.0 when {pr}2969 began writing the
prompt with input() directly. {issue}3572 {pr}3653
Fix test failures when using pytest >= 9.1. {pr}3656
{class}Path with allow_dash=True no longer triggers a BytesWarning,
an error under python -bb, when checking a value against the -
convention. {issue}2877 {pr}3642
Add {func}custom_version_option, a --version option whose output is
produced by a callback, covering cases {func}version_option intentionally
does not. The feature set of {func}version_option is now frozen; see discussion #3527. {pr}3581
style() and secho() no longer silently drop the 256-color index 0
(black) passed as fg or bg, and now validate color arguments. Invalid
colors raise a ValueError instead of a TypeError. {pr}3677
The automatic help option stores its value under the reserved name _click_default_help instead of help, so a parameter named help no
longer breaks parsing. The new name is visible in
{meth}Command.to_info_dict output. Parameters that overwrite each other's
value trigger a warning: an argument sharing its name with another
parameter, or any parameter claiming the reserved name. Options may still
share a name to compete for the same value (feature switches).
{issue}2819 {pr}3678
unstyle and the ANSI handling behind help-text wrapping now strip the full
CSI escape-sequence grammar. {pr}3681
Streamline Option flag handling: the flag-kind, type, lazy-default and
validation steps in Option.__init__ move into focused helpers, and flag_value and default keep their unset sentinel at construction
(resolved lazily on read) so is UNSET reliably tells a user-supplied value
from an auto-derived one. Runtime behavior is unchanged, but
{meth}Parameter.to_info_dict now resolves default=True on a feature
switch to its flag_value, matching what the function receives at call
time. {pr}3641
{func}get_binary_stream and {func}get_text_stream are deprecated and
will be removed in Click 9.0. {issue}3481 {pr}3695
The following click.utils names were never intentionally public and are
now private (_-prefixed). The old names remain available with a DeprecationWarning until Click 9.0: LazyFile, KeepOpenFile, make_default_short_help, PacifyFlushWrapper, and safecall.
{issue}3099 {pr}3695
Deprecate {meth}CliRunner.isolated_filesystem. It relies on
{func}os.chdir, which mutates process-global state and is not
thread-safe. The helper predates Python 3 and modern pytest: use a
temporary directory ({class}tempfile.TemporaryDirectory or pytest's tmp_path fixture) with absolute paths instead. For running tests in
parallel, use process-based isolation (such as pytest-xdist) rather
than threads, since {meth}CliRunner.invoke also redirects the
process-global standard streams. {issue}3501 {issue}3700 {pr}3704
prompt() is now generically typed and returns the type produced by type, value_proc, or a matching default instead of Any.
{class}ParamType takes a second optional type parameter describing the
input value it accepts (ParamType[int, str] for a type converting
strings to integers), defaulting to Any. {pr}3407
{meth}Command.get_help_option_names returns the help option names in the
order they were declared. {pr}3728
{func}get_pager_file yields a text stream on Windows again. The temporary
file backend opened its file in binary mode, so writing a str to the pager
raised TypeError: a bytes-like object is required, not 'str', and the color argument was ignored on that path. Regression introduced in 8.4.0
by {pr}1572. {issue}3731 {issue}3732 {issue}3740 {pr}3739
{func}progressbar settles on its final position when update_min_steps
does not divide the total. Steps below that threshold are applied when the
bar finishes, so show_pos renders 20/20 rather than the last multiple
it reached. {issue}3571 {pr}3769
An error raised while writing to the pager no longer gets replaced by PermissionError: [WinError 32] on Windows. The temporary file backend
unlinked its file without closing it first, and Windows refuses to remove a
file the process still holds open, so the cleanup failure masked the real
exception. {issue}3731 {pr}3764
The temporary file the pager writes to on Windows is opened with the encoding
{func}get_pager_file picked for the output stream, and with errors="replace" to match the pipe backend. Any text stdout can encode
reaches the pager.
The temporary file pager backend forwards any parameters the user set in PAGER to the pager command instead of silently dropping them. On Windows, PAGER="less -R" now invokes less -R on the temporary file rather than
bare less. {pr}3777
Improve raw mode detection by parsing the option tokens. {issue}3416
{pr}3777
{func}edit accepts os.PathLike values for filename, in addition to
strings. {issue}2869 {pr}3781
Configuration
📅Schedule: (in timezone America/Edmonton)
Branch creation
At any time (no schedule defined)
Automerge
At any time (no schedule defined)
🚦Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕Ignore: Close this PR and you won't be reminded about this update again.
If you want to rebase/retry this PR, check this box
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [click](https://github.com/pallets/click) ([changelog](https://click.palletsprojects.com/page/changes/)) | minor | `==8.4.2` → `==8.5.0` |
---
### Release Notes
<details>
<summary>pallets/click (click)</summary>
### [`v8.5.0`](https://github.com/pallets/click/blob/HEAD/CHANGES.md#Version-850)
[Compare Source](https://github.com/pallets/click/compare/8.4.2...8.5.0)
Released 2026-08-24
- Add built-in shell completion support for PowerShell (Windows PowerShell
5.1+ and pwsh 7+) alongside the existing `bash`, `zsh`, and `fish`
completers. Use `_FOO_BAR_COMPLETE=powershell_source foo-bar` to generate
the completion script. {issue}`2672` {pr}`3637`
- Supported versions of Windows enable ANSI terminal styles by default.
Colorama is no longer a dependency and is not used. {issue}`2986` {pr}`3505`
- {class}`Argument` accepts a `help` parameter, and help output includes
a `Positional arguments` section when argument help is available. {issue}`2983` {pr}`3473`
- `confirm()` and `prompt()` strip ANSI color and style codes from the
prompt when the output stream does not support them, matching `echo()`.
This stripping was lost in `8.4.0` when {pr}`2969` began writing the
prompt with `input()` directly. {issue}`3572` {pr}`3653`
- Fix test failures when using pytest >= 9.1. {pr}`3656`
- {class}`Path` with `allow_dash=True` no longer triggers a `BytesWarning`,
an error under `python -bb`, when checking a value against the `-`
convention. {issue}`2877` {pr}`3642`
- Add {func}`custom_version_option`, a `--version` option whose output is
produced by a callback, covering cases {func}`version_option` intentionally
does not. The feature set of {func}`version_option` is now frozen; see
[discussion #​3527](https://github.com/pallets/click/discussions/3527). {pr}`3581`
- `style()` and `secho()` no longer silently drop the 256-color index `0`
(black) passed as `fg` or `bg`, and now validate color arguments. Invalid
colors raise a `ValueError` instead of a `TypeError`. {pr}`3677`
- The automatic help option stores its value under the reserved name
`_click_default_help` instead of `help`, so a parameter named `help` no
longer breaks parsing. The new name is visible in
{meth}`Command.to_info_dict` output. Parameters that overwrite each other's
value trigger a warning: an argument sharing its name with another
parameter, or any parameter claiming the reserved name. Options may still
share a name to compete for the same value (feature switches).
{issue}`2819` {pr}`3678`
- `unstyle` and the ANSI handling behind help-text wrapping now strip the full
CSI escape-sequence grammar. {pr}`3681`
- Streamline `Option` flag handling: the flag-kind, type, lazy-default and
validation steps in `Option.__init__` move into focused helpers, and
`flag_value` and `default` keep their unset sentinel at construction
(resolved lazily on read) so `is UNSET` reliably tells a user-supplied value
from an auto-derived one. Runtime behavior is unchanged, but
{meth}`Parameter.to_info_dict` now resolves `default=True` on a feature
switch to its `flag_value`, matching what the function receives at call
time. {pr}`3641`
- {func}`get_binary_stream` and {func}`get_text_stream` are deprecated and
will be removed in Click 9.0. {issue}`3481` {pr}`3695`
- The following `click.utils` names were never intentionally public and are
now private (`_`-prefixed). The old names remain available with a
`DeprecationWarning` until Click 9.0: `LazyFile`, `KeepOpenFile`,
`make_default_short_help`, `PacifyFlushWrapper`, and `safecall`.
{issue}`3099` {pr}`3695`
- Deprecate {meth}`CliRunner.isolated_filesystem`. It relies on
{func}`os.chdir`, which mutates process-global state and is not
thread-safe. The helper predates Python 3 and modern pytest: use a
temporary directory ({class}`tempfile.TemporaryDirectory` or pytest's
`tmp_path` fixture) with absolute paths instead. For running tests in
parallel, use process-based isolation (such as `pytest-xdist`) rather
than threads, since {meth}`CliRunner.invoke` also redirects the
process-global standard streams. {issue}`3501` {issue}`3700` {pr}`3704`
- `prompt()` is now generically typed and returns the type produced by
`type`, `value_proc`, or a matching `default` instead of `Any`.
{class}`ParamType` takes a second optional type parameter describing the
input value it accepts (`ParamType[int, str]` for a type converting
strings to integers), defaulting to `Any`. {pr}`3407`
- {meth}`Command.get_help_option_names` returns the help option names in the
order they were declared. {pr}`3728`
- {func}`get_pager_file` yields a text stream on Windows again. The temporary
file backend opened its file in binary mode, so writing a `str` to the pager
raised `TypeError: a bytes-like object is required, not 'str'`, and the
`color` argument was ignored on that path. Regression introduced in `8.4.0`
by {pr}`1572`. {issue}`3731` {issue}`3732` {issue}`3740` {pr}`3739`
- {func}`progressbar` settles on its final position when `update_min_steps`
does not divide the total. Steps below that threshold are applied when the
bar finishes, so `show_pos` renders `20/20` rather than the last multiple
it reached. {issue}`3571` {pr}`3769`
- An error raised while writing to the pager no longer gets replaced by
`PermissionError: [WinError 32]` on Windows. The temporary file backend
unlinked its file without closing it first, and Windows refuses to remove a
file the process still holds open, so the cleanup failure masked the real
exception. {issue}`3731` {pr}`3764`
- The temporary file the pager writes to on Windows is opened with the encoding
{func}`get_pager_file` picked for the output stream, and with
`errors="replace"` to match the pipe backend. Any text stdout can encode
reaches the pager.
- The temporary file pager backend forwards any parameters the user set in
`PAGER` to the pager command instead of silently dropping them. On Windows,
`PAGER="less -R"` now invokes `less -R` on the temporary file rather than
bare `less`. {pr}`3777`
- Improve raw mode detection by parsing the option tokens. {issue}`3416`
{pr}`3777`
- {func}`edit` accepts `os.PathLike` values for `filename`, in addition to
strings. {issue}`2869` {pr}`3781`
</details>
---
### Configuration
📅 **Schedule**: (in timezone America/Edmonton)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC40Ni40IiwidXBkYXRlZEluVmVyIjoiNDQuNDYuNCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
==8.4.2→==8.5.0Release Notes
pallets/click (click)
v8.5.0Compare Source
Released 2026-08-24
5.1+ and pwsh 7+) alongside the existing
bash,zsh, andfishcompleters. Use
_FOO_BAR_COMPLETE=powershell_source foo-barto generatethe completion script. {issue}
2672{pr}3637Colorama is no longer a dependency and is not used. {issue}
2986{pr}3505Argumentaccepts ahelpparameter, and help output includesa
Positional argumentssection when argument help is available. {issue}2983{pr}3473confirm()andprompt()strip ANSI color and style codes from theprompt when the output stream does not support them, matching
echo().This stripping was lost in
8.4.0when {pr}2969began writing theprompt with
input()directly. {issue}3572{pr}36533656Pathwithallow_dash=Trueno longer triggers aBytesWarning,an error under
python -bb, when checking a value against the-convention. {issue}
2877{pr}3642custom_version_option, a--versionoption whose output isproduced by a callback, covering cases {func}
version_optionintentionallydoes not. The feature set of {func}
version_optionis now frozen; seediscussion #3527. {pr}
3581style()andsecho()no longer silently drop the 256-color index0(black) passed as
fgorbg, and now validate color arguments. Invalidcolors raise a
ValueErrorinstead of aTypeError. {pr}3677_click_default_helpinstead ofhelp, so a parameter namedhelpnolonger breaks parsing. The new name is visible in
{meth}
Command.to_info_dictoutput. Parameters that overwrite each other'svalue trigger a warning: an argument sharing its name with another
parameter, or any parameter claiming the reserved name. Options may still
share a name to compete for the same value (feature switches).
{issue}
2819{pr}3678unstyleand the ANSI handling behind help-text wrapping now strip the fullCSI escape-sequence grammar. {pr}
3681Optionflag handling: the flag-kind, type, lazy-default andvalidation steps in
Option.__init__move into focused helpers, andflag_valueanddefaultkeep their unset sentinel at construction(resolved lazily on read) so
is UNSETreliably tells a user-supplied valuefrom an auto-derived one. Runtime behavior is unchanged, but
{meth}
Parameter.to_info_dictnow resolvesdefault=Trueon a featureswitch to its
flag_value, matching what the function receives at calltime. {pr}
3641get_binary_streamand {func}get_text_streamare deprecated andwill be removed in Click 9.0. {issue}
3481{pr}3695click.utilsnames were never intentionally public and arenow private (
_-prefixed). The old names remain available with aDeprecationWarninguntil Click 9.0:LazyFile,KeepOpenFile,make_default_short_help,PacifyFlushWrapper, andsafecall.{issue}
3099{pr}3695CliRunner.isolated_filesystem. It relies on{func}
os.chdir, which mutates process-global state and is notthread-safe. The helper predates Python 3 and modern pytest: use a
temporary directory ({class}
tempfile.TemporaryDirectoryor pytest'stmp_pathfixture) with absolute paths instead. For running tests inparallel, use process-based isolation (such as
pytest-xdist) ratherthan threads, since {meth}
CliRunner.invokealso redirects theprocess-global standard streams. {issue}
3501{issue}3700{pr}3704prompt()is now generically typed and returns the type produced bytype,value_proc, or a matchingdefaultinstead ofAny.{class}
ParamTypetakes a second optional type parameter describing theinput value it accepts (
ParamType[int, str]for a type convertingstrings to integers), defaulting to
Any. {pr}3407Command.get_help_option_namesreturns the help option names in theorder they were declared. {pr}
3728get_pager_fileyields a text stream on Windows again. The temporaryfile backend opened its file in binary mode, so writing a
strto the pagerraised
TypeError: a bytes-like object is required, not 'str', and thecolorargument was ignored on that path. Regression introduced in8.4.0by {pr}
1572. {issue}3731{issue}3732{issue}3740{pr}3739progressbarsettles on its final position whenupdate_min_stepsdoes not divide the total. Steps below that threshold are applied when the
bar finishes, so
show_posrenders20/20rather than the last multipleit reached. {issue}
3571{pr}3769PermissionError: [WinError 32]on Windows. The temporary file backendunlinked its file without closing it first, and Windows refuses to remove a
file the process still holds open, so the cleanup failure masked the real
exception. {issue}
3731{pr}3764{func}
get_pager_filepicked for the output stream, and witherrors="replace"to match the pipe backend. Any text stdout can encodereaches the pager.
PAGERto the pager command instead of silently dropping them. On Windows,PAGER="less -R"now invokesless -Ron the temporary file rather thanbare
less. {pr}37773416{pr}
3777editacceptsos.PathLikevalues forfilename, in addition tostrings. {issue}
2869{pr}3781Configuration
📅 Schedule: (in timezone America/Edmonton)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate CLI.