From 9707aa6237461526f26a9a99c8d6bcb0ff348551 Mon Sep 17 00:00:00 2001
From: Sebastian Goscik <sebastian.goscik@live.co.uk>
Date: Thu, 21 Jul 2016 16:40:26 +0100
Subject: [PATCH] Pylint fixes

Pylint now checks for trailing new lines, this commit fixes them.
---
 wlauto/commands/__init__.py                          | 2 --
 wlauto/commands/show.py                              | 1 -
 wlauto/common/__init__.py                            | 2 --
 wlauto/common/android/__init__.py                    | 2 --
 wlauto/common/gem5/__init__.py                       | 2 --
 wlauto/common/linux/__init__.py                      | 2 --
 wlauto/core/__init__.py                              | 2 --
 wlauto/core/bootstrap.py                             | 1 -
 wlauto/core/exttype.py                               | 1 -
 wlauto/core/instrumentation.py                       | 1 -
 wlauto/core/result.py                                | 1 -
 wlauto/core/signal.py                                | 1 -
 wlauto/core/workload.py                              | 1 -
 wlauto/devices/__init__.py                           | 2 --
 wlauto/devices/android/__init__.py                   | 2 --
 wlauto/devices/android/juno/__init__.py              | 1 -
 wlauto/devices/android/odroidxu3/__init__.py         | 1 -
 wlauto/devices/android/tc2/__init__.py               | 1 -
 wlauto/devices/linux/XE503C12/__init__.py            | 1 -
 wlauto/devices/linux/__init__.py                     | 2 --
 wlauto/devices/linux/chromeos_test_image/__init__.py | 1 -
 wlauto/devices/linux/odroidxu3_linux/__init__.py     | 1 -
 wlauto/external/daq_server/src/daqpower/log.py       | 1 -
 wlauto/instrumentation/delay/__init__.py             | 1 -
 wlauto/instrumentation/dmesg/__init__.py             | 2 --
 wlauto/instrumentation/energy_probe/__init__.py      | 1 -
 wlauto/instrumentation/hwmon/__init__.py             | 1 -
 wlauto/instrumentation/juno_energy/__init__.py       | 1 -
 wlauto/instrumentation/netstats/__init__.py          | 1 -
 wlauto/instrumentation/poller/__init__.py            | 1 -
 wlauto/instrumentation/screenon/__init__.py          | 1 -
 wlauto/modules/__init__.py                           | 2 --
 wlauto/modules/cpuidle.py                            | 1 -
 wlauto/modules/flashing.py                           | 1 -
 wlauto/resource_getters/__init__.py                  | 2 --
 wlauto/result_processors/__init__.py                 | 2 --
 wlauto/result_processors/cpustate.py                 | 1 -
 wlauto/result_processors/dvfs.py                     | 1 -
 wlauto/result_processors/status.py                   | 1 -
 wlauto/result_processors/syeg.py                     | 2 --
 wlauto/tests/__init__.py                             | 2 --
 wlauto/tests/test_device.py                          | 1 -
 wlauto/tests/test_diff.py                            | 2 --
 wlauto/tests/test_extension_loader.py                | 1 -
 wlauto/tests/test_instrumentation.py                 | 1 -
 wlauto/tests/test_utils.py                           | 1 -
 wlauto/tools/__init__.py                             | 2 --
 wlauto/tools/extdoc.py                               | 1 -
 wlauto/utils/__init__.py                             | 2 --
 wlauto/utils/cli.py                                  | 1 -
 wlauto/utils/cros_sdk.py                             | 1 -
 wlauto/utils/doc.py                                  | 1 -
 wlauto/utils/serial_port.py                          | 2 +-
 wlauto/utils/terminalsize.py                         | 1 -
 wlauto/utils/trace_cmd.py                            | 1 -
 wlauto/utils/uefi.py                                 | 2 --
 wlauto/workloads/__init__.py                         | 2 --
 wlauto/workloads/andebench/__init__.py               | 1 -
 wlauto/workloads/angrybirds/__init__.py              | 1 -
 wlauto/workloads/angrybirds_rio/__init__.py          | 1 -
 wlauto/workloads/anomaly2/__init__.py                | 1 -
 wlauto/workloads/audio/__init__.py                   | 1 -
 wlauto/workloads/autotest/__init__.py                | 1 -
 wlauto/workloads/camerarecord/__init__.py            | 2 +-
 wlauto/workloads/castlemaster/__init__.py            | 1 -
 wlauto/workloads/cfbench/__init__.py                 | 2 --
 wlauto/workloads/glbenchmark/__init__.py             | 1 -
 wlauto/workloads/googlemap/__init__.py               | 2 --
 wlauto/workloads/gunbros2/__init__.py                | 1 -
 wlauto/workloads/nenamark/__init__.py                | 1 -
 wlauto/workloads/power_loadtest/__init__.py          | 1 -
 wlauto/workloads/quadrant/__init__.py                | 1 -
 wlauto/workloads/realracing3/__init__.py             | 2 --
 wlauto/workloads/sqlite/__init__.py                  | 1 -
 wlauto/workloads/thechase/__init__.py                | 1 -
 wlauto/workloads/vellamo/__init__.py                 | 1 -
 wlauto/workloads/video/__init__.py                   | 1 -
 77 files changed, 2 insertions(+), 100 deletions(-)

