pw_build: Prepare for Pylint update

- Fix various style issues raised by Pylint 2.9.3.
- Disable consider-using-with checks because they're overly broad.

Change-Id: I7d0c205bbff972718aa5d52238ef34e5f4fd0930
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/52860
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Commit-Queue: Auto-Submit <auto-submit@pigweed.google.com.iam.gserviceaccount.com>
Reviewed-by: Anthony DiGirolamo <tonymd@google.com>
diff --git a/.pylintrc b/.pylintrc
index 172a524..a8878c8 100644
--- a/.pylintrc
+++ b/.pylintrc
@@ -64,6 +64,7 @@
 # no Warning level messages displayed, use "--disable=all --enable=classes
 # --disable=W".
 disable=bad-continuation,  # Rely on yapf for formatting
+        consider-using-with,
         fixme,
         subprocess-run-check,
         raise-missing-from,
diff --git a/pw_arduino_build/py/pw_arduino_build/builder.py b/pw_arduino_build/py/pw_arduino_build/builder.py
index b19946e..2a9dcc3 100755
--- a/pw_arduino_build/py/pw_arduino_build/builder.py
+++ b/pw_arduino_build/py/pw_arduino_build/builder.py
@@ -274,43 +274,36 @@
         # TODO(tonymd): Make sure these variables are replaced in recipe lines
         # even if they are None: build_path, project_path, project_source_path,
         # build_project_name
-        for current_board_name in self.board.keys():
+        for current_board in self.board.values():
             if self.build_path:
-                self.board[current_board_name]["build.path"] = self.build_path
+                current_board["build.path"] = self.build_path
             if self.build_project_name:
-                self.board[current_board_name][
-                    "build.project_name"] = self.build_project_name
+                current_board["build.project_name"] = self.build_project_name
                 # {archive_file} is the final *.elf
                 archive_file = "{}.elf".format(self.build_project_name)
-                self.board[current_board_name]["archive_file"] = archive_file
+                current_board["archive_file"] = archive_file
                 # {archive_file_path} is the final core.a archive
                 if self.build_path:
-                    self.board[current_board_name][
-                        "archive_file_path"] = os.path.join(
-                            self.build_path, "core.a")
+                    current_board["archive_file_path"] = os.path.join(
+                        self.build_path, "core.a")
             if self.project_source_path:
-                self.board[current_board_name][
-                    "build.source.path"] = self.project_source_path
+                current_board["build.source.path"] = self.project_source_path
 
-            self.board[current_board_name]["extra.time.local"] = str(
-                int(time.time()))
-            self.board[current_board_name]["runtime.ide.version"] = "10812"
-            self.board[current_board_name][
-                "runtime.hardware.path"] = self.hardware_path
+            current_board["extra.time.local"] = str(int(time.time()))
+            current_board["runtime.ide.version"] = "10812"
+            current_board["runtime.hardware.path"] = self.hardware_path
 
             # Copy {runtime.tools.TOOL_NAME.path} vars
-            self._set_tools_variables(self.board[current_board_name])
+            self._set_tools_variables(current_board)
 
-            self.board[current_board_name][
-                "runtime.platform.path"] = self.package_path
+            current_board["runtime.platform.path"] = self.package_path
             if self.platform["name"] == "Teensyduino":
                 # Teensyduino is installed into the arduino IDE folder
                 # rather than ~/.arduino15/packages/
-                self.board[current_board_name][
-                    "runtime.hardware.path"] = os.path.join(
-                        self.hardware_path, "teensy")
+                current_board["runtime.hardware.path"] = os.path.join(
+                    self.hardware_path, "teensy")
 
