Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[lldb] Format Python files in scripts and utils #66053

Merged
merged 1 commit into from
Sep 14, 2023

Conversation

DavidSpickett
Copy link
Collaborator

Using:
black --exclude "third_party/" ./lldb/

Using:
black --exclude "third_party/" ./lldb/
@DavidSpickett DavidSpickett requested a review from a team as a code owner September 12, 2023 08:01
@llvmbot llvmbot added the lldb label Sep 12, 2023
@llvmbot
Copy link
Member

llvmbot commented Sep 12, 2023

@llvm/pr-subscribers-lldb

Changes

Using:
black --exclude "third_party/" ./lldb/

Patch is 108.25 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/66053.diff

17 Files Affected:

  • (modified) lldb/scripts/analyze-project-deps.py (+42-24)
  • (modified) lldb/scripts/android/host_art_bt.py (+146-83)
  • (modified) lldb/scripts/install_custom_python.py (+72-74)
  • (modified) lldb/scripts/reproducer-replay.py (+50-48)
  • (modified) lldb/scripts/use_lldb_suite.py (+3-1)
  • (modified) lldb/scripts/verify_api.py (+57-42)
  • (modified) lldb/utils/lldb-repro/lldb-repro.py (+17-13)
  • (modified) lldb/utils/lui/breakwin.py (+7-7)
  • (modified) lldb/utils/lui/commandwin.py (+16-19)
  • (modified) lldb/utils/lui/cui.py (+25-30)
  • (modified) lldb/utils/lui/debuggerdriver.py (+40-36)
  • (modified) lldb/utils/lui/eventwin.py (+1-2)
  • (modified) lldb/utils/lui/lldbutil.py (+204-168)
  • (modified) lldb/utils/lui/lui.py (+25-29)
  • (modified) lldb/utils/lui/sandbox.py (+6-6)
  • (modified) lldb/utils/lui/sourcewin.py (+37-25)
  • (modified) lldb/utils/lui/statuswin.py (+6-6)
diff --git a/lldb/scripts/analyze-project-deps.py b/lldb/scripts/analyze-project-deps.py
index 89da3dc9df7b3c6..4724367e2e722d0 100755
--- a/lldb/scripts/analyze-project-deps.py
+++ b/lldb/scripts/analyze-project-deps.py
@@ -10,12 +10,21 @@
 from use_lldb_suite import lldb_root
 
 parser = argparse.ArgumentParser(
-    description='Analyze LLDB project #include dependencies.')
-parser.add_argument('--show-counts', default=False, action='store_true', 
-    help='When true, show the number of dependencies from each subproject')
-parser.add_argument('--discover-cycles', default=False, action='store_true',
-    help='When true, find and display all project dependency cycles.  Note,'
-         'this option is very slow')
+    description="Analyze LLDB project #include dependencies."
+)
+parser.add_argument(
+    "--show-counts",
+    default=False,
+    action="store_true",
+    help="When true, show the number of dependencies from each subproject",
+)
+parser.add_argument(
+    "--discover-cycles",
+    default=False,
+    action="store_true",
+    help="When true, find and display all project dependency cycles.  Note,"
+    "this option is very slow",
+)
 
 args = parser.parse_args()
 
@@ -24,12 +33,14 @@
 
 src_map = {}
 
-include_regex = re.compile('#include \"((lldb|Plugins|clang)(.*/)+).*\"')
+include_regex = re.compile('#include "((lldb|Plugins|clang)(.*/)+).*"')
+
 
 def is_sublist(small, big):
     it = iter(big)
     return all(c in it for c in small)
 
+
 def normalize_host(str):
     if str.startswith("lldb/Host"):
         return "lldb/Host"
@@ -39,6 +50,7 @@ def normalize_host(str):
         return str.replace("lldb/../../source", "lldb")
     return str
 
+
 def scan_deps(this_dir, file):
     global src_map
     deps = {}
@@ -62,7 +74,8 @@ def scan_deps(this_dir, file):
     if this_dir not in src_map and len(deps) > 0:
         src_map[this_dir] = deps
 
