Merge "Update hacking"
diff --git a/designate_tempest_plugin/hacking/checks.py b/designate_tempest_plugin/hacking/checks.py
index 53de95c..bce63ef 100644
--- a/designate_tempest_plugin/hacking/checks.py
+++ b/designate_tempest_plugin/hacking/checks.py
@@ -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 @@
 
 
 @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 @@
     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 @@
         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 @@
 
     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 @@
     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 @@
     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 @@
     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
diff --git a/designate_tempest_plugin/tests/api/v2/test_designate_limits.py b/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
index 638d035..86ca419 100644
--- a/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
+++ b/designate_tempest_plugin/tests/api/v2/test_designate_limits.py
@@ -89,9 +89,8 @@
                  '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:
diff --git a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
index 86cf45e..6fcdae9 100644
--- a/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
+++ b/designate_tempest_plugin/tests/api/v2/test_zones_imports.py
@@ -340,8 +340,7 @@
         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']
diff --git a/test-requirements.txt b/test-requirements.txt
index c0a7610..622077f 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -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
diff --git a/tools/pretty_flake8.py b/tools/pretty_flake8.py
index 5ae7efd..908dc0a 100755
--- a/tools/pretty_flake8.py
+++ b/tools/pretty_flake8.py
@@ -19,7 +19,7 @@
 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
 
diff --git a/tox.ini b/tox.ini
index 7a5148b..4f0539b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -100,8 +100,9 @@
   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