Skip to content

Commit 2c2e859

Browse files
Allow List[int] or int but not float or str (#1377)
* Allow List[int] or int but not float or str * fix pylint. * correct parameters texts ("to all" is really 1 bit/register). * mixin return type. * black. --------- Co-authored-by: jan Iversen <[email protected]>
1 parent b475772 commit 2c2e859

File tree

1 file changed

+46
-64
lines changed

1 file changed

+46
-64
lines changed

pymodbus/client/mixin.py

Lines changed: 46 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def execute(self, request: ModbusRequest) -> ModbusResponse:
5757

5858
def read_coils(
5959
self, address: int, count: int = 1, slave: int = 0, **kwargs: Any
60-
) -> pdu_bit_read.ReadCoilsResponse:
60+
) -> ModbusResponse:
6161
"""Read coils (code 0x01).
6262
6363
:param address: Start address to read from
@@ -72,7 +72,7 @@ def read_coils(
7272

7373
def read_discrete_inputs(
7474
self, address: int, count: int = 1, slave: int = 0, **kwargs: Any
75-
) -> pdu_bit_read.ReadDiscreteInputsResponse:
75+
) -> ModbusResponse:
7676
"""Read discrete inputs (code 0x02).
7777
7878
:param address: Start address to read from
@@ -87,7 +87,7 @@ def read_discrete_inputs(
8787

8888
def read_holding_registers(
8989
self, address: int, count: int = 1, slave: int = 0, **kwargs: Any
90-
) -> pdu_reg_read.ReadHoldingRegistersResponse:
90+
) -> ModbusResponse:
9191
"""Read holding registers (code 0x03).
9292
9393
:param address: Start address to read from
@@ -102,7 +102,7 @@ def read_holding_registers(
102102

103103
def read_input_registers(
104104
self, address: int, count: int = 1, slave: int = 0, **kwargs: Any
105-
) -> pdu_reg_read.ReadInputRegistersResponse:
105+
) -> ModbusResponse:
106106
"""Read input registers (code 0x04).
107107
108108
:param address: Start address to read from
@@ -117,7 +117,7 @@ def read_input_registers(
117117

118118
def write_coil(
119119
self, address: int, value: bool, slave: int = 0, **kwargs: Any
120-
) -> pdu_bit_write.WriteSingleCoilResponse:
120+
) -> ModbusResponse:
121121
"""Write single coil (code 0x05).
122122
123123
:param address: Address to write to
@@ -131,8 +131,8 @@ def write_coil(
131131
)
132132

133133
def write_register(
134-
self, address: int, value: Union[int, float, str], slave: int = 0, **kwargs: Any
135-
) -> pdu_req_write.WriteSingleRegisterResponse:
134+
self, address: int, value: int, slave: int = 0, **kwargs: Any
135+
) -> ModbusResponse:
136136
"""Write register (code 0x06).
137137
138138
:param address: Address to write to
@@ -145,9 +145,7 @@ def write_register(
145145
pdu_req_write.WriteSingleRegisterRequest(address, value, slave, **kwargs)
146146
)
147147

148-
def read_exception_status(
149-
self, slave: int = 0, **kwargs: Any
150-
) -> pdu_other_msg.ReadExceptionStatusResponse:
148+
def read_exception_status(self, slave: int = 0, **kwargs: Any) -> ModbusResponse:
151149
"""Read Exception Status (code 0x07).
152150
153151
:param slave: (optional) Modbus slave ID
@@ -158,7 +156,7 @@ def read_exception_status(
158156

159157
def diag_query_data(
160158
self, msg: bytearray, slave: int = 0, **kwargs: Any
161-
) -> pdu_diag.ReturnQueryDataResponse:
159+
) -> ModbusResponse:
162160
"""Diagnose query data (code 0x08 sub 0x00).
163161
164162
:param msg: Message to be returned
@@ -170,7 +168,7 @@ def diag_query_data(
170168

171169
def diag_restart_communication(
172170
self, toggle: bool, slave: int = 0, **kwargs: Any
173-
) -> pdu_diag.RestartCommunicationsOptionResponse:
171+
) -> ModbusResponse:
174172
"""Diagnose restart communication (code 0x08 sub 0x01).
175173
176174
:param toggle: True if toogled.
@@ -184,7 +182,7 @@ def diag_restart_communication(
184182

185183
def diag_read_diagnostic_register(
186184
self, slave: int = 0, **kwargs: Any
187-
) -> pdu_diag.ReturnDiagnosticRegisterResponse:
185+
) -> ModbusResponse:
188186
"""Diagnose read diagnostic register (code 0x08 sub 0x02).
189187
190188
:param slave: (optional) Modbus slave ID
@@ -195,7 +193,7 @@ def diag_read_diagnostic_register(
195193

196194
def diag_change_ascii_input_delimeter(
197195
self, slave: int = 0, **kwargs: Any
198-
) -> pdu_diag.ChangeAsciiInputDelimiterResponse:
196+
) -> ModbusResponse:
199197
"""Diagnose change ASCII input delimiter (code 0x08 sub 0x03).
200198
201199
:param slave: (optional) Modbus slave ID
@@ -204,9 +202,7 @@ def diag_change_ascii_input_delimeter(
204202
"""
205203
return self.execute(pdu_diag.ChangeAsciiInputDelimiterRequest(slave, **kwargs))
206204

