Small typing improvements and fixes

Small miscellaneous Python typing improvements and fixes that wouldn't
fit into any other change.

Bug: b/285950835
Change-Id: Idf957cfcdd268a79e0ea8633aec9d3e3244d29f7
Reviewed-on: https://fuchsia-review.googlesource.com/c/antlion/+/885955
Reviewed-by: Patrick Lu <patricklu@google.com>
Commit-Queue: Auto-Submit <auto-submit@fuchsia-infra.iam.gserviceaccount.com>
Fuchsia-Auto-Submit: Sam Balana <sbalana@google.com>
diff --git a/packages/antlion/controllers/iperf_server.py b/packages/antlion/controllers/iperf_server.py
index 349792b..ee552c5 100755
--- a/packages/antlion/controllers/iperf_server.py
+++ b/packages/antlion/controllers/iperf_server.py
@@ -22,6 +22,7 @@
 import subprocess
 import threading
 import time
+from typing import Union
 
 from antlion import context
 from antlion import logger as acts_logger
@@ -131,7 +132,9 @@
             "sum_received" in self.result["end"] or "sum" in self.result["end"]
         )
 
-    def _get_reporting_speed(self, network_speed_in_bits_per_second):
+    def _get_reporting_speed(
+        self, network_speed_in_bits_per_second: Union[int, float]
+    ) -> float:
         """Sets the units for the network speed reporting based on how the
         object was initiated.  Defaults to Megabytes per second.  Currently
         supported, bits per second (bits), kilobits per second (kbits), megabits
diff --git a/packages/antlion/event/event_bus.py b/packages/antlion/event/event_bus.py
index 1b210ca..c9ec9f0 100644
--- a/packages/antlion/event/event_bus.py
+++ b/packages/antlion/event/event_bus.py
@@ -292,5 +292,5 @@
             self.event_type, self.func, filter_fn=self.filter_fn, order=self.order
         )
 
-    def __exit__(self, *unused):
+    def __exit__(self, *_):
         _event_bus.unregister(self.registration_id)
diff --git a/packages/antlion/test_utils/wifi/base_test.py b/packages/antlion/test_utils/wifi/base_test.py
index 03ddb0b..c0de3e84 100644
--- a/packages/antlion/test_utils/wifi/base_test.py
+++ b/packages/antlion/test_utils/wifi/base_test.py
@@ -22,6 +22,7 @@
 from typing import Any, Dict, List, Optional, TypedDict, TypeVar
 
 from mobly.base_test import STAGE_NAME_TEARDOWN_CLASS
+from mobly.config_parser import TestRunConfig
 from mobly.records import TestResultRecord
 
 from antlion import context, controllers, utils
@@ -71,7 +72,7 @@
 
 
 class WifiBaseTest(AntlionBaseTest):
-    def __init__(self, configs: List[Any]) -> None:
+    def __init__(self, configs: TestRunConfig) -> None:
         super().__init__(configs)
         self.enable_packet_log = False
         self.packet_log_2g = hostapd_constants.AP_DEFAULT_CHANNEL_2G
diff --git a/packages/antlion/utils.py b/packages/antlion/utils.py
index a8e78d9..9c0c4ae 100755
--- a/packages/antlion/utils.py
+++ b/packages/antlion/utils.py
@@ -35,7 +35,7 @@
 import traceback
 import zipfile
 from concurrent.futures import ThreadPoolExecutor
-from typing import Any
+from typing import TYPE_CHECKING, Any, Dict, List, Union
 
 import mobly.keys as mobly_keys
 import yaml
@@ -44,6 +44,11 @@
 from antlion.controllers.adb_lib.error import AdbError
 from antlion.libs.proc import job
 
+if TYPE_CHECKING:
+    from antlion.controllers.android_device import AndroidDevice
+    from antlion.controllers.fuchsia_device import FuchsiaDevice
+    from antlion.controllers.utils_lib.ssh.connection import SshConnection
+
 # File name length is limited to 255 chars on some OS, so we need to make sure
 # the file names we output fits within the limit.
 MAX_FILENAME_LEN = 255
@@ -1487,7 +1492,10 @@
     return str(uc_string).encode("ASCII")
 
 
-def get_interface_ip_addresses(comm_channel, interface):
+def get_interface_ip_addresses(
+    comm_channel: Union["AndroidDevice", "SshConnection", "FuchsiaDevice"],
+    interface: str,
+) -> Dict[str, List[str]]:
     """Gets all of the ip addresses, ipv4 and ipv6, associated with a
        particular interface name.
 
diff --git a/pyproject.toml b/pyproject.toml
index 391c35d..0354c05 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -127,6 +127,8 @@
     "packages/antlion/test_utils/wifi/wifi_test_utils.py",
     "packages/antlion/utils.py",
     "setup.py",
+
+    "stubs/mobly/",
 ]
 
 [tool.vulture]
diff --git a/tests/wlan/performance/ChannelSweepTest.py b/tests/wlan/performance/ChannelSweepTest.py
index 5173c11..cbf641a 100644
--- a/tests/wlan/performance/ChannelSweepTest.py
+++ b/tests/wlan/performance/ChannelSweepTest.py
@@ -20,9 +20,10 @@
 from dataclasses import dataclass
 from pathlib import Path
 from statistics import pstdev
-from typing import Any, Dict, List, Optional, Tuple
+from typing import Dict, List, Optional, Tuple
 
 from mobly import asserts, test_runner
+from mobly.config_parser import TestRunConfig
 
 from antlion import utils
 from antlion.controllers.access_point import setup_ap
@@ -108,7 +109,7 @@
     Note: Performance tests should be done in isolated testbed.
     """
 
-    def __init__(self, configs: List[Any]) -> None:
+    def __init__(self, configs: TestRunConfig) -> None:
         super().__init__(configs)
         self.channel_throughput: ChannelThroughputMap = {}