diff --git a/examples/demo.py b/examples/demo.py
index 28dad21858a07e5703010571d097119403bb3e4c..6b48d6a535c3be307120a3e9c0705a28a99f3895 100644
--- a/examples/demo.py
+++ b/examples/demo.py
@@ -1,6 +1,7 @@
 import os
-import time
 import random
+import time
+
 import numpy as np
 
 from flatland.envs.generators import complex_rail_generator
@@ -71,6 +72,7 @@ class Scenario_Generator:
 
         return env
 
+
 class Demo:
 
     def __init__(self, env):
@@ -80,7 +82,7 @@ class Demo:
         self.max_frame_rate = 60
         self.record_frames = None
 
-    def set_record_frames(self,record_frames):
+    def set_record_frames(self, record_frames):
         self.record_frames = record_frames
 
     def create_renderer(self):
@@ -88,7 +90,7 @@ class Demo:
         handle = self.env.get_agent_handles()
         return handle
 
-    def set_max_framerate(self,max_frame_rate):
+    def set_max_framerate(self, max_frame_rate):
         self.max_frame_rate = max_frame_rate
 
     def run_demo(self, max_nbr_of_steps=30):
@@ -103,7 +105,6 @@ class Demo:
 
             # Action
             for iAgent in range(self.env.get_num_agents()):
-
                 # allways walk straight forward
                 action = 2
 
@@ -114,18 +115,14 @@ class Demo:
             next_obs, all_rewards, done, _ = self.env.step(action_dict)
 
             # render
-            self.renderer.renderEnv(show=True,show_observations=False)
+            self.renderer.renderEnv(show=True, show_observations=False)
 
             if done['__all__']:
                 break
 
-
-
             if self.record_frames is not None:
                 self.renderer.gl.saveImage(self.record_frames.format(step))
 
-
-
         self.renderer.close_window()
 
 
@@ -155,22 +152,18 @@ if False:
     demo_flatland_000.run_demo(60)
     demo_flatland_000 = None
 
-
     demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_network_003.pkl'))
     demo_flatland_000.renderer.resize()
     demo_flatland_000.set_max_framerate(5)
     demo_flatland_000.run_demo(30)
     demo_flatland_000 = None
 
-
     demo_flatland_000 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
     demo_flatland_000.renderer.resize()
     demo_flatland_000.set_record_frames('./rendering/frame_{:04d}.bmp')
     demo_flatland_000.run_demo(60)
     demo_flatland_000 = None
 
-
-
 demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl'))
 demo_001.set_record_frames('./rendering/frame_{:04d}.bmp')
 demo_001.run_demo(60)
diff --git a/flatland/utils/editor.py b/flatland/utils/editor.py
index ccff0fa7ca68e9f91aca74ff65e6c84614700ed5..58109b9beab85c56cc8004e0ce8f4274c8db40b6 100644
--- a/flatland/utils/editor.py
+++ b/flatland/utils/editor.py
@@ -180,12 +180,12 @@ class View(object):
 
             self.model.env.agents = self.model.env.agents_static
             for a in self.model.env.agents:
-                if hasattr(a, 'old_position') == False:
+                if hasattr(a, 'old_position') is False:
                     a.old_position = a.position
-                if hasattr(a, 'old_direction') == False:
+                if hasattr(a, 'old_direction') is False:
                     a.old_direction = a.direction
 