-for (base, dirs, files) in os.walk(inc_dir):
+
+for base, dirs, files in os.walk(inc_dir):
     dir = os.path.basename(base)
     relative = os.path.relpath(base, inc_dir)
     inc_files = [x for x in files if os.path.splitext(x)[1] in [".h"]]
@@ -71,7 +84,7 @@ def scan_deps(this_dir, file):
         inc_path = os.path.join(base, inc)
         scan_deps(relative, inc_path)
 
-for (base, dirs, files) in os.walk(src_dir):
+for base, dirs, files in os.walk(src_dir):
     dir = os.path.basename(base)
     relative = os.path.relpath(base, src_dir)
     src_files = [x for x in files if os.path.splitext(x)[1] in [".cpp", ".h", ".mm"]]
@@ -82,6 +95,7 @@ def scan_deps(this_dir, file):
         scan_deps(norm_base_path, src_path)
     pass
 
+
 def is_existing_cycle(path, cycles):
     # If we have a cycle like # A -> B -> C (with an implicit -> A at the end)
     # then we don't just want to check for an occurrence of A -> B -> C in the
@@ -90,12 +104,13 @@ def is_existing_cycle(path, cycles):
     # at the end), then A -> B -> C is also a cycle.  This is an important
     # optimization which reduces the search space by multiple orders of
     # magnitude.
-    for i in range(0,len(path)):
+    for i in range(0, len(path)):
         if any(is_sublist(x, path) for x in cycles):
             return True
         path = [path[-1]] + path[0:-1]
     return False
 
+
 def expand(path_queue, path_lengths, cycles, src_map):
     # We do a breadth first search, to make sure we visit all paths in order
     # of ascending length.  This is an important optimization to make sure that
@@ -127,54 +142,57 @@ def expand(path_queue, path_lengths, cycles, src_map):
             path_queue.append(cur_path + [item])
     pass
 
+
 cycles = []
 
 path_queue = [[x] for x in iter(src_map)]
 path_lens = [1] * len(path_queue)
 
 items = list(src_map.items())
-items.sort(key = lambda A : A[0])
+items.sort(key=lambda A: A[0])
 
-for (path, deps) in items:
+for path, deps in items:
     print(path + ":")
     sorted_deps = list(deps.items())
     if args.show_counts:
-        sorted_deps.sort(key = lambda A: (A[1], A[0]))
+        sorted_deps.sort(key=lambda A: (A[1], A[0]))
         for dep in sorted_deps:
             print("\t{} [{}]".format(dep[0], dep[1]))
     else:
-        sorted_deps.sort(key = lambda A: A[0])
+        sorted_deps.sort(key=lambda A: A[0])
         for dep in sorted_deps:
             print("\t{}".format(dep[0]))
 
+
 def iter_cycles(cycles):
     global src_map
     for cycle in cycles:
         cycle.append(cycle[0])
         zipper = list(zip(cycle[0:-1], cycle[1:]))
-        result = [(x, src_map[x][y], y) for (x,y) in zipper]
+        result = [(x, src_map[x][y], y) for (x, y) in zipper]
         total = 0
         smallest = result[0][1]
-        for (first, value, last) in result:
+        for first, value, last in result:
             total += value
             smallest = min(smallest, value)
         yield (total, smallest, result)
 
+
 if args.discover_cycles:
     print("Analyzing cycles...")
 
     expand(path_queue, path_lens, cycles, src_map)
 
-    average = sum([len(x)+1 for x in cycles]) / len(cycles)
+    average = sum([len(x) + 1 for x in cycles]) / len(cycles)
 
     print("Found {} cycles.  Average cycle length = {}.".format(len(cycles), average))
     counted = list(iter_cycles(cycles))
     if args.show_counts:
-        counted.sort(key = lambda A: A[0])
-        for (total, smallest, cycle) in counted:
+        counted.sort(key=lambda A: A[0])
+        for total, smallest, cycle in counted:
             sys.stdout.write("{} deps to break: ".format(total))
             sys.stdout.write(cycle[0][0])
-            for (first, count, last) in cycle:
+            for first, count, last in cycle:
                 sys.stdout.write(" [{}->] {}".format(count, last))
             sys.stdout.write("\n")
     else:
