From bef12ce993d2490df3482d410dba2d7d2b19fdda Mon Sep 17 00:00:00 2001 From: Ionen Wolkens Date: Sun, 23 Nov 2025 21:52:32 -0500 Subject: [PATCH] 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 --- .../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(-) create mode 100644 dev-python/pygame/files/pygame-2.6.1-py314-tests.patch 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 0000000000000..fb57116fef3f8 --- /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 0de5c29ec8af2..61a278c2a564f 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