Skip to content

Update dependency click to v8.5.0 - #225

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/click-8.x
Open

Update dependency click to v8.5.0#225
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/click-8.x

Conversation

@renovate

@renovate renovate Bot commented Sep 18, 2025

Copy link
Copy Markdown

This PR contains the following updates:

Package Change Age Confidence
click (changelog) ==8.2.1==8.5.0 age confidence

Release Notes

pallets/click (click)

v8.5.0

Compare Source

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. {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

v8.4.2

Compare Source

Released 2026-06-24

  • Fix Fish shell completion broken in 8.4.0 by {pr}3126. Newlines and
    tabs in option help text are now escaped, keeping the original completion
    format while still supporting multi-line help. {issue}3502
    {issue}3043 {pr}3504 {pr}3508
  • Deprecated commands and options with empty or missing help text no longer
    render a stray leading space before the (DEPRECATED) label. {pr}3509
  • A {class}Group with invoke_without_command=True marks its subcommand as
    optional in the usage help, showing [COMMAND] instead of COMMAND.
    {issue}3059 {pr}3507
  • echo_via_pager flushes after each write, so passing a generator streams
    output to the pager incrementally instead of staying hidden until the pipe
    buffer fills. {issue}3242 {issue}2542 {pr}3534
  • echo_via_pager and get_pager_file no longer close a borrowed stdout
    stream when no external pager runs, completing the partial
    I/O operation on closed file fix from {pr}3482. {issue}3449
    {pr}3533
  • Fix CLI usage symopsis for optional arguments producing double square brackets
    [[a|b|c]]... whose type already brackets their metavar. {pr}3578
  • {func}version_option resolves a package_name that does not match an
    installed distribution as an import (top-level module) name via
    {func}importlib.metadata.packages_distributions. Packages whose
    top-level module name differs from their distribution name (PIL vs
    Pillow, jwt vs PyJWT) no longer raise RuntimeError out of the
    box. {issue}2331 {issue}1884 {issue}3125 {pr}3582

v8.4.1

Compare Source

Released 2026-05-21

  • get_parameter_source() is available during eager callbacks and type
    conversion again. :issue:3458 :issue:3484
  • Zsh completion scripts parse correctly on Windows. :issue:3277 :pr:3466
  • Shell completion of Choice Enum values produces a valid completion
    result. :issue:3015
  • Fix empty byte-string handling in echo. :issue:3487
  • Fix closed file error with echo_via_pager. :issue:3449

v8.4.0

Compare Source

Released 2026-05-17

  • :class:ParamType typing improvements. :pr:3371

    • :class:ParamType is now a generic abstract base class,
      parameterized by its converted value type.
    • :meth:~ParamType.convert return types are narrowed on all
      concrete types (str for :class:STRING, int for
      :class:INT, etc.).
    • :meth:~ParamType.to_info_dict returns specific
      :class:~typing.TypedDict subclasses instead of
      dict[str, Any].
    • :class:CompositeParamType and the number-range base are now
      generic with abstract methods.
  • Refactor convert_type to extract type inference into a private
    _guess_type helper, and add :func:typing.overload signatures.
    :pr:3372

  • :class:Parameter typing improvements. :pr:2805

    • :class:Parameter is now an abstract base class, making explicit
      that it cannot be instantiated directly.
    • :attr:Parameter.name is now str instead of str | None.
      When expose_value=False, the name is set to "" instead
      of None.
    • The ctx parameter of :meth:Parameter.get_error_hint is now
      typed as Context | None, matching the runtime behavior.
  • Split string values from default_map for parameters with nargs > 1
    or :class:Tuple type, matching environment variable behavior.
    :issue:2745 :pr:3364

  • Auto-detect type=UNPROCESSED for flag_value of non-basic types
    (not str, int, float, or bool), so programmer-provided
    Python objects like classes and enum members are passed through unchanged
    instead of being stringified. Previously type=click.UNPROCESSED had
    to be set explicitly. :issue:2012 :pr:3363

  • The error hint now uses :meth:Command.get_help_option_names to pick
    non-shadowed help option names, so Try '... -h' no longer points to a
    subcommand option that shadows -h. The longest surviving name is
    shown (--help over -h) for readability. :issue:2790 :pr:3208

  • Fix readline functionality on non-Windows platforms. Prompt text is now
    passed directly to readline instead of being printed separately, allowing
    proper backspace, line editing, and line wrapping behavior. :issue:2968
    :pr:2969

  • Use :func:os.startfile on Windows to open URLs in :func:open_url,
    replacing the start built-in which cannot be invoked without
    shell=True. :issue:3164 :pr:3186

  • Fix Fish shell completion errors when option help text contains newlines.
    :issue:3043 :pr:3126

  • Add :class:NoSuchCommand exception with suggestions for misspelled
    commands. :issue:3107 :pr:3228

  • Use :class:ValueError message when conversion in :class:FuncParamType would
    fail. :issue:3105 :pr:3211

  • Add click.get_pager_file for file-like access to an output
    pager. :pr:1572 :pr:3405

  • :func:~click.formatting.wrap_text now measures line width in visible
    characters, ignoring ANSI escape sequences. :pr:3420

  • Fix :meth:HelpFormatter.write_usage emitting only a blank line when
    called without args. The usage prefix and program name are now
    written even when no arguments follow, and the trailing separator
    space is stripped so the line ends at the program name.
    :issue:3360 :pr:3434

  • Show custom error messages from types when :func:prompt with
    hide_input=True fails validation, instead of always showing a
    generic message. Built-in type messages mask the input value.
    :issue:2809 :pr:3256

  • Add capture parameter to :class:CliRunner with two modes: sys
    (default) and fd. fd redirects file descriptors 1 and 2
    via :func:os.dup2 so output that bypasses sys.stdout (stale stream
    references, C extensions, subprocesses, faulthandler) is captured
    with proper isolation. :issue:854 :issue:2412 :issue:2468
    :issue:2497 :issue:2761 :issue:2827 :issue:2865 :pr:3391

  • Revert the 8.3.3 change that exposed the original file descriptor
    via fileno() on the redirected CliRunner streams in the default
    capture mode. os.dup2(w, sys.stdout.fileno()) calls inside a CLI no
    longer mutate the host runner's stdout, which broke Pytest's fd-level
    capture teardown. C-level consumers that need a real fd should use
    capture="fd". :issue:3384 :pr:3391

  • Mark additional built-in strings with gettext() to extend translation
    coverage. :pr:2902

  • Fix feature switch groups (several flag_value options sharing one
    parameter name) silently dropping an explicit default when a sibling
    option without an explicit default was declared first. Arbitration is now
    source-aware: a more explicit :class:ParameterSource always wins, and
    within ParameterSource.DEFAULT, an option that received an explicit
    default= keyword wins over a sibling whose default was auto-derived.
    The 8.3.x first-wins fallback for remaining ties was reverted to the
    pre-8.3.x last-wins fallback. :issue:3403 :pr:3404

  • Fix missing space between option help text and the (DEPRECATED)
    label, and localize the option label so it matches the command label.
    The label and the DeprecationWarning reason suffix are now produced
    by shared helpers. :pr:3423

  • Document short option stacking (-abc is parsed as -a -b -c) and
    clarify that multi-character short option names are not supported.
    :issue:2779 :pr:3431

v8.3.3

Compare Source

v8.3.2

Compare Source

Released 2026-04-02

  • Fix handling of flag_value when is_flag=False to allow such options to be
    used without an explicit value. :issue:3084 :pr:3152
  • Hide Sentinel.UNSET values as None when using lookup_default().
    :issue:3136 :pr:3199 :pr:3202 :pr:3209 :pr:3212 :pr:3224
  • Prevent _NamedTextIOWrapper from closing streams owned by StreamMixer.
    :issue:824 :issue:2991 :issue:2993 :issue:3110 :pr:3139 :pr:3140
  • Add comprehensive tests for CliRunner stream lifecycle, covering
    logging interaction, multi-threaded safety, and sequential invocation
    isolation. Add high-iteration stress tests behind a stress marker
    with a dedicated CI job. :pr:3139
  • Fix callable flag_value being instantiated when used as a default via
    default=True. :issue:3121 :pr:3201 :pr:3213 :pr:3225

v8.3.1

Compare Source

This is the Click 8.3.1 fix release, which fixes bugs but does not otherwise change behavior and should not result in breaking changes compared to the latest feature release.

PyPI: https://pypi.org/project/click/8.3.1/
Changes: https://click.palletsprojects.com/page/changes/#version-8-3-1
Milestone: https://github.com/pallets/click/milestone/28

  • Don't discard pager arguments by correctly using subprocess.Popen. #​3039 #​3055
  • Replace Sentinel.UNSET default values by None as they're passed through the Context.invoke() method. #​3066 #​3065 #​3068
  • Fix conversion of Sentinel.UNSET happening too early, which caused incorrect behavior for multiple parameters using the same name. #​3071 #​3079
  • Fix rendering when prompt and confirm parameter prompt_suffix is empty. #​3019 #​3021
  • When Sentinel.UNSET is found during parsing, it will skip calls to type_cast_value. #​3069 #​3090
  • Hide Sentinel.UNSET values as None when looking up for other parameters through the context inside parameter callbacks. #​3136 #​3137

v8.3.0

Compare Source

Released 2025-09-17

  • Improved flag option handling: Reworked the relationship between flag_value
    and default parameters for better consistency:

    • The default parameter value is now preserved as-is and passed directly
      to CLI functions (no more unexpected transformations)
    • Exception: flag options with default=True maintain backward compatibility
      by defaulting to their flag_value
    • The default parameter can now be any type (bool, None, etc.)
    • Fixes inconsistencies reported in: :issue:1992 :issue:2514 :issue:2610
      :issue:3024 :pr:3030
  • Allow default to be set on Argument for nargs = -1. :issue:2164
    :pr:3030

  • Show correct auto complete value for nargs option in combination with flag
    option :issue:2813

  • Fix handling of quoted and escaped parameters in Fish autocompletion. :issue:2995 :pr:3013

  • Lazily import shutil. :pr:3023

  • Properly forward exception information to resources registered with
    click.core.Context.with_resource(). :issue:2447 :pr:3058

  • Fix regression related to EOF handling in CliRunner. :issue:2939 :pr:2940

v8.2.2

Compare Source

Released 2025-07-31

  • Fix reconciliation of default, flag_value and type parameters for
    flag options, as well as parsing and normalization of environment variables.
    :issue:2952 :pr:2956
  • Fix typing issue in BadParameter and MissingParameter exceptions for the
    parameter param_hint that did not allow for a sequence of string where the
    underlying function _join_param_hints allows for it. :issue:2777 :pr:2990
  • Use the value of Enum choices to render their default value in help
    screen. Refs :issue:2911 :pr:3004
  • Fix completion for the Z shell (zsh) for completion items containing
    colons. :issue:2703 :pr:2846
  • Don't include envvar in error hint when not configured. :issue:2971 :pr:2972
  • Fix a rare race in click.testing.StreamMixer's finalization that manifested
    as a ValueError on close in a multi-threaded test session.
    :issue:2993 :pr:2991

Configuration

📅 Schedule: (UTC)

  • 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 was generated by Mend Renovate. View the repository job log.

@sonarqubecloud

Copy link
Copy Markdown

@renovate renovate Bot changed the title chore(deps): update dependency click to v8.3.0 chore(deps): update dependency click to v8.3.1 Nov 15, 2025
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from 29b29e0 to 944777f Compare November 15, 2025 22:40
@sonarqubecloud

Copy link
Copy Markdown

@renovate renovate Bot changed the title chore(deps): update dependency click to v8.3.1 chore(deps): update dependency click to v8.3.2 Apr 3, 2026
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from 944777f to 0418f78 Compare April 3, 2026 21:12
@renovate renovate Bot changed the title chore(deps): update dependency click to v8.3.2 Update dependency click to v8.3.2 Apr 8, 2026
@renovate renovate Bot changed the title Update dependency click to v8.3.2 Update dependency click to v8.3.3 Apr 22, 2026
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from 0418f78 to d67af38 Compare April 22, 2026 16:59
@sonarqubecloud

Copy link
Copy Markdown

@renovate renovate Bot changed the title Update dependency click to v8.3.3 Update dependency click to v8.4.0 May 17, 2026
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from d67af38 to c5a80a5 Compare May 17, 2026 05:28
@renovate renovate Bot changed the title Update dependency click to v8.4.0 Update dependency click to v8.4.1 May 22, 2026
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from c5a80a5 to 3e814be Compare May 22, 2026 05:50
@sonarqubecloud

Copy link
Copy Markdown

@renovate
renovate Bot force-pushed the renovate/click-8.x branch from 3e814be to fe19733 Compare July 26, 2026 01:05
@renovate renovate Bot changed the title Update dependency click to v8.4.1 Update dependency click to v8.4.2 Jul 26, 2026
@renovate renovate Bot changed the title Update dependency click to v8.4.2 Update dependency click to v8.5.0 Aug 26, 2026
@renovate
renovate Bot force-pushed the renovate/click-8.x branch from fe19733 to 1f01e67 Compare August 26, 2026 16:41
@sonarqubecloud

Copy link
Copy Markdown

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants