summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-08-16 19:02:30 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-08-16 19:02:30 +0000
commit294dc08adb9917b77c9bbe0bbbcb0d6cd3864f1e (patch)
tree3380da521f71c40692eb39c51f1c5637171a4f7f /dev-python
parent3f471618fa9a9f397ce312a909cad40adb6dc7c6 (diff)
downloadbaldeagleos-repo-294dc08adb9917b77c9bbe0bbbcb0d6cd3864f1e.tar.gz
baldeagleos-repo-294dc08adb9917b77c9bbe0bbbcb0d6cd3864f1e.tar.xz
baldeagleos-repo-294dc08adb9917b77c9bbe0bbbcb0d6cd3864f1e.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/argparse-manpage/Manifest2
-rw-r--r--dev-python/argparse-manpage/argparse-manpage-4.7.ebuild (renamed from dev-python/argparse-manpage/argparse-manpage-4.5.ebuild)9
-rw-r--r--dev-python/boto3/Manifest1
-rw-r--r--dev-python/boto3/boto3-1.40.11.ebuild53
-rw-r--r--dev-python/botocore/Manifest1
-rw-r--r--dev-python/botocore/botocore-1.40.11.ebuild67
-rw-r--r--dev-python/clang/Manifest1
-rw-r--r--dev-python/clang/clang-22.0.0_pre20250815.ebuild53
-rw-r--r--dev-python/croniter/croniter-6.0.0.ebuild2
-rw-r--r--dev-python/hypothesis/Manifest1
-rw-r--r--dev-python/hypothesis/hypothesis-6.138.2.ebuild125
-rw-r--r--dev-python/jupyterlab/Manifest1
-rw-r--r--dev-python/jupyterlab/jupyterlab-4.4.6.ebuild75
-rw-r--r--dev-python/lit/Manifest1
-rw-r--r--dev-python/lit/lit-22.0.0_pre20250815.ebuild45
-rw-r--r--dev-python/mkdocs-material/Manifest1
-rw-r--r--dev-python/mkdocs-material/mkdocs-material-9.6.17.ebuild73
-rw-r--r--dev-python/narwhals/Manifest4
-rw-r--r--dev-python/narwhals/narwhals-1.48.1.ebuild36
-rw-r--r--dev-python/narwhals/narwhals-2.1.0.ebuild40
-rw-r--r--dev-python/narwhals/narwhals-2.1.2.ebuild (renamed from dev-python/narwhals/narwhals-2.0.1.ebuild)3
-rw-r--r--dev-python/phonenumbers/Manifest1
-rw-r--r--dev-python/phonenumbers/phonenumbers-9.0.12.ebuild39
-rw-r--r--dev-python/pytest-cases/Manifest2
-rw-r--r--dev-python/pytest-cases/pytest-cases-3.9.1.ebuild (renamed from dev-python/pytest-cases/pytest-cases-3.8.6.ebuild)0
-rw-r--r--dev-python/rq/Manifest1
-rw-r--r--dev-python/rq/rq-2.5.0.ebuild81
-rw-r--r--dev-python/steam/Manifest2
-rw-r--r--dev-python/steam/files/steam-2.0.0-path-pycryptodome-and-gevent.patch188
-rw-r--r--dev-python/steam/steam-2.0.0-r1.ebuild (renamed from dev-python/steam/steam-1.6.1.ebuild)14
30 files changed, 832 insertions, 90 deletions
diff --git a/dev-python/argparse-manpage/Manifest b/dev-python/argparse-manpage/Manifest
index 18d126407ac5..7029429efbe7 100644
--- a/dev-python/argparse-manpage/Manifest
+++ b/dev-python/argparse-manpage/Manifest
@@ -1,2 +1,2 @@
-DIST argparse-manpage-4.5.gh.tar.gz 54783 BLAKE2B a348ad06990126965b48c64db209f13c91d68329fba57e4287b1a2ac7c246a25aedc25b70bfc01fd19b72c5700a67193da4ef47106a5b8ea863edf859ea07ecd SHA512 b9b166d2469d0fc6c9f6d1112bef553c1de32d1f558be4ef4f9b739b94d83acba2712eb9d324d9f3437bf421b833336c0eab34061ccd7b3cf810591705078bf2
DIST argparse-manpage-4.6.gh.tar.gz 55498 BLAKE2B a77629d1eeb49dd069789f1e435a9c0567d45912689c10796f75e8641fbe13d10603a1bf562f18248b443a8951575a4b98a2e670fd0a941b4235e9ac5fec6eb9 SHA512 d8036a8657f91a2b5a0e6eaf62e546f2ccf51563fb0327396851bbf6bb661ed7812a43cc215438b3466a821ee2276305e7136d5adbe32f18b50dd05b41f26396
+DIST argparse-manpage-4.7.gh.tar.gz 55685 BLAKE2B 815642af3120b14f5ed6c04ac06ea23cad555bbad6582d52b77119fc10286d263dd11877557ed59a2cc9fe01c362d37f855d36622f72213dcbe94e72336993b0 SHA512 bc5d8bdca97e5632e37a0b5be04990174c7a48a88b729543a8c86ab60109252b2bde5b50989bd635a33a8bd51483f0e6990e0f3c5dde293fd3164bec2b61f2b9
diff --git a/dev-python/argparse-manpage/argparse-manpage-4.5.ebuild b/dev-python/argparse-manpage/argparse-manpage-4.7.ebuild
index 17c4cac6eb55..18dd2179dbed 100644
--- a/dev-python/argparse-manpage/argparse-manpage-4.5.ebuild
+++ b/dev-python/argparse-manpage/argparse-manpage-4.7.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2022-2024 Gentoo Authors
+# Copyright 2022-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -22,17 +22,14 @@ LICENSE="Apache-2.0"
SLOT="0"
KEYWORDS="~amd64 ~arm ~arm64 ~loong ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86"
-RDEPEND="
- $(python_gen_cond_dep '
- dev-python/tomli[${PYTHON_USEDEP}]
- ' 3.10)
-"
BDEPEND="
test? (
dev-python/pip[${PYTHON_USEDEP}]
)
"
+EPYTEST_PLUGINS=()
+EPYTEST_XDIST=1
distutils_enable_tests pytest
python_test() {
diff --git a/dev-python/boto3/Manifest b/dev-python/boto3/Manifest
index d32030c1cf6f..60e798d98584 100644
--- a/dev-python/boto3/Manifest
+++ b/dev-python/boto3/Manifest
@@ -1,6 +1,7 @@
DIST boto3-1.39.14.gh.tar.gz 974493 BLAKE2B 14c6295f20cab6390c81d399585c9bd8291163a206e212400f44a23d871f43f02c76c0fae5201855cdd77cf45b598b5ceb86320b584fb48a5acb142133aa9d22 SHA512 332cc223c87f0823fded9c885c47892e0dd0abdd4346968425cbdec8e9eacd1d3d22720cb3a615876c47ba031b8b1f4a592d325c812e37f86690b0554438e9a4
DIST boto3-1.40.1.gh.tar.gz 978197 BLAKE2B c93f3550d41c13292dd8f4dcaab9d896faca127684a3ca72c253aa42ac44277c27ff0d68f47754c408701e97f0cefeda81e94565fba808544d5c16efaabb00d9 SHA512 c94eb4584161932f2d03ca9bf402a6e55358124e48fea94b71a5e22774aac6312f8ba7c69a18824c306b16a494cb3ed613cb96244c2718adbd53dd3b5829f934
DIST boto3-1.40.10.gh.tar.gz 984242 BLAKE2B 3d51a264c47daea902d580911a72f6539f7051a3efded16cea995e2b46c948d90be8998ea3810cdc5118d24251fcdfce64d6b64e58060640401694100d9d41ac SHA512 ebe751526f4237f5a6ad2fe4cbd6317f81f456bc59787a89cfe57e4f3ab4ebcb9e68109e506fd06293642fe85372600adbbba2ad2484805cd3ecebe951e776e5
+DIST boto3-1.40.11.gh.tar.gz 984481 BLAKE2B f484d37bd38fe8bc80ec6a8e64ecf85eeec8a4c777e30d11a0d108a135d31b2b96a684095fc4ef868def656f04f23d652459bb000f9f8764a27434fbfb923a01 SHA512 bcee5774a56a99ebc23bddaa49f89d85f128f02bb0eb95b9d04dec7c6b335464545fd6d0ad117ac6cb6766d17919049f174057349dd37a4262ed3fd7a654feb2
DIST boto3-1.40.6.gh.tar.gz 981330 BLAKE2B 929b4326d8d48e46750128e6236776b86fd5e59f0aab113e3ec797f18f138c7f52b30a79724f97de8083fd8e8baa04169e68e219ef5acf592561dabb838b4374 SHA512 65431a0d084298f51e0eee1753119f811261e9e57fdc5fa0491c9ce8d4fc745e705aed22527c8c06e003227c5c0bccc1a659e04bcc96a68fafb61bc53ec70a84
DIST boto3-1.40.7.gh.tar.gz 982158 BLAKE2B 36ab4722eab1c76514138e93e4ebf5ebf50714649d02c7465ecdbc74fdf32921270d3a71d67ffc788940ba0ef1b4c4b9e588c7c7777171de91dceecde18f7559 SHA512 48b237fb61d28f44543dbb6e4ea19e2dfd8c766ca9e7c17ef0d7728af72eed09a7ecb6354427d6aacf89a28a6dc54391c665a5aa248b65680918f9518f33dbbf
DIST boto3-1.40.8.gh.tar.gz 982609 BLAKE2B 2078913b650e09d356efb8c79c1a916c1574472b94e787d8e961fb3cdf8b646800bc4d01792c333f04117b877d51c3387054b3146482228c77265bb47936409b SHA512 1ea19fbb142400e8b17c345f2f94c14f6a7f13e12cdcf76714c7a28eb50a9cb038784b0c79d20587586bb0c1c21b0a42e12b8687beae364c6bd3b5b5b5fc51ed
diff --git a/dev-python/boto3/boto3-1.40.11.ebuild b/dev-python/boto3/boto3-1.40.11.ebuild
new file mode 100644
index 000000000000..bd6e26787db4
--- /dev/null
+++ b/dev-python/boto3/boto3-1.40.11.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_{11..14} )
+
+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.13.0[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGINS=()
+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() {
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/botocore/Manifest b/dev-python/botocore/Manifest
index 8df9969ca50a..09a8d9419847 100644
--- a/dev-python/botocore/Manifest
+++ b/dev-python/botocore/Manifest
@@ -1,6 +1,7 @@
DIST botocore-1.39.14.gh.tar.gz 15002421 BLAKE2B a054f85ee0076f1445e122e497683b31387323f52036f914ab1474eb14b32f923459079c539d0a1109c7f622e93e614b8550f9d5ce6e34a0e0a581561e12c9d5 SHA512 716c68404b06b24442da1b1018cfe06256a2b2855f846bd061ef44332db8a624cfd8f16a06169b2337d1c8e54c034aa46f3f3063f6e8d6c4020d1e50d30b6910
DIST botocore-1.40.1.gh.tar.gz 15055179 BLAKE2B 0fd7e4f74e51fe45284fe550bb853964e3f6039c2d5904996bc3f40e3912b75af4eab4c378edbc85b61fb6b3f5d1583493ad71540c7170c5a0ffb7ffefc5d99f SHA512 4a0b5d075f8335c5b9c08bad1088c31ded92deced98a7f606cf07853657f41d8f3ab224b13172d007c8de6d2127edce662c4deadcb8d4ed8693432d77b8e38e6
DIST botocore-1.40.10.gh.tar.gz 15122814 BLAKE2B bf89d87f5e5f550bf45dee6bf827b99d12ce5e3240f47449a5e67eb5735323d92ac768bdb9b3de96dd8df8738ba21b357edee94750543686378eee119804418f SHA512 e855a5166dfcbd3562d1ca1192444967484306d93b71861ff4c238376b719482522825da7dd42556cf7fc2ffed5584f1b817db0c2f5ccbd225a2a8d65251abb8
+DIST botocore-1.40.11.gh.tar.gz 15124864 BLAKE2B 3a9657b4d0d5c0f86f68f1e7c9fd2fa7145b807e015abb64c20c0ad80ce337b660cf617de3e0b1d5524eb7d766afa75aa253b1388383fdfe8509599b8d9bb200 SHA512 853bec0829b5fc17d373c3f9d617be671abb145dbffd0a672f3a9fe48a0b7c8099310bce43ca84f45a72aca1fbabbfb6acf74aefa5bf11fc1baf751959d098b7
DIST botocore-1.40.6.gh.tar.gz 15096678 BLAKE2B fb76ace4058c814bb8ef17bb216f5f7355eec401e4108d8a6569e07f97b14becb9e99652364dacb7e46e62f3ffaea2e5e1cd241ae832fe0a359ed58bbcfe3500 SHA512 faa311f29da484083f49a9ae7beda844b8878750c7474916ff7200b4a5fdc01e26295923c7a0f0bc4e4b1c22e5381f69546b8685fdeb2112f1c61810d3c9b58d
DIST botocore-1.40.7.gh.tar.gz 15098734 BLAKE2B d1ac4800e3cdce6a47f4c9da23b30768df3acad0113bf9da87ae2523d74840a79ee29775c072615e2080f7e98b268060801fe9cec653f5b1251c3b6d592422f6 SHA512 e1e81e4d0d0224614680244e4f7986f47a3042039b50ad61ceb4c589a14d11eaacfa1aa501a5791174a202813bd1db256802a73fb8d66c2b517d75ddfa67760b
DIST botocore-1.40.8.gh.tar.gz 15100807 BLAKE2B 0ecd33358b2d6edd6646b092fbc50d90ce4a5accf5427f9296a6bf66f610018659a75abf7f80375e40a561ca7b09139736b1cab0920810f97e65d6060adb20e7 SHA512 18db4b3c2f546700eccebc92e13b0e0ad57c98a0e2f1a5aeab0ea5f710d952d0206e8e4a9ce8f91da756c4f9589f6c5be80341dd6d5ed052ce9ae205a8dec2dd
diff --git a/dev-python/botocore/botocore-1.40.11.ebuild b/dev-python/botocore/botocore-1.40.11.ebuild
new file mode 100644
index 000000000000..a931fcaefec4
--- /dev/null
+++ b/dev-python/botocore/botocore-1.40.11.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_{11..14} )
+
+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_PLUGINS=()
+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
+ )
+
+ epytest tests/{functional,unit}
+}
diff --git a/dev-python/clang/Manifest b/dev-python/clang/Manifest
index 1ffefab8f9a6..c91e92b1bccb 100644
--- a/dev-python/clang/Manifest
+++ b/dev-python/clang/Manifest
@@ -9,6 +9,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577
DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
DIST llvm-project-190fcc28af585cb06480b026afd14ed87b18adb8.tar.gz 243483242 BLAKE2B f53d743ca332dfffe1f98d51f0528e14b61e4c11904ec20c4b4c9b285f8ca7eb25eb2ce8549e21566e63ab393697c74acd4a41fddc7bab282535aa8ccf9195da SHA512 b6bcf8647f35fee209fbd8a8c297f7d89f1aac9cac4e3c62abd73171350c4c7a98572ccd175ca0a8fce8d2fe00bf5cfbeea329689b687ab6261586e894397150
+DIST llvm-project-1c7720ef78dc5eb9196d6c178afe03b60f201b78.tar.gz 245239122 BLAKE2B 74342ef3a8105915201f6260aa8c633ccd67821894d33605d82ca0f02d0d0766fe3198e834c4c5cae8123d911b5a20849c04ea02aea52f57f8d1a09e17c18199 SHA512 10a63bdf7d790c5964274414dc01b480a976318f27b5807ca47d9149b97106530264a75930c689ca7cc417de3df44142280cd92559ff7873190f1045d79e7856
DIST llvm-project-20.1.7.src.tar.xz 147245448 BLAKE2B f7c57d1eba4e97e875b624dec3fb1b261a0203de7200366de5b3edcfbca2a170c41df46e91cd9cb78ae2af66120aef95334f5eb9628a1489e921c6bdf4cccfe8 SHA512 c2dbf6a468a8152409db7ff52902ecf8768a1d0328e386999f4f3672613903e1c10bddbba66b8553a6222952f8edb66266947f1fb21d0b09ae741e6249b6d1fa
DIST llvm-project-20.1.7.src.tar.xz.sig 566 BLAKE2B 72ce2a18c211cfce9581a9e3e71f1c55cf18672aa355267581220e1a89e3327f9e16107970b69bb8f10f390baa5e286487bdc4cc0a7d9155ec13a4977cd3f472 SHA512 eff885059d547f57b98bda1fc9631f716ca6c650cd48203d9ed5443a6afb9a2d4d91d3f5c8618e307c0a44b3040bce61fdc6bce965073adc537655755d9f2112
DIST llvm-project-20.1.8.src.tar.xz 147242952 BLAKE2B 7657ac0b26acc5affb1bfc91b912ade3191c5d77f3979d5a80d5f6ce52f56a7d1c448bd257398390bf10838f02faa6f3ece37a7327cced69d165ec2e2e699316 SHA512 f330e72e6a1da468569049437cc0ba7a41abb816ccece7367189344f7ebfef730f4788ac7af2bef0aa8a49341c15ab1d31e941ffa782f264d11fe0dc05470773
diff --git a/dev-python/clang/clang-22.0.0_pre20250815.ebuild b/dev-python/clang/clang-22.0.0_pre20250815.ebuild
new file mode 100644
index 000000000000..4dd3bb26996f
--- /dev/null
+++ b/dev-python/clang/clang-22.0.0_pre20250815.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+PYTHON_COMPAT=( python3_{11..14} )
+inherit llvm.org python-r1
+
+DESCRIPTION="Python bindings for llvm-core/clang"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="${PYTHON_REQUIRED_USE}"
+
+# The module is opening libclang.so directly, and doing some blasphemy
+# on top of it.
+DEPEND="
+ >=llvm-core/clang-${PV}:*
+ !llvm-core/llvm:0[clang(-),python(-)]
+ !llvm-core/clang:0[python(-)]
+"
+RDEPEND="
+ ${DEPEND}
+ ${PYTHON_DEPS}
+"
+BDEPEND="
+ ${PYTHON_DEPS}
+ test? (
+ llvm-core/clang:${LLVM_MAJOR}
+ )
+"
+
+LLVM_COMPONENTS=( clang/bindings/python )
+llvm.org_set_globals
+
+python_test() {
+ # tests rely on results from a specific clang version, so override
+ # the search path
+ local -x CLANG_LIBRARY_PATH=${BROOT}/usr/lib/llvm/${LLVM_MAJOR}/$(get_libdir)
+ local -x CLANG_NO_DEFAULT_CONFIG=1
+ "${EPYTHON}" -m unittest discover -v || die "Tests fail with ${EPYTHON}"
+}
+
+src_test() {
+ python_foreach_impl python_test
+}
+
+src_install() {
+ python_foreach_impl python_domodule clang
+}
diff --git a/dev-python/croniter/croniter-6.0.0.ebuild b/dev-python/croniter/croniter-6.0.0.ebuild
index 8c9343109e93..1cf0a81a42ed 100644
--- a/dev-python/croniter/croniter-6.0.0.ebuild
+++ b/dev-python/croniter/croniter-6.0.0.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="amd64 arm64 ~riscv x86"
+KEYWORDS="amd64 ~arm arm64 ~riscv x86"
RDEPEND="
dev-python/python-dateutil[${PYTHON_USEDEP}]
diff --git a/dev-python/hypothesis/Manifest b/dev-python/hypothesis/Manifest
index 1842c07eb66e..9d14dbcdcb8b 100644
--- a/dev-python/hypothesis/Manifest
+++ b/dev-python/hypothesis/Manifest
@@ -5,3 +5,4 @@ DIST hypothesis-6.136.9.gh.tar.gz 9600678 BLAKE2B 85f37b3c0476e0a65da2ba656aa60b
DIST hypothesis-6.137.1.gh.tar.gz 9604403 BLAKE2B ea59f519a85d47803607c2ff5aa34e9eabe713897867ea643e0aa16d96872ab31a2c25ab924d819bce7bb8483cf99702441287fb586348a415b1298f84747ea3 SHA512 7b2b45906738844bc7d584b950e956814dfd75877b0a0901d9394029f8bfc3266da561d1919d964861ebec3fa66bd556c6b7e5c03931dc95d9f41ffd53cffc49
DIST hypothesis-6.137.3.gh.tar.gz 9612265 BLAKE2B bc0c98872b08013194a11cad69e07632c04ac8f413a4dedb0a1a8a17112a477baecb2865fe11d189dff6b88d043d58a576e3d5de7edc944624dce680753cfe51 SHA512 6cdbd2d3e3aa69f8888d809fa81191279fa1a6321f6ba108dd8bc9956aab60fe82f22b3b442e561bb88961befc0dcdf3c854696ca979672122bea3285a7c163c
DIST hypothesis-6.138.0.gh.tar.gz 9613446 BLAKE2B 3901e6b3b5db7e6a25aab6d90fe798e64e8eb6f50ed506f16f94b44de13b7c1ed563f2483d81677f17a0c22b5524b2d3df2b5f4007256a30e3000765c9aa5f0b SHA512 c29febb646a113ae127655bb20be85daa63724054394c07bf58e5e1379d06a5d8464f6e7f28be3eaf058139ef4df65b49acee2d91e1ba16bbe8ad49d717b74fa
+DIST hypothesis-6.138.2.gh.tar.gz 9614617 BLAKE2B 04d919541f5146577123014533f84e60b9de71b5337072d97027a12cdd56d181437ccb5de6491c7079d835f26f7f519557c3c7e40d2bd6c1c027ddffd76fa94b SHA512 0c497b6dc9be6e19df1199195a9a83ec8b330b7e9998bb4314fc42898a7cd1fcd7e44c214f64ead78b115ddbbb2ac35c44176bb2969a0bc182e215ca0fe4b4b0
diff --git a/dev-python/hypothesis/hypothesis-6.138.2.ebuild b/dev-python/hypothesis/hypothesis-6.138.2.ebuild
new file mode 100644
index 000000000000..7a7443937da6
--- /dev/null
+++ b/dev-python/hypothesis/hypothesis-6.138.2.ebuild
@@ -0,0 +1,125 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+CLI_COMPAT=( python3_{11..13} )
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+PYTHON_REQ_USE="threads(+),sqlite"
+
+inherit distutils-r1 optfeature
+
+TAG=hypothesis-python-${PV}
+MY_P=hypothesis-${TAG}
+DESCRIPTION="A library for property based testing"
+HOMEPAGE="
+ https://github.com/HypothesisWorks/hypothesis/
+ https://pypi.org/project/hypothesis/
+"
+SRC_URI="
+ https://github.com/HypothesisWorks/hypothesis/archive/${TAG}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+S="${WORKDIR}/${MY_P}/hypothesis-python"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+IUSE="cli"
+
+RDEPEND="
+ >=dev-python/attrs-22.2.0[${PYTHON_USEDEP}]
+ >=dev-python/sortedcontainers-2.1.0[${PYTHON_USEDEP}]
+ cli? (
+ $(python_gen_cond_dep '
+ dev-python/black[${PYTHON_USEDEP}]
+ dev-python/click[${PYTHON_USEDEP}]
+ ' "${CLI_COMPAT[@]}")
+ )
+"
+BDEPEND="
+ test? (
+ dev-python/pexpect[${PYTHON_USEDEP}]
+ >=dev-python/pytest-8[${PYTHON_USEDEP}]
+ )
+"
+PDEPEND="
+ dev-python/hypothesis-gentoo[${PYTHON_USEDEP}]
+"
+
+EPYTEST_PLUGIN_LOAD_VIA_ENV=1
+EPYTEST_PLUGINS=( "${PN}" pytest-xdist )
+EPYTEST_RERUNS=5
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_test() {
+ # NB: paths need to be relative to pytest.ini,
+ # i.e. start with hypothesis-python/
+ local EPYTEST_DESELECT=()
+ case ${EPYTHON} in
+ python3.13t)
+ EPYTEST_DESELECT+=(
+ # TODO: missing warning
+ 'hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns'
+ )
+ ;;
+ python3.14*)
+ EPYTEST_DESELECT+=(
+ 'hypothesis-python/tests/cover/test_compat.py::test_resolve_fwd_refs[Foo-Union]'
+ 'hypothesis-python/tests/cover/test_lookup.py::test_builds_suggests_from_type[Union]'
+ hypothesis-python/tests/cover/test_attrs_inference.py::test_attrs_inference_builds
+ hypothesis-python/tests/cover/test_lookup.py::test_bytestring_not_treated_as_generic_sequence
+ hypothesis-python/tests/cover/test_lookup.py::test_issue_4194_regression
+ hypothesis-python/tests/cover/test_lookup.py::test_resolves_forwardrefs_to_builtin_types
+ hypothesis-python/tests/cover/test_lookup.py::test_specialised_collection_types
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_collection_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_container_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_contextmanager_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_iterable_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_reversible_as_generic
+ hypothesis-python/tests/cover/test_lookup_py37.py::test_resolving_standard_sequence_as_generic
+ hypothesis-python/tests/cover/test_random_module.py::test_evil_prng_registration_nonsense
+ hypothesis-python/tests/cover/test_random_module.py::test_passing_referenced_instance_within_function_scope_warns
+ hypothesis-python/tests/cover/test_random_module.py::test_register_random_within_nested_function_scope
+ hypothesis-python/tests/cover/test_random_module.py::test_registering_a_Random_is_idempotent
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_dot_access_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_missing_forward_ref
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_checking_only_forward_ref_wrong_type
+ hypothesis-python/tests/cover/test_type_lookup_forward_ref.py::test_bound_type_cheking_only_forward_ref
+ )
+ ;;
+ esac
+
+ local -x HYPOTHESIS_NO_PLUGINS=1
+ epytest -o filterwarnings= tests/{cover,pytest,quality}
+}
+
+src_install() {
+ local HAD_CLI=
+
+ distutils-r1_src_install
+
+ if [[ ! ${HAD_CLI} ]]; then
+ rm -r "${ED}/usr/bin" || die
+ fi
+}
+
+python_install() {
+ distutils-r1_python_install
+ if use cli && has "${EPYTHON}" "${CLI_COMPAT[@]/_/.}"; then
+ HAD_CLI=1
+ else
+ rm -r "${D}$(python_get_scriptdir)" || die
+ fi
+}
+
+pkg_postinst() {
+ optfeature "datetime support" dev-python/pytz
+ optfeature "dateutil support" dev-python/python-dateutil
+ optfeature "numpy support" dev-python/numpy
+ optfeature "django support" dev-python/django dev-python/pytz
+ optfeature "pandas support" dev-python/pandas
+ optfeature "pytest support" dev-python/pytest
+}
diff --git a/dev-python/jupyterlab/Manifest b/dev-python/jupyterlab/Manifest
index 8d100d2fae97..226751b432f5 100644
--- a/dev-python/jupyterlab/Manifest
+++ b/dev-python/jupyterlab/Manifest
@@ -1,3 +1,4 @@
DIST jupyterlab-4.3.7.tar.gz 21827544 BLAKE2B 6aa1886b3fa9e67c8e4978e90cf5b0e84466de15ad5dfa90c07913e1141b5c24b755f9374b34b9b9bcbd6f712f3d58b72d259e969c91263859ff7e16358a296b SHA512 57301337c8ebfc22b6ad8c09468b2f2642785967f20b74060e5ee50b0a3e1eb778f92d8179535dde5564c56b34102d096c4eee05f3fd3c6f6edbcf830f2765ed
DIST jupyterlab-4.4.4.tar.gz 23044296 BLAKE2B fec6a982a7eaadb8db68aa6e43c9cfb6391c54f7297609233372e21cfc0efc4c7ba87632838c00b540618129ffe85f90ca10fbbc7e786003f3fe67ccef720919 SHA512 342046a7163ee5e9aa137b89105286f104c0394d8b0a5d70e3b8e28c2df08f971cb2b472c47765e74b20c6563e59116b5dfff38f21a330c418a3e164481fd125
DIST jupyterlab-4.4.5.tar.gz 23037079 BLAKE2B ecae32df5481876f3e5e3543fdbb3c2c09a15ca34d778c7b46b7d63d8f9151898d55278e9b9848238f47a911b22244d73b176cdebcc53ad2bd2e276ad3f037ee SHA512 b833ff6ef4b2d9bdfa30ae3f3e9b76799c2602d5a2f4766fedf9e7b1c006f58cd681bce05be29bfa0df895b4d84dd329e3f3a3d2f5a5662257c17008fd821b6c
+DIST jupyterlab-4.4.6.tar.gz 23040936 BLAKE2B 4c0bb10bcca57a4b339771a44067939a39b2efb3dd38dd355c83665eda550de0c05897357d2b84fc2e029c237d8fb634a66d8799692cfd9fbf632a2b544cb562 SHA512 49b5fe3689130a34a14d6f3999818ab25ecb89618de795053b6cdd8d7694c78327bd2972cd05dc2b666698d7ea0336ae755ce207a4de7c9d0a394c78584e1887
diff --git a/dev-python/jupyterlab/jupyterlab-4.4.6.ebuild b/dev-python/jupyterlab/jupyterlab-4.4.6.ebuild
new file mode 100644
index 000000000000..6d5c3058cb28
--- /dev/null
+++ b/dev-python/jupyterlab/jupyterlab-4.4.6.ebuild
@@ -0,0 +1,75 @@
+# 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 )
+
+inherit distutils-r1 pypi xdg
+
+DESCRIPTION="JupyterLab computational environment"
+HOMEPAGE="
+ https://jupyter.org/
+ https://github.com/jupyterlab/jupyterlab/
+ https://pypi.org/project/jupyterlab/
+"
+
+LICENSE="BSD MIT GPL-3 Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/async-lru-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.28.0[${PYTHON_USEDEP}]
+ >=dev-python/ipykernel-6.5.0[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.3[${PYTHON_USEDEP}]
+ dev-python/jupyter-core[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-lsp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/jupyter-server-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/jupyter-server-3[${PYTHON_USEDEP}]
+ >=dev-python/jupyterlab-server-2.27.1[${PYTHON_USEDEP}]
+ <dev-python/jupyterlab-server-3[${PYTHON_USEDEP}]
+ >=dev-python/notebook-shim-0.2[${PYTHON_USEDEP}]
+ dev-python/packaging[${PYTHON_USEDEP}]
+ >=dev-python/setuptools-41.1.0[${PYTHON_USEDEP}]
+ >=dev-python/tornado-6.2.0[${PYTHON_USEDEP}]
+ dev-python/traitlets[${PYTHON_USEDEP}]
+ net-libs/nodejs[npm]
+"
+
+BDEPEND="
+ dev-python/hatch-jupyter-builder[${PYTHON_USEDEP}]
+ test? (
+ dev-python/requests[${PYTHON_USEDEP}]
+ dev-python/requests-cache[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_DESELECT=(
+ # These tests call npm and want internet
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_uninstall_core_extension
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned_folder
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_install_and_uninstall_pinned
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom_minimal_core_config
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_custom
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build_check
+ jupyterlab/tests/test_jupyterlab.py::TestExtension::test_build
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_clear
+ jupyterlab/tests/test_build_api.py::TestBuildAPI::test_build
+)
+
+EPYTEST_IGNORE=(
+ jupyterlab/tests/test_announcements.py
+)
+
+EPYTEST_PLUGINS=( pytest-{console-scripts,jupyter,tornasync,timeout} )
+distutils_enable_tests pytest
+# TODO: package sphinx_copybutton
+#distutils_enable_sphinx docs/source dev-python/sphinx-rtd-theme dev-python/myst-parser
+
+python_install_all() {
+ distutils-r1_python_install_all
+ mv "${ED}/usr/etc" "${ED}/etc" || die
+}
diff --git a/dev-python/lit/Manifest b/dev-python/lit/Manifest
index 1ffefab8f9a6..c91e92b1bccb 100644
--- a/dev-python/lit/Manifest
+++ b/dev-python/lit/Manifest
@@ -9,6 +9,7 @@ DIST llvm-project-18.1.8.src.tar.xz.sig 566 BLAKE2B 6ab0efc5b38d4483f4e32e8b8577
DIST llvm-project-19.1.7.src.tar.xz 141249332 BLAKE2B 1259ed7f9aca7b35e89d818befdee20fd8bed4d2dc2c2c6f6f56451fd43d35ac03a0a5a406e142d22b25137999dc5b17471c196f8fcf79f20a8296832d900f6d SHA512 c7d63286d662707a9cd54758c9e3aaf52794a91900c484c4a6efa62d90bc719d5e7a345e4192feeb0c9fd11c82570d64677c781e5be1d645556b6aa018e47ec8
DIST llvm-project-19.1.7.src.tar.xz.sig 438 BLAKE2B 4015140f4ba77de45039bdbdfbaf6f30e75705123d067ea97175d91d7a5b6a75008df01d99ae7aa16aaa3b101f3f41e38d01f04158f95a261d617b3ede0254cd SHA512 195797b06ac80a742e0ccbc03a50dc06dd2e04377d783d5474e3e72c5a75203b60292b047929312a411d22b137a239943fba414a4d136a2be14cbff978eb6bda
DIST llvm-project-190fcc28af585cb06480b026afd14ed87b18adb8.tar.gz 243483242 BLAKE2B f53d743ca332dfffe1f98d51f0528e14b61e4c11904ec20c4b4c9b285f8ca7eb25eb2ce8549e21566e63ab393697c74acd4a41fddc7bab282535aa8ccf9195da SHA512 b6bcf8647f35fee209fbd8a8c297f7d89f1aac9cac4e3c62abd73171350c4c7a98572ccd175ca0a8fce8d2fe00bf5cfbeea329689b687ab6261586e894397150
+DIST llvm-project-1c7720ef78dc5eb9196d6c178afe03b60f201b78.tar.gz 245239122 BLAKE2B 74342ef3a8105915201f6260aa8c633ccd67821894d33605d82ca0f02d0d0766fe3198e834c4c5cae8123d911b5a20849c04ea02aea52f57f8d1a09e17c18199 SHA512 10a63bdf7d790c5964274414dc01b480a976318f27b5807ca47d9149b97106530264a75930c689ca7cc417de3df44142280cd92559ff7873190f1045d79e7856
DIST llvm-project-20.1.7.src.tar.xz 147245448 BLAKE2B f7c57d1eba4e97e875b624dec3fb1b261a0203de7200366de5b3edcfbca2a170c41df46e91cd9cb78ae2af66120aef95334f5eb9628a1489e921c6bdf4cccfe8 SHA512 c2dbf6a468a8152409db7ff52902ecf8768a1d0328e386999f4f3672613903e1c10bddbba66b8553a6222952f8edb66266947f1fb21d0b09ae741e6249b6d1fa
DIST llvm-project-20.1.7.src.tar.xz.sig 566 BLAKE2B 72ce2a18c211cfce9581a9e3e71f1c55cf18672aa355267581220e1a89e3327f9e16107970b69bb8f10f390baa5e286487bdc4cc0a7d9155ec13a4977cd3f472 SHA512 eff885059d547f57b98bda1fc9631f716ca6c650cd48203d9ed5443a6afb9a2d4d91d3f5c8618e307c0a44b3040bce61fdc6bce965073adc537655755d9f2112
DIST llvm-project-20.1.8.src.tar.xz 147242952 BLAKE2B 7657ac0b26acc5affb1bfc91b912ade3191c5d77f3979d5a80d5f6ce52f56a7d1c448bd257398390bf10838f02faa6f3ece37a7327cced69d165ec2e2e699316 SHA512 f330e72e6a1da468569049437cc0ba7a41abb816ccece7367189344f7ebfef730f4788ac7af2bef0aa8a49341c15ab1d31e941ffa782f264d11fe0dc05470773
diff --git a/dev-python/lit/lit-22.0.0_pre20250815.ebuild b/dev-python/lit/lit-22.0.0_pre20250815.ebuild
new file mode 100644
index 000000000000..fdf920bda34f
--- /dev/null
+++ b/dev-python/lit/lit-22.0.0_pre20250815.ebuild
@@ -0,0 +1,45 @@
+# 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_{11..14} )
+
+inherit distutils-r1 llvm.org
+
+DESCRIPTION="A stand-alone install of the LLVM suite testing tool"
+HOMEPAGE="https://llvm.org/"
+
+LICENSE="Apache-2.0-with-LLVM-exceptions UoI-NCSA"
+SLOT="0"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+# Tests require 'FileCheck' and 'not' utilities (from llvm)
+BDEPEND="
+ test? (
+ dev-python/psutil[${PYTHON_USEDEP}]
+ llvm-core/llvm
+ )
+"
+
+LLVM_COMPONENTS=( llvm/utils/lit )
+llvm.org_set_globals
+
+# TODO: move the manpage generation here (from llvm-core/llvm)
+
+src_prepare() {
+ # flaky test
+ # https://github.com/llvm/llvm-project/issues/72022
+ rm tests/progress-bar.py || die
+
+ cd "${WORKDIR}" || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ local -x LIT_PRESERVES_TMP=1
+ local litflags=$(get_lit_flags)
+ ./lit.py ${litflags//;/ } tests || die
+}
diff --git a/dev-python/mkdocs-material/Manifest b/dev-python/mkdocs-material/Manifest
index f90863bae71f..5e5a30e9c865 100644
--- a/dev-python/mkdocs-material/Manifest
+++ b/dev-python/mkdocs-material/Manifest
@@ -1,2 +1,3 @@
DIST mkdocs-material-9.6.15.gh.tar.gz 14818385 BLAKE2B 5d2d96489563ac750487766492601c7543c500b8dac8528d9b9109b3fa136016649bfe74c4301b3309972bb4c49c86390d3dfe39daef35c141701a912429ed0c SHA512 0dd1b067da1eef9e7a52a0620fe9c19745fa3bf8f8addeba456b934712401a5fb0a29bb7cee05b6b04a25a8377192e3245477d43ed38d2f1c31cdaaaf5d5c230
DIST mkdocs-material-9.6.16.gh.tar.gz 14916715 BLAKE2B f13d548d74870ce31fa99f6b4d76ee93cf31f67b0f04270bfe1c9e71ff2af5266d33c0015e7fa2f6270f1e1505d22a31917f9394086a2cb0c5dd459e489d2970 SHA512 2e62b54b04f4efff49648829a2da3bb43a7303bca38f3a26094355383ec7f190ae35e273ca37b6f86e6d09697312f0acb90e9963771a5f4d4214fcc0a92e8134
+DIST mkdocs-material-9.6.17.gh.tar.gz 14917296 BLAKE2B 27d8d3df60117ef462db61ff3c96f672f3ad890f45532f0d441b34a5f929df26b113839c305a2bd411100de5d2c2fe1f319974ebae7384d09dd17054bd6290a8 SHA512 91cbbaa6ac8087194176c185af34d0a2ae91d690bb959bba2cb4e192efe0e44dc126c15d8508e470ec4583c59e3f0322f69a7c7e08f3594ab7e33d8a7aa0d8c7
diff --git a/dev-python/mkdocs-material/mkdocs-material-9.6.17.ebuild b/dev-python/mkdocs-material/mkdocs-material-9.6.17.ebuild
new file mode 100644
index 000000000000..b2827a7488c5
--- /dev/null
+++ b/dev-python/mkdocs-material/mkdocs-material-9.6.17.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=hatchling
+PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 )
+
+DOCS_BUILDER="mkdocs"
+DOCS_DEPEND="
+ dev-python/mkdocs-material-extensions
+ dev-python/mkdocs-minify-plugin
+ dev-python/mkdocs-redirects
+"
+
+inherit distutils-r1 docs
+
+DESCRIPTION="A Material Design theme for MkDocs"
+HOMEPAGE="
+ https://github.com/squidfunk/mkdocs-material/
+ https://pypi.org/project/mkdocs-material/
+"
+SRC_URI="
+ https://github.com/squidfunk/${PN}/archive/${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT"
+# bundled icons
+LICENSE+=" Apache-2.0 CC0-1.0 CC-BY-4.0 MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86"
+IUSE="social"
+
+RDEPEND="
+ >=dev-python/babel-2.10.3[${PYTHON_USEDEP}]
+ >=dev-python/colorama-0.4[${PYTHON_USEDEP}]
+ >=dev-python/jinja2-3.0.2[${PYTHON_USEDEP}]
+ >=dev-python/lxml-4.6[${PYTHON_USEDEP}]
+ >=dev-python/markdown-3.2[${PYTHON_USEDEP}]
+ >=dev-python/mkdocs-1.5.3[${PYTHON_USEDEP}]
+ >=dev-python/paginate-0.5.6[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.16[${PYTHON_USEDEP}]
+ >=dev-python/pymdown-extensions-10.2[${PYTHON_USEDEP}]
+ >=dev-python/readtime-2.0[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '
+ >=dev-python/regex-2022.4.24[${PYTHON_USEDEP}]
+ ' 'python*')
+ >=dev-python/requests-2.26[${PYTHON_USEDEP}]
+ social? (
+ >=dev-python/pillow-10.2[${PYTHON_USEDEP}]
+ >=media-gfx/cairosvg-2.5[${PYTHON_USEDEP}]
+ )
+"
+BDEPEND="
+ >=dev-python/trove-classifiers-2023.10.18[${PYTHON_USEDEP}]
+"
+# mkdocs-material-extensions depends on mkdocs-material creating a circular dep
+PDEPEND="
+ >=dev-python/mkdocs-material-extensions-1.2[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ # simplify pyproject to remove extra deps for metadata
+ "${FILESDIR}/${PN}-8.5.7-simplify-build.patch"
+ # import backrefs only when used (i.e. never)
+ "${FILESDIR}/${PN}-9.6.7-backrefs.patch"
+)
+
+src_prepare() {
+ distutils-r1_src_prepare
+ echo "__version__ = '${PV}'" > gentoo_version.py || die
+}
diff --git a/dev-python/narwhals/Manifest b/dev-python/narwhals/Manifest
index 77d2651563e9..5cd6b6a4aa8a 100644
--- a/dev-python/narwhals/Manifest
+++ b/dev-python/narwhals/Manifest
@@ -1,4 +1,2 @@
-DIST narwhals-1.48.1.tar.gz 515882 BLAKE2B 89e829161aeb3e7a986d26f11f0108c506c028d2f1685544913c47166865283b1ce62099562df1f85ebe5d4352e6f6d3eecd78da8d62a8a19fc9f8772995ebba SHA512 8096099844fe8042e53f5c8da39de5a843d94c892ef199d11f9ffe3b4ec58acea59d0160a11a51d9d347ddf7229ba997be093fa7e4bd9313e778ebc957da1d83
-DIST narwhals-2.0.1.tar.gz 525541 BLAKE2B fe34d06d1539bc95960833b8dd99ee850ece2a2bf4dc818a47d1f8febdcecaf9448427f54313f27ad02cbc84406a7c0f743b77f58a517788fcd97a27dcb7f2d4 SHA512 5462f25adb23c7ddf67329f9aeb9087be5d4698659de43dc17c35d87e43466a32d35f9a9d7d70e02dcf5da6cd3e546a53616241c865213625708be4d1809fc25
-DIST narwhals-2.1.0.tar.gz 529626 BLAKE2B 59b8cf1dc5ea766c5aa00a9b833ea3ef98659c2e09ce4722845789550674dacbe205b0c72ee1ac9359640e83f46a27b1c7a036ea49fcee9e176d34edb57bfbca SHA512 33426cf685d0d45933f869a7ec91a6f9f94e1b62492287203ef0897880d4028703ca8bb0a74f3b038350e15d40c17330fddfcd1e0a20096db1f37d9c145f03be
DIST narwhals-2.1.1.tar.gz 529925 BLAKE2B 0ba72c0ee85dc832bda4b5e5382b1109cbc8b46940e58e027b0143fff58910d99b2a39c0dec9315a74ff283e51c3acec2bed4a65f351a5a41c952c2d84a93733 SHA512 6b709f841e734837da037f4b27e14029e07935475c18e22fc10692dbb138de709687c60fda583bfe62b27670f4c77e095dfe4a746ccdeef9dc451d8cbe3ac27c
+DIST narwhals-2.1.2.tar.gz 533772 BLAKE2B 3a2d4508c1c50625484e0d5a056e5a11445a31a209ed485896b9b25f6c88b5cdd288382659caa1a508496de7e2214e775aac2f8c71e38c35957b6c7cfff7859c SHA512 3ad8b45b6187fea5c0ad10563818583a2e4bad72865deb5fb8f9134bacfdb304a41b0be43095a36830db0c01793bc4c13900242ca5191c5a0518fe481f74ebb7
diff --git a/dev-python/narwhals/narwhals-1.48.1.ebuild b/dev-python/narwhals/narwhals-1.48.1.ebuild
deleted file mode 100644
index d2a95b1951d3..000000000000
--- a/dev-python/narwhals/narwhals-1.48.1.ebuild
+++ /dev/null
@@ -1,36 +0,0 @@
-# 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 pypi
-
-DESCRIPTION="Extremely lightweight compatibility layer between dataframe libraries"
-HOMEPAGE="
- https://github.com/narwhals-dev/narwhals/
- https://pypi.org/project/narwhals/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-BDEPEND="
- test? (
- >=dev-python/pandas-1.1.3[${PYTHON_USEDEP}]
- >=dev-python/pyarrow-13.0.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( hypothesis pytest-env )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- # make hypothesis more forgiving
- local -x CI=1
- epytest --runslow --constructors="pandas,pandas[nullable],pandas[pyarrow],pyarrow"
-}
diff --git a/dev-python/narwhals/narwhals-2.1.0.ebuild b/dev-python/narwhals/narwhals-2.1.0.ebuild
deleted file mode 100644
index 3dc3c97bd38d..000000000000
--- a/dev-python/narwhals/narwhals-2.1.0.ebuild
+++ /dev/null
@@ -1,40 +0,0 @@
-# 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 pypi
-
-DESCRIPTION="Extremely lightweight compatibility layer between dataframe libraries"
-HOMEPAGE="
- https://github.com/narwhals-dev/narwhals/
- https://pypi.org/project/narwhals/
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64"
-
-BDEPEND="
- test? (
- >=dev-python/pandas-1.1.3[${PYTHON_USEDEP}]
- >=dev-python/pyarrow-13.0.0[${PYTHON_USEDEP}]
- )
-"
-
-EPYTEST_PLUGINS=( hypothesis pytest-env )
-EPYTEST_XDIST=1
-distutils_enable_tests pytest
-
-python_test() {
- local EPYTEST_DESELECT=(
- # segfaults
- # https://github.com/apache/arrow/issues/47252
- 'tests/modern_polars/unpivot_test.py::test_unpivot[pyarrow]'
- )
-
- epytest --runslow --constructors="pandas,pandas[nullable],pandas[pyarrow],pyarrow"
-}
diff --git a/dev-python/narwhals/narwhals-2.0.1.ebuild b/dev-python/narwhals/narwhals-2.1.2.ebuild
index 3dc3c97bd38d..3438ae88552e 100644
--- a/dev-python/narwhals/narwhals-2.0.1.ebuild
+++ b/dev-python/narwhals/narwhals-2.1.2.ebuild
@@ -34,6 +34,9 @@ python_test() {
# segfaults
# https://github.com/apache/arrow/issues/47252
'tests/modern_polars/unpivot_test.py::test_unpivot[pyarrow]'
+ # fragile to parallel merges that can cause non-atomic .dist-info
+ # changes
+ tests/system_info_test.py::test_get_sys_info
)
epytest --runslow --constructors="pandas,pandas[nullable],pandas[pyarrow],pyarrow"
diff --git a/dev-python/phonenumbers/Manifest b/dev-python/phonenumbers/Manifest
index 9d6296668b3a..55fd29f498be 100644
--- a/dev-python/phonenumbers/Manifest
+++ b/dev-python/phonenumbers/Manifest
@@ -1,2 +1,3 @@
DIST python-phonenumbers-9.0.11.gh.tar.gz 4918150 BLAKE2B 2c954fab20dbf0ef1a7e09b4c38d3bb52c8196f9a90ab543f50a18d517f566b9ece49e26ea212170ec446752b72fe6fdc1ecacf1a9fbf5bb8ca0454421f38a34 SHA512 803881bfa0b0b97e5fb0db65c8c907420da2c8804acb9892b3ca712cb19359f05757c62a4d8c10f9c8f0ee36ef0a0d2bcec083aab1da54cdbaa5311273d01459
+DIST python-phonenumbers-9.0.12.gh.tar.gz 4915140 BLAKE2B 4929e25d0525c12321e71c4b7c3262fa22ea3484c4a5522f3995af737dc3c81aedaf44ad9954ac41e7c815d752108c77ae078294b753d70a67358901dff6b87c SHA512 67ab051e45156f635ad37a075abdeb2b04094de4faa964902e4b15bd78736264f27f3b880aceaa54a3b47e6f78129b4c196824446a82dfe2c6ec11ad7dddc074
DIST python-phonenumbers-r9.0.10.gh.tar.gz 4915184 BLAKE2B cfa395dde633bfda4d7eea1e0946a9007bcc93994fa32ab6d29af24bc1e1191d4cbd4a71ea4ed600832879f4d7795c95f3e337f79316f43ad28e7376ab4cf671 SHA512 fad4fa5820a8a34110a3686c4ce7bbe004a81333c70e056ea3ad613b7e992fb51e1407559ca9cbe0075a5c16c4baba75dd067ed17f712a75bde3ef04f42544b1
diff --git a/dev-python/phonenumbers/phonenumbers-9.0.12.ebuild b/dev-python/phonenumbers/phonenumbers-9.0.12.ebuild
new file mode 100644
index 000000000000..a4046879a533
--- /dev/null
+++ b/dev-python/phonenumbers/phonenumbers-9.0.12.ebuild
@@ -0,0 +1,39 @@
+# 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_{11..14} )
+
+inherit distutils-r1
+
+MY_P=python-${P}
+DESCRIPTION="Python port of Google's libphonenumber"
+HOMEPAGE="
+ https://github.com/daviddrysdale/python-phonenumbers/
+ https://pypi.org/project/phonenumbers/
+"
+SRC_URI="
+ https://github.com/daviddrysdale/python-phonenumbers/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}/python
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="test"
+RESTRICT="!test? ( test )"
+
+BDEPEND="
+ test? (
+ dev-python/protobuf[${PYTHON_USEDEP}]
+ )
+"
+
+DOCS=( ../README.md )
+
+python_test() {
+ "${EPYTHON}" testwrapper.py -v || die "Tests failed with ${EPYTHON}"
+}
diff --git a/dev-python/pytest-cases/Manifest b/dev-python/pytest-cases/Manifest
index 312c73d614f5..a296c97e116c 100644
--- a/dev-python/pytest-cases/Manifest
+++ b/dev-python/pytest-cases/Manifest
@@ -1 +1 @@
-DIST pytest_cases-3.8.6.tar.gz 1092150 BLAKE2B 6db9e9e2116a5b961c615eec344439dd5afd86f6727e22ecdcce903368768886a89818a29766212b4ad663f9e7c2c004e3fb439937ce2a468dd7a3ac2adf7f04 SHA512 fe887a09ea63772c0c624afc35601c398b47884bf6f7571ffd5856a4c00df8633acdf6562972329c12ba27d54307c58435d1dcbd661fe7d32483e64fba40aff5
+DIST pytest_cases-3.9.1.tar.gz 1094071 BLAKE2B 58399107030bc97d08a8a43534eb840d5426e02025215e58d0f1a48300d1b64a50969636b5dbcb96ad3b3479383ff0f6663e05b426d811a7e0491d2801894fd7 SHA512 46c8716bbd7a926c2b12c9190734f1779f236b8c8954aead75b4b83ea914e60520281bc1fd51420773ce08111dcb4e8f99ac646e468700bc1eb7e47873dd65dc
diff --git a/dev-python/pytest-cases/pytest-cases-3.8.6.ebuild b/dev-python/pytest-cases/pytest-cases-3.9.1.ebuild
index 8197af9190af..8197af9190af 100644
--- a/dev-python/pytest-cases/pytest-cases-3.8.6.ebuild
+++ b/dev-python/pytest-cases/pytest-cases-3.9.1.ebuild
diff --git a/dev-python/rq/Manifest b/dev-python/rq/Manifest
index cb63539c0d9e..35b871ba37b0 100644
--- a/dev-python/rq/Manifest
+++ b/dev-python/rq/Manifest
@@ -1 +1,2 @@
DIST rq-2.4.1.tar.gz 664540 BLAKE2B e5e8617c165c555b150fc3e8d6eacdfb697d6490cf5d972eaf78437a92d70c80e3a8c36e399e85716f30bf0a80a87f49602abc50ad98074aa228dcfb2c99ad4a SHA512 4a4dc8810f2cfda8ec7af722358ccf18b61fdd2898177224ca1d686f1d20483518419adc88027bb671bc38e605894244189c0c0c6eabbaab0550a4ae632457da
+DIST rq-2.5.0.tar.gz 666978 BLAKE2B 951c34282caef2983e58edc6fe3f92209941baa4d32767dd8d6f068e866ba569320bf7daaaec983e7e9c74e51eea47661c1114828b1cb57114e2554d5fc8f796 SHA512 fb76fdf9f1f73b2ce2a59b049a369749695b38f58ee62c14727d2b118fe97ca471d7113bd8825d8aa8661541b4b8b9355a3421c9eed86c2477433e8a49151ad9
diff --git a/dev-python/rq/rq-2.5.0.ebuild b/dev-python/rq/rq-2.5.0.ebuild
new file mode 100644
index 000000000000..52959d99a024
--- /dev/null
+++ b/dev-python/rq/rq-2.5.0.ebuild
@@ -0,0 +1,81 @@
+# 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} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Simple, lightweight library for creating and processing background jobs"
+HOMEPAGE="
+ https://python-rq.org/
+ https://github.com/rq/rq/
+ https://pypi.org/project/rq/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >=dev-python/click-5.0[${PYTHON_USEDEP}]
+ dev-python/croniter[${PYTHON_USEDEP}]
+ >=dev-python/redis-4.5.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-db/redis
+ dev-python/psutil[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_PLUGINS=()
+distutils_enable_tests pytest
+
+src_prepare() {
+ distutils-r1_src_prepare
+
+ # strip pin
+ sed -i -e '/dependencies/s:,!=[0-9.]*::' pyproject.toml || die
+}
+
+src_test() {
+ local redis_pid="${T}"/redis.pid
+ local redis_port=6379
+ local redis_test_config="daemonize yes
+ pidfile ${redis_pid}
+ port ${redis_port}
+ bind 127.0.0.1
+ "
+
+ # Spawn Redis itself for testing purposes
+ # NOTE: On sam@'s machine, spawning Redis can hang in the sandbox.
+ # I'm not restricting tests yet because this doesn't happen for anyone else AFAICT.
+ einfo "Spawning Redis"
+ einfo "NOTE: Port ${redis_port} must be free"
+ /usr/sbin/redis-server - <<< "${redis_test_config}" || die
+
+ # Run the actual tests
+ distutils-r1_src_test
+
+ # Clean up afterwards
+ kill "$(<"${redis_pid}")" || die
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # requires <sentry-sdk-2
+ tests/test_sentry.py::TestSentry::test_failure_capture
+ # hang
+ tests/test_commands.py::TestCommands::test_shutdown_command
+ tests/test_worker_pool.py::TestWorkerPool::test_check_workers
+ tests/test_worker_pool.py::TestWorkerPool::test_reap_workers
+ tests/test_dependencies.py::TestDependencies
+ # already present in older versions
+ tests/test_spawn_worker.py::TestWorker::test_work_and_quit
+ )
+
+ epytest
+}
diff --git a/dev-python/steam/Manifest b/dev-python/steam/Manifest
index 9a40ad9f58e0..60ad0dc2881e 100644
--- a/dev-python/steam/Manifest
+++ b/dev-python/steam/Manifest
@@ -1 +1 @@
-DIST steam-1.6.1.gh.tar.gz 888055 BLAKE2B b02fcfbab0a3fba49eedc66720f50c3c191b01a0361500c5c8bb24c685bc6a463f25185bbb128483d8bd65a63474ed40689dd3174205610438295dd7e9e0b324 SHA512 4dcc2777232f0ddd946512edad495385d0132658eeb10e9510e56e472ae5ce193fe1de0e7e36b552aedef792ca2cf4d1a1429ecee535c948c512c5f5055a6632
+DIST steam-2.0.0.gh.tar.gz 675414 BLAKE2B 9ee5c412a1a7f498a773aaf290bba4b268ea71e929d6cec3cbe6629f4af994cb375aaac102364d5fe3aa5b14c40078a53ecd12adea09ee9bb06f8412d6880994 SHA512 7168dc500ae116dc8230abf9405cfd46f9ec9a518e9c0e2ee7902a610dbc2fff92e975061f080c257746979b9fd240d713ced53603b44cbc5361118174eae1b9
diff --git a/dev-python/steam/files/steam-2.0.0-path-pycryptodome-and-gevent.patch b/dev-python/steam/files/steam-2.0.0-path-pycryptodome-and-gevent.patch
new file mode 100644
index 000000000000..571a48d17afd
--- /dev/null
+++ b/dev-python/steam/files/steam-2.0.0-path-pycryptodome-and-gevent.patch
@@ -0,0 +1,188 @@
+From dd8334ce47dbb0c5cc5547094e9800e7789821ce Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Gon=C3=A7alo=20Negrier=20Duarte?=
+ <gonegrier.duarte@gmail.com>
+Date: Thu, 14 Aug 2025 15:30:13 +0100
+Subject: [PATCH] dev-python: patched for `dev-python/pycryptodome` and remove
+ test depend on `dev-python/gevent`
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* Since `dev-python/gevent` was removed in BUG 879011 so
+ tests/test_core_cm.py need to be removed
+
+Signed-off-by: Gonçalo Negrier Duarte <gonegrier.duarte@gmail.com>
+---
+ steam/core/crypto.py | 8 +--
+ tests/test_core_cm.py | 140 ------------------------------------------
+ 2 files changed, 4 insertions(+), 144 deletions(-)
+ delete mode 100644 tests/test_core_cm.py
+
+diff --git a/steam/core/crypto.py b/steam/core/crypto.py
+index 9557ee6..7894dcf 100644
+--- a/steam/core/crypto.py
++++ b/steam/core/crypto.py
+@@ -6,10 +6,10 @@ from os import urandom as random_bytes
+ from struct import pack
+ from base64 import b64decode
+
+-from Cryptodome.Hash import MD5, SHA1, HMAC
+-from Cryptodome.PublicKey.RSA import import_key as rsa_import_key, construct as rsa_construct
+-from Cryptodome.Cipher import PKCS1_OAEP, PKCS1_v1_5
+-from Cryptodome.Cipher import AES as AES
++from Crypto.Hash import MD5, SHA1, HMAC
++from Crypto.PublicKey.RSA import import_key as rsa_import_key, construct as rsa_construct
++from Crypto.Cipher import PKCS1_OAEP, PKCS1_v1_5
++from Crypto.Cipher import AES as AES
+
+
+ class UniverseKey:
+diff --git a/tests/test_core_cm.py b/tests/test_core_cm.py
+deleted file mode 100644
+index bbc2c27..0000000
+--- a/tests/test_core_cm.py
++++ /dev/null
+@@ -1,140 +0,0 @@
+-import unittest
+-from unittest.mock import patch
+-import gevent
+-import gevent.queue
+-
+-from steam.core.cm import CMClient
+-
+-class CMClient_Scenarios(unittest.TestCase):
+- test_channel_key = b'SESSION KEY LOL'
+-
+- def setUp(self):
+- # mock out crypto
+- patcher = patch('steam.core.crypto.generate_session_key')
+- self.addCleanup(patcher.stop)
+- self.gen_skey = patcher.start()
+- self.gen_skey.return_value = (self.test_channel_key, b'PUBKEY ENCRYPTED SESSION KEY')
+-
+- patcher = patch('steam.core.crypto.symmetric_encrypt')
+- self.addCleanup(patcher.stop)
+- self.s_enc = patcher.start()
+- self.s_enc.side_effect = lambda m, k: m
+- patcher = patch('steam.core.crypto.symmetric_encrypt_HMAC')
+- self.addCleanup(patcher.stop)
+- self.s_enc_hmac = patcher.start()
+- self.s_enc_hmac.side_effect = lambda m, k, mac: m
+-
+- patcher = patch('steam.core.crypto.symmetric_decrypt')
+- self.addCleanup(patcher.stop)
+- self.s_dec = patcher.start()
+- self.s_dec.side_effect = lambda c, k: c
+- patcher = patch('steam.core.crypto.symmetric_decrypt_HMAC')
+- self.addCleanup(patcher.stop)
+- self.s_dec_hmac = patcher.start()
+- self.s_dec_hmac.side_effect = lambda c, k, mac: c
+-
+- # TODO: Tests for WebsocketConnection
+-
+- # mock out TCPConnection
+- patcher = patch('steam.core.cm.TCPConnection', autospec=True)
+- self.addCleanup(patcher.stop)
+- self.conn = patcher.start().return_value
+-
+- self.conn_in = gevent.queue.Queue()
+- self.conn.__iter__.return_value = self.conn_in
+-
+- # mock out CMServerList
+- patcher = patch('steam.core.cm.CMServerList', autospec=True)
+- self.addCleanup(patcher.stop)
+- self.server_list = patcher.start().return_value
+- self.server_list.__iter__.return_value = [(127001, 20000+i) for i in range(10)]
+- self.server_list.bootstrap_from_webapi.return_value = False
+- self.server_list.bootstrap_from_dns.return_value = False
+-
+- @patch.object(CMClient, 'emit')
+- @patch.object(CMClient, '_recv_messages')
+- def test_connect(self, mock_recv, mock_emit):
+- # setup
+- self.conn.connect.return_value = True
+- self.server_list.__len__.return_value = 10
+-
+- # run
+- cm = CMClient()
+-
+- with gevent.Timeout(2, False):
+- cm.connect(retry=1)
+-
+- gevent.idle()
+-
+- # verify
+- self.conn.connect.assert_called_once_with((127001, 20000))
+- mock_emit.assert_called_once_with('connected')
+- mock_recv.assert_called_once_with()
+-
+- @patch.object(CMClient, 'emit')
+- @patch.object(CMClient, '_recv_messages')
+- def test_connect_auto_discovery_failing(self, mock_recv, mock_emit):
+- # setup
+- self.conn.connect.return_value = True
+- self.server_list.__len__.return_value = 0
+-
+- # run
+- cm = CMClient()
+-
+- with gevent.Timeout(3, False):
+- cm.connect(retry=1)
+-
+- gevent.idle()
+-
+- # verify
+- self.server_list.bootstrap_from_webapi.assert_called_once_with()
+- self.server_list.bootstrap_from_dns.assert_called_once_with()
+- self.conn.connect.assert_not_called()
+-
+- @patch.object(CMClient, 'emit')
+- @patch.object(CMClient, '_recv_messages')
+- def test_connect_auto_discovery_success(self, mock_recv, mock_emit):
+- # setup
+- self.conn.connect.return_value = True
+- self.server_list.__len__.return_value = 0
+-
+- def fake_servers(*args, **kwargs):
+- self.server_list.__len__.return_value = 10
+- return True
+-
+- self.server_list.bootstrap_from_webapi.side_effect = fake_servers
+-
+- # run
+- cm = CMClient()
+-
+- with gevent.Timeout(3, False):
+- cm.connect(retry=1)
+-
+- gevent.idle()
+-
+- # verify
+- self.server_list.bootstrap_from_webapi.assert_called_once_with()
+- self.server_list.bootstrap_from_dns.assert_not_called()
+- self.conn.connect.assert_called_once_with((127001, 20000))
+- mock_emit.assert_called_once_with('connected')
+- mock_recv.assert_called_once_with()
+-
+- def test_channel_encrypt_sequence(self):
+- # setup
+- self.conn.connect.return_value = True
+-
+- # run ------------
+- cm = CMClient()
+- cm.connected = True
+- gevent.spawn(cm._recv_messages)
+-
+- # recieve ChannelEncryptRequest
+- self.conn_in.put(b'\x17\x05\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x01\x00\x00\x00')
+- gevent.idle(); gevent.idle(); gevent.idle(); gevent.idle()
+-
+- self.conn.put_message.assert_called_once_with(b'\x18\x05\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00\x80\x00\x00\x00PUBKEY ENCRYPTED SESSION KEY\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00h-\xc4@\x00\x00\x00\x00')
+-
+- # recieve ChannelEncryptResult (OK)
+- self.conn_in.put(b'\x19\x05\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x01\x00\x00\x00')
+-
+- cm.wait_event('channel_secured', timeout=2, raises=True)
+--
+2.50.0
+
diff --git a/dev-python/steam/steam-1.6.1.ebuild b/dev-python/steam/steam-2.0.0-r1.ebuild
index 50212243e70f..96020b5158ee 100644
--- a/dev-python/steam/steam-1.6.1.ebuild
+++ b/dev-python/steam/steam-2.0.0-r1.ebuild
@@ -14,9 +14,14 @@ HOMEPAGE="
https://pypi.org/project/steam/
"
SRC_URI="
- https://github.com/solsticegamestudios/steam/archive/refs/tags/v${PV}.tar.gz
+ https://github.com/solsticegamestudios/steam/archive/refs/tags/v${PV}-alpha1.tar.gz
-> ${P}.gh.tar.gz
"
+S="${WORKDIR}/${P}-alpha1"
+
+PATCHES=(
+ "${FILESDIR}/${P}-path-pycryptodome-and-gevent.patch"
+)
LICENSE="GPL-3"
SLOT="0"
@@ -34,6 +39,13 @@ RDEPEND="
dev-python/wsproto[${PYTHON_USEDEP}]
"
+BDEPEND="
+ test? (
+ dev-python/vcrpy[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ )
+"
+
distutils_enable_tests pytest
pkg_postinst() {