Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 13 additions & 5 deletions pymodbus/datastore/context.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,14 @@ class ModbusServerContext:
device contexts.
"""

def __init__(self, devices=None, single=True):
def __init__(
self,
devices: dict[int, ModbusDeviceContext | ModbusSimulatorContext]
| ModbusDeviceContext
| ModbusSimulatorContext
| None = None,
single=True,
) -> None:
"""Initialize a new instance of a modbus server context.

:param devices: A dictionary of client contexts
Expand All @@ -90,14 +97,15 @@ def __init__(self, devices=None, single=True):
_ = single
if not devices:
raise TypeError("devices= cannot be None")
self._devices: dict[int, ModbusDeviceContext]
self._devices: dict[int, ModbusDeviceContext | ModbusSimulatorContext]
self.simdevices: list[SimDevice] = []
if isinstance(devices, dict):
self._devices = devices
for dev_id, entry in devices.items():
if not isinstance(entry, ModbusSimulatorContext):
entry.id = dev_id
self.simdevices.append(entry)
simdevice = entry.simdevice
simdevice.id = dev_id
self.simdevices.append(simdevice)
else:
self._devices = {0: devices}
if not isinstance(devices, ModbusSimulatorContext):
Expand All @@ -107,7 +115,7 @@ def __init__(self, devices=None, single=True):
"Please convert to SimData/SimDevice.\n"
"Please read https://pymodbus.readthedocs.io/en/dev/source/upgrade_40.html#convert-to-simdata-simdevice")

def __get_device(self, device_id: int) -> ModbusDeviceContext:
def __get_device(self, device_id: int) -> ModbusDeviceContext | ModbusSimulatorContext:
"""Return device object."""
if device_id in self._devices:
return self._devices[device_id]
Expand Down
Loading