-            self.oRT.renderEnv(spacing=False, arrows=False, sRailColor="gray",agents=True,
+            self.oRT.renderEnv(spacing=False, arrows=False, sRailColor="gray", agents=True,
                                show=False, iSelectedAgent=self.model.iSelectedAgent,
                                show_observations=self.show_observations())
             img = self.oRT.getImage()
@@ -454,12 +454,12 @@ class EditorModel(object):
             # count integers along the larger dimension
             for iDelta0 in range(sgn0, delta0 + sgn0, sgn0):
                 rDelta1 = iDelta0 * rcRatio
-                
+
                 if np.abs(rDelta1 - iDelta1) >= 1:
                     rcInterp = (iDelta0, iDelta1)  # fill in the "corner" for "Manhattan interpolation"
                     lrcInterp.append(rcInterp)
                     iDelta1 = int(rDelta1)
-                    
+
                 rcInterp = (iDelta0, int(rDelta1))
                 lrcInterp.append(rcInterp)
             g2Interp = array(lrcInterp)
@@ -469,7 +469,7 @@ class EditorModel(object):
             # Convert the array to a list of tuples
             lrcInterp = list(map(tuple, g2Interp))
         return lrcInterp
-            
+
     def drag_path_element(self, rcCell):
         """Mouse motion event handler for drawing.
         """
diff --git a/flatland/utils/graphics_layer.py b/flatland/utils/graphics_layer.py
index 327cf4f61605c247538000e83877f9658bbbcad5..8e08f7f81204d15c1914f93050c91203aac5cb65 100644
--- a/flatland/utils/graphics_layer.py
+++ b/flatland/utils/graphics_layer.py
@@ -1,7 +1,7 @@
-
 import matplotlib.pyplot as plt
 from numpy import array
 
+
 class GraphicsLayer(object):
     def __init__(self):
         pass
@@ -42,7 +42,7 @@ class GraphicsLayer(object):
     def getImage(self):
         pass
 
-    def saveImage(self,filename):
+    def saveImage(self, filename):
         pass
 
     def adaptColor(self, color, lighten=False):
diff --git a/flatland/utils/graphics_pil.py b/flatland/utils/graphics_pil.py
index 2a06f40176c206b90b78c0fdbbd3ad3c17239347..5b81b039c8a439ece65547e58f66a49a1614f3d3 100644
--- a/flatland/utils/graphics_pil.py
+++ b/flatland/utils/graphics_pil.py
@@ -1,16 +1,19 @@
-from flatland.utils.graphics_layer import GraphicsLayer
-from PIL import Image, ImageDraw, ImageTk   # , ImageFont
-import tkinter as tk
-from numpy import array
-import numpy as np
-# from flatland.utils.svg import Track, Zug
-import time
 import io
 import os
 import site
+# from flatland.utils.svg import Track, Zug
+import time
+import tkinter as tk
+
+import numpy as np
+from PIL import Image, ImageDraw, ImageTk  # , ImageFont
+from numpy import array
+
+from flatland.utils.graphics_layer import GraphicsLayer
+
 
 def enable_windows_cairo_support():
-    if os.name=='nt':
+    if os.name == 'nt':
         import site
         import ctypes.util
         default_os_path = os.environ['PATH']
@@ -20,14 +23,14 @@ def enable_windows_cairo_support():
         os.environ['PATH'] = os.environ['PATH'] + ';' + default_os_path
         if ctypes.util.find_library('cairo') is not None:
             print("cairo installed: OK")
-enable_windows_cairo_support()
-from cairosvg import svg2png
-from screeninfo import get_monitors
 
-# from copy import copy
-from flatland.core.transitions import RailEnvTransitions
 
+enable_windows_cairo_support()
+from cairosvg import svg2png  # noqa: E402
+from screeninfo import get_monitors  # noqa: E402
 
+# from copy import copy
+from flatland.core.transitions import RailEnvTransitions  # noqa: E402
 
 
 class PILGL(GraphicsLayer):
@@ -40,17 +43,16 @@ class PILGL(GraphicsLayer):
         self.width = width
         self.height = height
 
-
-        if jupyter == False:
+        if jupyter is False:
             self.screen_width = 99999
             self.screen_height = 99999
             for m in get_monitors():
-                self.screen_height = min(self.screen_height,m.height)
-                self.screen_width = min(self.screen_width,m.width)
+                self.screen_height = min(self.screen_height, m.height)
+                self.screen_width = min(self.screen_width, m.width)
 
-            w = (self.screen_width-self.width-10)/(self.width + 1 + self.linewidth)
-            h = (self.screen_height-self.height-10)/(self.height + 1 + self.linewidth)
-            self.nPixCell = int(max(1,np.ceil(min(w,h))))
+            w = (self.screen_width - self.width - 10) / (self.width + 1 + self.linewidth)
+            h = (self.screen_height - self.height - 10) / (self.height + 1 + self.linewidth)
+            self.nPixCell = int(max(1, np.ceil(min(w, h))))
         else:
             self.nPixCell = 40
 
@@ -64,14 +66,14 @@ class PILGL(GraphicsLayer):
         self.layers = []
         self.draws = []
 
-        self.tColBg = (255, 255, 255)     # white background
+        self.tColBg = (255, 255, 255)  # white background
         # self.tColBg = (220, 120, 40)    # background color
-        self.tColRail = (0, 0, 0)         # black rails
-        self.tColGrid = (230,) * 3        # light grey for grid
+        self.tColRail = (0, 0, 0)  # black rails
+        self.tColGrid = (230,) * 3  # light grey for grid
 
         sColors = "d50000#c51162#aa00ff#6200ea#304ffe#2962ff#0091ea#00b8d4#00bfa5#00c853" + \
-            "#64dd17#aeea00#ffd600#ffab00#ff6d00#ff3d00#5d4037#455a64"
-            
+                  "#64dd17#aeea00#ffd600#ffab00#ff6d00#ff3d00#5d4037#455a64"
+
         self.ltAgentColors = [self.rgb_s2i(sColor) for sColor in sColors.split("#")]
         self.nAgentColors = len(self.ltAgentColors)
 
@@ -107,12 +109,12 @@ class PILGL(GraphicsLayer):
 
     def drawImageXY(self, pil_img, xyPixLeftTop, layer=0):
         # self.layers[layer].alpha_composite(pil_img, offset=xyPixLeftTop)
-        if (pil_img.mode == "RGBA"): 
+        if (pil_img.mode == "RGBA"):
             pil_mask = pil_img
         else:
             pil_mask = None
             # print(pil_img, pil_img.mode, xyPixLeftTop, layer)
-        
+
         self.layers[layer].paste(pil_img, xyPixLeftTop, pil_mask)
 
     def drawImageRC(self, pil_img, rcTopLeft, layer=0):
@@ -124,7 +126,7 @@ class PILGL(GraphicsLayer):
         self.window = tk.Tk()
         self.window.title("Flatland")
         self.window.configure(background='grey')
-        #self.window.geometry('%dx%d+%d+%d' % (self.widthPx, self.heightPx, self.xPx, self.yPx))
+        # self.window.geometry('%dx%d+%d+%d' % (self.widthPx, self.heightPx, self.xPx, self.yPx))
         self.window_open = True
 
     def close_window(self):
@@ -150,9 +152,9 @@ class PILGL(GraphicsLayer):
 
         if not self.window_open:
             self.open_window()
-        
+
         tkimg = ImageTk.PhotoImage(img)
-        
+
         if self.firstFrame:
             # Do TK actions for a new panel (not sure what they really do)
             self.panel = tk.Label(self.window, image=tkimg)
@@ -182,13 +184,11 @@ class PILGL(GraphicsLayer):
         img = self.alpha_composite_layers()
         return array(img)
 
-
-    def saveImage(self,filename):
+    def saveImage(self, filename):
         print(filename)
         img = self.alpha_composite_layers()
         img.save(filename)
 
-
     def create_image(self, opacity=255):
         img = Image.new("RGBA", (self.widthPx, self.heightPx), (255, 255, 255, opacity))
         return img
@@ -196,11 +196,11 @@ class PILGL(GraphicsLayer):
     def create_layer(self, iLayer=0, clear=True):
         # If we don't have the layers already, create them
         if len(self.layers) <= iLayer:
-            for i in range(len(self.layers), iLayer+1):
+            for i in range(len(self.layers), iLayer + 1):
                 if i == 0:
                     opacity = 255  # "bottom" layer is opaque (for rails)
                 else:
-                    opacity = 0   # subsequent layers are transparent
+                    opacity = 0  # subsequent layers are transparent
                 img = self.create_image(opacity)
                 self.layers.append(img)
                 self.draws.append(ImageDraw.Draw(img))
@@ -212,17 +212,17 @@ class PILGL(GraphicsLayer):
                 # We also need to maintain a Draw object for each layer
                 self.draws[iLayer] = ImageDraw.Draw(img)
 
-    def create_layers(self, clear=True):        
+    def create_layers(self, clear=True):
         self.create_layer(0, clear=clear)
         self.create_layer(1, clear=clear)
 
 
 class PILSVG(PILGL):
-    def __init__(self, width, height,jupyter=False):
+    def __init__(self, width, height, jupyter=False):
         print(self, type(self))
         oSuper = super()
         print(oSuper, type(oSuper))
-        oSuper.__init__(width, height,jupyter)
+        oSuper.__init__(width, height, jupyter)
 
         # self.track = self.track = Track()
         # self.lwTrack = []
@@ -257,19 +257,19 @@ class PILSVG(PILGL):
         try:
             with open(sfPath, "r") as fIn:
                 bytesPNG = svg2png(file_obj=fIn, output_height=self.nPixCell, output_width=self.nPixCell)
-        except:
-            newList=''
+        except:  # noqa: E722
+            newList = ''
             for directory in site.getsitepackages():
                 x = [word for word in os.listdir(directory) if word.startswith('flatland')]
-                if len(x) > 0 :
-                    newList = directory+'/'+x[0]
-            with open(newList+'/'+sfPath, "r") as fIn:
+                if len(x) > 0:
+                    newList = directory + '/' + x[0]
+            with open(newList + '/' + sfPath, "r") as fIn:
                 bytesPNG = svg2png(file_obj=fIn, output_height=self.nPixCell, output_width=self.nPixCell)
         with io.BytesIO(bytesPNG) as fIn:
             pil_img = Image.open(fIn)
             pil_img.load()
             # print(pil_img.mode)
-        
+
         return pil_img
 
     def pilFromSvgBytes(self, bytesSVG):
@@ -320,7 +320,7 @@ class PILSVG(PILGL):
         # Merge them with the regular rails.
         # https://stackoverflow.com/questions/38987/how-to-merge-two-dictionaries-in-a-single-expression
         self.dPilRail = {**self.dPilRail, **dPilRail2}
-        
+
     def loadSVGs(self, dDirFile, rotate=False, agent_colors=False):
         dPil = {}
 
@@ -352,7 +352,7 @@ class PILSVG(PILGL):
             #    svg = svg.merge(svgBG)
 
             pilRail = self.pilFromSvgFile(sPathSvg)
-            
+
             if rotate:
                 # For rotations, we also store the base image
                 dPil[binTrans] = pilRail
@@ -363,7 +363,7 @@ class PILSVG(PILGL):
                     # PIL rotates anticlockwise for positive theta
                     pilRail2 = pilRail.rotate(-nRot)
                     dPil[binTrans2] = pilRail2
-            
+
             if agent_colors:
                 # For recoloring, we don't store the base image.
                 a3BaseColor = self.rgb_s2i("d50000")
@@ -409,7 +409,7 @@ class PILSVG(PILGL):
             (0, 0): "svg/Zug_Gleis_#0091ea.svg",
             (1, 2): "svg/Zug_1_Weiche_#0091ea.svg",
             (0, 3): "svg/Zug_2_Weiche_#0091ea.svg"
-            }
+        }
 
         # "paint" color of the train images we load
         a3BaseColor = self.rgb_s2i("0091ea")
