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