Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-novaclient for
openSUSE:Factory checked in at 2026-03-24 18:50:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-novaclient (Old)
and /work/SRC/openSUSE:Factory/.python-novaclient.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-novaclient"
Tue Mar 24 18:50:48 2026 rev:46 rq:1342251 version:18.12.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-novaclient/python-novaclient.changes
2025-11-10 19:17:33.076876836 +0100
+++
/work/SRC/openSUSE:Factory/.python-novaclient.new.8177/python-novaclient.changes
2026-03-24 18:51:36.161227098 +0100
@@ -1,0 +2,13 @@
+Mon Mar 9 21:44:54 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 18.12.0:
+ * Replace obsolete PCRE packages
+ * Install pcre packages only in doc jobs
+ * Update the Testing document
+ * reno: Update master for unmaintained/2024.1
+ * Replace remaining py39 target
+ * Update master for stable/2025.2
+ * tests: Remove use of ddt
+ * Use pre-commit for lint jobs
+
+-------------------------------------------------------------------
Old:
----
python_novaclient-18.11.0.tar.gz
New:
----
python_novaclient-18.12.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-novaclient.spec ++++++
--- /var/tmp/diff_new_pack.dF2WgB/_old 2026-03-24 18:51:36.885257046 +0100
+++ /var/tmp/diff_new_pack.dF2WgB/_new 2026-03-24 18:51:36.885257046 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-novaclient
#
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
%global pythons %{primary_python}
Name: python-novaclient
-Version: 18.11.0
+Version: 18.12.0
Release: 0
Summary: Python API and CLI for OpenStack Nova
License: Apache-2.0
++++++ python_novaclient-18.11.0.tar.gz -> python_novaclient-18.12.0.tar.gz
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/.pre-commit-config.yaml
new/python_novaclient-18.12.0/.pre-commit-config.yaml
--- old/python_novaclient-18.11.0/.pre-commit-config.yaml 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/.pre-commit-config.yaml 2026-02-24
15:33:49.000000000 +0100
@@ -1,10 +1,7 @@
---
-default_language_version:
- # force all unspecified python hooks to run python3
- python: python3
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v4.1.0
+ rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
@@ -16,17 +13,18 @@
- id: check-yaml
files: .*\.(yaml|yml)$
- repo: https://github.com/Lucas-C/pre-commit-hooks
- rev: v1.1.13
+ rev: v1.5.5
hooks:
- id: remove-tabs
exclude: '.*\.(svg)$'
- - repo: local
+ - repo: https://github.com/PyCQA/bandit
+ rev: 1.8.5
hooks:
- - id: flake8
- name: flake8
- additional_dependencies:
- - hacking>=6.1.0,<6.2.0
- language: python
- entry: flake8
- files: '^.*\.py$'
+ - id: bandit
+ exclude: '^novaclient/tests/.*$'
+ - repo: https://opendev.org/openstack/hacking
+ rev: 7.0.0
+ hooks:
+ - id: hacking
+ additional_dependencies: []
exclude: '^(doc|releasenotes|tools)/.*$'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/ChangeLog
new/python_novaclient-18.12.0/ChangeLog
--- old/python_novaclient-18.11.0/ChangeLog 2025-09-01 15:31:17.000000000
+0200
+++ new/python_novaclient-18.12.0/ChangeLog 2026-02-24 15:34:39.000000000
+0100
@@ -1,6 +1,18 @@
CHANGES
=======
+18.12.0
+-------
+
+* Replace obsolete PCRE packages
+* Install pcre packages only in doc jobs
+* Update the Testing document
+* reno: Update master for unmaintained/2024.1
+* Replace remaining py39 target
+* Update master for stable/2025.2
+* tests: Remove use of ddt
+* Use pre-commit for lint jobs
+
18.11.0
-------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/PKG-INFO
new/python_novaclient-18.12.0/PKG-INFO
--- old/python_novaclient-18.11.0/PKG-INFO 2025-09-01 15:31:17.398654200
+0200
+++ new/python_novaclient-18.12.0/PKG-INFO 2026-02-24 15:34:40.017911700
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: python-novaclient
-Version: 18.11.0
+Version: 18.12.0
Summary: Client library for OpenStack Compute API
Home-page: https://docs.openstack.org/python-novaclient/latest
Author: OpenStack
@@ -31,6 +31,16 @@
Requires-Dist: oslo.utils>=3.33.0
Requires-Dist: PrettyTable>=0.7.2
Requires-Dist: stevedore>=2.0.1
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
========================
Team and repository tags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/bindep.txt
new/python_novaclient-18.12.0/bindep.txt
--- old/python_novaclient-18.11.0/bindep.txt 2025-09-01 15:30:51.000000000
+0200
+++ new/python_novaclient-18.12.0/bindep.txt 2026-02-24 15:33:49.000000000
+0100
@@ -18,4 +18,5 @@
python3-dev [platform:dpkg]
python3-devel [platform:fedora]
uuid-dev [platform:dpkg]
-libpcre3-dev [test platform:dpkg]
+libpcre2-dev [platform:dpkg doc]
+pcre2-devel [platform:rpm doc]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/doc/requirements.txt
new/python_novaclient-18.12.0/doc/requirements.txt
--- old/python_novaclient-18.11.0/doc/requirements.txt 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/doc/requirements.txt 2026-02-24
15:33:49.000000000 +0100
@@ -4,4 +4,4 @@
sphinxcontrib-apidoc>=0.2.0 # BSD
# redirect tests in docs
-whereto>=0.3.0 # Apache-2.0
+whereto>=0.5.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/doc/source/contributor/testing.rst
new/python_novaclient-18.12.0/doc/source/contributor/testing.rst
--- old/python_novaclient-18.11.0/doc/source/contributor/testing.rst
2025-09-01 15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/doc/source/contributor/testing.rst
2026-02-24 15:33:49.000000000 +0100
@@ -8,11 +8,11 @@
``tox -e pep8``
Style guidelines enforcement.
-``tox -e py38``
- Traditional unit testing (Python 3.8).
+``tox -e py310``
+ Traditional unit testing (Python 3.10).
``tox -e functional``
- Live functional testing against an existing OpenStack instance. (Python 3.8)
+ Live functional testing against an existing OpenStack instance. (Python 3.10)
``tox -e cover``
Generate a coverage report on unit testing.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/novaclient/crypto.py
new/python_novaclient-18.12.0/novaclient/crypto.py
--- old/python_novaclient-18.11.0/novaclient/crypto.py 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/novaclient/crypto.py 2026-02-24
15:33:49.000000000 +0100
@@ -14,7 +14,7 @@
# under the License.
import base64
-import subprocess
+import subprocess # nosec: B404
class DecryptionFailure(Exception):
@@ -30,7 +30,7 @@
cmd = ['openssl', 'rsautl', '-decrypt', '-inkey', private_key]
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
+ stderr=subprocess.PIPE) # nosec: B603
out, err = proc.communicate(unencoded)
proc.stdin.close()
if proc.returncode:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/novaclient/tests/unit/test_shell.py
new/python_novaclient-18.12.0/novaclient/tests/unit/test_shell.py
--- old/python_novaclient-18.11.0/novaclient/tests/unit/test_shell.py
2025-09-01 15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/novaclient/tests/unit/test_shell.py
2026-02-24 15:33:49.000000000 +0100
@@ -17,7 +17,6 @@
import sys
from unittest import mock
-import ddt
import fixtures
from keystoneauth1 import fixture
import requests_mock
@@ -352,7 +351,6 @@
self.assertTrue(args.tic_tac)
[email protected]
class ShellTest(utils.TestCase):
_msg_no_tenant_project = ("You must provide a project name or project"
@@ -528,22 +526,23 @@
else:
self.fail('CommandError not raised')
- @ddt.data(
- (None, 'project_domain_id', FAKE_ENV['OS_PROJECT_DOMAIN_ID']),
- ('OS_PROJECT_DOMAIN_ID', 'project_domain_id', ''),
- (None, 'project_domain_name', FAKE_ENV['OS_PROJECT_DOMAIN_NAME']),
- ('OS_PROJECT_DOMAIN_NAME', 'project_domain_name', ''),
- (None, 'user_domain_id', FAKE_ENV['OS_USER_DOMAIN_ID']),
- ('OS_USER_DOMAIN_ID', 'user_domain_id', ''),
- (None, 'user_domain_name', FAKE_ENV['OS_USER_DOMAIN_NAME']),
- ('OS_USER_DOMAIN_NAME', 'user_domain_name', '')
- )
- @ddt.unpack
- def test_basic_attributes(self, exclude, client_arg, env_var):
- self.make_env(exclude=exclude, fake_env=FAKE_ENV)
- self.shell('list')
- client_kwargs = self.mock_client.call_args_list[0][1]
- self.assertEqual(env_var, client_kwargs[client_arg])
+ def test_basic_attributes(self):
+ for exclude, client_arg, env_var in (
+ (None, 'project_domain_id', FAKE_ENV['OS_PROJECT_DOMAIN_ID']),
+ ('OS_PROJECT_DOMAIN_ID', 'project_domain_id', ''),
+ (None, 'project_domain_name', FAKE_ENV['OS_PROJECT_DOMAIN_NAME']),
+ ('OS_PROJECT_DOMAIN_NAME', 'project_domain_name', ''),
+ (None, 'user_domain_id', FAKE_ENV['OS_USER_DOMAIN_ID']),
+ ('OS_USER_DOMAIN_ID', 'user_domain_id', ''),
+ (None, 'user_domain_name', FAKE_ENV['OS_USER_DOMAIN_NAME']),
+ ('OS_USER_DOMAIN_NAME', 'user_domain_name', '')
+ ):
+ with self.subTest(f'{exclude},{client_arg},{env_var}'):
+ self.mock_client.reset_mock()
+ self.make_env(exclude=exclude, fake_env=FAKE_ENV)
+ self.shell('list')
+ client_kwargs = self.mock_client.call_args_list[0][1]
+ self.assertEqual(env_var, client_kwargs[client_arg])
@requests_mock.Mocker()
def test_nova_endpoint_type(self, m_requests):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/novaclient/v2/shell.py
new/python_novaclient-18.12.0/novaclient/v2/shell.py
--- old/python_novaclient-18.11.0/novaclient/v2/shell.py 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/novaclient/v2/shell.py 2026-02-24
15:33:49.000000000 +0100
@@ -4208,7 +4208,7 @@
cmd = "ssh -%d -p%d %s %s@%s %s" % (version, args.port, identity,
args.login, ip_address, args.extra)
logger.debug("Executing cmd '%s'", cmd)
- os.system(cmd)
+ os.system(cmd) # nosec: B605
# NOTE(mriedem): In the 2.50 microversion, the os-quota-class-sets API
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/python_novaclient.egg-info/PKG-INFO
new/python_novaclient-18.12.0/python_novaclient.egg-info/PKG-INFO
--- old/python_novaclient-18.11.0/python_novaclient.egg-info/PKG-INFO
2025-09-01 15:31:17.000000000 +0200
+++ new/python_novaclient-18.12.0/python_novaclient.egg-info/PKG-INFO
2026-02-24 15:34:39.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: python-novaclient
-Version: 18.11.0
+Version: 18.12.0
Summary: Client library for OpenStack Compute API
Home-page: https://docs.openstack.org/python-novaclient/latest
Author: OpenStack
@@ -31,6 +31,16 @@
Requires-Dist: oslo.utils>=3.33.0
Requires-Dist: PrettyTable>=0.7.2
Requires-Dist: stevedore>=2.0.1
+Dynamic: author
+Dynamic: author-email
+Dynamic: classifier
+Dynamic: description
+Dynamic: home-page
+Dynamic: license
+Dynamic: license-file
+Dynamic: requires-dist
+Dynamic: requires-python
+Dynamic: summary
========================
Team and repository tags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/python_novaclient.egg-info/SOURCES.txt
new/python_novaclient-18.12.0/python_novaclient.egg-info/SOURCES.txt
--- old/python_novaclient-18.11.0/python_novaclient.egg-info/SOURCES.txt
2025-09-01 15:31:17.000000000 +0200
+++ new/python_novaclient-18.12.0/python_novaclient.egg-info/SOURCES.txt
2026-02-24 15:34:39.000000000 +0100
@@ -317,6 +317,7 @@
releasenotes/source/2024.1.rst
releasenotes/source/2024.2.rst
releasenotes/source/2025.1.rst
+releasenotes/source/2025.2.rst
releasenotes/source/conf.py
releasenotes/source/index.rst
releasenotes/source/liberty.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/python_novaclient.egg-info/pbr.json
new/python_novaclient-18.12.0/python_novaclient.egg-info/pbr.json
--- old/python_novaclient-18.11.0/python_novaclient.egg-info/pbr.json
2025-09-01 15:31:17.000000000 +0200
+++ new/python_novaclient-18.12.0/python_novaclient.egg-info/pbr.json
2026-02-24 15:34:39.000000000 +0100
@@ -1 +1 @@
-{"git_version": "45a4ab5e", "is_release": true}
\ No newline at end of file
+{"git_version": "e00ed698", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/releasenotes/notes/remove_api_v_1_1-88b3f18ce1423b46.yaml
new/python_novaclient-18.12.0/releasenotes/notes/remove_api_v_1_1-88b3f18ce1423b46.yaml
---
old/python_novaclient-18.11.0/releasenotes/notes/remove_api_v_1_1-88b3f18ce1423b46.yaml
2025-09-01 15:30:51.000000000 +0200
+++
new/python_novaclient-18.12.0/releasenotes/notes/remove_api_v_1_1-88b3f18ce1423b46.yaml
2026-02-24 15:33:49.000000000 +0100
@@ -2,4 +2,3 @@
upgrade:
- remove version 1.1 API support as we only support v2 and v2.1
API in nova side now.
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/releasenotes/source/2024.1.rst
new/python_novaclient-18.12.0/releasenotes/source/2024.1.rst
--- old/python_novaclient-18.11.0/releasenotes/source/2024.1.rst
2025-09-01 15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/releasenotes/source/2024.1.rst
2026-02-24 15:33:49.000000000 +0100
@@ -3,4 +3,4 @@
===========================
.. release-notes::
- :branch: stable/2024.1
+ :branch: unmaintained/2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/releasenotes/source/2025.2.rst
new/python_novaclient-18.12.0/releasenotes/source/2025.2.rst
--- old/python_novaclient-18.11.0/releasenotes/source/2025.2.rst
1970-01-01 01:00:00.000000000 +0100
+++ new/python_novaclient-18.12.0/releasenotes/source/2025.2.rst
2026-02-24 15:33:49.000000000 +0100
@@ -0,0 +1,6 @@
+===========================
+2025.2 Series Release Notes
+===========================
+
+.. release-notes::
+ :branch: stable/2025.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/python_novaclient-18.11.0/releasenotes/source/index.rst
new/python_novaclient-18.12.0/releasenotes/source/index.rst
--- old/python_novaclient-18.11.0/releasenotes/source/index.rst 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/releasenotes/source/index.rst 2026-02-24
15:33:49.000000000 +0100
@@ -8,6 +8,7 @@
:maxdepth: 2
unreleased
+ 2025.2
2025.1
2024.2
2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/test-requirements.txt
new/python_novaclient-18.12.0/test-requirements.txt
--- old/python_novaclient-18.11.0/test-requirements.txt 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/test-requirements.txt 2026-02-24
15:33:49.000000000 +0100
@@ -1,7 +1,4 @@
-hacking>=6.1.0,<6.2.0 # Apache-2.0
-bandit>=1.1.0 # Apache-2.0
coverage>=4.4.1 # Apache-2.0
-ddt>=1.0.1 # MIT
fixtures>=3.0.0 # Apache-2.0/BSD
requests-mock>=1.2.0 # Apache-2.0
openstacksdk>=0.11.2 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/tools/nova.bash_completion
new/python_novaclient-18.12.0/tools/nova.bash_completion
--- old/python_novaclient-18.11.0/tools/nova.bash_completion 2025-09-01
15:30:51.000000000 +0200
+++ new/python_novaclient-18.12.0/tools/nova.bash_completion 2026-02-24
15:33:49.000000000 +0100
@@ -3,25 +3,25 @@
_nova_opts_exp="" # lazy init
_nova()
{
- local cur prev nbc cflags
- COMPREPLY=()
- cur="${COMP_WORDS[COMP_CWORD]}"
- prev="${COMP_WORDS[COMP_CWORD-1]}"
+ local cur prev nbc cflags
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
- if [ "x$_nova_opts" == "x" ] ; then
- nbc="`nova bash-completion | sed -e "s/ *-h */ /" -e "s/ *-i
*/ /"`"
- _nova_opts="`echo "$nbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/
*/ /g"`"
- _nova_flags="`echo " $nbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g"
-e "s/ */ /g"`"
- _nova_opts_exp="`echo "$_nova_opts" | tr ' ' '|'`"
- fi
+ if [ "x$_nova_opts" == "x" ] ; then
+ nbc="`nova bash-completion | sed -e "s/ *-h */ /" -e "s/ *-i */
/"`"
+ _nova_opts="`echo "$nbc" | sed -e "s/--[a-z0-9_-]*//g" -e "s/ */ /g"`"
+ _nova_flags="`echo " $nbc" | sed -e "s/ [^-][^-][a-z0-9_-]*//g" -e "s/
*/ /g"`"
+ _nova_opts_exp="`echo "$_nova_opts" | tr ' ' '|'`"
+ fi
- if [[ " ${COMP_WORDS[@]} " =~ " "($_nova_opts_exp)" " && "$prev" !=
"help" ]] ; then
- COMPLETION_CACHE=~/.novaclient/*/*-cache
- cflags="$_nova_flags "$(cat $COMPLETION_CACHE 2> /dev/null | tr
'\n' ' ')
- COMPREPLY=($(compgen -W "${cflags}" -- ${cur}))
- else
- COMPREPLY=($(compgen -W "${_nova_opts}" -- ${cur}))
- fi
- return 0
+ if [[ " ${COMP_WORDS[@]} " =~ " "($_nova_opts_exp)" " && "$prev" != "help"
]] ; then
+ COMPLETION_CACHE=~/.novaclient/*/*-cache
+ cflags="$_nova_flags "$(cat $COMPLETION_CACHE 2> /dev/null | tr '\n' '
')
+ COMPREPLY=($(compgen -W "${cflags}" -- ${cur}))
+ else
+ COMPREPLY=($(compgen -W "${_nova_opts}" -- ${cur}))
+ fi
+ return 0
}
complete -F _nova nova
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/python_novaclient-18.11.0/tox.ini
new/python_novaclient-18.12.0/tox.ini
--- old/python_novaclient-18.11.0/tox.ini 2025-09-01 15:30:51.000000000
+0200
+++ new/python_novaclient-18.12.0/tox.ini 2026-02-24 15:33:49.000000000
+0100
@@ -1,12 +1,11 @@
[tox]
envlist = py3,pep8,docs
-minversion = 3.18.0
-ignore_basepython_conflict = true
+minversion = 4.6.0
[testenv]
-basepython = python3
+description =
+ Run unit tests.
usedevelop = true
-# tox is silly... these need to be separated by a newline....
allowlist_externals =
find
rm
@@ -23,10 +22,20 @@
stestr run {posargs}
[testenv:pep8]
-commands = flake8 {posargs}
+description =
+ Run style checks.
+deps =
+ pre-commit
+commands =
+ pre-commit run --all-files --show-diff-on-failure
[testenv:bandit]
-commands = bandit -r novaclient -n5 -x tests
+description =
+ Run security checks.
+deps =
+ pre-commit
+commands =
+ pre-commit run --all-files --show-diff-on-failure bandit
[testenv:venv]
deps =
@@ -37,6 +46,8 @@
commands = {posargs}
[testenv:docs]
+description =
+ Build documentation in HTML format.
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
@@ -47,6 +58,8 @@
whereto doc/build/html/.htaccess doc/test/redirect-tests.txt
[testenv:pdf-docs]
+description =
+ Build documentation in PDF format.
deps = {[testenv:docs]deps}
commands =
rm -rf doc/build/pdf
@@ -54,19 +67,26 @@
make -C doc/build/pdf
[testenv:releasenotes]
+description =
+ Build release notes.
deps =
-c{env:TOX_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/doc/requirements.txt
commands =
sphinx-build -a -E -W -d releasenotes/build/doctrees -b html
releasenotes/source releasenotes/build/html
-[testenv:functional{,-py39,-py310,-py311,-py312}]
-passenv = OS_*
+[testenv:functional{,-py310,-py311,-py312,-py313}]
+description =
+ Run functional tests.
+passenv =
+ OS_*
commands =
stestr --test-path=./novaclient/tests/functional run --concurrency=1
{posargs}
python novaclient/tests/functional/hooks/check_resources.py
[testenv:cover]
+description =
+ Run unit tests and print coverage information.
setenv =
PYTHON=coverage run --source novaclient --parallel-mode
commands =
@@ -93,11 +113,12 @@
import_exceptions = novaclient.i18n
[testenv:bindep]
+description =
+ Check for installed binary dependencies.
# Do not install any requirements. We want this to be fast and work even if
# system dependencies are missing, since it's used to tell you what system
# dependencies are missing! This also means that bindep must be installed
# separately, outside of the requirements files.
deps = bindep
-skipsdist=True
-usedevelop=False
+skip_install = true
commands = bindep test