-            self.board[current_board_name]["build.system.path"] = os.path.join(
+            current_board["build.system.path"] = os.path.join(
                 self.package_path, "system")
 
             # Set the {build.core.path} variable that pointing to a sub-core
@@ -319,16 +312,15 @@
             # it's typically just the 'arduino' folder. For example:
             # 'arduino-samd/hardware/samd/1.8.8/cores/arduino'
             core_path = Path(self.package_path) / "cores"
-            core_path /= self.board[current_board_name].get(
-                "build.core", self.sub_core_folders[0])
-            self.board[current_board_name][
-                "build.core.path"] = core_path.as_posix()
+            core_path /= current_board.get("build.core",
+                                           self.sub_core_folders[0])
+            current_board["build.core.path"] = core_path.as_posix()
 
-            self.board[current_board_name]["build.arch"] = self.build_arch
+            current_board["build.arch"] = self.build_arch
 
-            for name, var in self.board[current_board_name].items():
-                self.board[current_board_name][name] = var.replace(
-                    "{build.core.path}", core_path.as_posix())
+            for name, var in current_board.items():
+                current_board[name] = var.replace("{build.core.path}",
+                                                  core_path.as_posix())
 
     def load_board_definitions(self):
         """Loads Arduino boards.txt and platform.txt files into dictionaries.
@@ -363,7 +355,7 @@
                     b_match["name"]] = OrderedDict()
 
             # Get all board variables, e.g. teensy40.*
-            for current_board_name in self.board.keys():
+            for current_board_name, current_board in self.board.items():
                 board_line_matches = re.finditer(
                     fr"^\s*{current_board_name}\."
                     fr"(?P<key>[^#=]+)=(?P<value>.*)$", board_file,
@@ -375,8 +367,7 @@
                     ArduinoBuilder.save_default_menu_option(
                         current_board_name, b_match["key"], b_match["value"],
                         self.menu_options)
-                    self.board[current_board_name][
-                        b_match["key"]] = b_match["value"].strip()
+                    current_board[b_match["key"]] = b_match["value"].strip()
 
             self._set_global_arduino_variables()
 
diff --git a/pw_arduino_build/py/pw_arduino_build/core_installer.py b/pw_arduino_build/py/pw_arduino_build/core_installer.py
index bcee8fe..662f90e 100644
--- a/pw_arduino_build/py/pw_arduino_build/core_installer.py
+++ b/pw_arduino_build/py/pw_arduino_build/core_installer.py
@@ -27,7 +27,7 @@
 from pathlib import Path
 from typing import Dict, List
 
-import pw_arduino_build.file_operations as file_operations
+from pw_arduino_build import file_operations
 
 _LOG = logging.getLogger(__name__)
 
diff --git a/pw_cli/py/envparse_test.py b/pw_cli/py/envparse_test.py
index 0a6f180..dfa3c59 100644
--- a/pw_cli/py/envparse_test.py
+++ b/pw_cli/py/envparse_test.py
@@ -16,7 +16,7 @@
 import math
 import unittest
 
-import pw_cli.envparse as envparse
+from pw_cli import envparse
 
 # pylint: disable=no-member
 
diff --git a/pw_package/py/pw_package/packages/boringssl.py b/pw_package/py/pw_package/packages/boringssl.py
index f85c4d1..f791ef0 100644
--- a/pw_package/py/pw_package/packages/boringssl.py
+++ b/pw_package/py/pw_package/packages/boringssl.py
@@ -43,7 +43,7 @@
 
         # Check that necessary build files are generated.
         build_files = ['BUILD.generated.gni', 'err_data.c']
-        return all([os.path.exists(path / file) for file in build_files])
+        return all(os.path.exists(path / file) for file in build_files)
 
     def install(self, path: pathlib.Path) -> None:
         # Checkout the library
diff --git a/pw_protobuf/py/pw_protobuf/codegen_pwpb.py b/pw_protobuf/py/pw_protobuf/codegen_pwpb.py
index d103018..4e46ab6 100644
--- a/pw_protobuf/py/pw_protobuf/codegen_pwpb.py
+++ b/pw_protobuf/py/pw_protobuf/codegen_pwpb.py
@@ -21,7 +21,7 @@
 from typing import Dict, Iterable, List, Tuple
 from typing import cast
 
-import google.protobuf.descriptor_pb2 as descriptor_pb2
+from google.protobuf import descriptor_pb2
 
 from pw_protobuf.output_file import OutputFile
 from pw_protobuf.proto_tree import ProtoEnum, ProtoMessage, ProtoMessageField
diff --git a/pw_protobuf/py/pw_protobuf/plugin.py b/pw_protobuf/py/pw_protobuf/plugin.py
index 058a29d..c584a9a 100755
--- a/pw_protobuf/py/pw_protobuf/plugin.py
+++ b/pw_protobuf/py/pw_protobuf/plugin.py
@@ -20,9 +20,9 @@
 
 import sys
 
-import google.protobuf.compiler.plugin_pb2 as plugin_pb2
+from google.protobuf.compiler import plugin_pb2
 
-import pw_protobuf.codegen_pwpb as codegen_pwpb
+from pw_protobuf import codegen_pwpb
 
 
 def process_proto_request(req: plugin_pb2.CodeGeneratorRequest,
diff --git a/pw_protobuf/py/pw_protobuf/proto_tree.py b/pw_protobuf/py/pw_protobuf/proto_tree.py
index 6dedf82..676096a 100644
--- a/pw_protobuf/py/pw_protobuf/proto_tree.py
+++ b/pw_protobuf/py/pw_protobuf/proto_tree.py
@@ -20,7 +20,7 @@
 from typing import Callable, Dict, Iterator, List, Optional, Tuple, TypeVar
 from typing import cast
 
-import google.protobuf.descriptor_pb2 as descriptor_pb2
+from google.protobuf import descriptor_pb2
 
 T = TypeVar('T')  # pylint: disable=invalid-name
 
diff --git a/pw_rpc/py/pw_rpc/plugin.py b/pw_rpc/py/pw_rpc/plugin.py
index 44337d9..30d6160 100644
--- a/pw_rpc/py/pw_rpc/plugin.py
+++ b/pw_rpc/py/pw_rpc/plugin.py
@@ -16,10 +16,10 @@
 import enum
 import sys
 
-import google.protobuf.compiler.plugin_pb2 as plugin_pb2
+from google.protobuf.compiler import plugin_pb2
 
-import pw_rpc.codegen_nanopb as codegen_nanopb
-import pw_rpc.codegen_raw as codegen_raw
+from pw_rpc import codegen_nanopb
+from pw_rpc import codegen_raw
 
 
 class Codegen(enum.Enum):
diff --git a/pw_stm32cube_build/py/pw_stm32cube_build/find_files.py b/pw_stm32cube_build/py/pw_stm32cube_build/find_files.py
index b6aa016..903c05b 100644
--- a/pw_stm32cube_build/py/pw_stm32cube_build/find_files.py
+++ b/pw_stm32cube_build/py/pw_stm32cube_build/find_files.py
@@ -237,9 +237,8 @@
         'template' not in f, files)
 
     header_files = filter(
-        lambda f: (any([f.startswith(dir)
-                        for dir in _INCLUDE_DIRS])) and f.endswith('.h'),
-        files)
+        lambda f: (any(f.startswith(dir)
+                       for dir in _INCLUDE_DIRS)) and f.endswith('.h'), files)
 
     rebase_path = lambda f: str(stm32cube_path / f)
     return list(map(rebase_path,
diff --git a/pw_trace/py/pw_trace/trace.py b/pw_trace/py/pw_trace/trace.py
index c63d931..03b00c2 100755
--- a/pw_trace/py/pw_trace/trace.py
+++ b/pw_trace/py/pw_trace/trace.py
@@ -31,16 +31,21 @@
 
 
 class TraceType(Enum):
-    Invalid = 0
-    Instantaneous = 1
-    InstantaneousGroup = 2
-    AsyncStart = 3
-    AsyncStep = 4
-    AsyncEnd = 5
-    DurationStart = 6
-    DurationEnd = 7
-    DurationGroupStart = 8
-    DurationGroupEnd = 9
+    INVALID = 0
+    INSTANTANEOUS = 1
+    INSTANTANEOUS_GROUP = 2
+    ASYNC_START = 3
+    ASYNC_STEP = 4
+    ASYNC_END = 5
+    DURATION_START = 6
+    DURATION_END = 7
+    DURATION_GROUP_START = 8
+    DURATION_GROUP_END = 9
+
+    # TODO(hepler): Remove these aliases for the original style-incompliant
+    #     names when users have migrated.
+    DurationStart = 6  # pylint: disable=invalid-name
+    DurationEnd = 7  # pylint: disable=invalid-name
 
 
 class TraceEvent(NamedTuple):
@@ -78,40 +83,40 @@
             "name": (event.label),
             "ts": event.timestamp_us
         }
-        if event.event_type == TraceType.DurationStart:
+        if event.event_type == TraceType.DURATION_START:
             line["ph"] = "B"
             line["tid"] = event.label
-        elif event.event_type == TraceType.DurationEnd:
+        elif event.event_type == TraceType.DURATION_END:
             line["ph"] = "E"
             line["tid"] = event.label
-        elif event.event_type == TraceType.DurationGroupStart:
+        elif event.event_type == TraceType.DURATION_GROUP_START:
             line["ph"] = "B"
             line["tid"] = event.group
-        elif event.event_type == TraceType.DurationGroupEnd:
+        elif event.event_type == TraceType.DURATION_GROUP_END:
             line["ph"] = "E"
             line["tid"] = event.group
-        elif event.event_type == TraceType.Instantaneous:
+        elif event.event_type == TraceType.INSTANTANEOUS:
             line["ph"] = "I"
             line["s"] = "p"
-        elif event.event_type == TraceType.InstantaneousGroup:
+        elif event.event_type == TraceType.INSTANTANEOUS_GROUP:
             line["ph"] = "I"
             line["s"] = "t"
             line["tid"] = event.group
-        elif event.event_type == TraceType.AsyncStart:
+        elif event.event_type == TraceType.ASYNC_START:
             line["ph"] = "b"
             line["scope"] = event.group
             line["tid"] = event.group
             line["cat"] = event.module
             line["id"] = event.trace_id
             line["args"] = {"id": line["id"]}
-        elif event.event_type == TraceType.AsyncStep:
+        elif event.event_type == TraceType.ASYNC_STEP:
             line["ph"] = "n"
             line["scope"] = event.group
             line["tid"] = event.group
             line["cat"] = event.module
             line["id"] = event.trace_id
             line["args"] = {"id": line["id"]}
-        elif event.event_type == TraceType.AsyncEnd:
+        elif event.event_type == TraceType.ASYNC_END:
             line["ph"] = "e"
             line["scope"] = event.group
             line["tid"] = event.group
diff --git a/pw_trace/py/trace_test.py b/pw_trace/py/trace_test.py
index 889a4b1..6cd2bcc 100755
--- a/pw_trace/py/trace_test.py
+++ b/pw_trace/py/trace_test.py
@@ -21,15 +21,16 @@
 from pw_trace import trace
 
 test_events = [
-    trace.TraceEvent(trace.TraceType.Instantaneous, "m1", "L1", 1),
-    trace.TraceEvent(trace.TraceType.InstantaneousGroup, "m2", "L2", 2, "G2"),
-    trace.TraceEvent(trace.TraceType.AsyncStep, "m3", "L3", 3, "G3", 103),
-    trace.TraceEvent(trace.TraceType.DurationStart, "m4", "L4", 4),
-    trace.TraceEvent(trace.TraceType.DurationGroupStart, "m5", "L5", 5, "G5"),
-    trace.TraceEvent(trace.TraceType.AsyncStart, "m6", "L6", 6, "G6", 106),
-    trace.TraceEvent(trace.TraceType.DurationEnd, "m7", "L7", 7),
-    trace.TraceEvent(trace.TraceType.DurationGroupEnd, "m8", "L8", 8, "G8"),
-    trace.TraceEvent(trace.TraceType.AsyncEnd, "m9", "L9", 9, "G9", 109)
+    trace.TraceEvent(trace.TraceType.INSTANTANEOUS, "m1", "L1", 1),
+    trace.TraceEvent(trace.TraceType.INSTANTANEOUS_GROUP, "m2", "L2", 2, "G2"),
+    trace.TraceEvent(trace.TraceType.ASYNC_STEP, "m3", "L3", 3, "G3", 103),
+    trace.TraceEvent(trace.TraceType.DURATION_START, "m4", "L4", 4),
+    trace.TraceEvent(trace.TraceType.DURATION_GROUP_START, "m5", "L5", 5,
+                     "G5"),
+    trace.TraceEvent(trace.TraceType.ASYNC_START, "m6", "L6", 6, "G6", 106),
+    trace.TraceEvent(trace.TraceType.DURATION_END, "m7", "L7", 7),
+    trace.TraceEvent(trace.TraceType.DURATION_GROUP_END, "m8", "L8", 8, "G8"),
+    trace.TraceEvent(trace.TraceType.ASYNC_END, "m9", "L9", 9, "G9", 109)
 ]
 
 test_json = [
@@ -51,7 +52,7 @@
 class TestTraceGenerateJson(unittest.TestCase):
     """Tests generate json with various events."""
     def test_generate_single_json_event(self):
-        event = trace.TraceEvent(event_type=trace.TraceType.Instantaneous,
+        event = trace.TraceEvent(event_type=trace.TraceType.INSTANTANEOUS,
                                  module="module",
                                  label="label",
                                  timestamp_us=10)
@@ -73,7 +74,7 @@
 
     def test_generate_json_data_arg_label(self):
         event = trace.TraceEvent(
-            event_type=trace.TraceType.Instantaneous,
+            event_type=trace.TraceType.INSTANTANEOUS,
             module="module",
             label="",  # Is replaced by data string
             timestamp_us=10,
@@ -91,13 +92,14 @@
         })
 
     def test_generate_json_data_arg_group(self):
-        event = trace.TraceEvent(event_type=trace.TraceType.InstantaneousGroup,
-                                 module="module",
-                                 label="label",
-                                 timestamp_us=10,
-                                 has_data=True,
-                                 data_fmt="@pw_arg_group",
-                                 data=bytes("arg", "utf-8"))
+        event = trace.TraceEvent(
+            event_type=trace.TraceType.INSTANTANEOUS_GROUP,
+            module="module",
+            label="label",
+            timestamp_us=10,
+            has_data=True,
+            data_fmt="@pw_arg_group",
+            data=bytes("arg", "utf-8"))
         json_lines = trace.generate_trace_json([event])
         self.assertEqual(1, len(json_lines))
         self.assertEqual(
@@ -111,7 +113,7 @@
             })
 
     def test_generate_json_data_counter(self):
-        event = trace.TraceEvent(event_type=trace.TraceType.Instantaneous,
+        event = trace.TraceEvent(event_type=trace.TraceType.INSTANTANEOUS,
                                  module="module",
                                  label="counter",
                                  timestamp_us=10,
@@ -133,7 +135,7 @@
             })
 
     def test_generate_json_data_struct_fmt_single(self):
-        event = trace.TraceEvent(event_type=trace.TraceType.Instantaneous,
+        event = trace.TraceEvent(event_type=trace.TraceType.INSTANTANEOUS,
                                  module="module",
                                  label="counter",
                                  timestamp_us=10,
@@ -155,7 +157,7 @@
             })
 
     def test_generate_json_data_struct_fmt_multi(self):
-        event = trace.TraceEvent(event_type=trace.TraceType.Instantaneous,
+        event = trace.TraceEvent(event_type=trace.TraceType.INSTANTANEOUS,
                                  module="module",
                                  label="counter",
                                  timestamp_us=10,
diff --git a/pw_trace_tokenized/py/pw_trace_tokenized/trace_tokenized.py b/pw_trace_tokenized/py/pw_trace_tokenized/trace_tokenized.py
index fd16b3c..8b23617 100755
--- a/pw_trace_tokenized/py/pw_trace_tokenized/trace_tokenized.py
+++ b/pw_trace_tokenized/py/pw_trace_tokenized/trace_tokenized.py
@@ -48,60 +48,60 @@
     return None
 
 
-# Token string: "event_type|flag|module|group|label|<optional data_fmt>"
+# Token string: "event_type|flag|module|group|label|<optional DATA_FMT>"
 class TokenIdx(IntEnum):
-    EventType = 0
-    Flag = 1
-    Module = 2
-    Group = 3
-    Label = 4
-    data_fmt = 5  # optional
+    EVENT_TYPE = 0
+    FLAG = 1
+    MODULE = 2
+    GROUP = 3
+    LABEL = 4
+    DATA_FMT = 5  # optional
 
 
 def get_trace_type(type_str):
     if type_str == "PW_TRACE_EVENT_TYPE_INSTANT":
-        return trace.TraceType.Instantaneous
+        return trace.TraceType.INSTANTANEOUS
     if type_str == "PW_TRACE_EVENT_TYPE_INSTANT_GROUP":
-        return trace.TraceType.InstantaneousGroup
+        return trace.TraceType.INSTANTANEOUS_GROUP
     if type_str == "PW_TRACE_EVENT_TYPE_ASYNC_START":
-        return trace.TraceType.AsyncStart
+        return trace.TraceType.ASYNC_START
     if type_str == "PW_TRACE_EVENT_TYPE_ASYNC_STEP":
-        return trace.TraceType.AsyncStep
+        return trace.TraceType.ASYNC_STEP
     if type_str == "PW_TRACE_EVENT_TYPE_ASYNC_END":
-        return trace.TraceType.AsyncEnd
+        return trace.TraceType.ASYNC_END
     if type_str == "PW_TRACE_EVENT_TYPE_DURATION_START":
-        return trace.TraceType.DurationStart
+        return trace.TraceType.DURATION_START
     if type_str == "PW_TRACE_EVENT_TYPE_DURATION_END":
-        return trace.TraceType.DurationEnd
+        return trace.TraceType.DURATION_END
     if type_str == "PW_TRACE_EVENT_TYPE_DURATION_GROUP_START":
-        return trace.TraceType.DurationGroupStart
+        return trace.TraceType.DURATION_GROUP_START
     if type_str == "PW_TRACE_EVENT_TYPE_DURATION_GROUP_END":
-        return trace.TraceType.DurationGroupEnd
-    return trace.TraceType.Invalid
+        return trace.TraceType.DURATION_GROUP_END
+    return trace.TraceType.INVALID
 
 
 def has_trace_id(token_string):
     token_values = token_string.split("|")
-    return trace.event_has_trace_id(token_values[TokenIdx.EventType])
+    return trace.event_has_trace_id(token_values[TokenIdx.EVENT_TYPE])
 
 
 def has_data(token_string):
     token_values = token_string.split("|")
-    return len(token_values) > TokenIdx.data_fmt
+    return len(token_values) > TokenIdx.DATA_FMT
 
 
 def create_trace_event(token_string, timestamp_us, trace_id, data):
     token_values = token_string.split("|")
     return trace.TraceEvent(event_type=get_trace_type(
-        token_values[TokenIdx.EventType]),
-                            module=token_values[TokenIdx.Module],
-                            label=token_values[TokenIdx.Label],
+        token_values[TokenIdx.EVENT_TYPE]),
+                            module=token_values[TokenIdx.MODULE],
+                            label=token_values[TokenIdx.LABEL],
                             timestamp_us=timestamp_us,
-                            group=token_values[TokenIdx.Group],
+                            group=token_values[TokenIdx.GROUP],
                             trace_id=trace_id,
-                            flags=token_values[TokenIdx.Flag],
+                            flags=token_values[TokenIdx.FLAG],
                             has_data=has_data(token_string),
-                            data_fmt=(token_values[TokenIdx.data_fmt]
+                            data_fmt=(token_values[TokenIdx.DATA_FMT]
                                       if has_data(token_string) else ""),
                             data=data if has_data(token_string) else b'')