1{
2 lib,
3 stdenv,
4 fetchPypi,
5 buildPythonPackage,
6 importlib-metadata,
7 isPy3k,
8 mock,
9 pytestCheckHook,
10 cloudpickle,
11 pyinotify,
12 macfsevents,
13 toml,
14 doit-py,
15 pyflakes,
16 configclass,
17 mergedict,
18}:
19
20let
21 doit = buildPythonPackage rec {
22 pname = "doit";
23 version = "0.36.0";
24 format = "setuptools";
25
26 disabled = !isPy3k;
27
28 src = fetchPypi {
29 inherit pname version;
30 hash = "sha256-cdB8zJUUyyL+WdmJmVd2ZeqrV+FvZE0EM2rgtLriNLw=";
31 };
32
33 propagatedBuildInputs = [
34 cloudpickle
35 importlib-metadata
36 toml
37 ] ++ lib.optional stdenv.isLinux pyinotify ++ lib.optional stdenv.isDarwin macfsevents;
38
39 nativeCheckInputs = [
40 configclass
41 doit-py
42 mergedict
43 mock
44 pyflakes
45 pytestCheckHook
46 ];
47
48 # escape infinite recursion with doit-py
49 doCheck = false;
50
51 passthru.tests = {
52 # hangs on darwin
53 check = doit.overridePythonAttrs (_: {
54 doCheck = !stdenv.isDarwin;
55 });
56 };
57
58 pythonImportsCheck = [ "doit" ];
59
60 meta = with lib; {
61 homepage = "https://pydoit.org/";
62 description = "Task management & automation tool";
63 mainProgram = "doit";
64 license = licenses.mit;
65 longDescription = ''
66 doit is a modern open-source build-tool written in python
67 designed to be simple to use and flexible to deal with complex
68 work-flows. It is specially suitable for building and managing
69 custom work-flows where there is no out-of-the-box solution
70 available.
71 '';
72 maintainers = with maintainers; [ pSub ];
73 };
74 };
75in
76doit