Remove six library
The tooz project doesn't support Python 2 anymore, using the six library should not be necessary. Change-Id: I9886cabcd13cbc615065ceb372efbf037dff1aeb
This commit is contained in:
parent
80f379bfa2
commit
5ac72fcb3d
@ -1,14 +1,12 @@
|
||||
import uuid
|
||||
|
||||
import six
|
||||
|
||||
from tooz import coordination
|
||||
|
||||
coordinator = coordination.get_coordinator('zake://', b'host-1')
|
||||
coordinator.start()
|
||||
|
||||
# Create a group
|
||||
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
|
||||
group = bytes(str(uuid.uuid4()).encode('ascii'))
|
||||
request = coordinator.create_group(group)
|
||||
request.get()
|
||||
|
||||
|
@ -1,14 +1,12 @@
|
||||
import uuid
|
||||
|
||||
import six
|
||||
|
||||
from tooz import coordination
|
||||
|
||||
coordinator = coordination.get_coordinator('zake://', b'host-1')
|
||||
coordinator.start()
|
||||
|
||||
# Create a group
|
||||
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
|
||||
group = bytes(str(uuid.uuid4()).encode('ascii'))
|
||||
request = coordinator.create_group(group)
|
||||
request.get()
|
||||
|
||||
|
@ -1,8 +1,6 @@
|
||||
import time
|
||||
import uuid
|
||||
|
||||
import six
|
||||
|
||||
from tooz import coordination
|
||||
|
||||
ALIVE_TIME = 1
|
||||
@ -10,7 +8,7 @@ coordinator = coordination.get_coordinator('zake://', b'host-1')
|
||||
coordinator.start()
|
||||
|
||||
# Create a group
|
||||
group = six.binary_type(six.text_type(uuid.uuid4()).encode('ascii'))
|
||||
group = bytes(str(uuid.uuid4()).encode('ascii'))
|
||||
request = coordinator.create_group(group)
|
||||
request.get()
|
||||
|
||||
|
@ -3,7 +3,6 @@
|
||||
# process, which may cause wedges in the gate later.
|
||||
pbr>=1.6 # Apache-2.0
|
||||
stevedore>=1.16.0 # Apache-2.0
|
||||
six>=1.9.0 # MIT
|
||||
voluptuous>=0.8.9 # BSD License
|
||||
msgpack>=0.4.0 # Apache-2.0
|
||||
fasteners>=0.7 # Apache-2.0
|
||||
|
@ -21,11 +21,11 @@ from concurrent import futures
|
||||
import enum
|
||||
import logging
|
||||
import threading
|
||||
import urllib
|
||||
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import netutils
|
||||
from oslo_utils import timeutils
|
||||
import six
|
||||
from stevedore import driver
|
||||
import tenacity
|
||||
|
||||
@ -629,8 +629,7 @@ class CoordinationDriver(object):
|
||||
pass
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class CoordAsyncResult(object):
|
||||
class CoordAsyncResult(object, metaclass=abc.ABCMeta):
|
||||
"""Representation of an asynchronous task.
|
||||
|
||||
Every call API returns an CoordAsyncResult object on which the result or
|
||||
@ -786,12 +785,12 @@ def get_coordinator(backend_url, member_id,
|
||||
arguments query string)
|
||||
"""
|
||||
parsed_url = netutils.urlsplit(backend_url)
|
||||
parsed_qs = six.moves.urllib.parse.parse_qs(parsed_url.query)
|
||||
parsed_qs = urllib.parse.parse_qs(parsed_url.query)
|
||||
if kwargs:
|
||||
options = {}
|
||||
for (k, v) in six.iteritems(kwargs):
|
||||
for (k, v) in kwargs.items():
|
||||
options[k] = [v]
|
||||
for (k, v) in six.iteritems(parsed_qs):
|
||||
for (k, v) in parsed_qs.items():
|
||||
if k not in options:
|
||||
options[k] = v
|
||||
else:
|
||||
|
@ -12,6 +12,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import functools
|
||||
import logging
|
||||
import threading
|
||||
|
||||
@ -19,7 +20,6 @@ import fasteners
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import timeutils
|
||||
import requests
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import coordination
|
||||
@ -33,7 +33,7 @@ LOG = logging.getLogger(__name__)
|
||||
def _translate_failures(func):
|
||||
"""Translates common requests exceptions into tooz exceptions."""
|
||||
|
||||
@six.wraps(func)
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
|
@ -18,7 +18,6 @@ import threading
|
||||
import etcd3
|
||||
from etcd3 import exceptions as etcd3_exc
|
||||
from oslo_utils import encodeutils
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import _retry
|
||||
@ -48,7 +47,7 @@ def _failure_translator():
|
||||
|
||||
def _translate_failures(func):
|
||||
|
||||
@six.wraps(func)
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
with _failure_translator():
|
||||
return func(*args, **kwargs)
|
||||
|
@ -11,14 +11,15 @@
|
||||
# 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 base64
|
||||
import functools
|
||||
import threading
|
||||
import uuid
|
||||
|
||||
import etcd3gw
|
||||
from etcd3gw import exceptions as etcd3_exc
|
||||
from oslo_utils import encodeutils
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import _retry
|
||||
@ -35,7 +36,7 @@ def _encode(data):
|
||||
def _translate_failures(func):
|
||||
"""Translates common requests exceptions into tooz exceptions."""
|
||||
|
||||
@six.wraps(func)
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
|
@ -32,7 +32,6 @@ import fasteners
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import fileutils
|
||||
from oslo_utils import timeutils
|
||||
import six
|
||||
import voluptuous
|
||||
|
||||
import tooz
|
||||
@ -74,7 +73,7 @@ def _convert_from_old_format(data):
|
||||
# example of potential old python3 payload:
|
||||
# {u"member_id": b"member"}
|
||||
# {u"member_id": u"member"}
|
||||
if six.PY3 and b"member_id" in data or b"group_id" in data:
|
||||
if b"member_id" in data or b"group_id" in data:
|
||||
data = dict((k.decode("utf8"), v) for k, v in data.items())
|
||||
# About member_id and group_id valuse if the file have been written
|
||||
# with python2 and in the old format, we can't known with python3
|
||||
@ -91,7 +90,7 @@ def _lock_me(lock):
|
||||
|
||||
def wrapper(func):
|
||||
|
||||
@six.wraps(func)
|
||||
@functools.wraps(func)
|
||||
def decorator(*args, **kwargs):
|
||||
with lock:
|
||||
return func(*args, **kwargs)
|
||||
@ -361,14 +360,12 @@ class FileDriver(coordination.CoordinationDriverCachedRunWatchers,
|
||||
|
||||
_SCHEMAS = {
|
||||
'group': voluptuous.Schema({
|
||||
voluptuous.Required('group_id'): voluptuous.Any(six.text_type,
|
||||
six.binary_type),
|
||||
voluptuous.Required('group_id'): voluptuous.Any(str, bytes),
|
||||
# NOTE(sileht): tooz <1.36 was creating file without this
|
||||
voluptuous.Optional('encoded'): bool,
|
||||
}),
|
||||
'member': voluptuous.Schema({
|
||||
voluptuous.Required('member_id'): voluptuous.Any(six.text_type,
|
||||
six.binary_type),
|
||||
voluptuous.Required('member_id'): voluptuous.Any(str, bytes),
|
||||
voluptuous.Required('joined_on'): datetime.datetime,
|
||||
# NOTE(sileht): tooz <1.36 was creating file without this
|
||||
voluptuous.Optional('encoded'): bool,
|
||||
|
@ -19,7 +19,6 @@ import struct
|
||||
import time
|
||||
|
||||
import msgpack
|
||||
import six
|
||||
import sysv_ipc
|
||||
|
||||
import tooz
|
||||
@ -37,10 +36,10 @@ def ftok(name, project):
|
||||
# Similar to ftok & http://semanchuk.com/philip/sysv_ipc/#ftok_weakness
|
||||
# but hopefully without as many weaknesses...
|
||||
h = hashlib.md5()
|
||||
if not isinstance(project, six.binary_type):
|
||||
if not isinstance(project, bytes):
|
||||
project = project.encode('ascii')
|
||||
h.update(project)
|
||||
if not isinstance(name, six.binary_type):
|
||||
if not isinstance(name, bytes):
|
||||
name = name.encode('ascii')
|
||||
h.update(name)
|
||||
return (int(h.hexdigest(), 16) % _KEY_RANGE) + sysv_ipc.KEY_MIN
|
||||
|
@ -22,7 +22,6 @@ import socket
|
||||
|
||||
from oslo_utils import encodeutils
|
||||
from pymemcache import client as pymemcache_client
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import _retry
|
||||
@ -65,7 +64,7 @@ def _failure_translator():
|
||||
|
||||
def _translate_failures(func):
|
||||
|
||||
@six.wraps(func)
|
||||
@functools.wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
with _failure_translator():
|
||||
return func(*args, **kwargs)
|
||||
@ -266,7 +265,7 @@ class MemcachedDriver(coordination.CoordinationDriverCachedRunWatchers,
|
||||
|
||||
@staticmethod
|
||||
def _msgpack_serializer(key, value):
|
||||
if isinstance(value, six.binary_type):
|
||||
if isinstance(value, bytes):
|
||||
return value, 1
|
||||
return utils.dumps(value), 2
|
||||
|
||||
@ -435,7 +434,7 @@ class MemcachedDriver(coordination.CoordinationDriverCachedRunWatchers,
|
||||
if group_members is None:
|
||||
raise coordination.GroupNotCreated(group_id)
|
||||
actual_group_members = {}
|
||||
for m, v in six.iteritems(group_members):
|
||||
for m, v in group_members.items():
|
||||
# Never kick self from the group, we know we're alive
|
||||
if (m == self._member_id or
|
||||
self.client.get(self._encode_member_id(m))):
|
||||
@ -512,7 +511,7 @@ class MemcachedDriver(coordination.CoordinationDriverCachedRunWatchers,
|
||||
|
||||
@_translate_failures
|
||||
def run_elect_coordinator(self):
|
||||
for group_id, hooks in six.iteritems(self._hooks_elected_leader):
|
||||
for group_id, hooks in self._hooks_elected_leader.items():
|
||||
# Try to grab the lock, if that fails, that means someone has it
|
||||
# already.
|
||||
leader_lock = self._get_leader_lock(group_id)
|
||||
|
@ -20,7 +20,6 @@ import logging
|
||||
|
||||
from oslo_utils import encodeutils
|
||||
import psycopg2
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import _retry
|
||||
@ -101,10 +100,7 @@ class PostgresLock(locking.Lock):
|
||||
self._options = options
|
||||
h = hashlib.md5()
|
||||
h.update(name)
|
||||
if six.PY2:
|
||||
self.key = list(map(ord, h.digest()[0:2]))
|
||||
else:
|
||||
self.key = h.digest()[0:2]
|
||||
self.key = h.digest()[0:2]
|
||||
|
||||
def acquire(self, blocking=True, shared=False):
|
||||
|
||||
|
@ -26,9 +26,6 @@ from oslo_utils import strutils
|
||||
import redis
|
||||
from redis import exceptions
|
||||
from redis import sentinel
|
||||
import six
|
||||
from six.moves import map as compat_map
|
||||
from six.moves import zip as compat_zip
|
||||
|
||||
import tooz
|
||||
from tooz import coordination
|
||||
@ -55,7 +52,7 @@ def _translate_failures():
|
||||
|
||||
class RedisLock(locking.Lock):
|
||||
def __init__(self, coord, client, name, timeout):
|
||||
name = "%s_%s_lock" % (coord.namespace, six.text_type(name))
|
||||
name = "%s_%s_lock" % (coord.namespace, str(name))
|
||||
super(RedisLock, self).__init__(name)
|
||||
# NOTE(jd) Make sure we don't release and heartbeat at the same time by
|
||||
# using a exclusive access lock (LP#1557593)
|
||||
@ -356,7 +353,7 @@ return 1
|
||||
self._scripts = {}
|
||||
|
||||
def _check_fetch_redis_version(self, geq_version, not_existent=True):
|
||||
if isinstance(geq_version, six.string_types):
|
||||
if isinstance(geq_version, str):
|
||||
desired_version = version.LooseVersion(geq_version)
|
||||
elif isinstance(geq_version, version.LooseVersion):
|
||||
desired_version = geq_version
|
||||
@ -470,12 +467,12 @@ return 1
|
||||
# For py3.x ensure these are unicode since the string template
|
||||
# replacement will expect unicode (and we don't want b'' as a
|
||||
# prefix which will happen in py3.x if this is not done).
|
||||
for (k, v) in six.iteritems(tpl_params.copy()):
|
||||
if isinstance(v, six.binary_type):
|
||||
for (k, v) in tpl_params.copy().items():
|
||||
if isinstance(v, bytes):
|
||||
v = v.decode('ascii')
|
||||
tpl_params[k] = v
|
||||
prepared_scripts = {}
|
||||
for name, raw_script_tpl in six.iteritems(self.SCRIPTS):
|
||||
for name, raw_script_tpl in self.SCRIPTS.items():
|
||||
script_tpl = string.Template(raw_script_tpl)
|
||||
script = script_tpl.substitute(**tpl_params)
|
||||
prepared_scripts[name] = self._client.register_script(script)
|
||||
@ -630,10 +627,10 @@ return 1
|
||||
return set()
|
||||
# Ok now we need to see which members have passed away...
|
||||
gone_members = set()
|
||||
member_values = p.mget(compat_map(self._encode_beat_id,
|
||||
potential_members))
|
||||
for (potential_member, value) in compat_zip(potential_members,
|
||||
member_values):
|
||||
member_values = p.mget(map(self._encode_beat_id,
|
||||
potential_members))
|
||||
for (potential_member, value) in zip(potential_members,
|
||||
member_values):
|
||||
# Always preserve self (just incase we haven't heartbeated
|
||||
# while this call/s was being made...), this does *not* prevent
|
||||
# another client from removing this though...
|
||||
@ -742,7 +739,7 @@ return 1
|
||||
return self.get_lock(name)
|
||||
|
||||
def run_elect_coordinator(self):
|
||||
for group_id, hooks in six.iteritems(self._hooks_elected_leader):
|
||||
for group_id, hooks in self._hooks_elected_leader.items():
|
||||
leader_lock = self._get_leader_lock(group_id)
|
||||
if leader_lock.acquire(blocking=False):
|
||||
# We got the lock
|
||||
|
@ -25,8 +25,6 @@ from kazoo.handlers import threading as threading_handler
|
||||
from kazoo.protocol import paths
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import strutils
|
||||
import six
|
||||
from six.moves import filter as compat_filter
|
||||
|
||||
import tooz
|
||||
from tooz import coordination
|
||||
@ -444,7 +442,7 @@ class KazooDriver(coordination.CoordinationDriverCachedRunWatchers):
|
||||
args.extend(more_args)
|
||||
cleaned_args = []
|
||||
for arg in args:
|
||||
if isinstance(arg, six.binary_type):
|
||||
if isinstance(arg, bytes):
|
||||
cleaned_args.append(arg.decode('ascii'))
|
||||
else:
|
||||
cleaned_args.append(arg)
|
||||
@ -467,7 +465,7 @@ class KazooDriver(coordination.CoordinationDriverCachedRunWatchers):
|
||||
auth_data = None
|
||||
|
||||
maybe_hosts = [parsed_url.netloc] + list(options.get('hosts', []))
|
||||
hosts = list(compat_filter(None, maybe_hosts))
|
||||
hosts = list(filter(None, maybe_hosts))
|
||||
if not hosts:
|
||||
hosts = ['localhost:2181']
|
||||
randomize_hosts = options.get('randomize_hosts', True)
|
||||
@ -520,7 +518,7 @@ class KazooDriver(coordination.CoordinationDriverCachedRunWatchers):
|
||||
return ZooKeeperLock(name, z_lock)
|
||||
|
||||
def run_elect_coordinator(self):
|
||||
for group_id in six.iterkeys(self._hooks_elected_leader):
|
||||
for group_id in self._hooks_elected_leader.keys():
|
||||
leader_lock = self._get_group_leader_lock(group_id)
|
||||
if leader_lock.is_acquired:
|
||||
# Previously acquired/still leader, leave it be...
|
||||
|
@ -16,8 +16,6 @@
|
||||
import bisect
|
||||
import hashlib
|
||||
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import utils
|
||||
|
||||
@ -71,7 +69,7 @@ class HashRing(object):
|
||||
for node in nodes:
|
||||
key = utils.to_binary(node, 'utf-8')
|
||||
key_hash = hashlib.md5(key)
|
||||
for r in six.moves.range(self._partition_number * weight):
|
||||
for r in range(self._partition_number * weight):
|
||||
key_hash.update(key)
|
||||
self._ring[self._hash2int(key_hash)] = node
|
||||
|
||||
@ -93,7 +91,7 @@ class HashRing(object):
|
||||
|
||||
key = utils.to_binary(node, 'utf-8')
|
||||
key_hash = hashlib.md5(key)
|
||||
for r in six.moves.range(self._partition_number * weight):
|
||||
for r in range(self._partition_number * weight):
|
||||
key_hash.update(key)
|
||||
del self._ring[self._hash2int(key_hash)]
|
||||
|
||||
|
@ -15,8 +15,6 @@
|
||||
# under the License.
|
||||
import abc
|
||||
|
||||
import six
|
||||
|
||||
import tooz
|
||||
from tooz import coordination
|
||||
|
||||
@ -34,8 +32,7 @@ class _LockProxy(object):
|
||||
self.lock.__exit__(exc_type, exc_val, exc_tb)
|
||||
|
||||
|
||||
@six.add_metaclass(abc.ABCMeta)
|
||||
class Lock(object):
|
||||
class Lock(object, metaclass=abc.ABCMeta):
|
||||
def __init__(self, name):
|
||||
if not name:
|
||||
raise ValueError("Locks must be provided a name")
|
||||
|
@ -13,7 +13,7 @@
|
||||
# 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 six
|
||||
|
||||
from tooz import hashring
|
||||
|
||||
|
||||
@ -54,7 +54,7 @@ class Partitioner(object):
|
||||
def _hash_object(obj):
|
||||
if hasattr(obj, "__tooz_hash__"):
|
||||
return obj.__tooz_hash__()
|
||||
return six.text_type(obj).encode('utf8')
|
||||
return str(obj).encode('utf8')
|
||||
|
||||
def members_for_object(self, obj, ignore_members=None, replicas=1):
|
||||
"""Return the members responsible for an object.
|
||||
|
@ -19,7 +19,6 @@ import os
|
||||
|
||||
import fixtures
|
||||
from oslo_utils import uuidutils
|
||||
import six
|
||||
from testtools import testcase
|
||||
|
||||
import tooz
|
||||
@ -49,8 +48,7 @@ class SkipNotImplementedMeta(type):
|
||||
return type.__new__(cls, name, bases, local)
|
||||
|
||||
|
||||
@six.add_metaclass(SkipNotImplementedMeta)
|
||||
class TestWithCoordinator(testcase.TestCase):
|
||||
class TestWithCoordinator(testcase.TestCase, metaclass=SkipNotImplementedMeta):
|
||||
url = os.getenv("TOOZ_TEST_URL")
|
||||
|
||||
def setUp(self):
|
||||
|
@ -17,9 +17,9 @@
|
||||
import threading
|
||||
import time
|
||||
from unittest import mock
|
||||
import urllib
|
||||
|
||||
from concurrent import futures
|
||||
from six.moves.urllib import parse
|
||||
from testtools import matchers
|
||||
from testtools import testcase
|
||||
|
||||
@ -49,7 +49,7 @@ class TestAPI(tests.TestWithCoordinator):
|
||||
if (tooz.coordination.Characteristics.DISTRIBUTED_ACROSS_HOSTS
|
||||
not in self._coord.CHARACTERISTICS):
|
||||
self.skipTest("This driver is not distributed across hosts")
|
||||
scheme = parse.urlparse(self.url).scheme
|
||||
scheme = urllib.parse.urlparse(self.url).scheme
|
||||
coord = tooz.coordination.get_coordinator(
|
||||
"%s://localhost:1/f00" % scheme,
|
||||
self.member_id)
|
||||
|
@ -13,7 +13,6 @@
|
||||
# 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 six
|
||||
|
||||
from tooz import coordination
|
||||
from tooz import tests
|
||||
@ -32,7 +31,7 @@ class TestPartitioner(tests.TestWithCoordinator):
|
||||
|
||||
def _add_members(self, number_of_members, weight=1):
|
||||
groups = []
|
||||
for _ in six.moves.range(number_of_members):
|
||||
for _ in range(number_of_members):
|
||||
m = tests.get_random_uuid()
|
||||
coord = coordination.get_coordinator(self.url, m)
|
||||
coord.start()
|
||||
@ -43,7 +42,7 @@ class TestPartitioner(tests.TestWithCoordinator):
|
||||
return groups
|
||||
|
||||
def _remove_members(self, number_of_members):
|
||||
for _ in six.moves.range(number_of_members):
|
||||
for _ in range(number_of_members):
|
||||
c = self._extra_coords.pop()
|
||||
c.stop()
|
||||
self._coord.run_watchers()
|
||||
@ -80,7 +79,7 @@ class TestPartitioner(tests.TestWithCoordinator):
|
||||
def test_members_of_object_and_others(self):
|
||||
p = self._coord.join_partitioned_group(self.group_id)
|
||||
self._add_members(3)
|
||||
o = six.text_type(u"чупакабра")
|
||||
o = str(u"чупакабра")
|
||||
m = p.members_for_object(o)
|
||||
self.assertEqual(1, len(m))
|
||||
m = m.pop()
|
||||
|
@ -19,7 +19,6 @@ import os
|
||||
import tempfile
|
||||
|
||||
import futurist
|
||||
import six
|
||||
from testtools import testcase
|
||||
|
||||
import tooz
|
||||
@ -113,7 +112,7 @@ class TestUtilsCollapse(testcase.TestCase):
|
||||
'b': [2],
|
||||
'c': (1, 2, 3),
|
||||
}
|
||||
c_ex = utils.collapse(ex, exclude=set(six.iterkeys(ex)))
|
||||
c_ex = utils.collapse(ex, exclude=set(ex.keys()))
|
||||
self.assertEqual(ex, c_ex)
|
||||
|
||||
def test_custom_selector(self):
|
||||
|
@ -24,7 +24,6 @@ import msgpack
|
||||
from oslo_serialization import msgpackutils
|
||||
from oslo_utils import encodeutils
|
||||
from oslo_utils import excutils
|
||||
import six
|
||||
|
||||
import tooz
|
||||
|
||||
@ -36,7 +35,7 @@ class Base64LockEncoder(object):
|
||||
self.keyspace_url += prefix
|
||||
|
||||
def check_and_encode(self, name):
|
||||
if not isinstance(name, (six.text_type, six.binary_type)):
|
||||
if not isinstance(name, (str, bytes)):
|
||||
raise TypeError("Provided lock name is expected to be a string"
|
||||
" or binary type and not %s" % type(name))
|
||||
try:
|
||||
@ -47,7 +46,7 @@ class Base64LockEncoder(object):
|
||||
% encodeutils.exception_to_unicode(e))
|
||||
|
||||
def encode(self, name):
|
||||
if isinstance(name, six.text_type):
|
||||
if isinstance(name, str):
|
||||
name = name.encode("ascii")
|
||||
enc_name = base64.urlsafe_b64encode(name)
|
||||
return self.keyspace_url + "/" + enc_name.decode("ascii")
|
||||
@ -154,7 +153,7 @@ def collapse(config, exclude=None, item_selector=operator.itemgetter(-1)):
|
||||
if exclude is None:
|
||||
exclude = set()
|
||||
collapsed = {}
|
||||
for (k, v) in six.iteritems(config):
|
||||
for (k, v) in config.items():
|
||||
if isinstance(v, (tuple, list)):
|
||||
if k in exclude:
|
||||
collapsed[k] = v
|
||||
@ -168,7 +167,7 @@ def collapse(config, exclude=None, item_selector=operator.itemgetter(-1)):
|
||||
|
||||
def to_binary(text, encoding='ascii'):
|
||||
"""Return the binary representation of string (if not already binary)."""
|
||||
if not isinstance(text, six.binary_type):
|
||||
if not isinstance(text, bytes):
|
||||
text = text.encode(encoding)
|
||||
return text
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user