Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-click-extra for 
openSUSE:Factory checked in at 2026-05-15 23:56:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-click-extra (Old)
 and      /work/SRC/openSUSE:Factory/.python-click-extra.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-click-extra"

Fri May 15 23:56:31 2026 rev:22 rq:1353416 version:7.16.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-click-extra/python-click-extra.changes    
2026-04-29 19:21:08.345179778 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-click-extra.new.1966/python-click-extra.changes
  2026-05-15 23:58:27.669337170 +0200
@@ -1,0 +2,268 @@
+Fri May 15 10:48:03 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- 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.
+
+-------------------------------------------------------------------

Old:
----
  click-extra-7.14.1.tar.gz

New:
----
  click-extra-7.16.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-click-extra.spec ++++++
--- /var/tmp/diff_new_pack.lJk8UE/_old  2026-05-15 23:58:28.325364174 +0200
+++ /var/tmp/diff_new_pack.lJk8UE/_new  2026-05-15 23:58:28.329364340 +0200
@@ -27,7 +27,7 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-click-extra
-Version:        7.14.1
+Version:        7.16.1
 Release:        0
 Summary:        Drop-in replacement for Click to make user-friendly and 
colorful CLI
 License:        GPL-2.0-or-later
@@ -38,7 +38,7 @@
 # SECTION Build dependencies
 # https://github.com/kdeldycke/click-extra/blob/v6.0.3/pyproject.toml#L73
 BuildRequires:  %{python_module boltons >= 20.0.0}
-BuildRequires:  %{python_module click >= 8.1}
+BuildRequires:  %{python_module click >= 8.3.1}
 BuildRequires:  %{python_module cloup >= 3.0.7}
 BuildRequires:  %{python_module deepmerge >= 1.0.1}
 BuildRequires:  %{python_module extra-platforms >= 8.0.0}
@@ -70,7 +70,7 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-boltons >= 20.0.0
-Requires:       python-click >= 8.3.3
+Requires:       python-click >= 8.3.1
 Requires:       python-cloup >= 3.0.7
 Requires:       python-deepmerge >= 1.0.1
 Requires:       python-extra-platforms >= 8.0.0

++++++ click-extra-7.14.1.tar.gz -> click-extra-7.16.1.tar.gz ++++++
++++ 13049 lines of diff (skipped)

Reply via email to