diff --git a/installers/charm/kafka-exporter/src/charm.py b/installers/charm/kafka-exporter/src/charm.py
index ec6eaab..07a854f 100755
--- a/installers/charm/kafka-exporter/src/charm.py
+++ b/installers/charm/kafka-exporter/src/charm.py
@@ -96,7 +96,6 @@
 
 
 class KafkaExporterCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
diff --git a/installers/charm/keystone/src/charm.py b/installers/charm/keystone/src/charm.py
index 39a7a00..446d2e0 100755
--- a/installers/charm/keystone/src/charm.py
+++ b/installers/charm/keystone/src/charm.py
@@ -248,9 +248,9 @@
     ):
         credentials_files_builder = FilesV3Builder()
         fernet_files_builder = FilesV3Builder()
-        for (key_id, _) in enumerate(credential_keys):
+        for key_id, _ in enumerate(credential_keys):
             credentials_files_builder.add_file(str(key_id), str(key_id), secret=True)
-        for (key_id, _) in enumerate(fernet_keys):
+        for key_id, _ in enumerate(fernet_keys):
             fernet_files_builder.add_file(str(key_id), str(key_id), secret=True)
         return credentials_files_builder.build(), fernet_files_builder.build()
 
diff --git a/installers/charm/lcm/src/charm.py b/installers/charm/lcm/src/charm.py
index 7c64418..5319763 100755
--- a/installers/charm/lcm/src/charm.py
+++ b/installers/charm/lcm/src/charm.py
@@ -140,7 +140,6 @@
 
 
 class LcmCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
diff --git a/installers/charm/mon/src/charm.py b/installers/charm/mon/src/charm.py
index db047c0..9ad49ad 100755
--- a/installers/charm/mon/src/charm.py
+++ b/installers/charm/mon/src/charm.py
@@ -126,7 +126,6 @@
 
 
 class MonCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
diff --git a/installers/charm/nbi/src/charm.py b/installers/charm/nbi/src/charm.py
index 4aaecb9..cb47d1c 100755
--- a/installers/charm/nbi/src/charm.py
+++ b/installers/charm/nbi/src/charm.py
@@ -118,7 +118,6 @@
 
 
 class NbiCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
diff --git a/installers/charm/pla/src/charm.py b/installers/charm/pla/src/charm.py
index 36a11dc..d907f0b 100755
--- a/installers/charm/pla/src/charm.py
+++ b/installers/charm/pla/src/charm.py
@@ -76,7 +76,6 @@
 
 
 class PlaCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
diff --git a/installers/charm/pol/src/charm.py b/installers/charm/pol/src/charm.py
index 7b92b45..94f6ecb 100755
--- a/installers/charm/pol/src/charm.py
+++ b/installers/charm/pol/src/charm.py
@@ -87,7 +87,6 @@
 
 
 class PolCharm(CharmedOsmBase):
-
     on = KafkaEvents()
 
     def __init__(self, *args) -> NoReturn:
