Skip to content

Commit 6df12fa

Browse files
authored
Update INSTALL and TODO. (#745)
1 parent 91573b6 commit 6df12fa

File tree

3 files changed

+98
-58
lines changed

3 files changed

+98
-58
lines changed

README.rst

Lines changed: 79 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22
PyModbus - A Python Modbus Stack
33
================================
44

5-
.. image:: https://travis-ci.org/riptideio/pymodbus.svg?branch=master
6-
:target: https://travis-ci.org/riptideio/pymodbus
5+
.. image:: https://github.com/riptideio/pymodbus/actions/workflows/ci.yml/badge.svg?branch=dev
76
.. image:: https://badges.gitter.im/Join%20Chat.svg
87
:target: https://gitter.im/pymodbus_dev/Lobby
98
.. image:: https://readthedocs.org/projects/pymodbus/badge/?version=latest
@@ -13,21 +12,35 @@ PyModbus - A Python Modbus Stack
1312
:target: http://pepy.tech/project/pymodbus
1413
:alt: Downloads
1514

15+
------------------------------------------------------------
16+
Supported versions
17+
------------------------------------------------------------
18+
19+
Version 2.5.3 is the last 2.x release and in in maintenance mode.
20+
21+
Version 3.0.0Dev3 is the current prerelease of 3.0.0
22+
1623
.. important::
17-
**Note This is a Major release and might affect your existing Async client implementation. Refer examples on how to use the latest async clients.**
24+
**Note 3.0.0 is a major release with a number of incompatible changes.
1825
1926
------------------------------------------------------------
2027
Summary
2128
------------------------------------------------------------
2229

23-
Pymodbus is a full Modbus protocol implementation using twisted/tornado/asyncio for its
24-
asynchronous communications core. It can also be used without any third
25-
party dependencies (aside from pyserial) if a more lightweight project is
26-
needed. Furthermore, it should work fine under any python version >= 3.7
27-
=======
28-
(including python 3+)
29-
>>>>>>> 3.0.0
30+
Pymodbus is a full Modbus protocol implementation using a synchronous or asynchronous core. The preferred mode for asynchronous communication is asyncio, however for the moment twisted and tornado are also supported (due to be removed or converted to a plugin in a later version).
31+
32+
Supported modbus communication modes:
33+
- tcp
34+
- rtuovertcp
35+
- udp
36+
- serial
37+
- tls
3038

39+
Pymodbus can be used without any third party dependencies (aside from pyserial) and are this a very lightweight projects.
40+
41+
It works on python >= 3.7
42+
43+
For the moment we test python version 3.7, 3.8 and 3.9.
3144

3245
------------------------------------------------------------
3346
Features
@@ -39,24 +52,25 @@ Client Features
3952

4053
* Full read/write protocol on discrete and register
4154
* Most of the extended protocol (diagnostic/file/pipe/setting/information)
42-
* TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
43-
* asynchronous(powered by twisted/tornado/asyncio) and synchronous versions
55+
* TCP, RTU-OVER-TCP, UDP, TLS, Serial ASCII, Serial RTU, and Serial Binary
56+
* asynchronous(powered by asyncio/twisted/tornado) and synchronous versions
4457
* Payload builder/decoder utilities
4558
* Pymodbus REPL for quick tests
59+
* Customable framer to allow for custom implementations
4660

4761
~~~~~~~~~~~~~~~~~~~~
4862
Server Features
4963
~~~~~~~~~~~~~~~~~~~~
5064

5165
* Can function as a fully implemented modbus server
52-
* TCP, UDP, Serial ASCII, Serial RTU, and Serial Binary
66+
* TCP, RTU-OVER-TCP, UDP, TLS, Serial ASCII, Serial RTU, and Serial Binary
5367
* asynchronous(powered by twisted) and synchronous versions
5468
* Full server control context (device information, counters, etc)
5569
* A number of backing contexts (database, redis, sqlite, a slave device)
5670

57-
------------------------------------------------------------
71+
^^^^^^^^^^^
5872
Use Cases
59-
------------------------------------------------------------
73+
^^^^^^^^^^^
6074

6175
Although most system administrators will find little need for a Modbus
6276
server on any modern hardware, they may find the need to query devices on
@@ -66,9 +80,10 @@ solutions.
6680

6781
Continuing, most monitoring software needs to be stress tested against
6882
hundreds or even thousands of devices (why this was originally written), but
69-
getting access to that many is unwieldy at best. The pymodbus server will allow
70-
a user to test as many devices as their base operating system will allow (*allow*
71-
in this case means how many Virtual IP addresses are allowed).
83+
getting access to that many is unwieldy at best.
84+
85+
The pymodbus server will allow a user to test as many devices as their
86+
base operating system will allow (*allow* in this case means how many Virtual IP addresses are allowed).
7287

7388
For more information please browse the project documentation:
7489

@@ -114,7 +129,7 @@ get lost in the noise: http://groups.google.com/group/pymodbus or
114129
at gitter: https://gitter.im/pymodbus_dev/Lobby
115130

116131
.. important::
117-
**Note For async clients, it is recommended to use `asyncio` as the async facilitator (Python 3.7 and above).**
132+
**Note For async clients, it is recommended to use `asyncio` as the async facilitator.**
118133
**If using tornado make sure the tornado version is `4.5.3`.Other versions of tornado can break the implementation**
119134

120135

@@ -141,6 +156,11 @@ permissions or a virtualenv currently running)::
141156
easy_install -U pymodbus
142157
pip install -U pymodbus
143158

