Skip to content

Comments

Update pymodbus to 3.7.0#1042

Closed
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-pymodbus-1.3.2-to-3.7.0
Closed

Update pymodbus to 3.7.0#1042
pyup-bot wants to merge 1 commit intomasterfrom
pyup-update-pymodbus-1.3.2-to-3.7.0

Conversation

@pyup-bot
Copy link
Collaborator

@pyup-bot pyup-bot commented Aug 1, 2024

This PR updates pymodbus from 1.3.2 to 3.7.0.

Changelog

3.7.0

-----------------
- default slave changed to 1 from 0 (which is broadcast).
- broadcast_enable, retry_on_empty, no_resend_on_retry parameters removed.
- class method generate_ssl() added to TLS client (sync/async).
- removed certfile, keyfile, password from TLS client, please use generate_ssl()
- on_reconnect_callback() removed from clients (sync/async).
- on_connect_callback(true/false) added to async clients.
- binary framer no longer supported
- Framer.<type> renamed to FramerType.<type>
- PDU classes moved to pymodbus/pdu
- Simulator config custom actions kwargs -> parameters
- Non defined parameters (kwargs) no longer valid
- Drop support for Python 3.8 (its no longer tested, but will probably work)

3.6.9

-------------
* Remove python 3.8 from CI
* Log comm retries. (2220)
* Solve serial unrequested frame. (2219)
* test convert registers with 1234.... (2217)
* Fix writing to serial (rs485) on windows os. (2191)
* Remember to remove serial writer. (2209)
* Update client.rst (2199)
* Fix usage file names (2194)
* Show error if example is run without support files. (2189)
* Solve pylint error.
* Describe zero_mode in ModbusSlaveContext.__init__ (2187)
* Datastore will not return ExceptionResponse. (2175)
* call async datastore from modbus server (2144)
* Transaction id overrun.
* Add minimal devcontainer. (2172)
* Sphinx: do not turn warnings into errors.
* Fix usage of AsyncModbusTcpClient in client docs page (2169)
* Bump actions CI. (2166)
* Request/Response: change execute to be async method (2142)
* datastore: add async_setValues/getValues methods (2165)
* fixed kwargs not being expanded for actions on bit registers, adjusted tests to catch this issue (2161)
* Clean datastore setValues. (2145)
* modbus_server: call execute in a way that those can be either coroutines or normal methods (2139)
* Streamline message class. (2133)
* Fix decode for wrong mdap len.
* SOCKET/TLS framer using message decode(). (2129)
* ASCII framer using message decode() (2128)
* Add generate_ssl() to TLS client as helper. (2120)
* add _legacy_decoder to message rtu (2119)

3.6.8

-------------
* Allow socket exception response with wrong length

3.6.7

-------------
* Add lock to async requests, correct logging and length calc. (FIX, not on dev)
* test_simulator: use unused_tcp_port fixture (2141)
* streamline imports in Factory.py (2140)
* Secure testing is done with pymodbus in PR. (2136)
* Fix link to github in README (2134)
* Wildcard exception catch from pyserial. (2125)
* Problem with stale CI. (2117)
* Add connection exception to list of exceptions catpured in retries (2113)
* Move on_reconnect to client level (2111)
* Bump github stale. (2110)
* update package_test_tool (add 4 test scenarios) (2107)
* Bump dependencies. (2108)
* Cancel send if no connection. (2103)

3.6.6

-------------
* Solve transport close() as not inherited method. (2098)
* enable `mypy --check-untyped-defs` (2096)
* Add get_expected_response_length to transaction.
* Remove control encode in framersRemove control encode in framers. (2095)
* Bump codeql in CI to v3. (2093)
* Improve server types (2092)
* Remove pointless try/except (2091)
* Improve transport types (2090)
* Use explicit ValueError when called with incorrect function code (2089)
* update message tests (incorporate all old tests). (2088)
* Improve simulator type hints (2084)
* Cleanup dead resetFrame code (2082)
* integrate message.encode() into framer.buildPacket. (2062)
* Repair client close() (intern= is needed for ModbusProtocol). (2080)
* Updated Message_Parser example (2079)
* Fix 2069 use released repl from pypi (2077)
* Fix field encoding of Read File Record Response (2075)
* Improve simulator types (2076)
* Bump actions. (2071)

