From e0a9976ca7920e9dc41121ea010c204636ef8986 Mon Sep 17 00:00:00 2001 From: Kai Chappell Date: Wed, 3 Dec 2025 01:05:24 +0000 Subject: [PATCH] Fix TCP server response handling and add pandas-stubs - Always send a response (even empty) to prevent client timeouts - Add pandas-stubs to dev dependencies for mypy type checking - Server now sends newline-terminated response for all commands This fixes the mypy CI failure. Integration test failures still need investigation - likely due to event loop blocking when mixing sync/async. --- pyproject.toml | 1 + src/py_dvt_ate/instruments/transport/server.py | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index b6f6921..20c3176 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -38,6 +38,7 @@ dev = [ "ruff>=0.1", "mypy>=1.0", "types-PyYAML>=6.0", + "pandas-stubs>=2.0", ] [project.scripts] diff --git a/src/py_dvt_ate/instruments/transport/server.py b/src/py_dvt_ate/instruments/transport/server.py index dc1382c..94ee194 100644 --- a/src/py_dvt_ate/instruments/transport/server.py +++ b/src/py_dvt_ate/instruments/transport/server.py @@ -217,10 +217,13 @@ class InstrumentServer: response = instrument.process(command) # Send response with newline terminator + # Always send a response, even if empty (for acknowledgment) + writer.write(f"{response}\n".encode()) + await writer.drain() if response: - writer.write(f"{response}\n".encode()) - await writer.drain() logger.debug("Port %d sent: %s", port, response) + else: + logger.debug("Port %d sent: ", port) except asyncio.CancelledError: logger.debug("Client handler cancelled for port %d", port)