diff --git a/main.py b/main.py
index 65158e6913ddef0d00783a0a3703981381f2883f..80355ae007b892f0787fb1ab41650cf434a9b4d8 100755
--- a/main.py
+++ b/main.py
@@ -16,6 +16,7 @@ def __check_file(filename:str, mode:int = os.R_OK) -> bool:
         return False
     return True
 
+
 def create_arg_parser():
     parser = argparse.ArgumentParser(description='Metadata anonymisation toolkit 2')
     parser.add_argument('files', nargs='*')
@@ -29,6 +30,7 @@ def create_arg_parser():
                       help='list all the harmful metadata of a file without removing them')
     return parser
 
+
 def show_meta(filename:str):
     if not __check_file(filename):
         return
@@ -44,6 +46,7 @@ def show_meta(filename:str):
         except UnicodeEncodeError:
             print("  %s: harmful content" % k)
 
+
 def clean_meta(filename:str):
     if not __check_file(filename, os.R_OK|os.W_OK):
         return
@@ -54,6 +57,7 @@ def clean_meta(filename:str):
         return
     p.remove_all()
 
+
 def show_parsers():
     print('[+] Supported formats:')
     for parser in parser_factory._get_parsers():
@@ -61,6 +65,7 @@ def show_parsers():
             extensions = ', '.join(mimetypes.guess_all_extensions(mtype))
             print('  - %s (%s)' % (mtype, extensions))
 
+
 def __get_files_recursively(files):
     for f in files:
         if os.path.isfile(f):
diff --git a/src/abstract.py b/src/abstract.py
index 46267896c1fac1e6667990b5bf9fc7dfcea720e4..04c1535f69235b52217050626bb83536e940c561 100644
--- a/src/abstract.py
+++ b/src/abstract.py
@@ -1,5 +1,6 @@
 import abc
 
+
 class AbstractParser(abc.ABC):
     meta_list = set()
     mimetypes = set()
diff --git a/src/audio.py b/src/audio.py
index a56828f7db6c5ffe83a6127ed0d52b3aa7ffc41c..4a385b2117dc41d05db3af43635103e983572182 100644
--- a/src/audio.py
+++ b/src/audio.py
@@ -4,6 +4,7 @@ import mutagen
 
 from . import abstract
 
+
 class MutagenParser(abstract.AbstractParser):
     def get_meta(self):
         f = mutagen.File(self.filename)
@@ -18,6 +19,7 @@ class MutagenParser(abstract.AbstractParser):
         f.save()
         return True
 
+
 class MP3Parser(MutagenParser):
     mimetypes = {'audio/mpeg', }
 
@@ -28,8 +30,10 @@ class MP3Parser(MutagenParser):
             metadata[key.rstrip(' \t\r\n\0')] = ', '.join(map(str, meta[key].text))
         return metadata
 
+
 class OGGParser(MutagenParser):
     mimetypes = {'audio/ogg', }
 
+
 class FLACParser(MutagenParser):
     mimetypes = {'audio/flac', }
diff --git a/src/harmless.py b/src/harmless.py
index 235dabe4ea50c14b933eef3c63cd531c804bc68b..9e7c1b49fc064ebda2d71ad4316f6912bb683cef 100644
--- a/src/harmless.py
+++ b/src/harmless.py
@@ -1,5 +1,6 @@
 from . import abstract
 
+
 class HarmlessParser(abstract.AbstractParser):
     """ This is the parser for filetypes that do not contain metadata. """
     mimetypes = {'application/xml', 'text/plain', 'application/rdf+xml'}
diff --git a/src/images.py b/src/images.py
index afc06589bf5443dafcc1379d8e1a301d9d4bd4f3..2c1fd2ef517d135dfc0887e63513cb770d999472 100644
--- a/src/images.py
+++ b/src/images.py
@@ -10,6 +10,7 @@ from gi.repository import GdkPixbuf
 
 from . import abstract
 
+
 class PNGParser(abstract.AbstractParser):
     mimetypes = {'image/png', }
     meta_whitelist = {'SourceFile', 'ExifToolVersion', 'FileName',
@@ -31,6 +32,7 @@ class PNGParser(abstract.AbstractParser):
         surface.write_to_png(self.output_filename)
         return True
 
+
 class GdkPixbufAbstractParser(abstract.AbstractParser):
     """ GdkPixbuf can handle a lot of surfaces, so we're rending images on it,
         this has the side-effect of removing metadata completely.
diff --git a/src/office.py b/src/office.py
index 9729e19cc5bca713c335da36c8417df330d8d4d4..11692c3d2a18be654eb7c60db4cce44fd0a5a6e9 100644
--- a/src/office.py
+++ b/src/office.py
@@ -7,6 +7,7 @@ import zipfile
 
 from . import abstract, parser_factory
 
+
 class ArchiveBasedAbstractParser(abstract.AbstractParser):
     def _clean_zipinfo(self, zipinfo:zipfile.ZipInfo) -> zipfile.ZipInfo:
         zipinfo.compress_type = zipfile.ZIP_DEFLATED
@@ -46,6 +47,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser):
         with open(tmp_parser.output_filename, 'rb') as f:
             zout.writestr(clean_zinfo, f.read())
 
+
 class MSOfficeParser(ArchiveBasedAbstractParser):
     mimetypes = {
             'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
diff --git a/src/parser_factory.py b/src/parser_factory.py
index ecec789ff9cc1eab10c77a5db35b3aaae1b725c0..68e9e9c55d88e74b9046c5d79ab65a858c8ee507 100644
--- a/src/parser_factory.py
+++ b/src/parser_factory.py
@@ -16,6 +16,7 @@ for module_loader, name, ispkg in pkgutil.walk_packages('.src'):
         continue
     importlib.import_module(name)
 
+
 def _get_parsers() -> list:
     """ Get all our parsers!"""
     def __get_parsers(cls):
@@ -23,6 +24,7 @@ def _get_parsers() -> list:
             [g for s in cls.__subclasses__() for g in __get_parsers(s)]
     return __get_parsers(abstract.AbstractParser)
 
+
 def get_parser(filename: str) -> (T, str):
     mtype, _ = mimetypes.guess_type(filename)
 
diff --git a/tests/test_climat2.py b/tests/test_climat2.py
index f395001ccc9abccc122472e6692a6238dfafa2c7..b9c52b5d6c6e2f3ab10fc45832fc89d0a590ee30 100644
--- a/tests/test_climat2.py
+++ b/tests/test_climat2.py
@@ -13,6 +13,7 @@ class TestHelp(unittest.TestCase):
         stdout, _ = proc.communicate()
         self.assertIn(b'usage: main.py [-h] [-c] [-l] [-s] [files [files ...]]', stdout)
 
+
 class TestGetMeta(unittest.TestCase):
     def test_pdf(self):
         proc = subprocess.Popen(['./main.py', '--show', './tests/data/dirty.pdf'],
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py
index c2864c6f2f8f9aa9ae97063cf31673274f23bc68..4cfb80a1b034798b52c96a842d22811bc1f23a3d 100644
--- a/tests/test_libmat2.py
+++ b/tests/test_libmat2.py
@@ -8,6 +8,7 @@ import tempfile
 
 from src import pdf, images, audio, office, parser_factory
 
+
 class TestParserFactory(unittest.TestCase):
     def test_subsubcalss(self):
         """ Test that our module auto-detection is handling sub-sub-classes """
@@ -15,6 +16,7 @@ class TestParserFactory(unittest.TestCase):
         self.assertEqual(mimetype, 'audio/mpeg')
         self.assertEqual(parser.__class__, audio.MP3Parser)
 
+
 class TestGetMeta(unittest.TestCase):
     def test_pdf(self):
         p = pdf.PDFParser('./tests/data/dirty.pdf')
@@ -132,6 +134,7 @@ class TestDeepCleaning(unittest.TestCase):
 
         os.remove('./tests/data/clean.odt')
 
+
 class TestCleaning(unittest.TestCase):
     def test_pdf(self):
         shutil.copy('./tests/data/dirty.pdf', './tests/data/clean.pdf')