1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6 pytestCheckHook,
7 numpy,
8 pillow,
9 pillow-jpls,
10 pydicom,
11 pylibjpeg,
12 pylibjpeg-libjpeg,
13}:
14
15let
16 test_data = fetchFromGitHub {
17 owner = "pydicom";
18 repo = "pydicom-data";
19 rev = "cbb9b2148bccf0f550e3758c07aca3d0e328e768";
20 hash = "sha256-nF/j7pfcEpWHjjsqqTtIkW8hCEbuQ3J4IxpRk0qc1CQ=";
21 };
22in
23buildPythonPackage rec {
24 pname = "highdicom";
25 version = "0.22.0";
26 pyproject = true;
27
28 disabled = pythonOlder "3.6";
29
30 src = fetchFromGitHub {
31 owner = "MGHComputationalPathology";
32 repo = "highdicom";
33 rev = "refs/tags/v${version}";
34 hash = "sha256-KHSJWEnm8u0xHkeeLF/U7MY4FfiWb6Q0GQQy2w1mnKw=";
35 };
36
37 propagatedBuildInputs = [
38 numpy
39 pillow
40 pillow-jpls
41 pydicom
42 ];
43
44 passthru.optional-dependencies = {
45 libjpeg = [
46 pylibjpeg
47 pylibjpeg-libjpeg
48 #pylibjpeg-openjpeg # not in nixpkgs yet
49 ];
50 };
51
52 nativeCheckInputs = [ pytestCheckHook ] ++ passthru.optional-dependencies.libjpeg;
53 preCheck = ''
54 export HOME=$TMP/test-home
55 mkdir -p $HOME/.pydicom/
56 ln -s ${test_data}/data_store/data $HOME/.pydicom/data
57 '';
58
59 pythonImportsCheck = [
60 "highdicom"
61 "highdicom.legacy"
62 "highdicom.ann"
63 "highdicom.ko"
64 "highdicom.pm"
65 "highdicom.pr"
66 "highdicom.seg"
67 "highdicom.sr"
68 "highdicom.sc"
69 ];
70
71 meta = with lib; {
72 description = "High-level DICOM abstractions for Python";
73 homepage = "https://highdicom.readthedocs.io";
74 changelog = "https://github.com/ImagingDataCommons/highdicom/releases/tag/v${version}";
75 license = licenses.mit;
76 maintainers = with maintainers; [ bcdarwin ];
77 };
78}