#1145648 rich: FTBFS against python 3.15rc1

Package:
src:rich
Source:
src:rich
Submitter:
Maximiliano Curia
Date:
2026-09-14 05:21:02 UTC
Severity:
normal
Tags:
#1145648#5
Date:
2026-08-26 09:58:47 UTC
From:
To:
Package: src:rich
Version: 15.0.0-1
User: debian-python@lists.debian.org
Usertags: python3.15
Tags: patch, ftbfs, forky, sid

Hi!

While rebuilding the python related packages against the Python 3.15rc1
version we found that rich fails to build from source [1].

The failures are caused by the tests that are being skipped for all the
newer python versions. I prepared a patch that adds the skips for py315,
but I think that upstream needs to improve the tests or drop them. I'm
attaching the patch. If possible, please have a talk about this with
upstream.

I applied the fix in the sandbox [2] to be able to build the packages
that depend on rich, please consider applying the patch to support the
upcoming 3.15 version.

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/work-request/1118900/
[2]: https://debusine.debian.net/debian/r-python-python3.15/

#1145648#10
Date:
2026-08-26 14:19:50 UTC
From:
To:
Hi Sandro,

I propose to do a NMU by the end of the week for these four bugs.

#1145648 [n|⛺+|  ] [src:rich] rich: FTBFS against python 3.15rc1
#1141476 [n|  |  ] [src:rich] rich: please mark python3-pytest as <!nocheck>
#1141477 [n|  |  ] [src:rich] rich: please drop the unused
python3-setuptools build-dependency
#1144733 [n|  |  ] [src:rich] rich: please drop the unused
python3-mypy build-dependency

Greetings

Alexandre

Le mer. 26 août 2026 à 11:59, Maximiliano Curia <maxy@debian.org> a écrit :

#1145648#15
Date:
2026-09-13 12:01:17 UTC
From:
To:
Dear maintainer,

I've prepared an NMU for rich (versioned as 15.0.0-1.1) and
uploaded it to DELAYED/15. Please feel free to tell me if I
should cancel it.

Regards.

diffstat for rich-15.0.0 rich-15.0.0

 changelog           |   14 ++++++++
 control             |    4 --
 patches/py315.patch |   85 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 patches/series      |    1
 4 files changed, 101 insertions(+), 3 deletions(-)