159+
Or to install a specific release::
160+
161+
pip install -U pymodbus==X.Y.Z
162+
easy_install -U pymodbus==X.Y.Z
163+
144164
To Install pymodbus with twisted support run::
145165

146166
pip install -U pymodbus[twisted]
@@ -157,34 +177,57 @@ Otherwise you can pull the trunk source and install from there::
157177

158178
git clone git://github.com/bashwork/pymodbus.git
159179
cd pymodbus
180+
181+
To get latest release (for now v2.5.3 with python 2.7 support)::
182+
183+
git checkout master
184+
185+
To get bleeding edge::
186+
187+
git checkout dev
188+
189+
To get a specific version:
190+
191+
git checkout tags/vX.Y.Z -b vX.Y.Z
192+
193+
Then::
160194
python setup.py install
161195

162196
Either method will install all the required dependencies
163197
(at their appropriate versions) for your current python distribution.
164198

165-
If you would like to install pymodbus without the twisted dependency,
166-
simply edit the setup.py file before running easy_install and comment
167-
out all mentions of twisted. It should be noted that without twisted,
168-
one will only be able to run the synchronized version as the
169-
asynchronous versions uses twisted for its event loop.
199+
------------------------------------------------------------
200+
Repository structure
201+
------------------------------------------------------------
202+
The repository contains a number of important branches and tags.
203+
* **dev** is where all development happens, this branch is not always stable.
204+
* **master** is where are releases are kept.
205+
* All releases are tagged with **vX.Y.Z** (e.g. v2.5.3)
206+
* All prereleases are tagged with **vX.Y.ZrcQ** (e.g. v3.0.0.0rc1)
207+
208+
If a maintenance release of an old version is needed (e.g. v2.5.4),
209+
the release tag is used to create a branch with the same name,
210+
and maintenance development is merged here.
170211

171212
------------------------------------------------------------
172213
Current Work In Progress
173214
------------------------------------------------------------
174215

175-
Since I don't have access to any live modbus devices anymore
176-
it is a bit hard to test on live hardware. However, if you would
177-
like your device tested, I accept devices via mail or by IP address.
216+
The maintenance team is very small with limited capacity
217+
and few modbus devices.
218+
219+
However, if you would like your device tested,
220+
we accept devices via mail or by IP address.
178221

179-
That said, the current work mainly involves polishing the library as
180-
I get time doing such tasks as:
222+
That said, the current work mainly involves polishing the library and
223+
solving issues:
181224

