commit:     35009ce0293f717503c8d41f7db9b81593d34a63
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jun  7 04:09:24 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jun  7 06:13:22 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=35009ce0

dev-python/fonttools: Bump to 4.58.2

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 dev-python/fonttools/Manifest                      |  1 +
 .../fonttools/files/fonttools-4.58.2-py313.patch   | 42 ++++++++++++
 dev-python/fonttools/fonttools-4.58.2.ebuild       | 74 ++++++++++++++++++++++
 3 files changed, 117 insertions(+)

diff --git a/dev-python/fonttools/Manifest b/dev-python/fonttools/Manifest
index 9a83081ab985..2f26d10793ca 100644
--- a/dev-python/fonttools/Manifest
+++ b/dev-python/fonttools/Manifest
@@ -2,3 +2,4 @@ DIST fonttools-4.56.0.gh.tar.gz 3900744 BLAKE2B 
f75ad562092cadbf2a844fedf47e1b05
 DIST fonttools-4.57.0.gh.tar.gz 3932468 BLAKE2B 
7bfcf6aa3b5cffbba7cdabe14a580dc40677a1d80a2d69750925d7e06c1885df9cd586a228c0d06707acdc9870e92241cce373f0eb27f93a4f887ba14631470c
 SHA512 
7e3ef7149b8e6af5953a827e0a078390e67b919ba9752a03672d876f6de3d0d395b2e061c0f87e5d9298c13c74a1f0162d99151c364dfab487eec2ab9adced75
 DIST fonttools-4.58.0.gh.tar.gz 3955467 BLAKE2B 
0094284f90685a4e8051c84374325413269ab0207f0ecc25d3129776a226de05a82adcbf1812cc3f18b8950b49f310f7a96295812a33c8e3fecd6aa48d768efb
 SHA512 
8d32cffb2a83b0fb2eda89a8352b7e235595c8d159adb4075941da46c3715701c1d12d0f5e0fe663c587f5c888658ab1d7b2a54cb857355848627a1c25acd0ae
 DIST fonttools-4.58.1.gh.tar.gz 3959551 BLAKE2B 
bb3a958a359654bee709efe8d21c6e7f13c62c730aa33fdcbe2866318fe91f14ee7e6b63951f17b5ff1faa3e2b96ee934bd7e5b063242d88980d649653a682ce
 SHA512 
f5b810668dca7ffca943fc362616784d1aecbd8f036925b2f8acb2d80997c26cf8c8127814f31f1a62bcf062d83c4a8b76ee022a146d5c2b8693cd1750732545
+DIST fonttools-4.58.2.gh.tar.gz 3964058 BLAKE2B 
0e367e65cd19d109db11e81020814b3b07dd7fb82068fd162ad04a7a7ee64d641991908c946f09f853b6e797b09f87bafb8870ab84750cc3d3e525083946d5d5
 SHA512 
f78026457be3d75be89ec6788309fc5cab9d9987b5c438bffe7059a78b5d688b6fb9a94dca9636f4c28d44a60f36cdd24bbdf1d32197d63e79b99f3108ce32a5

diff --git a/dev-python/fonttools/files/fonttools-4.58.2-py313.patch 
b/dev-python/fonttools/files/fonttools-4.58.2-py313.patch
new file mode 100644
index 000000000000..f4afa98b65ea
--- /dev/null
+++ b/dev-python/fonttools/files/fonttools-4.58.2-py313.patch
@@ -0,0 +1,42 @@
+From c9d720cfeb4e5bdabbed68050154f7f9486eac37 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <[email protected]>
+Date: Sat, 7 Jun 2025 07:51:13 +0200
+Subject: [PATCH] fix iterable check for Python 3.13.4 and newer
+
+Fix the `feaLib/ast.py` snippet used to check whether a type is iterable
+to work correctly with Python 3.13.4.  The snippet wrongly assumed
+that a generator expression will raise immediately when the RHS of `in`
+is not iterable.  This is no longer the case with Python 3.13.4,
+and such a generator only raises when you actually start iterating.
+Use a plain `for` expression to start iterating and catch the problem
+more reliably.
+
+Fixes #3854
+---
+ Lib/fontTools/feaLib/ast.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/Lib/fontTools/feaLib/ast.py b/Lib/fontTools/feaLib/ast.py
+index efcce8c68..18e5a891d 100644
+--- a/Lib/fontTools/feaLib/ast.py
++++ b/Lib/fontTools/feaLib/ast.py
+@@ -719,7 +719,8 @@ class ChainContextPosStatement(Statement):
+         for i, lookup in enumerate(lookups):
+             if lookup:
+                 try:
+-                    (_ for _ in lookup)
++                    for _ in lookup:
++                        break
+                 except TypeError:
+                     self.lookups[i] = [lookup]
+ 
+@@ -777,7 +778,8 @@ class ChainContextSubstStatement(Statement):
+         for i, lookup in enumerate(lookups):
+             if lookup:
+                 try:
+-                    (_ for _ in lookup)
++                    for _ in lookup:
++                        break
+                 except TypeError:
+                     self.lookups[i] = [lookup]
+ 

diff --git a/dev-python/fonttools/fonttools-4.58.2.ebuild 
b/dev-python/fonttools/fonttools-4.58.2.ebuild
new file mode 100644
index 000000000000..6754ed213b4b
--- /dev/null
+++ b/dev-python/fonttools/fonttools-4.58.2.ebuild
@@ -0,0 +1,74 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( pypy3_11 python3_{11..13} )
+PYTHON_REQ_USE="xml(+)"
+
+inherit distutils-r1 virtualx
+
+DESCRIPTION="Library for manipulating TrueType, OpenType, AFM and Type1 fonts"
+HOMEPAGE="
+       https://github.com/fonttools/fonttools/
+       https://pypi.org/project/fonttools/
+"
+SRC_URI="
+       https://github.com/fonttools/fonttools/archive/${PV}.tar.gz
+               -> ${P}.gh.tar.gz
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 
~riscv ~s390 ~sparc ~x86"
+IUSE="+native-extensions"
+
+RDEPEND="
+       >=dev-python/fs-2.4.9[${PYTHON_USEDEP}]
+"
+BDEPEND="
+       native-extensions? (
+               $(python_gen_cond_dep '
+                       dev-python/cython[${PYTHON_USEDEP}]
+               ' 'python*')
+       )
+       test? (
+               dev-python/brotlicffi[${PYTHON_USEDEP}]
+               dev-python/munkres[${PYTHON_USEDEP}]
+               dev-python/pytest-rerunfailures[${PYTHON_USEDEP}]
+               app-arch/zopfli
+       )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+       # https://github.com/fonttools/fonttools/pull/3855
+       "${FILESDIR}/${P}-py313.patch"
+)
+
+python_compile() {
+       local -x FONTTOOLS_WITH_CYTHON=$(usex native-extensions)
+       [[ ${EPYTHON} == pypy3 ]] && FONTTOOLS_WITH_CYTHON=0
+       distutils-r1_python_compile
+}
+
+src_test() {
+       # virtualx used when matplotlib is installed causing plot module tests 
to run
+       virtx distutils-r1_src_test
+}
+
+python_test() {
+       local EPYTEST_DESELECT=(
+               # flaky test
+               
Tests/ttLib/woff2_test.py::WOFF2ReaderTest::test_get_normal_tables
+       )
+
+       local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+       nonfatal epytest \
+               -p rerunfailures --reruns=5 \
+               Tests fontTools || die -n "Tests failed with ${EPYTHON}"
+}

Reply via email to