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 [
35 cloudpickle
36 importlib-metadata
37 toml
38 ]
39 ++ lib.optional stdenv.hostPlatform.isLinux pyinotify
40 ++ lib.optional stdenv.hostPlatform.isDarwin macfsevents;
41
42 nativeCheckInputs = [
43 configclass
44 doit-py
45 mergedict
46 mock
47 pyflakes
48 pytestCheckHook
49 ];
50
51 # escape infinite recursion with doit-py
52 doCheck = false;
53
54 passthru.tests = {
55 # hangs on darwin
56 check = doit.overridePythonAttrs (_: {
57 doCheck = !stdenv.hostPlatform.isDarwin;
58 });
59 };
60
61 pythonImportsCheck = [ "doit" ];
62
63 meta = with lib; {
64 homepage = "https://pydoit.org/";
65 description = "Task management & automation tool";
66 mainProgram = "doit";
67 license = licenses.mit;
68 longDescription = ''
69 doit is a modern open-source build-tool written in python
70 designed to be simple to use and flexible to deal with complex
71 work-flows. It is specially suitable for building and managing
72 custom work-flows where there is no out-of-the-box solution
73 available.
74 '';
75 maintainers = with maintainers; [ pSub ];
76 };
77 };
78in
79doit