@@ -418,7 +418,7 @@ class PILSVG(PILGL):
 
         for tDirs, sPathSvg in dDirsFile.items():
             iDirIn, iDirOut = tDirs
-            
+
             pilZug = self.pilFromSvgFile(sPathSvg)
 
             # Rotate both the directions and the image and save in the dict
@@ -465,4 +465,3 @@ def main():
 
 if __name__ == "__main__":
     main()
-
diff --git a/flatland/utils/rendertools.py b/flatland/utils/rendertools.py
index 1c2185b69d8b3c7ba7163534a0986c19c68890f8..7db0cc531b1ac0b24054e32b58c1fd1cfd92733e 100644
--- a/flatland/utils/rendertools.py
+++ b/flatland/utils/rendertools.py
@@ -3,19 +3,19 @@ from collections import deque
 
 # import xarray as xr
 import matplotlib.pyplot as plt
-from flatland.utils.render_qt import QTGL, QTSVG
-from flatland.utils.graphics_pil import PILGL, PILSVG
-from flatland.utils.graphics_layer import GraphicsLayer
-from recordtype import recordtype
-from numpy import array
 import numpy as np
+from numpy import array
+from recordtype import recordtype
 
-# TODO: suggested renaming to RailEnvRenderTool, as it will only work with RailEnv!
+from flatland.utils.graphics_layer import GraphicsLayer
+from flatland.utils.graphics_pil import PILGL, PILSVG
+from flatland.utils.render_qt import QTGL, QTSVG
 
