commit:     bef12ce993d2490df3482d410dba2d7d2b19fdda
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Mon Nov 24 02:52:32 2025 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Mon Nov 24 03:21:04 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bef12ce9

dev-python/pygame: enable py3.14

Had another look at this and seen that upstream has fixed tests since.
Seems only the tests themselves were broken given it does not touch
the code, albeit the upstream commit does sound doubtful about its
own changes and there could be more to that.

Did try one game (games-puzzle/pathological) just in case and seems ok.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 .../pygame/files/pygame-2.6.1-py314-tests.patch    | 171 +++++++++++++++++++++
 dev-python/pygame/pygame-2.6.1.ebuild              |   6 +-
 2 files changed, 176 insertions(+), 1 deletion(-)

diff --git a/dev-python/pygame/files/pygame-2.6.1-py314-tests.patch 
b/dev-python/pygame/files/pygame-2.6.1-py314-tests.patch
new file mode 100644
index 000000000000..fb57116fef3f
--- /dev/null
+++ b/dev-python/pygame/files/pygame-2.6.1-py314-tests.patch
@@ -0,0 +1,171 @@
+https://github.com/pygame/pygame/commit/ac69c0be7e16
+--- a/test/freetype_test.py
++++ b/test/freetype_test.py
+@@ -1611,3 +1611,7 @@
+             o = font.render_raw(text)
+-            self.assertEqual(getrefcount(o), 2)
++            # if python 3.14+, getrefcount returns 1 instead of 2
++            if sys.version_info >= (3, 14):
++                self.assertEqual(getrefcount(o), 1)
++            else:
++                self.assertEqual(getrefcount(o), 2)
+             self.assertEqual(getrefcount(o[0]), 2)
+@@ -1616,3 +1620,7 @@
+             o = font.get_metrics("AB")
+-            self.assertEqual(getrefcount(o), 2)
++            if sys.version_info >= (3, 14):
++                self.assertEqual(getrefcount(o), 1)
++            else:
++                self.assertEqual(getrefcount(o), 2)
++
+             for i in range(len(o)):
+@@ -1620,3 +1628,6 @@
+             o = font.get_sizes()
+-            self.assertEqual(getrefcount(o), 2)
++            if sys.version_info >= (3, 14):
++                self.assertEqual(getrefcount(o), 1)
++            else:
++                self.assertEqual(getrefcount(o), 2)
+             for i in range(len(o)):
+--- a/test/mask_test.py
++++ b/test/mask_test.py
+@@ -2581,3 +2581,7 @@
+         """Ensures empty and full masks can be drawn onto surfaces."""
+-        expected_ref_count = 3
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 2
++        else:
++            expected_ref_count = 3
++
+         size = (33, 65)
+@@ -2601,3 +2605,7 @@
+         """Ensures empty and full masks can be drawn onto a created 
surface."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2626,3 +2634,7 @@
+         """Ensures to_surface accepts a surface arg/kwarg."""
+-        expected_ref_count = 4
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 3
++        else:
++            expected_ref_count = 4
++
+         expected_color = pygame.Color("white")
+@@ -2650,3 +2662,7 @@
+         """Ensures to_surface accepts a setsurface arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2677,3 +2693,7 @@
+         """Ensures to_surface accepts a unsetsurface arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2703,3 +2723,7 @@
+         """Ensures to_surface accepts a setcolor arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2740,3 +2764,7 @@
+         """Ensures to_surface accepts a unsetcolor arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2779,3 +2807,7 @@
+         """Ensures to_surface accepts a dest arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -2835,3 +2867,7 @@
+         """Ensures to_surface accepts an area arg/kwarg."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -3329,3 +3365,7 @@
+         """
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -3413,3 +3453,7 @@
+         """
+-        expected_ref_count = 4
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 3
++        else:
++            expected_ref_count = 4
++
+         expected_flag = SRCALPHA
+@@ -5275,3 +5319,7 @@
+         """Ensures zero sized surfaces are handled correctly."""
+-        expected_ref_count = 3
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 2
++        else:
++            expected_ref_count = 3
++
+         size = (0, 0)
+@@ -5289,3 +5337,7 @@
+         """Ensures zero sized setsurfaces are handled correctly."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+@@ -5309,3 +5361,7 @@
+         """Ensures zero sized unsetsurfaces are handled correctly."""
+-        expected_ref_count = 2
++        if sys.version_info >= (3, 14):
++            expected_ref_count = 1
++        else:
++            expected_ref_count = 2
++
+         expected_flag = SRCALPHA
+--- a/test/rwobject_test.py
++++ b/test/rwobject_test.py
+@@ -2,2 +2,3 @@
+ import unittest
++import sys
+ 
+@@ -85,3 +86,6 @@
+             bpath = encode_string(upath)
+-            self.assertEqual(getrefcount(bpath), before)
++            if sys.version_info >= (3, 14):
++                self.assertEqual(getrefcount(bpath), before - 1)
++            else:
++                self.assertEqual(getrefcount(bpath), before)
+ 

diff --git a/dev-python/pygame/pygame-2.6.1.ebuild 
b/dev-python/pygame/pygame-2.6.1.ebuild
index 0de5c29ec8af..61a278c2a564 100644
--- a/dev-python/pygame/pygame-2.6.1.ebuild
+++ b/dev-python/pygame/pygame-2.6.1.ebuild
@@ -5,7 +5,7 @@ EAPI=8
 
 DISTUTILS_EXT=1
 DISTUTILS_USE_PEP517=setuptools
-PYTHON_COMPAT=( python3_{11..13} pypy3_11 )
+PYTHON_COMPAT=( python3_{11..14} pypy3_11 )
 
 inherit distutils-r1
 
@@ -58,6 +58,10 @@ BDEPEND="
        )
 "
 
+PATCHES=(
+       "${FILESDIR}"/${P}-py314-tests.patch
+)
+
 src_prepare() {
        distutils-r1_src_prepare
 

Reply via email to