Ruff lint: relint tools (part 3/4: perf .. win).

Migrate tools/ subdirectories (perf through win) and top-level tools/
scripts from Pylint to Ruff for Python linting. Enable CheckRuff in
top-level tools/PRESUBMIT.py, centralize disabled lint rules in
tools/.ruff.toml with descriptive comments, remove obsolete subdirectory
Pylint checks and tools/perf/pylintrc, and clean up legacy pylint
comments without deleting imports or adding inline noqa comments.

LSC Doc: https://docs.google.com/document/d/1QRhY2yqlicseeVRVLa_gk4YXL4IBSM913-ZW1SdPZLU/edit?tab=t.0

Bug: 539486220
Change-Id: Iab375b592e0a52587521d17f967ffc932d3b5e1f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/8498934
Owners-Override: Alex Ovsienko <ovsienko@google.com>
Reviewed-by: Hans Wennborg <hans@chromium.org>
Commit-Queue: Alex Ovsienko <ovsienko@google.com>
Cr-Commit-Position: refs/heads/main@{#1714288}
NOKEYCHECK=True
GitOrigin-RevId: a8ace9346d60226c9934262115fb3e9759163817
diff --git a/asan/third_party/asan_symbolize.py b/asan/third_party/asan_symbolize.py
index d298fef..4631cfa 100755
--- a/asan/third_party/asan_symbolize.py
+++ b/asan/third_party/asan_symbolize.py
@@ -391,7 +391,7 @@
         pass
       elif fragments[0] == 'FUNC':
         cur_function_addr = int(fragments[1], 16)
-        if not cur_function_addr in self.symbols.keys():
+        if cur_function_addr not in self.symbols.keys():
           self.symbols[cur_function_addr] = ' '.join(fragments[4:])
       else:
         # Line starting with an address.
@@ -474,7 +474,7 @@
     #     .dSYM hints to it.
     result = None
     if not force_system_symbolizer:
-      if not binary in self.llvm_symbolizers:
+      if binary not in self.llvm_symbolizers:
         use_new_symbolizer = True
         if self.system == 'Darwin' and self.dsym_hint_producer:
           dsym_hints_for_binary = set(self.dsym_hint_producer(binary))
@@ -490,7 +490,7 @@
       # Use the chain of symbolizers:
       # Breakpad symbolizer -> LLVM symbolizer -> addr2line/atos
       # (fall back to next symbolizer if the previous one fails).
-      if not binary in symbolizers:
+      if binary not in symbolizers:
         symbolizers[binary] = ChainSymbolizer(
           [BreakpadSymbolizerFactory(binary), self.llvm_symbolizers[binary]]
         )