Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-keystoneclient for 
openSUSE:Factory checked in at 2024-03-25 21:11:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-keystoneclient (Old)
 and      /work/SRC/openSUSE:Factory/.python-keystoneclient.new.1905 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-keystoneclient"

Mon Mar 25 21:11:22 2024 rev:39 rq:1161188 version:5.4.0

Changes:
--------
--- 
/work/SRC/openSUSE:Factory/python-keystoneclient/python-keystoneclient.changes  
    2024-01-15 22:19:19.211045053 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-keystoneclient.new.1905/python-keystoneclient.changes
    2024-03-25 21:18:04.107164758 +0100
@@ -1,0 +2,15 @@
+Sun Mar 24 20:07:51 UTC 2024 - [email protected]
+
+- update to version 5.4.0
+  - Remove six dependency
+  - Remove deprecated pbr options
+  - Declare Python 3.10 support
+  - Bump hacking
+  - Update master for stable/2023.2
+  - Stop installing python-all-dev in Ubuntu/Debian
+  - Replace abc.abstractproperty with property and abc.abstractmethod
+  - Update python classifier in setup.cfg
+  - Update master for stable/2023.1
+  - reno: Update master for unmaintained/yoga
+
+-------------------------------------------------------------------

Old:
----
  python-keystoneclient-5.2.0.tar.gz

New:
----
  python-keystoneclient-5.4.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-keystoneclient.spec ++++++
--- /var/tmp/diff_new_pack.llNZio/_old  2024-03-25 21:18:05.143202862 +0100
+++ /var/tmp/diff_new_pack.llNZio/_new  2024-03-25 21:18:05.143202862 +0100
@@ -17,14 +17,14 @@
 
 
 Name:           python-keystoneclient
-Version:        5.2.0
+Version:        5.4.0
 Release:        0
 Epoch:          0
 Summary:        Client library for OpenStack Identity API
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://docs.openstack.org/python-keystoneclient
-Source0:        
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-5.2.0.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/p/python-keystoneclient/python-keystoneclient-5.4.0.tar.gz
 BuildRequires:  openssl
 BuildRequires:  openstack-macros
 BuildRequires:  python3-debtcollector >= 1.2.0
@@ -72,7 +72,7 @@
 Identity API.
 
 %prep
-%autosetup -p1 -n python-keystoneclient-5.2.0
+%autosetup -p1 -n python-keystoneclient-5.4.0
 %py_req_cleanup
 # disable intersphinx - no network access during build
 echo "intersphinx_mapping = {}" >> doc/source/conf.py

++++++ python-keystoneclient-5.2.0.tar.gz -> python-keystoneclient-5.4.0.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/AUTHORS 
new/python-keystoneclient-5.4.0/AUTHORS
--- old/python-keystoneclient-5.2.0/AUTHORS     2023-09-14 17:26:52.000000000 
+0200
+++ new/python-keystoneclient-5.4.0/AUTHORS     2024-03-01 14:53:38.000000000 
+0100
@@ -1,3 +1,4 @@
+Aarni Koskela <[email protected]>
 Aaron Rosen <[email protected]>
 Adam Gandelman <[email protected]>
 Adam Young <[email protected]>
@@ -209,6 +210,7 @@
 Stuart McLaren <[email protected]>
 Sushil Kumar <[email protected]>
 THOMAS J. COCOZZELLO <[email protected]>
+Takashi Kajinami <[email protected]>
 Takashi Kajinami <[email protected]>
 Tang Chen <[email protected]>
 Thiago Paiva Brito <[email protected]>
@@ -278,6 +280,7 @@
 lin-hua-cheng <[email protected]>
 liu-sheng <[email protected]>
 liuqing <[email protected]>
+ljhuang <[email protected]>
 llg8212 <[email protected]>
 lrqrun <[email protected]>
 lvxianguo <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/ChangeLog 
new/python-keystoneclient-5.4.0/ChangeLog
--- old/python-keystoneclient-5.2.0/ChangeLog   2023-09-14 17:26:52.000000000 
+0200
+++ new/python-keystoneclient-5.4.0/ChangeLog   2024-03-01 14:53:38.000000000 
+0100
@@ -1,16 +1,34 @@
 CHANGES
 =======
 
+5.4.0
+-----
+
+* reno: Update master for unmaintained/yoga
+* Bump hacking
+* Update python classifier in setup.cfg
+
+5.3.0
+-----
+
+* Remove six dependency
+* Remove deprecated pbr options
+* Stop installing python-all-dev in Ubuntu/Debian
+* Declare Python 3.10 support
+* Update master for stable/2023.2
+
 5.2.0
 -----
 
 * Fix the gate
+* Update master for stable/2023.1
 
 5.1.0
 -----
 
 * Switch to 2023.1 Python3 unit tests and generic template name
 * Update master for stable/zed
+* Replace abc.abstractproperty with property and abc.abstractmethod
 
 5.0.1
 -----
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/PKG-INFO 
new/python-keystoneclient-5.4.0/PKG-INFO
--- old/python-keystoneclient-5.2.0/PKG-INFO    2023-09-14 17:26:53.087831700 
+0200
+++ new/python-keystoneclient-5.4.0/PKG-INFO    2024-03-01 14:53:39.030612500 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: python-keystoneclient
-Version: 5.2.0
+Version: 5.4.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
@@ -80,4 +80,6 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/bindep.txt 
new/python-keystoneclient-5.4.0/bindep.txt
--- old/python-keystoneclient-5.2.0/bindep.txt  2023-09-14 17:26:11.000000000 
+0200
+++ new/python-keystoneclient-5.4.0/bindep.txt  2024-03-01 14:53:11.000000000 
+0100
@@ -14,7 +14,6 @@
 libsasl2-dev [platform:dpkg]
 libxml2-dev [platform:dpkg]
 libxslt1-dev [platform:dpkg]
