diff --git a/jeepyb/cmd/close_pull_requests.py b/jeepyb/cmd/close_pull_requests.py
index a113c34..e8265df 100644
--- a/jeepyb/cmd/close_pull_requests.py
+++ b/jeepyb/cmd/close_pull_requests.py
@@ -38,7 +38,7 @@
 import logging
 import os
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.projects as p
 import jeepyb.utils as u
 
@@ -61,12 +61,12 @@
 def main():
 
     parser = argparse.ArgumentParser()
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--message-file', dest='message_file', default=None,
                         help='The close pull request message')
 
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     if args.message_file:
         try:
@@ -130,5 +130,6 @@
             issue.create_comment(pull_request_text % vars)
             req.edit(state="closed")
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/create_hound_config.py b/jeepyb/cmd/create_hound_config.py
index 601ba74..373ae02 100644
--- a/jeepyb/cmd/create_hound_config.py
+++ b/jeepyb/cmd/create_hound_config.py
@@ -19,14 +19,14 @@
 import json
 import os
 
+import jeepyb.utils as u
+
 # Python2 has unicode as a builtin
 # Python3 does not
 import sys
 if sys.version_info[0] >= 3:
     unicode = str
 
-import jeepyb.utils as u
-
 
 PROJECTS_YAML = os.environ.get('PROJECTS_YAML', '/home/hound/projects.yaml')
 GIT_SERVER = os.environ.get('GIT_BASE', 'opendev.org')
diff --git a/jeepyb/cmd/expire_old_reviews.py b/jeepyb/cmd/expire_old_reviews.py
index 9bbc84c..2dbd015 100644
--- a/jeepyb/cmd/expire_old_reviews.py
+++ b/jeepyb/cmd/expire_old_reviews.py
@@ -22,16 +22,16 @@
 import logging
 import paramiko
 
-import jeepyb.log as l
+import jeepyb.log
 
 logger = logging.getLogger('expire_reviews')
 
 
 def expire_patch_set(ssh, patch_id, patch_subject):
-    message = ('Code review expired due to no recent activity'
-               ' after a negative review. It can be restored using'
-               ' the \`Restore Change\` button under the Patch Set'
-               ' on the web interface.')
+    message = ("Code review expired due to no recent activity"
+               " after a negative review. It can be restored using"
+               " the 'Restore Change' button under the Patch Set"
+               " on the web interface.")
     command = ('gerrit review --abandon '
                '--message="{message}" {patch_id}').format(
                    message=message,
@@ -50,9 +50,9 @@
     parser.add_argument('ssh_key', help='The gerrit admin SSH key file')
     parser.add_argument('--age', dest='age', default='1w',
                         help='The minimum age of a review to expire')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     options = parser.parse_args()
-    l.configure_logging(options)
+    jeepyb.log.configure_logging(options)
 
     GERRIT_USER = options.user
     GERRIT_SSH_KEY = options.ssh_key
@@ -85,5 +85,6 @@
 
     logger.info('End expire review')
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/manage_projects.py b/jeepyb/cmd/manage_projects.py
index 4ca3e27..212d899 100644
--- a/jeepyb/cmd/manage_projects.py
+++ b/jeepyb/cmd/manage_projects.py
@@ -62,7 +62,7 @@
 import gerritlib.gerrit
 import github
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.utils as u
 
 registry = u.ProjectsRegistry()
@@ -418,13 +418,13 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Manage projects')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--nocleanup', action='store_true',
                         help='do not remove temp directories')
     parser.add_argument('projects', metavar='project', nargs='*',
                         help='name of project(s) to process')
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     default_has_github = registry.get_defaults('has-github', True)
 
diff --git a/jeepyb/cmd/notify_impact.py b/jeepyb/cmd/notify_impact.py
index 389d3de..0636c06 100644
--- a/jeepyb/cmd/notify_impact.py
+++ b/jeepyb/cmd/notify_impact.py
@@ -334,5 +334,6 @@
     if impacted(git_log, args.impact):
         process_impact(git_log, args, config)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/openstackwatch.py b/jeepyb/cmd/openstackwatch.py
index c9d6a54..264112f 100644
--- a/jeepyb/cmd/openstackwatch.py
+++ b/jeepyb/cmd/openstackwatch.py
@@ -78,6 +78,7 @@
                                     OUTPUT_MODE)
     return ret
 
+
 try:
     conffile = sys.argv[1]
 except IndexError:
@@ -174,5 +175,6 @@
             else:
                 print(content)
 
+
 if __name__ == '__main__':
     main()
