1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitHub,
6 substituteAll,
7 graphviz,
8 coreutils,
9 pkg-config,
10 setuptools,
11 pytest,
12}:
13
14buildPythonPackage rec {
15 pname = "pygraphviz";
16 version = "1.13";
17 pyproject = true;
18
19 disabled = pythonOlder "3.10";
20
21 src = fetchFromGitHub {
22 owner = "pygraphviz";
23 repo = "pygraphviz";
24 rev = "refs/tags/pygraphviz-${version}";
25 hash = "sha256-/H7eHgs3jtbgat8//1Y1S3iV5s0UBKW+J+zK+f8qGqI=";
26 };
27
28 patches = [
29 # pygraphviz depends on graphviz executables and wc being in PATH
30 (substituteAll {
31 src = ./path.patch;
32 path = lib.makeBinPath [
33 graphviz
34 coreutils
35 ];
36 })
37 ];
38
39 nativeBuildInputs = [
40 pkg-config
41 setuptools
42 ];
43
44 buildInputs = [ graphviz ];
45
46 nativeCheckInputs = [ pytest ];
47
48 checkPhase = ''
49 runHook preCheck
50 pytest --pyargs pygraphviz
51 runHook postCheck
52 '';
53
54 pythonImportsCheck = [ "pygraphviz" ];
55
56 meta = with lib; {
57 description = "Python interface to Graphviz graph drawing package";
58 homepage = "https://github.com/pygraphviz/pygraphviz";
59 license = licenses.bsd3;
60 maintainers = with maintainers; [
61 matthiasbeyer
62 dotlambda
63 ];
64 };
65}