3.6.5

-------------
* Update framers to ease message integration (only decode/encode) (2064)
* Add negtive acknowledge to modbus exceptions (2065)
* add Message Socket/TLS and amend tests. (2061)
* Improve factory types (2060)
* ASCII. (2054)
* Improve datastore documentation (2056)
* Improve types for messages (2058)
* Improve payload types (2057)
* Reorganize datastore inheritance (2055)
* Added new message (framer) raw + 100%coverage. (2053)
* message classes, first step (1932)
* Use AbstractMethod in transport. (2051)
* A datastore for each slave. (2050)
* Only run coverage in ubuntu / python 3.12 (2049)
* Replace lambda with functools.partial in transport. (2047)
* Move self.loop in transport to init() (2046)
* Fix decoder bug (2045)
* Add support for server testing in package_test_tool. (2044)
* DictTransactionManager -> ModbusTransactionManager (2042)
* eliminate redundant server_close() (2041)
* Remove reactive server (REPL server). (2038)
* Improve types for client (2032)
* Improve HTTP server type hints (2035)
* eliminate asyncio.sleep() and replace time.sleep() with a timeout (2034)
* Use "new" inter_byte_timeout and is_open for pyserial (2031)
* Add more type hints to datastore (2028)
* Add more framer tests, solve a couple of framer problems. (2024)
* Rework slow tests (use NULL_MODEM) (1995)
* Allow slave=0 in serial communication. (2023)
* Client package test tool. (2022)
* Add REPL documentation back with links to REPL repo (2017)
* Move repl to a seperate repo (2009)
* solve more mypy issues with client (2013)
* solve more mypy issues with datastore (2010)
* Remove useless. (2011)
* streamline transport tests. (2004)
* Improve types for REPL (2007)
* Specify more types in base framer (2005)
* Move htmlcov -> build/cov (2003)
* Avoid pylint complain about lambda. (1999)
* Improve client types (1997)
* Fix setblocking call (1996)
* Actívate warnings in pytest. (1994)
* Add profile option to pytest. (1991)
* Simplify message tests (1990)
* Upgrade pylint and ruff (1989)
* Add first architecture document. (1988)
* Update CONTRIBUTING.rst.
* Return None for broadcast. (1987)
* Make ModbusClientMixin Generic to fix type issues for sync and async (1980)
* remove strange None default (1984)
* Fix incorrect bytearray type hint in diagnostics query (1983)
* Fix URL to CHANGELOG (1979)
* move server_hostname to be local in tls client. (1978)
* Parameter "strict" is and was only used for serial server/client. (1975)
* Removed unused parameter close_comm_on_error. (1974)

3.6.4

-------------
* Update datastore_simulator example with client (1967)
* Test and correct receiving more than one packet (1965)
* Remove unused FifoTransactionManager. (1966)
* Always set exclusive serial port access. (1964)
* Add server/client network stub, to allow test of network packets. (1963)
* Combine conftest to a central file (1962)
* Call on_reconnect_callback. (1959)
* Readd ModbusBaseClient to external API.
* Update README.rst
* minor fix for typo and consistency (1946)
* More coverage. (1947)
* Client coverage 100%. (1943)
* Run coverage in CI with % check of coverage. (1945)
* transport 100% coverage. (1941)
* contrib example: TCP drainage simulator with two devices (1936)
* Remove "pragma no cover". (1935)
* transport_serial -> serialtransport. (1933)
* Fix behavior after Exception response (1931)
* Correct expected length for udp sync client. (1930)

3.6.3

-------------
* solve Socket_framer problem with Exception response (1925)
* Allow socket frames to be split in multiple packets (1923)
* Reset frame for serial connections.
* Source address None not 0.0.0.0 for IPv6
* Missing Copyright in License file
* Correct wrong url to modbus protocol spec.
* Fix serial port in TestComm.

3.6.2

-------------
* Set documentation to v3.6.2.

3.6.1

-------------
* Solve pypi upload error.

3.6.0

-----------------
- framer= is an enum: pymodbus.Framer, but still accept a framer class

3.5.4

