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-09-10 11:49:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-click-extra (Old)
 and      /work/SRC/openSUSE:Factory/.python-click-extra.new.1265 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-click-extra"

Thu Sep 10 11:49:32 2026 rev:32 rq:1376836 version:9.1.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-click-extra/python-click-extra.changes    
2026-08-20 16:17:15.937425867 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-click-extra.new.1265/python-click-extra.changes
  2026-09-10 11:52:07.732446603 +0200
@@ -1,0 +2,59 @@
+Thu Sep 10 02:14:57 UTC 2026 - Steve Kowalik <[email protected]>
+
+- Update to 9.1.0:
+  * Add --record to click-extra screenshot, running the command under a
+    pseudo-terminal and writing an animated SVG of every screen it draws.
+  * Draw the invocation above a capture as a shell prompt; --prompt overrides
+    or hides it, and --closing-prompt draws the prompt the shell returns to.
+  * Open a recorded animation by typing its command line out, with --typing,
+    --submit and the new type_line().
+  * Match a configuration key against a parameter name whatever its case, so
+    Foo-Bar and FOO_BAR both reach the foo_bar parameter.
+  * Fix a drawn prompt dropping the quotes around an argument or environment
+    value holding a space, so a captured command line pastes back as the
+    command it pictures.
+  * Fix an argument declared with a plain click.argument(help=...) drawing a
+    blank Positional arguments entry on the help screen.
+  * Fix a MulticallGroup and a VersionOption failing to copy on Python 3.10
+    with Click 8.4.
+  * Paint the (DEPRECATED) label with the deprecated theme slot in --tree and
+    the --params help column, as the help screen already does.
+  * Breaking: Rename every camel-cased spinner preset to kebab case, so
+    boxBounce is now box-bounce.
+  * Add a click-extra screenshot subcommand capturing any CLI's colored
+    output as an SVG image, an HTML document or raw escape sequences.
+  * Lay a capture out at the longest line it holds with an auto width, or
+    emit it as a bare inline-styled HTML block with --fragment.
+  * Tell a captured command its chrome through CLITHEME and COLORFGBG, so a
+    CLI passing --theme auto renders for the window it lands in.
+  * Add a click-extra snippet subcommand and a click_extra.snippet module
+    coloring a source file with Pygments and drawing it.
+  * Add a :mirror: option to the click:run directive, keeping a Markdown
+    link to that capture in the source, refreshed by refresh-directives.
+  * Add a click_extra.recording module rebuilding a terminal's screen from
+    the stream a command writes at it, in-process with ScreenRecorder or from
+    a Unix command with record_command.
+  * Render an animated SVG capture from a sequence of frames, tuned by hold,
+    blank, speed and quantize(), and fed by the new Spinner.frame_lines().
+  * Add render_help(), the HELP_FORMATS and INSTALLABLE_FORMATS registries,
+    and the to_markdown(), to_dict(), to_json(), read_manpage(),
+    format_manpage() and install_manpages() backends behind them.
+  * Add --output-dir and --install to every installable wrap --help-format
+    rendering, so a man page reaches your man directory the way a Carapace
+    spec reaches Carapace's.
+  * Add sort_subcommands and subcommand_priorities to @group, plus a
+    sort_subcommands context setting inherited by every subgroup, ordering
+    subcommands by registration or priority. Closes
+  * Add an option_priorities argument to @command and @group, reordering the
+    help screen without moving the order option callbacks run in, plus
+    iter_params_for_display().
+  * Add LazySubcommand, declaring a lazy subcommand's Cloup section and
+    fallback_to_default_section beside its import path.
+  * Track Click 8.5.0: keep click_extra.testing.isolated_filesystem() alive,
+    re-export custom_version_option, and keep get_binary_stream and
+    get_text_stream bound by a star import.
+- Add patches:
+  * do-not-use-bare-python.patch
+  * monkeypatch-shutil-correctly.patch
+
+-------------------------------------------------------------------

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