-import os
+
+# TODO: suggested renaming to RailEnvRenderTool, as it will only work with RailEnv!
 
 class MPLGL(GraphicsLayer):
-    def __init__(self, width, height,jupyter=False):
+    def __init__(self, width, height, jupyter=False):
         self.width = width
         self.height = height
         self.yxBase = array([6, 21])  # pixel offset
@@ -127,15 +127,15 @@ class RenderTool(object):
         # self.gl = MPLGL()
 
         if gl == "MPL":
-            self.gl = MPLGL(env.width, env.height,jupyter)
+            self.gl = MPLGL(env.width, env.height, jupyter)
         elif gl == "QT":
-            self.gl = QTGL(env.width, env.height,jupyter)
+            self.gl = QTGL(env.width, env.height, jupyter)
         elif gl == "PIL":
-            self.gl = PILGL(env.width, env.height,jupyter)
+            self.gl = PILGL(env.width, env.height, jupyter)
         elif gl == "PILSVG":
-            self.gl = PILSVG(env.width, env.height,jupyter)
+            self.gl = PILSVG(env.width, env.height, jupyter)
         elif gl == "QTSVG":
-            self.gl = QTSVG(env.width, env.height,jupyter)
+            self.gl = QTSVG(env.width, env.height, jupyter)
 
         self.new_rail = True
 