182-
* Make PEP-8 compatible and flake8 ready
225+
* Get version 3.0.0 released
226+
* Make PEP-8 compatible and pylint, flake8, black and mypy ready
183227
* Fixing bugs/feature requests
184228
* Architecture documentation
185-
* Functional testing against any reference I can find
186-
* The remaining edges of the protocol (that I think no one uses)
187-
* Asynchronous clients with support to tornado , asyncio
229+
* Functional testing against any reference we can find
230+
* The remaining edges of the protocol (that we think no one uses)
188231

189232
------------------------------------------------------------
190233
Development Instructions
@@ -211,6 +254,9 @@ Contributing
211254
------------------------------------------------------------
212255
Just fork the repo and raise your PR against `dev` branch.
213256

257+
Here are some of the items waiting to be done:
258+
https://github.com/riptideio/pymodbus/blob/3.0.0/doc/TODO
259+
214260
------------------------------------------------------------
215261
License Information
216262
------------------------------------------------------------

doc/INSTALL

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Requirements
33

44
* Python 3.7 or later.
55
* Python Twisted or Tornado (if not using asyncio for async client and server),
6-
remark Twisted and Tornado are in maintenance mode, and might be either dropped or supplied as plugins in the future.
6+
remark Twisted and Tornado are in maintenance mode, and might either be dropped or supplied as plugins in the future.
77

88
* Pyserial
99

@@ -23,9 +23,16 @@ To install the package from pypi, use either easy_install or pip::
2323
pip install -U pymodbus
2424
easy_install -U pymodbus
2525

26+
Or to install a specific release::
27+
28+
pip install -U pymodbus==X.Y.Z
29+
easy_install -U pymodbus==X.Y.Z
30+
2631
As with other Python packages, the standard way of installing from source
2732
is (as root or administrator)::
2833

34+
https://github.com/riptideio/pymodbus.git
35+
git checkout master
2936
python setup.py install
3037

3138

@@ -67,7 +74,6 @@ Quality Tests
6774
There are a number of quality tests that can be run against the code base
6875
aside from unit tests::
6976

70-
python setup.py scan_2to3 # run a python3 compatability test
7177
python setup.py pep8 # run a pop8 standards test
7278
python setup.py lint # run a lint test
7379

doc/TODO

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,46 +8,34 @@ General
88
- maybe just for sync
99
- finish clients (and interface)
1010
- add all modbus control into server
11-
- add a frontend plugin system
12-
- web frontend (bottle)
13-
- twisted trial / twisted logging (for functional async tests)
14-
- twisted serial server
15-
- add daemonize code / init.d / config (or just use twisted)
1611
- add correct transaction handling (retry, fail, etc)
1712
- finish remaining functions
13+
- update code to satisfy pylint
14+
- update code to satisfy black
15+
- update code to satisfy flake8
16+
- update code to satisfy mypy
17+
- convert tornado to a plugin
18+
- convert twister to a plugin
19+
- get coverage > 98%
20+
- clean raise to be at frame level
1821

1922
---------------------------------------------------------------------------
2023
Protocols
2124
---------------------------------------------------------------------------
2225

2326
- Serial RTU -> just use sleep wait
24-
- Test serial against devices (and virtual tty)
27+
- Write unittest for serial with virtual tty
28+
- Example with custom framer based on standard framer
2529

2630
---------------------------------------------------------------------------
2731
Utilities
2832
---------------------------------------------------------------------------
2933

30-
- (tcp/serial) forwarder
31-
- (udp/serial) forwarder
34+
- (tcp/udp/serial) forwarder
3235

3336
---------------------------------------------------------------------------
3437
Client
3538
---------------------------------------------------------------------------
3639

3740
- Rework transaction flow and response data
3841

39-
---------------------------------------------------------------------------
40-
Tools
41-
---------------------------------------------------------------------------
42-
43-
- add functional tests
44-
- add tk and wx gui frontdends (with editable data tables)
45-
- rpm and deb packages (documentation)
46-
47-
---------------------------------------------------------------------------
48-
Scratch
49-
---------------------------------------------------------------------------
50-
from twisted.python import log
51-
observer = log.PythonLoggingObserver()
52-
observer.start()
53-

0 commit comments

Comments
 (0)