From b26943bdf875c4ab8bbb2b68887fc324b2e00591 Mon Sep 17 00:00:00 2001 From: Kai Chappell Date: Thu, 12 Jun 2025 22:05:46 +0000 Subject: [PATCH] Fix linting and type errors for CI - Use X | None syntax instead of Optional[X] (UP045) - Sort imports in dashboard app (I001) - Remove unnecessary UTF-8 encoding argument (UP012) - Add 'from err' to exception re-raises (B904) - Remove unused imports in integration tests (F401) - Fix useless expression in test (B018) - Cast **1.5 result to float in LDO model (mypy no-any-return) - Use functools.partial instead of lambda in server (mypy misc) --- src/py_dvt_ate/app/cli.py | 4 ++-- src/py_dvt_ate/app/dashboard/app.py | 1 - src/py_dvt_ate/instruments/transport/server.py | 6 ++++-- src/py_dvt_ate/simulation/physics/models/ldo.py | 2 +- src/py_dvt_ate/simulation/virtual/chamber.py | 4 ++-- src/py_dvt_ate/simulation/virtual/power_supply.py | 8 ++++---- tests/integration/test_tcp_server.py | 2 -- tests/unit/test_physics_models.py | 2 +- 8 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/py_dvt_ate/app/cli.py b/src/py_dvt_ate/app/cli.py index 77378e9..4baf5c6 100644 --- a/src/py_dvt_ate/app/cli.py +++ b/src/py_dvt_ate/app/cli.py @@ -1,6 +1,6 @@ """Command-line interface for py_dvt_ate.""" -from typing import Annotated, Optional +from typing import Annotated import typer @@ -23,7 +23,7 @@ def version_callback(value: bool) -> None: @app.callback() def main( version: Annotated[ - Optional[bool], + bool | None, typer.Option( "--version", "-v", diff --git a/src/py_dvt_ate/app/dashboard/app.py b/src/py_dvt_ate/app/dashboard/app.py index a81a5da..49fb5a1 100644 --- a/src/py_dvt_ate/app/dashboard/app.py +++ b/src/py_dvt_ate/app/dashboard/app.py @@ -12,7 +12,6 @@ import streamlit as st from py_dvt_ate.simulation.physics.engine import PhysicsEngine - # History buffer size for charts HISTORY_SIZE = 500 diff --git a/src/py_dvt_ate/instruments/transport/server.py b/src/py_dvt_ate/instruments/transport/server.py index 1d2aa05..dc1382c 100644 --- a/src/py_dvt_ate/instruments/transport/server.py +++ b/src/py_dvt_ate/instruments/transport/server.py @@ -12,6 +12,7 @@ from __future__ import annotations import asyncio import logging +from functools import partial from typing import Protocol, runtime_checkable __all__ = ["InstrumentServer", "SCPIDevice"] @@ -132,8 +133,9 @@ class InstrumentServer: self._running = True for port, instrument in self._instruments.items(): + handler = partial(self._handle_client, instrument=instrument, port=port) server = await asyncio.start_server( - lambda r, w, inst=instrument, p=port: self._handle_client(r, w, inst, p), + handler, self._host, port, ) @@ -216,7 +218,7 @@ class InstrumentServer: # Send response with newline terminator if response: - writer.write(f"{response}\n".encode("utf-8")) + writer.write(f"{response}\n".encode()) await writer.drain() logger.debug("Port %d sent: %s", port, response) diff --git a/src/py_dvt_ate/simulation/physics/models/ldo.py b/src/py_dvt_ate/simulation/physics/models/ldo.py index 44b7371..13ea06e 100644 --- a/src/py_dvt_ate/simulation/physics/models/ldo.py +++ b/src/py_dvt_ate/simulation/physics/models/ldo.py @@ -194,7 +194,7 @@ class LDOModel: # Temperature ratio (reference is approximately 300K ≈ 27°C) temp_ratio = t_kelvin / 300.0 - return self._params.dropout_voltage * (temp_ratio**1.5) + return float(self._params.dropout_voltage * (temp_ratio**1.5)) def is_in_dropout(self, junction_temperature: float) -> bool: """Check if the LDO is in dropout at current operating point. diff --git a/src/py_dvt_ate/simulation/virtual/chamber.py b/src/py_dvt_ate/simulation/virtual/chamber.py index a10d300..d8f697d 100644 --- a/src/py_dvt_ate/simulation/virtual/chamber.py +++ b/src/py_dvt_ate/simulation/virtual/chamber.py @@ -82,8 +82,8 @@ class ThermalChamberSim(BaseInstrument): try: setpoint = float(command.arguments[0]) - except ValueError: - raise ValueError(f"Invalid temperature value: {command.arguments[0]}") + except ValueError as err: + raise ValueError(f"Invalid temperature value: {command.arguments[0]}") from err self._setpoint = setpoint if self._physics_engine is not None: diff --git a/src/py_dvt_ate/simulation/virtual/power_supply.py b/src/py_dvt_ate/simulation/virtual/power_supply.py index 7045bca..356b64c 100644 --- a/src/py_dvt_ate/simulation/virtual/power_supply.py +++ b/src/py_dvt_ate/simulation/virtual/power_supply.py @@ -94,8 +94,8 @@ class PowerSupplySim(BaseInstrument): try: voltage = float(command.arguments[0]) - except ValueError: - raise ValueError(f"Invalid voltage value: {command.arguments[0]}") + except ValueError as err: + raise ValueError(f"Invalid voltage value: {command.arguments[0]}") from err if voltage < 0: raise ValueError("Voltage cannot be negative") @@ -127,8 +127,8 @@ class PowerSupplySim(BaseInstrument): try: current = float(command.arguments[0]) - except ValueError: - raise ValueError(f"Invalid current value: {command.arguments[0]}") + except ValueError as err: + raise ValueError(f"Invalid current value: {command.arguments[0]}") from err if current < 0: raise ValueError("Current limit cannot be negative") diff --git a/tests/integration/test_tcp_server.py b/tests/integration/test_tcp_server.py index 7abd1b9..b23a30f 100644 --- a/tests/integration/test_tcp_server.py +++ b/tests/integration/test_tcp_server.py @@ -13,8 +13,6 @@ from py_dvt_ate.instruments.transport import InstrumentServer from py_dvt_ate.simulation.physics.engine import PhysicsEngine from py_dvt_ate.simulation.server import ServerConfig, SimulationServer from py_dvt_ate.simulation.virtual.chamber import ThermalChamberSim -from py_dvt_ate.simulation.virtual.multimeter import MultimeterSim -from py_dvt_ate.simulation.virtual.power_supply import PowerSupplySim @pytest.mark.asyncio(loop_scope="function") diff --git a/tests/unit/test_physics_models.py b/tests/unit/test_physics_models.py index 3c6d5ac..da283b5 100644 --- a/tests/unit/test_physics_models.py +++ b/tests/unit/test_physics_models.py @@ -63,7 +63,7 @@ class TestThermalState: # Should not raise hash(state) - {state} # Can be added to a set + _ = {state} # Can be added to a set class TestElectricalState: