summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-06 20:29:13 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-05-06 20:29:13 +0000
commit1cac02e9d606a290b8620320118b320a0050cde9 (patch)
treeb5e67d8537e6b3dbba65a980b54dd4ff273d9729 /dev-python
parentbf2303e6bf93b4b9382690091cced410b34f6545 (diff)
downloadbaldeagleos-repo-1cac02e9d606a290b8620320118b320a0050cde9.tar.gz
baldeagleos-repo-1cac02e9d606a290b8620320118b320a0050cde9.tar.xz
baldeagleos-repo-1cac02e9d606a290b8620320118b320a0050cde9.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.38.9.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.38.9.ebuild67
-rw-r--r--dev-python/google-auth/Manifest1
-rw-r--r--dev-python/google-auth/google-auth-2.40.0.ebuild73
-rw-r--r--dev-python/ipywidgets/Manifest1
-rw-r--r--dev-python/ipywidgets/ipywidgets-8.1.7.ebuild57
-rw-r--r--dev-python/jupyterlab-widgets/Manifest1
-rw-r--r--dev-python/jupyterlab-widgets/jupyterlab-widgets-3.0.15.ebuild24
-rw-r--r--dev-python/knowit/Manifest2
-rw-r--r--dev-python/knowit/files/knowit-0.5.6-no-pint.patch209
-rw-r--r--dev-python/knowit/knowit-0.5.6.ebuild69
-rw-r--r--dev-python/knowit/metadata.xml11
-rw-r--r--dev-python/langdetect/Manifest2
-rw-r--r--dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch13
-rw-r--r--dev-python/langdetect/langdetect-1.0.9.ebuild6
-rw-r--r--dev-python/langdetect/metadata.xml10
-rw-r--r--dev-python/meson-python/Manifest1
-rw-r--r--dev-python/meson-python/meson-python-0.18.0.ebuild68
-rw-r--r--dev-python/narwhals/Manifest1
-rw-r--r--dev-python/narwhals/files/narwhals-1.38.0-opt-polars.patch32
-rw-r--r--dev-python/narwhals/narwhals-1.38.0.ebuild46
-rw-r--r--dev-python/nltk/Manifest7
-rw-r--r--dev-python/nltk/files/python-3.12.patch282
-rw-r--r--dev-python/nltk/metadata.xml11
-rw-r--r--dev-python/nltk/nltk-3.8.1.ebuild49
-rw-r--r--dev-python/nltk/nltk-3.9.1.ebuild33
-rw-r--r--dev-python/pytest-timeout/Manifest1
-rw-r--r--dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild50
-rw-r--r--dev-python/python-stdnum/Manifest1
-rw-r--r--dev-python/python-stdnum/python-stdnum-2.0.ebuild34
-rw-r--r--dev-python/pytools/Manifest1
-rw-r--r--dev-python/pytools/pytools-2025.1.3.ebuild31
-rw-r--r--dev-python/trakit/Manifest1
-rw-r--r--dev-python/trakit/metadata.xml11
-rw-r--r--dev-python/trakit/trakit-0.2.2.ebuild39
-rw-r--r--dev-python/virtualenv/Manifest1
-rw-r--r--dev-python/virtualenv/files/virtualenv-20.31.1-ensurepip.patch34
-rw-r--r--dev-python/virtualenv/virtualenv-20.31.1.ebuild138
40 files changed, 1439 insertions, 34 deletions
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index 534a2f143c32..2659b76b01a0 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,3 +1,4 @@
DIST boto3-1.37.37.gh.tar.gz 930327 BLAKE2B 93ed4e903189a9620f13e71fe64557ebcfa5c696688b4a21fc4de0f9d21f51fd3b9c9dafa4a5dc91fc88165c14207b17b3f121e9eebdf1c1ab7e55472573d2ec SHA512 e19700633ccf6be76ab1baa0811c24d36aba7e0b8f1933fc10d1dc67d73ec0cd66a4c45ace1f2bdf815c3b35ffafaff2ce7ce9a4678e7f57984039f96d0f9fa0
DIST boto3-1.38.3.gh.tar.gz 934010 BLAKE2B f5008a63aec620385e06c15e97ea37335bba190e5a29920c14389ae0dfc0e09a70ce70f8b50c0d25feda3defd9e855739305d19df7759688c156f53fc698b533 SHA512 8f300e38c7912f5df00431c1b70494521ac49500512b4aba7dc18f6bf0e570508d6a00fe8a98eb3c8607af39744a67e3b47d69507dbaf25d44dd02085f24bf95
DIST boto3-1.38.8.gh.tar.gz 937130 BLAKE2B 4158573a032957c33f62c6406937a45956f4ccf972be4a223e16a327b0b476402a1e7bf7d9b6a5b83005fc324f6c0062ed73008972cabed9247790225c4d4e5a SHA512 3c3854ed132ad4c81cd868848a370cdc73101ac3c578f8ae70bc53c9a98b1d85dcd364258027adef976b3c6d220aa45f865928c055c9320d3a268e0e29d5af63
+DIST boto3-1.38.9.gh.tar.gz 937730 BLAKE2B 6b1a68095601d9b32be0679171a73b204897a7f632c1825ee203d27b46c625b196739b9c6ed8f19e84e0f0d2ba3a777539d9474cbaaa526fd499655e62ce9def SHA512 37960c90bb8de6328dc08cabb98a71e0dbb9303137410a1e44efdd650d6d0009398a4c4fb75ab53f8c8dfa7f566925c03de10012092967e661157f6bdc12e583
diff --git a/dev-python/boto3/boto3-1.38.9.ebuild b/dev-python/boto3/boto3-1.38.9.ebuild
new file mode 100644
index 000000000000..b862f479d876
--- /dev/null
+++ b/dev-python/boto3/boto3-1.38.9.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="The AWS SDK for Python"
+HOMEPAGE="
+ https://github.com/boto/boto3/
+ https://pypi.org/project/boto3/
+"
+SRC_URI="
+ https://github.com/boto/boto3/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ >=dev-python/botocore-${PV}[${PYTHON_USEDEP}]
+ >=dev-python/jmespath-0.7.1[${PYTHON_USEDEP}]
+ >=dev-python/s3transfer-0.12.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ # don't lock versions to narrow ranges
+ sed -e '/botocore/ d' \
+ -e '/jmespath/ d' \
+ -e '/s3transfer/ d' \
+ -i setup.py || die
+
+ # do not rely on bundled deps in botocore (sic!)
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index ea92348a24a6..276b05bb9c3c 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,3 +1,4 @@
DIST botocore-1.37.37.gh.tar.gz 14563135 BLAKE2B 290689f13333ab7ebdbac0bccf6568035776482dbab62c542a41ce6bf93b9d5e01400526c50534fb068798dc5626408c039f8746f091fe881cb70629c6ccd6e4 SHA512 3e020f6f264ef19a71f812733536812abe92e5998f3c19766782e01cdd235a17648b330bdb64289ea8b87a520625e0c7ece9436e014ade111d66bc4181f5bec9
DIST botocore-1.38.3.gh.tar.gz 14578552 BLAKE2B 4766db1ba2651ebe65c79f8a37c91cf95875a20c0cc51c1886cd394b90d50109738daa79b398e0c4b80031cfab69e1338dfaafbc0ae796fffa3348f6b13fc1ce SHA512 ad69e119d5bbc98a0c14c1c927badeecc1f57d31305e6a07af41d4d4bf6755f5abc150e36321f71b9495221ad93052d84a1dc964fb9ef6fdd791d4c37e75a01a
DIST botocore-1.38.8.gh.tar.gz 14606167 BLAKE2B cb92f6014349f5188d62ddeb043e7532c50c7edc984cabae918825cdace981694c37ba656afcbbb64e65e275da4980d5f256a945bbcc63f9609272b08690c3d5 SHA512 bc9096051fde740a908ef0912a0c205595e7df653a349c167f616a788423578ba6b3aed6fe6213f528faa32b1c946abf0ac66dd81afdc05d41d12a4af4f7e818
+DIST botocore-1.38.9.gh.tar.gz 14612563 BLAKE2B 10a0e43846393c06c808e306cde1398ea9374712d07b71d16270cd3238d3063f66ff532fab465acb5a87065002b7ca7394d0c77a25c83b9f8b8ecad7823042a2 SHA512 748c373a1be84a123968444316de7ab6f34b548d7619183d23ae07d0b0aeeeebc8ba1d25bb5517f0491144f7578fa9a7e9fbca066f6aa0da7b2d7439138bb8fd
diff --git a/dev-python/botocore/botocore-1.38.9.ebuild b/dev-python/botocore/botocore-1.38.9.ebuild
new file mode 100644
index 000000000000..df85ee0d220c
--- /dev/null
+++ b/dev-python/botocore/botocore-1.38.9.ebuild
@@ -0,0 +1,67 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Low-level, data-driven core of boto 3"
+HOMEPAGE="
+ https://github.com/boto/botocore/
+ https://pypi.org/project/botocore/
+"
+SRC_URI="
+ https://github.com/boto/botocore/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+RDEPEND="
+ <dev-python/jmespath-2[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ >=dev-python/urllib3-1.25.4[${PYTHON_USEDEP}]
+"
+# unbundled packages
+RDEPEND+="
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+src_prepare() {
+ # unpin deps
+ sed -i -e "s:>=.*':':" setup.py || die
+
+ # unbundle deps
+ rm -r botocore/vendored || die
+ find -name '*.py' -exec sed -i \
+ -e 's:from botocore[.]vendored import:import:' \
+ -e 's:from botocore[.]vendored[.]:from :' \
+ {} + || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # rely on bundled six
+ tests/functional/test_six_imports.py::test_no_bare_six_imports
+ tests/functional/test_six_threading.py::test_six_thread_safety
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/google-auth/Manifest b/dev-python/google-auth/Manifest
index 0ad35594e04a..2284648458d3 100644
--- a/dev-python/google-auth/Manifest
+++ b/dev-python/google-auth/Manifest
@@ -1 +1,2 @@
DIST google_auth-2.39.0.tar.gz 274834 BLAKE2B f924291ba51799c4560849f61c30419110c786bfe12bade26ecd6940c952ad91a515770997008a2dd0b82f42771695500b951e036b2387b43e57c76ca2e6e04e SHA512 3bee0b649fdec2e9972afc47cd863f58c2b5e451a3970d85674d3d0572b1cbfd39d355af8c7648bb79aea2b41bd177da03dd01cb146681ed651de2d06bf355c0
+DIST google_auth-2.40.0.tar.gz 280934 BLAKE2B a70b27a417e08e7d0edbc0ec09049aca6035582c9dc0bcc9b0d29acbc17f137beb2a9c145e783b356720b3327fd426025bef236a63dab83e98399a9bfd0dda36 SHA512 0e4587bde4076fcf8f905f1f8de6aa3b145424be2b8a36108f4f1fad12f024ea47e1b0bc5c877fa119b6a0dd7fa7fcb6a48e6cfbe4dacf72d04c23938cd66dbb
diff --git a/dev-python/google-auth/google-auth-2.40.0.ebuild b/dev-python/google-auth/google-auth-2.40.0.ebuild
new file mode 100644
index 000000000000..380871c78686
--- /dev/null
+++ b/dev-python/google-auth/google-auth-2.40.0.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Google Authentication Library"
+HOMEPAGE="
+ https://github.com/googleapis/google-auth-library-python/
+ https://pypi.org/project/google-auth/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ <dev-python/cachetools-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-0.1.7[${PYTHON_USEDEP}]
+ >=dev-python/pyasn1-modules-0.2.1[${PYTHON_USEDEP}]
+ >=dev-python/rsa-3.1.4[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/aioresponses[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-38.0.3[${PYTHON_USEDEP}]
+ dev-python/flask[${PYTHON_USEDEP}]
+ dev-python/freezegun[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/moto[${PYTHON_USEDEP}]
+ >=dev-python/pyjwt-2.0[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/pytest-asyncio[${PYTHON_USEDEP}]
+ dev-python/pytest-localserver[${PYTHON_USEDEP}]
+ dev-python/pyu2f[${PYTHON_USEDEP}]
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/responses[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # unpin deps
+ sed -i -e 's:,<[0-9.]*::' setup.py || die
+}
+
+python_compile() {
+ distutils-r1_python_compile
+ find "${BUILD_DIR}" -name '*.pth' -delete || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # tests are broken with up-to-date pyopenssl
+ tests/transport/test__mtls_helper.py::TestDecryptPrivateKey::test_success
+ )
+ local EPYTEST_IGNORE=(
+ # these are compatibility tests with oauth2client
+ # disable them to unblock removal of that package
+ tests/test__oauth2client.py
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ distutils_write_namespace google
+ epytest -p asyncio
+}
diff --git a/dev-python/ipywidgets/Manifest b/dev-python/ipywidgets/Manifest
index f9053a0862ab..373dfa738f47 100644
--- a/dev-python/ipywidgets/Manifest
+++ b/dev-python/ipywidgets/Manifest
@@ -1 +1,2 @@
DIST ipywidgets-8.1.6.tar.gz 116764 BLAKE2B 74e3b82cfdbeec3da00acf1fc55f4351975f431e7b62fabaa9871d9240880aec77c28e67d79cc17ca01e3f979ee6a7a4be1f1fe22be4a5d72c8d118af8e43ce5 SHA512 4997cf17a99dad022e3f625a1392db3f6edd82e829c0aa6eeb140a8554f8ba5e53a6ba745d70a117ab25577a085d3fe103b4cec022a24618b862b89e508ebe71
+DIST ipywidgets-8.1.7.tar.gz 116721 BLAKE2B 425557d840d4ddb904d22b0680a7e4ad6156adc3e129f0a95b0e8d2c55de0055b53bba213e40452af11da061d51878c03257fe38adaa3e6f7d102bbbe14033e0 SHA512 8085be87f0c2f2c334e9965d21e16c71009b260216e84ff1e5faaa81a5b9f0709a28150a8eac52bed7aeed4a3dc87b0d0632ae4ff62b15512be521b2e5be22aa
diff --git a/dev-python/ipywidgets/ipywidgets-8.1.7.ebuild b/dev-python/ipywidgets/ipywidgets-8.1.7.ebuild
new file mode 100644
index 000000000000..7f0047f02819
--- /dev/null
+++ b/dev-python/ipywidgets/ipywidgets-8.1.7.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="IPython HTML widgets for Jupyter"
+HOMEPAGE="
+ https://ipywidgets.readthedocs.io/
+ https://github.com/jupyter-widgets/ipywidgets/
+ https://pypi.org/project/ipywidgets/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/comm-0.1.3[${PYTHON_USEDEP}]
+ >=dev-python/ipython-genutils-0.2.0[${PYTHON_USEDEP}]
+ >=dev-python/traitlets-4.3.1[${PYTHON_USEDEP}]
+ >=dev-python/widgetsnbextension-4.0.14[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-widgets-3.0.15[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/ipykernel[${PYTHON_USEDEP}]
+ dev-python/jsonschema[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ >=dev-python/ipython-6.1.0[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=()
+
+ case ${EPYTHON} in
+ pypy3*)
+ EPYTEST_DESELECT+=(
+ # https://github.com/pypy/pypy/issues/4892
+ ipywidgets/widgets/tests/test_interaction.py::test_interact_noinspect
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest
+}
diff --git a/dev-python/jupyterlab-widgets/Manifest b/dev-python/jupyterlab-widgets/Manifest
index 1c06394e8eba..a986329bb3b3 100644
--- a/dev-python/jupyterlab-widgets/Manifest
+++ b/dev-python/jupyterlab-widgets/Manifest
@@ -1 +1,2 @@
DIST jupyterlab_widgets-3.0.14.tar.gz 203815 BLAKE2B a1a6c39722fd2d781a809833719a5206e5eef838a58e87067ff8494ce6826b6956184378eb4ded7075ec79df2a45446786353c77f43b4a65cc8855b8c9d28377 SHA512 5f87d63d590a3c48359c1b81688edfff1b36149f969c7edffc5d9cfc2d0cbffc755dc0f5691bdd369f8481dae6fd4f4055631b06fcfa81b43f92218026f70bfc
+DIST jupyterlab_widgets-3.0.15.tar.gz 213149 BLAKE2B eae5a123166e7cc0d1716218f8705955c5b520b54e0e3dbae3c92700f62b714c60109afc13d7358e6f6dc2e1dd01c36a93cc57dc574a5a3ea8ea46e64819d7ae SHA512 0e6f570e2e3a419db9a81e46566dc961ac904f30957d9326788ea2e94c915da1ec49e08dd93a17c5b49338ed84baaeae259a9c1923a3f135abb2a1b6d4e0f2f3
diff --git a/dev-python/jupyterlab-widgets/jupyterlab-widgets-3.0.15.ebuild b/dev-python/jupyterlab-widgets/jupyterlab-widgets-3.0.15.ebuild
new file mode 100644
index 000000000000..08dbbe1a871f
--- /dev/null
+++ b/dev-python/jupyterlab-widgets/jupyterlab-widgets-3.0.15.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Jupyter interactive widgets for JupyterLab"
+HOMEPAGE="
+ https://ipython.org/
+ https://pypi.org/project/jupyterlab-widgets/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/knowit/Manifest b/dev-python/knowit/Manifest
new file mode 100644
index 000000000000..c60dda172d2e
--- /dev/null
+++ b/dev-python/knowit/Manifest
@@ -0,0 +1,2 @@
+DIST knowit-0.5.6.gh.tar.gz 79683 BLAKE2B da132883e7b4d15a2a21b22b05cb627859947f293a4611a853b2bd31341e4b317a5de42bb7ab48b64a340d96327cb579bb7722f1e875dfc58d1e26652844064c SHA512 c064c2428300f0b2ee08e514e8deea2299f0aa9a552a7ac9ea914035e4e40666a21aa8d2256605d2c86c61592955f1e6b432d2cf43b7a34a3d1235d4b9971aaf
+DIST matroska_test_w1_1.zip 184550509 BLAKE2B f111725aa08267661942072c2d4ac019d3d322c4e933aad10afb3aa6f69bb3469114c4400d161e53d8a7618b818b22465177460003804a7ac3e69fa4f4db000d SHA512 f170a8e83dab15228f992b3692330163da2402b8e436c7fa195ac1ecc06cf1eaf1a48d8c99a85c031122c158c2d4006023aae75d5b7805385ba25a6d601cb78f
diff --git a/dev-python/knowit/files/knowit-0.5.6-no-pint.patch b/dev-python/knowit/files/knowit-0.5.6-no-pint.patch
new file mode 100644
index 000000000000..cea4b8450848
--- /dev/null
+++ b/dev-python/knowit/files/knowit-0.5.6-no-pint.patch
@@ -0,0 +1,209 @@
+https://github.com/ratoaq2/knowit/pull/199
+
+We don't have pint packaged yet, but even as of May 2025, there's upstream
+bugs in pint where it doesn't work w/ Python 3.13 anyway, e.g.
+https://github.com/hgrecco/pint/issues/2168.
+
+From e9f06b859b1dd3f9154ca6b84dbdc3c19e601294 Mon Sep 17 00:00:00 2001
+From: getzze <getzze@gmail.com>
+Date: Fri, 18 Oct 2024 12:11:49 +0100
+Subject: [PATCH 1/4] deal with pint errors at import
+
+---
+ knowit/units.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/knowit/units.py b/knowit/units.py
+index 51e6cae..c8421ca 100644
+--- a/knowit/units.py
++++ b/knowit/units.py
+@@ -1,5 +1,8 @@
++import logging
+ import typing
+
++logger = logging.getLogger(__name__)
++
+
+ class NullRegistry:
+ """A NullRegistry that masquerades as a pint.UnitRegistry."""
+@@ -30,6 +33,8 @@ def _build_unit_registry():
+ return registry
+ except ModuleNotFoundError:
+ pass
++ except Exception:
++ logger.exception("Cannot import the pint package")
+
+ return NullRegistry()
+
+
+From 9b57a93d8cde4b7dac30bfdba0ba89bb2db3060c Mon Sep 17 00:00:00 2001
+From: getzze <getzze@gmail.com>
+Date: Fri, 18 Oct 2024 13:11:56 +0100
+Subject: [PATCH 2/4] make pint an extra dependency
+
+---
+ pyproject.toml | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/pyproject.toml b/pyproject.toml
+index d0d0c9d..aaa8cbc 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -43,7 +43,7 @@ knowit = "knowit.__main__:main"
+ python = "^3.9.0"
+ babelfish = "^0.6.1"
+ enzyme = "^0.5.2"
+-pint = ">=0.20.1,<0.25.0"
++pint = { version = ">=0.20.1,<0.25.0", optional = true }
+ pymediainfo = "^6.0.1"
+ pyyaml = "^6.0"
+ trakit = "^0.2.2"
+@@ -62,6 +62,9 @@ types-requests = "^2.28.11.8"
+ types-mock = "^5.0.0.2"
+ typing-extensions = "^4.12.2"
+
++[tool.poetry.extras]
++pint = ["pint"]
++
+ [build-system]
+ requires = ["poetry-core"]
+ build-backend = "poetry.core.masonry.api"
+
+From c938f0b7ff4b2583b66e598f59249a9065927ea2 Mon Sep 17 00:00:00 2001
+From: getzze <getzze@gmail.com>
+Date: Fri, 18 Oct 2024 14:07:15 +0100
+Subject: [PATCH 3/4] update poetry.lock
+
+---
+ poetry.lock | 29 ++++++++++++++++++-----------
+ 1 file changed, 18 insertions(+), 11 deletions(-)
+
+diff --git a/poetry.lock b/poetry.lock
+index 4b14c3e..7cf5e25 100644
+--- a/poetry.lock
++++ b/poetry.lock
+@@ -4,7 +4,7 @@
+ name = "appdirs"
+ version = "1.4.4"
+ description = "A small Python module for determining appropriate platform-specific dirs, e.g. a \"user data dir\"."
+-optional = false
++optional = true
+ python-versions = "*"
+ files = [
+ {file = "appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128"},
+@@ -293,7 +293,7 @@ setuptools = "*"
+ name = "flexcache"
+ version = "0.3"
+ description = "Saves and loads to the cache a transformed versions of a source object."
+-optional = false
++optional = true
+ python-versions = ">=3.9"
+ files = [
+ {file = "flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32"},
+@@ -310,7 +310,7 @@ test = ["pytest", "pytest-cov", "pytest-mpl", "pytest-subtests"]
+ name = "flexparser"
+ version = "0.3.1"
+ description = "Parsing made fun ... using typing."
+-optional = false
++optional = true
+ python-versions = ">=3.9"
+ files = [
+ {file = "flexparser-0.3.1-py3-none-any.whl", hash = "sha256:2e3e2936bec1f9277f777ef77297522087d96adb09624d4fe4240fd56885c013"},
+@@ -462,7 +462,7 @@ flake8 = ">=5.0.0"
+ name = "pint"
+ version = "0.24.3"
+ description = "Physical quantities module"
+-optional = false
++optional = true
+ python-versions = ">=3.9"
+ files = [
+ {file = "Pint-0.24.3-py3-none-any.whl", hash = "sha256:d98667e46fd03a1b94694fbfa104ec30858684d8ab26952e2a348b48059089bb"},
+@@ -693,19 +693,23 @@ use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"]
+
+ [[package]]
+ name = "setuptools"
+-version = "71.0.1"
++version = "75.2.0"
+ description = "Easily download, build, install, upgrade, and uninstall Python packages"
+ optional = false
+ python-versions = ">=3.8"
+ files = [
+- {file = "setuptools-71.0.1-py3-none-any.whl", hash = "sha256:1eb8ef012efae7f6acbc53ec0abde4bc6746c43087fd215ee09e1df48998711f"},
+- {file = "setuptools-71.0.1.tar.gz", hash = "sha256:c51d7fd29843aa18dad362d4b4ecd917022131425438251f4e3d766c964dd1ad"},
++ {file = "setuptools-75.2.0-py3-none-any.whl", hash = "sha256:a7fcb66f68b4d9e8e66b42f9876150a3371558f98fa32222ffaa5bced76406f8"},
++ {file = "setuptools-75.2.0.tar.gz", hash = "sha256:753bb6ebf1f465a1912e19ed1d41f403a79173a9acf66a42e7e6aec45c3c16ec"},
+ ]
+
+ [package.extras]
+-core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.text (>=3.7)", "more-itertools (>=8.8)", "ordered-set (>=3.1.1)", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
+-doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (<7.4)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier"]
+-test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "importlib-metadata", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "mypy (==1.10.0)", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-home (>=0.5)", "pytest-mypy", "pytest-perf", "pytest-ruff (<0.4)", "pytest-ruff (>=0.2.1)", "pytest-ruff (>=0.3.2)", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel"]
++check = ["pytest-checkdocs (>=2.4)", "pytest-ruff (>=0.2.1)", "ruff (>=0.5.2)"]
++core = ["importlib-metadata (>=6)", "importlib-resources (>=5.10.2)", "jaraco.collections", "jaraco.functools", "jaraco.text (>=3.7)", "more-itertools", "more-itertools (>=8.8)", "packaging", "packaging (>=24)", "platformdirs (>=2.6.2)", "tomli (>=2.0.1)", "wheel (>=0.43.0)"]
++cover = ["pytest-cov"]
++doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "pygments-github-lexers (==0.0.5)", "pyproject-hooks (!=1.1)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-favicon", "sphinx-inline-tabs", "sphinx-lint", "sphinx-notfound-page (>=1,<2)", "sphinx-reredirects", "sphinxcontrib-towncrier", "towncrier (<24.7)"]
++enabler = ["pytest-enabler (>=2.2)"]
++test = ["build[virtualenv] (>=1.0.3)", "filelock (>=3.4.0)", "ini2toml[lite] (>=0.14)", "jaraco.develop (>=7.21)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "jaraco.test", "packaging (>=23.2)", "pip (>=19.1)", "pyproject-hooks (!=1.1)", "pytest (>=6,!=8.1.*)", "pytest-home (>=0.5)", "pytest-perf", "pytest-subprocess", "pytest-timeout", "pytest-xdist (>=3)", "tomli-w (>=1.0.0)", "virtualenv (>=13.0.0)", "wheel (>=0.44.0)"]
++type = ["importlib-metadata (>=7.0.2)", "jaraco.develop (>=7.21)", "mypy (==1.11.*)", "pytest-mypy"]
+
+ [[package]]
+ name = "snowballstemmer"
+@@ -813,7 +817,10 @@ files = [
+ doc = ["furo", "jaraco.packaging (>=9.3)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"]
+ test = ["big-O", "importlib-resources", "jaraco.functools", "jaraco.itertools", "jaraco.test", "more-itertools", "pytest (>=6,!=8.1.*)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=2.2)", "pytest-ignore-flaky", "pytest-mypy", "pytest-ruff (>=0.2.1)"]
+
++[extras]
++pint = ["pint"]
++
+ [metadata]
+ lock-version = "2.0"
+ python-versions = "^3.9.0"
+-content-hash = "13770256de537cfe1e5dc84bde3dafaab61a9166f85bd2e13ffee64fe6569298"
++content-hash = "a94a83fccf98ce20e10fece575ba4bbf07c211e6a090d56831adaf762b2575fa"
+
+From e3c9a2b02f8c7eede9227cdf9ccde054dc199c68 Mon Sep 17 00:00:00 2001
+From: getzze <getzze@gmail.com>
+Date: Fri, 18 Oct 2024 15:07:41 +0100
+Subject: [PATCH 4/4] overload NullRegistry.__call__
+
+---
+ knowit/units.py | 11 +++++++++++
+ tests/__init__.py | 2 +-
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+diff --git a/knowit/units.py b/knowit/units.py
+index c8421ca..684658b 100644
+--- a/knowit/units.py
++++ b/knowit/units.py
+@@ -14,6 +14,17 @@ def __getattr__(self, item: typing.Any) -> int:
+ """Return a Scalar 1 to simulate a unit."""
+ return 1
+
++ def __call__(self, value: str) -> float:
++ """Try converting to int, to float and fallback to a scalar 1.0."""
++ try:
++ return int(value)
++ except ValueError:
++ try:
++ return float(value)
++ except ValueError:
++ pass
++ return 1
++
+ def __bool__(self):
+ """Return False since a NullRegistry is not a pint.UnitRegistry."""
+ return False
+diff --git a/tests/__init__.py b/tests/__init__.py
+index 20e0490..5c91d3b 100644
+--- a/tests/__init__.py
++++ b/tests/__init__.py
+@@ -250,7 +250,7 @@ def parse_quantity(value):
+ if isinstance(value, str):
+ for unit in ('pixel', 'bit', 'byte', 'FPS', 'bps', 'Hz'):
+ if value.endswith(' ' + unit):
+- return units(value[:-(len(unit))] + ' * ' + unit)
++ return units(value[:-len(unit)]) * units(unit)
+
+ return value
+
+
diff --git a/dev-python/knowit/knowit-0.5.6.ebuild b/dev-python/knowit/knowit-0.5.6.ebuild
new file mode 100644
index 000000000000..44cf88f63b34
--- /dev/null
+++ b/dev-python/knowit/knowit-0.5.6.ebuild
@@ -0,0 +1,69 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Know better your media files"
+HOMEPAGE="
+ https://github.com/ratoaq2/knowit
+ https://pypi.org/project/knowit/
+"
+# No tests in sdist
+SRC_URI="https://github.com/ratoaq2/knowit/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+SRC_URI+=" test? ( https://downloads.sourceforge.net/matroska/test_files/matroska_test_w1_1.zip )"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+# https://github.com/ratoaq2/knowit/blob/d7135a4797440838bca94e76326fc9d4019d8f9a/README.md?plain=1#L224
+RDEPEND="
+ dev-python/babelfish[${PYTHON_USEDEP}]
+ dev-python/enzyme[${PYTHON_USEDEP}]
+ dev-python/trakit[${PYTHON_USEDEP}]
+ dev-python/pymediainfo[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ || (
+ media-video/ffmpeg
+ media-video/mediainfo
+ media-video/mkvtoolnix
+ )
+"
+BDEPEND="
+ test? (
+ app-arch/unzip
+ dev-python/requests[${PYTHON_USEDEP}]
+ media-video/ffmpeg
+ media-video/mediainfo
+ media-video/mkvtoolnix
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.5.6-no-pint.patch
+)
+
+distutils_enable_tests pytest
+
+src_unpack() {
+ # Needed to unpack the test data
+ default
+
+ if [[ ${PV} == 9999 ]] ; then
+ git-r3_src_unpack
+ fi
+}
+
+python_prepare_all() {
+ if use test ; then
+ mkdir -p tests/data/videos || die
+ ln -s "${WORKDIR}"/test*.mkv tests/data/videos/ || die
+ fi
+
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/knowit/metadata.xml b/dev-python/knowit/metadata.xml
new file mode 100644
index 000000000000..ea8988e8af6a
--- /dev/null
+++ b/dev-python/knowit/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest
index a11d7c268c91..d12ab8aeaca8 100644
--- a/dev-python/langdetect/Manifest
+++ b/dev-python/langdetect/Manifest
@@ -1 +1,3 @@
DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db
+EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e
+MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45
diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
deleted file mode 100644
index 637368d2f237..000000000000
--- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Fix "Package 'langdetect.profiles' is absent from the `packages` configuration."
-
---- a/setup.py
-+++ b/setup.py
-@@ -18,7 +18,7 @@ setup(
- author_email='michal.danilak@gmail.com',
- url='https://github.com/Mimino666/langdetect',
- keywords='language detection library',
-- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'],
-+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'],
- include_package_data=True,
- install_requires=['six'],
- license='MIT',
diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild
index 99577c43fc3e..56733bbffc48 100644
--- a/dev-python/langdetect/langdetect-1.0.9.ebuild
+++ b/dev-python/langdetect/langdetect-1.0.9.ebuild
@@ -1,9 +1,9 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
-PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
DISTUTILS_USE_PEP517=setuptools
inherit distutils-r1 pypi
@@ -19,6 +19,4 @@ KEYWORDS="~amd64"
RDEPEND="dev-python/six[${PYTHON_USEDEP}]"
-PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" )
-
distutils_enable_tests unittest
diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml
index c0f74ac187e2..020e07f2a3dd 100644
--- a/dev-python/langdetect/metadata.xml
+++ b/dev-python/langdetect/metadata.xml
@@ -2,9 +2,11 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>pastalian46@gmail.com</email>
- <name>Takuya Wakazono</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
-
- <origin>gentoo-guru-overlay</origin>
+ <upstream>
+ <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to>
+ </upstream>
+ <origin>slonko-overlay</origin>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/meson-python/Manifest b/dev-python/meson-python/Manifest
index 23a6e6844b4e..4fab811ab911 100644
--- a/dev-python/meson-python/Manifest
+++ b/dev-python/meson-python/Manifest
@@ -1 +1,2 @@
DIST meson-python-0.17.1.gh.tar.gz 79456 BLAKE2B 88bda9aadc74d186aab41c9b3a2fe5ba7d51b5997c1c043cf4ea9448395d0c5c5763ccf35358ab867d32a4537a4041a3cf480d82c9ec5cd8d1b5d6bc67d35fc8 SHA512 bd5f4c807468b81b3630eeb6973c2a574473c22298eb2c43d30b67b7503ce77fd79d4509a8f1b0186197622d281279a9c3aa5d9d1c2286d46b7aea1ff2461ae5
+DIST meson-python-0.18.0.gh.tar.gz 88056 BLAKE2B b8379a6cd37c3b4e89884e21ebb85ebed6a5d86575ea57388564659a0fcfab3d0f6b71bd49fc8014486118cf31af3a0a1c67a37afa1b9b93d634622a1bc40570 SHA512 f32f02851cdfc13f29550b297b3bce9038bdaf02381b15064e36442104e93624e090abeae23b9de97dfa971aa456716cae65dbe04784beee13b510db12de1000
diff --git a/dev-python/meson-python/meson-python-0.18.0.ebuild b/dev-python/meson-python/meson-python-0.18.0.ebuild
new file mode 100644
index 000000000000..8398873fc3eb
--- /dev/null
+++ b/dev-python/meson-python/meson-python-0.18.0.ebuild
@@ -0,0 +1,68 @@
+# Copyright 2022-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=standalone
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Meson PEP 517 Python build backend"
+HOMEPAGE="
+ https://pypi.org/project/meson-python/
+ https://github.com/mesonbuild/meson-python/
+"
+SRC_URI="
+ https://github.com/mesonbuild/meson-python/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos"
+
+RDEPEND="
+ >=dev-python/pyproject-metadata-0.7.1[${PYTHON_USEDEP}]
+ >=dev-build/meson-0.63.0
+ !kernel_Darwin? ( dev-util/patchelf )
+ $(python_gen_cond_dep '
+ >=dev-python/tomli-1.0.0[${PYTHON_USEDEP}]
+ ' 3.10)
+"
+BDEPEND="
+ ${RDEPEND}
+ test? (
+ >=dev-python/cython-0.29.34
+ >=dev-python/packaging-23.1[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-vcs/git
+ )
+"
+
+distutils_enable_tests pytest
+
+src_test() {
+ # required by tests/test_sdist.py::test_reproducible
+ git config --global user.email "test@example.com" || die
+ git config --global user.name "The Test Suite" || die
+ git init -q || die
+ git add -A || die
+ git commit -m init -q || die
+
+ distutils-r1_src_test
+}
+
+python_test() {
+ unset NINJA
+
+ local EPYTEST_DESELECT=()
+ if ! has_version "dev-build/meson[${PYTHON_USEDEP}]"; then
+ EPYTEST_DESELECT+=(
+ tests/test_wheel.py::test_vendored_meson
+ )
+ fi
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -p pytest_mock
+}
diff --git a/dev-python/narwhals/Manifest b/dev-python/narwhals/Manifest
index d9ecfa149a12..dfc093181031 100644
--- a/dev-python/narwhals/Manifest
+++ b/dev-python/narwhals/Manifest
@@ -1 +1,2 @@
DIST narwhals-1.37.1.gh.tar.gz 708868 BLAKE2B 0cda4e6febb2407b12db34068ba5419cfacc2003a6e4c9a62f713db8ab9994128ac6a739d09a8eb40ab543eb689c3867f3069841f761786a221eff5ef1b37b39 SHA512 3aeb15341f525397aff4ca389cafcdce3b433c0cdd7d0ad389592cfaf0c3837019660895b3a52923b84ce4f2b3f9d29670a962dcd5687dca1a4fe99977e49e20
+DIST narwhals-1.38.0.gh.tar.gz 714872 BLAKE2B f60b828c20849866ac2b0a48a4d3cdd21c80c1f2d48beb1cfe1f519e09f9ea7e045ab3824de886a880e3e5385786e73208bc69a6bd8c1c06b94c3161f3be4d6c SHA512 668f57d7830d70992477f5ac7d917abaf95b36ade8c0b60c93d1ed6eb5f4aa892c83812aedd5056b32d6498d727804d835d880ddc41a2e6a0630fee05e30e581
diff --git a/dev-python/narwhals/files/narwhals-1.38.0-opt-polars.patch b/dev-python/narwhals/files/narwhals-1.38.0-opt-polars.patch
new file mode 100644
index 000000000000..96de66908a42
--- /dev/null
+++ b/dev-python/narwhals/files/narwhals-1.38.0-opt-polars.patch
@@ -0,0 +1,32 @@
+From add7beafc8394ae76309bcb93443aee840d8e5f0 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Tue, 6 May 2025 07:12:45 +0200
+Subject: [PATCH] test: make `polars` optional in `truncate_test`
+
+---
+ tests/expr_and_series/dt/truncate_test.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/tests/expr_and_series/dt/truncate_test.py b/tests/expr_and_series/dt/truncate_test.py
+index 3e51a796..d2a2e960 100644
+--- a/tests/expr_and_series/dt/truncate_test.py
++++ b/tests/expr_and_series/dt/truncate_test.py
+@@ -3,7 +3,6 @@ from __future__ import annotations
+ from datetime import datetime
+
+ import pandas as pd
+-import polars as pl
+ import pytest
+
+ import narwhals as nw
+@@ -227,6 +226,10 @@ def test_truncate_custom(
+ ],
+ )
+ def test_truncate_polars_ns(every: str, expected: list[datetime]) -> None:
++ pytest.importorskip("polars")
++
++ import polars as pl
++
+ df_pl = pl.DataFrame(data, schema={"a": pl.Datetime(time_unit="ns")})
+ df = nw.from_native(df_pl)
+ result = df.select(nw.col("a").dt.truncate(every))
diff --git a/dev-python/narwhals/narwhals-1.38.0.ebuild b/dev-python/narwhals/narwhals-1.38.0.ebuild
new file mode 100644
index 000000000000..236d75e3c312
--- /dev/null
+++ b/dev-python/narwhals/narwhals-1.38.0.ebuild
@@ -0,0 +1,46 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1
+
+DESCRIPTION="Extremely lightweight compatibility layer between dataframe libraries"
+HOMEPAGE="
+ https://github.com/narwhals-dev/narwhals/
+ https://pypi.org/project/narwhals/
+"
+# https://github.com/narwhals-dev/narwhals/issues/2284
+SRC_URI="
+ https://github.com/narwhals-dev/narwhals/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+BDEPEND="
+ test? (
+ dev-python/hypothesis[${PYTHON_USEDEP}]
+ dev-python/pandas[${PYTHON_USEDEP}]
+ dev-python/pyarrow[${PYTHON_USEDEP}]
+ dev-python/pytest-env[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+PATCHES=(
+ # https://github.com/narwhals-dev/narwhals/pull/2501
+ "${FILESDIR}/${P}-opt-polars.patch"
+)
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest --runslow --constructors="pandas,pandas[nullable],pandas[pyarrow],pyarrow"
+}
diff --git a/dev-python/nltk/Manifest b/dev-python/nltk/Manifest
index 4329ee5b7d5f..6a83b3ff24fa 100644
--- a/dev-python/nltk/Manifest
+++ b/dev-python/nltk/Manifest
@@ -1 +1,6 @@
-DIST nltk-3.9.1.tar.gz 2904691 BLAKE2B c4178eea863feb32642a7f1c290e465244655223c1b18437b832ebd315e01f797d393ab925e641ae9a53a785f0a7fe2bf1dca504a50fb8f66fbafe2a6a1b1c8b SHA512 dad570b3a6728f22b55438a159b56009676f4fbdfc293673eaae0b0ed55dd2db91c32f59b3f89ff6d38101b3c3af9ea81f3519b578c83c17c1a9f3f716bc3ff4
+AUX python-3.12.patch 8925 BLAKE2B a9ad62b0b8d37b8707c6fa880af98ce6ee8e3f02a1d6cf42456a6d1dc2398f7cbf8721eb9e580594531c963dc10232f2e259939ed4dd78b5f6b9d778e2c2c7f7 SHA512 b32631b7d0b805496188b30e4ea8bcb3bd6cccee98b2f3cf5ccffcd8467c6e333654d23ab71b78ca1030aff54ac2e2137efff076bf86bd991bfd0a3077a6543f
+DIST nltk-3.8.1.gh.tar.gz 2867926 BLAKE2B 54de1d3ae7cfe0b71ac0f5a62ed3e81e489fa4d322cd32eb4aa4ef60617eb96767a0f3a92c7e5a16e71836cb0d3a1076ae3598b6bcf0af5925c95e1a0ccf70f8 SHA512 5b13eff5d8e628173f5321c293d896919d369bcd586861a7e09bf6fdca2b09f2580902da98ec647bcf9cdc2b33a87c830dda3793de20c31c8bc38c86df8f7930
+DIST nltk-3.9.1.gh.tar.gz 2874006 BLAKE2B 4ad375dafb32f16aa23128f1585f51f8f2c864edb40ea64e3fe291944a41de52fa5e37add1de86434de054bc2ff9ffa48c56a6d6793533f4c0ca6e798829be14 SHA512 7e384a23fa3839c29d38c083d6288d15ff04eb071c4bca3ec1bfb3b9cfcac8d2388041a950d6c71684ee29b791318312df99e29ae258eb5e602ccf2ad1407840
+EBUILD nltk-3.8.1.ebuild 1394 BLAKE2B bf5cdfbd9eb5c1b415de3039f5af1be36c34e8a3c0245efc908c941028b34119d59486dc0c8649771e386808d0c10ab1ab52d1bc651fd8157cd9b9fcc77bfb8e SHA512 3f4c996aab04efd784d948199a7b96bc58372e453216ae290a7c2f903f67f6518cd39162f55900fb1e047badab3d3d6a1fd53c330901f8ccb3acbd0a7023bd78
+EBUILD nltk-3.9.1.ebuild 1223 BLAKE2B f2f1ce13a1f015c4674bd41355c3c00e5f769e1521d8cbb36650bb81e0e799d9c2ee5c53465d101b332a81ad36eeb5061e7e9abd2103b3769978febfd9717445 SHA512 729bc346694c07deed10f6bea8755ec8a5ce255e4045b8ec2fe6140de65c77be2a0cf5a6535608975d853d12c2aa11b8272b9a2989f8961deb8640251fbf5bce
+MISC metadata.xml 445 BLAKE2B 4bfcde721368b9c9354799863a7a78d2c04eb789672f52b5449bda3ef567448fa1b434dda9d150aa0ff360477c576ea2fd0bebce40bf80bb843393e245f85278 SHA512 89bb6d0ca2e268e3540cf36e91b57e834eb31f078a91bb7ed7218a17c1a9b63809ae77916822eabf6a3a86286d00ae4a311b33c52e40d9d2e61b6d242f4cef78
diff --git a/dev-python/nltk/files/python-3.12.patch b/dev-python/nltk/files/python-3.12.patch
new file mode 100644
index 000000000000..c55d2852751c
--- /dev/null
+++ b/dev-python/nltk/files/python-3.12.patch
@@ -0,0 +1,282 @@
+commit 544bf807bf506927872b7b837c6e1514e80419ab
+Author: Konstantin Chernyshev <k4black@ya.ru>
+Date: Thu Nov 16 19:40:54 2023 +0100
+
+ fix(bleu): add Fraction with 3.12 support
+
+diff --git a/nltk/test/unit/translate/test_bleu.py b/nltk/test/unit/translate/test_bleu.py
+index 990b76406..b472d785f 100644
+--- a/nltk/test/unit/translate/test_bleu.py
++++ b/nltk/test/unit/translate/test_bleu.py
+@@ -2,7 +2,6 @@
+ Tests for BLEU translation evaluation metric
+ """
+
+-import io
+ import unittest
+
+ import numpy as np
+diff --git a/nltk/translate/bleu_score.py b/nltk/translate/bleu_score.py
+index da445bc3e..9647202e6 100644
+--- a/nltk/translate/bleu_score.py
++++ b/nltk/translate/bleu_score.py
+@@ -7,16 +7,40 @@
+ # For license information, see LICENSE.TXT
+
+ """BLEU score implementation."""
++from __future__ import annotations
+
+ import math
+ import sys
+ import warnings
+ from collections import Counter
+-from fractions import Fraction
++from dataclasses import dataclass
+
+ from nltk.util import ngrams
+
+
++@dataclass
++class Fraction:
++ """
++ This class is used to represent a fraction with both the numerator and denominator saved for later retrieval.
++ Python 3.12 removed _normalize=False from the standard lib Fraction constructor.
++ """
++
++ numerator: int | float
++ denominator: int = 1
++
++ def __float__(self):
++ return self.numerator / self.denominator
++
++ def __lt__(self, other):
++ return float(self) < float(other)
++
++ def __eq__(self, other):
++ return self.numerator == other.numerator and self.denominator == other.denominator
++
++ def __gt__(self, other):
++ return float(self) > float(other)
++
++
+ def sentence_bleu(
+ references,
+ hypothesis,
+@@ -222,7 +246,7 @@ def corpus_bleu(
+
+ # Collects the various precision values for the different ngram orders.
+ p_n = [
+- Fraction(p_numerators[i], p_denominators[i], _normalize=False)
++ Fraction(p_numerators[i], p_denominators[i])
+ for i in range(1, max_weight_length + 1)
+ ]
+
+@@ -365,7 +389,7 @@ def modified_precision(references, hypothesis, n):
+ # Usually this happens when the ngram order is > len(reference).
+ denominator = max(1, sum(counts.values()))
+
+- return Fraction(numerator, denominator, _normalize=False)
++ return Fraction(numerator, denominator)
+
+
+ def closest_ref_length(references, hyp_len):
+@@ -577,7 +601,7 @@ class SmoothingFunction:
+ In COLING 2004.
+ """
+ return [
+- Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1, _normalize=False)
++ Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1)
+ if i != 0
+ else p_n[0]
+ for i in range(len(p_n))
+
+commit eab59d7ceac5dc64e34ca04ee0143fa8998af204
+Author: Konstantin Chernyshev <k4black@ya.ru>
+Date: Thu Nov 16 19:46:47 2023 +0100
+
+ style: fix pre-commit style checks
+
+diff --git a/nltk/translate/bleu_score.py b/nltk/translate/bleu_score.py
+index 9647202e6..aab519521 100644
+--- a/nltk/translate/bleu_score.py
++++ b/nltk/translate/bleu_score.py
+@@ -35,7 +35,9 @@ class Fraction:
+ return float(self) < float(other)
+
+ def __eq__(self, other):
+- return self.numerator == other.numerator and self.denominator == other.denominator
++ return (
++ self.numerator == other.numerator and self.denominator == other.denominator
++ )
+
+ def __gt__(self, other):
+ return float(self) > float(other)
+@@ -601,10 +603,7 @@ class SmoothingFunction:
+ In COLING 2004.
+ """
+ return [
+- Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1)
+- if i != 0
+- else p_n[0]
+- for i in range(len(p_n))
++ Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1) if i != 0 else p_n[0] for i in range(len(p_n))
+ ]
+
+ def method3(self, p_n, *args, **kwargs):
+
+commit 8f06fa4b1da4a390d53010e56bc6ab5d5cb32a3a
+Author: Konstantin Chernyshev <k4black@ya.ru>
+Date: Thu Nov 16 19:48:06 2023 +0100
+
+ style: fix pre-commit style checks
+
+diff --git a/nltk/translate/bleu_score.py b/nltk/translate/bleu_score.py
+index aab519521..f32743ecc 100644
+--- a/nltk/translate/bleu_score.py
++++ b/nltk/translate/bleu_score.py
+@@ -603,7 +603,8 @@ class SmoothingFunction:
+ In COLING 2004.
+ """
+ return [
+- Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1) if i != 0 else p_n[0] for i in range(len(p_n))
++ Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1) if i != 0 else p_n[0]
++ for i in range(len(p_n))
+ ]
+
+ def method3(self, p_n, *args, **kwargs):
+
+commit b72a4bdbaf99a2bdb6a99454a1eb8804051bf644
+Author: Konstantin Chernyshev <k4black@ya.ru>
+Date: Thu Nov 16 21:49:32 2023 +0100
+
+ fix: Fraction
+
+diff --git a/nltk/translate/bleu_score.py b/nltk/translate/bleu_score.py
+index f32743ecc..72f5b548d 100644
+--- a/nltk/translate/bleu_score.py
++++ b/nltk/translate/bleu_score.py
+@@ -42,6 +42,14 @@ class Fraction:
+ def __gt__(self, other):
+ return float(self) > float(other)
+
++ def __add__(self, other):
++ if isinstance(other, int):
++ other = Fraction(other, 1)
++ return Fraction(
++ self.numerator * other.denominator + other.numerator * self.denominator,
++ self.denominator * other.denominator,
++ )
++
+
+ def sentence_bleu(
+ references,
+
+commit 86fa0832f0f4b366f96867f59ae05d744d68b513
+Author: Konstantin Chernyshev <k4black@ya.ru>
+Date: Thu Nov 16 23:26:42 2023 +0100
+
+ fix: use Fraction override
+
+diff --git a/nltk/translate/bleu_score.py b/nltk/translate/bleu_score.py
+index 72f5b548d..ddb54dba8 100644
+--- a/nltk/translate/bleu_score.py
++++ b/nltk/translate/bleu_score.py
+@@ -7,48 +7,39 @@
+ # For license information, see LICENSE.TXT
+
+ """BLEU score implementation."""
+-from __future__ import annotations
+-
+ import math
+ import sys
+ import warnings
+ from collections import Counter
+-from dataclasses import dataclass
++from fractions import Fraction as _Fraction
+
+ from nltk.util import ngrams
+
+
+-@dataclass
+-class Fraction:
+- """
+- This class is used to represent a fraction with both the numerator and denominator saved for later retrieval.
+- Python 3.12 removed _normalize=False from the standard lib Fraction constructor.
+- """
+-
+- numerator: int | float
+- denominator: int = 1
+-
+- def __float__(self):
+- return self.numerator / self.denominator
+-
+- def __lt__(self, other):
+- return float(self) < float(other)
++class Fraction(_Fraction):
++ """Fraction with _normalize=False support for 3.12"""
+
+- def __eq__(self, other):
+- return (
+- self.numerator == other.numerator and self.denominator == other.denominator
+- )
++ def __new__(cls, numerator=0, denominator=None, _normalize=False):
++ if sys.version_info >= (3, 12):
++ self = super().__new__(cls, numerator, denominator)
++ else:
++ self = super().__new__(cls, numerator, denominator, _normalize=_normalize)
++ self._normalize = _normalize
++ self._original_numerator = numerator
++ self._original_denominator = denominator
++ return self
+
+- def __gt__(self, other):
+- return float(self) > float(other)
++ @property
++ def numerator(self):
++ if self._normalize:
++ return self._numerator
++ return self._original_numerator
+
+- def __add__(self, other):
+- if isinstance(other, int):
+- other = Fraction(other, 1)
+- return Fraction(
+- self.numerator * other.denominator + other.numerator * self.denominator,
+- self.denominator * other.denominator,
+- )
++ @property
++ def denominator(self):
++ if self._normalize:
++ return self._denominator
++ return self._original_denominator
+
+
+ def sentence_bleu(
+@@ -256,7 +247,7 @@ def corpus_bleu(
+
+ # Collects the various precision values for the different ngram orders.
+ p_n = [
+- Fraction(p_numerators[i], p_denominators[i])
++ Fraction(p_numerators[i], p_denominators[i], _normalize=False)
+ for i in range(1, max_weight_length + 1)
+ ]
+
+@@ -399,7 +390,7 @@ def modified_precision(references, hypothesis, n):
+ # Usually this happens when the ngram order is > len(reference).
+ denominator = max(1, sum(counts.values()))
+
+- return Fraction(numerator, denominator)
++ return Fraction(numerator, denominator, _normalize=False)
+
+
+ def closest_ref_length(references, hyp_len):
+@@ -611,7 +602,8 @@ class SmoothingFunction:
+ In COLING 2004.
+ """
+ return [
+- Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1) if i != 0 else p_n[0]
++ Fraction(p_n[i].numerator + 1, p_n[i].denominator + 1, _normalize=False)
++ if i != 0 else p_n[0]
+ for i in range(len(p_n))
+ ]
+
diff --git a/dev-python/nltk/metadata.xml b/dev-python/nltk/metadata.xml
index 3fab47b124fa..0317a43d0f5a 100644
--- a/dev-python/nltk/metadata.xml
+++ b/dev-python/nltk/metadata.xml
@@ -2,13 +2,10 @@
<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
- <email>oz.tiram@gmail.com</email>
- <name>Oz Tiram</name>
- </maintainer>
- <maintainer type="project">
- <email>proxy-maint@gentoo.org</email>
- <name>Proxy Maintainers</name>
+ <email>marcin.deranek@slonko.net</email>
+ <name>Marcin Deranek</name>
</maintainer>
- <origin>gentoo-guru-overlay</origin>
+ <origin>slonko-overlay</origin>
+ <stabilize-allarches/>
</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/nltk/nltk-3.8.1.ebuild b/dev-python/nltk/nltk-3.8.1.ebuild
new file mode 100644
index 000000000000..064a8ccee2aa
--- /dev/null
+++ b/dev-python/nltk/nltk-3.8.1.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_REQ_USE="sqlite,tk?,xml(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="Natural Language Toolkit"
+HOMEPAGE="https://www.nltk.org/ https://github.com/nltk/nltk/"
+SRC_URI="https://github.com/nltk/nltk/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 ~ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="tk"
+
+RDEPEND="
+ dev-python/click[${PYTHON_USEDEP}]
+ dev-python/joblib[${PYTHON_USEDEP}]
+ dev-python/regex[${PYTHON_USEDEP}]
+ dev-python/tqdm[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/joblib[${PYTHON_USEDEP}]
+ >=dev-python/nltk-data-20211221
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/twython[${PYTHON_USEDEP}]
+ dev-python/scikit-learn[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ )"
+PDEPEND="dev-python/nltk-data"
+
+PATCHES=( "${FILESDIR}/python-3.12.patch" )
+
+distutils_enable_tests pytest
+
+EPYTEST_DESELECT=(
+ # Internet
+ nltk/test/unit/test_downloader.py::test_downloader_using_existing_parent_download_dir
+ nltk/test/unit/test_downloader.py::test_downloader_using_non_existing_parent_download_dir
+)
diff --git a/dev-python/nltk/nltk-3.9.1.ebuild b/dev-python/nltk/nltk-3.9.1.ebuild
index 815d42344ed6..ed46f1794bd1 100644
--- a/dev-python/nltk/nltk-3.9.1.ebuild
+++ b/dev-python/nltk/nltk-3.9.1.ebuild
@@ -1,19 +1,22 @@
-# Copyright 2025 Gentoo Authors
+# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
DISTUTILS_USE_PEP517=setuptools
PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_REQ_USE="sqlite,tk?,xml(+)"
-inherit distutils-r1 pypi
+inherit distutils-r1
-DESCRIPTION="Python package for natural language processing."
-HOMEPAGE="https://pypi.org/project/nltk/"
+DESCRIPTION="Natural Language Toolkit"
+HOMEPAGE="https://www.nltk.org/ https://github.com/nltk/nltk/"
+SRC_URI="https://github.com/nltk/nltk/archive/${PV}.tar.gz -> ${P}.gh.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64"
+KEYWORDS="amd64 ~ppc64 ~riscv x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="tk"
RDEPEND="
dev-python/click[${PYTHON_USEDEP}]
@@ -21,3 +24,23 @@ RDEPEND="
dev-python/regex[${PYTHON_USEDEP}]
dev-python/tqdm[${PYTHON_USEDEP}]
"
+BDEPEND="
+ test? (
+ dev-python/joblib[${PYTHON_USEDEP}]
+ >=dev-python/nltk-data-20211221
+ dev-python/numpy[${PYTHON_USEDEP}]
+ dev-python/pyparsing[${PYTHON_USEDEP}]
+ dev-python/pytest-mock[${PYTHON_USEDEP}]
+ dev-python/twython[${PYTHON_USEDEP}]
+ dev-python/scikit-learn[${PYTHON_USEDEP}]
+ dev-python/scipy[${PYTHON_USEDEP}]
+ dev-python/matplotlib[${PYTHON_USEDEP}]
+ )"
+PDEPEND=">=dev-python/nltk-data-20250310"
+
+distutils_enable_tests pytest
+
+EPYTEST_IGNORE=(
+ # Network required
+ nltk/test/unit/test_downloader.py
+)
diff --git a/dev-python/pytest-timeout/Manifest b/dev-python/pytest-timeout/Manifest
index 46854c84991e..9476b110bdf2 100644
--- a/dev-python/pytest-timeout/Manifest
+++ b/dev-python/pytest-timeout/Manifest
@@ -1 +1,2 @@
DIST pytest-timeout-2.3.1.tar.gz 17697 BLAKE2B 5f0ffa2fdda59ef28a92bfd5742891f63c1fa400db4ef89077fa13d917932d83e76d543c4c326a27df582a025122d8a75f1f7adf0daebbecc42273d4323ff93a SHA512 f200d625d11f76173521f4e2e4e09d57f6613d9b1420c57893b454ec496d5f11b32390b95eb995b403d15f8563b742a58fa0e0cbad42246b4049787a389ad83e
+DIST pytest_timeout-2.4.0.tar.gz 17973 BLAKE2B 97408cf5c9b49d809ef7a5d057afd22dfd856b64043879fa8e7d9f3996f76f5554bfed62bc8f40f4e5f28f058067b29b582953bf977fd1f6de95dfc7184ce41c SHA512 ca37754c20517024cb88e88e9c4d8497ff5c235d1bae4bc082d21b5807b43aac8294757900f9bc29e3e34a4b8c671136468793f47baadebf086f924b59b0bd0c
diff --git a/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild b/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild
new file mode 100644
index 000000000000..5f589d1bacc3
--- /dev/null
+++ b/dev-python/pytest-timeout/pytest-timeout-2.4.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="pytest plugin to abort hanging tests"
+HOMEPAGE="
+ https://github.com/pytest-dev/pytest-timeout/
+ https://pypi.org/project/pytest-timeout/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux"
+
+# do not rdepend on pytest, it won't be used without it anyway
+# pytest-cov used to test compatibility
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ !hppa? (
+ $(python_gen_cond_dep '
+ dev-python/pytest-cov[${PYTHON_USEDEP}]
+ ' python3_{11..13} 'pypy3*')
+ )
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_timeout
+
+ if has_version "dev-python/pytest-cov[${PYTHON_USEDEP}]"; then
+ PYTEST_PLUGINS+=,pytest_cov.plugin
+ else
+ EPYTEST_DESELECT+=(
+ test_pytest_timeout.py::test_cov
+ )
+ fi
+
+ epytest
+}
diff --git a/dev-python/python-stdnum/Manifest b/dev-python/python-stdnum/Manifest
index 88b7fb3e802f..8bf913e51d47 100644
--- a/dev-python/python-stdnum/Manifest
+++ b/dev-python/python-stdnum/Manifest
@@ -1 +1,2 @@
DIST python-stdnum-1.20.tar.gz 1191978 BLAKE2B 8395106d155c1f4642a74691d219230b42e81b521db41c57d5e978eb8e1769ca51598a1ad061356a1997fac5a60ca21796d1e8f79fa7d737e70fbbfe78dbfcc6 SHA512 92ec9fcb3bf71405569e93668ab1d089225da74a33095e63ee8f0116c868a4b937d093ba98e29085889d1745cc55eab13936d6ed9ceb24beecbc193c722a515e
+DIST python_stdnum-2.0.tar.gz 1237342 BLAKE2B d1a0f163b5ef97827aab579bbb12d669923b466a29a4e6799dc950126fcc823e91ea9f1426b8239085355893cd588cd7504424a57e7fc783972b3087a94078af SHA512 583379fec66dd507429b1740edd5c9c66fc1a7bcefc3af608535f86265c375dea2b7e004ac9aae6b4757c3e085c501b64d4e8a7a6c55bed7c452f49d873c2f08
diff --git a/dev-python/python-stdnum/python-stdnum-2.0.ebuild b/dev-python/python-stdnum/python-stdnum-2.0.ebuild
new file mode 100644
index 000000000000..6fc13f1927e0
--- /dev/null
+++ b/dev-python/python-stdnum/python-stdnum-2.0.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A module to handle standardized numbers and codes"
+HOMEPAGE="
+ https://arthurdejong.org/python-stdnum/
+ https://github.com/arthurdejong/python-stdnum/
+ https://pypi.org/project/python-stdnum/
+"
+
+LICENSE="LGPL-2.1"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="vies"
+
+RDEPEND="
+ vies? (
+ dev-python/zeep[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ sed -i -e 's:--cov.*::' setup.cfg || die
+ distutils-r1_src_prepare
+}
diff --git a/dev-python/pytools/Manifest b/dev-python/pytools/Manifest
index 27a3ba9a4ab8..7661ea520385 100644
--- a/dev-python/pytools/Manifest
+++ b/dev-python/pytools/Manifest
@@ -1 +1,2 @@
DIST pytools-2025.1.2.tar.gz 80400 BLAKE2B e07379f1c954ece6d9b2e5c7db5a84758d5d85a5955990cf730a135bc961321132c36c7e1402c4684d50957069f839bb732bda849f3d46513ddb5533b9a88b88 SHA512 74fc858aed5043cab9aa2210f071aa3aaf60008ec60b63133dac870ff257981284f66b40ccbedfdcf68969b1e1476cb012dbf83fa9397bb1b857ae5db09f99f6
+DIST pytools-2025.1.3.tar.gz 80509 BLAKE2B 448de6bb5ddedd905ee002ee4f6c0a49c657fce546e99c8ccdc5ddc119db9b8e0d40a138be9b3f25a63c5beab1602ff862805b175f927bea2ca306d6155d2499 SHA512 cdf9562f9dbc916fc0c21f363e7f34c1bdee3fd5adc5b499461ce40e887100d39ab0f8dddc50ade6c85120c74da3330d487eda112b7bf6d7e567fcdcabbe6e9b
diff --git a/dev-python/pytools/pytools-2025.1.3.ebuild b/dev-python/pytools/pytools-2025.1.3.ebuild
new file mode 100644
index 000000000000..d879e4989751
--- /dev/null
+++ b/dev-python/pytools/pytools-2025.1.3.ebuild
@@ -0,0 +1,31 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+PYTHON_REQ_USE='sqlite'
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Collection of tools missing from the Python standard library"
+HOMEPAGE="
+ https://mathema.tician.de/software/pytools/
+ https://github.com/inducer/pytools/
+ https://pypi.org/project/pytools/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv"
+
+# NB: numpy are an "extra" (optional) deps
+RDEPEND="
+ >=dev-python/numpy-1.6[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-2.2[${PYTHON_USEDEP}]
+ >=dev-python/siphash24-1.6[${PYTHON_USEDEP}]
+ >=dev-python/typing-extensions-4.5[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/trakit/Manifest b/dev-python/trakit/Manifest
new file mode 100644
index 000000000000..a8e1cd3a76ee
--- /dev/null
+++ b/dev-python/trakit/Manifest
@@ -0,0 +1 @@
+DIST trakit-0.2.2.gh.tar.gz 43207 BLAKE2B 6bd651cae7892d7af9c7f68d313d3046074d4e8a7cf17eb7c562d5d44235142ccce309298ed10d612faf1d9405dbac579d73f36db8517a27ccea3457ada23b2f SHA512 3fbd6c9fc2badfabc15c8b78dbeb677b11ac687b6fed847bcc0d835268a180a492bf530c14f5cce2ad8db19fae2e6af8e8ff59c85fb577ce94d8ba0943a00021
diff --git a/dev-python/trakit/metadata.xml b/dev-python/trakit/metadata.xml
new file mode 100644
index 000000000000..ea8988e8af6a
--- /dev/null
+++ b/dev-python/trakit/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+
+ <origin>gentoo-staging</origin>
+ <stabilize-allarches/>
+</pkgmetadata> \ No newline at end of file
diff --git a/dev-python/trakit/trakit-0.2.2.ebuild b/dev-python/trakit/trakit-0.2.2.ebuild
new file mode 100644
index 000000000000..40f500cb8219
--- /dev/null
+++ b/dev-python/trakit/trakit-0.2.2.ebuild
@@ -0,0 +1,39 @@
+# Copyright 2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=poetry
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Guess additional information from titles in media tracks"
+HOMEPAGE="
+ https://github.com/ratoaq2/trakit
+ https://pypi.org/project/trakit/
+"
+# No tests in sdist
+SRC_URI="https://github.com/ratoaq2/trakit/archive/refs/tags/${PV}.tar.gz -> ${P}.gh.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+RDEPEND="
+ dev-python/babelfish[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/rebulk[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/unidecode[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # Network
+ tests/test_generate.py::test_generate_config
+)
+
+distutils_enable_tests pytest
diff --git a/dev-python/virtualenv/Manifest b/dev-python/virtualenv/Manifest
index ca1f8b903e1d..15d713a43bda 100644
--- a/dev-python/virtualenv/Manifest
+++ b/dev-python/virtualenv/Manifest
@@ -1 +1,2 @@
DIST virtualenv-20.30.0.tar.gz 4346945 BLAKE2B 67e78ae9e0b51799da4d3b1f981b70e4727d43f044cb699fcf93c00af181457f0bce8f5519e2b9b36b7713608a14da21bc1a8767d5c10a7791830f52580af70c SHA512 c7a43fe7ba1fa5224252d4d0982120b5ef353a20fd3b48c52f62a0ef46f63a795dcf2c5388449cdec3f24316dda77724f801358330baa71501e1dfd16dcda2ab
+DIST virtualenv-20.31.1.tar.gz 6076234 BLAKE2B d97adc477cf09d8944289d7e395428454e3867516bf3a84da08b598299b0a293eff5d6ea3a25dc906b1023d32eefcb0aa37f8515a68ab338de8d61c3c998df8f SHA512 1bac09af8a8db0104332e129f2a7a6623408547a1af63a2168a3e1519ff708c33d0665be489085548c0ae17962d787c5eec81d02920e32e256085ea4de5e7774
diff --git a/dev-python/virtualenv/files/virtualenv-20.31.1-ensurepip.patch b/dev-python/virtualenv/files/virtualenv-20.31.1-ensurepip.patch
new file mode 100644
index 000000000000..54a989fecb9d
--- /dev/null
+++ b/dev-python/virtualenv/files/virtualenv-20.31.1-ensurepip.patch
@@ -0,0 +1,34 @@
+From ab30a98f4bb53b7aad6fd130cf723271e2b7f638 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
+Date: Sat, 22 Jun 2024 14:28:23 +0200
+Subject: [PATCH] Use ensurepip wheels instead of local bundle
+
+---
+ src/virtualenv/seed/wheels/embed/__init__.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/virtualenv/seed/wheels/embed/__init__.py b/src/virtualenv/seed/wheels/embed/__init__.py
+index 6b3ef263..37c114f8 100644
+--- a/src/virtualenv/seed/wheels/embed/__init__.py
++++ b/src/virtualenv/seed/wheels/embed/__init__.py
+@@ -1,5 +1,6 @@
+ from __future__ import annotations
+
++import sysconfig
+ from pathlib import Path
+
+ from virtualenv.seed.wheels.util import Wheel
+@@ -40,6 +41,13 @@ MAX = "3.8"
+
+
+ def get_embed_wheel(distribution, for_py_version):
++ # Gentoo hack: get wheel from ensurepip directory
++ bundle_dir = Path(sysconfig.get_config_var("WHEEL_PKG_DIR"))
++ try:
++ return Wheel.from_path(next(bundle_dir.glob(f"{distribution}-*.whl")))
++ except StopIteration:
++ return None
++
+ mapping = BUNDLE_SUPPORT.get(for_py_version, {}) or BUNDLE_SUPPORT[MAX]
+ wheel_file = mapping.get(distribution)
+ if wheel_file is None:
diff --git a/dev-python/virtualenv/virtualenv-20.31.1.ebuild b/dev-python/virtualenv/virtualenv-20.31.1.ebuild
new file mode 100644
index 000000000000..48e79b25362d
--- /dev/null
+++ b/dev-python/virtualenv/virtualenv-20.31.1.ebuild
@@ -0,0 +1,138 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Virtual Python Environment builder"
+HOMEPAGE="
+ https://virtualenv.pypa.io/en/stable/
+ https://pypi.org/project/virtualenv/
+ https://github.com/pypa/virtualenv/
+"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/distlib-0.3.7[${PYTHON_USEDEP}]
+ >=dev-python/filelock-3.12.2[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3.9.1[${PYTHON_USEDEP}]
+
+ dev-python/ensurepip-pip
+ dev-python/ensurepip-setuptools
+ dev-python/ensurepip-wheel
+"
+# coverage is used somehow magically in virtualenv, maybe it actually
+# tests something useful
+BDEPEND="
+ dev-python/hatch-vcs[${PYTHON_USEDEP}]
+ test? (
+ $(python_gen_cond_dep '
+ dev-python/coverage[${PYTHON_USEDEP}]
+ dev-python/flaky[${PYTHON_USEDEP}]
+ >=dev-python/pip-22.2.1[${PYTHON_USEDEP}]
+ >=dev-python/pytest-mock-3.6.1[${PYTHON_USEDEP}]
+ dev-python/pytest-timeout[${PYTHON_USEDEP}]
+ dev-python/pytest-xdist[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-67.8[${PYTHON_USEDEP}]
+ dev-python/wheel[${PYTHON_USEDEP}]
+ >=dev-python/packaging-20.0[${PYTHON_USEDEP}]
+ ' "${PYTHON_TESTED[@]}")
+ $(python_gen_cond_dep '
+ dev-python/time-machine[${PYTHON_USEDEP}]
+ ' python3_{11..13})
+ $(python_gen_cond_dep '
+ >=dev-python/pytest-freezer-0.4.6[${PYTHON_USEDEP}]
+ ' 'pypy3*')
+ )
+"
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ local PATCHES=(
+ # use wheels from ensurepip bundle
+ "${FILESDIR}/${PN}-20.31.1-ensurepip.patch"
+ )
+
+ distutils-r1_src_prepare
+
+ # workaround test failures due to warnings from setuptools-scm, sigh
+ echo '[tool.setuptools_scm]' >> pyproject.toml || die
+
+ # remove useless pins
+ sed -i -e 's:,<[0-9.]*::' pyproject.toml || die
+
+ # remove bundled wheels
+ rm src/virtualenv/seed/wheels/embed/*.whl || die
+}
+
+python_test() {
+ if ! has "${EPYTHON}" "${PYTHON_TESTED[@]/_/.}"; then
+ einfo "Skipping testing on ${EPYTHON}"
+ return
+ fi
+
+ local EPYTEST_DESELECT=(
+ tests/unit/seed/embed/test_bootstrap_link_via_app_data.py::test_seed_link_via_app_data
+ # tests for old wheels with py3.7 support
+ tests/unit/seed/embed/test_pip_invoke.py::test_base_bootstrap_via_pip_invoke
+ tests/unit/seed/wheels/test_wheels_util.py::test_wheel_not_support
+ # broken by different wheel versions in ensurepip
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_string
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_exact
+ tests/unit/seed/wheels/test_acquire_find_wheel.py::test_find_latest_none
+ tests/unit/seed/wheels/test_acquire.py::test_download_wheel_bad_output
+ # hangs on a busy system, sigh
+ tests/unit/test_util.py::test_reentrant_file_lock_is_thread_safe
+ # TODO
+ tests/unit/create/via_global_ref/test_build_c_ext.py::test_can_build_c_extensions
+ )
+ case ${EPYTHON} in
+ pypy3.11)
+ EPYTEST_DESELECT+=(
+ # these don't like the executable called pypy3.11?
+ tests/unit/activation/test_bash.py::test_bash
+ tests/unit/activation/test_fish.py::test_fish
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ python3.1[23])
+ EPYTEST_DESELECT+=(
+ tests/unit/create/via_global_ref/test_build_c_ext.py
+ )
+ ;&
+ python3.11)
+ EPYTEST_DESELECT+=(
+ # TODO
+ tests/unit/discovery/py_info/test_py_info.py::test_fallback_existent_system_executable
+ )
+ ;;
+ esac
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x TZ=UTC
+ local plugins=( -p flaky -p pytest_mock )
+ if [[ ${EPYTHON} == pypy3* ]]; then
+ plugins+=( -p freezer )
+ else
+ plugins+=( -p time_machine )
+ fi
+ local EPYTEST_TIMEOUT=180
+ local EPYTEST_XDIST=1
+ epytest "${plugins[@]}"
+}
+
+src_install() {
+ distutils-r1_src_install
+
+ # remove bundled wheels, we're using ensurepip bundle instead
+ find "${ED}" -name '*.whl' -delete || die
+}