1{
2 lib,
3 buildPythonPackage,
4 blessed,
5 fetchFromGitHub,
6 invoke,
7 pythonOlder,
8 releases,
9 semantic-version,
10 tabulate,
11 tqdm,
12 twine,
13 pytestCheckHook,
14 pytest-relaxed,
15 pytest-mock,
16 icecream,
17 pip,
18}:
19
20buildPythonPackage rec {
21 pname = "invocations";
22 version = "3.3.0";
23 format = "setuptools";
24
25 disabled = pythonOlder "3.6";
26
27 src = fetchFromGitHub {
28 owner = "pyinvoke";
29 repo = "invocations";
30 tag = version;
31 hash = "sha256-JnhdcxhBNsYgDMcljtGKjOT1agujlao/66QifGuh6I0=";
32 };
33
34 patches = [ ./replace-blessings-with-blessed.patch ];
35
36 postPatch = ''
37 substituteInPlace setup.py \
38 --replace "semantic_version>=2.4,<2.7" "semantic_version"
39 '';
40
41 propagatedBuildInputs = [
42 blessed
43 invoke
44 releases
45 semantic-version
46 tabulate
47 tqdm
48 twine
49 ];
50
51 nativeCheckInputs = [
52 pytestCheckHook
53 pytest-relaxed
54 pytest-mock
55 icecream
56 pip
57 ];
58
59 pythonImportsCheck = [ "invocations" ];
60
61 disabledTests = [
62 # invoke.exceptions.UnexpectedExit
63 "autodoc_"
64
65 # ValueError: Call either Version('1.2.3') or Version(major=1, ...)
66 "component_state_enums_contain_human_readable_values"
67 "load_version_"
68 "prepare_"
69 "status_"
70 ];
71
72 meta = with lib; {
73 description = "Common/best-practice Invoke tasks and collections";
74 homepage = "https://invocations.readthedocs.io/";
75 changelog = "https://github.com/pyinvoke/invocations/blob/${version}/docs/changelog.rst";
76 license = licenses.bsd2;
77 maintainers = with maintainers; [ samuela ];
78 };
79}