Change8

8.3.3

📦 clickView on GitHub →
1 features🐛 6 fixes1 deprecations🔧 6 symbols

Summary

Click 8.3.3 is a bug fix release that improves command execution security by removing shell=True, fixes issues with default values in help rendering and flags, and enhances test isolation.

Migration Steps

  1. If you were relying on make_default_short_help, note that it is now considered private API.

✨ New Features

  • Show custom show_default string in prompts, matching the existing help text behavior.

🐛 Bug Fixes

  • Fixed TypeError when rendering help for an option whose default value is an object that doesn't support equality comparison with strings, such as semver.Version.
  • Fixed pager test pollution under parallel execution by using pytest's tmp_path fixture instead of a shared temporary file path.
  • Treated Sentinel.UNSET values in a default_map as absent, so they fall through to the next default source instead of being used as the value.
  • Patched pdb.Pdb in CliRunner isolation so pdb.set_trace(), breakpoint(), and debuggers subclassing pdb.Pdb (ipdb, pdbpp) can interact with the real terminal instead of the captured I/O streams.
  • CliRunner's redirected streams now expose the original file descriptor via fileno(), so that faulthandler, subprocess, and other C-level consumers no longer crash with io.UnsupportedOperation.
  • Fixed default=True with boolean flag_value always returning the flag_value instead of True. The default=True to flag_value substitution now only applies to non-boolean flags, where True acts as a sentinel meaning "activate this flag by default". For boolean flags, default=True is returned as a literal value.

Affected Symbols

⚡ Deprecations

  • Marked make_default_short_help as private API.