207-
def diag_force_listen_only(
208-
self, slave: int = 0, **kwargs: Any
209-
) -> pdu_diag.ForceListenOnlyModeResponse:
205+
def diag_force_listen_only(self, slave: int = 0, **kwargs: Any) -> ModbusResponse:
210206
"""Diagnose force listen only (code 0x08 sub 0x04).
211207
212208
:param slave: (optional) Modbus slave ID
@@ -215,9 +211,7 @@ def diag_force_listen_only(
215211
"""
216212
return self.execute(pdu_diag.ForceListenOnlyModeRequest(slave, **kwargs))
217213

218-
def diag_clear_counters(
219-
self, slave: int = 0, **kwargs: Any
220-
) -> pdu_diag.ClearCountersResponse:
214+
def diag_clear_counters(self, slave: int = 0, **kwargs: Any) -> ModbusResponse:
221215
"""Diagnose clear counters (code 0x08 sub 0x0A).
222216
223217
:param slave: (optional) Modbus slave ID
@@ -228,7 +222,7 @@ def diag_clear_counters(
228222

229223
def diag_read_bus_message_count(
230224
self, slave: int = 0, **kwargs: Any
231-
) -> pdu_diag.ReturnBusMessageCountResponse:
225+
) -> ModbusResponse:
232226
"""Diagnose read bus message count (code 0x08 sub 0x0B).
233227
234228
:param slave: (optional) Modbus slave ID
@@ -239,7 +233,7 @@ def diag_read_bus_message_count(
239233

240234
def diag_read_bus_comm_error_count(
241235
self, slave: int = 0, **kwargs: Any
242-
) -> pdu_diag.ReturnBusCommunicationErrorCountResponse:
236+
) -> ModbusResponse:
243237
"""Diagnose read Bus Communication Error Count (code 0x08 sub 0x0C).
244238
245239
:param slave: (optional) Modbus slave ID
@@ -252,7 +246,7 @@ def diag_read_bus_comm_error_count(
252246

253247
def diag_read_bus_exception_error_count(
254248
self, slave: int = 0, **kwargs: Any
255-
) -> pdu_diag.ReturnBusExceptionErrorCountResponse:
249+
) -> ModbusResponse:
256250
"""Diagnose read Bus Exception Error Count (code 0x08 sub 0x0D).
257251
258252
:param slave: (optional) Modbus slave ID
@@ -265,7 +259,7 @@ def diag_read_bus_exception_error_count(
265259

266260
def diag_read_slave_message_count(
267261
self, slave: int = 0, **kwargs: Any
268-
) -> pdu_diag.ReturnSlaveMessageCountResponse:
262+
) -> ModbusResponse:
269263
"""Diagnose read Slave Message Count (code 0x08 sub 0x0E).
270264
271265
:param slave: (optional) Modbus slave ID
@@ -276,7 +270,7 @@ def diag_read_slave_message_count(
276270

277271
def diag_read_slave_no_response_count(
278272
self, slave: int = 0, **kwargs: Any
279-
) -> pdu_diag.ReturnSlaveNoResponseCountResponse:
273+
) -> ModbusResponse:
280274
"""Diagnose read Slave No Response Count (code 0x08 sub 0x0F).
281275
282276
:param slave: (optional) Modbus slave ID
@@ -287,7 +281,7 @@ def diag_read_slave_no_response_count(
287281

288282
def diag_read_slave_nak_count(
289283
self, slave: int = 0, **kwargs: Any
290-
) -> pdu_diag.ReturnSlaveNAKCountResponse:
284+
) -> ModbusResponse:
291285
"""Diagnose read Slave NAK Count (code 0x08 sub 0x10).
292286
293287
:param slave: (optional) Modbus slave ID
@@ -298,7 +292,7 @@ def diag_read_slave_nak_count(
298292

299293
def diag_read_slave_busy_count(
300294
self, slave: int = 0, **kwargs: Any
301-
) -> pdu_diag.ReturnSlaveBusyCountResponse:
295+
) -> ModbusResponse:
302296
"""Diagnose read Slave Busy Count (code 0x08 sub 0x11).
303297
304298
:param slave: (optional) Modbus slave ID
@@ -309,7 +303,7 @@ def diag_read_slave_busy_count(
309303

310304
def diag_read_bus_char_overrun_count(
311305
self, slave: int = 0, **kwargs: Any
312-
) -> pdu_diag.ReturnSlaveBusCharacterOverrunCountResponse:
306+
) -> ModbusResponse:
313307
"""Diagnose read Bus Character Overrun Count (code 0x08 sub 0x12).
314308
315309
:param slave: (optional) Modbus slave ID
@@ -322,7 +316,7 @@ def diag_read_bus_char_overrun_count(
322316

323317
def diag_read_iop_overrun_count(
324318
self, slave: int = 0, **kwargs: Any
325-
) -> pdu_diag.ReturnIopOverrunCountResponse:
319+
) -> ModbusResponse:
326320
"""Diagnose read Iop overrun count (code 0x08 sub 0x13).
327321
328322
:param slave: (optional) Modbus slave ID
@@ -333,7 +327,7 @@ def diag_read_iop_overrun_count(
333327

334328
def diag_clear_overrun_counter(
335329
self, slave: int = 0, **kwargs: Any
336-
) -> pdu_diag.ClearOverrunCountResponse:
330+
) -> ModbusResponse:
337331
"""Diagnose Clear Overrun Counter and Flag (code 0x08 sub 0x14).
338332
339333
:param slave: (optional) Modbus slave ID
@@ -344,7 +338,7 @@ def diag_clear_overrun_counter(
344338

345339
def diag_getclear_modbus_response(
346340
self, slave: int = 0, **kwargs: Any
347-
) -> pdu_diag.GetClearModbusPlusResponse:
341+
) -> ModbusResponse:
348342
"""Diagnose Get/Clear modbus plus (code 0x08 sub 0x15).
349343
350344
:param slave: (optional) Modbus slave ID
@@ -353,19 +347,15 @@ def diag_getclear_modbus_response(
353347
"""
354348
return self.execute(pdu_diag.GetClearModbusPlusRequest(slave, **kwargs))
355349

356-
def diag_get_comm_event_counter(
357-
self, **kwargs: Any
358-
) -> pdu_other_msg.GetCommEventCounterResponse:
350+
def diag_get_comm_event_counter(self, **kwargs: Any) -> ModbusResponse:
359351
"""Diagnose get event counter (code 0x0B).
360352
361353
:param kwargs: (optional) Experimental parameters.
362354
:raises ModbusException:
363355
"""
364356
return self.execute(pdu_other_msg.GetCommEventCounterRequest(**kwargs))
365357

366-
def diag_get_comm_event_log(
367-
self, **kwargs: Any
368-
) -> pdu_other_msg.GetCommEventLogResponse:
358+
def diag_get_comm_event_log(self, **kwargs: Any) -> ModbusResponse:
369359
"""Diagnose get event counter (code 0x0C).
370360
371361
:param kwargs: (optional) Experimental parameters.
@@ -374,12 +364,16 @@ def diag_get_comm_event_log(
374364
return self.execute(pdu_other_msg.GetCommEventLogRequest(**kwargs))
375365

376366
def write_coils(
377-
self, address: int, values: List[bool], slave: int = 0, **kwargs: Any
378-
) -> pdu_bit_write.WriteMultipleCoilsResponse:
367+
self,
368+
address: int,
369+
values: Union[List[bool], bool],
370+
slave: int = 0,
371+
**kwargs: Any
372+
) -> ModbusResponse:
379373
"""Write coils (code 0x0F).
380374
381375
:param address: Start address to write to
382-
:param values: List of booleans to write
376+
:param values: List of booleans to write, or a single boolean to write
383377
:param slave: (optional) Modbus slave ID
384378
:param kwargs: (optional) Experimental parameters.
385379
:raises ModbusException:
@@ -389,16 +383,12 @@ def write_coils(
389383
)
390384

391385
def write_registers(
392-
self,
393-
address: int,
394-
values: List[Union[int, float, str]],
395-
slave: int = 0,
396-
**kwargs: Any
397-
) -> pdu_req_write.WriteMultipleRegistersResponse:
386+
self, address: int, values: Union[List[int], int], slave: int = 0, **kwargs: Any
387+
) -> ModbusResponse:
398388
"""Write registers (code 0x10).
399389
400390
:param address: Start address to write to
401-
:param values: List of booleans to write
391+
:param values: List of values to write, or a single value to write
402392
:param slave: (optional) Modbus slave unit ID
403393
:param kwargs: (optional) Experimental parameters.
404394
:raises ModbusException:
@@ -409,9 +399,7 @@ def write_registers(
409399
)
410400
)
411401