@@ -704,7 +704,6 @@ class RenderTool(object):
     def getImage(self):
         return self.gl.getImage()
 
-
     def plotTreeObs(self, gObs):
         nBranchFactor = 4
 
@@ -735,10 +734,11 @@ class RenderTool(object):
             gP0 = array([gX1, gY1, gZ1])
 
     def renderEnv2(
-        self, show=False, curves=True, spacing=False, arrows=False, agents=True, 
-            show_observations=True, sRailColor="gray",
-            frames=False, iEpisode=None, iStep=None, iSelectedAgent=None,
-            action_dict=dict()):
+        self, show=False, curves=True, spacing=False, arrows=False, agents=True,
+        show_observations=True, sRailColor="gray",
+        frames=False, iEpisode=None, iStep=None, iSelectedAgent=None,
+        action_dict=dict()
+    ):
         """
         Draw the environment using matplotlib.
         Draw into the figure if provided.
diff --git a/tests/test_player.py b/tests/test_player.py
index 876db6b3d9d7a258451385f377b45dc2e4c2a4fa..75b75c471d0de8bcf401d61e74bfb86c0ce1bb6c 100644
--- a/tests/test_player.py
+++ b/tests/test_player.py
@@ -1,12 +1,12 @@
-
 from examples.play_model import main
+
+
 # from examples.tkplay import tkmain
 
 
 def test_main():
     main(render=True, n_steps=20, n_trials=2, sGL="PIL")
     main(render=True, n_steps=20, n_trials=2, sGL="PILSVG")
-    
 
 
 if __name__ == "__main__":
diff --git a/tests/test_rendertools.py b/tests/test_rendertools.py
index dade28fc7fe2fc92b499c2514fab644086729462..04d749bce6bd794e80af685caca1466596d48670 100644
--- a/tests/test_rendertools.py
+++ b/tests/test_rendertools.py
@@ -10,9 +10,9 @@ import matplotlib.pyplot as plt
 import numpy as np
 
 import flatland.utils.rendertools as rt
-from flatland.envs.observations import TreeObsForRailEnv
-from flatland.envs.rail_env import RailEnv, random_rail_generator
 from flatland.envs.generators import empty_rail_generator
+from flatland.envs.observations import TreeObsForRailEnv
+from flatland.envs.rail_env import RailEnv
 
 
 def checkFrozenImage(oRT, sFileImage, resave=False):
@@ -28,11 +28,10 @@ def checkFrozenImage(oRT, sFileImage, resave=False):
     # this is now just for convenience - the file is not read back
     np.savez_compressed(sDirImages + "test/" + sFileImage, img=img_test)
 
-    image_store = np.load(sDirImages + sFileImage)
-    img_expected = image_store["img"]
+    np.load(sDirImages + sFileImage)
 
     # TODO fails!
-    #assert (img_test.shape == img_expected.shape)
+    # assert (img_test.shape == img_expected.shape)
     # assert ((np.sum(np.square(img_test - img_expected)) / img_expected.size / 256) < 1e-3), \
     #     "Image {} does not match".format(sFileImage)