@@ -186,8 +204,8 @@ def iter_cycles(cycles):
     islands = []
     outgoing_counts = defaultdict(int)
     incoming_counts = defaultdict(int)
-    for (total, smallest, cycle) in counted:
-        for (first, count, last) in cycle:
+    for total, smallest, cycle in counted:
+        for first, count, last in cycle:
             outgoing_counts[first] += count
             incoming_counts[last] += count
     for cycle in cycles:
@@ -201,8 +219,8 @@ def iter_cycles(cycles):
         sorted = []
         for node in island:
             sorted.append((node, incoming_counts[node], outgoing_counts[node]))
-        sorted.sort(key = lambda x: x[1]+x[2])
-        for (node, inc, outg) in sorted:
+        sorted.sort(key=lambda x: x[1] + x[2])
+        for node, inc, outg in sorted:
             print("  {} [{} in, {} out]".format(node, inc, outg))
     sys.stdout.flush()
 pass
diff --git a/lldb/scripts/android/host_art_bt.py b/lldb/scripts/android/host_art_bt.py
index 03797074aafdddd..d4c5af46d9e2f8e 100644
--- a/lldb/scripts/android/host_art_bt.py
+++ b/lldb/scripts/android/host_art_bt.py
@@ -20,45 +20,59 @@ def host_art_bt(debugger, command, result, internal_dict):
     thread = process.GetSelectedThread()
     while lldb_frame_index < thread.GetNumFrames():
         frame = thread.GetFrameAtIndex(lldb_frame_index)
-        if frame.GetModule() and re.match(r'JIT\(.*?\)',
-                                          frame.GetModule().GetFileSpec().GetFilename()):
+        if frame.GetModule() and re.match(
+            r"JIT\(.*?\)", frame.GetModule().GetFileSpec().GetFilename()
+        ):
             # Compiled Java frame
 
             # Get function/filename/lineno from symbol context
             symbol = frame.GetSymbol()
             if not symbol:
-                print('No symbol info for compiled Java frame: ', frame)
+                print("No symbol info for compiled Java frame: ", frame)
                 sys.exit(1)
             line_entry = frame.GetLineEntry()
-            prettified_frames.append({
-                'function': symbol.GetName(),
-                'file': str(line_entry.GetFileSpec()) if line_entry else None,
-                'line': line_entry.GetLine() if line_entry else -1
-            })
+            prettified_frames.append(
+                {
+                    "function": symbol.GetName(),
+                    "file": str(line_entry.GetFileSpec()) if line_entry else None,
+                    "line": line_entry.GetLine() if line_entry else -1,
+                }
+            )
 
             # Skip art frames
             while True:
                 art_stack_visitor = frame.EvaluateExpression(
-                    """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor(""" +
-                    str(art_frame_index) +
-                    """); visitor.WalkStack(true); visitor""")
+                    """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor("""
+                    + str(art_frame_index)
+                    + """); visitor.WalkStack(true); visitor"""
+                )
                 art_method = frame.EvaluateExpression(
-                    art_stack_visitor.GetName() + """.GetMethod()""")
+                    art_stack_visitor.GetName() + """.GetMethod()"""
+                )
                 if art_method.GetValueAsUnsigned() != 0:
                     art_method_name = frame.EvaluateExpression(
-                        """art::PrettyMethod(""" + art_method.GetName() + """, true)""")
+                        """art::PrettyMethod(""" + art_method.GetName() + """, true)"""
+                    )
                     art_method_name_data = frame.EvaluateExpression(
-                        art_method_name.GetName() + """.c_str()""").GetValueAsUnsigned()
+                        art_method_name.GetName() + """.c_str()"""
+                    ).GetValueAsUnsigned()
                     art_method_name_size = frame.EvaluateExpression(
-                        art_method_name.GetName() + """.length()""").GetValueAsUnsigned()
+                        art_method_name.GetName() + """.length()"""
+                    ).GetValueAsUnsigned()
                     error = lldb.SBError()
                     art_method_name = process.ReadCStringFromMemory(
-                        art_method_name_data, art_method_name_size + 1, error)
+                        art_method_name_data, art_method_name_size + 1, error
+                    )
                     if not error.Success:
