Update hacking

This patch updates the version of hacking to be consistent with
designate.
It is required for flake8 to understand f-strings correctly.
Along with this version update, the patch fixes issues in the code found
by the new versions.

This patch also disables two flake8 plugins from tempest T110 and T111
as they are not compatible with the newer version of flake8.
They can be re-enabled once tempest updates to a newer hacking version
and fixes these issues.

Change-Id: Ia8153724e28cd0ce032d77ff08b4c35f75a1dfc8
This commit is contained in:
Michael Johnson
2024-11-08 20:28:36 +00:00
parent 9d8aa101b5
commit 4d257b3abf
6 changed files with 18 additions and 21 deletions

View File

@ -15,7 +15,6 @@
import re
from hacking import core
import pycodestyle
# D701: Default parameter value is a mutable type
# D702: Log messages require translation
@ -49,8 +48,8 @@ no_line_continuation_backslash_re = re.compile(r'.*(\\)\n')
@core.flake8ext
def mutable_default_arguments(physical_line, logical_line, filename):
if pycodestyle.noqa(physical_line):
def mutable_default_arguments(logical_line, filename, noqa):
if noqa:
return
if mutable_default_argument_check.match(logical_line):
@ -69,7 +68,7 @@ def no_translate_debug_logs(logical_line, filename):
N319
"""
if logical_line.startswith("LOG.debug(_("):
yield(0, "D706: Don't translate debug level logs")
yield (0, "D706: Don't translate debug level logs")
@core.flake8ext
@ -90,7 +89,7 @@ def check_explicit_underscore_import(logical_line, filename):
UNDERSCORE_IMPORT_FILES.append(filename)
elif (translated_log.match(logical_line) or
string_translation.match(logical_line)):
yield(0, "D703: Found use of _() without explicit import of _!")
yield (0, "D703: Found use of _() without explicit import of _!")
@core.flake8ext
@ -109,8 +108,8 @@ def no_import_graduated_oslo_libraries(logical_line, filename):
matches = graduated_oslo_libraries_import_re.match(logical_line)
if matches:
yield(0, "D704: Found import of %s. This oslo library has been "
"graduated!" % matches.group(1))
yield (0, "D704: Found import of %s. This oslo library has been "
"graduated!" % matches.group(1))
@core.flake8ext
@ -133,14 +132,13 @@ def check_no_basestring(logical_line):
if re.search(r"\bbasestring\b", logical_line):
msg = ("D707: basestring is not Python3-compatible, use "
"str instead.")
yield(0, msg)
yield (0, msg)
@core.flake8ext
def check_python3_xrange(logical_line):
if re.search(r"\bxrange\s*\(", logical_line):
yield(0, "D708: Do not use xrange. Use range for "
"large loops.")
yield (0, "D708: Do not use xrange. Use range for large loops.")
@core.flake8ext
@ -152,7 +150,7 @@ def check_no_log_audit(logical_line):
for OpenStack we can enforce not using it.
"""
if "LOG.audit(" in logical_line:
yield(0, "D709: LOG.audit is deprecated, please use LOG.info!")
yield (0, "D709: LOG.audit is deprecated, please use LOG.info!")
@core.flake8ext
@ -162,7 +160,7 @@ def check_no_log_warn(logical_line):
D710
"""
if logical_line.startswith('LOG.warn('):
yield(0, "D710:Use LOG.warning() rather than LOG.warn()")
yield (0, "D710:Use LOG.warning() rather than LOG.warn()")
@core.flake8ext

View File

@ -89,9 +89,8 @@ class DesignateLimit(base.BaseDnsV2Test):
'are {}: '.format(existing_project_ids))
all_project_limits = self.admin_client.list_designate_limits(
headers={'x-auth-all-projects': True})
LOG.info(
'Retrieved designate limits by Admin user for all projects '
'are: '.format(all_project_limits))
LOG.info('Retrieved designate limits by Admin user for all projects '
'are: %s', all_project_limits)
received_project_ids = [
item['project_id'] for item in all_project_limits]
for project_id in existing_project_ids:

View File

@ -340,8 +340,7 @@ class ZonesImportTest(BaseZonesImportTest):
self.assertIn(
zone_import['id'], listed_zone_import_ids,
"Failed, expected import ID:{} wasn't found in "
"listed import IDs".format(
zone_import['id'], listed_zone_import_ids))
"listed import IDs".format(zone_import['id']))
# Test RBAC with x-auth-all-projects
expected_allowed = ['os_admin']

View File

@ -3,4 +3,4 @@
# process, which may cause wedges in the gate later.
# Hacking already pins down pep8/pycodestyle pyflakes and flake8
hacking>=3.0.1,<3.1.0 # Apache-2.0
hacking>=6.1.0,<6.2.0 # Apache-2.0

View File

@ -19,7 +19,7 @@ import linecache
from prettytable import PrettyTable
PEP8_LINE = r'^((?P<file>.*):(?P<line>\d*):(?P<col>\d*):) ' \
'(?P<error>(?P<error_code>\w\d{1,3})(?P<error_desc>.*$))'
r'(?P<error>(?P<error_code>\w\d{1,3})(?P<error_desc>.*$))'
HTML = True

View File

@ -100,8 +100,9 @@ extension =
T108 = tempest.hacking.checks:no_hyphen_at_end_of_rand_name
N322 = tempest.hacking.checks:no_mutable_default_args
T109 = tempest.hacking.checks:no_testtools_skip_decorator
T110 = tempest.hacking.checks:get_resources_on_service_clients
T111 = tempest.hacking.checks:delete_resources_on_service_clients
# TODO(johnsom) Re-enable these once tempest updates hacking to > 3.1.0
# T110 = tempest.hacking.checks:get_resources_on_service_clients
# T111 = tempest.hacking.checks:delete_resources_on_service_clients
T112 = tempest.hacking.checks:dont_import_local_tempest_into_lib
T113 = tempest.hacking.checks:dont_use_config_in_tempest_lib
T114 = tempest.hacking.checks:use_rand_uuid_instead_of_uuid4