summaryrefslogtreecommitdiff
path: root/dev-python
diff options
context:
space:
mode:
authorLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-03-19 06:30:11 +0000
committerLiguros - Gitlab CI/CD [develop] <gitlab@liguros.net>2025-03-19 06:30:11 +0000
commit31d4271c74f4334c8c37de8b6c5fd2634084bb76 (patch)
tree8de88113fd0e248084b02341996ca969054673f1 /dev-python
parentb122a4c89ce5a5ed415047f73079ed8fe92d13b8 (diff)
downloadbaldeagleos-repo-31d4271c74f4334c8c37de8b6c5fd2634084bb76.tar.gz
baldeagleos-repo-31d4271c74f4334c8c37de8b6c5fd2634084bb76.tar.xz
baldeagleos-repo-31d4271c74f4334c8c37de8b6c5fd2634084bb76.zip
Adding metadata
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/absl-py/absl-py-2.1.0.ebuild22
-rw-r--r--dev-python/absl-py/files/absl-py-2.1.0-py313.patch60
-rw-r--r--dev-python/dbus-python/dbus-python-1.4.0.ebuild1
-rw-r--r--dev-python/django-auth-ldap/Manifest2
-rw-r--r--dev-python/django-auth-ldap/django-auth-ldap-4.8.0.ebuild43
-rw-r--r--dev-python/django-auth-ldap/django-auth-ldap-5.0.0.ebuild42
-rw-r--r--dev-python/django-auth-ldap/django-auth-ldap-5.1.0.ebuild2
-rw-r--r--dev-python/gfloat/gfloat-0.3.ebuild2
-rw-r--r--dev-python/gfloat/gfloat-0.4.ebuild2
-rw-r--r--dev-python/pytest-mpl/Manifest1
-rw-r--r--dev-python/pytest-mpl/pytest-mpl-0.16.1.ebuild35
-rw-r--r--dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild28
-rw-r--r--dev-python/python-cinderclient/files/python-cinderclient-9.7.0-py313.patch22
-rw-r--r--dev-python/python-cinderclient/python-cinderclient-9.7.0.ebuild5
-rw-r--r--dev-python/python-ironicclient/python-ironicclient-5.10.0-r1.ebuild49
-rw-r--r--dev-python/python-neutronclient/python-neutronclient-11.4.0-r1.ebuild76
-rw-r--r--dev-python/python-novaclient/python-novaclient-18.9.0-r1.ebuild60
-rw-r--r--dev-python/python-openstackclient/python-openstackclient-7.4.0-r1.ebuild60
-rw-r--r--dev-python/tasklib/tasklib-2.5.1.ebuild2
19 files changed, 371 insertions, 143 deletions
diff --git a/dev-python/absl-py/absl-py-2.1.0.ebuild b/dev-python/absl-py/absl-py-2.1.0.ebuild
index 2d582081f7b6..b4b06da967da 100644
--- a/dev-python/absl-py/absl-py-2.1.0.ebuild
+++ b/dev-python/absl-py/absl-py-2.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -29,6 +29,13 @@ RDEPEND="
"
src_prepare() {
+ local PATCHES=(
+ # https://github.com/abseil/abseil-py/commit/78fb38cea7ffd1329f6455c997302529ce6fc6ce
+ "${FILESDIR}/${P}-py313.patch"
+ )
+
+ distutils-r1_src_prepare
+
# what a nightmare... well, we could have called bazel but that would
# even worse
local helpers=(
@@ -55,12 +62,15 @@ src_prepare() {
done
# i don't wanna know how these pass for upstream with wrong helper names
- sed -i -e 's:\(app_test_helper\)\.py:\1_pure_python:' \
- absl/tests/app_test.py || die
- sed -i -e 's:\(logging_functional_test_helper\)\.py:\1:' \
- absl/logging/tests/logging_functional_test.py || die
+ sed -e 's:\(app_test_helper\)\.py:\1_pure_python:' \
+ -i absl/tests/app_test.py || die
+ sed -e 's:\(logging_functional_test_helper\)\.py:\1:' \
+ -i absl/logging/tests/logging_functional_test.py || die
- distutils-r1_src_prepare
+ # parts of 617ce2c8b9976aa9e32c079c625fa6d864b2bbee
+ # (don't sed the one case containing ", suiteClass=...")
+ sed -e 's:unittest\.makeSuite\(([^,]*)\):unittest.defaultTestLoader.loadTestsFromTestCase\1:' \
+ -i absl/testing/tests/{absltest,parameterized}_test.py || die
}
python_test() {
diff --git a/dev-python/absl-py/files/absl-py-2.1.0-py313.patch b/dev-python/absl-py/files/absl-py-2.1.0-py313.patch
new file mode 100644
index 000000000000..81406734980c
--- /dev/null
+++ b/dev-python/absl-py/files/absl-py-2.1.0-py313.patch
@@ -0,0 +1,60 @@
+From 78fb38cea7ffd1329f6455c997302529ce6fc6ce Mon Sep 17 00:00:00 2001
+From: Oleh Prypin <oprypin@google.com>
+Date: Wed, 11 Dec 2024 04:19:00 -0800
+Subject: [PATCH] Declare support for Python 3.13
+
+PiperOrigin-RevId: 705056014
+
+diff --git a/absl/flags/tests/argparse_flags_test.py b/absl/flags/tests/argparse_flags_test.py
+index 679a1cce..cfc364f0 100644
+--- a/absl/flags/tests/argparse_flags_test.py
++++ b/absl/flags/tests/argparse_flags_test.py
+@@ -227,7 +227,10 @@ def test_help_main_module_flags(self):
+ # Only the short name is shown in the usage string.
+ self.assertIn('[-s ABSL_STRING]', help_message)
+ # Both names are included in the options section.
+- self.assertIn('-s ABSL_STRING, --absl_string ABSL_STRING', help_message)
++ if sys.version_info >= (3, 13):
++ self.assertIn(' -s, --absl_string ABSL_STRING', help_message)
++ else:
++ self.assertIn(' -s ABSL_STRING, --absl_string ABSL_STRING', help_message)
+ # Verify help messages.
+ self.assertIn('help for --absl_string=%.', help_message)
+ self.assertIn('<apple|orange>: help for --absl_enum.', help_message)
+diff --git a/absl/testing/tests/parameterized_test.py b/absl/testing/tests/parameterized_test.py
+index 609c5571..4c024927 100644
+--- a/absl/testing/tests/parameterized_test.py
++++ b/absl/testing/tests/parameterized_test.py
+@@ -1128,6 +1128,9 @@ def test_successful_execution(self):
+ self.assertEqual(2, res.testsRun)
+ self.assertTrue(res.wasSuccessful())
+
++ @unittest.skipIf(
++ sys.version_info >= (3, 13), 'makeSuite was removed in Python 3.13'
++ )
+ def test_metaclass_side_effects(self):
+ ts = unittest.makeSuite(self.MyParams, suiteClass=self.MySuite)
+
+diff --git a/absl/testing/tests/xml_reporter_test.py b/absl/testing/tests/xml_reporter_test.py
+index ba8a88f7..e0b61a98 100644
+--- a/absl/testing/tests/xml_reporter_test.py
++++ b/absl/testing/tests/xml_reporter_test.py
+@@ -85,14 +85,16 @@ def xml_escaped_exception_type(exception_type):
+ FAILURE_MESSAGE = r"""
+ <failure message="e" type="{}"><!\[CDATA\[Traceback \(most recent call last\):
+ File ".*xml_reporter_test\.py", line \d+, in get_sample_failure
+- self.fail\(\'e\'\)
++ self.fail\(\'e\'\)(
++ ~~~~~~~~~\^\^\^\^\^)?
+ AssertionError: e
+ \]\]></failure>""".format(xml_escaped_exception_type(AssertionError))
+
+ ERROR_MESSAGE = r"""
+ <error message="invalid&#x20;literal&#x20;for&#x20;int\(\)&#x20;with&#x20;base&#x20;10:&#x20;(&apos;)?a(&apos;)?" type="{}"><!\[CDATA\[Traceback \(most recent call last\):
+ File ".*xml_reporter_test\.py", line \d+, in get_sample_error
+- int\('a'\)
++ int\('a'\)(
++ ~~~\^\^\^\^\^)?
+ ValueError: invalid literal for int\(\) with base 10: '?a'?
+ \]\]></error>""".format(xml_escaped_exception_type(ValueError))
+
diff --git a/dev-python/dbus-python/dbus-python-1.4.0.ebuild b/dev-python/dbus-python/dbus-python-1.4.0.ebuild
index e5eda30cc53a..3e05af9c7cce 100644
--- a/dev-python/dbus-python/dbus-python-1.4.0.ebuild
+++ b/dev-python/dbus-python/dbus-python-1.4.0.ebuild
@@ -31,6 +31,7 @@ RDEPEND="
${DEPEND}
"
BDEPEND="
+ dev-build/autoconf-archive
virtual/pkgconfig
doc? (
$(python_gen_any_dep '
diff --git a/dev-python/django-auth-ldap/Manifest b/dev-python/django-auth-ldap/Manifest
index 974a994cdcbe..435908032166 100644
--- a/dev-python/django-auth-ldap/Manifest
+++ b/dev-python/django-auth-ldap/Manifest
@@ -1,3 +1 @@
-DIST django-auth-ldap-4.8.0.tar.gz 53906 BLAKE2B 76542bfb59c998a681f5e4a4ec0fcae406a672e2fea6b20ef6f59a91987626bec0186d853b789ce0006ace8d0fdbb3b8b2e5855eb84d6d6c93c7040056e4a397 SHA512 4ca16bd5d11680127d2cecfeb7d1d48175e1b9b02e13f84d6845b76a4f52be3ef6c72d5b4bef4418b4f48b441830d3b593fef6cc08a8cd4221c78cfd8464ac8a
-DIST django_auth_ldap-5.0.0.tar.gz 54873 BLAKE2B b310d96bcb034644acd97626bda214074547033685785b6a90b0785fe93297b79b5d0b3199259220a0f40186996d6c990a4163d8c0bf8e9af1a52b7eedf5f26c SHA512 043ad6b6b9d36456975833433bf088f8d41d203a8eeec2e5db5edf4ac2d4cc62aaccd52ee45ca8ca47882986f47048467e88a88c6fac51a515e44a3d560c7e44
DIST django_auth_ldap-5.1.0.tar.gz 55059 BLAKE2B 4c1cf5cf7113b90be392b519c0ecfceeb72568a6e50803bd276becca22fffb3ec7222069b374e311156d2e4c559b65985af2a740e0a78ec66b398622db66da47 SHA512 3b1257c91d1651df83c1c0343b8f0658d1e9e6b23cbb161ec2f5c847d9c924609509b28f3d1efde9c09e890b73191f0a6a6e9bd802cb4c6985c0c36b5955a9dd
diff --git a/dev-python/django-auth-ldap/django-auth-ldap-4.8.0.ebuild b/dev-python/django-auth-ldap/django-auth-ldap-4.8.0.ebuild
deleted file mode 100644
index 7d730bf775e7..000000000000
--- a/dev-python/django-auth-ldap/django-auth-ldap-4.8.0.ebuild
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright 1999-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_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Django LDAP authentication backend"
-HOMEPAGE="
- https://github.com/django-auth-ldap/django-auth-ldap/
- https://pypi.org/project/django-auth-ldap/
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/django-2.2[${PYTHON_USEDEP}]
- >=dev-python/python-ldap-3.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- $(python_gen_impl_dep sqlite)
- net-nds/openldap[-minimal]
- )
-"
-
-distutils_enable_sphinx docs --no-autodoc
-
-python_test() {
- # for slapd and slapdtest
- local -x SBIN=/usr/sbin:/usr/$(get_libdir)/openldap
- "${EPYTHON}" -m django test -v 2 --settings tests.settings ||
- die "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/django-auth-ldap/django-auth-ldap-5.0.0.ebuild b/dev-python/django-auth-ldap/django-auth-ldap-5.0.0.ebuild
deleted file mode 100644
index 3a46fbdd5236..000000000000
--- a/dev-python/django-auth-ldap/django-auth-ldap-5.0.0.ebuild
+++ /dev/null
@@ -1,42 +0,0 @@
-# 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_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Django LDAP authentication backend"
-HOMEPAGE="
- https://github.com/django-auth-ldap/django-auth-ldap/
- https://pypi.org/project/django-auth-ldap/
-"
-
-LICENSE="BSD-2"
-SLOT="0"
-KEYWORDS="~amd64 ~x86"
-IUSE="test"
-RESTRICT="!test? ( test )"
-
-RDEPEND="
- >=dev-python/django-3.2[${PYTHON_USEDEP}]
- >=dev-python/python-ldap-3.1[${PYTHON_USEDEP}]
-"
-BDEPEND="
- dev-python/setuptools-scm[${PYTHON_USEDEP}]
- test? (
- $(python_gen_impl_dep sqlite)
- net-nds/openldap[-minimal]
- )
-"
-
-distutils_enable_sphinx docs --no-autodoc
-
-python_test() {
- # for slapd and slapdtest
- local -x SBIN=/usr/sbin:/usr/$(get_libdir)/openldap
- "${EPYTHON}" -m django test -v 2 --settings tests.settings ||
- die "Tests failed with ${EPYTHON}"
-}
diff --git a/dev-python/django-auth-ldap/django-auth-ldap-5.1.0.ebuild b/dev-python/django-auth-ldap/django-auth-ldap-5.1.0.ebuild
index 3a46fbdd5236..3c1af46d2f9f 100644
--- a/dev-python/django-auth-ldap/django-auth-ldap-5.1.0.ebuild
+++ b/dev-python/django-auth-ldap/django-auth-ldap-5.1.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/gfloat/gfloat-0.3.ebuild b/dev-python/gfloat/gfloat-0.3.ebuild
index 262b8eb2f9b5..b2bd40c0893f 100644
--- a/dev-python/gfloat/gfloat-0.3.ebuild
+++ b/dev-python/gfloat/gfloat-0.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/gfloat/gfloat-0.4.ebuild b/dev-python/gfloat/gfloat-0.4.ebuild
index 602995c55b44..d79571174cf8 100644
--- a/dev-python/gfloat/gfloat-0.4.ebuild
+++ b/dev-python/gfloat/gfloat-0.4.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2024 Gentoo Authors
+# Copyright 2024-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
diff --git a/dev-python/pytest-mpl/Manifest b/dev-python/pytest-mpl/Manifest
index 3a6e35a1976d..9856673307e7 100644
--- a/dev-python/pytest-mpl/Manifest
+++ b/dev-python/pytest-mpl/Manifest
@@ -1,2 +1 @@
-DIST pytest-mpl-0.16.1.tar.gz 663585 BLAKE2B aad171260a10417aab15e7e55115c2fe02aa33dcf8336634281e1a1dad4d1c5ff08293fd9a67be025ec6cbb18c42bc9eb7ccb86275c0fcc7f4bf33a035fc0927 SHA512 64c1689f1698f9223082bc5c6817a1d4f9b413cb193894c23b1e0302254a6358cb3e354ac92ec47677acf460a41d05b2b527c834fd0fbbde04c070b0af8f46e1
DIST pytest-mpl-0.17.0.tar.gz 885613 BLAKE2B d1a6d4551052eeeb7ecbf9722c782796aa74215a3241d1c037fca98972777dd35d7616ec8ef2bd4f00b6428f5dea516243244b61f56ec38d72a4805a75c91a50 SHA512 968397b1d75482729ad73f4844970c3c335c009e689f4163bd5a028c84627455a7d20563e62c6940b27c62229e5744496bec36c2440d402c0aee0a7853550f9b
diff --git a/dev-python/pytest-mpl/pytest-mpl-0.16.1.ebuild b/dev-python/pytest-mpl/pytest-mpl-0.16.1.ebuild
deleted file mode 100644
index 476714de67d8..000000000000
--- a/dev-python/pytest-mpl/pytest-mpl-0.16.1.ebuild
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 1999-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_{9,10,11,12,13} )
-
-inherit distutils-r1 pypi
-
-DESCRIPTION="Facilitate image comparison for Matplotlib figures"
-HOMEPAGE="
- https://pypi.org/project/pytest-mpl/
- https://github.com/matplotlib/pytest-mpl
-"
-
-LICENSE="MIT"
-SLOT="0"
-KEYWORDS="~amd64 ~arm64 ~x86"
-
-RDEPEND="
- dev-python/jinja2[${PYTHON_USEDEP}]
- dev-python/matplotlib[${PYTHON_USEDEP}]
- dev-python/packaging[${PYTHON_USEDEP}]
- dev-python/pillow[${PYTHON_USEDEP}]
- dev-python/pytest[${PYTHON_USEDEP}]
-"
-
-EPYTEST_DESELECT=(
- tests/subtests/test_subtest.py::test_default
- tests/subtests/test_subtest.py::test_html_images_only
-)
-
-distutils_enable_tests pytest
diff --git a/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild b/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
index 6dc904f12822..f99bdaeb3d0e 100644
--- a/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
+++ b/dev-python/pytest-mpl/pytest-mpl-0.17.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2024 Gentoo Authors
+# Copyright 1999-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -27,13 +27,21 @@ RDEPEND="
dev-python/pytest[${PYTHON_USEDEP}]
"
-EPYTEST_DESELECT=(
- tests/test_baseline_path.py::test_config
- tests/test_pytest_mpl.py::test_formats
- tests/test_results_always.py::test_config
- tests/test_use_full_test_name.py::test_config
- tests/subtests/test_subtest.py::test_default
- tests/subtests/test_subtest.py::test_html_images_only
-)
-
+EPYTEST_XDIST=1
distutils_enable_tests pytest
+
+python_test() {
+ local EPYTEST_DESELECT=(
+ # these tests are pinned to specific output image hashes
+ # and none match nowadays
+ tests/subtests/test_subtest.py
+ tests/test_baseline_path.py::test_config
+ tests/test_pytest_mpl.py::test_formats
+ tests/test_results_always.py::test_config
+ tests/test_use_full_test_name.py::test_config
+ )
+
+ local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+ local -x PYTEST_PLUGINS=pytest_mpl.plugin
+ epytest
+}
diff --git a/dev-python/python-cinderclient/files/python-cinderclient-9.7.0-py313.patch b/dev-python/python-cinderclient/files/python-cinderclient-9.7.0-py313.patch
new file mode 100644
index 000000000000..0cfc8df62cd5
--- /dev/null
+++ b/dev-python/python-cinderclient/files/python-cinderclient-9.7.0-py313.patch
@@ -0,0 +1,22 @@
+diff --git a/cinderclient/tests/unit/test_shell.py b/cinderclient/tests/unit/test_shell.py
+index c5d64af..6b67a8e 100644
+--- a/cinderclient/tests/unit/test_shell.py
++++ b/cinderclient/tests/unit/test_shell.py
+@@ -437,12 +437,14 @@
+ expected_help = ("help message (Supported by API versions "
+ "%(start)s - %(end)s)") % {
+ 'start': '3.0', 'end': '3.3'}
+- expected_desc = ("help message\n\n "
+- "This will not show up in help message\n ")
++ self.assertIn('help message',
++ mock_add_parser.call_args_list[0][1]['description'])
++ self.assertIn('This will not show up in help message',
++ mock_add_parser.call_args_list[0][1]['description'])
+ mock_add_parser.assert_any_call(
+ 'fake-action',
+ help=expected_help,
+- description=expected_desc,
++ description=mock.ANY,
+ add_help=False,
+ formatter_class=cinderclient.shell.OpenStackHelpFormatter)
+
diff --git a/dev-python/python-cinderclient/python-cinderclient-9.7.0.ebuild b/dev-python/python-cinderclient/python-cinderclient-9.7.0.ebuild
index 6aa843002894..4c5d4bb4ec82 100644
--- a/dev-python/python-cinderclient/python-cinderclient-9.7.0.ebuild
+++ b/dev-python/python-cinderclient/python-cinderclient-9.7.0.ebuild
@@ -41,6 +41,11 @@ BDEPEND="
distutils_enable_tests unittest
+PATCHES=(
+ # https://review.opendev.org/c/openstack/python-cinderclient/+/930218/1
+ "${FILESDIR}/${P}-py313.patch"
+)
+
python_test() {
# functional tests require cloud instance access
eunittest -b cinderclient/tests/unit
diff --git a/dev-python/python-ironicclient/python-ironicclient-5.10.0-r1.ebuild b/dev-python/python-ironicclient/python-ironicclient-5.10.0-r1.ebuild
new file mode 100644
index 000000000000..59dad531a38a
--- /dev/null
+++ b/dev-python/python-ironicclient/python-ironicclient-5.10.0-r1.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYPI_NO_NORMALIZE=1
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="Python bindings for the Ironic API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-ironicclient/
+ https://github.com/openstack/python-ironicclient/
+ https://pypi.org/project/python-ironicclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+RDEPEND="
+ >=dev-python/pbr-6.0.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-2.8.0[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.8.0[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.11.0[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-0.18.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/platformdirs-3[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.13.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.20.0[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-17.1.0[${PYTHON_USEDEP}]
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/python-openstackclient-3.12.0[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
diff --git a/dev-python/python-neutronclient/python-neutronclient-11.4.0-r1.ebuild b/dev-python/python-neutronclient/python-neutronclient-11.4.0-r1.ebuild
new file mode 100644
index 000000000000..77c9c7159c8a
--- /dev/null
+++ b/dev-python/python-neutronclient/python-neutronclient-11.4.0-r1.ebuild
@@ -0,0 +1,76 @@
+# Copyright 1999-2025 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_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A client for the OpenStack Quantum API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-neutronclient/
+ https://github.com/openstack/python-neutronclient/
+ https://pypi.org/project/python-neutronclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.18[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-3.36.0[${PYTHON_USEDEP}]
+ >dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/os-client-config-1.28.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.14.2[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ test? (
+ dev-python/bandit[${PYTHON_USEDEP}]
+ dev-python/fixtures[${PYTHON_USEDEP}]
+ dev-python/oslotest[${PYTHON_USEDEP}]
+ dev-python/python-openstackclient[${PYTHON_USEDEP}]
+ dev-python/python-subunit[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/testtools[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Needs osprofile
+ rm neutronclient/tests/unit/test_http.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b neutronclient.tests.unit
+}
+
+python_install() {
+ distutils-r1_python_install
+ # stupid stupid stupid
+ local SITEDIR="${D}$(python_get_sitedir)" || die
+ cd "${SITEDIR}" || die
+ local egg=( python_neutronclient*.dist-info )
+ [[ -d ${egg[0]} ]] || die "python_quantumclient*.dist-info not found"
+ ln -s "${egg[0]}" "${egg[0]/neutron/quantum}" || die
+ ln -s neutronclient quantumclient || die
+ ln -s neutron quantumclient/quantum || die
+}
diff --git a/dev-python/python-novaclient/python-novaclient-18.9.0-r1.ebuild b/dev-python/python-novaclient/python-novaclient-18.9.0-r1.ebuild
new file mode 100644
index 000000000000..c207c8cad771
--- /dev/null
+++ b/dev-python/python-novaclient/python-novaclient-18.9.0-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A client for the OpenStack Nova API"
+HOMEPAGE="
+ https://opendev.org/openstack/python-novaclient/
+ https://github.com/openstack/python-novaclient/
+ https://pypi.org/project/python-novaclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth1-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >dev-python/oslo-serialization-2.19.1[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.33.0[${PYTHON_USEDEP}]
+ >=dev-python/prettytable-0.7.2[${PYTHON_USEDEP}]
+ >dev-python/requests-2.12.2[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-2.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ test? (
+ dev-python/bandit[${PYTHON_USEDEP}]
+ dev-python/ddt[${PYTHON_USEDEP}]
+ dev-python/fixtures[${PYTHON_USEDEP}]
+ dev-python/python-keystoneclient[${PYTHON_USEDEP}]
+ dev-python/python-cinderclient[${PYTHON_USEDEP}]
+ dev-python/python-neutronclient[${PYTHON_USEDEP}]
+ dev-python/requests-mock[${PYTHON_USEDEP}]
+ dev-python/openstacksdk[${PYTHON_USEDEP}]
+ dev-python/testscenarios[${PYTHON_USEDEP}]
+ dev-python/testtools[${PYTHON_USEDEP}]
+ dev-python/tempest[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ sed -e 's/test_osprofiler/_&/' -i novaclient/tests/unit/test_shell.py || die
+ sed -e 's/novaclient\.tests\.unit\.//' -i novaclient/tests/unit/test_api_versions.py || die
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b novaclient/tests/unit
+}
diff --git a/dev-python/python-openstackclient/python-openstackclient-7.4.0-r1.ebuild b/dev-python/python-openstackclient/python-openstackclient-7.4.0-r1.ebuild
new file mode 100644
index 000000000000..b99dfb50ac0f
--- /dev/null
+++ b/dev-python/python-openstackclient/python-openstackclient-7.4.0-r1.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2025 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=setuptools
+PYTHON_COMPAT=( python3_{9,10,11,12,13} )
+
+inherit distutils-r1 pypi
+
+DESCRIPTION="A client for the OpenStack APIs"
+HOMEPAGE="
+ https://opendev.org/openstack/python-openstackclient/
+ https://github.com/openstack/python-openstackclient/
+ https://pypi.org/project/python-openstackclient/
+"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~riscv ~x86"
+
+RDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/cliff-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-3.15.3[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-3.22.0[${PYTHON_USEDEP}]
+ >=dev-python/python-cinderclient-3.3.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.27.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-2.0.1[${PYTHON_USEDEP}]
+"
+BDEPEND="
+ >dev-python/pbr-2.1.0[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-3.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-17.1.0[${PYTHON_USEDEP}]
+ >=dev-python/wrapt-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+src_prepare() {
+ # Depends on a specific runner
+ sed -e 's/test_command_has_logger/_&/' \
+ -i openstackclient/tests/unit/common/test_command.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b openstackclient/tests/unit
+}
diff --git a/dev-python/tasklib/tasklib-2.5.1.ebuild b/dev-python/tasklib/tasklib-2.5.1.ebuild
index fe1ace40476b..1104a67bda83 100644
--- a/dev-python/tasklib/tasklib-2.5.1.ebuild
+++ b/dev-python/tasklib/tasklib-2.5.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2023 Gentoo Authors
+# Copyright 2023-2025 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8