diff --git a/wlauto/commands/__init__.py b/wlauto/commands/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/commands/__init__.py
+++ b/wlauto/commands/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/commands/show.py b/wlauto/commands/show.py
index de478260..5a7377ef 100644
--- a/wlauto/commands/show.py
+++ b/wlauto/commands/show.py
@@ -111,4 +111,3 @@ def format_extension_parameters(extension, out, width, shift=4):
         param_texts.append(indent(param_text, shift))
 
     out.write(format_column('\n'.join(param_texts), width))
-
diff --git a/wlauto/common/__init__.py b/wlauto/common/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/common/__init__.py
+++ b/wlauto/common/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/common/android/__init__.py b/wlauto/common/android/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/common/android/__init__.py
+++ b/wlauto/common/android/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/common/gem5/__init__.py b/wlauto/common/gem5/__init__.py
index 6300329b..6d250e97 100644
--- a/wlauto/common/gem5/__init__.py
+++ b/wlauto/common/gem5/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/common/linux/__init__.py b/wlauto/common/linux/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/common/linux/__init__.py
+++ b/wlauto/common/linux/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/core/__init__.py b/wlauto/core/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/core/__init__.py
+++ b/wlauto/core/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/core/bootstrap.py b/wlauto/core/bootstrap.py
index 812cd767..8da24255 100644
--- a/wlauto/core/bootstrap.py
+++ b/wlauto/core/bootstrap.py
@@ -211,4 +211,3 @@ if os.path.isfile(_packages_file):
 
 for config in _env_configs:
     settings.update(config)
-
diff --git a/wlauto/core/exttype.py b/wlauto/core/exttype.py
index ad76bad4..577e3c5d 100644
--- a/wlauto/core/exttype.py
+++ b/wlauto/core/exttype.py
@@ -32,4 +32,3 @@ def get_extension_type(ext):
         if isinstance(ext, cls):
             return name
     raise ValueError('Unknown extension type: {}'.format(ext.__class__.__name__))
-
diff --git a/wlauto/core/instrumentation.py b/wlauto/core/instrumentation.py
index 4aaae09c..1a4a5f27 100644
--- a/wlauto/core/instrumentation.py
+++ b/wlauto/core/instrumentation.py
@@ -396,4 +396,3 @@ class Instrument(Extension):
 
     def __repr__(self):
         return 'Instrument({})'.format(self.name)
-
diff --git a/wlauto/core/result.py b/wlauto/core/result.py
index 1ec3c88c..2f395ac7 100644
--- a/wlauto/core/result.py
+++ b/wlauto/core/result.py
@@ -327,4 +327,3 @@ class Metric(object):
         return '<{}>'.format(result)
 
     __repr__ = __str__
