1{
2 lib,
3 buildPythonPackage,
4 snap7,
5 fetchFromGitHub,
6 setuptools,
7 pythonOlder,
8}:
9
10buildPythonPackage rec {
11 pname = "python-snap7";
12 version = "2.0.2";
13 pyproject = true;
14
15 disabled = pythonOlder "3.6";
16
17 src = fetchFromGitHub {
18 owner = "gijzelaerr";
19 repo = "python-snap7";
20 tag = version;
21 hash = "sha256-mcdzgR0z2P5inK9Q+ZQhP5H8vZSaPbRCSEnt+wzG+ro=";
22 };
23
24 prePatch = ''
25 substituteInPlace snap7/common.py \
26 --replace "lib_location = None" "lib_location = '${snap7}/lib/libsnap7.so'"
27 '';
28
29 build-system = [ setuptools ];
30
31 # Tests require root privileges to open privileged ports
32 doCheck = false;
33
34 pythonImportsCheck = [
35 "snap7"
36 "snap7.util"
37 ];
38
39 meta = with lib; {
40 description = "Python wrapper for the snap7 PLC communication library";
41 mainProgram = "snap7-server";
42 homepage = "https://github.com/gijzelaerr/python-snap7";
43 license = licenses.mit;
44 maintainers = with maintainers; [ freezeboy ];
45 };
46}