Remove six

Python 2 is no longer supported, so we no longer need the six library.
This change removes usage of the library as well as reference to it
(and Python 2) from the documentation.

Change-Id: I6328b11dcad54f70f64ecff53eb60708e34351cf
This commit is contained in:
Takashi Kajinami 2022-05-17 17:22:01 +09:00
parent c6ce0af028
commit 69125bfd07
9 changed files with 31 additions and 45 deletions

View File

@ -12,7 +12,7 @@
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import six
import io
from barbicanclient import barbican as barb
from barbicanclient.barbican import Barbican
@ -26,8 +26,8 @@ class WhenTestingBarbicanCLI(test_client.BaseEntityResource):
def setUp(self):
self._setUp('barbican')
self.captured_stdout = six.StringIO()
self.captured_stderr = six.StringIO()
self.captured_stdout = io.StringIO()
self.captured_stderr = io.StringIO()
self.barbican = Barbican(
stdout=self.captured_stdout,
stderr=self.captured_stderr

View File

@ -17,7 +17,6 @@ from unittest import mock
from oslo_serialization import jsonutils
from oslo_utils import timeutils
import six
from barbicanclient import base
from barbicanclient.tests import test_client
@ -524,7 +523,7 @@ class WhenTestingContainers(test_client.BaseEntityResource):
# Verify that the names of the secret_refs in the containers are None
for container in containers_list:
for name in six.iterkeys(container._secret_refs):
for name in container._secret_refs.keys():
self.assertIsNone(name)
def test_should_fail_get_invalid_container(self):

View File

@ -93,7 +93,7 @@ class WhenTestingSecrets(test_client.BaseEntityResource):
self.assertEqual(self.secret.payload, secret_req['payload'])
def test_should_store_binary_type_as_octet_stream(self):
"""We use six.binary_type as the canonical binary type.
"""We use bytes as the canonical binary type.
The client should base64 encode the payload before sending the
request.
@ -101,8 +101,6 @@ class WhenTestingSecrets(test_client.BaseEntityResource):
data = {'secret_ref': self.entity_href}
self.responses.post(self.entity_base + '/', json=data)
# This literal will have type(str) in Python 2, but will have
# type(bytes) in Python 3. It is six.binary_type in both cases.
binary_payload = b'F\x130\x89f\x8e\xd9\xa1\x0e\x1f\r\xf67uu\x8b'
secret = self.manager.create()
@ -119,12 +117,10 @@ class WhenTestingSecrets(test_client.BaseEntityResource):
self.assertNotEqual(binary_payload, secret_req['payload'])
def test_should_store_text_type_as_text_plain(self):
"""We use six.text_type as the canonical text type."""
"""We use unicode string as the canonical text type."""
data = {'secret_ref': self.entity_href}
self.responses.post(self.entity_base + '/', json=data)
# This literal will have type(unicode) in Python 2, but will have
# type(str) in Python 3. It is six.text_type in both cases.
text_payload = u'time for an ice cold \U0001f37a'
secret = self.manager.create()
@ -448,8 +444,6 @@ class WhenTestingSecrets(test_client.BaseEntityResource):
self.test_should_delete_from_object(self.entity_id)
def test_should_update_from_manager(self, secret_ref=None):
# This literal will have type(unicode) in Python 2, but will have
# type(str) in Python 3. It is six.text_type in both cases.
text_payload = u'time for an ice cold \U0001f37a'
secret_ref = secret_ref or self.entity_href
@ -479,8 +473,6 @@ class WhenTestingSecrets(test_client.BaseEntityResource):
# Verify the secret has the correct ref for testing updates
self.assertEqual(secref_ref, secret.secret_ref)
# This literal will have type(unicode) in Python 2, but will have
# type(str) in Python 3. It is six.text_type in both cases.
text_payload = u'time for an ice cold \U0001f37a'
self.responses.put(self.entity_href, status_code=204)

View File

@ -17,7 +17,6 @@ import functools
import logging
from oslo_utils.timeutils import parse_isotime
import six
from barbicanclient import base
from barbicanclient import formatter
@ -113,8 +112,7 @@ class CertificateOrderFormatter(formatter.EntityFormatter):
return data
@six.add_metaclass(abc.ABCMeta)
class Order(object):
class Order(object, metaclass=abc.ABCMeta):
"""Base order object to hold common functionality
This should be considered an abstract class that should not be

View File

@ -17,7 +17,6 @@ import functools
import logging
from oslo_utils.timeutils import parse_isotime
import six
from barbicanclient import base
from barbicanclient import exceptions
@ -293,7 +292,7 @@ class Secret(SecretFormatter):
}
if self.payload is not None:
if not isinstance(self.payload, (six.text_type, six.binary_type)):
if not isinstance(self.payload, (str, bytes)):
raise exceptions.PayloadException("Invalid Payload Type")
if not len(self.payload):
@ -307,7 +306,7 @@ class Secret(SecretFormatter):
for backwards compatibility and should be removed in a future
release.
'''
if type(self.payload) is six.binary_type:
if type(self.payload) is bytes:
secret_dict['payload'] = self.payload.decode('utf-8')
else:
secret_dict['payload'] = self.payload
@ -315,9 +314,9 @@ class Secret(SecretFormatter):
secret_dict['payload_content_encoding'] = (
self.payload_content_encoding
)
elif type(self.payload) is six.binary_type:
elif type(self.payload) is bytes:
'''
six.binary_type is stored as application/octet-stream
bytes is stored as application/octet-stream
and it is base64 encoded for a one-step POST
'''
secret_dict['payload'] = (
@ -325,9 +324,9 @@ class Secret(SecretFormatter):
).decode('UTF-8')
secret_dict['payload_content_type'] = u'application/octet-stream'
secret_dict['payload_content_encoding'] = u'base64'
elif type(self.payload) is six.text_type:
elif type(self.payload) is str:
'''
six.text_type is stored as text/plain
str is stored as text/plain
'''
secret_dict['payload'] = self.payload
secret_dict['payload_content_type'] = u'text/plain'
@ -350,9 +349,9 @@ class Secret(SecretFormatter):
if not self.secret_ref:
raise LookupError("Secret is not yet stored.")
if type(self.payload) is six.binary_type:
if type(self.payload) is bytes:
headers = {'content-type': "application/octet-stream"}
elif type(self.payload) is six.text_type:
elif type(self.payload) is str:
headers = {'content-type': "text/plain"}
else:
raise exceptions.PayloadException("Invalid Payload Type")
@ -479,9 +478,9 @@ class SecretManager(base.BaseEntityManager):
if not secret_ref:
raise ValueError('secret_ref is required.')
if type(payload) is six.binary_type:
if type(payload) is bytes:
headers = {'content-type': "application/octet-stream"}
elif type(payload) is six.text_type:
elif type(payload) is str:
headers = {'content-type': "text/plain"}
else:
raise exceptions.PayloadException("Invalid Payload Type")

View File

@ -78,13 +78,13 @@ correct Content Type based on the type of the data that is set on the
`Secret.payload` property. The following table summarizes the mapping of
Python types to Barbican Secret Content Types:
+-----------------+---------------+---------------+--------------------------+
| six Type | Python 2 Type | Python 3 Type | Barbican Content Type |
+=================+===============+===============+==========================+
| six.binary_type | str | bytes | application/octet-stream |
+-----------------+---------------+---------------+--------------------------+
| six.text_type | unicode | str | text/plain |
+-----------------+---------------+---------------+--------------------------+
+---------------+--------------------------+
| Python 3 Type | Barbican Content Type |
+===============+==========================+
| bytes | application/octet-stream |
+---------------+--------------------------+
| str | text/plain |
+---------------+--------------------------+
.. WARNING::
Previous versions of python-barbicanclient allowed the user to set the

View File

@ -13,9 +13,9 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import io
import logging
import re
import six
from barbicanclient import barbican
from functionaltests.common import config
@ -84,8 +84,8 @@ class BaseBehaviors(object):
"""
try:
self.cmdline_client.stdout = six.StringIO()
self.cmdline_client.stderr = six.StringIO()
self.cmdline_client.stdout = io.StringIO()
self.cmdline_client.stderr = io.StringIO()
self.cmdline_client.run(argv)
except SystemExit:
pass

View File

@ -19,8 +19,7 @@ import time
import types
import oslotest.base as oslotest
import six
import six.moves.urllib.parse as urlparse
import urllib.parse as urlparse
class BaseTestCase(oslotest.BaseTestCase):
@ -43,10 +42,10 @@ def construct_new_test_function(original_func, name, build_params):
:return: A new function object
"""
new_func = types.FunctionType(
six.get_function_code(original_func),
six.get_function_globals(original_func),
original_func.__code__,
original_func.__globals__,
name=name,
argdefs=six.get_function_defaults(original_func)
argdefs=original_func.__defaults__
)
# Support either an arg list or kwarg dict for our data

View File

@ -7,7 +7,6 @@
# process, which may cause wedges in the gate later.
pbr!=2.1.0,>=2.0.0 # Apache-2.0
requests>=2.14.2 # Apache-2.0
six>=1.10.0 # MIT
cliff!=2.9.0,>=2.8.0 # Apache-2.0
keystoneauth1>=3.4.0 # Apache-2.0
oslo.i18n>=3.15.3 # Apache-2.0