]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
tools: pylint catalog-report.py
authorFrantisek Sumsal <frantisek@sumsal.cz>
Mon, 17 Jul 2023 16:34:12 +0000 (18:34 +0200)
committerFrantisek Sumsal <frantisek@sumsal.cz>
Thu, 10 Aug 2023 09:08:17 +0000 (11:08 +0200)
tools/catalog-report.py

index ca1e13df9a9894540a08e0f1e27ac7e74d09eeaa..060b1aae869e16d8456202750f8252f24f91c7ec 100755 (executable)
@@ -28,57 +28,57 @@ Prints out journal entries with no or bad catalog explanations.
 """
 
 import re
-from systemd import journal, id128
 
-j = journal.Reader()
+from systemd import id128, journal
 
-logged = set()
-pattern = re.compile('@[A-Z0-9_]+@')
 
-mids = {v:k for k,v in id128.__dict__.items()
-        if k.startswith('SD_MESSAGE')}
-
-freq = 1000
-
-def log_entry(x):
-    if 'CODE_FILE' in x:
+# pylint: disable=consider-using-f-string
+def log_entry(entry):
+    if 'CODE_FILE' in entry:
         # some of our code was using 'CODE_FUNCTION' instead of 'CODE_FUNC'
-        print('{}:{} {}'.format(x.get('CODE_FILE', '???'),
-                                x.get('CODE_LINE', '???'),
-                                x.get('CODE_FUNC', None) or x.get('CODE_FUNCTION', '???')))
-    print('    {}'.format(x.get('MESSAGE', 'no message!')))
-    for k, v in x.items():
+        print('{}:{} {}'.format(entry.get('CODE_FILE', '???'),
+                                entry.get('CODE_LINE', '???'),
+                                entry.get('CODE_FUNC', None) or entry.get('CODE_FUNCTION', '???')))
+    print('    {}'.format(entry.get('MESSAGE', 'no message!')))
+    for k, v in entry.items():
         if k.startswith('CODE_') or k in {'MESSAGE_ID', 'MESSAGE'}:
             continue
-        print('    {}={}'.format(k, v))
+        print(f'    {k}={v}')
     print()
 
-for i, x in enumerate(j):
-    if i % freq == 0:
-        print(i, end='\r')
+if __name__ == '__main__':
+    j = journal.Reader()
+    logged = set()
+    pattern = re.compile('@[A-Z0-9_]+@')
 
-    try:
-        mid = x['MESSAGE_ID']
-    except KeyError:
-        continue
-    name = mids.get(mid, 'unknown')
+    mids = { v:k for k,v in id128.__dict__.items() if k.startswith('SD_MESSAGE') }
 
-    try:
-        desc = journal.get_catalog(mid)
-    except FileNotFoundError:
-        if mid in logged:
+    for i, x in enumerate(j):
+        if i % 1000 == 0:
+            print(i, end='\r')
+
+        try:
+            mid = x['MESSAGE_ID']
+        except KeyError:
             continue
+        name = mids.get(mid, 'unknown')
 
-        print('{} {.hex}: no catalog entry'.format(name, mid))
-        log_entry(x)
-        logged.add(mid)
-        continue
+        try:
+            desc = journal.get_catalog(mid)
+        except FileNotFoundError:
+            if mid in logged:
+                continue
 
-    fields = [field[1:-1] for field in pattern.findall(desc)]
-    for field in fields:
-        index = (mid, field)
-        if field in x or index in logged:
+            print(f'{name} {mid.hex}: no catalog entry')
+            log_entry(x)
+            logged.add(mid)
             continue
-        print('{} {.hex}: no field {}'.format(name, mid, field))
-        log_entry(x)
-        logged.add(index)
+
+        fields = [field[1:-1] for field in pattern.findall(desc)]
+        for field in fields:
+            index = (mid, field)
+            if field in x or index in logged:
+                continue
+            print(f'{name} {mid.hex}: no field {field}')
+            log_entry(x)
+            logged.add(index)