1{
2 lib,
3 buildPythonPackage,
4 pythonOlder,
5 fetchFromGitLab,
6 setuptools,
7 dill,
8 h5py,
9 nibabel,
10 numpy,
11 scipy,
12 indexed-gzip,
13 pillow,
14 rtree,
15 trimesh,
16 wxpython,
17 pytestCheckHook,
18 pytest-cov-stub,
19 tomli,
20}:
21
22buildPythonPackage rec {
23 pname = "fslpy";
24 version = "3.21.1";
25 pyproject = true;
26
27 disabled = pythonOlder "3.8";
28
29 src = fetchFromGitLab {
30 domain = "git.fmrib.ox.ac.uk";
31 owner = "fsl";
32 repo = "fslpy";
33 rev = "refs/tags/${version}";
34 hash = "sha256-O0bhzu6zZeuGJqXAwlgM8qHkgtaGCmg7xSkOqbZH2eA=";
35 };
36
37 build-system = [ setuptools ];
38
39 dependencies = [
40 dill
41 h5py
42 nibabel
43 numpy
44 scipy
45 ];
46
47 optional-dependencies = {
48 extra = [
49 indexed-gzip
50 pillow
51 rtree
52 trimesh
53 wxpython
54 ];
55 };
56
57 nativeCheckInputs = [
58 pytestCheckHook
59 pytest-cov-stub
60 tomli
61 ] ++ optional-dependencies.extra;
62
63 disabledTestPaths = [
64 # tries to download data:
65 "fsl/tests/test_dicom.py"
66 # tests exit with "SystemExit: Unable to access the X Display, is $DISPLAY set properly?"
67 "fsl/tests/test_idle.py"
68 "fsl/tests/test_platform.py"
69 # require FSL's atlas library (via $FSLDIR), which has an unfree license:
70 "fsl/tests/test_atlases.py"
71 "fsl/tests/test_atlases_query.py"
72 "fsl/tests/test_parse_data.py"
73 "fsl/tests/test_scripts/test_atlasq_list_summary.py"
74 "fsl/tests/test_scripts/test_atlasq_ohi.py"
75 "fsl/tests/test_scripts/test_atlasq_query.py"
76 # requires FSL (unfree and not in Nixpkgs):
77 "fsl/tests/test_fslsub.py"
78 "fsl/tests/test_run.py"
79 "fsl/tests/test_wrappers"
80 ];
81
82 pythonImportsCheck = [
83 "fsl"
84 "fsl.data"
85 "fsl.scripts"
86 "fsl.transform"
87 "fsl.utils"
88 "fsl.wrappers"
89 ];
90
91 meta = {
92 description = "FSL Python library";
93 homepage = "https://git.fmrib.ox.ac.uk/fsl/fslpy";
94 changelog = "https://git.fmrib.ox.ac.uk/fsl/fslpy/-/blob/main/CHANGELOG.rst";
95 license = lib.licenses.asl20;
96 maintainers = with lib.maintainers; [ bcdarwin ];
97 };
98}