Skip to content

Commit 64a4f7b

Browse files
authored
Clean mixin execute (#1366)
Clean mixin execute.
1 parent d2c7c77 commit 64a4f7b

File tree

2 files changed

+14
-45
lines changed

2 files changed

+14
-45
lines changed

pymodbus/client/mixin.py

Lines changed: 2 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import pymodbus.other_message as pdu_other_msg
1010
import pymodbus.register_read_message as pdu_reg_read
1111
import pymodbus.register_write_message as pdu_req_write
12+
from pymodbus.exceptions import ModbusException
1213
from pymodbus.pdu import ModbusRequest, ModbusResponse
1314

1415

@@ -45,19 +46,14 @@ def execute(self, request: ModbusRequest) -> ModbusResponse:
4546
"""Execute request (code ???).
4647
4748
:param request: Request to send
48-
:returns: A deferred response handle
4949
:raises ModbusException:
5050
5151
Call with custom function codes.
5252
5353
.. tip::
5454
Response is not interpreted.
5555
"""
56-
57-
# The implementation of this method is only used in test, to secure that
58-
# the methods uses the correct PDU.
59-
# execute() will be overwritten in the transport class.
60-
return request
56+
raise ModbusException("Pymodbus internal ERROR")
6157

6258
def read_coils(
6359
self, address: int, count: int = 1, slave: int = 0, **kwargs: Any
@@ -68,7 +64,6 @@ def read_coils(
6864
:param count: (optional) Number of coils to read
6965
:param slave: (optional) Modbus slave ID
7066
:param kwargs: (optional) Experimental parameters.
71-
:returns: A deferred response handle
7267
:raises ModbusException:
7368
"""
7469
return self.execute(
@@ -84,7 +79,6 @@ def read_discrete_inputs(
8479
:param count: (optional) Number of coils to read
8580
:param slave: (optional) Modbus slave ID
8681
:param kwargs: (optional) Experimental parameters.
87-
:returns: A deferred response handle
8882
:raises ModbusException:
8983
"""
9084
return self.execute(
@@ -100,7 +94,6 @@ def read_holding_registers(
10094
:param count: (optional) Number of coils to read
10195
:param slave: (optional) Modbus slave ID
10296
:param kwargs: (optional) Experimental parameters.
103-
:returns: A deferred response handle
10497
:raises ModbusException:
10598
"""
10699
return self.execute(
@@ -116,7 +109,6 @@ def read_input_registers(
116109
:param count: (optional) Number of coils to read
117110
:param slave: (optional) Modbus slave ID
118111
:param kwargs: (optional) Experimental parameters.
119-
:returns: A deferred response handle
120112
:raises ModbusException:
121113
"""
122114
return self.execute(
@@ -132,7 +124,6 @@ def write_coil(
132124
:param value: Boolean to write
133125
:param slave: (optional) Modbus slave ID
134126
:param kwargs: (optional) Experimental parameters.
135-
:returns: A deferred response handle
136127
:raises ModbusException:
137128
"""
138129
return self.execute(
@@ -148,7 +139,6 @@ def write_register(
148139
:param value: Value to write
149140
:param slave: (optional) Modbus slave ID
150141
:param kwargs: (optional) Experimental parameters.
151-
:returns: A deferred response handle
152142
:raises ModbusException:
153143
"""
154144
return self.execute(
@@ -162,7 +152,6 @@ def read_exception_status(
162152
163153
:param slave: (optional) Modbus slave ID
164154
:param kwargs: (optional) Experimental parameters.
165-
:returns: A deferred response handle
166155
:raises ModbusException:
167156
"""
168157
return self.execute(pdu_other_msg.ReadExceptionStatusRequest(slave, **kwargs))
@@ -175,7 +164,6 @@ def diag_query_data(
175164
:param msg: Message to be returned
176165
:param slave: (optional) Modbus slave ID
177166
:param kwargs: (optional) Experimental parameters.
178-
:returns: A deferred response handle
179167
:raises ModbusException:
180168
"""
181169
return self.execute(pdu_diag.ReturnQueryDataRequest(msg, slave, **kwargs))
@@ -188,7 +176,6 @@ def diag_restart_communication(
188176
:param toggle: True if toogled.
189177
:param slave: (optional) Modbus slave ID
190178
:param kwargs: (optional) Experimental parameters.
191-
:returns: A deferred response handle
192179
:raises ModbusException:
193180
"""
194181
return self.execute(
@@ -202,7 +189,6 @@ def diag_read_diagnostic_register(
202189
203190
:param slave: (optional) Modbus slave ID
204191
:param kwargs: (optional) Experimental parameters.
205-
:returns: A deferred response handle
206192
:raises ModbusException:
207193
"""
208194
return self.execute(pdu_diag.ReturnDiagnosticRegisterRequest(slave, **kwargs))
@@ -214,7 +200,6 @@ def diag_change_ascii_input_delimeter(
214200
215201
:param slave: (optional) Modbus slave ID
216202
:param kwargs: (optional) Experimental parameters.
217-
:returns: A deferred response handle
218203
:raises ModbusException:
219204
"""
220205
return self.execute(pdu_diag.ChangeAsciiInputDelimiterRequest(slave, **kwargs))
@@ -226,7 +211,6 @@ def diag_force_listen_only(
226211
227212
:param slave: (optional) Modbus slave ID
228213
:param kwargs: (optional) Experimental parameters.
229-
:returns: A deferred response handle
230214
:raises ModbusException:
231215
"""
232216
return self.execute(pdu_diag.ForceListenOnlyModeRequest(slave, **kwargs))
@@ -238,7 +222,6 @@ def diag_clear_counters(
238222
239223
:param slave: (optional) Modbus slave ID
240224
:param kwargs: (optional) Experimental parameters.
241-
:returns: A deferred response handle
242225
:raises ModbusException:
243226
"""
244227
return self.execute(pdu_diag.ClearCountersRequest(slave, **kwargs))
@@ -250,7 +233,6 @@ def diag_read_bus_message_count(
250233
251234
:param slave: (optional) Modbus slave ID
252235
:param kwargs: (optional) Experimental parameters.
253-
:returns: A deferred response handle
254236
:raises ModbusException:
255237
"""
256238
return self.execute(pdu_diag.ReturnBusMessageCountRequest(slave, **kwargs))
@@ -262,7 +244,6 @@ def diag_read_bus_comm_error_count(
262244
263245
:param slave: (optional) Modbus slave ID
264246
:param kwargs: (optional) Experimental parameters.
265-
:returns: A deferred response handle
266247
:raises ModbusException:
267248
"""
268249
return self.execute(
@@ -276,7 +257,6 @@ def diag_read_bus_exception_error_count(
276257
277258
:param slave: (optional) Modbus slave ID
278259
:param kwargs: (optional) Experimental parameters.
279-
:returns: A deferred response handle
280260
:raises ModbusException:
281261
"""
282262
return self.execute(
@@ -290,7 +270,6 @@ def diag_read_slave_message_count(
290270
291271
:param slave: (optional) Modbus slave ID
292272
:param kwargs: (optional) Experimental parameters.
293-
:returns: A deferred response handle
294273
:raises ModbusException:
295274
"""
296275
return self.execute(pdu_diag.ReturnSlaveMessageCountRequest(slave, **kwargs))
@@ -302,7 +281,6 @@ def diag_read_slave_no_response_count(
302281
303282
:param slave: (optional) Modbus slave ID
304283
:param kwargs: (optional) Experimental parameters.
305-
:returns: A deferred response handle
306284
:raises ModbusException:
307285
"""
308286
return self.execute(pdu_diag.ReturnSlaveNoResponseCountRequest(slave, **kwargs))
@@ -314,7 +292,6 @@ def diag_read_slave_nak_count(
314292
315293
:param slave: (optional) Modbus slave ID
316294
:param kwargs: (optional) Experimental parameters.
317-
:returns: A deferred response handle
318295
:raises ModbusException:
319296
"""
320297
return self.execute(pdu_diag.ReturnSlaveNAKCountRequest(slave, **kwargs))
@@ -326,7 +303,6 @@ def diag_read_slave_busy_count(
326303
327304
:param slave: (optional) Modbus slave ID
328305
:param kwargs: (optional) Experimental parameters.
329-
:returns: A deferred response handle
330306
:raises ModbusException:
331307
"""
332308
return self.execute(pdu_diag.ReturnSlaveBusyCountRequest(slave, **kwargs))
@@ -338,7 +314,6 @@ def diag_read_bus_char_overrun_count(
338314
339315
:param slave: (optional) Modbus slave ID
340316
:param kwargs: (optional) Experimental parameters.
341-
:returns: A deferred response handle
342317
:raises ModbusException:
343318
"""
344319
return self.execute(
@@ -352,7 +327,6 @@ def diag_read_iop_overrun_count(
352327
353328
:param slave: (optional) Modbus slave ID
354329
:param kwargs: (optional) Experimental parameters.
355-
:returns: A deferred response handle
356330
:raises ModbusException:
357331
"""
358332
return self.execute(pdu_diag.ReturnIopOverrunCountRequest(slave, **kwargs))
@@ -364,7 +338,6 @@ def diag_clear_overrun_counter(
364338
365339
:param slave: (optional) Modbus slave ID
366340
:param kwargs: (optional) Experimental parameters.
367-
:returns: A deferred response handle
368341
:raises ModbusException:
369342
"""
370343
return self.execute(pdu_diag.ClearOverrunCountRequest(slave, **kwargs))
@@ -376,7 +349,6 @@ def diag_getclear_modbus_response(
376349
377350
:param slave: (optional) Modbus slave ID
378351
:param kwargs: (optional) Experimental parameters.
379-
:returns: A deferred response handle
380352
:raises ModbusException:
381353
"""
382354
return self.execute(pdu_diag.GetClearModbusPlusRequest(slave, **kwargs))
@@ -387,7 +359,6 @@ def diag_get_comm_event_counter(
387359
"""Diagnose get event counter (code 0x0B).
388360
389361
:param kwargs: (optional) Experimental parameters.
390-
:returns: A deferred response handle
391362
:raises ModbusException:
392363
"""
393364
return self.execute(pdu_other_msg.GetCommEventCounterRequest(**kwargs))
@@ -398,7 +369,6 @@ def diag_get_comm_event_log(
398369
"""Diagnose get event counter (code 0x0C).
399370
400371
:param kwargs: (optional) Experimental parameters.
401-
:returns: A deferred response handle
402372
:raises ModbusException:
403373
"""
404374
return self.execute(pdu_other_msg.GetCommEventLogRequest(**kwargs))
@@ -412,7 +382,6 @@ def write_coils(
412382
:param values: List of booleans to write
413383
:param slave: (optional) Modbus slave ID
414384
:param kwargs: (optional) Experimental parameters.
415-
:returns: A deferred response handle
416385
:raises ModbusException:
417386
"""
418387
return self.execute(
@@ -432,7 +401,6 @@ def write_registers(
432401
:param values: List of booleans to write
433402
:param slave: (optional) Modbus slave unit ID
434403
:param kwargs: (optional) Experimental parameters.
435-
:returns: A deferred response handle
436404
:raises ModbusException:
437405
"""
438406
return self.execute(
@@ -448,7 +416,6 @@ def report_slave_id(
448416
449417
:param slave: (optional) Modbus slave unit ID
450418
:param kwargs: (optional) Experimental parameters.
451-
:returns: A deferred response handle
452419
:raises ModbusException:
453420
"""
454421
return self.execute(pdu_other_msg.ReportSlaveIdRequest(slave, **kwargs))
@@ -460,7 +427,6 @@ def read_file_record(
460427
461428
:param records: List of (Reference type, File number, Record Number, Record Length)
462429
:param kwargs: (optional) Experimental parameters.
463-
:returns: A deferred response handle
464430
:raises ModbusException:
465431
"""
466432
return self.execute(pdu_file_msg.ReadFileRecordRequest(records, **kwargs))
@@ -472,7 +438,6 @@ def write_file_record(
472438
473439
:param records: List of (Reference type, File number, Record Number, Record Length)
474440
:param kwargs: (optional) Experimental parameters.
475-
:returns: A deferred response handle
476441
:raises ModbusException:
477442
"""
478443
return self.execute(pdu_file_msg.WriteFileRecordRequest(records, **kwargs))
@@ -490,7 +455,6 @@ def mask_write_register(
490455
:param and_mask: The and bitmask to apply to the register address
491456
:param or_mask: The or bitmask to apply to the register address
492457
:param kwargs: (optional) Experimental parameters.
493-
:returns: A deferred response handle
494458
:raises ModbusException:
495459
"""
496460
return self.execute(
@@ -514,7 +478,6 @@ def readwrite_registers(
514478
:param values: The registers to write to the specified address
515479
:param slave: (optional) Modbus slave unit ID
516480
:param kwargs:
517-
:returns: A deferred response handle
518481
:raises ModbusException:
519482
"""
520483
return self.execute(
@@ -535,7 +498,6 @@ def read_fifo_queue(
535498
536499
:param address: The address to start reading from
537500
:param kwargs:
538-
:returns: A deferred response handle
539501
:raises ModbusException:
540502
"""
541503
return self.execute(pdu_file_msg.ReadFifoQueueRequest(address, **kwargs))
@@ -550,7 +512,6 @@ def read_device_information(
550512
:param read_code: The device information read code
551513
:param object_id: The object to read from
552514
:param kwargs:
553-
:returns: A deferred response handle
554515
:raises ModbusException:
555516
"""
556517
return self.execute(

test/test_client.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838
],
3939
)
4040
@pytest.mark.parametrize(
41-
"method, arg, response",
41+
"method, arg, pdu_request",
4242
[
4343
("read_coils", 1, pdu_bit_read.ReadCoilsRequest),
4444
("read_discrete_inputs", 1, pdu_bit_read.ReadDiscreteInputsRequest),
@@ -90,10 +90,18 @@
9090
("mask_write_register", 1, pdu_req_write.MaskWriteRegisterRequest),
9191
],
9292
)
93-
def test_client_mixin(arglist, method, arg, response):
93+
def test_client_mixin(arglist, method, arg, pdu_request):
9494
"""Test mixin responses."""
95-
rr = getattr(ModbusClientMixin(), method)(**arglist[arg])
96-
assert isinstance(rr, response)
95+
pdu_to_call = None
96+
97+
def fake_execute(_self, request):
98+
"""Set PDU request."""
99+
nonlocal pdu_to_call
100+
pdu_to_call = request
101+
102+
with mock.patch.object(ModbusClientMixin, "execute", fake_execute):
103+
getattr(ModbusClientMixin(), method)(**arglist[arg])
104+
assert isinstance(pdu_to_call, pdu_request)
97105

98106

99107
@pytest.mark.xdist_group(name="client")

0 commit comments

Comments
 (0)