1{ lib
2, aiohttp
3, buildPythonPackage
4, click
5, fetchFromGitHub
6, mock
7, prompt-toolkit
8, pygments
9, pyserial
10, pyserial-asyncio
11, pytest-asyncio
12, pytest-rerunfailures
13, pytest-xdist
14, pytestCheckHook
15, redis
16, sqlalchemy
17, tornado
18, twisted
19}:
20
21buildPythonPackage rec {
22 pname = "pymodbus";
23 version = "3.1.3";
24 format = "setuptools";
25
26 src = fetchFromGitHub {
27 owner = "pymodbus-dev";
28 repo = pname;
29 rev = "refs/tags/v${version}";
30 hash = "sha256-GHyDlt046v4KP9KQRnXH6F+3ikoCjbhVHEQuSdm99a8=";
31 };
32
33 # Twisted asynchronous version is not supported due to a missing dependency
34 propagatedBuildInputs = [
35 aiohttp
36 click
37 prompt-toolkit
38 pygments
39 pyserial
40 pyserial-asyncio
41 tornado
42 ];
43
44 nativeCheckInputs = [
45 mock
46 pytest-asyncio
47 pytest-rerunfailures
48 pytest-xdist
49 pytestCheckHook
50 redis
51 sqlalchemy
52 twisted
53 ];
54
55 pytestFlagsArray = [
56 "--reruns" "3" # Racy socket tests
57 ];
58
59 pythonImportsCheck = [ "pymodbus" ];
60
61 meta = with lib; {
62 description = "Python implementation of the Modbus protocol";
63 longDescription = ''
64 Pymodbus is a full Modbus protocol implementation using twisted,
65 torndo or asyncio for its asynchronous communications core. It can
66 also be used without any third party dependencies if a more
67 lightweight project is needed.
68 '';
69 homepage = "https://github.com/pymodbus-dev/pymodbus";
70 changelog = "https://github.com/pymodbus-dev/pymodbus/releases/tag/v${version}";
71 license = with licenses; [ bsd3 ];
72 maintainers = with maintainers; [ fab ];
73 };
74}