1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 setuptools,
6 formulaic,
7 frozendict,
8 click,
9 num2words,
10 numpy,
11 scipy,
12 pandas,
13 nibabel,
14 bids-validator,
15 sqlalchemy,
16 universal-pathlib,
17 pytestCheckHook,
18 versioneer,
19}:
20
21buildPythonPackage rec {
22 pname = "pybids";
23 version = "0.20.0";
24 pyproject = true;
25
26 src = fetchFromGitHub {
27 owner = "bids-standard";
28 repo = "pybids";
29 tag = version;
30 hash = "sha256-e1uD9rNs50GP8myNY+5VbcdRKlLykSTd9ESKrhSW+r8=";
31 };
32
33 postPatch = ''
34 substituteInPlace pyproject.toml \
35 --replace-fail 'dynamic = ["version"]' 'version = "${version}"'
36 '';
37
38 pythonRelaxDeps = [
39 "formulaic"
40 "sqlalchemy"
41 ];
42
43 build-system = [
44 setuptools
45 versioneer
46 ]
47 ++ versioneer.optional-dependencies.toml;
48
49 dependencies = [
50 bids-validator
51 click
52 formulaic
53 frozendict
54 nibabel
55 num2words
56 numpy
57 pandas
58 scipy
59 sqlalchemy
60 universal-pathlib
61 ];
62
63 pythonImportsCheck = [ "bids" ];
64
65 nativeCheckInputs = [ pytestCheckHook ];
66
67 disabledTestPaths = [
68 # Could not connect to the endpoint URL
69 "src/bids/layout/tests/test_remote_bids.py"
70 ];
71
72 disabledTests = [
73 # Regression associated with formulaic >= 0.6.0
74 # (see https://github.com/bids-standard/pybids/issues/1000)
75 "test_split"
76 ];
77
78 meta = {
79 description = "Python tools for querying and manipulating BIDS datasets";
80 homepage = "https://github.com/bids-standard/pybids";
81 changelog = "https://github.com/bids-standard/pybids/blob/${version}/CHANGELOG.rst";
82 license = lib.licenses.mit;
83 maintainers = with lib.maintainers; [ wegank ];
84 mainProgram = "pybids";
85 };
86}