1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchPypi,
6 pythonOlder,
7 pythonRelaxDepsHook,
8 # python dependencies
9 click,
10 python-dateutil,
11 etelemetry,
12 filelock,
13 funcsigs,
14 future,
15 looseversion,
16 mock,
17 networkx,
18 nibabel,
19 numpy,
20 packaging,
21 prov,
22 psutil,
23 pybids,
24 pydot,
25 pytest,
26 pytest-xdist,
27 pytest-forked,
28 rdflib,
29 scipy,
30 simplejson,
31 traits,
32 xvfbwrapper,
33 codecov,
34 # other dependencies
35 which,
36 bash,
37 glibcLocales,
38 callPackage,
39 # causes Python packaging conflict with any package requiring rdflib,
40 # so use the unpatched rdflib by default (disables Nipype provenance tracking);
41 # see https://github.com/nipy/nipype/issues/2888:
42 useNeurdflib ? false,
43}:
44
45buildPythonPackage rec {
46 pname = "nipype";
47 version = "1.8.6";
48 disabled = pythonOlder "3.7";
49 format = "setuptools";
50
51 src = fetchPypi {
52 inherit pname version;
53 hash = "sha256-l3sTFej3D5QWPsB+MeVXG+g/Kt1gIxQcWgascAEm+NE=";
54 };
55
56 postPatch = ''
57 substituteInPlace nipype/interfaces/base/tests/test_core.py \
58 --replace "/usr/bin/env bash" "${bash}/bin/bash"
59 '';
60
61 nativeBuildInputs = [ pythonRelaxDepsHook ];
62
63 pythonRelaxDeps = [ "traits" ];
64
65 propagatedBuildInputs = [
66 click
67 python-dateutil
68 etelemetry
69 filelock
70 funcsigs
71 future
72 looseversion
73 networkx
74 nibabel
75 numpy
76 packaging
77 prov
78 psutil
79 pydot
80 rdflib
81 scipy
82 simplejson
83 traits
84 xvfbwrapper
85 ];
86
87 nativeCheckInputs = [
88 pybids
89 codecov
90 glibcLocales
91 mock
92 pytest
93 pytest-forked
94 pytest-xdist
95 which
96 ];
97
98 # checks on darwin inspect memory which doesn't work in build environment
99 doCheck = !stdenv.isDarwin;
100 # ignore tests which incorrect fail to detect xvfb
101 checkPhase = ''
102 LC_ALL="en_US.UTF-8" pytest nipype/tests -k 'not display and not test_no_et_multiproc'
103 '';
104 pythonImportsCheck = [ "nipype" ];
105
106 meta = with lib; {
107 homepage = "https://nipy.org/nipype/";
108 description = "Neuroimaging in Python: Pipelines and Interfaces";
109 mainProgram = "nipypecli";
110 license = licenses.bsd3;
111 maintainers = with maintainers; [ ashgillman ];
112 };
113}