-                        print('Failed to read method name')
+                        print("Failed to read method name")
                         sys.exit(1)
                     if art_method_name != symbol.GetName():
-                        print('Function names in native symbol and art runtime stack do not match: ', symbol.GetName(), ' != ', art_method_name)
+                        print(
+                            "Function names in native symbol and art runtime stack do not match: ",
+                            symbol.GetName(),
+                            " != ",
+                            art_method_name,
+                        )
                     art_frame_index = art_frame_index + 1
                     break
                 art_frame_index = art_frame_index + 1
@@ -68,53 +82,69 @@ def host_art_bt(debugger, command, result, internal_dict):
             if lldb_frame_index < thread.GetNumFrames():
                 frame = thread.GetFrameAtIndex(lldb_frame_index)
                 if frame.GetModule() and re.match(
-                        r'JIT\(.*?\)', frame.GetModule().GetFileSpec().GetFilename()):
+                    r"JIT\(.*?\)", frame.GetModule().GetFileSpec().GetFilename()
+                ):
                     # Another compile Java frame
                     # Don't skip; leave it to the next iteration
                     continue
-                elif frame.GetSymbol() and (frame.GetSymbol().GetName() == 'art_quick_invoke_stub' or frame.GetSymbol().GetName() == 'art_quick_invoke_static_stub'):
+                elif frame.GetSymbol() and (
+                    frame.GetSymbol().GetName() == "art_quick_invoke_stub"
+                    or frame.GetSymbol().GetName() == "art_quick_invoke_static_stub"
+                ):
                     # art_quick_invoke_stub / art_quick_invoke_static_stub
                     # Skip until we get past the next ArtMethod::Invoke()
                     while True:
                         lldb_frame_index = lldb_frame_index + 1
                         if lldb_frame_index >= thread.GetNumFrames():
-                            print('ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub')
+                            print(
+                                "ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub"
+                            )
                             sys.exit(1)
                         frame = thread.GetFrameAtIndex(lldb_frame_index)
-                        if frame.GetSymbol() and frame.GetSymbol().GetName(
-                        ) == 'art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)':
+                        if (
+                            frame.GetSymbol()
+                            and frame.GetSymbol().GetName()
+                            == "art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)"
+                        ):
                             lldb_frame_index = lldb_frame_index + 1
                             break
                 else:
-                    print('Invalid frame below compiled Java frame: ', frame)
-        elif frame.GetSymbol() and frame.GetSymbol().GetName() == 'art_quick_generic_jni_trampoline':
+                    print("Invalid frame below compiled Java frame: ", frame)
+        elif (
+            frame.GetSymbol()
+            and frame.GetSymbol().GetName() == "art_quick_generic_jni_trampoline"
+        ):
             # Interpreted JNI frame for x86_64
 
             # Skip art frames
             while True:
                 art_stack_visitor = frame.EvaluateExpression(
-                    """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor(""" +
-                    str(art_frame_index) +
-                    """); visitor.WalkStack(true); visitor""")
+                    """struct GetStackVisitor : public StackVisitor { GetStackVisitor(int depth_) : StackVisitor(Thread::Current(), NULL), depth(depth_) {} bool VisitFrame() { if (cur_depth_ == depth) { return false; } else { return true; } } int depth; }; GetStackVisitor visitor("""
+                    + str(art_frame_index)
+                    + """); visitor.WalkStack(true); visitor"""
+                )
                 art_method = frame.EvaluateExpression(
-                    art_stack_visitor.GetName() + """.GetMethod()""")
+                    art_stack_visitor.GetName() + """.GetMethod()"""
+                )
                 if art_method.GetValueAsUnsigned() != 0:
                     # Get function/filename/lineno from ART runtime
                     art_method_name = frame.EvaluateExpression(
-                        """art::PrettyMethod(""" + art_method.GetName() + """, true)""")
+                        """art::PrettyMethod(""" + art_method.GetName() + """, true)"""
+                    )
                     art_method_name_data = frame.EvaluateExpression(
-                        art_method_name.GetName() + """.c_str()""").GetValueAsUnsigned()
+                        art_method_name.GetName() + """.c_str()"""
+                    ).GetValueAsUnsigned()
                     art_method_name_size = frame.EvaluateExpression(
-                        art_method_name.GetName() + """.length()""").GetValueAsUnsigned()
+                        art_method_name.GetName() + """.length()"""
+                    ).GetValueAsUnsigned()
                     error = lldb.SBError()
                     function = process.ReadCStringFromMemory(
-                        art_method_name_data, art_method_name_size + 1, error)
+                        art_method_name_data, art_method_name_size + 1, error
+                    )
 