-
diff --git a/wlauto/core/signal.py b/wlauto/core/signal.py
index 012bf0fd..e113cec5 100644
--- a/wlauto/core/signal.py
+++ b/wlauto/core/signal.py
@@ -186,4 +186,3 @@ def send(signal, sender, *args, **kwargs):
 
     """
     dispatcher.send(signal, sender, *args, **kwargs)
-
diff --git a/wlauto/core/workload.py b/wlauto/core/workload.py
index b0a35ee0..cec0df31 100644
--- a/wlauto/core/workload.py
+++ b/wlauto/core/workload.py
@@ -101,4 +101,3 @@ class Workload(Extension):
 
     def __str__(self):
         return '<Workload {}>'.format(self.name)
-
diff --git a/wlauto/devices/__init__.py b/wlauto/devices/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/devices/__init__.py
+++ b/wlauto/devices/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/devices/android/__init__.py b/wlauto/devices/android/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/devices/android/__init__.py
+++ b/wlauto/devices/android/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/devices/android/juno/__init__.py b/wlauto/devices/android/juno/__init__.py
index f915fb50..9f369162 100644
--- a/wlauto/devices/android/juno/__init__.py
+++ b/wlauto/devices/android/juno/__init__.py
@@ -218,4 +218,3 @@ class Juno(BigLittleDevice):
     def get_android_id(self):
         # Android ID currenlty not set properly in Juno Android builds.
         return 'abad1deadeadbeef'
-
diff --git a/wlauto/devices/android/odroidxu3/__init__.py b/wlauto/devices/android/odroidxu3/__init__.py
index 60f780b7..cd2a222e 100644
--- a/wlauto/devices/android/odroidxu3/__init__.py
+++ b/wlauto/devices/android/odroidxu3/__init__.py
@@ -35,4 +35,3 @@ class OdroidXU3(AndroidDevice):
                   description='Serial port on which the device is connected'),
         Parameter('baudrate', default=115200, kind=int, description='Serial connection baud rate'),
     ]
-
diff --git a/wlauto/devices/android/tc2/__init__.py b/wlauto/devices/android/tc2/__init__.py
index ebf2a675..f613fe45 100644
--- a/wlauto/devices/android/tc2/__init__.py
+++ b/wlauto/devices/android/tc2/__init__.py
@@ -847,4 +847,3 @@ def _slow_sendline(target, line):
         target.send(c)
         time.sleep(0.1)
     target.sendline('')
-
diff --git a/wlauto/devices/linux/XE503C12/__init__.py b/wlauto/devices/linux/XE503C12/__init__.py
index fe5bbab3..5e601ba9 100644
--- a/wlauto/devices/linux/XE503C12/__init__.py
+++ b/wlauto/devices/linux/XE503C12/__init__.py
@@ -33,4 +33,3 @@ class Xe503c12Chormebook(LinuxDevice):
     ]
 
     abi = 'armeabi'
-
diff --git a/wlauto/devices/linux/__init__.py b/wlauto/devices/linux/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/devices/linux/__init__.py
+++ b/wlauto/devices/linux/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/devices/linux/chromeos_test_image/__init__.py b/wlauto/devices/linux/chromeos_test_image/__init__.py
index 39947864..943027a0 100644
--- a/wlauto/devices/linux/chromeos_test_image/__init__.py
+++ b/wlauto/devices/linux/chromeos_test_image/__init__.py
@@ -97,4 +97,3 @@ class ChromeOsDevice(LinuxDevice):
         else:
             pass
         self.ui_status = None
-
diff --git a/wlauto/devices/linux/odroidxu3_linux/__init__.py b/wlauto/devices/linux/odroidxu3_linux/__init__.py
index f174950a..d24e3a7f 100644
--- a/wlauto/devices/linux/odroidxu3_linux/__init__.py
+++ b/wlauto/devices/linux/odroidxu3_linux/__init__.py
@@ -32,4 +32,3 @@ class OdroidXU3LinuxDevice(LinuxDevice):
     ]
 
     abi = 'armeabi'
-
diff --git a/wlauto/external/daq_server/src/daqpower/log.py b/wlauto/external/daq_server/src/daqpower/log.py
index eeb63afb..59d3245c 100644
--- a/wlauto/external/daq_server/src/daqpower/log.py
+++ b/wlauto/external/daq_server/src/daqpower/log.py
@@ -55,4 +55,3 @@ logObserver.start()
 
 def start_logging(level, fmt='%(asctime)s %(levelname)-8s: %(message)s'):
     logging.basicConfig(level=getattr(logging, level), format=fmt)
-
diff --git a/wlauto/instrumentation/delay/__init__.py b/wlauto/instrumentation/delay/__init__.py
index f4d17a54..b3675dfb 100644
--- a/wlauto/instrumentation/delay/__init__.py
+++ b/wlauto/instrumentation/delay/__init__.py
@@ -196,4 +196,3 @@ class DelayInstrument(Instrument):
         if self.active_cooling and not self.device.has('active_cooling'):
             message = 'Your device does not support active cooling. Did you configure it with an approprite module?'
             raise InstrumentError(message)
-
diff --git a/wlauto/instrumentation/dmesg/__init__.py b/wlauto/instrumentation/dmesg/__init__.py
index 2603d8a4..5823521a 100644
--- a/wlauto/instrumentation/dmesg/__init__.py
+++ b/wlauto/instrumentation/dmesg/__init__.py
@@ -58,5 +58,3 @@ class DmesgInstrument(Instrument):
     def teardown(self, context):  # pylint: disable=unused-argument
         if self.loglevel:
             self.device.set_sysfile_value(self.loglevel_file, self.old_loglevel, verify=False)
-
-
diff --git a/wlauto/instrumentation/energy_probe/__init__.py b/wlauto/instrumentation/energy_probe/__init__.py
index 14346cf6..6fc229ee 100644
--- a/wlauto/instrumentation/energy_probe/__init__.py
+++ b/wlauto/instrumentation/energy_probe/__init__.py
@@ -144,4 +144,3 @@ class EnergyProbe(Instrument):
         writer = csv.DictWriter(f, self.attributes)
         writer.writeheader()
         writer.writerows(new_data)
-
diff --git a/wlauto/instrumentation/hwmon/__init__.py b/wlauto/instrumentation/hwmon/__init__.py
index 37f3d70f..43914fe9 100644
--- a/wlauto/instrumentation/hwmon/__init__.py
+++ b/wlauto/instrumentation/hwmon/__init__.py
@@ -123,4 +123,3 @@ class HwmonInstrument(Instrument):
             except ValueError, e:
                 self.logger.error('Could not collect all {} readings for {}'.format(sensor.kind, sensor.label))
                 self.logger.error('Got: {}'.format(e))
-
diff --git a/wlauto/instrumentation/juno_energy/__init__.py b/wlauto/instrumentation/juno_energy/__init__.py
index e1310a5a..368d5a57 100644
--- a/wlauto/instrumentation/juno_energy/__init__.py
+++ b/wlauto/instrumentation/juno_energy/__init__.py
@@ -106,4 +106,3 @@ class JunoEnergy(Instrument):
             if self.device.name.lower() != 'juno':
                 message = 'juno_energy instrument is only supported on juno devices; found {}'
                 raise InstrumentError(message.format(self.device.name))
-
diff --git a/wlauto/instrumentation/netstats/__init__.py b/wlauto/instrumentation/netstats/__init__.py
index 78de2e92..3e224369 100644
--- a/wlauto/instrumentation/netstats/__init__.py
+++ b/wlauto/instrumentation/netstats/__init__.py
@@ -189,4 +189,3 @@ class NetstatsInstrument(Instrument):
     def finalize(self, context):
         if self.uninstall_on_completion:
             self.collector.teardown()
-
diff --git a/wlauto/instrumentation/poller/__init__.py b/wlauto/instrumentation/poller/__init__.py
index 56a93e09..1da30a3a 100644
--- a/wlauto/instrumentation/poller/__init__.py
+++ b/wlauto/instrumentation/poller/__init__.py
@@ -118,4 +118,3 @@ class FilePoller(Instrument):
             label_parts.append(pp[-1])  # always use file name even if same for all
             labels.append('-'.join(label_parts))
         return labels
-
diff --git a/wlauto/instrumentation/screenon/__init__.py b/wlauto/instrumentation/screenon/__init__.py
index bd0bd451..1feb1d6e 100644
--- a/wlauto/instrumentation/screenon/__init__.py
+++ b/wlauto/instrumentation/screenon/__init__.py
@@ -77,4 +77,3 @@ class ScreenOnInstrument(Instrument):
     def teardown(self, context):
         if self.polling_period:
             self.monitor.stop()
-
diff --git a/wlauto/modules/__init__.py b/wlauto/modules/__init__.py
index 16224d6f..edd97a24 100644
--- a/wlauto/modules/__init__.py
+++ b/wlauto/modules/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/modules/cpuidle.py b/wlauto/modules/cpuidle.py
index 5030f963..ce8706f6 100644
--- a/wlauto/modules/cpuidle.py
+++ b/wlauto/modules/cpuidle.py
@@ -114,4 +114,3 @@ class Cpuidle(Module):
     def _on_device_init(self, context):  # pylint: disable=unused-argument
         if not self.device.file_exists(self.root_path):
             raise DeviceError('Device kernel does not appear to have cpuidle enabled.')
-
diff --git a/wlauto/modules/flashing.py b/wlauto/modules/flashing.py
index 6e292aab..83c99e83 100644
--- a/wlauto/modules/flashing.py
+++ b/wlauto/modules/flashing.py
@@ -245,4 +245,3 @@ def validate_image_bundle(bundle):
             except KeyError:
                 msg = 'Tarball {} does not appear to be a valid image bundle (did not see config.txt).'
                 raise ConfigError(msg.format(bundle))
-
diff --git a/wlauto/resource_getters/__init__.py b/wlauto/resource_getters/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/resource_getters/__init__.py
+++ b/wlauto/resource_getters/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/result_processors/__init__.py b/wlauto/result_processors/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/result_processors/__init__.py
+++ b/wlauto/result_processors/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/result_processors/cpustate.py b/wlauto/result_processors/cpustate.py
index 3eabc56d..2cb0ca62 100755
--- a/wlauto/result_processors/cpustate.py
+++ b/wlauto/result_processors/cpustate.py
@@ -264,4 +264,3 @@ class CpuStatesProcessor(ResultProcessor):
                         for i, c in enumerate(powerstate_report.core_names)]
             writer.writerow(headers)
             writer.writerows(powerstate_rows)
-
diff --git a/wlauto/result_processors/dvfs.py b/wlauto/result_processors/dvfs.py
index d2a71171..654c2b34 100644
--- a/wlauto/result_processors/dvfs.py
+++ b/wlauto/result_processors/dvfs.py
@@ -374,4 +374,3 @@ class DVFS(ResultProcessor):
                 for i in range(self.device.number_of_cores * self.multiply_factor):
                     temprow.append("{0:.3f}".format(temp["cpu{}".format(i)][offline_value]))
                 writer.writerow(temprow)
-
diff --git a/wlauto/result_processors/status.py b/wlauto/result_processors/status.py
index 37819175..e7f46c16 100644
--- a/wlauto/result_processors/status.py
+++ b/wlauto/result_processors/status.py
@@ -48,4 +48,3 @@ class StatusTxtReporter(ResultProcessor):
                             for ir in result.iteration_results]
             write_table(status_lines, wfh, align='<<>><')
         context.add_artifact('run_status_summary', 'status.txt', 'export')
-
diff --git a/wlauto/result_processors/syeg.py b/wlauto/result_processors/syeg.py
index e6e9fdb4..f33ee83c 100644
--- a/wlauto/result_processors/syeg.py
+++ b/wlauto/result_processors/syeg.py
@@ -146,5 +146,3 @@ class SyegResult(object):
         if not match:
             raise AttributeError(name)
         return self.runs[int(match.group(1)) - 1]
-
-
diff --git a/wlauto/tests/__init__.py b/wlauto/tests/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/tests/__init__.py
+++ b/wlauto/tests/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/tests/test_device.py b/wlauto/tests/test_device.py
index 7bd1d69b..1b04781b 100644
--- a/wlauto/tests/test_device.py
+++ b/wlauto/tests/test_device.py
@@ -96,4 +96,3 @@ class RuntimeParametersTest(TestCase):
 def _instantiate(cls, *args, **kwargs):
     # Needed to get around Extension's __init__ checks
     return cls(*args, **kwargs)
-
diff --git a/wlauto/tests/test_diff.py b/wlauto/tests/test_diff.py
index cc1683cc..05aef450 100644
--- a/wlauto/tests/test_diff.py
+++ b/wlauto/tests/test_diff.py
@@ -40,5 +40,3 @@ class InterruptDiffTest(TestCase):
         with open(expected_result_file) as fh:
             expected_diff = fh.read()
         assert_equal(output_diff, expected_diff)
-
-
diff --git a/wlauto/tests/test_extension_loader.py b/wlauto/tests/test_extension_loader.py
index 7db4c73b..fa701e56 100644
--- a/wlauto/tests/test_extension_loader.py
+++ b/wlauto/tests/test_extension_loader.py
@@ -48,4 +48,3 @@ class ExtensionLoaderTest(TestCase):
         assert_equal(len(devices), 1)
         assert_equal(devices[0].name, 'test-device')
         assert_equal(len(loader.list_extensions()), 1)
-
diff --git a/wlauto/tests/test_instrumentation.py b/wlauto/tests/test_instrumentation.py
index f7d1b96e..d46edcb3 100644
--- a/wlauto/tests/test_instrumentation.py
+++ b/wlauto/tests/test_instrumentation.py
@@ -233,4 +233,3 @@ class InstrumentationTest(TestCase):
 def _instantiate(cls):
     # Needed to get around Extension's __init__ checks
     return cls()
-
diff --git a/wlauto/tests/test_utils.py b/wlauto/tests/test_utils.py
index 3043eb8d..3541b0f4 100644
--- a/wlauto/tests/test_utils.py
+++ b/wlauto/tests/test_utils.py
@@ -88,4 +88,3 @@ class TestTypes(TestCase):
         assert_equal(arguments('--foo 7 --bar "fizz buzz"'),
                      ['--foo', '7', '--bar', 'fizz buzz'])
         assert_equal(arguments(['test', 42]), ['test', '42'])
-
diff --git a/wlauto/tools/__init__.py b/wlauto/tools/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/tools/__init__.py
+++ b/wlauto/tools/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/tools/extdoc.py b/wlauto/tools/extdoc.py
index 8c6592ec..52148472 100644
--- a/wlauto/tools/extdoc.py
+++ b/wlauto/tools/extdoc.py
@@ -131,4 +131,3 @@ def _parse_lambda(text):
     func_text = re.sub(r'\b{}\b'.format(param), 'value', func_text)
 
     return func_text
-
diff --git a/wlauto/utils/__init__.py b/wlauto/utils/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/utils/__init__.py
+++ b/wlauto/utils/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/utils/cli.py b/wlauto/utils/cli.py
index 1339201e..cd1cc6da 100644
--- a/wlauto/utils/cli.py
+++ b/wlauto/utils/cli.py
@@ -24,4 +24,3 @@ def init_argument_parser(parser):
                         help='Enable debug mode. Note: this implies --verbose.')
     parser.add_argument('--version', action='version', version='%(prog)s {}'.format(get_wa_version()))
     return parser
-
diff --git a/wlauto/utils/cros_sdk.py b/wlauto/utils/cros_sdk.py
index 186dcae5..dea36288 100644
--- a/wlauto/utils/cros_sdk.py
+++ b/wlauto/utils/cros_sdk.py
@@ -129,4 +129,3 @@ def _read_line_from_queue(queue, timeout=0, logger=None):
     if logger and line:
         logger.debug(line)
     return line
-
diff --git a/wlauto/utils/doc.py b/wlauto/utils/doc.py
index c9ddd93e..c7eef99e 100644
--- a/wlauto/utils/doc.py
+++ b/wlauto/utils/doc.py
@@ -304,4 +304,3 @@ def get_rst_from_extension(ext):
     if params_rst:
         text += underline('parameters', '~') + params_rst
     return text + '\n'
-
diff --git a/wlauto/utils/serial_port.py b/wlauto/utils/serial_port.py
index 3dc0f0cd..292c76eb 100644
--- a/wlauto/utils/serial_port.py
+++ b/wlauto/utils/serial_port.py
@@ -20,7 +20,7 @@ from distutils.version import StrictVersion as V
 
 import serial
 
-# pylint: disable=ungrouped-imports
+# pylint: disable=ungrouped-imports, wrong-import-position
 import pexpect
 if V(pexpect.__version__) < V('4.0.0'):
     import fdpexpect  # pylint: disable=import-error
diff --git a/wlauto/utils/terminalsize.py b/wlauto/utils/terminalsize.py
index 828ca3e6..028d7db6 100644
--- a/wlauto/utils/terminalsize.py
+++ b/wlauto/utils/terminalsize.py
@@ -90,4 +90,3 @@ def _get_terminal_size_linux():
 if __name__ == "__main__":
     sizex, sizey = get_terminal_size()
     print 'width =', sizex, 'height =', sizey
-
diff --git a/wlauto/utils/trace_cmd.py b/wlauto/utils/trace_cmd.py
index 598f7d7a..bd87b98b 100644
--- a/wlauto/utils/trace_cmd.py
+++ b/wlauto/utils/trace_cmd.py
@@ -286,4 +286,3 @@ class TraceCmdTrace(object):
             else:
                 if self.filter_markers and inside_marked_region:
                     logger.warning('Did not encounter a stop marker in trace')
-
diff --git a/wlauto/utils/uefi.py b/wlauto/utils/uefi.py
index 00c62364..e97d1772 100644
--- a/wlauto/utils/uefi.py
+++ b/wlauto/utils/uefi.py
@@ -231,5 +231,3 @@ class UefiMenu(object):
         self.options = {}
         self.prompt = None
         self.empty_buffer()
-
-
diff --git a/wlauto/workloads/__init__.py b/wlauto/workloads/__init__.py
index cd5d64d6..3e74b613 100644
--- a/wlauto/workloads/__init__.py
+++ b/wlauto/workloads/__init__.py
@@ -12,5 +12,3 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-
-
diff --git a/wlauto/workloads/andebench/__init__.py b/wlauto/workloads/andebench/__init__.py
index 56a91ec9..2b42f94e 100644
--- a/wlauto/workloads/andebench/__init__.py
+++ b/wlauto/workloads/andebench/__init__.py
@@ -92,4 +92,3 @@ class Andebench(AndroidUiAutoBenchmark):
                     results[data['key']] = data['value']
         for key, value in results.iteritems():
             context.result.add_metric(key, value)
-
diff --git a/wlauto/workloads/angrybirds/__init__.py b/wlauto/workloads/angrybirds/__init__.py
index 92ef6828..1bcc6b25 100644
--- a/wlauto/workloads/angrybirds/__init__.py
+++ b/wlauto/workloads/angrybirds/__init__.py
@@ -27,4 +27,3 @@ class AngryBirds(GameWorkload):
     """
     package = 'com.rovio.angrybirds'
     activity = 'com.rovio.ka3d.App'
