Update hacking for Python3

The repo is Python 3 now, so update hacking to version 2.0 which
supports Python 3.

Fix problems found.

Change-Id: Id80f3fed3c693cefedca2d6468ab48577ccd9999
This commit is contained in:
Andreas Jaeger 2020-03-28 16:07:23 +01:00
parent 3c40b5c093
commit f4d3638d38
8 changed files with 57 additions and 53 deletions

View File

@ -6,7 +6,7 @@ bandit>=1.1.0 # Apache-2.0
coverage!=4.4,>=4.0 # Apache-2.0 coverage!=4.4,>=4.0 # Apache-2.0
doc8>=0.6.0 # Apache-2.0 doc8>=0.6.0 # Apache-2.0
ddt>=1.0.1 # MIT ddt>=1.0.1 # MIT
hacking!=0.13.0,<0.14,>=0.12.0 # Apache-2.0 hacking>=2.0,<2.1 # Apache-2.0
oslotest>=3.2.0 # Apache-2.0 oslotest>=3.2.0 # Apache-2.0
osprofiler>=1.4.0 # Apache-2.0 osprofiler>=1.4.0 # Apache-2.0
stestr>=2.0.0 stestr>=2.0.0

View File

@ -89,7 +89,7 @@ commands =
# E123, E125 skipped as they are invalid PEP-8. # E123, E125 skipped as they are invalid PEP-8.
show-source = True show-source = True
ignore = E123,E125 ignore = E123,E125,W503,W504
builtins = _ builtins = _
exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build exclude=.venv,.git,.tox,dist,doc,*lib/python*,*egg,build

View File

@ -36,6 +36,8 @@ def _construct_yaml_str(self, node):
# Override the default string handling function # Override the default string handling function
# to always return unicode objects # to always return unicode objects
return self.construct_scalar(node) return self.construct_scalar(node)
yaml_loader.add_constructor(u'tag:yaml.org,2002:str', _construct_yaml_str) yaml_loader.add_constructor(u'tag:yaml.org,2002:str', _construct_yaml_str)
# Unquoted dates like 2013-05-23 in yaml files get loaded as objects of type # Unquoted dates like 2013-05-23 in yaml files get loaded as objects of type
# datetime.data which causes problems in API layer when being processed by # datetime.data which causes problems in API layer when being processed by

View File

@ -324,8 +324,8 @@ def parse_health(hc_str):
def _convert_healthcheck_para(time, err_msg): def _convert_healthcheck_para(time, err_msg):
int_pattern = '^\d+$' int_pattern = r'^\d+$'
time_pattern = '^\d+(s|m|h)$' time_pattern = r'^\d+(s|m|h)$'
ret = 0 ret = 0
if re.match(int_pattern, time): if re.match(int_pattern, time):
ret = int(time) ret = int(time)

View File

@ -17,24 +17,25 @@ from zunclient.common.apiclient.exceptions import * # noqa
# NOTE(akurilin): This alias is left here since v.0.1.3 to support backwards # NOTE(akurilin): This alias is left here since v.0.1.3 to support backwards
# compatibility. # compatibility.
InvalidEndpoint = EndpointException InvalidEndpoint = exceptions.EndpointException
CommunicationError = ConnectionRefused CommunicationError = exceptions.ConnectionRefused
HTTPBadRequest = BadRequest HTTPBadRequest = exceptions.BadRequest
HTTPInternalServerError = InternalServerError HTTPInternalServerError = exceptions.InternalServerError
HTTPNotFound = NotFound HTTPNotFound = exceptions.NotFound
HTTPServiceUnavailable = ServiceUnavailable HTTPServiceUnavailable = exceptions.ServiceUnavailable
CommandErrorException = CommandError CommandErrorException = exceptions.CommandError
class AmbiguousAuthSystem(ClientException): class AmbiguousAuthSystem(exceptions.ClientException):
"""Could not obtain token and endpoint using provided credentials.""" """Could not obtain token and endpoint using provided credentials."""
pass pass
# Alias for backwards compatibility # Alias for backwards compatibility
AmbigiousAuthSystem = AmbiguousAuthSystem AmbigiousAuthSystem = AmbiguousAuthSystem
class InvalidAttribute(ClientException): class InvalidAttribute(exceptions.ClientException):
pass pass