412-
def report_slave_id(
413-
self, slave: int = 0, **kwargs: Any
414-
) -> pdu_other_msg.ReportSlaveIdResponse:
402+
def report_slave_id(self, slave: int = 0, **kwargs: Any) -> ModbusResponse:
415403
"""Report slave ID (code 0x11).
416404
417405
:param slave: (optional) Modbus slave unit ID
@@ -420,9 +408,7 @@ def report_slave_id(
420408
"""
421409
return self.execute(pdu_other_msg.ReportSlaveIdRequest(slave, **kwargs))
422410

423-
def read_file_record(
424-
self, records: List[Tuple], **kwargs: Any
425-
) -> pdu_file_msg.ReadFileRecordResponse:
411+
def read_file_record(self, records: List[Tuple], **kwargs: Any) -> ModbusResponse:
426412
"""Read file record (code 0x14).
427413
428414
:param records: List of (Reference type, File number, Record Number, Record Length)
@@ -431,9 +417,7 @@ def read_file_record(
431417
"""
432418
return self.execute(pdu_file_msg.ReadFileRecordRequest(records, **kwargs))
433419

434-
def write_file_record(
435-
self, records: List[Tuple], **kwargs: Any
436-
) -> pdu_file_msg.ReadFileRecordResponse:
420+
def write_file_record(self, records: List[Tuple], **kwargs: Any) -> ModbusResponse:
437421
"""Write file record (code 0x15).
438422
439423
:param records: List of (Reference type, File number, Record Number, Record Length)
@@ -448,7 +432,7 @@ def mask_write_register(
448432
and_mask: int = 0xFFFF,
449433
or_mask: int = 0x0000,
450434
**kwargs: Any
451-
) -> pdu_req_write.MaskWriteRegisterResponse:
435+
) -> ModbusResponse:
452436
"""Mask write register (code 0x16).
453437
454438
:param address: The mask pointer address (0x0000 to 0xffff)
@@ -466,16 +450,16 @@ def readwrite_registers(
466450
read_address: int = 0,
467451
read_count: int = 0,
468452
write_address: int = 0,
469-
values: int = 0,
453+
values: Union[List[int], int] = 0,
470454
slave: int = 0,
471455
**kwargs
472-
) -> pdu_reg_read.ReadWriteMultipleRegistersResponse:
456+
) -> ModbusResponse:
473457
"""Read/Write registers (code 0x17).
474458
475459
:param read_address: The address to start reading from
476460
:param read_count: The number of registers to read from address
477461
:param write_address: The address to start writing to
478-
:param values: The registers to write to the specified address
462+
:param values: List of values to write, or a single value to write
479463
:param slave: (optional) Modbus slave unit ID
480464
:param kwargs:
481465
:raises ModbusException:
@@ -491,9 +475,7 @@ def readwrite_registers(
491475
)
492476
)
493477

494-
def read_fifo_queue(
495-
self, address: int = 0x0000, **kwargs: Any
496-
) -> pdu_file_msg.ReadFifoQueueResponse:
478+
def read_fifo_queue(self, address: int = 0x0000, **kwargs: Any) -> ModbusResponse:
497479
"""Read FIFO queue (code 0x18).
498480
499481
:param address: The address to start reading from
@@ -506,7 +488,7 @@ def read_fifo_queue(
506488

507489
def read_device_information(
508490
self, read_code: int = None, object_id: int = 0x00, **kwargs: Any
509-
) -> pdu_mei.ReadDeviceInformationResponse:
491+
) -> ModbusResponse:
510492
"""Read FIFO queue (code 0x2B sub 0x0E).
511493
512494
:param read_code: The device information read code

0 commit comments

Comments
 (0)