diff --git a/jeepyb/cmd/register_zanata_projects.py b/jeepyb/cmd/register_zanata_projects.py
index 6d64625..b737909 100644
--- a/jeepyb/cmd/register_zanata_projects.py
+++ b/jeepyb/cmd/register_zanata_projects.py
@@ -18,7 +18,7 @@
 import logging
 import os
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.projects as p
 import jeepyb.translations as t
 import jeepyb.utils as u
@@ -33,9 +33,9 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Register projects in Zanata')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     registry = u.ProjectsRegistry(PROJECTS_YAML)
     rest_service = t.ZanataRestService(ZANATA_URL, ZANATA_USER, ZANATA_KEY)
diff --git a/jeepyb/cmd/track_upstream.py b/jeepyb/cmd/track_upstream.py
index ba2b482..4a30c61 100644
--- a/jeepyb/cmd/track_upstream.py
+++ b/jeepyb/cmd/track_upstream.py
@@ -54,7 +54,7 @@
 
 import gerritlib.gerrit
 
-import jeepyb.log as l
+import jeepyb.log
 import jeepyb.utils as u
 
 registry = u.ProjectsRegistry()
@@ -139,13 +139,13 @@
 
 def main():
     parser = argparse.ArgumentParser(description='Manage projects')
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
     parser.add_argument('--nocleanup', action='store_true',
                         help='do not remove temp directories')
     parser.add_argument('projects', metavar='project', nargs='*',
                         help='name of project(s) to process')
     args = parser.parse_args()
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     JEEPYB_CACHE_DIR = registry.get_defaults('jeepyb-cache-dir',
                                              '/var/lib/jeepyb')
@@ -224,5 +224,6 @@
     finally:
         os.unlink(ssh_env['GIT_SSH'])
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/trivial_rebase.py b/jeepyb/cmd/trivial_rebase.py
index 19e192b..2c8bfef 100644
--- a/jeepyb/cmd/trivial_rebase.py
+++ b/jeepyb/cmd/trivial_rebase.py
@@ -282,5 +282,6 @@
         SuExec(options, approval["account_id"], ' '.join(gerrit_approve_cmd))
     sys.exit(0)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/update_blueprint.py b/jeepyb/cmd/update_blueprint.py
index 6de6612..07bcce9 100644
--- a/jeepyb/cmd/update_blueprint.py
+++ b/jeepyb/cmd/update_blueprint.py
@@ -60,6 +60,7 @@
     c.readfp(fp)
     return c
 
+
 GERRIT_CONFIG = get_broken_config(GERRIT_CONFIG)
 SECURE_CONFIG = get_broken_config(GERRIT_SECURE_CONFIG)
 DB_HOST = GERRIT_CONFIG.get("database", "hostname")
@@ -173,5 +174,6 @@
 
     find_specs(lpconn, conn, args)
 
+
 if __name__ == "__main__":
     main()
diff --git a/jeepyb/cmd/welcome_message.py b/jeepyb/cmd/welcome_message.py
index 4e6b779..d09397d 100644
--- a/jeepyb/cmd/welcome_message.py
+++ b/jeepyb/cmd/welcome_message.py
@@ -31,7 +31,7 @@
 import paramiko
 
 import jeepyb.gerritdb
-import jeepyb.log as l
+import jeepyb.log
 
 logger = logging.getLogger('welcome_reviews')
 
@@ -155,16 +155,17 @@
     parser.add_argument('--dryrun', dest='dryrun', action='store_true')
     parser.add_argument('--no-dryrun', dest='dryrun', action='store_false')
     parser.set_defaults(dryrun=False)
-    l.setup_logging_arguments(parser)
+    jeepyb.log.setup_logging_arguments(parser)
 
     args = parser.parse_args()
 
-    l.configure_logging(args)
+    jeepyb.log.configure_logging(args)
 
     # they're a first-timer, post the message on 1st patchset
     if is_newbie(args.uploader) and args.patchset == '1' and not args.dryrun:
         post_message(args.commit, args.ssh_user, args.ssh_key,
                      args.message_file)
 
+
 if __name__ == "__main__":
     main()
diff --git a/test-requirements.txt b/test-requirements.txt
index d528919..117f7a3 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -1,4 +1,4 @@
 # The order of packages is significant, because pip processes them in the order
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
-hacking<0.11,>=0.10.2
+flake8
diff --git a/tox.ini b/tox.ini
index 835b4ac..46bd1ce 100644
--- a/tox.ini
+++ b/tox.ini
@@ -18,6 +18,7 @@
 
 [flake8]
 # E125 and H are intentionally ignored
-ignore = E125,H
+# W503 is a mistake in flake8
+ignore = E125,H,W503,W504
 show-source = True
 exclude = .venv,.tox,dist,doc,build,*.egg
