Upstream¶
Click Extra was born as a collection of patches for unmaintained or slow-moving click-contrib addons. Over time, many of these fixes were contributed back upstream, and the project grew into a significant contributor to the Click ecosystem.
This page tracks click-extraâs relationship with its upstream dependencies: code contributed back, issues reported, workarounds provided, and features that upstream declined.
Code contributed upstream¶
PRs authored by the click-extra maintainer and merged into upstream projects.
click¶
Default and sentinel handling:
#3137- Provide altered context to callbacks to hideUNSETvalues asNone#3068- HideSentinel.UNSETvalues for defaults processed byContext.invoke#3030- Differentiate absence of value and value of absence fordefaultandflag_valuearguments#2956- Fix reconciliation of envvar withdefault,flag_valueandtypeparameters for flag options#3225- Fix callableflag_valuebeing instantiated when used as a default#3224- HideSentinel.UNSETvalues asNoneinlookup_default()
Help system:
#2811- Fix eagerness of help option generated byhelp_option_names#2840- Move--helpoption defaults from its class to its decorator
Enum and Choice support:
Testing:
Documentation:
python-tabulate¶
pygments¶
furo¶
cloup¶
pallets-sphinx-themes¶
click-contrib/sphinx-click¶
click-contrib/click-log¶
Upstreamed from click-extra¶
Issues that click-extra solved with local workarounds first. The fix was later contributed upstream and the workaround removed from click-extra.
click¶
#2811/#2563- Help option eagerness and deduplication. click-extra had customHelpOptionfixes; contributed upstream and removed locally.#2680- Callbacks not properly closed on CLI exit. click-extra patchedOptionto force-close; contributed the fix upstream.#2523/#2522-CliRunnerconflating stderr and stdout. click-extra backported the fix before the Click release.#2516/#2517- Help extra items (default, envvar, required) were computed and rendered together. click-extra needed them split to inject colorization; contributed the refactor upstream.
cloup¶
Addressed by click-extra¶
Issues that remain open or unfixed upstream. click-extra provides the solution.
Color and terminal support¶
click-extra implements NO_COLOR, FORCE_COLOR, and full help colorization with a theme system, addressing long-standing Click gaps:
Configuration files¶
click-extraâs config module replaces the functionality of several unmaintained packages, with multi-format support (TOML, YAML, JSON, INI, XML), pyproject.toml integration, and a precedence chain:
Version option¶
click-extraâs ExtraVersionOption adds template variables for git metadata (branch, hash, date, tag), environment info, and Python/OS details:
Environment variables¶
click-extra auto-generates environment variables for all options and adds show_envvar as a global context setting:
Logging¶
click-extraâs logging module replaces the unmaintained click-log package:
Normalized arguments¶
ANSI rendering in documentation¶
click-extra provides AnsiSessionLexer and Sphinx integration for rendering ANSI-colored CLI output in documentation:
Sphinx click:source and click:run directives¶
click-extra maintains and extends the click:source/click:run directives originally from pallets-sphinx-themes:
Declined by upstream¶
PRs and features rejected by upstream maintainers. click-extra provides the functionality regardless.
python-tabulate¶
click-extra maintains a local patch for GitHub-Flavored Markdown table alignment.
dbcli/cli_helpers¶
Open upstream¶
PRs and issues still pending upstream.