1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 pythonOlder,
6 pytestCheckHook,
7 numpy,
8 pillow,
9 pydicom,
10 pyjpegls,
11 pylibjpeg,
12 pylibjpeg-libjpeg,
13 pylibjpeg-openjpeg,
14 setuptools,
15 typing-extensions,
16}:
17
18buildPythonPackage rec {
19 pname = "highdicom";
20 version = "0.26.1";
21 pyproject = true;
22
23 disabled = pythonOlder "3.10";
24
25 src = fetchFromGitHub {
26 owner = "MGHComputationalPathology";
27 repo = "highdicom";
28 tag = "v${version}";
29 hash = "sha256-zaa0daGMQHktYkG56JA2a7s5UZSv8AbinO5roe9rWQc=";
30 };
31
32 build-system = [
33 setuptools
34 ];
35
36 dependencies = [
37 numpy
38 pillow
39 pydicom
40 pyjpegls
41 typing-extensions
42 ];
43
44 optional-dependencies = {
45 libjpeg = [
46 pylibjpeg
47 pylibjpeg-libjpeg
48 pylibjpeg-openjpeg
49 ];
50 };
51
52 nativeCheckInputs = [ pytestCheckHook ] ++ optional-dependencies.libjpeg;
53 preCheck = ''
54 export HOME=$TMP/test-home
55 mkdir -p $HOME/.pydicom/
56 ln -s ${pydicom.passthru.pydicom-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 = {
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 = lib.licenses.mit;
76 maintainers = with lib.maintainers; [ bcdarwin ];
77 };
78}