[From nobody Mon Aug 31 16:45:05 2026
Received: (at submit) by bugs.debian.org; 23 Aug 2026 20:35:24 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-119.2 required=4.0 tests=ALL_TRUSTED,BAYES_00,
 BODY_INCLUDES_PACKAGE,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,
 DKIM_VALID_AU,DKIM_VALID_EF,FROMDEVELOPER,HAS_PACKAGE,MD5_SHA1_SUM,
 SPF_HELO_NONE,SPF_PASS,USER_IN_DKIM_WELCOMELIST autolearn=ham
 autolearn_force=no version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 40; hammy, 150; neutral, 76; spammy,
 0. spammytokens:
 hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
 0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
 0.000-+--H*RT:311, 0.000-+--H*RT:108
Return-path: &lt;maxy@debian.org&gt;
Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:108]:56208)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;maxy@debian.org&gt;) id 1wyEua-00GOnv-2k
 for submit@bugs.debian.org; Sun, 23 Aug 2026 20:35:24 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.stravinsky;
 h=X-Debian-User:Content-Type:MIME-Version:Message-ID:
 Subject:Cc:To:From:Date:Reply-To:Content-Transfer-Encoding:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=McZsMVBwt91ScUGMDu8u8RnQRFW6NA+WAbeBsX/hU9U=; b=m2g9/c3cbfR3UnXUG9DmiSuNIF
 h9Ut+VW9iDpcrUFmA87O/ttqvgw+hpm/JGCJZzxGD8B984p/3Ze6r2Sv0wprU31QlNFqOO0eE9j4n
 OCowo3lK5yivmMSLffUcRMVtizRGe9/p5SgACLy9KIdvWOK/8qIqT/qnpsX0NLqrj4wbcPP/PXvET
 Ub7eCygqpQ8yvij2lh5V4lhYzt91KFqTFftGHsiVqjdlHN25wExouLJ977VnZKIgxMksb9ETT2td8
 V8MTBsHvVQsWKzbiKCL3O0OeBduuDllg6jqbGPXqZUXvVxDV5lUcl2a2/55hAYfOZgA9poqdzZMWe
 GvJJnvfw==;
Received: from authenticated-user by stravinsky.debian.org with esmtpsa
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;maxy@debian.org&gt;) id 1wyEuY-00D9XO-1c;
 Sun, 23 Aug 2026 20:35:23 +0000
Date: Sun, 23 Aug 2026 22:35:16 +0200
From: Maximiliano Curia &lt;maxy@debian.org&gt;
To: submit@bugs.debian.org
Cc: debian-python@lists.debian.org
Subject: patsy: FTBFS against python 3.15rc1
Message-ID: &lt;aotZhA9TTYRnAa74@hecuba.gnuservers.com.ar&gt;
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=&quot;qeTKCCxRLCtScNrJ&quot;
Content-Disposition: inline
X-Debian-User: maxy
Delivered-To: submit@bugs.debian.org

--qeTKCCxRLCtScNrJ
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Disposition: inline

Package: src:patsy
Version: 1.0.2-1
User: debian-python@lists.debian.org
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/

-- 
&quot;Can you imagine what I would do if I could do all I can?&quot; -- Sun Tzu
Saludos /\/\ /\ &gt;&lt; `/

--qeTKCCxRLCtScNrJ
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
	filename=fix-re-scanner-capturing-group.patch
Content-Transfer-Encoding: quoted-printable

=46rom 24675f8da0747ad3bfd4da406373054931f1f8ff Mon Sep 17 00:00:00 2001
=46rom: =3D?UTF-8?q?Tom=3DC3=3DA1=3DC5=3DA1=3D20Hrn=3DC4=3D8Diar?=3D &lt;thrnc=
iar@redhat.com&gt;
Date: Mon, 27 Apr 2026 14:15:54 +0200
Subject: [PATCH] Fix re.Scanner capturing group for Python 3.15 compatibili=
ty

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 =3D r&quot;\(&quot;
     rparen_re =3D r&quot;\)&quot;
     op_re =3D &quot;|&quot;.join([re.escape(op.token_type) for op in _ops])
-    num_re =3D r&quot;[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?&quot;
+    num_re =3D r&quot;[-+]?[0-9]*\.?[0-9]+(?:[eE][-+]?[0-9]+)?&quot;
     whitespace_re =3D r&quot;\s+&quot;
=20
     # Prefer long matches:

--qeTKCCxRLCtScNrJ--
]