Skip to content

Commit ff77d3a

Browse files
committed
Eliminate last implicit optional!
1 parent 4dabc21 commit ff77d3a

File tree

3 files changed

+19
-9
lines changed

3 files changed

+19
-9
lines changed

pymodbus/transport/transport.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,11 @@ async def transport_listen(self) -> bool:
266266
self.loop = asyncio.get_running_loop()
267267
self.is_closing = False
268268
try:
269-
self.transport = await self.call_create()
270-
if isinstance(self.transport, tuple):
271-
self.transport = self.transport[0]
269+
_transport = await self.call_create()
270+
if isinstance(_transport, tuple):
271+
self.transport = _transport[0]
272+
else:
273+
self.transport = _transport
272274
except OSError as exc:
273275
Log.warning("Failed to start server {}", exc)
274276
# self.transport_close(intern=True)
@@ -435,7 +437,7 @@ def transport_close(self, intern: bool = False, reconnect: bool = False) -> None
435437

436438
def reset_delay(self) -> None:
437439
"""Reset wait time before next reconnect to minimal period."""
438-
self.reconnect_delay_current = self.comm_params.reconnect_delay
440+
self.reconnect_delay_current = self.comm_params.reconnect_delay or 0
439441

440442
def is_active(self) -> bool:
441443
"""Return true if connected/listening."""
@@ -469,6 +471,12 @@ def handle_new_connection(self) -> ModbusProtocol:
469471

470472
async def do_reconnect(self) -> None:
471473
"""Handle reconnect as a task."""
474+
if not (
475+
self.comm_params.reconnect_delay and self.comm_params.reconnect_delay_max
476+
):
477+
raise AssertionError(
478+
"do_reconnect should not be called if reconnect_delay is None"
479+
)
472480
try:
473481
self.reconnect_delay_current = self.comm_params.reconnect_delay
474482
while True:
@@ -519,7 +527,7 @@ def __init__(self, protocol: ModbusProtocol, listen: int | None = None) -> None:
519527
asyncio.DatagramTransport.__init__(self)
520528
asyncio.Transport.__init__(self)
521529
self.protocol: ModbusProtocol = protocol
522-
self.other_modem: NullModem = None
530+
self.other_modem: NullModem | None = None
523531
self.listen = listen
524532
self.manipulator: Callable[[bytes], list[bytes]] | None = None
525533
self._is_closing = False
@@ -605,6 +613,8 @@ def sendto(self, data: bytes, _addr: Any = None) -> None:
605613

606614
def write(self, data: bytes) -> None:
607615
"""Send data."""
616+
if not self.other_modem:
617+
raise AssertionError("Missing other_modem")
608618
if not self.manipulator:
609619
self.other_modem.protocol.data_received(data)
610620
return

pymodbus/transport/transport_serial.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def __init__(self, loop, protocol, *args, **kwargs) -> None:
2020
super().__init__()
2121
self.async_loop = loop
2222
self._protocol: asyncio.BaseProtocol = protocol
23-
self.sync_serial = serial.serial_for_url(*args, **kwargs)
23+
self.sync_serial: serial.Serial | None = serial.serial_for_url(*args, **kwargs)
2424
self._write_buffer: list[bytes] = []
2525
self.poll_task: asyncio.Task | None = None
2626
self._poll_wait_time = 0.0005
@@ -59,12 +59,12 @@ def close(self, exc: Exception | None = None) -> None:
5959
def write(self, data) -> None:
6060
"""Write some data to the transport."""
6161
self._write_buffer.append(data)
62-
if not self.poll_task:
62+
if not self.poll_task and self.sync_serial:
6363
self.async_loop.add_writer(self.sync_serial.fileno(), self._write_ready)
6464

6565
def flush(self) -> None:
6666
"""Clear output buffer and stops any more data being written."""
67-
if not self.poll_task:
67+
if not self.poll_task and self.sync_serial:
6868
self.async_loop.remove_writer(self.sync_serial.fileno())
6969
self._write_buffer.clear()
7070

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ overgeneral-exceptions = "builtins.Exception"
187187
bad-functions = "map,input"
188188

189189
[tool.mypy]
190-
strict_optional = false
190+
strict_optional = true
191191
show_error_codes = true
192192
local_partial_types = true
193193
strict_equality = true

0 commit comments

Comments
 (0)