diff --git a/app-portage/gpyutils/files/implementations.txt b/app-portage/gpyutils/files/implementations.txt index 45705e04e3e11..95b321ec9437a 100644 --- a/app-portage/gpyutils/files/implementations.txt +++ b/app-portage/gpyutils/files/implementations.txt @@ -23,6 +23,7 @@ python3_10 old 3.10 python3_11 old 3.11 python3_12 current 3.12 python3_13 experimental 3.13 +python3_13t experimental 3.13t pypy1_8 2.7-pypy-1.8 dead p1.8 pypy1_9 2.7-pypy-1.9 dead p1.9 diff --git a/dev-lang/python/python-3.13.0-r100.ebuild b/dev-lang/python/python-3.13.0-r100.ebuild index 6c78c5cb367b0..42c893fb4e747 100644 --- a/dev-lang/python/python-3.13.0-r100.ebuild +++ b/dev-lang/python/python-3.13.0-r100.ebuild @@ -368,6 +368,7 @@ src_configure() { # Fails in profiling run, passes in src_test(). -x test_capi + -x test_external_inspection ) # Arch-specific skips. See #931888 for a collection of these. diff --git a/dev-python/appdirs/appdirs-1.4.4-r3.ebuild b/dev-python/appdirs/appdirs-1.4.4-r3.ebuild index a76ea1dae722a..3ba4839c4dc46 100644 --- a/dev-python/appdirs/appdirs-1.4.4-r3.ebuild +++ b/dev-python/appdirs/appdirs-1.4.4-r3.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 diff --git a/dev-python/build/build-1.2.2_p1.ebuild b/dev-python/build/build-1.2.2_p1.ebuild index b99b7494fb84a..183bde40addce 100644 --- a/dev-python/build/build-1.2.2_p1.ebuild +++ b/dev-python/build/build-1.2.2_p1.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit PYTHON_TESTED=( python3_{10..13} pypy3 ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) inherit distutils-r1 diff --git a/dev-python/editables/editables-0.5.ebuild b/dev-python/editables/editables-0.5.ebuild index f80dba5505240..413208f02b6cc 100644 --- a/dev-python/editables/editables-0.5.ebuild +++ b/dev-python/editables/editables-0.5.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 diff --git a/dev-python/flit-core/flit-core-3.9.0.ebuild b/dev-python/flit-core/flit-core-3.9.0.ebuild index 5df54ae00ab2a..bbd23d9c0e2c4 100644 --- a/dev-python/flit-core/flit-core-3.9.0.ebuild +++ b/dev-python/flit-core/flit-core-3.9.0.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=standalone -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/freezegun/freezegun-1.5.1.ebuild b/dev-python/freezegun/freezegun-1.5.1.ebuild index 351cd57c6a9a0..e73658f3fb4ae 100644 --- a/dev-python/freezegun/freezegun-1.5.1.ebuild +++ b/dev-python/freezegun/freezegun-1.5.1.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi @@ -32,7 +32,7 @@ distutils_enable_tests pytest python_test() { local EPYTEST_DESELECT=() case ${EPYTHON} in - python3.13) + python3.13*) EPYTEST_DESELECT+=( # https://github.com/spulec/freezegun/issues/547 tests/test_datetimes.py::TestUnitTestMethodDecorator::test_method_decorator_works_on_unittest_kwarg_frozen_time diff --git a/dev-python/gpep517/gpep517-16.ebuild b/dev-python/gpep517/gpep517-16.ebuild index 0bf96edc1ec7c..9ce81ecad415f 100644 --- a/dev-python/gpep517/gpep517-16.ebuild +++ b/dev-python/gpep517/gpep517-16.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=no -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 diff --git a/dev-python/hatch-vcs/hatch-vcs-0.4.0.ebuild b/dev-python/hatch-vcs/hatch-vcs-0.4.0.ebuild index a814774845fe8..3e52b2c3cc2fb 100644 --- a/dev-python/hatch-vcs/hatch-vcs-0.4.0.ebuild +++ b/dev-python/hatch-vcs/hatch-vcs-0.4.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=hatchling -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 diff --git a/dev-python/hatchling/hatchling-1.25.0.ebuild b/dev-python/hatchling/hatchling-1.25.0.ebuild index e5d3d13324b3b..731a9a1edeab3 100644 --- a/dev-python/hatchling/hatchling-1.25.0.ebuild +++ b/dev-python/hatchling/hatchling-1.25.0.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=standalone PYTHON_TESTED=( pypy3 python3_{10..13} ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) inherit distutils-r1 diff --git a/dev-python/iniconfig/iniconfig-2.0.0.ebuild b/dev-python/iniconfig/iniconfig-2.0.0.ebuild index 3a89f831343a0..8cd35efb25c15 100644 --- a/dev-python/iniconfig/iniconfig-2.0.0.ebuild +++ b/dev-python/iniconfig/iniconfig-2.0.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=hatchling -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 diff --git a/dev-python/installer/installer-0.7.0.ebuild b/dev-python/installer/installer-0.7.0.ebuild index bf6f7a465683a..e421f44f34fd7 100644 --- a/dev-python/installer/installer-0.7.0.ebuild +++ b/dev-python/installer/installer-0.7.0.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=no -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild b/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild index b21bd4343f26b..f8ef7413b7011 100644 --- a/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild +++ b/dev-python/jaraco-classes/jaraco-classes-3.4.0.ebuild @@ -6,7 +6,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools PYPI_NO_NORMALIZE=1 PYPI_PN=${PN/-/.} -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/jaraco-context/jaraco-context-6.0.1.ebuild b/dev-python/jaraco-context/jaraco-context-6.0.1.ebuild index 751b9a71279ac..82f7990ca69b7 100644 --- a/dev-python/jaraco-context/jaraco-context-6.0.1.ebuild +++ b/dev-python/jaraco-context/jaraco-context-6.0.1.ebuild @@ -6,7 +6,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit PYPI_PN=${PN/-/.} -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/jaraco-functools/jaraco-functools-4.1.0.ebuild b/dev-python/jaraco-functools/jaraco-functools-4.1.0.ebuild index e4e184ad98045..a349740b25d0b 100644 --- a/dev-python/jaraco-functools/jaraco-functools-4.1.0.ebuild +++ b/dev-python/jaraco-functools/jaraco-functools-4.1.0.ebuild @@ -6,7 +6,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit PYPI_PN=${PN/-/.} -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild b/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild index b160fc4e1fb9e..b0f4cc114ff56 100644 --- a/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild +++ b/dev-python/jaraco-text/jaraco-text-4.0.0.ebuild @@ -6,7 +6,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit PYPI_PN=${PN/-/.} -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/more-itertools/more-itertools-10.5.0.ebuild b/dev-python/more-itertools/more-itertools-10.5.0.ebuild index b45d5bbe71c5f..f7ed9cbc11cb7 100644 --- a/dev-python/more-itertools/more-itertools-10.5.0.ebuild +++ b/dev-python/more-itertools/more-itertools-10.5.0.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit PYPI_NO_NORMALIZE=1 -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/packaging/packaging-24.1.ebuild b/dev-python/packaging/packaging-24.1.ebuild index 2fad66ebf2ef9..1f3e1b6b1bfd9 100644 --- a/dev-python/packaging/packaging-24.1.ebuild +++ b/dev-python/packaging/packaging-24.1.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pathspec/pathspec-0.12.1.ebuild b/dev-python/pathspec/pathspec-0.12.1.ebuild index b14ddd482bdf7..52c35a10189d1 100644 --- a/dev-python/pathspec/pathspec-0.12.1.ebuild +++ b/dev-python/pathspec/pathspec-0.12.1.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pexpect/files/pexpect-4.9.0-py313.patch b/dev-python/pexpect/files/pexpect-4.9.0-py313.patch new file mode 100644 index 0000000000000..838cfdd22d86c --- /dev/null +++ b/dev-python/pexpect/files/pexpect-4.9.0-py313.patch @@ -0,0 +1,37 @@ +From 95d09c54d2502d8d48f2da591089ceb6d09df056 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= +Date: Wed, 29 May 2024 12:21:52 +0200 +Subject: [PATCH] Force NO_COLOR=1 to fix test failures with Python 3.13+ REPL + +Python 3.13+ has colors now. Always setting this variable should be safe. +--- + pexpect/replwrap.py | 2 +- + tests/test_replwrap.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/pexpect/replwrap.py b/pexpect/replwrap.py +index 08dbd5e8..c8714a23 100644 +--- a/pexpect/replwrap.py ++++ b/pexpect/replwrap.py +@@ -35,7 +35,7 @@ def __init__(self, cmd_or_spawn, orig_prompt, prompt_change, + continuation_prompt=PEXPECT_CONTINUATION_PROMPT, + extra_init_cmd=None): + if isinstance(cmd_or_spawn, basestring): +- self.child = pexpect.spawn(cmd_or_spawn, echo=False, encoding='utf-8') ++ self.child = pexpect.spawn(cmd_or_spawn, echo=False, encoding='utf-8', env={'NO_COLOR': '1'}) + else: + self.child = cmd_or_spawn + if self.child.echo: +diff --git a/tests/test_replwrap.py b/tests/test_replwrap.py +index ddafa5d6..5ac782a4 100644 +--- a/tests/test_replwrap.py ++++ b/tests/test_replwrap.py +@@ -124,7 +124,7 @@ def test_no_change_prompt(self): + if platform.python_implementation() == 'PyPy': + raise unittest.SkipTest(skip_pypy) + +- child = pexpect.spawn(sys.executable, echo=False, timeout=5, encoding='utf-8') ++ child = pexpect.spawn(sys.executable, echo=False, timeout=5, encoding='utf-8', env={'NO_COLOR': '1'}) + # prompt_change=None should mean no prompt change + py = replwrap.REPLWrapper(child, u">>> ", prompt_change=None, + continuation_prompt=u"... ") diff --git a/dev-python/pexpect/pexpect-4.9.0.ebuild b/dev-python/pexpect/pexpect-4.9.0.ebuild index 93f20c1b16ab0..a6a72d9e35dc9 100644 --- a/dev-python/pexpect/pexpect-4.9.0.ebuild +++ b/dev-python/pexpect/pexpect-4.9.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) PYTHON_REQ_USE="threads(+)" inherit distutils-r1 pypi @@ -29,6 +29,11 @@ distutils_enable_tests pytest distutils_enable_sphinx doc \ dev-python/sphinxcontrib-github-alt +PATCHES=( + # https://github.com/pexpect/pexpect/pull/794 + "${FILESDIR}/${P}-py313.patch" +) + src_test() { # workaround new readline defaults echo "set enable-bracketed-paste off" > "${T}"/inputrc || die @@ -47,16 +52,6 @@ python_test() { tests/test_env.py::TestCaseEnv::test_spawn_uses_env ) - case ${EPYTHON} in - python3.13) - EPYTEST_DESELECT+=( - # TODO: changes in python3.13's prompt? - tests/test_replwrap.py::REPLWrapTestCase::test_python - tests/test_replwrap.py::REPLWrapTestCase::test_no_change_prompt - ) - ;; - esac - local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 epytest } diff --git a/dev-python/platformdirs/platformdirs-4.3.6.ebuild b/dev-python/platformdirs/platformdirs-4.3.6.ebuild index a67ec460cbe7a..d1f6244a070ec 100644 --- a/dev-python/platformdirs/platformdirs-4.3.6.ebuild +++ b/dev-python/platformdirs/platformdirs-4.3.6.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pluggy/pluggy-1.5.0.ebuild b/dev-python/pluggy/pluggy-1.5.0.ebuild index fd1a0a67e5a44..f9e611044092c 100644 --- a/dev-python/pluggy/pluggy-1.5.0.ebuild +++ b/dev-python/pluggy/pluggy-1.5.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/portend/portend-3.2.0.ebuild b/dev-python/portend/portend-3.2.0.ebuild index 7f55187e17bec..3a98b2d469644 100644 --- a/dev-python/portend/portend-3.2.0.ebuild +++ b/dev-python/portend/portend-3.2.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pretend/pretend-1.0.9-r2.ebuild b/dev-python/pretend/pretend-1.0.9-r2.ebuild index ee9ec29d01501..9359feb683d7f 100644 --- a/dev-python/pretend/pretend-1.0.9-r2.ebuild +++ b/dev-python/pretend/pretend-1.0.9-r2.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 diff --git a/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild b/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild index cd49d3d541aea..32121931e6d33 100644 --- a/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild +++ b/dev-python/ptyprocess/ptyprocess-0.7.0-r1.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild index 3853b5b222816..98e5a886f00e9 100644 --- a/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild +++ b/dev-python/pyproject-hooks/pyproject-hooks-1.2.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/pytest-freezer/pytest-freezer-0.4.8.ebuild b/dev-python/pytest-freezer/pytest-freezer-0.4.8.ebuild index a3fb50286042c..f347fbb4c4dae 100644 --- a/dev-python/pytest-freezer/pytest-freezer-0.4.8.ebuild +++ b/dev-python/pytest-freezer/pytest-freezer-0.4.8.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/pytest-mock/pytest-mock-3.14.0.ebuild b/dev-python/pytest-mock/pytest-mock-3.14.0.ebuild index 8aebb3a323d87..9108b4a8bdd35 100644 --- a/dev-python/pytest-mock/pytest-mock-3.14.0.ebuild +++ b/dev-python/pytest-mock/pytest-mock-3.14.0.ebuild @@ -6,7 +6,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools PYPI_NO_NORMALIZE=1 PYTHON_TESTED=( python3_{10..13} pypy3 ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/pytest/pytest-8.3.3.ebuild b/dev-python/pytest/pytest-8.3.3.ebuild index 408c5622c9f84..33f394085d54b 100644 --- a/dev-python/pytest/pytest-8.3.3.ebuild +++ b/dev-python/pytest/pytest-8.3.3.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools PYTHON_TESTED=( python3_{10..13} pypy3 ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild b/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild index 6b3ced20bfc3e..74059ed6728cd 100644 --- a/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild +++ b/dev-python/python-dateutil/python-dateutil-2.9.0_p0.ebuild @@ -5,7 +5,8 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools PYPI_NO_NORMALIZE=1 -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_FULLY_TESTED=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( "${PYTHON_FULLY_TESTED[@]}" python3_13t ) inherit distutils-r1 pypi @@ -28,7 +29,9 @@ BDEPEND=" dev-python/setuptools-scm[${PYTHON_USEDEP}] test? ( dev-python/freezegun[${PYTHON_USEDEP}] - dev-python/hypothesis[${PYTHON_USEDEP}] + $(python_gen_cond_dep ' + dev-python/hypothesis[${PYTHON_USEDEP}] + ' "${PYTHON_FULLY_TESTED[@]}") ) " @@ -45,3 +48,15 @@ python_prepare_all() { distutils-r1_python_prepare_all } + +python_test() { + local EPYTEST_IGNORE=() + if ! has_version "dev-python/hypothesis[${PYTHON_USEDEP}]"; then + EPYTEST_IGNORE+=( + tests/property + ) + fi + + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest +} diff --git a/dev-python/setuptools-scm/metadata.xml b/dev-python/setuptools-scm/metadata.xml index c5b76d75363f6..c42621375597f 100644 --- a/dev-python/setuptools-scm/metadata.xml +++ b/dev-python/setuptools-scm/metadata.xml @@ -8,6 +8,6 @@ setuptools-scm - pypa/setuptools_scm + pypa/setuptools-scm diff --git a/dev-python/setuptools-scm/setuptools-scm-8.1.0.ebuild b/dev-python/setuptools-scm/setuptools-scm-8.1.0.ebuild index 57a099a021e76..21492431d57d4 100644 --- a/dev-python/setuptools-scm/setuptools-scm-8.1.0.ebuild +++ b/dev-python/setuptools-scm/setuptools-scm-8.1.0.ebuild @@ -5,13 +5,13 @@ EAPI=8 DISTUTILS_USE_PEP517=standalone -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi DESCRIPTION="Manage versions by scm tags via setuptools" HOMEPAGE=" - https://github.com/pypa/setuptools_scm/ + https://github.com/pypa/setuptools-scm/ https://pypi.org/project/setuptools-scm/ " diff --git a/dev-python/setuptools/setuptools-74.1.3.ebuild b/dev-python/setuptools/setuptools-74.1.3.ebuild index 83bdd551d3159..652157bb1a0ed 100644 --- a/dev-python/setuptools/setuptools-74.1.3.ebuild +++ b/dev-python/setuptools/setuptools-74.1.3.ebuild @@ -8,7 +8,7 @@ EAPI=8 DISTUTILS_USE_PEP517=standalone PYTHON_TESTED=( python3_{10..13} pypy3 ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) PYTHON_REQ_USE="xml(+)" inherit distutils-r1 pypi diff --git a/dev-python/setuptools/setuptools-75.1.0.ebuild b/dev-python/setuptools/setuptools-75.1.0.ebuild index df219ec843475..e04c2c70c4cd2 100644 --- a/dev-python/setuptools/setuptools-75.1.0.ebuild +++ b/dev-python/setuptools/setuptools-75.1.0.ebuild @@ -8,7 +8,7 @@ EAPI=8 DISTUTILS_USE_PEP517=standalone PYTHON_TESTED=( python3_{10..13} pypy3 ) -PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_13t ) PYTHON_REQ_USE="xml(+)" inherit distutils-r1 pypi diff --git a/dev-python/six/six-1.16.0-r1.ebuild b/dev-python/six/six-1.16.0-r1.ebuild index 4554e1d0fd4a8..d7f93534815aa 100644 --- a/dev-python/six/six-1.16.0-r1.ebuild +++ b/dev-python/six/six-1.16.0-r1.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi @@ -22,14 +22,14 @@ distutils_enable_sphinx documentation --no-autodoc distutils_enable_tests pytest python_test() { - local EPYTEST_DESELECT=() + local EPYTEST_DESELECT=( + # requires USE=gdb on CPython, no point in forcing the dep + # also missing on PyPy + 'test_six.py::test_move_items[dbm_ndbm]' + ) + case ${EPYTHON} in - pypy3) - EPYTEST_DESELECT+=( - 'test_six.py::test_move_items[dbm_ndbm]' - ) - ;; - python3.13) + python3.13*) EPYTEST_DESELECT+=( 'test_six.py::test_move_items[tkinter_tix]' ) diff --git a/dev-python/tempora/tempora-5.7.0.ebuild b/dev-python/tempora/tempora-5.7.0.ebuild index 10b1913f46c10..7b8fa416b2ac5 100644 --- a/dev-python/tempora/tempora-5.7.0.ebuild +++ b/dev-python/tempora/tempora-5.7.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_TESTED=( pypy3 python3_{10..13} ) +PYTHON_TESTED=( pypy3 python3_{10..13} python3_13t ) PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) inherit distutils-r1 pypi diff --git a/dev-python/testpath/testpath-0.6.0.ebuild b/dev-python/testpath/testpath-0.6.0.ebuild index f1f17b0dcdd3d..b53c282bb015a 100644 --- a/dev-python/testpath/testpath-0.6.0.ebuild +++ b/dev-python/testpath/testpath-0.6.0.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 diff --git a/dev-python/trove-classifiers/trove-classifiers-2024.10.13.ebuild b/dev-python/trove-classifiers/trove-classifiers-2024.10.13.ebuild index 0fb0bac459d45..b19f32b12f716 100644 --- a/dev-python/trove-classifiers/trove-classifiers-2024.10.13.ebuild +++ b/dev-python/trove-classifiers/trove-classifiers-2024.10.13.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( pypy3 python3_{10..13} ) +PYTHON_COMPAT=( pypy3 python3_{10..13} python3_13t ) inherit distutils-r1 pypi diff --git a/dev-python/typing-extensions/typing-extensions-4.12.2.ebuild b/dev-python/typing-extensions/typing-extensions-4.12.2.ebuild index 56e5a8efce66e..483ce343ed9a6 100644 --- a/dev-python/typing-extensions/typing-extensions-4.12.2.ebuild +++ b/dev-python/typing-extensions/typing-extensions-4.12.2.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi diff --git a/dev-python/wheel/files/wheel-0.44.0-ft.patch b/dev-python/wheel/files/wheel-0.44.0-ft.patch new file mode 100644 index 0000000000000..600318dc275ef --- /dev/null +++ b/dev-python/wheel/files/wheel-0.44.0-ft.patch @@ -0,0 +1,38 @@ +From d30f834fcec7ecdbb74e263789db2fbe9ff37e99 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= +Date: Fri, 11 Oct 2024 16:12:50 +0200 +Subject: [PATCH] Skip abi3 tests when freethreading Python build is used + +Skip the tests using abi3 extension when the freethreading build is +used, as Python 3.13 freethreading does not support the limited API +and its use results in a build error. + +Fixes #636 +--- + tests/conftest.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/tests/conftest.py b/tests/conftest.py +index 5ee84da..d5bd356 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -7,6 +7,7 @@ from __future__ import annotations + import os.path + import subprocess + import sys ++import sysconfig + + import pytest + +@@ -22,7 +23,7 @@ def wheels_and_eggs(tmp_path_factory): + "unicode.dist", + ) + +- if sys.platform != "win32": ++ if sys.platform != "win32" and sysconfig.get_config_var("Py_GIL_DISABLED") != 1: + # ABI3 extensions don't really work on Windows + test_distributions += ("abi3extension.dist",) + +-- +2.47.0 + diff --git a/dev-python/wheel/wheel-0.44.0.ebuild b/dev-python/wheel/wheel-0.44.0.ebuild index effd34bd7d1a8..aa0df30e0b2cc 100644 --- a/dev-python/wheel/wheel-0.44.0.ebuild +++ b/dev-python/wheel/wheel-0.44.0.ebuild @@ -5,7 +5,7 @@ EAPI=8 DISTUTILS_USE_PEP517=flit -PYTHON_COMPAT=( python3_{10..13} pypy3 ) +PYTHON_COMPAT=( python3_{10..13} python3_13t pypy3 ) inherit distutils-r1 pypi @@ -36,10 +36,20 @@ EPYTEST_DESELECT=( distutils_enable_tests pytest src_prepare() { + local PATCHES=( + # https://github.com/pypa/wheel/pull/637 + "${FILESDIR}/${P}-ft.patch" + ) + + distutils-r1_src_prepare + # unbundle packaging rm -r src/wheel/vendored || die sed -i -e 's:\.vendored\.::' src/wheel/*.py || die sed -i -e 's:wheel\.vendored\.::' tests/*.py || die - - distutils-r1_src_prepare +} + +python_test() { + local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1 + epytest } diff --git a/eclass/distutils-r1.eclass b/eclass/distutils-r1.eclass index c3a7d112b03f9..7ab8dcae3265a 100644 --- a/eclass/distutils-r1.eclass +++ b/eclass/distutils-r1.eclass @@ -1494,9 +1494,16 @@ distutils-r1_python_compile() { # that this relies on the assumption that we're building # from the oldest to the newest implementation, # and the wheels are forward-compatible. - if [[ ( ! ${DISTUTILS_EXT} && ${whl} == *py3-none-any* ) || - ( ${EPYTHON} == python* && ${whl} == *-abi3-* ) ]] - then + if [[ + ( ! ${DISTUTILS_EXT} && ${whl} == *py3-none-any* ) || + ( + ${EPYTHON} == python* && + # freethreading does not support stable ABI + # at the moment + ${EPYTHON} != *t && + ${whl} == *-abi3-* + ) + ]]; then distutils_wheel_install "${BUILD_DIR}/install" "${whl}" return fi diff --git a/eclass/python-r1.eclass b/eclass/python-r1.eclass index 18f4dadfdd378..9b03a269e88b1 100644 --- a/eclass/python-r1.eclass +++ b/eclass/python-r1.eclass @@ -129,10 +129,6 @@ inherit multibuild python-utils-r1 # depend on another Python package being built for the same Python # implementations. # -# The generate USE-flag list is compatible with packages using python-r1 -# and python-distutils-ng eclasses. It must not be used on packages -# using python.eclass. -# # Example use: # @CODE # RDEPEND="dev-python/foo[${PYTHON_USEDEP}]" diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass index 796be7ab456a5..555b6c561a18e 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -41,6 +41,7 @@ inherit multiprocessing toolchain-funcs _PYTHON_ALL_IMPLS=( pypy3 python3_{10..13} + python3_13t ) readonly _PYTHON_ALL_IMPLS @@ -136,7 +137,7 @@ _python_set_impls() { # please keep them in sync with _PYTHON_ALL_IMPLS # and _PYTHON_HISTORICAL_IMPLS case ${i} in - pypy3|python3_9|python3_1[0-3]) + pypy3|python3_9|python3_1[0-3]|python3_13t) ;; jython2_7|pypy|pypy1_[89]|pypy2_0|python2_[5-7]|python3_[1-9]) obsolete+=( "${i}" ) @@ -232,7 +233,7 @@ _python_impl_matches() { return 0 ;; 3.8|3.9|3.1[1-3]) - [[ ${impl} == python${pattern/./_} ]] && return 0 + [[ ${impl%t} == python${pattern/./_} ]] && return 0 ;; *) # unify value style to allow lax matching @@ -435,7 +436,7 @@ _python_export() { or "") EOF ) - val=${PYTHON}${flags}-config + val=${PYTHON%t}${flags}-config ;; *) die "${impl}: obtaining ${var} not supported" diff --git a/eclass/tests/python-utils-r1.sh b/eclass/tests/python-utils-r1.sh index 93cea324a3df0..732f53381b22b 100755 --- a/eclass/tests/python-utils-r1.sh +++ b/eclass/tests/python-utils-r1.sh @@ -64,7 +64,7 @@ tmpfile=$(mktemp) inherit python-utils-r1 -for minor in {10..13}; do +for minor in {10..13} 13t; do ebegin "Testing python3.${minor}" eindent test_var EPYTHON "python3_${minor}" "python3.${minor}" @@ -72,9 +72,9 @@ for minor in {10..13}; do if [[ -x /usr/bin/python3.${minor} ]]; then abiflags=$(/usr/bin/python3.${minor} -c 'import sysconfig; print(sysconfig.get_config_var("ABIFLAGS"))') test_var PYTHON_SITEDIR "python3_${minor}" "/usr/lib*/python3.${minor}/site-packages" - test_var PYTHON_INCLUDEDIR "python3_${minor}" "/usr/include/python3.${minor}${abiflags}" - test_var PYTHON_LIBPATH "python3_${minor}" "/usr/lib*/libpython3.${minor}${abiflags}$(get_libname)" - test_var PYTHON_CONFIG "python3_${minor}" "/usr/bin/python3.${minor}${abiflags}-config" + test_var PYTHON_INCLUDEDIR "python3_${minor}" "/usr/include/python3.${minor%t}${abiflags}" + test_var PYTHON_LIBPATH "python3_${minor}" "/usr/lib*/libpython3.${minor%t}${abiflags}$(get_libname)" + test_var PYTHON_CONFIG "python3_${minor}" "/usr/bin/python3.${minor%t}${abiflags}-config" test_var PYTHON_CFLAGS "python3_${minor}" "*-I/usr/include/python3.${minor}*" test_var PYTHON_LIBS "python3_${minor}" "*-lpython3.${minor}*" fi @@ -105,13 +105,13 @@ for minor in {10..13}; do tend ${?} # these tests apply to py3.8+ only - if [[ ${minor} -ge 8 ]]; then + if [[ ${minor%t} -ge 8 ]]; then tbegin "Testing that _python_verify_patterns accepts stdlib version" - ( _python_verify_patterns "3.${minor}" ) + ( _python_verify_patterns "3.${minor%t}" ) tend ${?} tbegin "Testing _python_impl_matches on stdlib version" - _python_impl_matches "python3_${minor}" "3.${minor}" + _python_impl_matches "python3_${minor}" "3.${minor%t}" tend ${?} fi diff --git a/metadata/install-qa-check.d/60python-site b/metadata/install-qa-check.d/60python-site index facfb54f1b3cd..1a4ee0ca9f4e8 100644 --- a/metadata/install-qa-check.d/60python-site +++ b/metadata/install-qa-check.d/60python-site @@ -53,7 +53,7 @@ python_site_check() { # check for packages installing outside site-packages case ${CATEGORY}/${PN} in - dev-lang/python|dev-python/pypy*|dev-python/python-tests) + dev-lang/python|dev-lang/python-freethreading|dev-python/pypy*|dev-python/python-tests) ;; *) while IFS= read -d $'\0' -r f; do diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force index 9d51b4e497030..800efe47743ba 100644 --- a/profiles/base/package.use.force +++ b/profiles/base/package.use.force @@ -253,6 +253,7 @@ dev-lang/python-exec python_targets_python3_10 dev-lang/python-exec python_targets_python3_11 dev-lang/python-exec python_targets_python3_12 dev-lang/python-exec python_targets_python3_13 +dev-lang/python-exec python_targets_python3_13t dev-lang/python-exec python_targets_pypy3 # Zac Medico (2010-10-20) diff --git a/profiles/base/use.stable.mask b/profiles/base/use.stable.mask index 9167592b9e10a..d1197864f26b0 100644 --- a/profiles/base/use.stable.mask +++ b/profiles/base/use.stable.mask @@ -16,6 +16,8 @@ llvm_slot_19 # Python implementations without stable keywords. python_targets_python3_13 python_single_target_python3_13 +python_targets_python3_13t +python_single_target_python3_13t python_targets_pypy3 python_single_target_pypy3 diff --git a/profiles/desc/python_single_target.desc b/profiles/desc/python_single_target.desc index 427e206dd196e..d168b301a8d8a 100644 --- a/profiles/desc/python_single_target.desc +++ b/profiles/desc/python_single_target.desc @@ -7,4 +7,5 @@ python3_10 - Build for Python 3.10 only python3_11 - Build for Python 3.11 only python3_12 - Build for Python 3.12 only python3_13 - Build for Python 3.13 only +python3_13t - Build for Python 3.13 freethreading only pypy3 - Build for PyPy3 only diff --git a/profiles/desc/python_targets.desc b/profiles/desc/python_targets.desc index b48cc57e99fb9..298b54067be7f 100644 --- a/profiles/desc/python_targets.desc +++ b/profiles/desc/python_targets.desc @@ -7,4 +7,5 @@ python3_10 - Build with Python 3.10 python3_11 - Build with Python 3.11 python3_12 - Build with Python 3.12 python3_13 - Build with Python 3.13 +python3_13t - Build with Python 3.13 freethreading pypy3 - Build with PyPy3 diff --git a/sci-mathematics/flint/files/flint-3.1.3_p1-fix-pc-location.patch b/sci-mathematics/flint/files/flint-3.1.3_p1-fix-pc-location.patch new file mode 100644 index 0000000000000..82c9fc27d8f29 --- /dev/null +++ b/sci-mathematics/flint/files/flint-3.1.3_p1-fix-pc-location.patch @@ -0,0 +1,26 @@ +From f4e0dfda90f6574048578f112bea1013d54f0987 Mon Sep 17 00:00:00 2001 +From: Michael Orlitzky +Date: Sun, 10 Mar 2024 21:48:51 -0400 +Subject: [PATCH] CMakeLists.txt: install the pkg-config file to the configured + libdir + +Currently it installs to lib/pkgconfig, which can be incorrect on +systems where (for example) the normal libdir is lib64 and "lib" is +reserved for 32-bit libraries. +--- + CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 30935cef47..d8dfee38df 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -537,7 +537,7 @@ set(PACKAGE_NAME ${PROJECT_NAME}) + set(PACKAGE_VERSION ${PROJECT_VERSION}) + configure_file(flint.pc.in flint.pc @ONLY) + +-install(FILES ${CMAKE_CURRENT_BINARY_DIR}/flint.pc DESTINATION lib/pkgconfig) ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/flint.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + + if(BUILD_TESTING) + set(FLINT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src) # To get src/test/main diff --git a/sci-mathematics/flint/flint-3.1.3_p1.ebuild b/sci-mathematics/flint/flint-3.1.3_p1-r1.ebuild similarity index 97% rename from sci-mathematics/flint/flint-3.1.3_p1.ebuild rename to sci-mathematics/flint/flint-3.1.3_p1-r1.ebuild index 4f60961ecba29..bca7c62b7b66e 100644 --- a/sci-mathematics/flint/flint-3.1.3_p1.ebuild +++ b/sci-mathematics/flint/flint-3.1.3_p1-r1.ebuild @@ -48,6 +48,7 @@ DOCS="AUTHORS README.md doc/source/*.rst" PATCHES=( "${FILESDIR}/flint-3.0.1-find-cblas.patch" "${FILESDIR}/flint-3.1.3_p1-c99-I.patch" + "${FILESDIR}/flint-3.1.3_p1-fix-pc-location.patch" ) src_configure() {