-python-all-dev [platform:dpkg]
 python3-all-dev [platform:dpkg]
 
 cyrus-sasl-devel [platform:rpm]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/base.py
--- old/python-keystoneclient-5.2.0/keystoneclient/auth/base.py 2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/auth/base.py 2024-03-01 
14:53:11.000000000 +0100
@@ -14,7 +14,6 @@
 
 from debtcollector import removals
 from keystoneauth1 import plugin
-import six
 import stevedore
 
 from keystoneclient import exceptions
@@ -292,7 +291,7 @@
 
             # select the first ENV that is not false-y or return None
             env_vars = (os.environ.get(e) for e in envs)
-            default = six.next(six.moves.filter(None, env_vars), None)
+            default = next(filter(None, env_vars), None)
 
             parser.add_argument(*args,
                                 default=default or opt.default,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/base.py
--- old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/base.py        
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/base.py        
2024-03-01 14:53:11.000000000 +0100
@@ -16,7 +16,6 @@
 import warnings
 
 from oslo_config import cfg
-import six
 
 from keystoneclient import _discover
 from keystoneclient.auth import base
@@ -31,8 +30,7 @@
     ]
 
 
[email protected]_metaclass(abc.ABCMeta)
-class BaseIdentityPlugin(base.BaseAuthPlugin):
+class BaseIdentityPlugin(base.BaseAuthPlugin, metaclass=abc.ABCMeta):
 
     # we count a token as valid (not needing refreshing) if it is valid for at
     # least this many seconds before the token expiry time
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/generic/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/generic/base.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/generic/base.py    
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/generic/base.py    
    2024-03-01 14:53:11.000000000 +0100
@@ -12,10 +12,9 @@
 
 import abc
 import logging
+import urllib.parse as urlparse
 
 from oslo_config import cfg
-import six
-import six.moves.urllib.parse as urlparse
 
 from keystoneclient import _discover
 from keystoneclient.auth.identity import base
@@ -42,8 +41,7 @@
     ]
 
 
[email protected]_metaclass(abc.ABCMeta)
-class BaseGenericPlugin(base.BaseIdentityPlugin):
+class BaseGenericPlugin(base.BaseIdentityPlugin, metaclass=abc.ABCMeta):
     """An identity plugin that is not version dependent.
 
     Internally we will construct a version dependent plugin with the resolved
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v2.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v2.py
--- old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v2.py  
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v2.py  
2024-03-01 14:53:11.000000000 +0100
@@ -14,7 +14,6 @@
 import logging
 
 from oslo_config import cfg
-import six
 
 from keystoneclient import access
 from keystoneclient.auth.identity import base
@@ -24,8 +23,7 @@
 _logger = logging.getLogger(__name__)
 
 
[email protected]_metaclass(abc.ABCMeta)
-class Auth(base.BaseIdentityPlugin):
+class Auth(base.BaseIdentityPlugin, metaclass=abc.ABCMeta):
     """Identity V2 Authentication Plugin.
 
     :param string auth_url: Identity service endpoint for authorization.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v3/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v3/base.py
--- old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v3/base.py     
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v3/base.py     
2024-03-01 14:53:11.000000000 +0100
@@ -15,7 +15,6 @@
 
 from oslo_config import cfg
 from oslo_serialization import jsonutils
-import six
 
 from keystoneclient import access
 from keystoneclient.auth.identity import base
@@ -27,8 +26,7 @@
 __all__ = ('Auth', 'AuthMethod', 'AuthConstructor', 'BaseAuth')
 
 
[email protected]_metaclass(abc.ABCMeta)
-class BaseAuth(base.BaseIdentityPlugin):
+class BaseAuth(base.BaseIdentityPlugin, metaclass=abc.ABCMeta):
     """Identity V3 Authentication Plugin.
 
     :param string auth_url: Identity service endpoint for authentication.
@@ -198,8 +196,7 @@
                                    **resp_data)
 
 
[email protected]_metaclass(abc.ABCMeta)
-class AuthMethod(object):
+class AuthMethod(object, metaclass=abc.ABCMeta):
     """One part of a V3 Authentication strategy.
 
     V3 Tokens allow multiple methods to be presented when authentication
@@ -243,8 +240,7 @@
         pass  # pragma: no cover
 
 
[email protected]_metaclass(abc.ABCMeta)
-class AuthConstructor(Auth):
+class AuthConstructor(Auth, metaclass=abc.ABCMeta):
     """Abstract base class for creating an Auth Plugin.
 
     The Auth Plugin created contains only one authentication method. This
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v3/federated.py 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v3/federated.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/auth/identity/v3/federated.py    
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/auth/identity/v3/federated.py    
    2024-03-01 14:53:11.000000000 +0100
@@ -13,7 +13,6 @@
 import abc
 
 from oslo_config import cfg
-import six
 
 from keystoneclient.auth.identity.v3 import base
 from keystoneclient.auth.identity.v3 import token
@@ -21,8 +20,7 @@
 __all__ = ('FederatedBaseAuth',)
 
 
[email protected]_metaclass(abc.ABCMeta)
-class FederatedBaseAuth(base.BaseAuth):
+class FederatedBaseAuth(base.BaseAuth, metaclass=abc.ABCMeta):
 
     rescoping_plugin = token.Token
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/keystoneclient/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/base.py
--- old/python-keystoneclient-5.2.0/keystoneclient/base.py      2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/base.py      2024-03-01 
14:53:11.000000000 +0100
@@ -20,13 +20,12 @@
 import abc
 import copy
 import functools
+import urllib
 import warnings
 
 from keystoneauth1 import exceptions as ksa_exceptions
 from keystoneauth1 import plugin
 from oslo_utils import strutils
-import six
-from six.moves import urllib
 
 from keystoneclient import exceptions as ksc_exceptions
 from keystoneclient.i18n import _
@@ -265,8 +264,7 @@
             return self._prepare_return_value(resp, body)
 
 
[email protected]_metaclass(abc.ABCMeta)
-class ManagerWithFind(Manager):
+class ManagerWithFind(Manager, metaclass=abc.ABCMeta):
     """Manager with additional `find()`/`findall()` methods."""
 
     @abc.abstractmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/common/cms.py 
new/python-keystoneclient-5.4.0/keystoneclient/common/cms.py
--- old/python-keystoneclient-5.2.0/keystoneclient/common/cms.py        
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/common/cms.py        
2024-03-01 14:53:11.000000000 +0100
@@ -26,7 +26,6 @@
 import zlib
 
 from debtcollector import removals
-import six
 
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
@@ -116,7 +115,7 @@
         retcode, err = _check_files_accessible(files)
         if process.stderr:
             msg = process.stderr.read()
-            if isinstance(msg, six.binary_type):
+            if isinstance(msg, bytes):
                 msg = msg.decode('utf-8')
             if err:
                 err = (_('Hit OSError in '
@@ -133,7 +132,7 @@
     else:
         retcode = process.poll()
         if err is not None:
-            if isinstance(err, six.binary_type):
+            if isinstance(err, bytes):
                 err = err.decode('utf-8')
 
     return output, err, retcode
@@ -162,8 +161,8 @@
                                                               properly.
     """
     _ensure_subprocess()
