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}
 

Reply via email to