-------------
* Release errors (pyproject.toml changes). (1811)

3.5.3

-------------
* Simplify transport_serial (modbus use) (1808)
* Reduce transport_serial (1807)
* Change to pyproject.toml. (1805)
* fixes access to asyncio loop via loop property of SerialTransport (1804)
* Bump aiohttp to support python 3.12. (1802)
* README wrong links. (1801)
* CI caching. (1796)
* Solve pylint unhappy. (1799)
* Clean except last 7 days. (1798)
* Reconect_delay == 0, do not reconnect. (1795)
* Update simulator.py method docstring (1793)
* add type to isError. (1781)
* Allow repr(ModbusException) to return complete information (1779)
* Update docs. (1777)

3.5.2

-------------
* server tracer example. (1773)
* sync connect missing. (1772)
* simulator future problem. (1771)

3.5.1

-------------
* Always close socket on error (reset_sock). (1767)
* Revert reset_socket change.
* add close_comm_on_error to example.
* Test long term (HomeAsistant problem). (1765)
* Update ruff to 0.0.287 (1764)
* Remove references to ModbusSerialServer.start (1759) (1762)
* Readd test to get 100% coverage.
* transport: Don't raise a RunTimeError in ModbusProtocol.error_received() (1758)

3.5.0

-----------------
- Remove handler parameter from ModbusUdpServer
- Remove loop parameter from ModbusSerialServer
- Remove handler and allow_reuse_port from repl default config
- Static classes from the :code:`constants` module are now inheriting from :code:`enum.Enum` and using `UPPER_CASE` naming scheme, this affects:
- :code:`MoreData`
- :code:`DeviceInformation`
- :code:`ModbusPlusOperation`
- :code:`Endian`
- :code:`ModbusStatus`
- Async clients now accepts `no_resend_on_retry=True`, to not resend the request when retrying.
- ModbusSerialServer now accepts request_tracer=.

3.4.1

-------------
* Fix serial startup problems. (1701)
* pass source_address in tcp client. (1700)
* serial server use source_address[0]. (1699)
* Examples coverage nearly 100%. (1694)
* new async serial (1681)
* Docker is not supported (lack of maintainer). (1693)
* Forwarder write_coil --> write_coil. (1691)
* Change default source_address to (0.0.0.0, 502) (1690)
* Update ruff to 0.0.277 (1689)
* Fix dict comprehension (1687)
* Removed `requests` dependency from `contrib/explain.py`  (1688)
* Fix broken test (1685)
* Fix readme badges (1682)
* Bump aiohttp from 3.8.3 to 3.8.5 (1680)
* pygments from 2.14.0 to 2.15.0 (1677)

3.4.0

-----------------
- Modbus<x>Client .connect() returns True/False (connected or not)
- Modbue<x>Server handler=, allow_reuse_addr=, backlog= are no longer accepted
- ModbusTcpClient / AsyncModbusTcpClient no longer support unix path
- StartAsyncUnixServer / ModbusUnixServer removed (never worked on Windows)
- ModbusTlsServer reqclicert= is no longer accepted
- ModbusSerialServer auto_connect= is no longer accepted
- ModbusSimulatorServer.serve_forever(only_start=False) added to allow return

3.3.2

-------------
* Fix RemoteSlaveContext (1599)
* Change version follow PEP 440. (1609)
* Fix regression with REPL server not listening (1604)
* Fix write function codes (1598)
* Release corrections. (1586)

3.3.1

-------------
* transport fixes and 100% test coverage. (1580)
* Delay self.loop until connect(). (1579)
* Added mechanism to determine if server did not start cleanly (1539)
* Proof transport reconnect works. (1577)
* Fix non-shared block doc in config.rst. (1573)

3.3.0

-----------------
- ModbusTcpDiagClient is removed due to lack of support
- Clients have an optional parameter: on_reconnect_callback, Function that will be called just before a reconnection attempt.
- general parameter unit= -> slave=
- move SqlSlaveContext, RedisSlaveContext to examples/contrib (due to lack of maintenance)
- :code:`BinaryPayloadBuilder.to_string` was renamed to :code:`BinaryPayloadBuilder.encode`
- on_reconnect_callback for async clients works slightly different
- utilities/unpack_bitstring now expects an argument named `data` not `string`

