summaryrefslogtreecommitdiff
path: root/dev-python/python-openstackclient
diff options
context:
space:
mode:
Diffstat (limited to 'dev-python/python-openstackclient')
-rw-r--r--dev-python/python-openstackclient/Manifest2
-rw-r--r--dev-python/python-openstackclient/files/0001-tests-Fix-test_module-for-Python-3.14.patch71
-rw-r--r--dev-python/python-openstackclient/metadata.xml18
-rw-r--r--dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild59
-rw-r--r--dev-python/python-openstackclient/python-openstackclient-9.0.0.ebuild63
5 files changed, 213 insertions, 0 deletions
diff --git a/dev-python/python-openstackclient/Manifest b/dev-python/python-openstackclient/Manifest
new file mode 100644
index 000000000000..2f8d16bbf566
--- /dev/null
+++ b/dev-python/python-openstackclient/Manifest
@@ -0,0 +1,2 @@
+DIST python_openstackclient-10.0.0.tar.gz 971236 BLAKE2B f22d46cd76921907b3e4f0831ce8b5be626806011520ad6115c9f9bb61e783eb537c6cb28ce4ce477374bcd7daba6f4b6217c3702c033e5d221ff56bf0008c9e SHA512 057c7dd31e215e518569ed766e8851b3ba9254827b84c6384f1d6d7a684efedbaddff11951c9dd13a0b4b1d32eb4d23a33d14f792315a1ec7a62f1877769f330
+DIST python_openstackclient-9.0.0.tar.gz 944832 BLAKE2B eed30eee035450268eb8be6fa8e6bf5f2513cb5a36fabcac3f6389e4325739d80d30fc4b1ac61b91d0fa74c6a416a5fa3bee6e303cf28599ba2ef38058365233 SHA512 a42c2f5af76c9403982eef8b1711779155e18819c4028a80f27c60ec2bac862be060d60909eb1a0f4d069f23edc8c7163e4b61a29daddcf3060763192be490d5
diff --git a/dev-python/python-openstackclient/files/0001-tests-Fix-test_module-for-Python-3.14.patch b/dev-python/python-openstackclient/files/0001-tests-Fix-test_module-for-Python-3.14.patch
new file mode 100644
index 000000000000..769e6fd926d6
--- /dev/null
+++ b/dev-python/python-openstackclient/files/0001-tests-Fix-test_module-for-Python-3.14.patch
@@ -0,0 +1,71 @@
+From 8f52780f9df90c3b744939486079c17da99daf59 Mon Sep 17 00:00:00 2001
+From: Jay Faulkner <jay@jvf.cc>
+Date: Mon, 13 Apr 2026 12:25:47 -0700
+Subject: [PATCH] tests: Fix test_module for Python 3.14
+
+Python 3.14 changed argparse to lazily import _colorize during
+ArgumentParser.__init__, triggering a chain of imports
+(_colorize -> dataclasses -> inspect -> tokenize) that ends with
+`from builtins import open`. The class-level mock.patch.dict on
+sys.modules with clear=True removed builtins from sys.modules,
+causing this import to fail with ImportError.
+
+Narrow the mock scope to wrap only the take_action call rather
+than the entire test class, so get_parser/argparse initialization
+runs with an unpatched sys.modules while take_action still
+iterates the controlled set of fake modules.
+
+Assisted-By: claude-code
+Change-Id: I0e1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a
+Signed-off-by: Jay Faulkner <jay@jvf.cc>
+---
+ .../tests/unit/common/test_module.py | 19 ++++++++++++-------
+ 1 file changed, 12 insertions(+), 7 deletions(-)
+
+diff --git a/openstackclient/tests/unit/common/test_module.py b/openstackclient/tests/unit/common/test_module.py
+index 83962036..a992b31f 100644
+--- a/openstackclient/tests/unit/common/test_module.py
++++ b/openstackclient/tests/unit/common/test_module.py
+@@ -128,11 +128,6 @@ class TestCommandList(utils.TestCommand):
+ self.assertEqual(datalist, tuple(data))
+
+
+-@mock.patch.dict(
+- 'openstackclient.common.module.sys.modules',
+- values=MODULES,
+- clear=True,
+-)
+ class TestModuleList(utils.TestCommand):
+ def setUp(self):
+ super().setUp()
+@@ -150,7 +145,12 @@ class TestModuleList(utils.TestCommand):
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+- columns, data = self.cmd.take_action(parsed_args)
++ with mock.patch.dict(
++ 'openstackclient.common.module.sys.modules',
++ values=MODULES,
++ clear=True,
++ ):
++ columns, data = self.cmd.take_action(parsed_args)
+
+ # Output xxxclient and openstacksdk, but not regular module, like: zlib
+ self.assertIn(module_name_1, columns)
+@@ -177,7 +177,12 @@ class TestModuleList(utils.TestCommand):
+ # In base command class Lister in cliff, abstract method take_action()
+ # returns a tuple containing the column names and an iterable
+ # containing the data to be listed.
+- columns, data = self.cmd.take_action(parsed_args)
++ with mock.patch.dict(
++ 'openstackclient.common.module.sys.modules',
++ values=MODULES,
++ clear=True,
++ ):
++ columns, data = self.cmd.take_action(parsed_args)
+
+ # Output xxxclient, openstacksdk and regular module, like: zlib
+ self.assertIn(module_name_1, columns)
+--
+2.52.0
+
diff --git a/dev-python/python-openstackclient/metadata.xml b/dev-python/python-openstackclient/metadata.xml
new file mode 100644
index 000000000000..606c1115c64a
--- /dev/null
+++ b/dev-python/python-openstackclient/metadata.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>prometheanfire@gentoo.org</email>
+ <name>Matthew Thode</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>openstack@gentoo.org</email>
+ <name>Openstack</name>
+ </maintainer>
+ <maintainer type="project">
+ <email>python@gentoo.org</email>
+ <name>Python</name>
+ </maintainer>
+ <stabilize-allarches />
+ <origin>baldeagleos-repo</origin>
+</pkgmetadata>
diff --git a/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild b/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild
new file mode 100644
index 000000000000..ecaeb39b9020
--- /dev/null
+++ b/dev-python/python-openstackclient/python-openstackclient-10.0.0.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{13..14} )
+
+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/cliff-4.13.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-4.12.0[${PYTHON_USEDEP}]
+ >=dev-python/osc-lib-4.6.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="
+ 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/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
+ # we do not package hacking
+ rm openstackclient/tests/unit/test_hacking.py || die
+
+ distutils-r1_src_prepare
+}
+
+python_test() {
+ # functional tests require cloud instance access
+ eunittest -b openstackclient/tests/unit
+}
diff --git a/dev-python/python-openstackclient/python-openstackclient-9.0.0.ebuild b/dev-python/python-openstackclient/python-openstackclient-9.0.0.ebuild
new file mode 100644
index 000000000000..006f409f894e
--- /dev/null
+++ b/dev-python/python-openstackclient/python-openstackclient-9.0.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2026 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+DISTUTILS_USE_PEP517=pbr
+PYTHON_COMPAT=( python3_{13..14} )
+
+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-4.13.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-2.7[${PYTHON_USEDEP}]
+ >=dev-python/openstacksdk-4.6.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="
+ 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/wrapt-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/ddt-1.0.1[${PYTHON_USEDEP}]
+ )
+"
+
+distutils_enable_tests unittest
+
+PATCHES=(
+ # https://review.opendev.org/c/openstack/python-openstackclient/+/984455
+ "${FILESDIR}/0001-tests-Fix-test_module-for-Python-3.14.patch"
+)
+
+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
+}