summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-02-06 18:41:21 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2024-02-06 18:41:21 +0000
commit28b5ba1065f9ff1e32903c1088028d9caaa9db0c (patch)
treed95f0d082dd36897c521b5d4dbcdf5a05b23fee2 /dev-python
parent97f3a0a782a277ae327f3c20b6ff038476d54adf (diff)
downloadbaldeagleos-repo-28b5ba1065f9ff1e32903c1088028d9caaa9db0c.tar.gz
baldeagleos-repo-28b5ba1065f9ff1e32903c1088028d9caaa9db0c.tar.xz
baldeagleos-repo-28b5ba1065f9ff1e32903c1088028d9caaa9db0c.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/aiofiles/aiofiles-23.2.1.ebuild2
-rw-r--r--dev-python/cli-helpers/Manifest1
-rw-r--r--dev-python/cli-helpers/cli-helpers-2.3.1.ebuild35
-rw-r--r--dev-python/leechcorepyc/Manifest1
-rw-r--r--dev-python/leechcorepyc/files/leechcorepyc-2.16.9-respect-CC.patch30
-rw-r--r--dev-python/leechcorepyc/leechcorepyc-2.16.9.ebuild41
-rw-r--r--dev-python/moto/moto-5.0.1.ebuild9
-rw-r--r--dev-python/numpy/Manifest1
-rw-r--r--dev-python/numpy/numpy-1.26.4.ebuild169
-rw-r--r--dev-python/pycountry/pycountry-23.12.11.ebuild4
-rw-r--r--dev-python/pygraphviz/files/pygraphviz-1.12-swig-4.2.0.patch290
-rw-r--r--dev-python/pygraphviz/pygraphviz-1.12-r1.ebuild54
-rw-r--r--dev-python/pysimdjson/Manifest1
-rw-r--r--dev-python/pysimdjson/files/pysimdjson-6.0.2-system-lib.patch17
-rw-r--r--dev-python/pysimdjson/pysimdjson-6.0.2.ebuild57
-rw-r--r--dev-python/pytest-asyncio/files/pytest-asyncio-0.23.4-pytest-8.patch47
-rw-r--r--dev-python/pytest-asyncio/pytest-asyncio-0.23.4-r1.ebuild (renamed from dev-python/pytest-asyncio/pytest-asyncio-0.23.4.ebuild)8
-rw-r--r--dev-python/quart/quart-0.19.4.ebuild2
-rw-r--r--dev-python/sphinxemoji/Manifest1
-rw-r--r--dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild35
-rw-r--r--dev-python/starlette/Manifest1
-rw-r--r--dev-python/starlette/starlette-0.37.0.ebuild49
-rw-r--r--dev-python/types-psutil/Manifest1
-rw-r--r--dev-python/types-psutil/types-psutil-5.9.5.20240205.ebuild17
-rw-r--r--dev-python/urllib3/urllib3-2.2.0.ebuild2
25 files changed, 868 insertions, 7 deletions
diff --git a/dev-python/aiofiles/aiofiles-23.2.1.ebuild b/dev-python/aiofiles/aiofiles-23.2.1.ebuild
index 3b1451d8f036..183990a8fde3 100644
--- a/dev-python/aiofiles/aiofiles-23.2.1.ebuild
+++ b/dev-python/aiofiles/aiofiles-23.2.1.ebuild
@@ -16,7 +16,7 @@ HOMEPAGE="
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~riscv ~x86"
BDEPEND="
test? (
diff --git a/dev-python/cli-helpers/Manifest b/dev-python/cli-helpers/Manifest
index 4499213caf40..e9b8a9ec5562 100644
--- a/dev-python/cli-helpers/Manifest
+++ b/dev-python/cli-helpers/Manifest
@@ -1 +1,2 @@
DIST cli_helpers-2.3.0.gh.tar.gz 34374 BLAKE2B 83978ee17aec8a02173460cf5d5c42751d4745c63a1f83c8fafdd55fcfb31e04d02a61f90db4a4fe8ba2049167306b06e1389db15230558a646589e3834745de SHA512 ee5f2adbca54c62c2f40be4c7b418760d12f331737a65bafdb8209989fc866f35d6c2ea1b9b0a12add6ed3fa576a84a2c8f62a2f3babf58706660f7d7eb8eb57
+DIST cli_helpers-2.3.1.gh.tar.gz 34372 BLAKE2B 00cafd4d704e2aa8ac68d372505adffd0d6b42b03dcc320c858e2085eb32a11112e0819cbabc4eddd1e8e9f11cb101bb8fc9b87f49c3b7fec289acfca792bb22 SHA512 ea2449f7d8b87da62a6a2bc8a10eb726a927b0cf62431016125aa30a6f7bcbee3b396364a78f749cb22c86427ca8fc7e46aaac19ea0f93ef6dee661653c2f5c0
diff --git a/dev-python/cli-helpers/cli-helpers-2.3.1.ebuild b/dev-python/cli-helpers/cli-helpers-2.3.1.ebuild
new file mode 100644
index 000000000000..3b297d255145
--- /dev/null
+++ b/dev-python/cli-helpers/cli-helpers-2.3.1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+MY_P=cli_helpers-${PV}
+DESCRIPTION="Python helpers for common CLI tasks"
+HOMEPAGE="
+ https://cli-helpers.rtfd.io/
+ https://github.com/dbcli/cli_helpers/
+ https://pypi.org/project/cli-helpers/
+"
+SRC_URI="
+ https://github.com/dbcli/cli_helpers/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/configobj-5.0.5[${PYTHON_USEDEP}]
+ >=dev-python/pygments-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/tabulate-0.9.0[${PYTHON_USEDEP}]
+ dev-python/wcwidth[${PYTHON_USEDEP}]
+"
+
+distutils_enable_tests pytest
diff --git a/dev-python/leechcorepyc/Manifest b/dev-python/leechcorepyc/Manifest
index 97630a1da22a..a0b88a3f7aca 100644
--- a/dev-python/leechcorepyc/Manifest
+++ b/dev-python/leechcorepyc/Manifest
@@ -1 +1,2 @@
DIST leechcorepyc-2.16.5.tar.gz 177365 BLAKE2B a5193e6e6c3fc2dc63358f62a2240b3a186b2acb37968597c5b5c690fbc94487c17bef55e8123bfdc55df2aa8668f667750a850fe4480b08d85bc311b1d2a95d SHA512 8d9b556d7ebc7de474dc853f9dfa005f91a19e6f7672d4021bc83c48b7d3ab0b6617bdbaf79e79b2fc930b64f448e3b8849d83c735077fd98776b026cff57a30
+DIST leechcorepyc-2.16.9.tar.gz 178656 BLAKE2B 76cefea2d8c30c88ae649da6c95f420b366e6b7ec8a44339cda6bd65b890b02196ff19d3b7d8218c87a73256e079fdd51dcb0499934fef0145e4a404376be7de SHA512 5a5455d0401177d2ae4f6b22a0dbf1f4ddce3458edb4cea04c8a127a6baa7083c83ba79d3d236a6cec15e8a1c05c4a8c747d7053b451dbed9b6a8defa17ec288
diff --git a/dev-python/leechcorepyc/files/leechcorepyc-2.16.9-respect-CC.patch b/dev-python/leechcorepyc/files/leechcorepyc-2.16.9-respect-CC.patch
new file mode 100644
index 000000000000..7ad3aac070ab
--- /dev/null
+++ b/dev-python/leechcorepyc/files/leechcorepyc-2.16.9-respect-CC.patch
@@ -0,0 +1,30 @@
+--- a/leechcore/Makefile
++++ b/leechcore/Makefile
+@@ -1,5 +1,6 @@
+-CC=gcc
+-CFLAGS += -I. -D LINUX -D _GNU_SOURCE -shared -fPIC -fvisibility=hidden -pthread `pkg-config libusb-1.0 --libs --cflags`
++CC?=gcc
++PKG_CONFIG ?= pkg-config
++CFLAGS += -I. -D LINUX -D _GNU_SOURCE -shared -fPIC -fvisibility=hidden -pthread `$(PKG_CONFIG) libusb-1.0 --libs --cflags`
+ # DEBUG FLAGS BELOW
+ # export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1:detect_invalid_pointer_pairs=2
+ # CFLAGS += -g -O0 -Wextra -Wno-unused-parameter -Wno-cast-function-type
+--- a/leechcore_device_rawtcp/Makefile
++++ b/leechcore_device_rawtcp/Makefile
+@@ -1,4 +1,4 @@
+-CC=gcc
++CC?=gcc
+ CFLAGS += -I. -I../includes -D LINUX -shared -fPIC -fvisibility=hidden
+ LDFLAGS += -g -shared
+ DEPS =
+--- a/leechcore_ft601_driver_linux/Makefile
++++ b/leechcore_ft601_driver_linux/Makefile
+@@ -1,5 +1,6 @@
+-CC=gcc
+-CFLAGS += -I. -D LINUX -shared -fPIC -fvisibility=hidden `pkg-config libusb-1.0 --libs --cflags`
++CC?=gcc
++PKG_CONFIG ?= pkg-config
++CFLAGS += -I. -D LINUX -shared -fPIC -fvisibility=hidden `$(PKG_CONFIG) libusb-1.0 --libs --cflags`
+ LDFLAGS += -g -shared
+ DEPS = leechcore_ft601_driver_linux.h
+ OBJ = fpga_libusb.o leechcore_ft601_driver_linux.o
diff --git a/dev-python/leechcorepyc/leechcorepyc-2.16.9.ebuild b/dev-python/leechcorepyc/leechcorepyc-2.16.9.ebuild
new file mode 100644
index 000000000000..4e44650b2882
--- /dev/null
+++ b/dev-python/leechcorepyc/leechcorepyc-2.16.9.ebuild
@@ -0,0 +1,41 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 toolchain-funcs pypi
+
+DESCRIPTION="Python binding for LeechCore Physical Memory Acquisition Library"
+HOMEPAGE="https://github.com/ufrisk/LeechCore"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+# leechcorepyc ships with a bundled version of the LeechCore library. So we
+# don't depend on the library here. But we must be aware this module doesn't
+# use the system library.
+DEPEND="virtual/libusb:="
+RDEPEND="${DEPEND}"
+BDEPEND="virtual/pkgconfig"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.16.9-respect-CC.patch"
+)
+
+src_prepare() {
+ default
+
+ # Avoid redefining _FORTIFY_SOURCE. See #893824, #906715.
+ sed -i -e 's/ -D_FORTIFY_SOURCE=2 / /g' leechcore/Makefile || die
+}
+
+src_configure() {
+ tc-export CC
+
+ distutils-r1_src_configure
+}
diff --git a/dev-python/moto/moto-5.0.1.ebuild b/dev-python/moto/moto-5.0.1.ebuild
index f5be3a7de576..0629a89f14e3 100644
--- a/dev-python/moto/moto-5.0.1.ebuild
+++ b/dev-python/moto/moto-5.0.1.ebuild
@@ -96,10 +96,15 @@ python_test() {
# broken by new urllib3
tests/test_moto_api/recorder/test_recorder.py::TestRecorder::test_s3_upload_data
tests/test_moto_api/recorder/test_recorder.py::TestRecorder::test_s3_upload_file_using_requests
- tests/test_s3/test_s3.py::test_upload_from_file_to_presigned_url
- tests/test_s3/test_s3.py::test_put_chunked_with_v4_signature_in_body
+ tests/test_moto_api/recorder/test_recorder.py::TestThreadedMotoServer::test_server
tests/test_s3/test_s3.py::test_presigned_put_url_with_approved_headers
tests/test_s3/test_s3.py::test_presigned_put_url_with_custom_headers
+ tests/test_s3/test_s3.py::test_put_chunked_with_v4_signature_in_body
+ tests/test_s3/test_s3.py::test_upload_from_file_to_presigned_url
+ tests/test_s3/test_s3_bucket_policy.py::TestBucketPolicy::test_block_all_actions
+ tests/test_s3/test_s3_bucket_policy.py::TestBucketPolicy::test_block_all_with_different_principal
+ tests/test_s3/test_s3_bucket_policy.py::TestBucketPolicy::test_block_or_allow_get_object
+ tests/test_s3/test_s3_bucket_policy.py::TestBucketPolicy::test_block_put_object
)
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
diff --git a/dev-python/numpy/Manifest b/dev-python/numpy/Manifest
index f064bf22b4ce..d3efe8e51057 100644
--- a/dev-python/numpy/Manifest
+++ b/dev-python/numpy/Manifest
@@ -1,3 +1,4 @@
DIST numpy-1.26.1.tar.gz 15651806 BLAKE2B 2b7fe13675b6f11b8f19c2dc671c84418fa959f403ff32c15ae6da37ae8137d062bb47db0180031c90f54451d69d640ec4ebfad0a4eefb32afc55df45c6824ab SHA512 abe5919029fc66961e8f44fdd503b54c291ce75b0d95e3f8bb61ee39a25d62142fbece5734fd7e9cbf65511f9d746fa61796f0d68e6dc2816c0e7747e286e505
DIST numpy-1.26.2.tar.gz 15664248 BLAKE2B 006e511e27c009f27bf4bf6c8c30c84a4bf0e8b1ff53f4e031089f28c1cfd168ec0d037952fe8f377f9a1d6e1ab642a84c095edeee5696b18053fd5cb7550586 SHA512 9986cd34dda921fbc152c3be0e39f003035787ea1e055452b9259d02c423d413080a0c7e4e19fd38d9e28f66d428719d6ebe784c24ae17249ff56494950daf4b
DIST numpy-1.26.3.tar.gz 15679696 BLAKE2B 4c063e1a495b187049b5604686c0411b056fd03a69b5044cff10693694a7f055c87a017334cf8d05aa4a4cb87896fdf9203f51742d3cf83dbaf611b0e6e4091a SHA512 25556b41e2db9cfc52c1dfa61b05e4fc1b7b6df3b169f365375575d1146857fdb5ff91ca1508b968c296b7a06e5c6d95e82c41cdc3561587a46d3aa178f6305d
+DIST numpy-1.26.4.tar.gz 15786129 BLAKE2B ee759d3a857111bc494d5e989a7b005375d942b2a89cda69be4a3bd7c6cb195003fd2a8a0535f1858d8977ff688b0ec36360dcba9c3160206eedce5e28f191ef SHA512 f7121ab4099fa0686f9c095d456baa4a5869d651d7b7a06385f885f329cf08f11024b5df5e7b4ee705970062a8102ec4f709512eabbfd5c9fccce4ef83b9c208
diff --git a/dev-python/numpy/numpy-1.26.4.ebuild b/dev-python/numpy/numpy-1.26.4.ebuild
new file mode 100644
index 000000000000..f8e42fdd6e2c
--- /dev/null
+++ b/dev-python/numpy/numpy-1.26.4.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=meson-python
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+PYTHON_REQ_USE="threads(+)"
+FORTRAN_NEEDED=lapack
+
+inherit distutils-r1 flag-o-matic fortran-2 pypi toolchain-funcs
+
+DESCRIPTION="Fast array and numerical python library"
+HOMEPAGE="
+ https://numpy.org/
+ https://github.com/numpy/numpy/
+ https://pypi.org/project/numpy/
+"
+
+LICENSE="BSD"
+SLOT="0"
+# +lapack because the internal fallbacks are pretty slow. Building without blas
+# is barely supported anyway, see bug #914358.
+IUSE="+lapack"
+if [[ ${PV} != *_[rab]* ]] ; then
+ KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+fi
+
+RDEPEND="
+ lapack? (
+ >=virtual/cblas-3.8
+ >=virtual/lapack-3.8
+ )
+"
+BDEPEND="
+ ${RDEPEND}
+ >=dev-build/meson-1.1.0
+ >=dev-python/cython-3.0.0[${PYTHON_USEDEP}]
+ lapack? (
+ virtual/pkgconfig
+ )
+ test? (
+ $(python_gen_cond_dep '
+ >=dev-python/cffi-1.14.0[${PYTHON_USEDEP}]
+ ' 'python*')
+ dev-python/charset-normalizer[${PYTHON_USEDEP}]
+ >=dev-python/hypothesis-5.8.0[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2019.3[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_XDIST=1
+distutils_enable_tests pytest
+
+python_prepare_all() {
+ append-flags -fno-strict-aliasing
+
+ distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+ DISTUTILS_ARGS=(
+ -Dallow-noblas=$(usex !lapack true false)
+ -Dblas=$(usev lapack cblas)
+ -Dlapack=$(usev lapack lapack)
+ # TODO: cpu-* options
+ )
+}
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # Very disk-and-memory-hungry
+ lib/tests/test_io.py::TestSaveTxt::test_large_zip
+ lib/tests/test_io.py::TestSavezLoad::test_closing_fid
+ lib/tests/test_io.py::TestSavezLoad::test_closing_zipfile_after_load
+
+ # Precision problems
+ core/tests/test_umath_accuracy.py::TestAccuracy::test_validate_transcendentals
+
+ # Runs the whole test suite recursively, that's just crazy
+ core/tests/test_mem_policy.py::test_new_policy
+
+ typing/tests/test_typing.py
+ # Uses huge amount of memory
+ core/tests/test_mem_overlap.py
+ 'core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+
+ # TODO: crashes
+ lib/tests/test_histograms.py::TestHistogram::test_big_arrays
+
+ # likely a test problem
+ # https://github.com/numpy/numpy/issues/25135
+ core/tests/test_cython.py::test_conv_intp
+
+ # flaky
+ f2py/tests/test_crackfortran.py
+ f2py/tests/test_data.py::TestData{,F77}::test_crackedlines
+ )
+
+ if use arm && [[ $(uname -m || echo "unknown") == "armv8l" ]] ; then
+ # Degenerate case of arm32 chroot on arm64, bug #774108
+ EPYTEST_DESELECT+=(
+ core/tests/test_cpu_features.py::Test_ARM_Features::test_features
+ )
+ fi
+
+ if use x86 ; then
+ EPYTEST_DESELECT+=(
+ # https://github.com/numpy/numpy/issues/18388
+ core/tests/test_umath.py::TestRemainder::test_float_remainder_overflow
+ # https://github.com/numpy/numpy/issues/18387
+ random/tests/test_generator_mt19937.py::TestRandomDist::test_pareto
+ # more precision problems
+ core/tests/test_einsum.py::TestEinsum::test_einsum_sums_int16
+ )
+ fi
+
+ if use hppa ; then
+ EPYTEST_DESELECT+=(
+ # TODO: Get selectedrealkind updated!
+ # bug #907228
+ # https://github.com/numpy/numpy/issues/3424 (https://github.com/numpy/numpy/issues/3424#issuecomment-412369029)
+ # https://github.com/numpy/numpy/pull/21785
+ f2py/tests/test_kind.py::TestKind::test_real
+ f2py/tests/test_kind.py::TestKind::test_quad_precision
+ )
+ fi
+
+ if [[ $(tc-endian) == "big" ]] ; then
+ # https://github.com/numpy/numpy/issues/11831 and bug #707116
+ EPYTEST_DESELECT+=(
+ 'f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[s1]'
+ 'f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[t1]'
+ 'f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f90[s1]'
+ 'f2py/tests/test_return_character.py::TestFReturnCharacter::test_all_f77[t1]'
+ f2py/tests/test_kind.py::TestKind::test_int
+ )
+ fi
+
+ case "${ABI}" in
+ alpha|arm|hppa|m68k|o32|ppc|s390|sh|sparc|x86)
+ EPYTEST_DESELECT+=(
+ # too large for 32-bit platforms
+ core/tests/test_ufunc.py::TestUfunc::test_identityless_reduction_huge_array
+ 'core/tests/test_multiarray.py::TestDot::test_huge_vectordot[float64]'
+ 'core/tests/test_multiarray.py::TestDot::test_huge_vectordot[complex128]'
+ )
+ ;;
+ *)
+ ;;
+ esac
+
+ if ! has_version -b "~${CATEGORY}/${P}[${PYTHON_USEDEP}]" ; then
+ # depends on importing numpy.random from system namespace
+ EPYTEST_DESELECT+=(
+ 'random/tests/test_extending.py::test_cython'
+ )
+ fi
+
+ rm -rf numpy || die
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest --pyargs numpy
+}
+
+python_install_all() {
+ local DOCS=( LICENSE.txt README.md THANKS.txt )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pycountry/pycountry-23.12.11.ebuild b/dev-python/pycountry/pycountry-23.12.11.ebuild
index 9666cdcb8c33..a2f3096dc07f 100644
--- a/dev-python/pycountry/pycountry-23.12.11.ebuild
+++ b/dev-python/pycountry/pycountry-23.12.11.ebuild
@@ -18,10 +18,10 @@ LICENSE="LGPL-2.1"
SLOT="0"
KEYWORDS="~alpha amd64 ~arm arm64 ~hppa ~ia64 ~loong ~mips ppc ~ppc64 ~riscv ~s390 ~sparc x86"
-distutils_enable_tests pytest
-
BDEPEND="
test? (
dev-python/importlib-metadata[${PYTHON_USEDEP}]
)
"
+
+distutils_enable_tests pytest
diff --git a/dev-python/pygraphviz/files/pygraphviz-1.12-swig-4.2.0.patch b/dev-python/pygraphviz/files/pygraphviz-1.12-swig-4.2.0.patch
new file mode 100644
index 000000000000..3daa485044ce
--- /dev/null
+++ b/dev-python/pygraphviz/files/pygraphviz-1.12-swig-4.2.0.patch
@@ -0,0 +1,290 @@
+https://bugs.gentoo.org/921637
+https://github.com/swig/swig/issues/2778
+https://github.com/pygraphviz/pygraphviz/commit/6ecae22cc382407652f9d3b57e9da89a3a03043b
+
+From 6ecae22cc382407652f9d3b57e9da89a3a03043b Mon Sep 17 00:00:00 2001
+From: William S Fulton <wsf@fultondesigns.co.uk>
+Date: Fri, 26 Jan 2024 00:52:44 +0000
+Subject: [PATCH] Remove outdated pystrings.swg (#508)
+
+Remove pystring.swg - a very ancient copy from SWIG which does not
+compile when using swig-4.2.0. Instead SWIG's version of pystrings.swg
+that is kept up to date in SWIG is used. SWIG_PYTHON_STRICT_BYTE_CHAR
+needs to be defined in order to maintain the current behaviour of only
+allowing Python 3 byte type instead of Python 3 string type as input.
+
+As the output of swig is in graphviz_wrap.c and is committed to the
+repo, the updates committed in this file (keeping the current swig-4.1.1
+version). A later commit could update it to swig-4.2.0.
+
+Fixes build problems on Fedora where SWIG_Python_str_AsChar no longer exists,
+as reported at https://github.com/swig/swig/issues/2778.
+---
+ pygraphviz/graphviz.i | 4 ++
+ pygraphviz/graphviz_wrap.c | 106 ++++++++++++++++++++++++++++---------
+ pystrings.swg | 86 ------------------------------
+ 3 files changed, 84 insertions(+), 112 deletions(-)
+ delete mode 100644 pystrings.swg
+
+diff --git a/pygraphviz/graphviz.i b/pygraphviz/graphviz.i
+index c63eb2d3..d7c49330 100644
+--- a/pygraphviz/graphviz.i
++++ b/pygraphviz/graphviz.i
+@@ -1,5 +1,9 @@
+ %module graphviz
+
++%begin %{
++#define SWIG_PYTHON_STRICT_BYTE_CHAR
++%}
++
+ %{
+ #include "graphviz/cgraph.h"
+ #include "graphviz/gvc.h"
+diff --git a/pygraphviz/graphviz_wrap.c b/pygraphviz/graphviz_wrap.c
+index 8f4d3a62..cb06da79 100644
+--- a/pygraphviz/graphviz_wrap.c
++++ b/pygraphviz/graphviz_wrap.c
+@@ -6,6 +6,9 @@
+ * the SWIG interface file instead.
+ * ----------------------------------------------------------------------------- */
+
++#define SWIG_PYTHON_STRICT_BYTE_CHAR
++
++
+
+ #define SWIG_VERSION 0x040101
+ #define SWIGPYTHON
+@@ -3038,49 +3041,96 @@ SWIGINTERN int
+ SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
+ {
+ #if PY_VERSION_HEX>=0x03000000
++#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
+ if (PyBytes_Check(obj))
+ #else
++ if (PyUnicode_Check(obj))
++#endif
++#else
+ if (PyString_Check(obj))
+ #endif
+ {
+ char *cstr; Py_ssize_t len;
++ int ret = SWIG_OK;
+ #if PY_VERSION_HEX>=0x03000000
+- PyBytes_AsStringAndSize(obj, &cstr, &len);
+- if(alloc) *alloc = SWIG_NEWOBJ;
++#if !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
++ if (!alloc && cptr) {
++ /* We can't allow converting without allocation, since the internal
++ representation of string in Python 3 is UCS-2/UCS-4 but we require
++ a UTF-8 representation.
++ TODO(bhy) More detailed explanation */
++ return SWIG_RuntimeError;
++ }
++ obj = PyUnicode_AsUTF8String(obj);
++ if (!obj)
++ return SWIG_TypeError;
++ if (alloc)
++ *alloc = SWIG_NEWOBJ;
++#endif
++ if (PyBytes_AsStringAndSize(obj, &cstr, &len) == -1)
++ return SWIG_TypeError;
+ #else
+- PyString_AsStringAndSize(obj, &cstr, &len);
++ if (PyString_AsStringAndSize(obj, &cstr, &len) == -1)
++ return SWIG_TypeError;
+ #endif
+ if (cptr) {
+ if (alloc) {
+- /*
+- In python the user should not be able to modify the inner
+- string representation. To warranty that, if you define
+- SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
+- buffer is always returned.
+-
+- The default behavior is just to return the pointer value,
+- so, be careful.
+- */
+-#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
+- if (*alloc != SWIG_OLDOBJ)
+-#else
+- if (*alloc == SWIG_NEWOBJ)
+-#endif
+- {
+- *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
+- *alloc = SWIG_NEWOBJ;
+- }
+- else {
++ if (*alloc == SWIG_NEWOBJ) {
++ *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
++ *alloc = SWIG_NEWOBJ;
++ } else {
+ *cptr = cstr;
+ *alloc = SWIG_OLDOBJ;
+ }
+ } else {
++#if PY_VERSION_HEX>=0x03000000
++#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
++ *cptr = PyBytes_AsString(obj);
++#else
++ assert(0); /* Should never reach here with Unicode strings in Python 3 */
++#endif
++#else
+ *cptr = SWIG_Python_str_AsChar(obj);
++ if (!*cptr)
++ ret = SWIG_TypeError;
++#endif
+ }
+ }
+ if (psize) *psize = len + 1;
+- return SWIG_OK;
++#if PY_VERSION_HEX>=0x03000000 && !defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
++ Py_XDECREF(obj);
++#endif
++ return ret;
+ } else {
++#if defined(SWIG_PYTHON_2_UNICODE)
++#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
++#error "Cannot use both SWIG_PYTHON_2_UNICODE and SWIG_PYTHON_STRICT_BYTE_CHAR at once"
++#endif
++#if PY_VERSION_HEX<0x03000000
++ if (PyUnicode_Check(obj)) {
++ char *cstr; Py_ssize_t len;
++ if (!alloc && cptr) {
++ return SWIG_RuntimeError;
++ }
++ obj = PyUnicode_AsUTF8String(obj);
++ if (!obj)
++ return SWIG_TypeError;
++ if (PyString_AsStringAndSize(obj, &cstr, &len) != -1) {
++ if (cptr) {
++ if (alloc) *alloc = SWIG_NEWOBJ;
++ *cptr = (char *)memcpy(malloc((len + 1)*sizeof(char)), cstr, sizeof(char)*(len + 1));
++ }
++ if (psize) *psize = len + 1;
++
++ Py_XDECREF(obj);
++ return SWIG_OK;
++ } else {
++ Py_XDECREF(obj);
++ }
++ }
++#endif
++#endif
++
+ swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
+ if (pchar_descriptor) {
+ void* vptr = 0;
+@@ -3311,13 +3361,17 @@ SWIG_FromCharPtrAndSize(const char* carray, size_t size)
+ if (carray) {
+ if (size > INT_MAX) {
+ swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
+- return pchar_descriptor ?
++ return pchar_descriptor ?
+ SWIG_InternalNewPointerObj((char *)(carray), pchar_descriptor, 0) : SWIG_Py_Void();
+ } else {
+ #if PY_VERSION_HEX >= 0x03000000
+- return PyBytes_FromStringAndSize(carray, (int)(size));
++#if defined(SWIG_PYTHON_STRICT_BYTE_CHAR)
++ return PyBytes_FromStringAndSize(carray, (Py_ssize_t)(size));
++#else
++ return PyUnicode_DecodeUTF8(carray, (Py_ssize_t)(size), "surrogateescape");
++#endif
+ #else
+- return PyString_FromStringAndSize(carray, (int)(size));
++ return PyString_FromStringAndSize(carray, (Py_ssize_t)(size));
+ #endif
+ }
+ } else {
+diff --git a/pystrings.swg b/pystrings.swg
+deleted file mode 100644
+index 7988a353..00000000
+--- a/pystrings.swg
++++ /dev/null
+@@ -1,86 +0,0 @@
+-/* Fixed fragments for work with bytes in Python 3. */
+-
+-%fragment("SWIG_AsCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") {
+-SWIGINTERN int
+-SWIG_AsCharPtrAndSize(PyObject *obj, char** cptr, size_t* psize, int *alloc)
+-{
+-%#if PY_VERSION_HEX>=0x03000000
+- if (PyBytes_Check(obj))
+-%#else
+- if (PyString_Check(obj))
+-%#endif
+- {
+- char *cstr; Py_ssize_t len;
+-%#if PY_VERSION_HEX>=0x03000000
+- PyBytes_AsStringAndSize(obj, &cstr, &len);
+- if(alloc) *alloc = SWIG_NEWOBJ;
+-%#else
+- PyString_AsStringAndSize(obj, &cstr, &len);
+-%#endif
+- if (cptr) {
+- if (alloc) {
+- /*
+- In python the user should not be able to modify the inner
+- string representation. To warranty that, if you define
+- SWIG_PYTHON_SAFE_CSTRINGS, a new/copy of the python string
+- buffer is always returned.
+-
+- The default behavior is just to return the pointer value,
+- so, be careful.
+- */
+-%#if defined(SWIG_PYTHON_SAFE_CSTRINGS)
+- if (*alloc != SWIG_OLDOBJ)
+-%#else
+- if (*alloc == SWIG_NEWOBJ)
+-%#endif
+- {
+- *cptr = %new_copy_array(cstr, len + 1, char);
+- *alloc = SWIG_NEWOBJ;
+- }
+- else {
+- *cptr = cstr;
+- *alloc = SWIG_OLDOBJ;
+- }
+- } else {
+- *cptr = SWIG_Python_str_AsChar(obj);
+- }
+- }
+- if (psize) *psize = len + 1;
+- return SWIG_OK;
+- } else {
+- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
+- if (pchar_descriptor) {
+- void* vptr = 0;
+- if (SWIG_ConvertPtr(obj, &vptr, pchar_descriptor, 0) == SWIG_OK) {
+- if (cptr) *cptr = (char *) vptr;
+- if (psize) *psize = vptr ? (strlen((char *)vptr) + 1) : 0;
+- if (alloc) *alloc = SWIG_OLDOBJ;
+- return SWIG_OK;
+- }
+- }
+- }
+- return SWIG_TypeError;
+-}
+-}
+-
+-%fragment("SWIG_FromCharPtrAndSize","header",fragment="SWIG_pchar_descriptor") {
+-SWIGINTERNINLINE PyObject *
+-SWIG_FromCharPtrAndSize(const char* carray, size_t size)
+-{
+- if (carray) {
+- if (size > INT_MAX) {
+- swig_type_info* pchar_descriptor = SWIG_pchar_descriptor();
+- return pchar_descriptor ?
+- SWIG_InternalNewPointerObj(%const_cast(carray,char *), pchar_descriptor, 0) : SWIG_Py_Void();
+- } else {
+-%#if PY_VERSION_HEX >= 0x03000000
+- return PyBytes_FromStringAndSize(carray, %numeric_cast(size,int));
+-%#else
+- return PyString_FromStringAndSize(carray, %numeric_cast(size,int));
+-%#endif
+- }
+- } else {
+- return SWIG_Py_Void();
+- }
+-}
+-}
+
diff --git a/dev-python/pygraphviz/pygraphviz-1.12-r1.ebuild b/dev-python/pygraphviz/pygraphviz-1.12-r1.ebuild
new file mode 100644
index 000000000000..a4af4d7b5dbb
--- /dev/null
+++ b/dev-python/pygraphviz/pygraphviz-1.12-r1.ebuild
@@ -0,0 +1,54 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_EXT=1
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python wrapper for the Graphviz Agraph data structure"
+HOMEPAGE="
+ https://pygraphviz.github.io/
+ https://github.com/pygraphviz/pygraphviz/
+ https://pypi.org/project/pygraphviz/
+"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~ppc64 ~riscv ~x86 ~x86-linux ~ppc-macos ~x64-macos"
+
+# Note: only C API of graphviz is used, PYTHON_USEDEP unnecessary.
+DEPEND="
+ media-gfx/graphviz
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-lang/swig:0
+"
+
+distutils_enable_tests pytest
+
+PATCHES=(
+ "${FILESDIR}"/${P}-swig-4.2.0.patch
+)
+
+src_configure() {
+ swig -python pygraphviz/graphviz.i || die
+}
+
+python_test() {
+ cd "${BUILD_DIR}"/install || die
+ epytest
+}
+
+python_install_all() {
+ dodoc -r examples
+ docompress -x /usr/share/doc/${PF}/examples
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pysimdjson/Manifest b/dev-python/pysimdjson/Manifest
index 7e239b3da5ef..dd63631fc72f 100644
--- a/dev-python/pysimdjson/Manifest
+++ b/dev-python/pysimdjson/Manifest
@@ -1 +1,2 @@
DIST pysimdjson-5.0.2.gh.tar.gz 3828487 BLAKE2B 6197fa9adaa353df82def9f56f821e8b7f9ec955769e9ac28d990542fc0661f3afbe9cd8f7abfc55cdce8eac94c0e5fc78dba9102c7dcfc4e3c4307d0a6fc5bf SHA512 bd7ba4d6f95967f3cd086077406a2c65b895016c9baf16fa9be6dbf77d31487ad5c40e9e3dd2496070605ef37c6a1dc75f3c1b4c96ddc8465132fbcdbde77fd3
+DIST pysimdjson-6.0.2.gh.tar.gz 4493696 BLAKE2B 18f107fa5db762813e90dbf788d54ee24f823e177d2529f5311ef2b35320a45fd698ef6f8863c45ffad96c116ad5240eaf5a6724a3030578f89111cc40f24897 SHA512 ef8856dd137780a4345539b1604af34757b58a4b4d11854e420ad2e855f3e3f251b2ba6296c04d1bf2b71f095ca95fe95e9076e8740e98c7c4404a57df3617ba
diff --git a/dev-python/pysimdjson/files/pysimdjson-6.0.2-system-lib.patch b/dev-python/pysimdjson/files/pysimdjson-6.0.2-system-lib.patch
new file mode 100644
index 000000000000..8a58c6de0481
--- /dev/null
+++ b/dev-python/pysimdjson/files/pysimdjson-6.0.2-system-lib.patch
@@ -0,0 +1,17 @@
+diff --git a/setup.py b/setup.py
+index fa1ff8b..3f36120 100644
+--- a/setup.py
++++ b/setup.py
+@@ -52,11 +52,11 @@ if os.getenv('BUILD_WITH_CYTHON') and CYTHON_AVAILABLE:
+ Extension(
+ 'csimdjson',
+ [
+- 'simdjson/simdjson.cpp',
+ 'simdjson/util.cpp',
+ 'simdjson/csimdjson.pyx'
+ ],
+ define_macros=macros,
++ libraries=["simdjson"],
+ extra_compile_args=extra_compile_args
+ )
+ ], compiler_directives=compiler_directives, force=force)
diff --git a/dev-python/pysimdjson/pysimdjson-6.0.2.ebuild b/dev-python/pysimdjson/pysimdjson-6.0.2.ebuild
new file mode 100644
index 000000000000..c2a9cc1b5941
--- /dev/null
+++ b/dev-python/pysimdjson/pysimdjson-6.0.2.ebuild
@@ -0,0 +1,57 @@
+# Copyright 2020-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+DISTUTILS_EXT=1
+inherit distutils-r1
+
+DESCRIPTION="Python bindings for simdjson"
+HOMEPAGE="
+ https://github.com/TkTech/pysimdjson/
+ https://pypi.org/project/pysimdjson/
+"
+SRC_URI="
+ https://github.com/TkTech/pysimdjson/archive/v${PV}.tar.gz
+ -> ${P}.gh.tar.gz
+"
+
+LICENSE="MIT Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+
+DEPEND="
+ >=dev-libs/simdjson-2.0.1:=
+ test? ( dev-libs/simdjson[all-impls(-)] )
+"
+RDEPEND="
+ ${DEPEND}
+"
+BDEPEND="
+ dev-python/cython[${PYTHON_USEDEP}]
+"
+
+PATCHES=(
+ "${FILESDIR}/pysimdjson-6.0.2-system-lib.patch"
+)
+
+distutils_enable_tests pytest
+
+src_prepare() {
+ # force regen
+ rm simdjson/csimdjson.cpp || die
+ # unbundle
+ rm simdjson/simdjson.cpp || die
+ echo "#include_next <simdjson.h>" > simdjson/simdjson.h || die
+
+ distutils-r1_src_prepare
+
+ export BUILD_WITH_CYTHON=1
+}
+
+python_test() {
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ epytest -o required_plugins=
+}
diff --git a/dev-python/pytest-asyncio/files/pytest-asyncio-0.23.4-pytest-8.patch b/dev-python/pytest-asyncio/files/pytest-asyncio-0.23.4-pytest-8.patch
new file mode 100644
index 000000000000..d18c5714005b
--- /dev/null
+++ b/dev-python/pytest-asyncio/files/pytest-asyncio-0.23.4-pytest-8.patch
@@ -0,0 +1,47 @@
+From d53c12962fd7250bea28e03b5a141be73cfce06b Mon Sep 17 00:00:00 2001
+From: Arjan Keeman <akeeman@users.noreply.github.com>
+Date: Tue, 6 Feb 2024 14:46:13 +0100
+Subject: [PATCH] fix compatibility with pytest ^8
+
+diff --git a/setup.cfg b/setup.cfg
+index 45d70b3..e8cbfc5 100644
+--- a/setup.cfg
++++ b/setup.cfg
+@@ -40,5 +40,5 @@ include_package_data = True
+ install_requires =
+- pytest >= 7.0.0,<8
++ pytest >= 7.0.0, !=8.0.0rc1, !=8.0.0rc2
+
+ [options.extras_require]
+ testing =
+diff --git a/tests/markers/test_session_scope.py b/tests/markers/test_session_scope.py
+index bd0baee..9049c17 100644
+--- a/tests/markers/test_session_scope.py
++++ b/tests/markers/test_session_scope.py
+@@ -44,7 +44,9 @@ def test_asyncio_mark_provides_session_scoped_loop_strict_mode(pytester: Pyteste
+ """
+ ),
+ )
+- subpackage_name = "subpkg"
++
++ # subpackage_name must alphabetically come after test_module_one.py
++ subpackage_name = "z_subpkg"
+ subpkg = pytester.mkpydir(subpackage_name)
+ subpkg.joinpath("test_subpkg.py").write_text(
+ dedent(
+diff --git a/tests/test_is_async_test.py b/tests/test_is_async_test.py
+index 512243b..12e791c 100644
+--- a/tests/test_is_async_test.py
++++ b/tests/test_is_async_test.py
+@@ -77,8 +77,10 @@ def test_returns_false_for_unmarked_coroutine_item_in_strict_mode(pytester: Pyte
+ if pytest.version_tuple < (7, 2):
+ # Probably related to https://github.com/pytest-dev/pytest/pull/10012
+ result.assert_outcomes(failed=1)
+- else:
++ elif pytest.version_tuple < (8,):
+ result.assert_outcomes(skipped=1)
++ else:
++ result.assert_outcomes(failed=1)
+
+
+ def test_returns_true_for_unmarked_coroutine_item_in_auto_mode(pytester: Pytester):
diff --git a/dev-python/pytest-asyncio/pytest-asyncio-0.23.4.ebuild b/dev-python/pytest-asyncio/pytest-asyncio-0.23.4-r1.ebuild
index 9af91a7c12ae..6d16bf51d88a 100644
--- a/dev-python/pytest-asyncio/pytest-asyncio-0.23.4.ebuild
+++ b/dev-python/pytest-asyncio/pytest-asyncio-0.23.4-r1.ebuild
@@ -31,6 +31,11 @@ BDEPEND="
distutils_enable_tests pytest
+PATCHES=(
+ # https://github.com/pytest-dev/pytest-asyncio/pull/776
+ "${FILESDIR}/${P}-pytest-8.patch"
+)
+
python_test() {
local EPYTEST_DESELECT=(
# rely on precise warning counts
@@ -41,6 +46,9 @@ python_test() {
tests/test_event_loop_fixture_finalizer.py::test_event_loop_fixture_finalizer_raises_warning_when_test_leaves_loop_unclosed
tests/test_pytest_min_version_warning.py
tests/trio/test_fixtures.py::test_strict_mode_ignores_trio_fixtures
+
+ # TODO
+ tests/test_is_async_test.py::test_returns_false_for_unmarked_coroutine_item_in_strict_mode
)
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
diff --git a/dev-python/quart/quart-0.19.4.ebuild b/dev-python/quart/quart-0.19.4.ebuild
index 4e81caaa1b99..e20d1fb73d0d 100644
--- a/dev-python/quart/quart-0.19.4.ebuild
+++ b/dev-python/quart/quart-0.19.4.ebuild
@@ -21,7 +21,7 @@ SRC_URI="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~riscv"
RDEPEND="
dev-python/aiofiles[${PYTHON_USEDEP}]
diff --git a/dev-python/sphinxemoji/Manifest b/dev-python/sphinxemoji/Manifest
index b56e6a067b7c..9985c8473562 100644
--- a/dev-python/sphinxemoji/Manifest
+++ b/dev-python/sphinxemoji/Manifest
@@ -1 +1,2 @@
+DIST emojicodes-0.3.1.gh.tar.gz 47298 BLAKE2B 95dc98f737d66005e101955d9da8e4a1509fbf780316a9be8050f086c4d951144de6fa016fbf7215b48e1f4f0155c11001ccc689f4537cf93bda9d4c61d3340a SHA512 1253845bd6a9ffc53a9a649a795b29fab8980f2020e86802479f886b819e8b345f94e6c1fc5f4597c5096cd3fb8bdf31389c7ba02839d7fc145d43ce914e235e
DIST sphinxemoji-0.2.0.tar.gz 44431 BLAKE2B 18c9a7b4c97bc6081216cac98cecf41fef0bfc90122bd24f7d11d96f5db71437ee4e80675464fcaf9bc4c6e89c2511392600e043d4fb1904cfc57ce4efbed824 SHA512 974fcfad13f326265c679a3c97fd251b0348499fc9a72b65547b2548ddb2eb895a96f71d4b212f619287ac7c759df22fbb66f1a8cfa160287f8b25878c0f0515
diff --git a/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild b/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild
new file mode 100644
index 000000000000..11980f505672
--- /dev/null
+++ b/dev-python/sphinxemoji/sphinxemoji-0.3.1.ebuild
@@ -0,0 +1,35 @@
+# Copyright 2022-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1
+
+MY_P=emojicodes-${PV}
+DESCRIPTION="Extension to use emoji codes in your Sphinx documentation"
+HOMEPAGE="
+ https://pypi.org/project/sphinxemoji/
+ https://github.com/sphinx-contrib/emojicodes/
+"
+SRC_URI="
+ https://github.com/sphinx-contrib/emojicodes/archive/v${PV}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ >=dev-python/sphinx-5.0[${PYTHON_USEDEP}]
+"
+
+python_test() {
+ local HTML_DOCS=()
+ build_sphinx docs/source
+ rm -r docs/source/_build || die
+}
diff --git a/dev-python/starlette/Manifest b/dev-python/starlette/Manifest
index b7dc06a3b5e1..773e116e9b97 100644
--- a/dev-python/starlette/Manifest
+++ b/dev-python/starlette/Manifest
@@ -2,3 +2,4 @@ DIST starlette-0.35.1.gh.tar.gz 2842796 BLAKE2B 1ea63f30d65103754559700eb2db699b
DIST starlette-0.36.1.gh.tar.gz 2843494 BLAKE2B 633cd664785f32423c0dfeab04b400340b5e3197f4ef07edca9fcda20954444ccfef1ff9afc62969d5b2914f2091e08946420931ee1ee22e1ab771fe02db13ec SHA512 9a990098a1faa179bcf8df64237147d59e3114b1336f491ca358ffd0016412f18323845eb5f8691aa41810fef455e97cb47ff34d9456a0e3a5be3eb6b23027bb
DIST starlette-0.36.2.gh.tar.gz 2843707 BLAKE2B 7ec75189d7e9864fe15823692d2d264586be8772a0ff29e1d539eb15f858ef9d77ef6398e203f5c2f8a507869026fd8863931a176923f29bf11457e58cdb66fa SHA512 fedccb1db4cfe4a0dac321c843ae211e436ec5b07c0e65b663914657a9cec61a900d95dac09b6752a51defbb310a8dce30f0867574523a3c96cf33cd19b61c76
DIST starlette-0.36.3.gh.tar.gz 2844320 BLAKE2B 74e2b7449cf18393c63a2123e7537704bcf85528d504c33dc579b7660ef13c11fe74ba4da6e680063d9849f5addddaeaa5c20cc770bf658613b56da2f7d9191d SHA512 998e8958810efbc329382d86f6084d7ed90dca68bb64c51349b2dae6740ba537db10ec68a007e95a81ab06f5df39c64d998b3e87432a8fc75da3ead0963bcc5d
+DIST starlette-0.37.0.gh.tar.gz 2845423 BLAKE2B f471d6170cecc0a4421b865306a76147e3c946892abef3a5f8e04a03e8aab830c5702079db9af81ef8eaaba9812286c1364599e556fb4a3c4aae511849d706a3 SHA512 7750d76f2c7d8ee5aba47ba21583d0167c16965538a3735c9098ea44c6f335d893f314550b90ddf2ac9dd592fb777f5cd8035020d7c31cff46e4813b3194730f
diff --git a/dev-python/starlette/starlette-0.37.0.ebuild b/dev-python/starlette/starlette-0.37.0.ebuild
new file mode 100644
index 000000000000..2bc6499860f7
--- /dev/null
+++ b/dev-python/starlette/starlette-0.37.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=hatchling
+PYTHON_COMPAT=( python3_{8,9,10,11,12} pypy3 )
+
+inherit distutils-r1
+
+MY_P=${P/_p/.post}
+DESCRIPTION="The little ASGI framework that shines"
+HOMEPAGE="
+ https://www.starlette.io/
+ https://github.com/encode/starlette/
+ https://pypi.org/project/starlette/
+"
+# no docs or tests in sdist, as of 0.27.0
+SRC_URI="
+ https://github.com/encode/starlette/archive/${PV/_p/.post}.tar.gz
+ -> ${MY_P}.gh.tar.gz
+"
+S=${WORKDIR}/${MY_P}
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
+
+RDEPEND="
+ <dev-python/anyio-5[${PYTHON_USEDEP}]
+ >=dev-python/anyio-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/httpx-0.22.0[${PYTHON_USEDEP}]
+ dev-python/itsdangerous[${PYTHON_USEDEP}]
+ dev-python/jinja[${PYTHON_USEDEP}]
+ >=dev-python/python-multipart-0.0.7[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/trio[${PYTHON_USEDEP}]
+ )
+"
+
+EPYTEST_IGNORE=(
+ # Unpackaged 'databases' dependency
+ tests/test_database.py
+)
+
+distutils_enable_tests pytest
diff --git a/dev-python/types-psutil/Manifest b/dev-python/types-psutil/Manifest
index 842b439daef8..f9ae248297e5 100644
--- a/dev-python/types-psutil/Manifest
+++ b/dev-python/types-psutil/Manifest
@@ -1 +1,2 @@
DIST types-psutil-5.9.5.20240106.tar.gz 14317 BLAKE2B fa7c252f45f4bb1e1cd2c2dbf615c680090500637d24f2b37745175ac0b7237918c38d17c478142f25bf0e4ada0776f989f86590fdd849b3feac6ec516f85e8d SHA512 d286f9eee84fb363248dc09f5629ff8ef717740b5e0f01475a376a94eeb996c418d0236e32e90262f12dfe3e9051f18f66b5e85e3167e81e77399cd34718aafd
+DIST types-psutil-5.9.5.20240205.tar.gz 14333 BLAKE2B 6f48c008ac634a761f7eb6ed94ef1d06933da803dc8ff3111826ff91cd23ed17bc9e7fc661ea9c52075a675f9a2e6129c555e334bdf758f86f412523e27c91c7 SHA512 a8be7698a6e5bb37d45ea0a81d925835a685e5be7390401fb659a1eab71c6bf9c8529c285bcb1382b61aca37d8b4b43921f9281831bd8099402ec0078cb7334c
diff --git a/dev-python/types-psutil/types-psutil-5.9.5.20240205.ebuild b/dev-python/types-psutil/types-psutil-5.9.5.20240205.ebuild
new file mode 100644
index 000000000000..13f69b1b406d
--- /dev/null
+++ b/dev-python/types-psutil/types-psutil-5.9.5.20240205.ebuild
@@ -0,0 +1,17 @@
+# Copyright 2023-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{8,9,10,11,12} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Typing stubs for psutil"
+HOMEPAGE="https://pypi.org/project/types-psutil/"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86"
diff --git a/dev-python/urllib3/urllib3-2.2.0.ebuild b/dev-python/urllib3/urllib3-2.2.0.ebuild
index 14440ca7eed0..fb2fc467f430 100644
--- a/dev-python/urllib3/urllib3-2.2.0.ebuild
+++ b/dev-python/urllib3/urllib3-2.2.0.ebuild
@@ -27,7 +27,7 @@ SRC_URI+="
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~amd64 ~arm ~arm64 ~loong ~riscv"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~riscv"
IUSE="brotli http2 test zstd"
RESTRICT="!test? ( test )"