View File

@ -34,6 +34,16 @@ from oslo_utils import importutils
from oslo_utils import strutils from oslo_utils import strutils
import six import six
from zunclient import api_versions
from zunclient import client as base_client
from zunclient.common.apiclient import auth
from zunclient.common import cliutils
from zunclient import exceptions as exc
from zunclient.i18n import _
from zunclient.v1 import shell as shell_v1
from zunclient import version
profiler = importutils.try_import("osprofiler.profiler") profiler = importutils.try_import("osprofiler.profiler")
HAS_KEYRING = False HAS_KEYRING = False
@ -52,15 +62,6 @@ try:
except ImportError: except ImportError:
pass pass
from zunclient import api_versions
from zunclient import client as base_client
from zunclient.common.apiclient import auth
from zunclient.common import cliutils
from zunclient import exceptions as exc
from zunclient.i18n import _
from zunclient.v1 import shell as shell_v1
from zunclient import version
DEFAULT_API_VERSION = api_versions.DEFAULT_API_VERSION DEFAULT_API_VERSION = api_versions.DEFAULT_API_VERSION
DEFAULT_ENDPOINT_TYPE = 'publicURL' DEFAULT_ENDPOINT_TYPE = 'publicURL'
DEFAULT_SERVICE_TYPE = 'container' DEFAULT_SERVICE_TYPE = 'container'

View File

@ -89,7 +89,7 @@ class FormatArgsTest(test_utils.BaseTestCase):
self.assertEqual({}, utils.format_args(None)) self.assertEqual({}, utils.format_args(None))
def test_format_args(self): def test_format_args(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1,K2=V2,' 'K1=V1,K2=V2,'
'K3=V3,K4=V4,' 'K3=V3,K4=V4,'
'K5=V5']) 'K5=V5'])
@ -98,10 +98,10 @@ class FormatArgsTest(test_utils.BaseTestCase):
'K3': 'V3', 'K3': 'V3',
'K4': 'V4', 'K4': 'V4',
'K5': 'V5' 'K5': 'V5'
}, l) }, li)
def test_format_args_semicolon(self): def test_format_args_semicolon(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1;K2=V2;' 'K1=V1;K2=V2;'
'K3=V3;K4=V4;' 'K3=V3;K4=V4;'
'K5=V5']) 'K5=V5'])
@ -110,10 +110,10 @@ class FormatArgsTest(test_utils.BaseTestCase):
'K3': 'V3', 'K3': 'V3',
'K4': 'V4', 'K4': 'V4',
'K5': 'V5' 'K5': 'V5'
}, l) }, li)
def test_format_args_mix_commas_semicolon(self): def test_format_args_mix_commas_semicolon(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1,K2=V2,' 'K1=V1,K2=V2,'
'K3=V3;K4=V4,' 'K3=V3;K4=V4,'
'K5=V5']) 'K5=V5'])
@ -122,10 +122,10 @@ class FormatArgsTest(test_utils.BaseTestCase):
'K3': 'V3', 'K3': 'V3',
'K4': 'V4', 'K4': 'V4',
'K5': 'V5' 'K5': 'V5'
}, l) }, li)
def test_format_args_split(self): def test_format_args_split(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1,' 'K1=V1,'
'K2=V22222222222222222222222222222' 'K2=V22222222222222222222222222222'
'222222222222222222222222222,' '222222222222222222222222222,'
@ -133,10 +133,10 @@ class FormatArgsTest(test_utils.BaseTestCase):
self.assertEqual({'K1': 'V1', self.assertEqual({'K1': 'V1',
'K2': 'V22222222222222222222222222222' 'K2': 'V22222222222222222222222222222'
'222222222222222222222222222', '222222222222222222222222222',
'K3': '3.3.3.3'}, l) 'K3': '3.3.3.3'}, li)
def test_format_args_multiple(self): def test_format_args_multiple(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1', 'K1=V1',
'K2=V22222222222222222222222222222' 'K2=V22222222222222222222222222222'
'222222222222222222222222222', '222222222222222222222222222',
@ -144,30 +144,30 @@ class FormatArgsTest(test_utils.BaseTestCase):
self.assertEqual({'K1': 'V1', self.assertEqual({'K1': 'V1',
'K2': 'V22222222222222222222222222222' 'K2': 'V22222222222222222222222222222'
'222222222222222222222222222', '222222222222222222222222222',
'K3': '3.3.3.3'}, l) 'K3': '3.3.3.3'}, li)
def test_format_args_multiple_colon_values(self): def test_format_args_multiple_colon_values(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1', 'K1=V1',
'K2=V2,V22,V222,V2222', 'K2=V2,V22,V222,V2222',
'K3=3.3.3.3']) 'K3=3.3.3.3'])
self.assertEqual({'K1': 'V1', self.assertEqual({'K1': 'V1',
'K2': 'V2,V22,V222,V2222', 'K2': 'V2,V22,V222,V2222',
'K3': '3.3.3.3'}, l) 'K3': '3.3.3.3'}, li)
def test_format_args_parse_comma_false(self): def test_format_args_parse_comma_false(self):
l = utils.format_args( li = utils.format_args(
['K1=V1,K2=2.2.2.2,K=V'], ['K1=V1,K2=2.2.2.2,K=V'],
parse_comma=False) parse_comma=False)
self.assertEqual({'K1': 'V1,K2=2.2.2.2,K=V'}, l) self.assertEqual({'K1': 'V1,K2=2.2.2.2,K=V'}, li)
def test_format_args_multiple_values_per_args(self): def test_format_args_multiple_values_per_args(self):
l = utils.format_args([ li = utils.format_args([
'K1=V1', 'K1=V1',
'K1=V2']) 'K1=V2'])
self.assertIn('K1', l) self.assertIn('K1', li)
self.assertIn('V1', l['K1']) self.assertIn('V1', li['K1'])
self.assertIn('V2', l['K1']) self.assertIn('V2', li['K1'])
def test_format_args_bad_arg(self): def test_format_args_bad_arg(self):
args = ['K1=V1,K22.2.2.2'] args = ['K1=V1,K22.2.2.2']