diff -Nru rich-15.0.0/debian/changelog rich-15.0.0/debian/changelog
--- rich-15.0.0/debian/changelog	2026-04-16 07:42:34.000000000 +0200
+++ rich-15.0.0/debian/changelog	2026-09-13 13:57:54.000000000 +0200
@@ -1,3 +1,17 @@
+rich (15.0.0-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+
+  [ Maximiliano Curia ]
+  * Fix tests for Python 3.15 (Closes: #1145648)
+
+  [ Alexandre Detiste ]
+  * Drop unused python3-mypy build-dependency (Closes: #1144733)
+  * Drop unused python3-setuptools build-dependency (Closes: #1141477)
+  * Mark python3-pytest as <!nocheck> (Closes: #1141476)
+
+ -- Alexandre Detiste <tchet@debian.org>  Sun, 13 Sep 2026 13:57:54 +0200
+
 rich (15.0.0-1) unstable; urgency=medium

   * New upstream release
diff -Nru rich-15.0.0/debian/control rich-15.0.0/debian/control
--- rich-15.0.0/debian/control	2026-04-16 07:42:34.000000000 +0200
+++ rich-15.0.0/debian/control	2026-09-13 13:54:38.000000000 +0200
@@ -7,11 +7,9 @@
                python3-all,
                python3-markdown-it <!nocheck>,
                python3-attr <!nocheck>,
-               python3-mypy (>= 0.782),
                python3-poetry-core,
                python3-pygments (>= 2.19.0),
-               python3-pytest,
-               python3-setuptools,
+               python3-pytest <!nocheck>,
                python3-typing-extensions (>= 3.7.4),
 Standards-Version: 4.6.2
 Homepage: https://github.com/Textualize/rich
diff -Nru rich-15.0.0/debian/patches/py315.patch rich-15.0.0/debian/patches/py315.patch
--- rich-15.0.0/debian/patches/py315.patch	1970-01-01 01:00:00.000000000 +0100
+++ rich-15.0.0/debian/patches/py315.patch	2026-09-13 13:55:42.000000000 +0200
@@ -0,0 +1,85 @@
+Description: Fix tests for Python 3.15
+---
+ tests/test_inspect.py | 10 ++++++++++
+ tests/test_pretty.py  |  5 +++++
+ 2 files changed, 15 insertions(+)
+
+diff --git a/tests/test_inspect.py b/tests/test_inspect.py
+index d6972fb5..7abca37d 100644
+--- a/tests/test_inspect.py
++++ b/tests/test_inspect.py
+@@ -48,6 +48,11 @@ skip_py314 = pytest.mark.skipif(
+     reason="rendered differently on py3.14",
+ )
+
++skip_py315 = pytest.mark.skipif(
++    sys.version_info.minor == 15 and sys.version_info.major == 3,
++    reason="rendered differently on py3.15",
++)
++
+
+ skip_pypy3 = pytest.mark.skipif(
+     hasattr(sys, "pypy_version_info"),
+@@ -145,6 +150,7 @@ def test_inspect_empty_dict():
+     assert render({}).startswith(expected)
+
+
++@skip_py315
+ @skip_py314
+ @skip_py313
+ @skip_py312
+@@ -169,6 +175,7 @@ def test_inspect_builtin_function_except_python311():
+ @pytest.mark.skipif(
+     sys.version_info < (3, 11), reason="print builtin signature only available on 3.11+"
+ )
++@skip_py315
+ @skip_pypy3
+ def test_inspect_builtin_function_only_python311():
+     # On 3.11, the print builtin *does* have a signature, unlike in prior versions
+@@ -227,6 +234,7 @@ def test_inspect_integer_with_value():
+ @skip_py312
+ @skip_py313
+ @skip_py314
++@skip_py315
+ def test_inspect_integer_with_methods_python38_and_python39():
+     expected = (
+         "╭──────────────── <class 'int'> ─────────────────╮\n"
+@@ -266,6 +274,7 @@ def test_inspect_integer_with_methods_python38_and_python39():
+ @skip_py312
+ @skip_py313
+ @skip_py314
++@skip_py315
+ def test_inspect_integer_with_methods_python310only():
+     expected = (
+         "╭──────────────── <class 'int'> ─────────────────╮\n"
+@@ -309,6 +318,7 @@ def test_inspect_integer_with_methods_python310only():
+ @skip_py312
+ @skip_py313
+ @skip_py314
++@skip_py315
+ def test_inspect_integer_with_methods_python311():
+     # to_bytes and from_bytes methods on int had minor signature change -
+     # they now, as of 3.11, have default values for all of their parameters
+diff --git a/tests/test_pretty.py b/tests/test_pretty.py
+index 29331d9d..a63f848b 100644
+--- a/tests/test_pretty.py
++++ b/tests/test_pretty.py
+@@ -42,6 +42,10 @@ skip_py314 = pytest.mark.skipif(
+     sys.version_info.minor == 14 and sys.version_info.major == 3,
+     reason="rendered differently on py3.14",
+ )
++skip_py315 = pytest.mark.skipif(
++    sys.version_info.minor == 15 and sys.version_info.major == 3,
++    reason="rendered differently on py3.15",
++)
+
+
+ def test_install() -> None:
+@@ -644,6 +648,7 @@ def test_attrs_empty() -> None:
+ @skip_py312
+ @skip_py313
+ @skip_py314
++@skip_py315
+ def test_attrs_broken() -> None:
+     @attr.define
+     class Foo:
diff -Nru rich-15.0.0/debian/patches/series rich-15.0.0/debian/patches/series
--- rich-15.0.0/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ rich-15.0.0/debian/patches/series	2026-09-13 13:55:51.000000000 +0200
@@ -0,0 +1 @@
+py315.patch

#1145648#22
Date:
2026-09-14 05:19:14 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
rich, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1145648@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Sandro Tosi <morph@debian.org> (supplier of updated rich package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Mon, 14 Sep 2026 00:33:40 -0400
Source: rich
Architecture: source
Version: 15.0.0-2
Distribution: unstable
Urgency: medium
Maintainer: Sandro Tosi <morph@debian.org>
Changed-By: Sandro Tosi <morph@debian.org>
Closes: 1141476 1141477 1144733 1145648
Changes:
 rich (15.0.0-2) unstable; urgency=medium
 .
   * debian/control
     - decorate pytest b-d with nocheck; Closes: #1141476
     - drop mypy, setuptools from b-d; Closes: #1144733, #1141477
   * debian/patches/py315.patch
     - skip some tests failing on python 3.15, patch by Maximiliano Curia;
       Closes: #1145648
Checksums-Sha1:
 9c582048ca986d280ca75206288ff09437de634d 2050 rich_15.0.0-2.dsc
 184561a2873ecaccf6749d2d4740894f513a6401 5188 rich_15.0.0-2.debian.tar.xz
 b63a451ae86279f74c1625c9e025b5476ccc1784 8107 rich_15.0.0-2_source.buildinfo
Checksums-Sha256:
 5753fe63bbbd06c81e952666e7df541bcabc18627ae9f727846d5903fcacb73d 2050 rich_15.0.0-2.dsc
 6b94a783eb356b861d2a0e02f88cc34b9eb0b54bdedeaef1d7075cb1d50f3bd1 5188 rich_15.0.0-2.debian.tar.xz
 7024b7403161e71c597f266d202da9eca242dd918cdaafbeb8375112a2f992f5 8107 rich_15.0.0-2_source.buildinfo
Files:
 df0b540fd188b52f73cc0729bed7322e 2050 python optional rich_15.0.0-2.dsc
 5481556fdfdc51c84b4449fbbf305271 5188 python optional rich_15.0.0-2.debian.tar.xz
 0da3a38ef9a0f3f57ec580e41c9bf414 8107 python optional rich_15.0.0-2_source.buildinfo
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEufrTGSrz5KUwnZ05h588mTgBqU8FAmqnf30ACgkQh588mTgB
qU+PFw/+KdTka9U35JurINkqH0O+p72PHKavtU7t3oTyZJUkudEHqkOMH34LO3yB
g+2abRCCC+Mo7ifssgmKX9/6mL8k1JTNyqzyhFcuszuYoI91PSD9Jrshmk561EQf
C5wsKOFiUzjxqAuSAAtOdRzTvvYtDdXMa7zO6ElrkE5G7V/Cku1SJ/j+HAmCATHA
UJzWJS7upIswGbj2C9Skwxdtdx2DTMHwWq9ybF8fsh8/inn8OwnXsPS/liU/fqoV
14UGa3HWWillSwyDXBMEKM8fxE+avENjVFbv+BX2SeIHZcevm/LdRvApnrOnNJ1E
V7vtY9E3STDsi7D9DPtSbJG8N6ZWn6kX/aF1Yn6CrvkOTTGuOt9RDfMLQm6ShGdb
Y06++DpQyNPRiEID204aumy8AEJWHBL22O499nN+cPcmsAGFcD4kN7PfqpRtje4m
XL7lOAufv0VwbV/8Ped3okZJNh+v+Wjy7oc5Q11d9RuKCCwoJrIrA6zf36wrfj9G
2E20Y7b9+XcI9pEUe6YXV3fv4dxUUSROeA+AlBn4jYrrpnfAziYHaG0O5THpdGz9
tvGDNluAR1XTYnAnd4n4v152uHzRaAESnqRNUOTwbFH5NAMw108+A8k2Pjwe4ub8
81rslJlff40MeVT+qkATeWQgoeE2R1jQbyZBuXieBL9vjsqbjdU=
=rfLF
-----END PGP SIGNATURE-----