tests: replace pycodestyle with black
[vpp.git] / docs / _scripts / siphon / generate.py
index 2ae5a1b..1244c46 100644 (file)
@@ -24,8 +24,10 @@ import re
    themselves on this list."""
 siphon_patterns = []
 
+
 class Generate(object):
     """Matches a siphon comment block start"""
+
     siphon_block_start = re.compile("^\s*/\*\?\s*(.*)$")
 
     """Matches a siphon comment block stop"""
@@ -36,8 +38,10 @@ class Generate(object):
 
     """Matches a siphon block directive such as
        '%clicmd:group_label Debug CLI%'"""
-    siphon_block_directive = re.compile("(%s)\s*([a-zA-Z0-9_:]+)\s+(.*)\s*(%s)" % \
-            (siphon_block_delimiter, siphon_block_delimiter))
+    siphon_block_directive = re.compile(
+        "(%s)\s*([a-zA-Z0-9_:]+)\s+(.*)\s*(%s)"
+        % (siphon_block_delimiter, siphon_block_delimiter)
+    )
 
     """Matches the start of an initializer block"""
     siphon_initializer = re.compile("\s*=")
@@ -54,7 +58,6 @@ class Generate(object):
     """Logging handler"""
     log = None
 
-
     def __init__(self, output_directory, input_prefix):
         super(Generate, self).__init__()
         self.log = logging.getLogger("siphon.generate")
@@ -70,14 +73,13 @@ class Generate(object):
         self.output = {}
         for siphon in self.known_siphons:
             self.output[siphon] = {
-                    "file": "%s/%s.siphon" % (output_directory, siphon),
-                    "global": {},
-                    "items": [],
-                }
+                "file": "%s/%s.siphon" % (output_directory, siphon),
+                "global": {},
+                "items": [],
+            }
 
         self.input_prefix = input_prefix
 
-
     """
     count open and close braces in str
     return (0, index) when braces were found and count becomes 0.
