1{ lib
2, stdenv
3, buildPythonPackage
4, fetchPypi
5, pythonAtLeast
6, six
7, pygraphviz
8, pytestCheckHook
9, mock
10, graphviz
11, pycodestyle
12, fontconfig
13}:
14
15buildPythonPackage rec {
16 pname = "transitions";
17 version = "0.9.0";
18 format = "setuptools";
19
20 src = fetchPypi {
21 inherit pname version;
22 hash = "sha256-L1TRG9siV3nX5ykBHpOp+3F2aM49xl+NT1pde6L0jhA=";
23 };
24
25 propagatedBuildInputs = [
26 six
27 pygraphviz # optional
28 ];
29
30 nativeCheckInputs = [
31 pytestCheckHook
32 mock
33 graphviz
34 pycodestyle
35 ];
36
37 preCheck = ''
38 export FONTCONFIG_FILE=${fontconfig.out}/etc/fonts/fonts.conf
39 export HOME=$TMPDIR
40 '';
41
42 # upstream issue https://github.com/pygraphviz/pygraphviz/issues/441
43 pytestFlagsArray = lib.optionals stdenv.isDarwin [
44 "--deselect=tests/test_pygraphviz.py::PygraphvizTest::test_binary_stream"
45 "--deselect=tests/test_pygraphviz.py::PygraphvizTest::test_diagram"
46 "--deselect=tests/test_pygraphviz.py::TestPygraphvizNested::test_binary_stream"
47 "--deselect=tests/test_pygraphviz.py::TestPygraphvizNested::test_diagram"
48 ];
49
50 pythonImportsCheck = [
51 "transitions"
52 ];
53
54 meta = with lib; {
55 homepage = "https://github.com/pytransitions/transitions";
56 description = "A lightweight, object-oriented finite state machine implementation in Python";
57 license = licenses.mit;
58 maintainers = with maintainers; [ dotlambda ];
59 };
60}