3.2.2

-------------
* Add forgotten await

3.2.1

-------------
* add missing server.start(). (1443)
* Don't publish univeral (Python2 / Python 3) wheels (1423)
* Remove unneccesary custom LOG_LEVEL check (1424)
* Include py.typed in package (1422)

3.2.0

-----------------
- helper to convert values in mixin: convert_from_registers, convert_to_registers
- import pymodbus.version -> from pymodbus import __version__, __version_full__
- pymodbus.pymodbus_apply_logging_config(log_file_name="pymodbus.log") to enable file pymodbus_apply_logging_config
- pymodbus.pymodbus_apply_logging_config have default DEBUG, it not called root settings will be used.
- pymodbus/interfaces/IModbusDecoder removed.
- pymodbus/interfaces/IModbusFramer removed.
- pymodbus/interfaces/IModbusSlaveContext -> pymodbus/datastore/ModbusBaseSlaveContext.
- StartAsync<type>Server, removed defer_start argument, return is None.
instead of using defer_start instantiate the Modbus<type>Server directly.
- `ReturnSlaveNoReponseCountResponse` has been corrected to
`ReturnSlaveNoResponseCountResponse`
- Option `--modbus-config` for REPL server renamed to `--modbus-config-path`
- client.protocol.<something> --> client.<something>
- client.factory.<something> --> client.<something>

3.1.3

-------------
* Solve log problem in payload.
* Fix register type check for size bigger than 3 registers (6 bytes) (1323)
* Re-add SQL tests. (1329)
* Central logging. (1324)
* Skip sqlAlchemy test. (1325)
* Solve 1319 (1320)

3.1.2

-------------
* Update README.rst
* Correct README link. (1316)
* More direct readme links for REPL (1314)
* Add classifier for 3.11 (1312)
* Update README.rst (1313)
* Delete ModbusCommonBlock.png (1311)
* Add modbus standard to README. (1308)
* fix no auto reconnect after close/connect in TCPclient (1298)
* Update examples.rst (1307)
* var name clarification (1304)
* Bump external libraries. (1302)
* Reorganize documentation to make it easier accessible (1299)
* Simulator documentation (first version). (1296)
* Updated datastore Simulator. (1255)
* Update links to pydmodbus-dev (1291)
* Change riptideio to pymodbus-dev. (1292)
* 1258 Avoid showing unit as a seperate command line argument (1288)
* Solve docker cache problem. (1287)

3.1.1

-------------
* add missing server.start() (1282)
* small performance improvement on debug log (1279)
* Fix Unix sockets parsing (1281)
* client: Allow unix domain socket. (1274)
* transfer timeout to protocol object. (1275)
* Add ModbusUnixServer / StartAsyncUnixServer. (1273)
* Added return in AsyncModbusSerialClient.connect (1271)
* add connect() to the very first example (1270)
* Solve docker problem. (1268)
* Test stop of server task. (1256)

3.1.0

-----------------
- Added --host to client_* examples, to allow easier use.
- unit= in client calls are no longer converted to slave=, but raises a runtime exception.
- Added missing client calls (all standard request are not available as methods).
- client.mask_write_register() changed parameters.
- server classes no longer accept reuse_port= (the socket do not accept it)

3.0.2

-------------
* Add pygments as requirement for repl
* Update datastore remote to handle write requests (1166)
* Allow multiple servers. (1164)
* Fix typo. (1162)
* Transfer parms. to connected client. (1161)
* Repl enhancements 2 (1141)
* Server simulator with datastore with json data. (1157)
* Avoid unwanted reconnects (1154)
* Do not initialize framer twice. (1153)
* Allow timeout as float. (1152)
* Improve Docker Support (1145)
* Fix unreachable code in AsyncModbusTcpClient (1151)
* Fix type hints for port and timeout (1147)
* Start/stop multiple servers. (1138)
* Server/asyncio.py correct logging when disconnecting the socket (1135)
* Add Docker and container registry support  (1132)
* Removes undue reported error when forwarding (1134)
* Obey timeout parameter on connection (1131)
* Readme typos (1129)
* Clean noqa directive. (1125)
* Add isort and activate CI fail for black/isort. (1124)
* Update examples. (1117)
* Move logging configuration behind function call (1120)
* serial2TCP forwarding example (1116)
* Make serial import dynamic. (1114)
* Bugfix ModbusSerialServer setup so handler is called correctly. (1113)
* Clean configurations. (1111)