New:
----
  click-extra-9.1.0.tar.gz
  do-not-use-bare-python.patch
  monkeypatch-shutil-correctly.patch

----------(New B)----------
  New:- Add patches:
  * do-not-use-bare-python.patch
  * monkeypatch-shutil-correctly.patch
  New:  * do-not-use-bare-python.patch
  * monkeypatch-shutil-correctly.patch
----------(New E)----------

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

Other differences:
------------------
++++++ python-click-extra.spec ++++++
--- /var/tmp/diff_new_pack.j3ROmS/_old  2026-09-10 11:52:08.561481374 +0200
+++ /var/tmp/diff_new_pack.j3ROmS/_new  2026-09-10 11:52:08.563481458 +0200
@@ -27,18 +27,22 @@
 
 %{?sle15_python_module_pythons}
 Name:           python-click-extra
-Version:        8.9.1
+Version:        9.1.0
 Release:        0
 Summary:        Drop-in replacement for Click to make user-friendly and 
colorful CLI
 License:        GPL-2.0-or-later
 URL:            https://github.com/kdeldycke/click-extra
 Source:         
https://github.com/kdeldycke/click-extra/archive/v%{version}.tar.gz#/%{module_name}-%{version}.tar.gz
+# PATCH-FIX-UPSTREAM gh#kdeldycke/click-extra#1933
+Patch0:         do-not-use-bare-python.patch
+# PATCH-FIX-UPSTREAM gh#kdeldycke/click-extra#1934
+Patch1:         monkeypatch-shutil-correctly.patch
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module uv-build}
 # 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.3.1}
+BuildRequires:  %{python_module click >= 8.4.1}
 BuildRequires:  %{python_module cloup >= 3.0.7}
 BuildRequires:  %{python_module deepmerge >= 1.0.1}
 BuildRequires:  %{python_module extra-platforms >= 13.4}
@@ -71,7 +75,7 @@
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-boltons >= 20.0.0
-Requires:       python-click >= 8.3.1
+Requires:       python-click >= 8.4.1
 Requires:       python-cloup >= 3.0.7
 Requires:       python-deepmerge >= 1.0.1
 Requires:       python-extra-platforms >= 13.4

++++++ click-extra-8.9.1.tar.gz -> click-extra-9.1.0.tar.gz ++++++
++++ 64924 lines of diff (skipped)

++++++ do-not-use-bare-python.patch ++++++
>From bf0d2a6f1d5f8347cabeed49058f4d54322805b9 Mon Sep 17 00:00:00 2001
From: Steve Kowalik <[email protected]>
Date: Thu, 10 Sep 2026 11:15:34 +1000
Subject: [PATCH] Do not use bare python in recording tests

Calling bare "python" in the testsuite makes a number of assumptions,
not least of which is that the current interpreter under test is also
called that. Instead, use sys.executable, which is the current
interpreter.
---
 tests/test_recording.py | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/tests/test_recording.py b/tests/test_recording.py
index 05ee9f6da..54e545694 100644
--- a/tests/test_recording.py
+++ b/tests/test_recording.py
@@ -20,6 +20,7 @@
 
 import io
 import re
+import sys
 import time
 from itertools import pairwise
 from typing import cast
@@ -290,7 +291,7 @@ def test_record_command_recovers_a_foreign_animation():
     `stderr`, where a spinner and a progress bar both write.
     """
     frames = record_command(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         duration=5.0,
     )
@@ -322,7 +323,7 @@ def 
test_record_command_reassembles_a_glyph_split_across_reads():
     the recorder must hold the partial sequence until its tail arrives.
     """
     frames = record_command(
-        ("python", "-c", SPLIT_GLYPH_SCRIPT),
+        (sys.executable, "-c", SPLIT_GLYPH_SCRIPT),
         columns=40,
         duration=5.0,
     )
@@ -336,7 +337,7 @@ def 
test_record_command_reassembles_a_glyph_split_across_reads():
 def test_record_and_render_draws_the_prompt_on_every_frame():
     """The stated invocation leads each frame, styled as a shell prompt."""
     svg, returncode = record_and_render(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         prompt="basket ripen --all",
         unique_id="pantry-run",
@@ -353,7 +354,7 @@ def 
test_record_and_render_draws_the_prompt_on_every_frame():
 def test_record_and_render_hides_an_empty_prompt():
     """An empty --prompt draws no invocation at all."""
     svg, _returncode = record_and_render(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         prompt="",
         unique_id="bare-run",
@@ -365,7 +366,7 @@ def test_record_and_render_hides_an_empty_prompt():
 def test_record_and_render_reports_the_exit_code():
     """The command's own verdict travels beside the picture of it."""
     _svg, returncode = record_and_render(
-        ("python", "-c", "import sys; print('rotten'); sys.exit(3)"),
+        (sys.executable, "-c", "import sys; print('rotten'); sys.exit(3)"),
         columns=40,
         prompt="",
     )
@@ -376,7 +377,7 @@ def test_record_and_render_reports_the_exit_code():
 def test_record_and_render_refuses_an_empty_recording():
     """A command that drew nothing leaves nothing to animate."""
     with pytest.raises(ValueError, match="drew no screen"):
-        record_and_render(("python", "-c", "pass"), columns=40)
+        record_and_render((sys.executable, "-c", "pass"), columns=40)
 
 
 @pytest.mark.parametrize(
@@ -548,13 +549,13 @@ def 
test_a_typed_opening_walks_its_cursor_one_cell_at_a_time():
 def test_a_recording_types_its_prompt_when_asked():
     """The typed opening leads the recorded frames, under the prompt it 
types."""
     plain, _ = record_and_render(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         prompt="basket ripen --all",
         unique_id="orchard",
     )
     typed, _ = record_and_render(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         prompt="basket ripen --all",
         unique_id="orchard",
@@ -574,7 +575,7 @@ def frame_count(svg: str) -> int:
 def test_a_recording_types_nothing_unless_asked():
     """The default opens on the finished prompt, as every recording so far 
does."""
     svg, _ = record_and_render(
-        ("python", "-c", BAR_SCRIPT),
+        (sys.executable, "-c", BAR_SCRIPT),
         columns=40,
         prompt="basket ripen --all",
         unique_id="orchard",
@@ -616,7 +617,7 @@ def window_height(svg: str) -> float:
 def recorded(script: str, **kwargs: object) -> str:
     """Record one script, however the capture is asked to close."""
     svg, _returncode = record_and_render(
-        ("python", "-c", script),
+        (sys.executable, "-c", script),
         columns=40,
         prompt="basket ripen --all",
         unique_id="orchard",

++++++ monkeypatch-shutil-correctly.patch ++++++
>From d905f6e6e371b2863f16e85eda4d5c176e9253c3 Mon Sep 17 00:00:00 2001
From: Steve Kowalik <[email protected]>
Date: Thu, 10 Sep 2026 11:34:32 +1000
Subject: [PATCH] Accept kwargs in get_terminal_size monkeypatch

test_version monkeypatches shutil.get_terminal_size() in a way that will
only accept positional arguments, and not keyword arguments, leading to
confusing tracebacks from pytest.
---
 tests/test_version.py | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/tests/test_version.py b/tests/test_version.py
index 1179472fd..6c53c8592 100644
--- a/tests/test_version.py
+++ b/tests/test_version.py
@@ -1349,7 +1349,9 @@ def terminal_width(monkeypatch):
 
     def pin(columns: int) -> None:
         monkeypatch.setattr(
-            shutil, "get_terminal_size", lambda *_: os.terminal_size((columns, 
24))
+            shutil,
+            "get_terminal_size",
+            lambda *args, **kwargs: os.terminal_size((columns, 24)),
         )
 
     return pin

Reply via email to