Package: src:patsy
Version: 1.0.2-1
User: [email protected]
Usertags: python3.15
Tags: patch

Hi!

While rebuilding the python related packages against the Python 3.15rc1
version we found that patsy fails to build from source [1].
We found that the necessary fixes have recently been applied in the
upstream repository [2].

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

Happy hacking,

[1]: https://debusine.debian.net/debian/r-python-python3.15/artifact/4446312/
[2]: 
https://github.com/pydata/patsy/commit/85f23252caf6c36f4ad91f57e3e983751b50d498
[3]: https://debusine.debian.net/debian/r-python-python3.15/

--
"Can you imagine what I would do if I could do all I can?" -- Sun Tzu
Saludos /\/\ /\ >< `/
From 24675f8da0747ad3bfd4da406373054931f1f8ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <[email protected]>
Date: Mon, 27 Apr 2026 14:15:54 +0200
Subject: [PATCH] Fix re.Scanner capturing group for Python 3.15 compatibility

Python 3.15 forbids capturing groups in re.Scanner lexicon patterns.
Convert the capturing group to a non-capturing group in num_re.

Assisted-by: Cursor
---
 patsy/constraint.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/patsy/constraint.py b/patsy/constraint.py
index 6c044144..17ee1dee 100644
--- a/patsy/constraint.py
+++ b/patsy/constraint.py
@@ -187,7 +187,7 @@ def _tokenize_constraint(string, variable_names):
     lparen_re = r"\("
     rparen_re = r"\)"
     op_re = "|".join([re.escape(op.token_type) for op in _ops])
-    num_re = r"[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?"
+    num_re = r"[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?"
     whitespace_re = r"\s+"
 
     # Prefer long matches:

Reply via email to