Index index by Group index by Distribution index by Vendor index by creation date index by Name Mirrors Help Search

python313-click-extra-8.6.2-1.1 RPM for noarch

From OpenSuSE Tumbleweed for noarch

Name: python313-click-extra Distribution: openSUSE Tumbleweed
Version: 8.6.2 Vendor: openSUSE
Release: 1.1 Build date: Tue Jul 28 06:57:48 2026
Group: Unspecified Build host: reproducible
Size: 2960940 Source RPM: python-click-extra-8.6.2-1.1.src.rpm
Packager: https://bugs.opensuse.org
Url: https://github.com/kdeldycke/click-extra
Summary: Drop-in replacement for Click to make user-friendly and colorful CLI
🌈 Drop-in replacement for Click to make user-friendly and colorful CLI

Provides

Requires

License

GPL-2.0-or-later

Changelog

* Tue Jul 28 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.6.2:
    * Treat an unreaped zombie as a dead process in the run_cli
      process-group teardown tests, so they pass in a build sandbox with
      no init to reap orphans (like Alpine's abuild container).
  - update to 8.6.1:
    * Deprecated: ClickExtraConfig, PrebakeConfig and TestSuiteConfig
      resolve again from the top-level click_extra namespace, warning
      and redirecting to click_extra.config; removed in 9.0.0.
    * Deprecated: The click_extra.test_plan module and the top-level
      TestPlanConfig, parse_test_plan, run_test_plan and
      DEFAULT_TEST_PLAN names warn and resolve to their test_suite
      replacements; removed in 9.0.0.
    * Deprecated: prebake_dunder, prebake_version and
      discover_package_init_files resolve again from
      click_extra.version, warning and redirecting to
      click_extra.prebake; removed in 9.0.0.
    * Deprecated: Importing INDENT, PROMPT, args_cleanup or
      format_cli_prompt from click_extra.testing now warns and
      redirects to click_extra.execution; removed in 9.0.0.
    * Ship the test suite and the docs and CI files it reads in the
      PyPI sdist, so downstream packagers can build and test without
      a Git checkout.
    * Add a [tool.setuptools] shim so builds that fall back to
      setuptools still bundle the themes.toml and py.typed data
      files.
    * Fix the source line reported in click:run variable-conflict
      errors when a MyST directive's body ends in blank lines.
    * Fix the MkDocs test tree erroring instead of self-skipping when
      mkdocs-click is absent but mkdocs and pymdown-extensions are
      present.
* Mon Jul 27 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.6.0:
    * Add OperationTrail, the batch-reporting companion of
      run_jobs/run_lanes: each operation leaves a persistent ✓/✘ line
      and the batch closes with a timed summary. Adds the trail_glyph
      and trail_line helpers.
    * Add column-order and row-order options to {matrix} blocks
      (newest-first/oldest-first), defaulting both axes to
      newest-first so the most recent compatibility information reads
      from the upper-left corner.
    * Refresh each python:render :mirror: block through click-extra
      refresh-directives with the source file's directory on
      sys.path, so a block importing a sibling helper module resolves
      offline as it does at build time.
    * Fix test-suite --command resolving a venv's symlinked Python
      interpreter (.venv/bin/python) to its base target, silently
      dropping the venv's installed packages.
    * Upload coverage from the once-only test job to Codecov, and
      move the package-install CLI checks to a dedicated CI job
      skipped on pull requests.
* Thu Jul 23 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.5.0:
    * Breaking: Rename the --show-params flag to --params. Its
      parameter ID changes from show_params to params, its
      environment variable suffix from _SHOW_PARAMS to _PARAMS, and
      click-extra wrap --show-params becomes click-extra wrap
    - -params. ShowParamsOption and @show_params_option keep their
      names.
    * Add the click_extra.sphinx.myst_docstrings Sphinx extension:
      write Python docstrings in MyST markdown, transparently
      converted to reST at build time, keeping sphinx.ext.autodoc and
      sphinx_autodoc_typehints unmodified. Absorbed from
      repomatic.myst_docstrings.
    * Add a convert-to-myst subcommand migrating a package's reST
      docstrings and comments to MyST in place, idempotently: string
      literals and other runtime code pass through byte-for-byte.
      Absorbed from repomatic, along with the sphinx-apidoc stub
      converter click_extra.rst_to_myst and the public
      convert_source().
    * Add a :mirror: flag to the python:render Sphinx directive: the
      block's generated Markdown is mirrored into the source .md
      between <!-- mirror --> markers, reviewable in raw diffs;
      builds regenerate it in memory, never writing to the source.
    * Extend click-extra refresh-directives to also refresh
      python:render :mirror: regions, alongside {matrix} blocks, by
      executing each mirror block's Python.
    * Add a start_new_session option to run_cli(): the child leads
      its own POSIX session and process group, and every kill path
      signals the whole group, so grandchildren are reaped. Off by
      default to keep interactive prompts working; no-op on Windows.
    * Add a themes demo subcommand (click-extra themes) printing a
      sample help screen rendered under every built-in theme, for a
      quick terminal preview of all palettes.
    * Promote ctx.render_table and ctx.print_table to methods on
      click_extra.Context, reading the --table-format and --sort-by
      selections from the context's shared meta so they work from any
      subcommand. TableFormatOption and SortByOption remain drop-ins
      on click and cloup commands; ctx.render_table now honors
    - -sort-by.
    * Warn on configuration keys unknown to the config_schema when
      the section is schema-only, instead of dropping them silently;
      strict mode still raises, and sections mixing CLI parameters
      stay silent. Exposed as warn_unknown on make_schema_callable()
      and schema_warn_unknown on run_config_validation().
    * Convert all of click-extra's own docstrings and comments from
      reST to MyST.
    * Fix a group-level --theme not reaching the CLI wrapped by
      click-extra wrap: the target's help now renders in the chosen
      palette instead of falling back to the default dark theme.
    * Fix click-extra refresh-directives rewriting {matrix} examples
      nested inside longer code fences: documented illustrations are
      copied verbatim, never refreshed or executed.
* Thu Jul 16 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.4.0:
    * Breaking: Remove the historical from click_extra.version import
      prebake_* compatibility imports; the pre-baking helpers are
      only importable from click_extra.prebake.
    * Breaking: Remove the leaked annotations and warnings entries
      from the package's public API: both were star-import artifacts,
      not Click, Cloup or Click Extra API.
    * Breaking: Move args_cleanup, format_cli_prompt, PROMPT and
      INDENT from click_extra.testing to click_extra.execution; all
      but PROMPT stay importable from their historical home.
    * Breaking: Remove the dead CarapaceCompletion.is_empty() method
      and the deprecated alert parser's current_depth().
    * Add a --tree flag to the default option set: it prints the
      whole hierarchy of nested subcommands as a tree (names,
      aliases, operand metavars and one-line descriptions), then
      exits. The new click_extra.tree module exposes
      render_command_tree(), TreeOption and @tree_option.
    * Add a --tree mode to click-extra wrap: prints the subcommand
      tree of any foreign Click CLI without running it, with the same
      target resolution as --show-params and --man.
    * Help screens and the --tree view now style subcommand aliases
      with the alias theme slot and their parenthetical punctuation
      with alias_secondary; aliases used to take the subcommand slot
      and the punctuation stayed plain.
    * Table formats able to express styles natively (html,
      unsafehtml, mediawiki, textile, jira and the four latex*
      variants) now translate the ANSI codes carried by cells and
      headers to the format's own styling markup instead of stripping
      them.
    * An explicit --color no longer injects raw ANSI codes into the
      markup formats supporting native styling; the raw passthrough
      escape hatch remains for the formats without.
    * Add split_ansi() and render_ansi() plus the ansi_to_html(),
      ansi_to_jira(), ansi_to_latex() and ansi_to_textile()
      converters to click_extra.styling.
    * Add run_cli(args) to click_extra.execution: a subprocess.run
      work-alike that logs the invocation as a copy-pasteable prompt
      line and streams the child's output to the logger as it is
      produced; a per-call label tags each streamed record.
    * format_cli_prompt now styles each token family with the theme
      slot it holds elsewhere in a CLI's output; the binary-path
      renderer behind it is public as highlight_bin_name(program).
    * Add the Duration parameter type to click_extra.types: parses a
      friendly duration (7 days, 12h), an ISO 8601 duration (P7D) or
      an RFC 3339 timestamp into a datetime.timedelta; zero, empty
      and future values parse to None.
    * One --sort-by can now serve subcommands rendering heterogeneous
      tables: SortByOption accepts bare column IDs resolved per
      table, print_table() and render_table() headers accept
      ColumnSpec instances and (label, column_id) pairs, and
      column_sort_key() is public. An explicit default=() declares no
      default sort.
    * Add the isolated_app_dir fixture to click_extra.pytest:
      repoints click.get_app_dir-based configuration discovery at a
      fresh per-test directory, so in-process CLI invocations never
      read the host's real configuration folder.
    * Add install_interrupt_handler(ctx) and
      terminate_live_processes() to click_extra.execution: the first
      Ctrl+C now SIGTERMs every subprocess spawned through run_cli.
    * Log records emitted while a Spinner animates on the same stream
      are now printed through Spinner.echo(), on their own line above
      the animation, instead of garbling the in-progress frame. Adds
      active_spinner() to click_extra.spinner.
    * Add temporary_env() to click_extra.envvar: a context manager
      applying environment variable changes for the duration of a
      block, then restoring every touched variable.
    * Expose generator_tag() in click_extra.parameters: the
      provenance tag stamped into generated man pages and Carapace
      completion specs.
    * Unify the palettes materializing the 16 ANSI colors as concrete
      RGB: Style CSS output, contrast math and the first 16 slots of
      the indexed palette now share the palette the documentation
      renders terminal sessions with.
    * select_row accepts any Mapping, not just dict, so read-only row
      shapes project without a copy.
    * test-suite now runs its target binaries through run_cli: each
      invocation is disclosed as a themed prompt line and its output
      streams live to DEBUG logs.
    * print_table() now honors a --color forced on a parent group:
      the raw-ANSI escape hatch used to be ignored when the color
      option was not declared on the very command printing the table.
    * --color/--no-color now reach output produced from background
      threads: StreamHandler consults the process-wide
      invocation_color() instead of click.echo's thread-local context
      lookup.
    * Formatter no longer mutates a record's levelname in place: a
      record formatted several times no longer accumulates styling or
      glued labels.
    * Style.from_ansi() now parses the parameter-less reset escape
      (\x1b[m) and ignores all selective reset codes (22-29, 39, 49,
      55), not just the full 0 reset.
    * ConfigOption.excluded_params now resolves the CLI's --help
      option ID from Click at runtime instead of assuming it is named
      help; the option keeps being excluded from configuration files
      if Click ever renames it.
    * ExtraOption.handle_parse_result now pre-records the parameter
      source of every option, not just eager ones, so non-eager
      callbacks and types keep introspecting their provenance on
      Click 8.4.0.
    * The --jobs sequential-execution warning now fires only for an
      explicit auto/max request; the option's own default logs it at
      info level.
    * test-suite no longer crashes on non-UTF-8 binary output:
      undecodable bytes are escaped into the captured stream, and the
      subprocess inherits PYTHONIOENCODING=utf8.
    * A test-suite case skipped by only_platforms now reports the
      platforms it requires; the message used to name the current
      platform.
    * regex_fullmatch_line_by_line now reports a regular line
      mismatch instead of crashing with an IndexError when the regex
      and the checked content do not have the same number of lines.
    * Add a binaries page to the documentation: a searchable,
      sortable catalog of every released standalone executable with
      download links, VirusTotal analyses and a detection trend
      chart.
    * Coverage now uploads to Codecov from one runner per OS and
      Python version, on released Click and Cloup only; the Test
      Analytics upload and its junit.xml artifact are dropped.
* Wed Jul 08 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.3.0:
    * Add a click:config Sphinx directive documenting a CLI's
      config_schema: a summary table plus one section per option, with
      docstring, type, default, and a TOML example. Adds
      schema_field_infos(), field_docstrings() and SchemaFieldInfo to
      the public API.
    * Disable mouse zoom on the class inheritance diagrams of the
      documentation's API sections, so they no longer hijack page
      scrolling; the fullscreen viewer keeps zoom.
    * Add tests covering 256-color palette index 0 and empty-string
      colors in Style, gated on runtime probes of Click 8.5.0's color
      validation.
* Thu Jul 02 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.2.0:
    * Add a --export-config FORMAT option to every @command and
      @group: it renders the resolved configuration on <stdout> in
      any writable format (toml, yaml, json, json5, jsonc, hjson,
      xml), then exits. Adds ExportConfigOption,
      @export_config_option and SERIALIZABLE_FORMATS to the public
      API.
    * Add --theme=auto: it selects the dark or light palette from the
      terminal background, detected from CLITHEME, COLORFGBG or a
      live OSC 11 query; the default stays dark. Adds
      resolve_background and query_osc_background to
      click_extra.color, resolve_auto_theme and AUTO_THEME to
      click_extra.theme.
    * Add run_lanes(func, lanes) and resolve_jobs(ctx, count) to
      click_extra.execution: run each lane serially while distinct
      lanes run concurrently, sized by --jobs; expose the
      worker-count policy shared with run_jobs. A serial_at_debug
      keyword collapses both fan-outs to sequential at DEBUG
      verbosity.
    * Add the always-on matrix Sphinx directive, rendering a
      package's release compatibility matrix from its git tags, for
      the Python interpreter ({matrix} python) or a dependency
      ({matrix} <distribution>) axis; a comment-marker form renders
      the embedded table on GitHub too.
    * Add the click-extra refresh-directives command (wrapping
      click_extra.sphinx.matrix.update_matrix_blocks) to regenerate
      the tables embedded in {matrix} directive blocks and <!--
      matrix … --> marker regions; its --check mode flags stale
      tables in CI.
    * Publish format_cli_prompt in click_extra.testing (was the
      private _format_cli_prompt): render a themed, copy-pasteable
      prompt simulating a CLI invocation.
    * Fix Carapace dynamic completion: an option's value or a
      subcommand argument with a custom shell_complete now resolves
      through the generated spec, instead of returning empty or
      root-level candidates.
    * Fix EnumChoice shell completion on Click 8.4.0: completion
      candidates are now normalized, so they match the option's
      accepted values instead of appearing as raw uppercase enum
      names.
    * Fix run_jobs blocking on Ctrl+C during parallel execution: an
      interrupt now drops queued items and returns immediately,
      instead of waiting for every in-flight task to finish.
    * Add a documentation page on Typer compatibility, explaining why
      click-extra cannot be combined with Typer and how to get the
      same options natively.
* Wed Jul 01 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.1.4:
    * Skip the EnumChoice shell-completion case-folding test on Click
      8.3.
  - update to 8.1.3:
    * Mark test as network-dependent
  - update to 8.1.2:
    * The runner pytest fixture now pins HOME and its platform
      equivalents inside its isolated filesystem, making
      configuration-file discovery independent of the ambient
      environment.
    * The Sphinx, MkDocs and Carapace tests now self-skip when their
      optional dependencies are missing, so downstream packagers no
      longer need to --ignore them.
  - update to 8.1.1:
    * Fix multiple and variadic (nargs=-1) options typed with
      EnumChoice: their tuple default was stringified as a whole
      (str((MyEnum.FOO,))) instead of per member, so the default
      tripped Click's Value must be an iterable check when the option
      was left unset.
    * Fix decorator_factory leaking options across uses of a
      pre-instantiated decorator: when command() is stored (e.g. in a
      pytest parametrize list) and reused, Click mutated the shared
      params list by extending it with each decorated function's
      options, adding duplicates on every reuse. The fix re-evaluates
      params_func() fresh on each application.
  - update to 8.1.0:
    * Breaking:
    - Rename the test-plan subcommand to test-suite, its
    - -plan-file/--plan-envvar options to
    - -suite-file/--suite-envvar, its [tool.<cli>.test-plan]
      config section to [tool.<cli>.test-suite], the
      click_extra.test_plan module to click_extra.test_suite, and
      the
      TestPlanConfig/parse_test_plan/run_test_plan/DEFAULT_TEST_PLAN
      API to
      TestSuiteConfig/parse_test_suite/run_test_suite/DEFAULT_TEST_SUITE.
      The CLITestCase class and the [[cases]] file structure keep
      their names.
    - Replace the test-suite config's inline field with a native
      cases array under [tool.<cli>.test-suite.cases] (or set file
      to a suite path). Adds the cases field to TestSuiteConfig and
      the cases_from_data helper.
    - ClickExtraConfig, TestSuiteConfig, and PrebakeConfig are no
      longer re-exported from the top-level click_extra namespace;
      import them from click_extra.config.
    * Add a Carapace completion exporter: the click_extra.carapace
      module serializes a Click command tree to carapace-spec YAML
      for native shell completion, behind a new carapace extra. The
      to_carapace_spec, dump_carapace_spec, write_carapace_spec and
      install_carapace_spec API answers click#3188.
    * Add a --carapace mode to the wrap command: click-extra wrap
    - -carapace SCRIPT prints the target CLI's spec, and --install
      writes it into Carapace's user spec directory. Mutually
      exclusive with --man and --show-params.
    * The wrap command now accepts a local project directory, reading
      its console-script entry point from pyproject.toml or setup.cfg
      so a checked-out project can be wrapped without installing it
      first.
    * Add the @sort_by_option decorator for the --sort-by table
      option, composing with option groups and constraints; it
      accepts ColumnSpec definitions and a columns= registry so one
      column tuple drives both --columns and --sort-by. Closes
      click-extra#1777.
    * Decorators built by decorator_factory carry proper signatures:
      their option class's constructor surfaces in help(), the REPL
      and autodoc, and overloaded type hints let basedpyright,
      pyright and mypy infer the produced command or decorated
      callback. Closes click-extra#1781.
    * @version_option accepts an explicit version string as its first
      positional argument (@version_option("1.2.3")), for drop-in
      compatibility with Click.
    * A test-suite file may now be in any list-capable config format
      detected from its extension: TOML and JSON (built-in), plus
      YAML, JSON5, JSONC and Hjson (with their extras). Adds the
      load_test_suite helper and SUITE_FORMATS constant.
    * Accept a bare integer timeout in a test-suite case, coercing it
      to a float instead of rejecting it.
    * Default the test-suite config file to
      ./tests/cli-test-suite.toml, which parses with the built-in
      tomllib and so needs no optional extra.
    * Add an all extra that pulls in every optional feature at once.
    * Centralize config format reading, serialization, and detection
      in click_extra.config with the new serialize_content,
      read_file, and format_from_path helpers, joining the existing
      parse_content.
    * Add iter_subcommands and make_resilient_context to
      click_extra.parameters for enumerating a group's visible
      subcommands and building a parse-free introspection context.
    * Add the CONFIG_PATH_METADATA_KEY and
      NORMALIZE_KEYS_METADATA_KEY named constants for the schema
      field-metadata keys, alongside the existing
      EXTENSION_METADATA_KEY.
    * Man pages now render optional-value options like --color as
    - -color[=auto|always|never] and drop the spurious value metavar
      on repeatable count options like -v/--verbose.
    * When introspection (--man, --show-params, --carapace) cannot
      find a Click command in the resolved module, the error now
      explains that an entry point importing its command lazily must
      be addressed with module:function notation.
    * Unify the "missing optional dependency" error messages behind a
      shared missing_extra_message helper, pointing at the canonical
      pip install click-extra[<extra>] install target.
    * Restrict pytest collection to the tests folder and switch to
      importlib import mode, fixing import file mismatch errors when
      building from a packaged source tree alongside an installed
      copy. Closes click-extra#1779.
    * Show the same configuration across all eight supported formats
      (TOML, YAML, JSON, JSON5, JSONC, Hjson, INI, XML) in a tabbed
      block in the configuration docs.
    * Silence ambiguous cross-reference warnings in the Sphinx
      documentation build for the ColumnSpec, ConfigFormat,
      ConfigValidator and LogLevel classes re-exported at the package
      root.
* Tue Jun 23 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 8.0.1:
    Redo a proper release.
  - update to 8.0.0:
    No changelog available
* Thu Jun 18 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.20.1:
    * Fix the MkDocs plugin and Sphinx directives leaving Rich-based
      CLIs (such as rich-click) colorless in rendered documentation.
* Thu Jun 18 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.20.0:
    * Add MultiChoice to click_extra.types: a Click ParamType for
      comma-separated multi-pick from a fixed set of values, the
      pick-many counterpart to click.Choice.
    * Extend the --show-params table with seven new columns (Is flag,
      Flag value, Is bool flag, Multiple, Nargs, Prompt, Confirmation
      prompt).
    * Add the --columns option (ColumnsOption, @columns_option) for
      SQL SELECT-style column selection on both --show-params and the
      standalone click-extra show-params subcommand.
    * Add a click:tree Sphinx directive that walks a Click command
      tree and expands into a summary table plus one {click:run}
    - -help block per command. MyST-only.
    * Fix click-extra show-params ignoring the top-level
    - -table-format option and rendering its default as the enum
      name instead of the kebab-case ID.
    * Fix click-extra show-params and click-extra man resolving
      auto-generated environment variables as empty; the envvars
      column now matches what Click reads at runtime.
    * Fix the MkDocs plugin stripping ANSI escape codes but rendering
      no colors: it now generates the ANSI Pygments stylesheet and
      registers it through extra_css, so the -Ansi-* classes it emits
      are styled.
    * Drop duplicate and dead CSS classes from ANSI HTML rendering:
      compound tokens like Token.Ansi.Bold.Cyan now emit -Ansi
    - Ansi-Bold -Ansi-Cyan instead of repeating -Ansi-Bold and
      adding an unstyled -Ansi-Bold-Cyan.
  - update to 7.19.0:
    * Add an --output-dir DIR option to the click-extra man
      subcommand. With it set, the command writes one .1 file per
      (sub)command in the resolved tree into DIR (created if missing)
      instead of printing a single page to stdout. Suitable for
      invocation from a release pipeline or a distributor's build
      phase (Debian's override_dh_installman, Guix'
      install-man-page), without a project-local wrapper script.
    * Add a click_extra_manpages Sphinx configuration value (and the
      matching click_extra.sphinx.manpages module) and a
      click-extra-manpages directive. Projects enabling
      click_extra.sphinx can declare one or more {"script",
      "prog_name", "output_dir", "render_html"} entries to emit the
      corresponding Click command tree(s) as roff .1 files into
      <outdir>/<output_dir>/ on every HTML build. Each script is
      resolved the same way click-extra man does (console-script
      entry point, module:function, .py path, or module name); only
      HTML-family builders trigger the hook. When mandoc or groff is
      on PATH, every .1 also gets a browser-viewable .html sibling.
      The click-extra-manpages directive renders a relative-URL
      bullet list of all declared pages; it works at any depth in the
      doc tree.
    * Fix ExtraVersionOption.package_version resolving to None when
      the package's top-level module name differs from its installed
      distribution name (PIL vs Pillow, jwt vs PyJWT). The lookup now
      falls back to importlib.metadata.packages_distributions() on
      PackageNotFoundError. Ambiguous mappings (one import name to
      several distributions) still return None and log a debug
      message; pass package_name explicitly to disambiguate. Mirrors
      the upstream fix in PR pallets/click#3582.
* Mon Jun 01 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.18.0:
    * Add a --man option to the default set of @extra_command and
      @extra_group (via default_extra_params()): it prints the
      command's man page (roff) to stdout and exits. Also available
      as the @man_option decorator for plain Click CLIs.
    * Add an --accessible option to the default set of @extra_command
      and @extra_group (via default_extra_params()). Enabling it, or
      setting the ACCESSIBLE environment variable, is equivalent to
    - -no-color --table-format plain: it strips ANSI codes and
      renders tables without Unicode box-drawing characters, for
      screen readers. An explicit --color or --table-format (on the
      command line or in a configuration file) keeps precedence. Also
      available as the @accessible_option decorator and the
      AccessibleOption class.
    * Add a man subcommand to the click-extra CLI: click-extra man
      SCRIPT [SUBCOMMAND]... renders the man page (roff) of any
      external Click CLI without running it, resolving the target
      like show-params (console_scripts entry point, module:function
      notation, .py file, or module name). Both subcommands now also
      load .py file targets, which previously raised an unhandled
      error.
    * Generate man pages programmatically with the new
      click_extra.man_page module: render_manpage() for a single
      command, render_manpages() for the whole command tree (one page
      per subcommand), and write_manpages() to write .1 files (handy
      from a Debian override_dh_installman rule). Pages follow the
      man-pages(7) layout, discover subcommands dynamically, honor
      Click's \b no-rewrap marker and SOURCE_DATE_EPOCH for
      reproducible builds, and mirror Cloup option groups as .SS
      subsections (ungrouped options fall under an Other options
      heading).
    * Add a pre-configured -0/--zero-exit option flag, exposed as the
      @zero_exit_option decorator and the ZeroExitOption class. It
      stores the user's intent in ctx.meta under the new ZERO_EXIT
      key but does not alter the exit code itself: downstream code
      reads it to decide whether to suppress its non-zero "problems
      found" status.
    * Consolidate the --time, --jobs and -0/--zero-exit options into
      a single click_extra.execution module. The click_extra.jobs and
      click_extra.timer submodules are removed: their decorators and
      classes (timer_option, jobs_option, TimerOption, JobsOption,
      CPU_COUNT, DEFAULT_JOBS) remain importable from the click_extra
      root. The --show-params table now reports these options under
      click_extra.execution.
    * Honor the standard POSIXLY_CORRECT environment variable. When
      it is present in the environment (regardless of value),
      ExtraContext forces allow_interspersed_args to False, so every
      Click Extra command and group stops parsing options at the
      first positional argument, matching GNU getopt-based tools.
    * Add the run_config_validation() function and the
      ValidationReport dataclass to click_extra.config (both
      re-exported from the package root). They run the CLI-parameter
      strict check, the typed schema build, and every registered
      ConfigValidator in a single pass, returning the typed schema
      instance, the extracted extension sub-trees, and the list of
      ValidationErrors. collect_all=True gathers every error;
      collect_all=False stops at the first. Both --validate-config
      and normal --config loading now delegate to this primitive.
    * Unify configuration-loading errors under the single
      ValidationError type. Unknown CLI-parameter keys (strict=True)
      and unknown schema fields (schema_strict=True) previously
      surfaced as an uncaught ValueError traceback during --config
      loading; they now stop the run with a critical-level log and
      exit code 1, the same failure mode as extension-validator
      errors. Code that caught ValueError from config loading should
      catch the SystemExit from the exit (or use --validate-config /
      run_config_validation() to inspect errors without exiting).
    * Fix schema_strict=True wrongly rejecting the contents of a
      configuration field marked as an extension point with
      EXTENSION_METADATA_KEY when the field's Python type is not a
      mapping. The dataclass adapter now honors the marker the same
      way the outer strict check does, so the marked sub-tree is kept
      intact instead of being flattened and reported as unknown keys.
  - update to 7.17.2:
    * Add Mermaid diagrams throughout the documentation to render
      resolution and layering rules previously carried by prose or
      nested lists: configuration-file source selection and value
      precedence (config.md), the Click / Cloup / click-extra class
      layering and the @command/@group default-option bundle
      (commands.md), --color/--no-color ANSI enablement
      (colorize.md), the {version} and {exec_name} fallback chains
      (version.md), the decorator_factory subclass guardrail
      (decorators.md), and environment-variable id resolution
      (envvar.md).
  - update to 7.17.1:
    * Bundle click_extra/themes.toml into the Nuitka standalone
      binaries via a new [tool.nuitka] include-package-data setting.
      The 7.17.0 binaries aborted at startup with FileNotFoundError:
      themes.toml because the data file backing the built-in themes
      was not packaged, so Nuitka could not find it when
      click_extra.theme loaded it through importlib.resources.
  - update to 7.17.0:
    * All built-in themes now apply the man-pages(7) font convention:
      literal tokens (command and subcommand names, aliases, option
      flags, choice values) render bold, and replaceable tokens
      (metavars, argument names) render italic, layered on top of
      each palette's colors. The split is declared by the new
      LITERAL_STYLES / REPLACEABLE_STYLES frozensets in
      click_extra.theme, and a test enforces that every built-in
      theme keeps it. To avoid piling bold onto slots that already
      stand out, heading (now color + underline), deprecated, and
      search drop their bold; critical keeps it, as it is the only
      cue distinguishing it from error. In light and solarized_dark,
      heading is recolored (to magenta and violet respectively) so it
      stays distinct from the now-bold options and subcommands it
      previously shared a color with.
    * Add a manpage built-in theme: a colorless palette rendering the
      same bold-literal / italic-replaceable convention with no
      color, shadowing how man-pages(7) typesets a command.
      Selectable via --theme manpage.
    * HelpCommand now raises click.NoSuchCommand instead of
      click.UsageError when an unknown subcommand is requested. The
      user sees did-you-mean suggestions: Error: No such command
      'instal'. (Did you mean one of: 'install', 'uninstall'?).
    * Bump the Click floor to 8.4.1. Click 8.4.0 (PR
      pallets/click#3423) injects a space between an option's help
      text and its (DEPRECATED) label. The 8.4.1 floor (not 8.4.0) is
      required because Click 8.4.0 (PR pallets/click#3404) delayed
      set_parameter_source until after process_value, so eager
      callbacks that introspect ctx.get_parameter_source(self.name)
      read None and missed whether the option was set from the
      command line, environment, or default. This broke ColorOption's
      NO_COLOR/FORCE_COLOR precedence detection, ConfigOption's
      explicit-vs-autodiscover branching, and ShowParamsOption's
      Source column. Click 8.4.1 (PR pallets/click#3484) restores the
      pre-8.4.0 contract.
    * Remove the HelpExtraFormatter.write_usage override. Click 8.4.0
      (PR pallets/click#3420) made TextWrapper measure visible width
      instead of raw bytes, so the 24-bit-RGB-theme wrap workaround
      is no longer needed.
    * Drop the explicit type=UNPROCESSED from
      NoConfigOption.__init__. Click 8.4.0 (PR pallets/click#3363)
      auto-detects UNPROCESSED for flag_value with non-basic types,
      so the flag_value=NO_CONFIG sentinel reaches Option unchanged
      on its own.
    * Bump the requests floor to 2.34. Requests 2.34.0 ships inline
      type annotations, so the types-requests stub package is no
      longer needed and has been removed from the typing dependency
      group.
    * Bump the myst-parser floor in the docs dependency group to 5.1.
      Doc builds now use myst-parser's native "alert" syntax
      extension (added in 5.1.0) instead of the in-tree regex
      converter in click_extra.sphinx.alerts; "alert" is added to
      myst_enable_extensions in docs/conf.py. The in-tree converter
      remains in place for the base test dependency group, where
      myst-parser>=4 still resolves to 4.x on Python 3.10.
    * Drop the colorama test-matrix variation. Click PR
      pallets/click#3505 merged the Colorama-removal branch into
      stable, making a dedicated CI axis unnecessary.
* Fri May 15 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.16.1:
    * Fix ConfigOption mutating its cached params_template when
      merging user configuration. '_recursive_update' updates its
      first argument in place, so back-to-back invocations of the
      same CLI (Sphinx builds, test runners, REPLs) leaked keys set
      by an earlier --config into the current invocation's
      default_map. Both the --config load path and --validate-config
      now pass a deep copy of the template.
  - update to 7.16.0:
    * Theme system overhaul. Four branded palettes join the built-in
      catalog: solarized_dark (Ethan Schoonover), dracula (Zeno
      Rocha), nord (Arctic Ice Studio), and monokai (Wimer
      Hazenberg), hand-curated for the semantic roles click-extra
      exposes (option, metavar, choice, deprecated, envvar, …). The
      full catalog now ships as click_extra/themes.toml (a TOML data
      file) instead of Python subclasses, loaded at import time via
      importlib.resources for proper wheel/zipapp support.
      BUILTIN_THEMES is the single public dict of {name:
      HelpExtraTheme}; access individual palettes via
      BUILTIN_THEMES["dark"], BUILTIN_THEMES["solarized_dark"], etc.
      Adding a built-in theme is a one-file data edit: declare a
      [<name>] table with one inline-table per styled slot, no Python
      needed. Breaking: the click_extra.themes module is removed
      (import from click_extra or click_extra.theme); the six
      per-theme UPPER_CASE constants (DARK, DRACULA, LIGHT, MONOKAI,
      NORD, SOLARIZED_DARK) are removed (use BUILTIN_THEMES["<name>"]
      instead).
    * Breaking: default_theme module attribute replaced by the
      get_default_theme() / set_default_theme(theme) accessors. The
      previous module-attribute pattern silently froze whatever was
      bound at import time when consumers (e.g. ExtraVersionOption's
      style defaults) captured default_theme.invoked_command as a
      default function parameter, so later overrides via
      wrap.patch_click() didn't propagate. The function pair always
      observes the current value. click_extra.wrap.patch_click() now
      calls set_default_theme().
    * Breaking: OK and KO pre-rendered constants removed. They were
      frozen at import time against the dark theme, so --theme light
      invocations still showed dark-themed glyphs in --show-params
      output. Replaced with OK_GLYPH = "✓" and KO_GLYPH = "✘" raw
      strings; style at the call site via
      get_current_theme().success(OK_GLYPH) / .error(KO_GLYPH) so the
      rendering follows the active theme.
    * Breaking: theme_registry no longer accepts a Callable[[],
      HelpExtraTheme] value; only HelpExtraTheme instances are valid
      entries. The runtime-detection-via-callable pattern was
      documented but never used; loading themes from --config is the
      supported equivalent (see Themes from your --config file).
    * New ThemeChoice is now a fresh click.ParamType (not a
      click.Choice subclass), exposing the same choices /
      case_sensitive / normalize_choice duck-type interface so
      click_extra.colorize keeps per-choice token coloring. Avoids
      the fragile no-op setter the previous subclass design relied
      on.
    * New TELEMETRY context-meta key in click_extra.context;
      TelemetryOption now writes the reconciled value to
      ctx.meta[click_extra.context.TELEMETRY] instead of an ad-hoc
      ctx.telemetry attribute, aligning with every other option's
      storage pattern. Breaking: consumers reading ctx.telemetry
      directly must switch to context.get(ctx, context.TELEMETRY).
    * Callback method renames for harmonized verb taxonomy (set_<key>
      writes to ctx.meta[<key>]; init_<system> wires up sibling
      machinery): ColorOption.disable_colors → set_color (also fixes
      the misleading name — the callback handles enable too);
      TelemetryOption.save_telemetry → set_telemetry;
      TimerOption.register_timer_on_close → init_timer.
      ColorOption.set_color and ThemeOption.set_theme are now bound
      methods (not @staticmethod).
    * New click_extra.styling module — a feature-rich Style subclass
      of cloup.Style, transparently shadowed as from click_extra
      import Style. Additions: compact single-line __repr__; hex
      shorthand constructor (Style(fg="#f1fa8c") and 3-digit #abc);
      __str__ returning a styled "sample" for REPL visualization;
      composition operator a | b (right operand wins); cascade(base)
      for theme-inheritance fills; to_dict() / from_dict() for
      TOML/JSON round-trip; to_css() emitting CSS declarations;
      from_ansi() parsing SGR sequences back into a Style;
      contrast_ratio(other) for WCAG 2.x luminance ratio. Equality
      and hash ignore the lazy _style_kwargs cache so identical
      styles compare equal regardless of call history. WCAG AA Large
      contrast gates added for all branded themes. The module also
      exposes fields_to_dict, dict_to_fields, and cascade_fields as
      shared dataclass-roundtrip helpers used internally by both
      Style and HelpExtraTheme.
    * HelpExtraTheme gains to_dict() / from_dict() / cascade(base).
      to_dict() emits only slots that diverge from the default;
      from_dict() rejects unknown keys so typos surface immediately.
      cascade(base) layers a sparse override on top of a full
      palette: config-set slots win, unset slots inherit from the
      base.
    * --config now reads user-defined theme palettes from the config
      file. Every [<cli>.themes.<name>] table (or
      [tool.<cli>.themes.<name>] in pyproject.toml) is parsed via
      HelpExtraTheme.from_dict and available to --theme for the
      current invocation. Known names cascade on top of the matching
      built-in; unknown names become stand-alone themes. The registry
      update lands on ctx.meta under
      click_extra.context.THEME_OVERRIDES and never mutates the
      module-level theme_registry, so back-to-back invocations don't
      cross-contaminate. A built-in ConfigValidator for the themes
      extension path is auto-registered on every ConfigOption, so
      malformed entries surface as ValidationError with a rooted path
      during --validate-config and at normal load time. wrap inherits
      the same behavior automatically.
    * --theme now uses ThemeChoice, a click.Choice subclass whose
      choices property reads the live registry (global plus
      per-context overrides) at every lookup. Themes loaded from
    - -config appear as valid choices and in the --help metavar with
      no extra wiring. Subclassing click.Choice preserves the
      per-token colorization that click_extra.colorize already
      applies to choice metavars.
    * Extend configuration validation with an app-defined hook for
      sub-trees whose keys are data rather than CLI flag names. New
      public types: ConfigValidator (binds a dotted extension_path to
      a callable that inspects the matching sub-tree),
      ValidationError (rooted path, message, optional code), and the
      EXTENSION_METADATA_KEY dataclass-field flag for marking
      extension points whose Python type isn't a mapping. Validators
      are registered through a new config_validators= kwarg on
      ExtraCommand / ExtraGroup (and the @command / @group /
      @config_option decorators), and run during both
    - -validate-config and normal --config loading. Schema-typed
      dict[str, X] fields are also recognized as extension points.
    - -validate-config now collects every error before exiting and
      surfaces all failures with the same ValidationError shape.
    * Flip the AnsiColorLexer.true_color default to True. 24-bit RGB
      sequences now render as inline style="color: #rrggbb" spans by
      default in Sphinx, MkDocs, and pygmentize output. Behavior
      change for downstream HTML: documents that previously used
      Ansi-C{n} CSS classes now use inline RGB styles. The old
      behavior is still available as
      AnsiColorLexer(true_color=False). Add :emphasize-result-lines:
      option to click:run and python:run Sphinx directives so authors
      can highlight specific lines in the captured output
      independently of :emphasize-lines: on the source block. Fix
      HelpExtraFormatter.write_usage to bypass Click's wrap_text when
      the styled usage fits on a single visible line: 24-bit RGB
      themes embed 17+ bytes of ANSI escape per token, inflating
      Click's byte-based line measurement and causing premature
      mid-token wraps on branded themes.
    * Fix pyproject.toml CWD discovery to skip files lacking a
      [tool.<cli_name>] section. An unrelated pyproject.toml (like a
      dotfiles repo's [tool.ruff]) no longer shadows the user's
      app-dir config.
    * Fix ExtraVerbosity.set_level() to no-op during
      ctx.resilient_parsing, preventing spurious logger level changes
      during help rendering, shell completion, and any
      make_context(resilient_parsing=True) path. Fix reset_loggers
      double-registration: when both --verbosity and -v are passed,
      the close callback is now registered at most once per
      invocation via a sentinel in ctx.meta.
    * Inner bracket-field slots (envvar, default, required,
      range_label) fall back to the bracket slot's style when left at
      identity. A theme that sets only bracket now colours the entire
      bracket field uniformly — structural tokens and value tokens
      alike — so a minimal palette never renders value tokens
      unstyled inside a styled bracket.
    * Deprecate click_extra.sphinx.alerts now that myst-parser 5.1.0
      ships a native "alert" syntax extension.
      click_extra.sphinx.setup() registers the regex-based
      GitHub-alerts converter only when the installed myst-parser is
      below the new MYST_NATIVE_ALERTS_VERSION constant
      (Version("5.1.0")); on newer releases it logs a migration
      notice pointing at myst_enable_extensions = [..., "alert"] and
      skips the hook. The converter also emits a % empty alert body
      MyST comment placeholder so a bare > [!TIP] renders as a
      title-only admonition, matching myst-parser 5.1+'s output
      instead of being silently dropped. Slated for removal once the
      myst-parser floor moves to >=5.1.
    * Relax default_config_file_pattern in click_extra.pytest to make
    * .json5 and *.jsonc optional in the regex, so test assertions
      pass in hermetic builds where those optional extras are not
      installed.
  - update to 7.15.0:
    * Add opt-in 24-bit true-color rendering to the ANSI Pygments
      stack. Pass true_color=True to AnsiColorLexer, AnsiFilter, or
      any session lexer (like get_lexer_by_name("ansi-shell-session",
      true_color=True)) to preserve SGR 38;2;r;g;b and 48;2;r;g;b
      sequences as Token.Ansi.FG_{rrggbb} / Token.Ansi.BG_{rrggbb}
      tokens instead of quantizing them to the 256-color palette.
      AnsiHtmlFormatter renders those tokens as inline style="color:
    [#]rrggbb" / style="background-color: #rrggbb" spans. The default
    behavior (256-color quantization) is unchanged.
    * New click_extra.theme module centralizes all theme machinery:
      HelpExtraTheme, default_theme, nocolor_theme, OK, KO,
      ThemeOption, theme_option decorator, theme_registry, and
      register_theme(). Every click-extra command now accepts --theme
      [dark|light]; downstream consumers can extend the choice list
      via register_theme(). The active theme for a CLI run is stored
      in ctx.meta[context.THEME] by ThemeOption and retrieved via
      get_current_theme(), so back-to-back invocations in the same
      process (Sphinx builds, test runners, REPLs) no longer leak
    - -theme choices into each other. The wrap subcommand reads the
      theme from the parent group's context rather than carrying its
      own --theme. Adds a corresponding docs/theme.md user guide.
      Breaking: downstream code importing theme symbols directly from
      click_extra.colorize must update to click_extra.theme; the
      canonical from click_extra import HelpExtraTheme path is
      unaffected.
    * New click_extra.context module consolidates ExtraContext (moved
      from click_extra.commands) and a documented registry of every
      ctx.meta key Click Extra writes or reads: RAW_ARGS,
      CONF_SOURCE, CONF_FULL, TOOL_CONFIG, VERBOSITY_LEVEL,
      VERBOSITY, VERBOSE, START_TIME, JOBS, TABLE_FORMAT, SORT_BY,
      and THEME. The get() and set() helpers replace scattered
      ctx.meta.get(key, ...) calls throughout the codebase. Replaces
      the former click_extra.ctx_meta module. Breaking: from
      click_extra.commands import ExtraContext and from click_extra
      import ctx_meta must be updated to from click_extra.context
      import ExtraContext and from click_extra import context
      respectively; the canonical from click_extra import
      ExtraContext path is unaffected.
    * Add python:source, python:run, python:render,
      python:render-myst, and python:render-rst Sphinx directives
      under a new python domain in click_extra.sphinx. They mirror
      click:source / click:run for arbitrary Python (no Click CLI
      required): python:source runs silently and shows source,
      python:run captures stdout and renders it in a code block
      (default lexer text, override via :language:), and the render
      family parses the captured stdout as live document content:
      generated tables, headings, admonitions, and cross-references
      become first-class document nodes rather than a code block.
      python:render uses the host file's parser; python:render-myst
      forces MyST parsing (so a .rst host can embed MyST-generated
      content); python:render-rst forces reST parsing (so a .md host
      can embed reST-generated content). The Python and Click runners
      hold independent per-document namespaces. The render family
      replaces the docs_update.py regenerator + marker-region pattern
      many downstream projects use; the same logic now lives inline
      in the doc page and runs at build time, so the rendered HTML is
      always current.
    * Breaking change: the click:* and python:* Sphinx directives are
      now disabled by default. Both families execute arbitrary Python
      at build time with full Sphinx-process privileges (filesystem,
      network, environment secrets), so registering them on every
      project that imports click_extra.sphinx silently expanded the
      attack surface of every consumer. To re-enable, add
      click_extra_enable_exec_directives = True to conf.py. Always-on
      features (the ANSI-capable Pygments HTML formatter and the
      GitHub-alerts → MyST/reST converter) are unaffected. Without
      the flag, click:source, click:run, python:source, python:run,
      python:render, python:render-myst, and python:render-rst are
      not registered and any reference to them produces an "Unknown
      directive" warning at build time.
    * Tighten Click floor from 8.1 to 8.3.1. The relaxation in 7.14.1
      went further than needed; 8.3.1 is the minimum that ships the
      parameter-name fix we depend on.
    * Move --cov and --cov-report=term from pyproject.toml
      [tool.pytest].addopts into the CI workflow. Removes pytest-cov
      as an unconditional test-time dependency for downstream
      packagers.
    * Move tests/test_mkdocs.py into tests/mkdocs/. Downstream
      packagers can skip it with --ignore=tests/mkdocs without
      pulling in mkdocs-click.
    * Loosen default_debug_*_version_details regex helpers to also
      match None for git_long_hash, git_short_hash, and git_date.
      Lets debug-output tests pass when the source tree has no .git
      directory (Guix git-fetch, sdist installs).
    * Mark test_ansi_lexers_candidates with the new network marker.
      Sandboxed builds can exclude it with pytest -m "not network".
    * Make tests/test_table.py tolerate tabulate <0.10: branch the
      asciidoc fixture on the cell-alignment marker (<8 vs 8<) and
      skip the colon-grid parametrize case when the format is aliased
      to grid.
* Wed Apr 29 2026 Steve Kowalik <steven.kowalik@suse.com>
  - Update to 7.14.1:
    * Relax Click requirement back to 8.1. Replace ParameterSource ordered
      comparisons in ConfigOption with explicit set membership so the code
      works on both the regular Enum (Click 8.1/8.2) and the
      IntEnum (Click 8.3+).
    * Relax tabulate requirement back to 0.9. Backport the colon_grid format
      by aliasing it to grid at module load when tabulate < 0.10 is installed.
  - Drop installing click-extra-demo, which has been removed.
* Sun Apr 26 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.14.0:
    * Add wrap subcommand: click-extra wrap SCRIPT [ARGS]... applies
      help colorization to any installed Click CLI without modifying
      its source. Supports --theme option and
      [tool.click-extra.wrap.<script>] config sections for persistent
      CLI defaults. Resolves SCRIPT via console_scripts entry points,
      module:function notation, .py file paths, or bare module names.
      Unknown subcommand names fall through to wrap automatically, so
      click-extra flask --help works without typing wrap. run is kept
      as an alias.
    * Add show-params subcommand: click-extra show-params SCRIPT
      [SUBCOMMAND]... introspects any external Click CLI's parameters
      and displays them as a table. Supports all --table-format
      renderings. Drills into nested subcommands. Auto-discovers the
      Click command when the entry point is a wrapper function.
    * Style Spec. column with option theme (cyan) and Python type
      with metavar theme (cyan dim) in both --show-params and
      show-params, matching help-screen conventions.
    * Add get_param_spec() and format_param_row() as public API in
      click_extra.parameters. get_param_spec() extracts option-spec
      strings and handles hidden-param unhiding. format_param_row()
      is the shared cell renderer for both --show-params and
      show-params tables.
    * Make ParamStructure.get_param_type() a @staticmethod. Returns
      str for unrecognised custom types instead of raising
      ValueError.
    * Replace render-matrix subcommand with individual colors,
      styles, palette, 8color, and gradient subcommands grouped under
      a "Demo" section. Remove the click-extra-demo entry point.
    * Move Sphinx tests into tests/sphinx/. Downstream packagers can
      skip them with --ignore=tests/sphinx without pulling in Sphinx
      dependencies.
    * Bump Click requirement to 8.3.3. Simplify ParameterSource
      comparisons in ConfigOption using the new IntEnum ordering.
* Sat Apr 18 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.13.0:
    * Add MkDocs plugin for ANSI color rendering in code blocks.
      Install with pip install click-extra[mkdocs], then add
      click-extra to your mkdocs.yml plugins list. Patches
      pymdownx.highlight formatters to use AnsiHtmlFormatter.
    * Automatically patch mkdocs-click code blocks to use the
      ansi-output lexer when the click-extra MkDocs plugin is
      enabled. CLI help text with ANSI escape codes now renders with
      colors instead of garbled [1m/[0m sequences.
    * Fix API reference sections rendering as raw RST markup instead
      of formatted documentation. Wrap all automodule and
      autoclasstree directives in eval-rst blocks to force RST
      parsing, working around MyST-Parser's MockState.nested_parse()
      treating autodoc output as Markdown.
    * Add OSC 8 hyperlink support to AnsiColorLexer and
      AnsiHtmlFormatter. Terminal hyperlinks in CLI output are
      rendered as clickable HTML <a> tags in Sphinx documentation.
      Other OSC sequences are now fully stripped instead of leaking
      their payload as visible text.
  - update to 7.12.0:
    * Add JobsOption and jobs_option decorator for controlling
      parallel execution. Defaults to available CPUs minus one. Warns
      when the requested count is clamped or exceeds available cores.
    * Improve error messages for single-dash multi-character tokens.
      When Click splits -dbgwrong character by character and reports
      "No such option: -d", ExtraCommand now catches that and
      re-raises with the full token and close-match suggestions.
    * Replace pygments-ansi-color dependency with inline ANSI SGR
      parser. Adds support for italic (SGR 3), underline (SGR 4),
      reverse video (SGR 7), strikethrough (SGR 9), and 24-bit RGB
      colors (quantized to the 256-color palette). The token
      namespace changes from Token.Color.*/Token.C.* to a unified
      Token.Ansi.*, and CSS classes change accordingly (from
      .-Color-*/.-C-* to .-Ansi-*). Fixes bold, italic, underline,
      and other text attributes not rendering in Sphinx/Furo: Furo's
      dark-mode CSS generator injected color: #D0D0D0 fallbacks for
      every Pygments style dict entry, overriding foreground color
      rules on compound tokens. All SGR attribute CSS is now injected
      separately via EXTRA_ANSI_CSS.
    * Rename lexer_map to LEXER_MAP.
    * Change render-matrix --matrix=<choice> option to a positional
      argument: render-matrix <choice>. Add palette, 8color, and
      gradient choices. palette shows a compact 256-color indexed
      swatch. 8color shows all standard foreground/background
      combinations. gradient renders 24-bit RGB gradients alongside
      their 256-color quantized equivalents to visualize the palette
      resolution limits.
    * Fix render-matrix colors background color column headers: the
      color swatches were styled as foreground instead of background
      colors.
  - update to 7.11.0:
    * Add serialize_data() and print_data() functions for serializing
      arbitrary nested Python data (not just tabular rows) to JSON,
      HJSON, TOML, YAML, and XML. Complements the existing
      render_table()/print_table() pair.
    * Add sort_key parameter to render_table() and print_table() for
      pre-render row sorting.
    * Catch ImportError from missing optional dependencies in
      print_table() and print_data(), producing a clean one-line
      error instead of a traceback. The print_data() package
      parameter lets downstream projects customize install
      instructions.
    * Add print_sorted_table() and SortByOption for column-based
      table sorting. SortByOption generates a --sort-by CLI option
      from column definitions and auto-wires ctx.print_table to the
      sorted variant.
    * Add auto-injected help subcommand to ExtraGroup. mycli help
      shows group help, mycli help subcommand shows that subcommand's
      help (with nested group resolution). mycli help --search term
      searches all subcommands for matching options or descriptions.
      Disable with help_command=False.
    * Relax ParamStructure._recurse_cmd to skip subcommands whose
      name collides with a top-level parameter (e.g. the help
      subcommand vs Click's --help option) instead of raising.
    * Expose HelpKeywords dataclass and collect_keywords() as public
      API for extending help screen highlighting. collect_keywords()
      (renamed from the private _collect_keywords()) can be
      overridden to customize keyword collection.
    * Add extra_keywords and excluded_keywords parameters to
      ExtraCommand and ExtraGroup. extra_keywords injects additional
      strings for highlighting; excluded_keywords suppresses
      highlighting of specific strings. Both accept a HelpKeywords
      instance.
    * Switch deprecated-message highlighting from pre-collected
      keyword sets to a case-insensitive regex. Manually-added
      markers like (Deprecated) or (deprecated: reason) in help
      strings are now styled alongside Click-native (DEPRECATED)
      markers.
    * Style individual choices inside their own metavar
      ([json|csv|xml]) as structural elements. Excluded choices and
      cross_ref_highlight=False only suppress free-text highlighting;
      the metavar itself is always styled.
    * Propagate excluded_keywords from parent groups to subcommands.
      Parent exclusions are merged with child exclusions so that
      choices excluded at the group level are not styled in
      subcommand descriptions.
    * Fix command aliases not being highlighted in help screens.
      Aliases rendered by Cloup inside parenthetical groups (like
      backup (save, freeze)) were not matched by the subcommand
      highlighting regex, which only recognized 2-space-indented
      names.
    * Fix choice cross-reference highlighting bleeding into bracket
      fields. When a default value contained a choice keyword (e.g.
      outline in rounded-outline), the choice style would override
      the default value style. Bracket fields are now
      placeholder-protected before cross-reference passes run.
    * Fix parent-context choice collection always normalizing
      (lowercasing) case-insensitive choices, ignoring custom
      metavars. Parent choices with a custom metavar now preserve
      original case, matching the behavior already applied to the
      current command's parameters.
* Mon Apr 13 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.10.1:
    * Fix pipe and github table formats to produce
      mdformat-compatible separator rows, preventing a formatting
      cycle between tabulate and mdformat.
    * Replace hardcoded test matrix with repomatic metadata-managed
      matrix; OS, Python, and stability axes are now computed
      dynamically, with custom Click/Cloup version axes via
      [tool.repomatic.test-matrix]. PRs get a reduced matrix to save
      CI minutes. Drops Python 3.15t (free-threaded), aligning with
      repomatic v6.10.0 defaults.
    * Replace {eval-rst}-wrapped automodule and autoclasstree
      directives with native MyST syntax in all docs.
* Fri Apr 03 2026 Dirk Müller <dmueller@suse.com>
  - update to 7.10.0:
    * Highlight parent group names in subcommand help text, so
      ancestor command names are colored even when interleaved with
      options.
    * Add `range_label`, `required`, and `argument` theme slots to
      `HelpExtraTheme`. Argument metavars are now styled separately
      from option metavars.
    * Add `cross_ref_highlight` flag to `HelpExtraTheme`. Set to
      `False` to disable free-text highlighting of options,
      choices, arguments, metavars, and CLI names in descriptions
      and docstrings. Structural elements (bracket fields,
      deprecated messages, subcommand lists) are always styled.
    * Add type-aware flattening, field metadata, and nested
      dataclass support to `config_schema`. `flatten_config_keys()`
      and `normalize_config_keys()` accept an `opaque_keys`
      parameter to preserve data-keyed dicts. Fields support
      `click_extra.config_path` and `click_extra.normalize_keys`
      metadata. Nested dataclass fields are recursively
      instantiated with the same normalize/flatten/opaque logic.
    * Fix help text highlighting of hyphenated option names (e.g.
      `--table-format` split at the first hyphen), argument names
      (e.g. `keys`) colliding with option keywords, and substring
      matches in compound keywords (e.g. `outline` inside `rounded-
      outline`).
    * Fix enum coloring: use `normalize_choice()` to produce the
      exact strings shown in the metavar instead of raw enum member
      names.
* Wed Apr 01 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.9.0:
    * Add flatten_config_keys() utility to flatten nested config
      dicts into a single level by joining keys with a separator.
    * Flatten nested config dicts before dataclass field matching in
      config_schema, so nested TOML sub-tables (e.g.
      [tool.myapp.sub-section]) map to flat dataclass fields (e.g.
      sub_section_key).
    * Add schema_strict parameter to ConfigOption and
      ExtraCommand/ExtraGroup: when True, unknown config keys raise
      ValueError during dataclass schema validation instead of being
      silently dropped.
    * Auto-discover pyproject.toml from the current working directory
      upward to the VCS root before falling back to the app config
      directory. Matches the discovery behavior of uv, ruff, and
      mypy. Only active during auto-discovery (not when --config is
      passed explicitly).
    * Instantiate config_schema defaults when no config file is
      found, so get_tool_config() never returns None when a schema is
      configured.
    * Forward included_params from ExtraCommand/ExtraGroup to
      ConfigOption. Allows @group(included_params=()) to disable
      merge_default_map when config keys are schema-only and would
      collide with subcommand names.
    * Move prebake_version(), prebake_dunder(), and
      discover_package_init_files() from ExtraVersionOption static
      methods to module-level functions in click_extra.version.
      Import them directly: from click_extra.version import
      prebake_version.
    * Add git_tag template field. Resolved from a __git_tag__ dunder
      or git describe --tags --exact-match HEAD at runtime. Returns
      the tag name if HEAD is at a tagged commit.
    * Add git_tag_sha template field. Resolved from a __git_tag_sha__
      dunder on the CLI module, with a git subprocess fallback.
      Replaces the old __tag_sha__ convention.
    * Git template fields (git_branch, git_long_hash, git_short_hash,
      git_date) now check for pre-baked __<field>__ dunders on the
      CLI module before falling back to subprocess calls. Enables
      compiled binaries (Nuitka/PyInstaller) to embed git metadata at
      build time.
    * Add click-extra prebake CLI with three subcommands: prebake all
      bakes __version__ and all git fields in one pass, prebake
      version injects Git hashes into __version__, and prebake field
      replaces any empty dunder variable. Field names auto-wrap with
      __...__ (e.g. git_tag_sha becomes __git_tag_sha__). All
      subcommands auto-discover target files from [project.scripts].
    * Add empty __git_*__ dunder placeholders to
      click_extra/__init__.py for dogfooding the prebake system.
    * Pin image URLs in readme.md and docs/tutorial.md to the release
      tag at bump time, and restore them to main on the next dev
      bump.
* Tue Mar 10 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.8.0:
    * Add config_schema parameter to ConfigOption and
      ExtraCommand/ExtraGroup for typed configuration access via
      dataclasses or custom callables.
    * Add fallback_sections parameter for legacy configuration
      section name migration with deprecation warnings.
    * Add normalize_config_keys() utility to convert kebab-case
      config keys to snake_case Python identifiers.
    * Add get_tool_config() helper to retrieve typed configuration
      from context.
    * Check more variations of local, stable and dev CLI invocations.
    * Adopt RUF022 rule to let ruff enforce __all__ sorting.
    * Fix ruff 0.15.5 lint errors.
* Mon Mar 09 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.7.0:
    * Add version_fields parameter to ExtraCommand and ExtraGroup.
      Forwards any ExtraVersionOption template field (e.g. prog_name,
      version, git_branch) from the command decorator without
      replacing the default params list.
    * Lazily evaluate version metadata fields in ctx.meta.
    * Remove version parameter from ExtraCommand and ExtraGroup.
    * Add hjson, json, json5, jsonc, toml, xml and yaml table formats
      for --table-format.
    * Add TableFormat.is_markup property.
    * Strip ANSI color codes from markup table formats (csv, html,
      latex, rst, etc.) by default. Use --color to preserve them.
    * Add [toml] extra dependency group for TOML table output via
      tomlkit.
    * Emit native types (booleans, nulls, lists) in --show-params
      output for structured serialization formats (JSON, YAML, TOML,
      HJSON, XML).
    * Fix --show-params ignoring --table-format when it appears first
      on the command line.
    * Expand dotted keys in configuration files (e.g.
      "subcommand.option": value) into nested dicts before merging,
      to allow for mixing flat dot-notation and nested structures.
    * Only capture timer start time when --time is actually
      requested.
    * Add click-extra entry point so uvx click-extra works out of the
      box. The click-extra-demo alias is kept for backward
      compatibility.
* Fri Mar 06 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.6.5:
    * Bump tabulate requirement from >=0.9 to >=0.10.
    * Add new colon-grid table format.
    * Replace custom github table renderer with tabulate's pipe
      format. Backport of python-tabulate#410.
* Wed Mar 04 2026 Dirk Müller <dmueller@suse.com>
  - update to 7.6.4:
    * Fix `ExtraVersionOption.cli_frame()` crashing in Nuitka-
      compiled binaries where all stack frames belong to the Click
      ecosystem.
    * Fix `ExtraVersionOption.module_version` returning `None` in
      `__main__` entry points by checking the parent package's
      `__version__`.
    * Fix test plan for Nuitka-compiled binary.
    * Add `@pytest.mark.once` marker for platform-independent
      structural tests. Run them in a single CI job instead of
      across the full matrix.
* Mon Mar 02 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.6.3:
    * Fix test_default_pattern_roaming_force_posix test failures when
      XDG_CONFIG_HOME is set. Closes {issue}1541.
* Mon Mar 02 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.6.2:
    * Add ExtraVersionOption.prebake_version() static method to pre-bake
      __version__ strings with Git hashes at compile time, complementing
      the runtime version property for Nuitka/PyInstaller binaries.
* Fri Feb 27 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.6.1:
    * Fix test failures when optional config format dependencies are not
      installed. Closes {issue}1538.
* Fri Feb 27 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.6.0:
    * Add '_default_subcommands' reserved configuration key to
      auto-invoke subcommands when none are provided on the CLI.
      Closes {issue}1405.
    * Add '_prepend_subcommands' reserved configuration key to always
      prepend subcommands to every invocation (requires chain=True).
      Closes {issue}1405.
    * Add --validate-config option to validate configuration files.
    * Add ConfigFormat.PYPROJECT_TOML format for [tool.*] section
      support in pyproject.toml. Closes {issue}1524.
    * Stop parent directory walk on inaccessible directories.
    * Add stop_at parameter to @config_option to limit parent
      directory walking. Defaults to VCS. Closes {issue}651.
    * Add VCS sentinel and VCS_DIRS constant for VCS root detection.
    * Resolve relative paths to absolute in parent_patterns before
      yielding.
    * Add included_params allowlist to ConfigOption and
      @config_option, the inverse of excluded_params. Closes
      {issue}1362.
    * Add human-friendly display labels to ConfigFormat.
    * Switch back from SPLIT to BRACE flag for multi-format config
      file patterns. Fixes a bug where only the first format received
      the directory prefix with SPLIT.
    * Hard code icon workaround for Sphinx index entries.
    * Automatically append Git short hash as a PEP 440 local version
      identifier to .dev versions (e.g., 1.2.3.dev0+abc1234).
    * Skip Git hash suffix for versions that already contain +
      (pre-baked local identifiers) to avoid invalid double-suffixed
      versions.
    * Recognize LLM environment variable to strip ANSI codes when
      running under an AI agent.
* Thu Feb 26 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.5.3:
    * Allow disabling of autodiscovery of configuration files by
      setting default=NO_CONFIG on @config_option. Closes
      {issue}1495.
    * Implement resolve_any_xref in ClickDomain to prevent
      MyST-Parser warning. Closes {issue}1502.
    * Fix subcommand conflict detection checking against root-level
      params instead of parent params. Closes {pr}1286.
  - update to 7.5.2:
    * Fix GitHub alerts converter mangling list-table directive
      content. Closes {issue}1490.
    * Replace Dependabot by Renovate.
    * Move click_extra/docs_update.py to docs/docs_update.py.
    * Add pygments-ansi-color to docs dependency group for lexer
      table generation.
* Fri Feb 06 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.5.1:
    * Add new aligned table format with single-space column separators
      and no borders.
    * Fix parallel mode support in Sphinx extension. Closes {issue}1482.
* Tue Feb 03 2026 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.5.0:
    * Fix TableFormat.GITHUB to render proper alignment hints in the
      separator row (:---, :---:, ---:).
    * Move auto-lock time from 8:43 to 4:43.
    * Set cooldown period via the pyproject.toml.
    * Add Download link to project metadata.
    * Include license file in package.
    * Replace deprecated codecov/test-results-action by
      codecov/codecov-action.
    * Remove utilization workaround for macos-15-intel.
    * Bump requirement of extra-platforms to 8.0.0.
* Fri Dec 12 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.4.0:
    - Add cooldown period for dependabot and uv.lock updates.
    - Uncap all dependencies.
    - Replace tool.uv section by build-system.
    - Merge all label jobs into a single one.
    - Unlock a CPU core stuck at 100% utilization on
      macos-15-intel.
  - update to 7.3.0:
    - Add click:source directive as an alias to click:example
      directive in Sphinx extension.
    - Flag click:example directive as deprecated in favor of
      click:source.
    - Add support for nested GitHub alerts.
    - Fix fetching version when the CLI is implemented as a
      standalone script and not as a package module.
  - update to 7.2.0:
    - Add support for auto-conversion of GitHub alerts into MyST
      admonitions in Sphinx extension.
    - Rename click-extra demo CLI to click-extra-demo to avoid
      confusion with the package name.
    - Run tests on ubuntu-slim GitHub Actions runner.
    - Run docs update job on ubuntu-slim runner.
* Sat Nov 22 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.1.0:
    * Add support for aliases in EnumChoice type.
    * Register pre-configured render_table() utility in the context when
      table_format is set, in the same spirit as print_table().
* Wed Nov 19 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 7.0.1:
    * Restore support for @extra_command, @extra_group and
      @extra_version_option, but mark them as deprecated.
  - update to 7.0.0:
    * Allow parent directories search for configuration files. Adds
      search_parents argument on @config_file. Closes {issue}651.
    * Allow fine-tuning of configuration file format pattern
      matching. Replaces formats argument on @config_file by
      file_format_patterns.
    * Adds search_pattern_flags and file_pattern_flags arguments on
      @config_file to allow user to tweak pattern matching behavior.
    * Use | as separator for multiple file patterns instead of {,}
      syntax. Replace glob.BRACE by glob.SPLIT for search pattern
      flags. Force glob.SPLIT for file pattern flags.
    * Remove glob.IGNORECASE flag to make case-sensitivity determined
      by the underlying platform at runtime.
    * Force glob.NODIR for search pattern flags to speed up search.
    * Rename click_extra.config.Formats enum to
      click_extra.config.ConfigFormat. Expose it at the root
      click_extra module.
    * Eat our own dog food: add a click-extra CLI to run self-tests.
    * Override base decorators and classes with Click Extra's own
      variants:
    - @command now points to what was @extra_command.
    - @group now points to what was @extra_group.
    - Option class now points to click_extra.Option, which is a
      subclass of cloup.Option.
    - Argument class now points to click_extra.Argument, which is a
      subclass of cloup.Argument.
    - @option now instantiates click_extra.Option by default.
    - @argument now instantiates click_extra.Argument by default.
    - @version_option now points to what was @extra_version_option.
    - Now if you want to use the previous aliases to Click's and
      Cloup's originals, import them directly from click or cloup
      instead of click_extra, which makes origination clearer.
    * Remove @extra_command, @extra_group and @extra_version_option.
    * Remove no_redefined argument in
      click_extra.pytest.command_decorators() method.
    * Validates that classes passed to the cls parameter of
      decorators are subclasses of the expected base classes.
    * Normalize the default value of EnumChoice parameters to their
      string choice representation in help screens.
    * Run tests on Python 3.14t and 3.15t free-threaded variants.
* Wed Nov 05 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 6.2.0:
    * Add new EnumChoice type for fine-tunable Enum-based
      choices. Expose EnumChoice and ChoiceSource at the root
      click_extra module.
    * Relax dependencies to support Python 3.10. Closes {issue}1385.
    * Re-introduce tomli dependency for Python 3.10 users.
    * Skip tests on intermediate Python versions (3.11, 3.12 and 3.13)
      to reduce CI load.
* Sun Nov 02 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 6.1.0:
    * Add support for JSON5, JSONC and HJSON configuration files.
    * YAML and XML configuration support is now optional. You need to
      install the click_extra[yaml] and click_extra[xml] extra
      dependency groups to enable it.
    * Add new @lazy_group decorator and LazyGroup class to create
      groups that only load their subcommands when invoked. Closes
      {issue}1332.
    * Move all custom types to click_extra._types module.
    * Avoid importing all types at runtime to reduce startup time.
    * Upgrade tests runs from macos-13 to macos-15-intel, and from
      macos-15 to macos-26.
    * Use astral-sh/setup-uv action to install uv.
* Wed Oct 22 2025 Steve Kowalik <steven.kowalik@suse.com>
  - Update to 6.0.3:
    * Fix @config_option to accept Path objects as default value.
    * Add official support of Python 3.14.
    * Add --table-format option by default on @extra_command and @extra_group.
    * Let --table-format and --no-color affect the rendering of --show-params
      table.
    * Swap Class and Spec. columns in --show-params output.
    * Classify table formats into two categories: markup formats and
      plain-text formats.
    * Fix display in --show-params for parameters sharing the same name.
    * Fix detection in the --version option of the module in which the user's
      CLI is implemented.
    * Rename click_extra.tabulate namespace to click_extra.table.
    * Expose click._utils.UNSET and click.logging.LogLevel at the root
      click_extra module.
    * Replace unmaintained mergedeep dependency by deepmerge.
  - Ship the license and readme in the binary packages.
* Fri Aug 08 2025 Matej Cepl <mcepl@cepl.eu>
  - Currently broken, waiting on the resolution of the upstream
    click 8.2.2 drama (gh#pallets/click#3024).
  - update to 5.1.0:
    * Add support for MyST Markdown syntax for click:example and
      click:run Sphinx directives.
    * Add support for all code-block options to click:example and
      click:run: :linenos:, :lineno-start:, :emphasize-lines:,
      :force:, :caption:, :name:, :class: and :dedent:.
    * Add new :show-source:/:hide-source:,
      :show-results:/:hide-results: and :language: options to
      click:example and click:run. Closes {issue}719.
    * Support non-string choices in colored help screens. Closes
      {issue}1284.
    * Replace LOG_LEVELS mapping with LogLevel enum.
    * Remove DEFAULT_LEVEL_NAME constants.
    * Fix rendering of default values in --show-params output.
    * Fix reconciliation of flags' environment variables.
    * Force requirement on cloup >= 3.0.7.
    * Be more informative when error is found in click:example and
      click:run Sphinx directives by displaying the path of the
      original document and the line number of the error.
* Sat May 31 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 5.0.2:
    * Set ExtraCommand default prog_name to CLI's name to avoid it to be
      named python -m <module_name> if invoked out of a module.
    * Tweak exit code rendering of CLI runs.
* Thu May 29 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 5.0.1:
    * Fix highlighting of deprecated messages.
    * Use ASCII characters instead of unicode for prompt rendering in
      messages.
* Tue May 27 2025 Daniel Garcia <daniel.garcia@suse.com>
  - Skip failing tests with python-click 8.2.1
    gh#kdeldycke/click-extra#1264
* Fri May 16 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 5.0.0:
    * Upgrade to Click 8.2.0.
    * Add support for custom deprecated messages on commands and
      parameters.
    * Remove ExtraOption.get_help_default() and rely on new
      Option.get_help_extra().
    * Remove dependency on pallets-sphinx-themes.
    * Drop supports for Python 3.10.
    * Add windows-11-arm to the test matrix.
    * Remove tests on ubuntu-22.04-arm, ubuntu-22.04 and windows-2022 to
      keep matrix small.
* Wed Mar 05 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 4.15.0:
    * Regroup all envronment variables-related code.
    * Rename extend_envvars() to merge_envvar_ids() and allow it to
      merge arbitrary-nested structures. Normalize names to uppercase
      on Windows.
    * Rename normalize_envvar() to clean_envvar_id().
    * Rename all_envvars() to param_envvar_ids().
    * Rename auto_envvar() to param_auto_envvar_id().
    * Remove unused normalize parameter on all_envvars().
    * Add missing line returns in render_cli_run().
    * Prefix all types with capital-T.
* Sun Feb 23 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 4.14.2:
    * Extract rendering part of the print_cli_run() helper to
      render_cli_run().
    * Remove unused click_extra.testing.run_cmd.
    * Relax requirement on extra-platforms.
    * Add tests on windows-2025. Remove tests on windows-2019.
* Sat Feb 08 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 4.14.1:
    - Fix upload of Python package to GitHub release on tagging.
  - update to 4.14.0:
    - Add a new --verbose option on @extra_command and @extra_group
      to increase the verbosity level for each additional repetition.
    - Add new @verbose_option pre-configured decorator.
    - Reassign the short -v option from --verbosity to --verbose.
    - Improve logging documentation.
    - Align ExtraStreamHandler behavior to logging.StreamHandler.
    - Move stream_handler_class and formatter_class arguments from
      new_extra_logger to extraBasicConfig.
    - Add new file_handler_class argument to extraBasicConfig.
    - Fix upload of Python package to GitHub release on tagging.
    - Remove dependency on pytest-cases.
* Tue Jan 28 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 4.13.2:
    - Re-release to fix Github publishing.
    - Reactivates some color tests on Windows.
  - update to 4.13.1:
    - [changelog] Release v4.13.1
  - update to 4.13.0:
    - Revamps logging helpers and aligns them with Python's logging
      module.
    - Remove extra_basic_config.
    - Adds new extraBasicConfig, and aligns it with Python's
      basicConfig.
    - Replace ExtraLogFormatter with ExtraFormatter.
    - Replace ExtraLogHandler with ExtraStreamHandler.
    - Add new new_extra_logger helper.
    - Rewrite the logging documentation with all use-cases and custom
      configuration examples. Closes {issue}989.
    - Removes old platforms page from documentation.
* Mon Jan 20 2025 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - update to 4.12.0:
    - Remove Click Extra's own implementation of HelpOption class now
      that fixes have reached Click's upstream.
    - Redefine @help_option decorator to default to --help/-h
      options.
    - Add more logging examples in documentation.
    - Add tests on ubuntu-24.04-arm and ubuntu-22.04-arm.
    - Use uv to install specific versions of Python.
  - remove patch click818.patch
* Thu Jan 16 2025 Markéta Machová <mmachova@suse.com>
  - Add click818.patch to fix tests with new click
* Thu Nov 14 2024 Johannes Kastl <opensuse_buildservice@ojkastl.de>
  - new package python-click-extra: Drop-in replacement for Click to
    make user-friendly and colorful CLI

Files

/usr/bin/click-extra
/usr/bin/click-extra-3.13
/usr/lib/python3.13/site-packages/click_extra
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/INSTALLER
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/METADATA
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/RECORD
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/REQUESTED
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/WHEEL
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/entry_points.txt
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/licenses
/usr/lib/python3.13/site-packages/click_extra-8.6.2.dist-info/licenses/license
/usr/lib/python3.13/site-packages/click_extra/__init__.py
/usr/lib/python3.13/site-packages/click_extra/__main__.py
/usr/lib/python3.13/site-packages/click_extra/__pycache__
/usr/lib/python3.13/site-packages/click_extra/__pycache__/__init__.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/__init__.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/__main__.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/__main__.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/_deprecated.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/_deprecated.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/accessibility.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/accessibility.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/carapace.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/carapace.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/cli.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/cli.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/cli_wrapper.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/cli_wrapper.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/color.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/color.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/commands.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/commands.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/context.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/context.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/decorators.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/decorators.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/envvar.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/envvar.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/execution.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/execution.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/highlight.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/highlight.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/logging.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/logging.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/man_page.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/man_page.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/mkdocs.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/mkdocs.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/myst_converter.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/myst_converter.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/parameters.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/parameters.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/prebake.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/prebake.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/pygments.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/pygments.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/pytest.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/pytest.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/rst_to_myst.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/rst_to_myst.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/spinner.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/spinner.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/spinner_presets.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/spinner_presets.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/styling.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/styling.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/table.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/table.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/telemetry.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/telemetry.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/test_plan.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/test_plan.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/test_suite.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/test_suite.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/testing.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/testing.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/theme.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/theme.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/theme_docs.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/theme_docs.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/tree.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/tree.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/types.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/types.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/version.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/__pycache__/version.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/_deprecated.py
/usr/lib/python3.13/site-packages/click_extra/accessibility.py
/usr/lib/python3.13/site-packages/click_extra/carapace.py
/usr/lib/python3.13/site-packages/click_extra/cli.py
/usr/lib/python3.13/site-packages/click_extra/cli_wrapper.py
/usr/lib/python3.13/site-packages/click_extra/color.py
/usr/lib/python3.13/site-packages/click_extra/commands.py
/usr/lib/python3.13/site-packages/click_extra/config
/usr/lib/python3.13/site-packages/click_extra/config/__init__.py
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/__init__.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/__init__.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/builtin.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/builtin.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/formats.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/formats.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/option.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/option.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/schema.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/config/__pycache__/schema.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/config/builtin.py
/usr/lib/python3.13/site-packages/click_extra/config/formats.py
/usr/lib/python3.13/site-packages/click_extra/config/option.py
/usr/lib/python3.13/site-packages/click_extra/config/schema.py
/usr/lib/python3.13/site-packages/click_extra/context.py
/usr/lib/python3.13/site-packages/click_extra/decorators.py
/usr/lib/python3.13/site-packages/click_extra/envvar.py
/usr/lib/python3.13/site-packages/click_extra/execution.py
/usr/lib/python3.13/site-packages/click_extra/highlight.py
/usr/lib/python3.13/site-packages/click_extra/logging.py
/usr/lib/python3.13/site-packages/click_extra/man_page.py
/usr/lib/python3.13/site-packages/click_extra/mkdocs.py
/usr/lib/python3.13/site-packages/click_extra/myst_converter.py
/usr/lib/python3.13/site-packages/click_extra/parameters.py
/usr/lib/python3.13/site-packages/click_extra/prebake.py
/usr/lib/python3.13/site-packages/click_extra/py.typed
/usr/lib/python3.13/site-packages/click_extra/pygments.py
/usr/lib/python3.13/site-packages/click_extra/pytest.py
/usr/lib/python3.13/site-packages/click_extra/rst_to_myst.py
/usr/lib/python3.13/site-packages/click_extra/sphinx
/usr/lib/python3.13/site-packages/click_extra/sphinx/__init__.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/__init__.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/__init__.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/_base.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/_base.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/alerts.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/alerts.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/click.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/click.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/manpages.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/manpages.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/matrix.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/matrix.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/myst_docstrings.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/myst_docstrings.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/python.cpython-313.opt-1.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/__pycache__/python.cpython-313.pyc
/usr/lib/python3.13/site-packages/click_extra/sphinx/_base.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/alerts.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/click.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/manpages.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/matrix.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/myst_docstrings.py
/usr/lib/python3.13/site-packages/click_extra/sphinx/python.py
/usr/lib/python3.13/site-packages/click_extra/spinner.py
/usr/lib/python3.13/site-packages/click_extra/spinner_presets.py
/usr/lib/python3.13/site-packages/click_extra/styling.py
/usr/lib/python3.13/site-packages/click_extra/table.py
/usr/lib/python3.13/site-packages/click_extra/telemetry.py
/usr/lib/python3.13/site-packages/click_extra/test_plan.py
/usr/lib/python3.13/site-packages/click_extra/test_suite.py
/usr/lib/python3.13/site-packages/click_extra/testing.py
/usr/lib/python3.13/site-packages/click_extra/theme.py
/usr/lib/python3.13/site-packages/click_extra/theme_docs.py
/usr/lib/python3.13/site-packages/click_extra/themes.toml
/usr/lib/python3.13/site-packages/click_extra/tree.py
/usr/lib/python3.13/site-packages/click_extra/types.py
/usr/lib/python3.13/site-packages/click_extra/version.py
/usr/share/doc/packages/python313-click-extra
/usr/share/doc/packages/python313-click-extra/readme.md
/usr/share/libalternatives/click-extra
/usr/share/libalternatives/click-extra/1313.conf
/usr/share/licenses/python313-click-extra
/usr/share/licenses/python313-click-extra/license


Generated by rpm2html 1.8.1

Fabrice Bellet, Sun Aug 2 01:28:36 2026