-
diff --git a/wlauto/workloads/angrybirds_rio/__init__.py b/wlauto/workloads/angrybirds_rio/__init__.py
index c413fd97..9928ca88 100644
--- a/wlauto/workloads/angrybirds_rio/__init__.py
+++ b/wlauto/workloads/angrybirds_rio/__init__.py
@@ -27,4 +27,3 @@ class AngryBirdsRio(GameWorkload):
     """
     package = 'com.rovio.angrybirdsrio'
     activity = 'com.rovio.ka3d.App'
-
diff --git a/wlauto/workloads/anomaly2/__init__.py b/wlauto/workloads/anomaly2/__init__.py
index 8060c34c..fe95548c 100644
--- a/wlauto/workloads/anomaly2/__init__.py
+++ b/wlauto/workloads/anomaly2/__init__.py
@@ -60,4 +60,3 @@ class Anomaly2(GameWorkload):
 
     def teardown(self, context):
         self.device.execute('am force-stop {}'.format(self.package))
-
diff --git a/wlauto/workloads/audio/__init__.py b/wlauto/workloads/audio/__init__.py
index a2872046..782b15e3 100644
--- a/wlauto/workloads/audio/__init__.py
+++ b/wlauto/workloads/audio/__init__.py
@@ -100,4 +100,3 @@ class Audio(Workload):
     def _download_audio_file(self):
         self.logger.debug('Downloading audio file from {}'.format(DEFAULT_AUDIO_FILE_URL))
         urllib.urlretrieve(DEFAULT_AUDIO_FILE_URL, self.audio_file)
-
diff --git a/wlauto/workloads/autotest/__init__.py b/wlauto/workloads/autotest/__init__.py
index 930789db..ec958ceb 100644
--- a/wlauto/workloads/autotest/__init__.py
+++ b/wlauto/workloads/autotest/__init__.py
@@ -105,4 +105,3 @@ class ChromeAutotest(Workload):
         parts = [self.test_that, self.device.host, self.test]
         parts.append(str(self.test_that_args))
         return ' '.join(parts)
-
diff --git a/wlauto/workloads/camerarecord/__init__.py b/wlauto/workloads/camerarecord/__init__.py
index b25c4c46..50a61362 100644
--- a/wlauto/workloads/camerarecord/__init__.py
+++ b/wlauto/workloads/camerarecord/__init__.py
@@ -71,7 +71,7 @@ class Camerarecord(UiAutomatorWorkload):
         # Collect framestats
         framestats_file = self.device.path.join(self.device.working_directory,
                                                 'framestats.txt')
-        self.device.execute('dumpsys gfxinfo {} > {}'\
+        self.device.execute('dumpsys gfxinfo {} > {}'
                             .format(self.package, framestats_file))
         self.device.pull_file(framestats_file,
                               context.output_directory,
diff --git a/wlauto/workloads/castlemaster/__init__.py b/wlauto/workloads/castlemaster/__init__.py
index fa104b81..2ff5838d 100644
--- a/wlauto/workloads/castlemaster/__init__.py
+++ b/wlauto/workloads/castlemaster/__init__.py
@@ -27,4 +27,3 @@ class CastleMaster(GameWorkload):
     package = 'com.alphacloud.castlemaster'
     activity = 'com.unity3d.player.UnityPlayerActivity'
     install_timeout = 500
-
diff --git a/wlauto/workloads/cfbench/__init__.py b/wlauto/workloads/cfbench/__init__.py
index a9fab988..d327286a 100644
--- a/wlauto/workloads/cfbench/__init__.py
+++ b/wlauto/workloads/cfbench/__init__.py
@@ -68,5 +68,3 @@ class Cfbench(AndroidUiAutoBenchmark):
                 else:
                     value = int(child.text)
                 context.result.add_metric(child.attrib['name'], value)
-
-
diff --git a/wlauto/workloads/glbenchmark/__init__.py b/wlauto/workloads/glbenchmark/__init__.py
index 9710c206..d8206cc2 100644
--- a/wlauto/workloads/glbenchmark/__init__.py
+++ b/wlauto/workloads/glbenchmark/__init__.py
@@ -155,4 +155,3 @@ class Glb(AndroidUiAutoBenchmark):
                     metric = metric + '_' + str(match_count // 2)
                     context.result.add_metric(metric, value, units)
                     match_count += 1
-
diff --git a/wlauto/workloads/googlemap/__init__.py b/wlauto/workloads/googlemap/__init__.py
index 59c50cc7..2c5ebb6e 100644
--- a/wlauto/workloads/googlemap/__init__.py
+++ b/wlauto/workloads/googlemap/__init__.py
@@ -35,5 +35,3 @@ class GoogleMap(GameWorkload):
     package = 'com.google.android.apps.maps'
     activity = 'com.google.android.maps.MapsActivity'
     loading_time = 20
-
-
diff --git a/wlauto/workloads/gunbros2/__init__.py b/wlauto/workloads/gunbros2/__init__.py
index be33dc54..20da20e7 100644
--- a/wlauto/workloads/gunbros2/__init__.py
+++ b/wlauto/workloads/gunbros2/__init__.py
@@ -39,4 +39,3 @@ class GunBros(GameWorkload):
     ondevice_asset_root = '/data'
     loading_time = 20
     install_timeout = 500
-
diff --git a/wlauto/workloads/nenamark/__init__.py b/wlauto/workloads/nenamark/__init__.py
index f8c5a4a9..351dcb91 100644
--- a/wlauto/workloads/nenamark/__init__.py
+++ b/wlauto/workloads/nenamark/__init__.py
@@ -63,4 +63,3 @@ class Nenamark(AndroidBenchmark):
                     score = match.group(1)
                     context.result.add_metric('nenamark score', score)
                     break
-
diff --git a/wlauto/workloads/power_loadtest/__init__.py b/wlauto/workloads/power_loadtest/__init__.py
index f95bf5bf..0243f2b0 100644
--- a/wlauto/workloads/power_loadtest/__init__.py
+++ b/wlauto/workloads/power_loadtest/__init__.py
@@ -119,4 +119,3 @@ class PowerLoadtest(Workload):
             parts.append('-b {}'.format(self.board))
         parts.append(str(self.test_that_args))
         return ' '.join(parts)
-
diff --git a/wlauto/workloads/quadrant/__init__.py b/wlauto/workloads/quadrant/__init__.py
index 5670ceea..6dd13611 100644
--- a/wlauto/workloads/quadrant/__init__.py
+++ b/wlauto/workloads/quadrant/__init__.py
@@ -109,4 +109,3 @@ class Quadrant(AndroidUiAutoBenchmark):
                                                       TYPE_UNITS[test_type])
                         context.result.add_metric(data['metric'] + '_score', data['score'])
                         break
-
diff --git a/wlauto/workloads/realracing3/__init__.py b/wlauto/workloads/realracing3/__init__.py
index cfeaa416..3b3d53a8 100644
--- a/wlauto/workloads/realracing3/__init__.py
+++ b/wlauto/workloads/realracing3/__init__.py
@@ -31,5 +31,3 @@ class RealRacing3(GameWorkload):
     loading_time = 90
     asset_file = 'com.ea.games.r3_row.tar.gz'
     saved_state_file = 'rr3-save.tar.gz'
-
-
diff --git a/wlauto/workloads/sqlite/__init__.py b/wlauto/workloads/sqlite/__init__.py
index 60a01276..a5c6f614 100644
--- a/wlauto/workloads/sqlite/__init__.py
+++ b/wlauto/workloads/sqlite/__init__.py
@@ -45,4 +45,3 @@ class Sqlite(AndroidUiAutoBenchmark):
                 except ValueError:
                     self.logger.warn("Reported results do not match expected format (seconds)")
                 context.result.add_metric(metric, value, 'Seconds', lower_is_better=True)
-
diff --git a/wlauto/workloads/thechase/__init__.py b/wlauto/workloads/thechase/__init__.py
index 48c94efa..947fc673 100755
--- a/wlauto/workloads/thechase/__init__.py
+++ b/wlauto/workloads/thechase/__init__.py
@@ -43,4 +43,3 @@ class TheChase(ApkWorkload):
 
     def run(self, context):
         time.sleep(self.duration)
-
diff --git a/wlauto/workloads/vellamo/__init__.py b/wlauto/workloads/vellamo/__init__.py
index e58d7d1d..161a3c8f 100644
--- a/wlauto/workloads/vellamo/__init__.py
+++ b/wlauto/workloads/vellamo/__init__.py
@@ -233,4 +233,3 @@ class VellamoResultParser(HTMLParser):
                     self.benchmarks[-1].add_metric(data)
                 else:
                     self.failed = True
-
diff --git a/wlauto/workloads/video/__init__.py b/wlauto/workloads/video/__init__.py
index 75696852..3758f644 100644
--- a/wlauto/workloads/video/__init__.py
+++ b/wlauto/workloads/video/__init__.py
@@ -135,4 +135,3 @@ class VideoWorkload(Workload):
             for resolution in self.parameters['resolution'].allowed_values:
                 if resolution in filename:
                     self.video_files[resolution].append(os.path.join(self.video_directory, filename))
-