-                    prettified_frames.append({
-                        'function': function,
-                        'file': None,
-                        'line': -1
-                    })
+                    prettified_frames.append(
+                        {"function": function, "file": None, "line": -1}
+                    )
 
                     art_frame_index = art_frame_index + 1
                     break
@@ -124,78 +154,98 @@ def host_art_bt(debugger, command, result, internal_dict):
             lldb_frame_index = lldb_frame_index + 1
             if lldb_frame_index < thread.GetNumFrames():
                 frame = thread.GetFrameAtIndex(lldb_frame_index)
-                if frame.GetSymbol() and (frame.GetSymbol().GetName() ==
-                                          'art_quick_invoke_stub' or frame.GetSymbol().GetName() == 'art_quick_invoke_static_stub'):
+                if frame.GetSymbol() and (
+                    frame.GetSymbol().GetName() == "art_quick_invoke_stub"
+                    or frame.GetSymbol().GetName() == "art_quick_invoke_static_stub"
+                ):
                     # art_quick_invoke_stub / art_quick_invoke_static_stub
                     # Skip until we get past the next ArtMethod::Invoke()
                     while True:
                         lldb_frame_index = lldb_frame_index + 1
                         if lldb_frame_index >= thread.GetNumFrames():
-                            print('ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub')
+                            print(
+                                "ArtMethod::Invoke not found below art_quick_invoke_stub/art_quick_invoke_static_stub"
+                            )
                             sys.exit(1)
                         frame = thread.GetFrameAtIndex(lldb_frame_index)
-                        if frame.GetSymbol() and frame.GetSymbol().GetName(
-                        ) == 'art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)':
+                        if (
+                            frame.GetSymbol()
+                            and frame.GetSymbol().GetName()
+                            == "art::mirror::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)"
+                        ):
                             lldb_frame_index = lldb_frame_index + 1
                             break
                 else:
-                    print('Invalid frame below compiled Java frame: ', frame)
-        elif frame.GetSymbol() and re.search(r'art::interpreter::', frame.GetSymbol().GetName()):
+                    print("Invalid frame below compiled Java frame: ", frame)
+        elif frame.GetSymbol() and re.search(
+            r"art::interpreter::", frame.GetSymbol().G...

@adrian-prantl
Copy link
Collaborator

Have (should we) we documented that we format all python code with black somewhere and how to install the tool?

@JDevlieghere
Copy link
Member

Have (should we) we documented that we format all python code with black somewhere and how to install the tool?

https://llvm.org/docs/CodingStandards.html#python-version-and-source-code-formatting

@adrian-prantl
Copy link
Collaborator

Oh nice! I was unsuccessfully looking in the LLDb subdir because I had assumed this was LLDB-specific!

@DavidSpickett
Copy link
Collaborator Author

I'll be cheeky and assume this is fine to go in.

@DavidSpickett DavidSpickett merged commit 602e47c into llvm:main Sep 14, 2023
kstoimenov pushed a commit to kstoimenov/llvm-project that referenced this pull request Sep 14, 2023
Using:
black --exclude "third_party/" ./lldb/
ZijunZhaoCCK pushed a commit to ZijunZhaoCCK/llvm-project that referenced this pull request Sep 19, 2023
Using:
black --exclude "third_party/" ./lldb/
Guzhu-AMD pushed a commit to GPUOpen-Drivers/llvm-project that referenced this pull request Sep 21, 2023
Local branch amd-gfx f337c8e Merged main:f8f934e22c4a into amd-gfx:bd63dc7b6e97
Remote branch main 602e47c [lldb] Format Python files in scripts and utils (llvm#66053)
@DavidSpickett DavidSpickett deleted the lldb-format-black branch October 25, 2023 13:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants