diff --git a/pygments.patch b/pygments.patch new file mode 100644 index 0000000..a816396 --- /dev/null +++ b/pygments.patch @@ -0,0 +1,44 @@ +From 08be21dadfd2ce9e96e41e366ab38bd8d7cd0e39 Mon Sep 17 00:00:00 2001 +From: Dan Lazin +Date: Tue, 7 Jan 2025 16:04:56 -0500 +Subject: [PATCH] Fix test that changed with Pygments 2.19. + +--- + tests/test_markdown.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +Index: rich-13.9.4/tests/test_markdown.py +=================================================================== +--- rich-13.9.4.orig/tests/test_markdown.py ++++ rich-13.9.4/tests/test_markdown.py +@@ -110,7 +110,7 @@ def test_inline_code(): + inline_code_theme="emacs", + ) + result = render(markdown) +- expected = "inline \x1b[1;38;2;170;34;255;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m code \n" ++ expected = "inline \x1b[1;38;2;170;34;255;48;2;248;248;248mimport\x1b[0m\x1b[38;2;187;187;187;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m code \n" + print(result) + print(repr(result)) + assert result == expected +Index: rich-13.9.4/tests/test_syntax.py +=================================================================== +--- rich-13.9.4.orig/tests/test_syntax.py ++++ rich-13.9.4/tests/test_syntax.py +@@ -53,7 +53,7 @@ def test_blank_lines(): + print(repr(result)) + assert ( + result +- == "\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m1 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m2 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m3 \x1b[0m\x1b[1;38;2;0;128;0;48;2;248;248;248mimport\x1b[0m\x1b[38;2;0;0;0;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m4 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m5 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n" ++ == "\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m1 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m2 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m3 \x1b[0m\x1b[1;38;2;0;128;0;48;2;248;248;248mimport\x1b[0m\x1b[38;2;187;187;187;48;2;248;248;248m \x1b[0m\x1b[1;38;2;0;0;255;48;2;248;248;248mthis\x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m4 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n\x1b[1;38;2;24;24;24;48;2;248;248;248m \x1b[0m\x1b[38;2;173;173;173;48;2;248;248;248m5 \x1b[0m\x1b[48;2;248;248;248m \x1b[0m\n" + ) + + +@@ -119,7 +119,7 @@ def test_python_render_simple_indent_gui + ) + rendered_syntax = render(syntax) + print(repr(rendered_syntax)) +- expected = '\x1b[34mdef\x1b[0m \x1b[32mloop_first_last\x1b[0m(values: Iterable[T]) -> Iterable[Tuple[\x1b[36mb\x1b[0m\n\x1b[2;37m│ \x1b[0m\x1b[33m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[2m│ \x1b[0miter_values = \x1b[36miter\x1b[0m(values)\n\x1b[2m│ \x1b[0m\x1b[34mtry\x1b[0m:\n\x1b[2m│ │ \x1b[0mprevious_value = \x1b[36mnext\x1b[0m(iter_values)\n\x1b[2m│ \x1b[0m\x1b[34mexcept\x1b[0m \x1b[36mStopIteration\x1b[0m:\n\x1b[2m│ │ \x1b[0m\x1b[34mreturn\x1b[0m\n\x1b[2m│ \x1b[0mfirst = \x1b[34mTrue\x1b[0m\n\x1b[2m│ \x1b[0m\x1b[34mfor\x1b[0m value \x1b[35min\x1b[0m iter_values:\n\x1b[2m│ │ \x1b[0m\x1b[34myield\x1b[0m first, \x1b[34mFalse\x1b[0m, previous_value\n\x1b[2m│ │ \x1b[0mfirst = \x1b[34mFalse\x1b[0m\n\x1b[2m│ │ \x1b[0mprevious_value = value\n\x1b[2m│ \x1b[0m\x1b[34myield\x1b[0m first, \x1b[34mTrue\x1b[0m, previous_value\n' ++ expected = '\x1b[34mdef\x1b[0m\x1b[37m \x1b[0m\x1b[32mloop_first_last\x1b[0m(values: Iterable[T]) -> Iterable[Tuple[\x1b[36mb\x1b[0m\n\x1b[2;37m│ \x1b[0m\x1b[33m"""Iterate and generate a tuple with a flag for first an\x1b[0m\n\x1b[2m│ \x1b[0miter_values = \x1b[36miter\x1b[0m(values)\n\x1b[2m│ \x1b[0m\x1b[34mtry\x1b[0m:\n\x1b[2m│ │ \x1b[0mprevious_value = \x1b[36mnext\x1b[0m(iter_values)\n\x1b[2m│ \x1b[0m\x1b[34mexcept\x1b[0m \x1b[36mStopIteration\x1b[0m:\n\x1b[2m│ │ \x1b[0m\x1b[34mreturn\x1b[0m\n\x1b[2m│ \x1b[0mfirst = \x1b[34mTrue\x1b[0m\n\x1b[2m│ \x1b[0m\x1b[34mfor\x1b[0m value \x1b[35min\x1b[0m iter_values:\n\x1b[2m│ │ \x1b[0m\x1b[34myield\x1b[0m first, \x1b[34mFalse\x1b[0m, previous_value\n\x1b[2m│ │ \x1b[0mfirst = \x1b[34mFalse\x1b[0m\n\x1b[2m│ │ \x1b[0mprevious_value = value\n\x1b[2m│ \x1b[0m\x1b[34myield\x1b[0m first, \x1b[34mTrue\x1b[0m, previous_value\n' + assert rendered_syntax == expected + + diff --git a/python-rich.changes b/python-rich.changes index ff8f323..44cbe1d 100644 --- a/python-rich.changes +++ b/python-rich.changes @@ -1,3 +1,81 @@ +------------------------------------------------------------------- +Fri Jan 17 14:55:32 UTC 2025 - Markéta Machová + +- Add pygments.patch to fix tests with Pygments 2.19 + +------------------------------------------------------------------- +Thu Dec 5 01:45:25 UTC 2024 - Steve Kowalik + +- Switch to GitHub tarball so we can run the testsuite. +- Correct version guard for typing_extensions Requires. +- Drop Python 3.7 sections. + +------------------------------------------------------------------- +Wed Nov 20 17:44:21 UTC 2024 - Dirk Müller + +- update to 13.9.4: + * Optimizations to cell_len which may speed up Rich / Textual + output https://github.com/Textualize/rich/pull/3546 +- update to 13.9.3: + * Fix a broken regex that resulted in the slow path being + chosen for some operations. This fix should result in notable + speedups for some operations, such as wrapping text. + * Fixed broken regex that may have resulted in poor + performance. https://github.com/Textualize/rich/pull/3535 +- update to 13.9.2: + * A hotfix for highlighting in the table, and a fix for + `Segment.split_cells` + * Fixed `Table` columns not highlighting when added by + `add_row` https://github.com/Textualize/rich/issues/3517 + * Fixed an issue with Segment.split_cells reported in Textual + https://github.com/Textualize/textual/issues/5090 +- update to 13.9.1: + * Fixed typing_extensions dependency +- update to 13.9.0: + * Dropped support for Python3.7 + * Rich will display tracebacks with finely grained error + locations on python 3.11+ + * Fixed issue with Segment._split_cells + * Fix auto detection of terminal size on Windows + * `Text.style` now respected in Panel title/subtitle +- update to 13.8.1: + * Added support for Python 3.13 + * Fixed infinite loop when appending Text to same instance +- update to 13.8.0: + * Fixed `Table` rendering of box elements so "footer" elements + truly appear at bottom of table, "mid" elements in main table + body. + * Fixed styles in Panel when Text objects are used for title + * Fix pretty repr for `collections.deque` + * Thread used in progress.track will exit if an exception + occurs in a generator + * Progress track thread is now a daemon thread + * Fixed cached hash preservation upon clearing meta and links + * Fixed overriding the `background_color` of `Syntax` not + including padding + * Fixed pretty printing of dataclasses with a default repr in + Python 3.13 + * Fixed selective enabling of highlighting when disabled in the + `Console` + * Fixed BrokenPipeError writing an error message + * Fixed superfluous space above Markdown tables + * Fixed issue with record and capture interaction + * Fixed control codes breaking in `append_tokens` + * Fixed exception pretty printing a dataclass with missing + * `RichHandler` errors and warnings will now use different + colors (red and yellow) + * Removed the empty line printed in jupyter while using + `Progress` + * Running tests in environment with `FORCE_COLOR` or `NO_COLOR` + environment variables + * ansi decoder will now strip problematic private escape + sequences + * Tree's ASCII_GUIDES and TREE_GUIDES constants promoted to + class attributes + * Adds a `case_sensitive` parameter to `prompt.Prompt`. This + determines if the response is treated as case-sensitive. + * Added `Console.on_broken_pipe` + ------------------------------------------------------------------- Sat Mar 16 09:47:51 UTC 2024 - Dirk Müller diff --git a/python-rich.spec b/python-rich.spec index 523b526..670ae5f 100644 --- a/python-rich.spec +++ b/python-rich.spec @@ -1,7 +1,7 @@ # # spec file for package python-rich # -# Copyright (c) 2024 SUSE LLC +# Copyright (c) 2025 SUSE LLC # Copyright (c) 2020-2021, Martin Hauke # # All modifications and additions to the file contributed by third parties @@ -19,19 +19,20 @@ %{?sle15_python_module_pythons} Name: python-rich -Version: 13.7.1 +Version: 13.9.4 Release: 0 Summary: A Python library for rich text and beautiful formatting in the terminal License: MIT -Group: Development/Languages/Python URL: https://github.com/Textualize/rich -Source: https://files.pythonhosted.org/packages/source/r/rich/rich-%{version}.tar.gz -BuildRequires: %{python_module dataclasses >= 0.7 if %python-base < 3.7} +Source: https://github.com/Textualize/rich/archive/refs/tags/v%{version}.tar.gz#/rich-%{version}.tar.gz +# PATCH-FIX-UPSTREAM https://github.com/Textualize/rich/pull/3604 Fix test that changed with Pygments 2.19. +# and https://github.com/Textualize/rich/pull/3608 fix remaining tests with Pygments 2.19 #3604 did not fix +Patch: pygments.patch +BuildRequires: %{python_module base >= 3.8} BuildRequires: %{python_module markdown-it-py >= 2.2.0} BuildRequires: %{python_module pip} BuildRequires: %{python_module poetry-core} BuildRequires: %{python_module pygments >= 2.13.0} -BuildRequires: %{python_module typing_extensions >= 4.0.0 if %python-base < 3.9} BuildRequires: fdupes BuildRequires: python-rpm-macros Requires: python-markdown-it-py >= 2.2.0 @@ -41,12 +42,6 @@ BuildArch: noarch # SECTION test requirements BuildRequires: %{python_module pytest} # /SECTION -%if 0%{?python_version_nodots} < 39 -Requires: python-typing_extensions >= 4.0.0 -%endif -%if 0%{?python_version_nodots} < 37 -Requires: python-dataclasses >= 0.7 -%endif %python_subpackages %description @@ -54,7 +49,7 @@ Render rich text, tables, progress bars, syntax highlighting, markdown and more to the terminal. %prep -%setup -q -n rich-%{version} +%autosetup -p1 -n rich-%{version} %build %pyproject_wheel @@ -63,10 +58,13 @@ markdown and more to the terminal. %pyproject_install %python_expand %fdupes %{buildroot}%{$python_sitelib} +%check +%pytest + %files %{python_files} %license LICENSE %doc README.md %{python_sitelib}/rich -%{python_sitelib}/rich-%{version}*-info +%{python_sitelib}/rich-%{version}.dist-info %changelog diff --git a/rich-13.7.1.tar.gz b/rich-13.7.1.tar.gz deleted file mode 100644 index 189a6aa..0000000 --- a/rich-13.7.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9be308cb1fe2f1f57d67ce99e95af38a1e2bc71ad9813b0e247cf7ffbcc3a432 -size 221248 diff --git a/rich-13.9.4.tar.gz b/rich-13.9.4.tar.gz new file mode 100644 index 0000000..61709e5 --- /dev/null +++ b/rich-13.9.4.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22bfd7f24f6107ed222f6ab0cee6f0016e22cb6f91144b90c65b112663c7477c +size 15064359