diff options
Diffstat (limited to 'dev-python/python-openstackclient')
5 files changed, 216 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..863afc1d49f7 --- /dev/null +++ b/dev-python/python-openstackclient/metadata.xml @@ -0,0 +1,21 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/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/> + <upstream> + <remote-id type="pypi">python-openstackclient</remote-id> + <remote-id type="github">openstack/python-openstackclient</remote-id> + </upstream> +</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 +} |