-    if isinstance(formatted, six.string_types):
-        data = bytearray(formatted, _encoding_for_form(inform))
+    if isinstance(formatted, str):
+        data = bytes(formatted, _encoding_for_form(inform))
     else:
         data = formatted
     process = subprocess.Popen(['openssl', 'cms', '-verify',
@@ -356,8 +355,8 @@
 
     """
     _ensure_subprocess()
-    if isinstance(data_to_sign, six.string_types):
-        data = bytearray(data_to_sign, encoding='utf-8')
+    if isinstance(data_to_sign, str):
+        data = bytes(data_to_sign, encoding='utf-8')
     else:
         data = data_to_sign
     process = subprocess.Popen(['openssl', 'cms', '-sign',
@@ -437,7 +436,7 @@
         return None
     if is_asn1_token(token_id) or is_pkiz(token_id):
         hasher = hashlib.new(mode)
-        if isinstance(token_id, six.text_type):
+        if isinstance(token_id, str):
             token_id = token_id.encode('utf-8')
         hasher.update(token_id)
         return hasher.hexdigest()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/contrib/auth/v3/saml2.py 
new/python-keystoneclient-5.4.0/keystoneclient/contrib/auth/v3/saml2.py
--- old/python-keystoneclient-5.2.0/keystoneclient/contrib/auth/v3/saml2.py     
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/contrib/auth/v3/saml2.py     
2024-03-01 14:53:11.000000000 +0100
@@ -11,11 +11,11 @@
 # under the License.
 
 import datetime
+import urllib.parse
 import uuid
 
 from lxml import etree  # nosec(cjschaef): used to create xml, not parse it
 from oslo_config import cfg
-from six.moves import urllib
 
 from keystoneclient import access
 from keystoneclient.auth.identity import v3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/contrib/ec2/utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/contrib/ec2/utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/contrib/ec2/utils.py 
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/contrib/ec2/utils.py 
2024-03-01 14:53:11.000000000 +0100
@@ -20,9 +20,7 @@
 import hashlib
 import hmac
 import re
-
-import six
-from six.moves import urllib
+import urllib.parse
 
 from keystoneclient.i18n import _
 
@@ -106,9 +104,9 @@
     @staticmethod
     def _get_utf8_value(value):
         """Get the UTF8-encoded version of a value."""
-        if not isinstance(value, (six.binary_type, six.text_type)):
+        if not isinstance(value, (str, bytes)):
             value = str(value)
-        if isinstance(value, six.text_type):
+        if isinstance(value, str):
             return value.encode('utf-8')
         else:
             return value
@@ -121,9 +119,7 @@
 
     def _calc_signature_1(self, params):
         """Generate AWS signature version 1 string."""
-        keys = list(params)
-        keys.sort(key=six.text_type.lower)
-        for key in keys:
+        for key in sorted(params, key=str.lower):
             self.hmac.update(key.encode('utf-8'))
             val = self._get_utf8_value(params[key])
             self.hmac.update(val)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/generic/client.py 
new/python-keystoneclient-5.4.0/keystoneclient/generic/client.py
--- old/python-keystoneclient-5.2.0/keystoneclient/generic/client.py    
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/generic/client.py    
2024-03-01 14:53:11.000000000 +0100
@@ -14,9 +14,9 @@
 #    under the License.
 
 import logging
+import urllib.parse as urlparse
 
 from debtcollector import removals
-from six.moves.urllib import parse as urlparse
 
 from keystoneclient import exceptions
 from keystoneclient import httpclient
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/httpclient.py 
new/python-keystoneclient-5.4.0/keystoneclient/httpclient.py
--- old/python-keystoneclient-5.2.0/keystoneclient/httpclient.py        
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/httpclient.py        
2024-03-01 14:53:11.000000000 +0100
@@ -17,16 +17,10 @@
 #    under the License.
 """OpenStack Client interface. Handles the REST calls and responses."""
 
+import importlib.metadata
 import logging
 import warnings
 
-try:
-    # For Python 3.8 and later
-    import importlib.metadata as importlib_metadata
-except ImportError:
-    # For everyone else
-    import importlib_metadata
-
 from debtcollector import removals
 from debtcollector import renames
 from keystoneauth1 import adapter
@@ -41,7 +35,7 @@
     # trigger if it's a version of keyring that's supported in global
     # requirements. Update _min and _bad when that changes.
     keyring_v = packaging.version.Version(
-        importlib_metadata.version('keyring')
+        importlib.metadata.version('keyring')
     )
     keyring_min = packaging.version.Version('5.5.1')
     # This is a list of versions, e.g., pkg_resources.parse_version('3.3')
@@ -51,7 +45,7 @@
         import keyring
     else:
         keyring = None
-except (ImportError, importlib_metadata.PackageNotFoundError):
+except (ImportError, importlib.metadata.PackageNotFoundError):
     keyring = None
     pickle = None
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/service_catalog.py 
new/python-keystoneclient-5.4.0/keystoneclient/service_catalog.py
--- old/python-keystoneclient-5.2.0/keystoneclient/service_catalog.py   
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/service_catalog.py   
2024-03-01 14:53:11.000000000 +0100
@@ -19,14 +19,11 @@
 import abc
 import warnings
 
-import six
-
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
 
 
[email protected]_metaclass(abc.ABCMeta)
-class ServiceCatalog(object):
+class ServiceCatalog(object, metaclass=abc.ABCMeta):
     """Helper methods for dealing with a Keystone Service Catalog.
 
     .. warning::
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/session.py 
new/python-keystoneclient-5.4.0/keystoneclient/session.py
--- old/python-keystoneclient-5.2.0/keystoneclient/session.py   2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/session.py   2024-03-01 
14:53:11.000000000 +0100
@@ -17,6 +17,7 @@
 import os
 import socket
 import time
+import urllib.parse
 import warnings
 
 from debtcollector import removals
@@ -26,8 +27,6 @@
 from oslo_utils import importutils
 from oslo_utils import strutils
 import requests
-import six
-from six.moves import urllib
 
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
@@ -191,7 +190,7 @@
         # so we need to actually check that this is False.
         if self.verify is False:
             string_parts.append('--insecure')
-        elif isinstance(self.verify, six.string_types):
+        elif isinstance(self.verify, str):
             string_parts.append('--cacert "%s"' % self.verify)
 
         if method:
@@ -205,7 +204,7 @@
                                     % self._process_header(header))
 
         if data:
-            if isinstance(data, six.binary_type):
+            if isinstance(data, bytes):
                 try:
                     data = data.decode("ascii")
                 except UnicodeDecodeError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/auth/test_identity_common.py
 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/auth/test_identity_common.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/auth/test_identity_common.py
      2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/auth/test_identity_common.py
      2024-03-01 14:53:11.000000000 +0100
@@ -18,7 +18,6 @@
 from keystoneauth1 import fixture
 from keystoneauth1 import plugin
 from oslo_utils import timeutils
-import six
 
 from keystoneclient import access
 from keystoneclient.auth import base
@@ -28,8 +27,7 @@
 from keystoneclient.tests.unit import utils
 
 
[email protected]_metaclass(abc.ABCMeta)
-class CommonIdentityTests(object):
+class CommonIdentityTests(object, metaclass=abc.ABCMeta):
 
     TEST_ROOT_URL = 'http://127.0.0.1:5000/'
     TEST_ROOT_ADMIN_URL = 'http://127.0.0.1:35357/'
@@ -79,7 +77,8 @@
 
         self.stub_auth(json=token)
 
-    @abc.abstractproperty
+    @property
+    @abc.abstractmethod
     def version(self):
         """The API version being tested."""
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/client_fixtures.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/client_fixtures.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/client_fixtures.py    
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/client_fixtures.py    
    2024-03-01 14:53:11.000000000 +0100
@@ -23,7 +23,6 @@
 from keystoneauth1 import session as ksa_session
 from oslo_serialization import jsonutils
 from oslo_utils import timeutils
-import six
 import testresources
 
 from keystoneclient.auth import identity as ksc_identity
@@ -204,7 +203,7 @@
 
 
 def _hash_signed_token_safe(signed_text, **kwargs):
-    if isinstance(signed_text, six.text_type):
+    if isinstance(signed_text, str):
         signed_text = signed_text.encode('utf-8')
     return utils.hash_signed_token(signed_text, **kwargs)
 
@@ -299,7 +298,7 @@
         self.v3_UUID_TOKEN_UNKNOWN_BIND = '7ed9781b62cd4880b8d8c6788ab1d1e2'
 
         revoked_token = self.REVOKED_TOKEN
-        if isinstance(revoked_token, six.text_type):
+        if isinstance(revoked_token, str):
             revoked_token = revoked_token.encode('utf-8')
         self.REVOKED_TOKEN_HASH = utils.hash_signed_token(revoked_token)
         self.REVOKED_TOKEN_HASH_SHA256 = utils.hash_signed_token(revoked_token,
@@ -310,7 +309,7 @@
         self.REVOKED_TOKEN_LIST_JSON = jsonutils.dumps(self.REVOKED_TOKEN_LIST)
 
         revoked_v3_token = self.REVOKED_v3_TOKEN
-        if isinstance(revoked_v3_token, six.text_type):
+        if isinstance(revoked_v3_token, str):
             revoked_v3_token = revoked_v3_token.encode('utf-8')
         self.REVOKED_v3_TOKEN_HASH = utils.hash_signed_token(revoked_v3_token)
         hash = utils.hash_signed_token(revoked_v3_token, mode='sha256')
@@ -322,12 +321,12 @@
             self.REVOKED_v3_TOKEN_LIST)
 
         revoked_token_pkiz = self.REVOKED_TOKEN_PKIZ
-        if isinstance(revoked_token_pkiz, six.text_type):
+        if isinstance(revoked_token_pkiz, str):
             revoked_token_pkiz = revoked_token_pkiz.encode('utf-8')
         self.REVOKED_TOKEN_PKIZ_HASH = utils.hash_signed_token(
             revoked_token_pkiz)
         revoked_v3_token_pkiz = self.REVOKED_v3_TOKEN_PKIZ
-        if isinstance(revoked_v3_token_pkiz, six.text_type):
+        if isinstance(revoked_v3_token_pkiz, str):
             revoked_v3_token_pkiz = revoked_v3_token_pkiz.encode('utf-8')
         self.REVOKED_v3_PKIZ_TOKEN_HASH = utils.hash_signed_token(
             revoked_v3_token_pkiz)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_base.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_base.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_base.py      
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_base.py      
2024-03-01 14:53:11.000000000 +0100
@@ -319,7 +319,7 @@
         delete_mock.assert_called_once_with('/test-url', name='hello')
         self.assertEqual(base_resp.request_ids[0], TEST_REQUEST_ID)
         self.assertEqual(base_resp.data, None)
-        self.assertTrue(isinstance(resp, requests.Response))
+        self.assertIsInstance(resp, requests.Response)
 
     def test_patch(self):
         body = {"hello": {"hi": 1}}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_discovery.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_discovery.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_discovery.py 
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_discovery.py 
2024-03-01 14:53:11.000000000 +0100
@@ -15,7 +15,6 @@
 
 from keystoneauth1 import fixture
 from oslo_serialization import jsonutils
-import six
 from testtools import matchers
 
 from keystoneclient import _discover
@@ -105,7 +104,7 @@
 V3_MEDIA_TYPES = V3_VERSION.media_types
 V3_VERSION.updated_str = UPDATED
 
-V3_TOKEN = six.u('3e2813b7ba0b4006840c3825860b86ed'),
+V3_TOKEN = ('3e2813b7ba0b4006840c3825860b86ed',)
 V3_AUTH_RESPONSE = jsonutils.dumps({
     "token": {
         "methods": [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_http.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_http.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_http.py      
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_http.py      
2024-03-01 14:53:11.000000000 +0100
@@ -12,9 +12,9 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
+import io
 import logging
 
-import six
 from testtools import matchers
 
 from keystoneclient import exceptions
@@ -153,7 +153,7 @@
 
     def setUp(self):
         super(BasicRequestTests, self).setUp()
-        self.logger_message = six.moves.cStringIO()
+        self.logger_message = io.StringIO()
         handler = logging.StreamHandler(self.logger_message)
         handler.setLevel(logging.DEBUG)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_session.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_session.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_session.py   
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_session.py   
2024-03-01 14:53:11.000000000 +0100
@@ -13,6 +13,7 @@
 # under the License.
 
 import argparse
+from io import StringIO
 import itertools
 import logging
 from unittest import mock
@@ -22,7 +23,6 @@
 from oslo_config import fixture as config
 from oslo_serialization import jsonutils
 import requests
-import six
 from testtools import matchers
 
 from keystoneclient import adapter
@@ -249,27 +249,6 @@
 
         self.assertIn("'%s'" % data, self.logger.output)
 
-    def test_binary_data_not_in_debug_output(self):
-        """Verify that non-ascii-encodable data causes replacement."""
-        if six.PY2:
-            data = "my data" + chr(255)
-        else:
-            # Python 3 logging handles binary data well.
-            return
-
-        session = client_session.Session(verify=False)
-
-        body = 'RESP'
-        self.stub_url('POST', text=body)
-
-        # Forced mixed unicode and byte strings in request
-        # elements to make sure that all joins are appropriately
-        # handled (any join of unicode and byte strings should
-        # raise a UnicodeDecodeError)
-        session.post(six.text_type(self.TEST_URL), data=data)
-
-        self.assertNotIn('my data', self.logger.output)
-
     def test_logging_cacerts(self):
         path_to_certs = '/path/to/certs'
         session = client_session.Session(verify=path_to_certs)
@@ -328,11 +307,12 @@
         # The exception should contain the URL and details about the SSL error
         msg = _('SSL exception connecting to %(url)s: %(error)s') % {
             'url': self.TEST_URL, 'error': error}
-        six.assertRaisesRegex(self,
-                              exceptions.SSLError,
-                              msg,
-                              session.get,
-                              self.TEST_URL)
+        self.assertRaisesRegex(
+            exceptions.SSLError,
+            msg,
+            session.get,
+            self.TEST_URL,
+        )
 
     def test_mask_password_in_http_log_response(self):
         session = client_session.Session()
@@ -807,7 +787,7 @@
         logger.setLevel(logging.DEBUG)
         logger.propagate = False
 
-        io = six.StringIO()
+        io = StringIO()
         handler = logging.StreamHandler(io)
         logger.addHandler(handler)
 
@@ -1003,7 +983,7 @@
         logger.setLevel(logging.DEBUG)
         logger.propagate = False
 
-        io = six.StringIO()
+        io = StringIO()
         handler = logging.StreamHandler(io)
         logger.addHandler(handler)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/test_utils.py     
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/test_utils.py     
2024-03-01 14:53:11.000000000 +0100
@@ -11,7 +11,6 @@
 #    under the License.
 
 from keystoneauth1 import exceptions as ksa_exceptions
-import six
 import testresources
 from testtools import matchers
 
@@ -112,8 +111,7 @@
     def test_default_md5(self):
         """The default hash method is md5."""
         token = self.examples.SIGNED_TOKEN_SCOPED
-        if six.PY3:
-            token = token.encode('utf-8')
+        token = token.encode('utf-8')
         token_id_default = utils.hash_signed_token(token)
         token_id_md5 = utils.hash_signed_token(token, mode='md5')
         self.assertThat(token_id_default, matchers.Equals(token_id_md5))
@@ -123,8 +121,7 @@
     def test_sha256(self):
         """Can also hash with sha256."""
         token = self.examples.SIGNED_TOKEN_SCOPED
-        if six.PY3:
-            token = token.encode('utf-8')
+        token = token.encode('utf-8')
         token_id = utils.hash_signed_token(token, mode='sha256')
         # sha256 hash is 64 chars.
         self.assertThat(token_id, matchers.HasLength(64))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/utils.py  
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/utils.py  
2024-03-01 14:53:11.000000000 +0100
@@ -12,6 +12,7 @@
 
 import logging
 import sys
+import urllib.parse as urlparse
 import uuid
 
 import fixtures
@@ -19,7 +20,6 @@
 import requests
 import requests_mock
 from requests_mock.contrib import fixture
-from six.moves.urllib import parse as urlparse
 import testscenarios
 import testtools
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/saml2_fixtures.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/saml2_fixtures.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/saml2_fixtures.py  
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/saml2_fixtures.py  
    2024-03-01 14:53:11.000000000 +0100
@@ -10,9 +10,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import six
-
-SP_SOAP_RESPONSE = six.b("""<S:Envelope
+SP_SOAP_RESPONSE = b"""<S:Envelope
 xmlns:S="http://schemas.xmlsoap.org/soap/envelope/";>
 <S:Header>
 <paos:Request xmlns:paos="urn:liberty:paos:2003-08"
@@ -44,10 +42,10 @@
  <samlp:IDPList>
  <samlp:IDPEntry ProviderID="https://idp.testshib.org/idp/shibboleth"/>
  </samlp:IDPList></samlp:Scoping></samlp:AuthnRequest></S:Body></S:Envelope>
-""")
+"""
 
 
-SAML2_ASSERTION = six.b("""<?xml version="1.0" encoding="UTF-8"?>
+SAML2_ASSERTION = b"""<?xml version="1.0" encoding="UTF-8"?>
 <soap11:Envelope xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/";>
 <soap11:Header>
 <ecp:Response xmlns:ecp="urn:oasis:names:tc:SAML:2.0:profiles:SSO:ecp"
@@ -95,7 +93,7 @@
 <xenc:CipherValue>VALUE=</xenc:CipherValue></xenc:CipherData>
 </xenc:EncryptedData></saml2:EncryptedAssertion></saml2p:Response>
 </soap11:Body></soap11:Envelope>
-""")
+"""
 
 UNSCOPED_TOKEN_HEADER = 'UNSCOPED_TOKEN'
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_auth_oidc.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_auth_oidc.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_auth_oidc.py  
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_auth_oidc.py  
    2024-03-01 14:53:11.000000000 +0100
@@ -10,10 +10,11 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import urllib.parse
 import uuid
 
 from oslo_config import fixture as config
-from six.moves import urllib
+
 import testtools
 
 from keystoneclient.auth import conf
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_auth_saml2.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_auth_saml2.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_auth_saml2.py 
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_auth_saml2.py 
    2024-03-01 14:53:11.000000000 +0100
@@ -11,12 +11,12 @@
 #    under the License.
 
 import os
+import urllib.parse
 import uuid
 
 from lxml import etree
 from oslo_config import fixture as config
 import requests
-from six.moves import urllib
 
 from keystoneclient.auth import conf
 from keystoneclient.contrib.auth.v3 import saml2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_federation.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_federation.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_federation.py 
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_federation.py 
    2024-03-01 14:53:11.000000000 +0100
@@ -19,7 +19,6 @@
 from keystoneauth1.identity import v3
 from keystoneauth1 import session
 from keystoneauth1.tests.unit import k2k_fixtures
-import six
 from testtools import matchers
 
 from keystoneclient import access
@@ -423,7 +422,7 @@
         self.requests_mock.register_uri(
             'POST',
             self.REQUEST_ECP_URL,
-            content=six.b(k2k_fixtures.ECP_ENVELOPE),
+            content=k2k_fixtures.ECP_ENVELOPE.encode(),
             headers={'Content-Type': 'application/vnd.paos+xml'},
             status_code=200)
 
@@ -433,7 +432,7 @@
         self.requests_mock.register_uri(
             'POST',
             self.SP_URL,
-            content=six.b(k2k_fixtures.TOKEN_BASED_ECP),
+            content=k2k_fixtures.TOKEN_BASED_ECP.encode(),
             headers={'Content-Type': 'application/vnd.paos+xml'},
             status_code=302)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_oauth1.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_oauth1.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/test_oauth1.py 
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/test_oauth1.py 
2024-03-01 14:53:11.000000000 +0100
@@ -14,10 +14,9 @@
 from unittest import mock
 
 import fixtures
+from urllib import parse as urlparse
 import uuid
 
-import six
-from six.moves.urllib import parse as urlparse
 from testtools import matchers
 
 from keystoneclient import session
@@ -106,7 +105,7 @@
 
         self.assertEqual('HMAC-SHA1', parameters['oauth_signature_method'])
         self.assertEqual('1.0', parameters['oauth_version'])
-        self.assertIsInstance(parameters['oauth_nonce'], six.string_types)
+        self.assertIsInstance(parameters['oauth_nonce'], str)
         self.assertEqual(oauth_client.client_key,
                          parameters['oauth_consumer_key'])
         if oauth_client.resource_owner_key:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/tests/unit/v3/utils.py       
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/tests/unit/v3/utils.py       
2024-03-01 14:53:11.000000000 +0100
@@ -13,7 +13,7 @@
 import requests
 import uuid
 
-from six.moves.urllib import parse as urlparse
+from urllib import parse as urlparse
 
 from keystoneauth1.identity import v3
 from keystoneauth1 import session
@@ -280,7 +280,7 @@
         return expected_path
 
     def test_list_by_id(self, ref=None, **filter_kwargs):
-        """Test ``entities.list(id=x)`` being rewritten as ``GET 
/v3/entities/x``.
+        """Test ``entities.list(id=x)`` being rewritten as ``GET 
/v3/entities/x``.  # noqa
 
         This tests an edge case of each manager's list() implementation, to
         ensure that it "does the right thing" when users call ``.list()``
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/keystoneclient/utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/utils.py     2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/utils.py     2024-03-01 
14:53:11.000000000 +0100
@@ -16,7 +16,6 @@
 
 from keystoneauth1 import exceptions as ksa_exceptions
 from oslo_utils import timeutils
-import six
 
 from keystoneclient import exceptions as ksc_exceptions
 
@@ -27,12 +26,12 @@
     try:
         return manager.get(name_or_id)
     except (ksa_exceptions.NotFound):  # nosec(cjschaef): try to find
-        # 'name_or_id' as a six.binary_type instead
+        # 'name_or_id' as a bytes instead
         pass
 
     # finally try to find entity by name
     try:
-        if isinstance(name_or_id, six.binary_type):
+        if isinstance(name_or_id, bytes):
             name_or_id = name_or_id.decode('utf-8', 'strict')
         return manager.find(name=name_or_id)
     except ksa_exceptions.NotFound:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v2_0/tenants.py 
new/python-keystoneclient-5.4.0/keystoneclient/v2_0/tenants.py
--- old/python-keystoneclient-5.2.0/keystoneclient/v2_0/tenants.py      
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/v2_0/tenants.py      
2024-03-01 14:53:11.000000000 +0100
@@ -15,7 +15,7 @@
 #    under the License.
 
 from keystoneauth1 import plugin
-from six.moves import urllib
+import urllib.parse
 
 from keystoneclient import base
 from keystoneclient import exceptions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v2_0/users.py 
new/python-keystoneclient-5.4.0/keystoneclient/v2_0/users.py
--- old/python-keystoneclient-5.2.0/keystoneclient/v2_0/users.py        
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/v2_0/users.py        
2024-03-01 14:53:11.000000000 +0100
@@ -14,9 +14,8 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-from six.moves import urllib
-
 from keystoneclient import base
+import urllib.parse
 
 
 class User(base.Resource):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v3/application_credentials.py 
new/python-keystoneclient-5.4.0/keystoneclient/v3/application_credentials.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/v3/application_credentials.py    
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/v3/application_credentials.py    
    2024-03-01 14:53:11.000000000 +0100
@@ -12,8 +12,6 @@
 # License for the specific language governing permissions and limitations
 # under the License.
 
-import six
-
 from keystoneclient import base
 from keystoneclient import exceptions
 from keystoneclient.i18n import _
@@ -78,7 +76,7 @@
             if not isinstance(roles, list):
                 roles = [roles]
             for role in roles:
-                if isinstance(role, six.string_types):
+                if isinstance(role, str):
                     role_list.extend([{'id': role}])
                 elif isinstance(role, dict):
                     role_list.extend([role])
@@ -139,7 +137,7 @@
         return super(ApplicationCredentialManager, self).list(**kwargs)
 
     def find(self, user=None, **kwargs):
-        """Find an application credential with attributes matching 
``**kwargs``.
+        """Find an application credential with attributes matching 
``**kwargs``.  # noqa
 
         :param string user: User ID
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/federation/base.py 
new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/federation/base.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/federation/base.py    
    2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/federation/base.py    
    2024-03-01 14:53:11.000000000 +0100
@@ -14,18 +14,17 @@
 
 from keystoneauth1 import exceptions
 from keystoneauth1 import plugin
-import six
 
 from keystoneclient import base
 
 
[email protected]_metaclass(abc.ABCMeta)
-class EntityManager(base.Manager):
+class EntityManager(base.Manager, metaclass=abc.ABCMeta):
     """Manager class for listing federated accessible objects."""
 
     resource_class = None
 
-    @abc.abstractproperty
+    @property
+    @abc.abstractmethod
     def object_type(self):
         raise exceptions.MethodNotImplemented
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/oauth1/request_tokens.py
 
new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/oauth1/request_tokens.py
--- 
old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/oauth1/request_tokens.py
  2023-09-14 17:26:11.000000000 +0200
+++ 
new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/oauth1/request_tokens.py
  2024-03-01 14:53:11.000000000 +0100
@@ -11,8 +11,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import urllib.parse as urlparse
+
 from keystoneauth1 import plugin
-from six.moves.urllib import parse as urlparse
 
 from keystoneclient import base
 from keystoneclient.v3.contrib.oauth1 import utils
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/oauth1/utils.py 
new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/oauth1/utils.py
--- old/python-keystoneclient-5.2.0/keystoneclient/v3/contrib/oauth1/utils.py   
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/v3/contrib/oauth1/utils.py   
2024-03-01 14:53:11.000000000 +0100
@@ -11,8 +11,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import six
-from six.moves.urllib import parse as urlparse
+import urllib.parse as urlparse
 
 
 OAUTH_PATH = '/OS-OAUTH1'
@@ -25,8 +24,7 @@
     'oauth_token=12345&oauth_token_secret=67890' with
     'oauth_expires_at=2013-03-30T05:27:19.463201' possibly there, too.
     """
-    if six.PY3:
-        body = body.decode('utf-8')
+    body = body.decode('utf-8')
 
     credentials = urlparse.parse_qs(body)
     key = credentials['oauth_token'][0]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/keystoneclient/v3/projects.py 
new/python-keystoneclient-5.4.0/keystoneclient/v3/projects.py
--- old/python-keystoneclient-5.2.0/keystoneclient/v3/projects.py       
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/keystoneclient/v3/projects.py       
2024-03-01 14:53:11.000000000 +0100
@@ -14,7 +14,7 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
-import six.moves.urllib as urllib
+import urllib.parse
 
 from keystoneclient import base
 from keystoneclient import exceptions
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/PKG-INFO 
new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/PKG-INFO
--- old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/PKG-INFO     
2023-09-14 17:26:52.000000000 +0200
+++ new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/PKG-INFO     
2024-03-01 14:53:38.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 1.2
 Name: python-keystoneclient
-Version: 5.2.0
+Version: 5.4.0
 Summary: Client Library for OpenStack Identity
 Home-page: https://docs.openstack.org/python-keystoneclient/latest/
 Author: OpenStack
@@ -80,4 +80,6 @@
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.8
 Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
 Requires-Python: >=3.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/SOURCES.txt 
new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/SOURCES.txt
--- old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/SOURCES.txt  
2023-09-14 17:26:53.000000000 +0200
+++ new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/SOURCES.txt  
2024-03-01 14:53:38.000000000 +0100
@@ -307,6 +307,8 @@
 releasenotes/notes/removed-generic-client-ff505b2b01bc9302.yaml
 releasenotes/notes/return-request-id-to-caller-97fa269ad626f8c1.yaml
 releasenotes/notes/switch-default-interface-v3-dcd7167196ace531.yaml
+releasenotes/source/2023.1.rst
+releasenotes/source/2023.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/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/pbr.json 
new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/pbr.json
--- old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/pbr.json     
2023-09-14 17:26:52.000000000 +0200
+++ new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/pbr.json     
2024-03-01 14:53:38.000000000 +0100
@@ -1 +1 @@
-{"git_version": "141787a", "is_release": true}
\ No newline at end of file
+{"git_version": "c66d778", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/requires.txt 
new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/requires.txt
--- old/python-keystoneclient-5.2.0/python_keystoneclient.egg-info/requires.txt 
2023-09-14 17:26:52.000000000 +0200
+++ new/python-keystoneclient-5.4.0/python_keystoneclient.egg-info/requires.txt 
2024-03-01 14:53:38.000000000 +0100
@@ -7,8 +7,4 @@
 packaging>=20.4
 pbr!=2.1.0,>=2.0.0
 requests>=2.14.2
-six>=1.10.0
 stevedore>=1.20.0
-
-[:(python_version<'3.8')]
-importlib_metadata>=1.7.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/releasenotes/source/2023.1.rst 
new/python-keystoneclient-5.4.0/releasenotes/source/2023.1.rst
--- old/python-keystoneclient-5.2.0/releasenotes/source/2023.1.rst      
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-5.4.0/releasenotes/source/2023.1.rst      
2024-03-01 14:53:11.000000000 +0100
@@ -0,0 +1,6 @@
+===========================
+2023.1 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2023.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/releasenotes/source/2023.2.rst 
new/python-keystoneclient-5.4.0/releasenotes/source/2023.2.rst
--- old/python-keystoneclient-5.2.0/releasenotes/source/2023.2.rst      
1970-01-01 01:00:00.000000000 +0100
+++ new/python-keystoneclient-5.4.0/releasenotes/source/2023.2.rst      
2024-03-01 14:53:11.000000000 +0100
@@ -0,0 +1,6 @@
+===========================
+2023.2 Series Release Notes
+===========================
+
+.. release-notes::
+   :branch: stable/2023.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/releasenotes/source/index.rst 
new/python-keystoneclient-5.4.0/releasenotes/source/index.rst
--- old/python-keystoneclient-5.2.0/releasenotes/source/index.rst       
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/releasenotes/source/index.rst       
2024-03-01 14:53:11.000000000 +0100
@@ -6,6 +6,8 @@
    :maxdepth: 1
 
    unreleased
+   2023.2
+   2023.1
    zed
    yoga
    xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/python-keystoneclient-5.2.0/releasenotes/source/yoga.rst 
new/python-keystoneclient-5.4.0/releasenotes/source/yoga.rst
--- old/python-keystoneclient-5.2.0/releasenotes/source/yoga.rst        
2023-09-14 17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/releasenotes/source/yoga.rst        
2024-03-01 14:53:11.000000000 +0100
@@ -3,4 +3,4 @@
 =========================
 
 .. release-notes::
-   :branch: stable/yoga
+   :branch: unmaintained/yoga
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/requirements.txt 
new/python-keystoneclient-5.4.0/requirements.txt
--- old/python-keystoneclient-5.2.0/requirements.txt    2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/requirements.txt    2024-03-01 
14:53:11.000000000 +0100
@@ -1,11 +1,6 @@
 # Requirements lower bounds listed here are our best effort to keep them up to
 # date but we do not test them so no guarantee of having them all correct. If
 # you find any incorrect lower bounds, let us know or propose a fix.
-
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
 pbr!=2.1.0,>=2.0.0 # Apache-2.0
 
 debtcollector>=1.2.0 # Apache-2.0
@@ -15,7 +10,5 @@
 oslo.serialization!=2.19.1,>=2.18.0 # Apache-2.0
 oslo.utils>=3.33.0 # Apache-2.0
 requests>=2.14.2 # Apache-2.0
-six>=1.10.0 # MIT
 stevedore>=1.20.0 # Apache-2.0
-importlib_metadata>=1.7.0;python_version<'3.8' # Apache-2.0
 packaging>=20.4 # BSD
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/setup.cfg 
new/python-keystoneclient-5.4.0/setup.cfg
--- old/python-keystoneclient-5.2.0/setup.cfg   2023-09-14 17:26:53.087831700 
+0200
+++ new/python-keystoneclient-5.4.0/setup.cfg   2024-03-01 14:53:39.034612400 
+0100
@@ -17,6 +17,8 @@
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.8
        Programming Language :: Python :: 3.9
+       Programming Language :: Python :: 3.10
+       Programming Language :: Python :: 3.11
 
 [files]
 packages = 
@@ -36,12 +38,6 @@
        v3scopedsaml = keystoneclient.contrib.auth.v3.saml2:Saml2ScopedToken
        v3unscopedadfs = keystoneclient.contrib.auth.v3.saml2:ADFSUnscopedToken
 
-[pbr]
-autodoc_tree_index_modules = True
-autodoc_tree_excludes = 
-       setup.py
-       keystoneclient/tests/
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/python-keystoneclient-5.2.0/test-requirements.txt 
new/python-keystoneclient-5.4.0/test-requirements.txt
--- old/python-keystoneclient-5.2.0/test-requirements.txt       2023-09-14 
17:26:11.000000000 +0200
+++ new/python-keystoneclient-5.4.0/test-requirements.txt       2024-03-01 
14:53:11.000000000 +0100
@@ -1,8 +1,4 @@
-# The order of packages is significant, because pip processes them in the order
-# of appearance. Changing the order has an impact on the overall integration
-# process, which may cause wedges in the gate later.
-
-hacking>=3.0.1,<3.1.0 # Apache-2.0
+hacking>=6.1.0,<6.2.0 # Apache-2.0
 flake8-docstrings==1.7.0 # MIT
 
 coverage!=4.4,>=4.0 # Apache-2.0

Reply via email to