View File

@ -91,9 +91,9 @@ class ShellTest(utils.TestCase):
def test_help(self): def test_help(self):
required = [ required = [
'.*?^usage: ', r'.*?^usage: ',
'.*?^\s+stop\s+Stop specified container.', r'.*?^\s+stop\s+Stop specified container.',
'.*?^See "zun help COMMAND" for help on a specific command', r'.*?^See "zun help COMMAND" for help on a specific command',
] ]
stdout, stderr = self.shell('help') stdout, stderr = self.shell('help')
for r in required: for r in required:
@ -102,9 +102,9 @@ class ShellTest(utils.TestCase):
def test_help_on_subcommand(self): def test_help_on_subcommand(self):
required = [ required = [
'.*?^usage: zun create', r'.*?^usage: zun create',
'.*?^Create a container.', r'.*?^Create a container.',
'.*?^Optional arguments:', r'.*?^Optional arguments:',
] ]
stdout, stderr = self.shell('help create') stdout, stderr = self.shell('help create')
for r in required: for r in required:
@ -113,9 +113,9 @@ class ShellTest(utils.TestCase):
def test_help_no_options(self): def test_help_no_options(self):
required = [ required = [
'.*?^usage: ', r'.*?^usage: ',
'.*?^\s+stop\s+Stop specified container.', r'.*?^\s+stop\s+Stop specified container.',
'.*?^See "zun help COMMAND" for help on a specific command', r'.*?^See "zun help COMMAND" for help on a specific command',
] ]
stdout, stderr = self.shell('') stdout, stderr = self.shell('')
for r in required: for r in required:
@ -126,10 +126,10 @@ class ShellTest(utils.TestCase):
stdout, stderr = self.shell('bash-completion') stdout, stderr = self.shell('bash-completion')
# just check we have some output # just check we have some output
required = [ required = [
'.*--format', r'.*--format',
'.*help', r'.*help',
'.*show', r'.*show',
'.*--name'] r'.*--name']
for r in required: for r in required:
self.assertThat((stdout + stderr), self.assertThat((stdout + stderr),
matchers.MatchesRegex(r, re.DOTALL | re.MULTILINE)) matchers.MatchesRegex(r, re.DOTALL | re.MULTILINE))