Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-keystoneauth1 for
openSUSE:Factory checked in at 2026-03-10 17:47:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keystoneauth1 (Old)
and /work/SRC/openSUSE:Factory/.python-keystoneauth1.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-keystoneauth1"
Tue Mar 10 17:47:55 2026 rev:22 rq:1337756 version:5.13.1
Changes:
--------
---
/work/SRC/openSUSE:Factory/python-keystoneauth1/python-keystoneauth1.changes
2025-11-10 19:17:20.312342092 +0100
+++
/work/SRC/openSUSE:Factory/.python-keystoneauth1.new.8177/python-keystoneauth1.changes
2026-03-10 17:48:12.658910616 +0100
@@ -1,0 +2,15 @@
+Mon Mar 9 15:25:47 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 5.13.1:
+ * Remove tags from README
+ * Enable logging related ruff checks
+ * Drop redundant target-version option
+ * typing: Simplify mypy configuration
+ * docs: Update note on v2 API
+ * ruff: Enable S checks
+ * Use consistent name for logger instance
+ * ruff: Enable E5 check
+ * reno: Update master for unmaintained/2024.1
+ * Update master for stable/2025.2
+
+-------------------------------------------------------------------
Old:
----
keystoneauth1-5.12.0.tar.gz
New:
----
keystoneauth1-5.13.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-keystoneauth1.spec ++++++
--- /var/tmp/diff_new_pack.HuKzVd/_old 2026-03-10 17:48:13.306937366 +0100
+++ /var/tmp/diff_new_pack.HuKzVd/_new 2026-03-10 17:48:13.306937366 +0100
@@ -1,7 +1,7 @@
#
# spec file for package python-keystoneauth1
#
-# 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
@@ -17,7 +17,7 @@
Name: python-keystoneauth1
-Version: 5.12.0
+Version: 5.13.1
Release: 0
Summary: OpenStack authenticating tools
License: Apache-2.0
++++++ keystoneauth1-5.12.0.tar.gz -> keystoneauth1-5.13.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/.pre-commit-config.yaml
new/keystoneauth1-5.13.1/.pre-commit-config.yaml
--- old/keystoneauth1-5.12.0/.pre-commit-config.yaml 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/.pre-commit-config.yaml 2026-02-20
16:15:27.000000000 +0100
@@ -1,13 +1,13 @@
---
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
- rev: v5.0.0
+ rev: v6.0.0
hooks:
- id: trailing-whitespace
- id: mixed-line-ending
args: ['--fix', 'lf']
exclude: '.*\.(svg)$'
- - id: check-byte-order-marker
+ - id: fix-byte-order-marker
- id: check-executables-have-shebangs
- id: check-merge-conflict
- id: debug-statements
@@ -15,20 +15,13 @@
files: .*\.(yaml|yml)$
exclude: '^zuul.d/.*$'
- repo: https://github.com/astral-sh/ruff-pre-commit
- rev: v0.11.8
+ rev: v0.14.8
hooks:
- - id: ruff
+ - id: ruff-check
args: ['--fix', '--unsafe-fixes']
- id: ruff-format
- - repo: https://github.com/PyCQA/bandit
- rev: 1.8.3
- hooks:
- - id: bandit
- # We ignore the following:
- # B110: except: pass
- args: ['-x', 'tests', '-s', 'B110']
- repo: https://opendev.org/openstack/hacking
- rev: 7.0.0
+ rev: 8.0.0
hooks:
- id: hacking
additional_dependencies:
@@ -48,6 +41,5 @@
exclude: |
(?x)(
doc/.*
- | examples/.*
| releasenotes/.*
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/AUTHORS
new/keystoneauth1-5.13.1/AUTHORS
--- old/keystoneauth1-5.12.0/AUTHORS 2025-08-21 11:33:12.000000000 +0200
+++ new/keystoneauth1-5.13.1/AUTHORS 2026-02-20 16:16:00.000000000 +0100
@@ -82,6 +82,7 @@
Ian Cordasco <[email protected]>
Ihar Hrachyshka <[email protected]>
Ilya Kharin <[email protected]>
+Ivan Anfimov <[email protected]>
Jacek Tomasiak <[email protected]>
Jakub Ruzicka <[email protected]>
James E. Blair <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/ChangeLog
new/keystoneauth1-5.13.1/ChangeLog
--- old/keystoneauth1-5.12.0/ChangeLog 2025-08-21 11:33:12.000000000 +0200
+++ new/keystoneauth1-5.13.1/ChangeLog 2026-02-20 16:16:00.000000000 +0100
@@ -1,6 +1,24 @@
CHANGES
=======
+5.13.1
+------
+
+* Remove tags from README
+* Enable logging related ruff checks
+
+5.13.0
+------
+
+* Drop redundant target-version option
+* typing: Simplify mypy configuration
+* docs: Update note on v2 API
+* ruff: Enable S checks
+* Use consistent name for logger instance
+* ruff: Enable E5 check
+* reno: Update master for unmaintained/2024.1
+* Update master for stable/2025.2
+
5.12.0
------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/PKG-INFO
new/keystoneauth1-5.13.1/PKG-INFO
--- old/keystoneauth1-5.12.0/PKG-INFO 2025-08-21 11:33:12.393439800 +0200
+++ new/keystoneauth1-5.13.1/PKG-INFO 2026-02-20 16:16:01.062880500 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: keystoneauth1
-Version: 5.12.0
+Version: 5.13.1
Summary: Authentication Library for OpenStack Identity
Author-email: OpenStack <[email protected]>
License: Apache-2.0
@@ -40,22 +40,17 @@
Requires-Dist: betamax>=0.7.0; extra == "betamax"
Requires-Dist: fixtures>=3.0.0; extra == "betamax"
Requires-Dist: PyYAML>=3.13; extra == "betamax"
-
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
- :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
+Dynamic: license-file
+Dynamic: requires-dist
============
keystoneauth
============
+.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
+
.. image:: https://img.shields.io/pypi/v/keystoneauth1.svg
- :target:https://pypi.org/project/keystoneauth1
+ :target: https://pypi.org/project/keystoneauth1/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/keystoneauth1.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/README.rst
new/keystoneauth1-5.13.1/README.rst
--- old/keystoneauth1-5.12.0/README.rst 2025-08-21 11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/README.rst 2026-02-20 16:15:27.000000000 +0100
@@ -1,18 +1,11 @@
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
- :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
-
============
keystoneauth
============
+.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
+
.. image:: https://img.shields.io/pypi/v/keystoneauth1.svg
- :target:https://pypi.org/project/keystoneauth1
+ :target: https://pypi.org/project/keystoneauth1/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/keystoneauth1.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/doc/ext/list_plugins.py
new/keystoneauth1-5.13.1/doc/ext/list_plugins.py
--- old/keystoneauth1-5.12.0/doc/ext/list_plugins.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/doc/ext/list_plugins.py 2026-02-20
16:15:27.000000000 +0100
@@ -35,7 +35,7 @@
has_content = True
def report_load_failure(mgr, ep, err):
- LOG.warning(f'Failed to load {ep.module_name}: {err}')
+ LOG.warning('Failed to load %s: %s', ep.module_name, err)
def display_plugin(self, ext):
overline_style = self.options.get('overline-style', '')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/doc/source/authentication-plugins.rst
new/keystoneauth1-5.13.1/doc/source/authentication-plugins.rst
--- old/keystoneauth1-5.12.0/doc/source/authentication-plugins.rst
2025-08-21 11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/doc/source/authentication-plugins.rst
2026-02-20 16:15:27.000000000 +0100
@@ -540,8 +540,8 @@
If you have implemented a new authentication mechanism into the Identity
service then you will be able to reuse a lot of the infrastructure available
-for the existing Identity mechanisms. As the V2 identity API is essentially
-frozen, it is expected that new plugins are for the V3 API.
+for the existing Identity mechanisms. As the V2 identity API has been removed,
+it is expected that new plugins are for the V3 API.
To implement a new V3 plugin that can be combined with others you should
implement the base :py:class:`keystoneauth1.identity.v3.AuthMethod` class
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/keystoneauth1/discover.py
new/keystoneauth1-5.13.1/keystoneauth1/discover.py
--- old/keystoneauth1-5.12.0/keystoneauth1/discover.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/discover.py 2026-02-20
16:15:27.000000000 +0100
@@ -35,7 +35,7 @@
if ty.TYPE_CHECKING:
from keystoneauth1 import session as ks_session
-_LOGGER = utils.get_logger(__name__)
+LOG = utils.get_logger(__name__)
LATEST = float('inf')
_SERVICE_TYPES = os_service_types.ServiceTypes()
@@ -533,7 +533,8 @@
if part[0] != 'v':
continue
return normalize_version_number(part)
- except Exception:
+ except Exception: # noqa: S110
+ # we just return None instead
pass
return None
@@ -609,7 +610,7 @@
try:
status = v['status']
except KeyError:
- _LOGGER.warning(
+ LOG.warning(
'Skipping over invalid version data. '
'No stability status in version.'
)
@@ -659,13 +660,13 @@
try:
version_str = v['id']
except KeyError:
- _LOGGER.info('Skipping invalid version data. Missing ID.')
+ LOG.info('Skipping invalid version data. Missing ID.')
continue
try:
links = v['links']
except KeyError:
- _LOGGER.info('Skipping invalid version data. Missing links')
+ LOG.info('Skipping invalid version data. Missing links')
continue
version_number = normalize_version_number(version_str)
@@ -695,7 +696,7 @@
rel = link['rel']
url = _combine_relative_url(self._url, link['href'])
except (KeyError, TypeError):
- _LOGGER.info(
+ LOG.info(
'Skipping invalid version link. '
'Missing link URL or relationship.'
)
@@ -706,7 +707,7 @@
elif rel.lower() == 'collection':
collection_url = url
if not self_url:
- _LOGGER.info(
+ LOG.info(
'Skipping invalid version data. Missing link to endpoint.'
)
continue
@@ -1298,7 +1299,7 @@
except Exception as e:
# Ignore errors here - we're just searching for one of the
# URLs that will give us data.
- _LOGGER.debug(
+ LOG.debug(
"Failed attempt at discovery on %s: %s", vers_url, str(e)
)
continue
@@ -1393,16 +1394,19 @@
if not discovered_data:
if min_version and not max_version:
raise exceptions.DiscoveryFailure(
- f"Minimum version {version_to_string(min_version)} was not
found"
+ f"Minimum version {version_to_string(min_version)} was "
+ f"not found"
)
elif max_version and not min_version:
raise exceptions.DiscoveryFailure(
- f"Maximum version {version_to_string(max_version)} was not
found"
+ f"Maximum version {version_to_string(max_version)} was "
+ f"not found"
)
elif min_version and max_version:
raise exceptions.DiscoveryFailure(
- f"No version found between
{version_to_string(min_version)}"
- f" and {version_to_string(max_version)}"
+ f"No version found between "
+ f"{version_to_string(min_version)} and "
+ f"{version_to_string(max_version)}"
)
else:
raise exceptions.DiscoveryFailure(
@@ -1474,7 +1478,7 @@
exceptions.HttpError,
exceptions.ConnectionError,
) as exc:
- _LOGGER.debug('No version document at %s: %s', vers_url, exc)
+ LOG.debug('No version document at %s: %s', vers_url, exc)
continue
if not self._disc:
# We couldn't find a version discovery document anywhere.
@@ -1492,7 +1496,7 @@
# other choice. Realistically if you have provided a version
# you should be able to rely on that version being returned or
# the request failing.
- _LOGGER.warning(
+ LOG.warning(
'Failed to contact the endpoint at %s for '
'discovery. Fallback to using that endpoint as '
'the base url.',
@@ -1509,7 +1513,8 @@
raise exceptions.DiscoveryFailure(
"Unable to find a version discovery document at {}, "
"the service is unavailable or misconfigured. "
- "Required version range ({} - {}), version hack
disabled.".format(
+ "Required version range ({} - {}), "
+ "version hack disabled.".format(
self.url, min_version or "any", max_version or "any"
)
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/keystoneauth1/identity/v2.py
new/keystoneauth1-5.13.1/keystoneauth1/identity/v2.py
--- old/keystoneauth1-5.12.0/keystoneauth1/identity/v2.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/identity/v2.py 2026-02-20
16:15:27.000000000 +0100
@@ -20,7 +20,7 @@
from keystoneauth1.identity import base
from keystoneauth1 import session as ks_session
-_logger = utils.get_logger(__name__)
+LOG = utils.get_logger(__name__)
class Auth(base.BaseIdentityPlugin, metaclass=abc.ABCMeta):
@@ -63,7 +63,7 @@
if self.trust_id:
params['auth']['trust_id'] = self.trust_id
- _logger.debug('Making authentication request to %s', url)
+ LOG.debug('Making authentication request to %s', url)
resp = session.post(
url, json=params, headers=headers, authenticated=False, log=False
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/application_credential.py
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/application_credential.py
---
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/application_credential.py
2025-08-21 11:32:21.000000000 +0200
+++
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/application_credential.py
2026-02-20 16:15:27.000000000 +0100
@@ -99,9 +99,15 @@
def get_cache_id_elements(self) -> dict[str, str | None]:
return {
- 'application_credential_application_credential_secret':
self.application_credential_secret,
- 'application_credential_application_credential_id':
self.application_credential_id,
- 'application_credential_application_credential_name':
self.application_credential_name,
+ 'application_credential_application_credential_secret': (
+ self.application_credential_secret
+ ),
+ 'application_credential_application_credential_id': (
+ self.application_credential_id
+ ),
+ 'application_credential_application_credential_name': (
+ self.application_credential_name
+ ),
'application_credential_user_id': self.user_id,
'application_credential_username': self.username,
'application_credential_user_domain_id': self.user_domain_id,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/base.py
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/base.py
--- old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/base.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/base.py 2026-02-20
16:15:27.000000000 +0100
@@ -23,7 +23,7 @@
from keystoneauth1.identity import base
from keystoneauth1 import session as ks_session
-_logger = utils.get_logger(__name__)
+LOG = utils.get_logger(__name__)
__all__ = ('Auth', 'AuthMethod', 'AuthConstructor', 'BaseAuth')
@@ -236,7 +236,7 @@
if not self.include_catalog:
token_url += '?nocatalog'
- _logger.debug('Making authentication request to %s', token_url)
+ LOG.debug('Making authentication request to %s', token_url)
resp = session.post(
token_url,
json=body,
@@ -247,7 +247,7 @@
)
try:
- _logger.debug(json.dumps(resp.json()))
+ LOG.debug(json.dumps(resp.json()))
resp_data = resp.json()
except ValueError:
raise exceptions.InvalidResponse(response=resp)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/oauth2_client_credential.py
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/oauth2_client_credential.py
---
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/oauth2_client_credential.py
2025-08-21 11:32:21.000000000 +0200
+++
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/oauth2_client_credential.py
2026-02-20 16:15:27.000000000 +0100
@@ -87,7 +87,9 @@
return {
'oauth2_client_credential_oauth2_endpoint': self.oauth2_endpoint,
'oauth2_client_credential_oauth2_client_id': self.oauth2_client_id,
- 'oauth2_client_credential_oauth2_client_secret':
self.oauth2_client_secret,
+ 'oauth2_client_credential_oauth2_client_secret': (
+ self.oauth2_client_secret
+ ),
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/oidc.py
new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/oidc.py
--- old/keystoneauth1-5.12.0/keystoneauth1/identity/v3/oidc.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/identity/v3/oidc.py 2026-02-20
16:15:27.000000000 +0100
@@ -28,7 +28,7 @@
from keystoneauth1.identity.v3 import federation
from keystoneauth1 import session as ks_session
-_logger = utils.get_logger(__name__)
+LOG = utils.get_logger(__name__)
__all__ = (
'OidcAuthorizationCode',
@@ -172,14 +172,16 @@
self.discovery_endpoint, authenticated=False
)
except exceptions.HttpError:
- _logger.error(
- f"Cannot fetch discovery document
{self.discovery_endpoint}"
+ LOG.error(
+ "Cannot fetch discovery document %s",
+ self.discovery_endpoint,
)
raise
try:
self._discovery_document = resp.json()
- except Exception:
+ except Exception: # noqa: S110
+ # we handle this below
pass
if not self._discovery_document:
@@ -244,9 +246,9 @@
payload.setdefault('client_id', self.client_id)
access_token_endpoint = self._get_access_token_endpoint(session)
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_payload = self._sanitize(payload)
- _logger.debug(
+ LOG.debug(
"Making OpenID-Connect authentication request to %s with "
"data %s",
access_token_endpoint,
@@ -261,9 +263,9 @@
authenticated=False,
)
response = op_response.json()
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_response = self._sanitize(response)
- _logger.debug(
+ LOG.debug(
"OpenID-Connect authentication response from %s is %s",
access_token_endpoint,
sanitized_response,
@@ -381,7 +383,7 @@
protocol: str,
client_id: str,
client_secret: str,
- access_token_type: str = 'access_token', # nosec B107
+ access_token_type: str = 'access_token', # noqa: S107
scope: str = 'openid profile',
access_token_endpoint: str | None = None,
discovery_endpoint: str | None = None,
@@ -500,7 +502,7 @@
protocol: str,
client_id: str,
client_secret: str,
- access_token_type: str = 'access_token', # nosec B107
+ access_token_type: str = 'access_token', # noqa: S107
scope: str = 'openid profile',
access_token_endpoint: str | None = None,
discovery_endpoint: str | None = None,
@@ -573,7 +575,7 @@
protocol: str,
client_id: str,
client_secret: str,
- access_token_type: str = 'access_token', # nosec B107
+ access_token_type: str = 'access_token', # noqa: S107
scope: str = 'openid profile',
access_token_endpoint: str | None = None,
discovery_endpoint: str | None = None,
@@ -650,7 +652,7 @@
protocol: str,
# client_id and client_id intentionally omitted since they don't make
# sense with an access token
- access_token_type: str = 'access_token', # nosec B107
+ access_token_type: str = 'access_token', # noqa: S107
scope: str = 'openid profile',
access_token_endpoint: str | None = None,
discovery_endpoint: str | None = None,
@@ -753,7 +755,7 @@
protocol: str,
client_id: str,
client_secret: str | None = None,
- access_token_type: str = "access_token", # nosec B107
+ access_token_type: str = "access_token", # noqa: S107
scope: str = 'openid profile',
access_token_endpoint: str | None = None,
discovery_endpoint: str | None = None,
@@ -897,9 +899,9 @@
payload.setdefault('code_challenge', self.code_challenge)
encoded_payload = urlparse.urlencode(payload)
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_payload = self._sanitize(payload)
- _logger.debug(
+ LOG.debug(
"Making OpenID-Connect authentication request to %s with "
"data %s",
device_authz_endpoint,
@@ -913,9 +915,9 @@
log=False,
authenticated=False,
)
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_response = self._sanitize(op_response.json())
- _logger.debug(
+ LOG.debug(
"OpenID-Connect authentication response from %s is %s",
device_authz_endpoint,
sanitized_response,
@@ -952,16 +954,18 @@
'device_code': self.device_code,
}
:type payload: dict
- """
+ """ # noqa: E501
# verification_uri_complete is optional and not implemented by EntraID
if self.verification_uri_complete:
- _logger.warning(
- f"To authenticate please go to:
{self.verification_uri_complete}"
+ LOG.warning(
+ "To authenticate please go to: %s",
+ self.verification_uri_complete,
)
else:
- _logger.warning(
- f"To authenticate please go to {self.verification_uri} "
- f"and enter the code {self.user_code}"
+ LOG.warning(
+ "To authenticate please go to %s and enter the code %s",
+ self.verification_uri,
+ self.user_code,
)
if self.client_secret:
@@ -979,9 +983,9 @@
while time.time() < self.timeout:
try:
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_payload = self._sanitize(payload)
- _logger.debug(
+ LOG.debug(
"Making OpenID-Connect authentication request to %s "
"with data %s",
access_token_endpoint,
@@ -995,9 +999,9 @@
log=False,
authenticated=False,
)
- if _logger.isEnabledFor(logging.DEBUG):
+ if LOG.isEnabledFor(logging.DEBUG):
sanitized_response = self._sanitize(op_response.json())
- _logger.debug(
+ LOG.debug(
"OpenID-Connect authentication response from %s is %s",
access_token_endpoint,
sanitized_response,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/keystoneauth1/session.py
new/keystoneauth1-5.13.1/keystoneauth1/session.py
--- old/keystoneauth1-5.12.0/keystoneauth1/session.py 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/session.py 2026-02-20
16:15:27.000000000 +0100
@@ -47,7 +47,11 @@
from keystoneauth1 import plugin
import requests.auth
-DEFAULT_USER_AGENT = f'keystoneauth1/{keystoneauth1.__version__}
{requests.utils.default_user_agent()}
{platform.python_implementation()}/{platform.python_version()}'
+DEFAULT_USER_AGENT = (
+ f'keystoneauth1/{keystoneauth1.__version__} '
+ f'{requests.utils.default_user_agent()} '
+ f'{platform.python_implementation()}/{platform.python_version()}'
+)
# NOTE(jamielennox): Clients will likely want to print more than json. Please
# propose a patch if you have a content type you think is reasonable to print
@@ -424,7 +428,7 @@
# If we created a requests.Session, try to close it out correctly
try:
self._session.close()
- except Exception:
+ except Exception: # noqa: S110
pass
finally:
self._session = None
@@ -462,8 +466,7 @@
if 'serviceCatalog' in data['access']:
data['access']['serviceCatalog'] = '<removed>'
return self._json.encode(data)
-
- except Exception:
+ except Exception: # noqa: S110
# Don't fail trying to clean up the request body.
pass
return body
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/tests/unit/matchers.py
new/keystoneauth1-5.13.1/keystoneauth1/tests/unit/matchers.py
--- old/keystoneauth1-5.12.0/keystoneauth1/tests/unit/matchers.py
2025-08-21 11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/tests/unit/matchers.py
2026-02-20 16:15:27.000000000 +0100
@@ -86,4 +86,7 @@
doc, encoding='utf-8', pretty_print=True
).decode('utf-8')
- return f'expected =\n{pretty_xml(self.expected)}\nactual
=\n{pretty_xml(self.other)}'
+ return (
+ f'expected =\n{pretty_xml(self.expected)}\n'
+ f'actual =\n{pretty_xml(self.other)}'
+ )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1/tests/unit/test_session.py
new/keystoneauth1-5.13.1/keystoneauth1/tests/unit/test_session.py
--- old/keystoneauth1-5.12.0/keystoneauth1/tests/unit/test_session.py
2025-08-21 11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1/tests/unit/test_session.py
2026-02-20 16:15:27.000000000 +0100
@@ -862,7 +862,7 @@
session = client_session.Session()
# The exception should contain the information from the error response
- msg = f'Multiple error responses, showing first only: {title} (HTTP
9000)'
+ msg = f'Multiple error responses, showing first only: {title} (HTTP
9000)' # noqa: E501
try:
session.get(self.TEST_URL)
except exceptions.HttpError as ex:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/keystoneauth1.egg-info/PKG-INFO
new/keystoneauth1-5.13.1/keystoneauth1.egg-info/PKG-INFO
--- old/keystoneauth1-5.12.0/keystoneauth1.egg-info/PKG-INFO 2025-08-21
11:33:12.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1.egg-info/PKG-INFO 2026-02-20
16:16:00.000000000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.1
+Metadata-Version: 2.4
Name: keystoneauth1
-Version: 5.12.0
+Version: 5.13.1
Summary: Authentication Library for OpenStack Identity
Author-email: OpenStack <[email protected]>
License: Apache-2.0
@@ -40,22 +40,17 @@
Requires-Dist: betamax>=0.7.0; extra == "betamax"
Requires-Dist: fixtures>=3.0.0; extra == "betamax"
Requires-Dist: PyYAML>=3.13; extra == "betamax"
-
-========================
-Team and repository tags
-========================
-
-.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
- :target: https://governance.openstack.org/tc/reference/tags/index.html
-
-.. Change things from this point on
+Dynamic: license-file
+Dynamic: requires-dist
============
keystoneauth
============
+.. image:: https://governance.openstack.org/tc/badges/keystoneauth.svg
+
.. image:: https://img.shields.io/pypi/v/keystoneauth1.svg
- :target:https://pypi.org/project/keystoneauth1
+ :target: https://pypi.org/project/keystoneauth1/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/dm/keystoneauth1.svg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/keystoneauth1-5.12.0/keystoneauth1.egg-info/SOURCES.txt
new/keystoneauth1-5.13.1/keystoneauth1.egg-info/SOURCES.txt
--- old/keystoneauth1-5.12.0/keystoneauth1.egg-info/SOURCES.txt 2025-08-21
11:33:12.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1.egg-info/SOURCES.txt 2026-02-20
16:16:01.000000000 +0100
@@ -278,6 +278,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/mitaka.rst
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/keystoneauth1.egg-info/pbr.json
new/keystoneauth1-5.13.1/keystoneauth1.egg-info/pbr.json
--- old/keystoneauth1-5.12.0/keystoneauth1.egg-info/pbr.json 2025-08-21
11:33:12.000000000 +0200
+++ new/keystoneauth1-5.13.1/keystoneauth1.egg-info/pbr.json 2026-02-20
16:16:00.000000000 +0100
@@ -1 +1 @@
-{"git_version": "4f0414d", "is_release": true}
\ No newline at end of file
+{"git_version": "942d15f", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/pyproject.toml
new/keystoneauth1-5.13.1/pyproject.toml
--- old/keystoneauth1-5.12.0/pyproject.toml 2025-08-21 11:32:21.000000000
+0200
+++ new/keystoneauth1-5.13.1/pyproject.toml 2026-02-20 16:15:27.000000000
+0100
@@ -86,30 +86,10 @@
python_version = "3.10"
show_column_numbers = true
show_error_context = true
+strict = true
ignore_missing_imports = true
-follow_imports = "normal"
-check_untyped_defs = true
-warn_unused_ignores = true
-warn_return_any = true
-warn_unused_configs = true
-warn_redundant_casts = true
-strict_equality = true
-disallow_untyped_decorators = true
-disallow_any_generics = true
-disallow_subclassing_any = true
-disallow_untyped_calls = true
-disallow_incomplete_defs = true
-disallow_untyped_defs = true
-no_implicit_reexport = true
-extra_checks = true
# keep this in-sync with 'mypy.exclude' in '.pre-commit-config.yaml'
-exclude = '''
-(?x)(
- doc
- | examples
- | releasenotes
-)
-'''
+exclude = '(?x)(doc | releasenotes)'
[[tool.mypy.overrides]]
module = ["keystoneauth1.tests.unit.*"]
@@ -126,16 +106,15 @@
[tool.ruff]
line-length = 79
-target-version = "py310"
[tool.ruff.lint]
-# enable the following rule classes:
-#
-# C4: https://docs.astral.sh/ruff/rules/#flake8-comprehensions-c4
-# E: https://docs.astral.sh/ruff/rules/#pycodestyle-e-w
-# F: https://docs.astral.sh/ruff/rules/#pyflakes-f
-# UP: https://docs.astral.sh/ruff/rules/#pyupgrade-up
-select = ["C4", "E4", "E7", "E9", "F", "UP"]
+select = ["C4", "E4", "E5", "E7", "E9", "F", "G", "LOG", "S", "UP"]
+ignore = [
+ "S101", # asserts are only used for type narrowing
+]
+
+[tool.ruff.lint.per-file-ignores]
+"keystoneauth1/tests/*" = ["S"]
[tool.ruff.format]
quote-style = "preserve"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/releasenotes/source/2024.1.rst
new/keystoneauth1-5.13.1/releasenotes/source/2024.1.rst
--- old/keystoneauth1-5.12.0/releasenotes/source/2024.1.rst 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/releasenotes/source/2024.1.rst 2026-02-20
16:15:27.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/keystoneauth1-5.12.0/releasenotes/source/2025.2.rst
new/keystoneauth1-5.13.1/releasenotes/source/2025.2.rst
--- old/keystoneauth1-5.12.0/releasenotes/source/2025.2.rst 1970-01-01
01:00:00.000000000 +0100
+++ new/keystoneauth1-5.13.1/releasenotes/source/2025.2.rst 2026-02-20
16:15:27.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/keystoneauth1-5.12.0/releasenotes/source/index.rst
new/keystoneauth1-5.13.1/releasenotes/source/index.rst
--- old/keystoneauth1-5.12.0/releasenotes/source/index.rst 2025-08-21
11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/releasenotes/source/index.rst 2026-02-20
16:15:27.000000000 +0100
@@ -6,6 +6,7 @@
:maxdepth: 1
unreleased
+ 2025.2
2025.1
2024.2
2024.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/keystoneauth1-5.12.0/tox.ini
new/keystoneauth1-5.13.1/tox.ini
--- old/keystoneauth1-5.12.0/tox.ini 2025-08-21 11:32:21.000000000 +0200
+++ new/keystoneauth1-5.13.1/tox.ini 2026-02-20 16:15:27.000000000 +0100
@@ -25,17 +25,6 @@
commands =
pre-commit run --all-files --show-diff-on-failure
-# NOTE(browne): This is required for the integration test job of the bandit
-# project. Please do not remove.
-[testenv:bandit]
-description =
- Run bandit security checks.
-skip_install = true
-deps =
- pre-commit
-commands =
- pre-commit run --all-files --show-diff-on-failure bandit
-
[testenv:venv]
commands = {posargs}