3.0.1

-------------
* Faulty release!

3.0.0

-----------------
Base for recording changes.

2.5.3

-------------
* Fix retries on tcp client failing randomly.
* Fix Asyncio client timeout arg not being used.
* Treat exception codes as valid responses
* Fix examples (modbus_payload)
* Add missing identity argument to async ModbusSerialServer

2.5.2

-------------
* Add kwarg `reset_socket` to control closing of the socket on read failures (set to `True` by default).
* Add `--reset-socket/--no-reset-socket` to REPL client.

2.5.1

-------------
* Bug fix TCP Repl server.
* Support multiple UID's with REPL server.
* Support serial for URL (sync serial client)
* Bug fix/enhancements, close socket connections only on empty or invalid response

2.5.0

-------------
* Support response types `stray` and `empty` in repl server.
* Minor updates in asyncio server.
* Update reactive server to send stray response of given length.
* Transaction manager updates on retries for empty and invalid packets.
* Test fixes for asyncio client and transaction manager.
* Fix sync client and processing of incomplete frames with rtu framers
* Support synchronous diagnostic client (TCP)
* Server updates (REPL and async)
* Handle Memory leak in sync servers due to socketserver memory leak
* Minor fix in documentations
* Travis fix for Mac OSX
* Disable unnecessary deprecation warning while using async clients.
* Use Github actions for builds in favor of travis.
* Documentation updates
* Disable `strict` mode by default.
* Fix `ReportSlaveIdRequest` request
* Sparse datablock initialization updates.
* Support REPL for modbus server (only python3 and asyncio)
* Fix REPL client for write requests
* Fix examples
* Asyncio server
* Asynchronous server (with custom datablock)
* Fix version info for servers
* Fix and enhancements to Tornado clients (seril and tcp)
* Fix and enhancements to Asyncio client and server
* Update Install instructions
* Synchronous client retry on empty and error enhancments
* Add new modbus state `RETRYING`
* Support runtime response manipulations for Servers
* Bug fixes with logging module in servers
* Asyncio modbus serial server support

2.4.0

-------------
* Support async moduls tls server/client
* Add local echo option
* Add exponential backoffs on retries.
* REPL - Support broadcasts.
* Fix framers using wrong unit address.
* Update documentation for serial_forwarder example
* Fix error with rtu client for `local_echo`
* Fix asyncio client not working with already running loop
* Fix passing serial arguments to async clients
* Support timeouts to break out of responspe await when server goes offline
* Misc updates and bugfixes.

2.3.0

-------------
* Support Modbus TLS (client / server)
* Distribute license with source
* BinaryPayloadDecoder/Encoder now supports float16 on python3.6 and above
* Fix asyncio UDP client/server
* Minor cosmetic updates
* Asyncio Server implementation (Python 3.7 and above only)
* Bug fix for DiagnosticStatusResponse when odd sized response is received
* Remove Pycrypto from dependencies and include cryptodome instead
* Remove `SIX` requirement pinned to exact version.
* Minor bug-fixes in documentations.

2.2.0

-------------
* Support Python 3.7
* Fix to task cancellations and CRC errors for async serial clients.
* Fix passing serial settings to asynchronous serial server.
* Fix `AttributeError` when setting `interCharTimeout` for serial clients.
* Provide an option to disable inter char timeouts with Modbus RTU.
* Add support to register custom requests in clients and server instances.
* Fix read timeout calculation in ModbusTCP.
* Fix SQLDbcontext always returning InvalidAddress error.
* Fix SQLDbcontext update failure
* Fix Binary payload example for endianess.
* Fix BinaryPayloadDecoder.to_coils and BinaryPayloadBuilder.fromCoils methods.
* Fix tornado async serial client `TypeError` while processing incoming packet.
* Fix erroneous CRC handling in Modbus RTU framer.
* Support broadcasting in Modbus Client and Servers (sync).
* Fix asyncio examples.
* Improved logging in Modbus Server .
* ReportSlaveIdRequest would fetch information from Device identity instead of hardcoded `Pymodbus`.
* Fix regression introduced in 2.2.0rc2 (Modbus sync client transaction failing)
* Minor update in factory.py, now server logs prints received request instead of only function code