@@ -87,16 +89,17 @@ class Generate(object):
     return (count, -1) if not all opening braces are closed, count is the
     current depth
     """
+
     def count_braces(self, str, count=0, found=False):
         for index in range(0, len(str)):
-            if str[index] == '{':
-                count += 1;
+            if str[index] == "{":
+                count += 1
                 found = True
-            elif str[index] == '}':
+            elif str[index] == "}":
                 if count == 0:
                     # means we never found an open brace
                     return (-1, -1)
-                count -= 1;
+                count -= 1
 
             if count == 0 and found:
                 return (count, index)
@@ -106,8 +109,8 @@ class Generate(object):
     def parse(self, filename):
         # Strip the current directory off the start of the
         # filename for brevity
-        if filename[0:len(self.input_prefix)] == self.input_prefix:
-            filename = filename[len(self.input_prefix):]
+        if filename[0 : len(self.input_prefix)] == self.input_prefix:
+            filename = filename[len(self.input_prefix) :]
             if filename[0] == "/":
                 filename = filename[1:]
 
@@ -115,8 +118,8 @@ class Generate(object):
         directory = os.path.dirname(filename)
         if directory[0:2] == "./":
             directory = directory[2:]
-        elif directory[0:len(self.input_prefix)] == self.input_prefix:
-            directory = directory[len(self.input_prefix):]
+        elif directory[0 : len(self.input_prefix)] == self.input_prefix:
+            directory = directory[len(self.input_prefix) :]
         if directory[0] == "/":
             directory = directory[1:]
 
@@ -133,9 +136,10 @@ class Generate(object):
 
             for line in fd:
                 line_num += 1
-                str = line[:-1] # filter \n
+                str = line[:-1]  # filter \n
 
                 """See if there is a block directive and if so extract it"""
+
                 def process_block_directive(str, directives):
                     m = self.siphon_block_directive.search(str)
                     if m is not None:
@@ -143,7 +147,7 @@ class Generate(object):
                         v = m.group(3).strip()
                         directives[k] = v
                         # Return only the parts we did not match
-                        return str[0:m.start(1)] + str[m.end(4):]
+                        return str[0 : m.start(1)] + str[m.end(4) :]
 
                     return str
 
@@ -200,27 +204,25 @@ class Generate(object):
                     # Skip to next line
                     continue
 
-
                 if siphon is None:
                     # Look for blocks we need to siphon
                     for p in siphon_patterns:
                         if p[0].match(str):
-                            siphon = [ p[1], str + "\n", 0 ]
+                            siphon = [p[1], str + "\n", 0]
                             siphon_line = line_num
 
                             # see if we have an initializer
                             m = self.siphon_initializer.search(str)
                             if m is not None:
                                 # count the braces on this line
-                                (count, index) = \
-                                    self.count_braces(str[m.start():])
+                                (count, index) = self.count_braces(str[m.start() :])
                                 siphon[2] = count
                                 # TODO - it's possible we have the
                                 # initializer all on the first line
                                 # we should check for it, but also
                                 # account for the possibility that
                                 # the open brace is on the next line
-                                #if count == 0:
+                                # if count == 0:
                                 #    # braces balanced
                                 #    close_siphon = siphon
                                 #    siphon = None
@@ -231,12 +233,11 @@ class Generate(object):
                 else:
                     # See if we should end the siphon here - do we have
                     # balanced braces?
-                    (count, index) = self.count_braces(str,
-                            count=siphon[2], found=True)
+                    (count, index) = self.count_braces(str, count=siphon[2], found=True)
                     if count == 0:
                         # braces balanced - add the substring and
                         # close the siphon
-                        siphon[1] += str[:index+1] + ";\n"
+                        siphon[1] += str[: index + 1] + ";\n"
                         close_siphon = siphon
                         siphon = None
                     else:
@@ -259,15 +260,15 @@ class Generate(object):
                             details[key] = directives[key]
 
                     # Copy details for this block
-                    details['file'] = filename
-                    details['directory'] = directory
-                    details['line_start'] = siphon_line
-                    details['line_end'] = line_num
-                    details['siphon_block'] = siphon_block.strip()
+                    details["file"] = filename
+                    details["directory"] = directory
+                    details["line_start"] = siphon_line
+                    details["line_end"] = line_num
+                    details["siphon_block"] = siphon_block.strip()
                     details["block"] = close_siphon[1]
 
                     # Store the item
-                    self.output[siphon_name]['items'].append(details)
+                    self.output[siphon_name]["items"].append(details)
 
                     # All done
                     close_siphon = None
@@ -275,7 +276,7 @@ class Generate(object):
 
             # Update globals
             for key in directives.keys():
-                if ':' not in key:
+                if ":" not in key:
                     continue
 
                 if filename.endswith("/dir.dox"):
@@ -288,19 +289,17 @@ class Generate(object):
 
                 if sn not in self.output:
                     self.output[sn] = {}
-                if 'global' not in self.output[sn]:
-                    self.output[sn]['global'] = {}
-                if l not in self.output[sn]['global']:
-                    self.output[sn]['global'][l] = {}
+                if "global" not in self.output[sn]:
+                    self.output[sn]["global"] = {}
+                if l not in self.output[sn]["global"]:
+                    self.output[sn]["global"][l] = {}
 
-                self.output[sn]['global'][l][label] = directives[key]
+                self.output[sn]["global"][l][label] = directives[key]
 
     def deliver(self):
         # Write out the data
         for siphon in self.output.keys():
             self.log.info("Saving siphon data %s." % siphon)
             s = self.output[siphon]
-            with open(s['file'], "a") as fp:
-                json.dump(s, fp,
-                    separators=(',', ': '), indent=4, sort_keys=True)
-
+            with open(s["file"], "a") as fp:
+                json.dump(s, fp, separators=(",", ": "), indent=4, sort_keys=True)