2.1.0

-------------
* Fix Issues with Serial client where in partial data was read when the response size is unknown.
* Fix Infinite sleep loop in RTU Framer.
* Add pygments as extra requirement for repl.
* Add support to modify modbus client attributes via repl.
* Update modbus repl documentation.
* More verbose logs for repl.

2.0.1

-------------
* Fix unicode decoder error with BinaryPayloadDecoder in some platforms
* Avoid unnecessary import of deprecated modules with dependencies on twisted

2.0.0

-------------
* Async client implementation based on Tornado, Twisted and asyncio with backward compatibility support for twisted client.
* Allow reusing existing[running] asyncio loop when creating async client based on asyncio.
* Allow reusing address for Modbus TCP sync server.
* Add support to install tornado as extra requirement while installing pymodbus.
* Support Pymodbus REPL
* Add support to python 3.7.
* Bug fix and enhancements in examples.
* Async client implementation based on Tornado, Twisted and asyncio

1.5.2

-------------
* Fix serial client `is_socket_open` method

1.5.1

-------------
* Fix device information selectors
* Fixed behaviour of the MEI device information command as a server when an invalid object_id is provided by an external client.
* Add support for repeated MEI device information Object IDs (client/server)
* Added support for encoding device information when it requires more than one PDU to pack.
* Added REPR statements for all syncchronous clients
* Added `isError` method to exceptions, Any response received can be tested for success before proceeding.
* Add examples for MEI read device information request

1.5.0

-------------
* Improve transaction speeds for sync clients (RTU/ASCII), now retry on empty happens only when retry_on_empty kwarg is passed to client during intialization
* Fix tcp servers (sync/async) not processing requests with transaction id > 255
* Introduce new api to check if the received response is an error or not (response.isError())
* Move timing logic to framers so that irrespective of client, correct timing logics are followed.
* Move framers from transaction.py to respective modules
* Fix modbus payload builder and decoder
* Async servers can now have an option to defer `reactor.run()` when using `Start<Tcp/Serial/Udo>Server(...,defer_reactor_run=True)`
* Fix UDP client issue while handling MEI messages (ReadDeviceInformationRequest)
* Add expected response lengths for WriteMultipleCoilRequest and WriteMultipleRegisterRequest
* Fix _rtu_byte_count_pos for GetCommEventLogResponse
* Add support for repeated MEI device information Object IDs
* Fix struct errors while decoding stray response
* Modbus read retries works only when empty/no message is received
* Change test runner from nosetest to pytest
* Fix Misc examples

1.4.0

-------------
* Bug fix Modbus TCP client reading incomplete data
* Check for slave unit id before processing the request for serial clients
* Bug fix serial servers with Modbus Binary Framer
* Bug fix header size for ModbusBinaryFramer
* Bug fix payload decoder with endian Little
* Payload builder and decoder can now deal with the wordorder as well of 32/64 bit data.
* Support Database slave contexts (SqlStore and RedisStore)
* Custom handlers could be passed to Modbus TCP servers
* Asynchronous Server could now be stopped when running on a seperate thread (StopServer)
* Signal handlers on Asynchronous servers are now handled based on current thread
* Registers in Database datastore could now be read from remote clients
* Fix examples in contrib (message_parser.py/message_generator.py/remote_server_context)
* Add new example for SqlStore and RedisStore (db store slave context)
* Fix minor comaptibility issues with utilities.
* Update test requirements
* Update/Add new unit tests
* Move twisted requirements to extra so that it is not installed by default on pymodbus installtion
Links

@pyup-bot
Copy link
Collaborator Author

Closing this in favor of #1055

@pyup-bot pyup-bot closed this Aug 27, 2024
@slongwell slongwell deleted the pyup-update-pymodbus-1.3.2-to-3.7.0 branch August 27, 2024 11:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant