1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 cython,
6 numpy,
7 setuptools,
8 pkgs,
9 jxrlib,
10 lcms2,
11 lerc,
12 libdeflate,
13 libpng,
14 libtiff,
15 libwebp,
16 openjpeg,
17 xz,
18 zlib,
19 zstd,
20 pytest,
21}:
22
23let
24 version = "2025.8.2";
25in
26buildPythonPackage rec {
27 pname = "imagecodecs";
28 inherit version;
29 pyproject = true;
30
31 src = fetchFromGitHub {
32 owner = "cgohlke";
33 repo = "imagecodecs";
34 tag = "v${version}";
35 hash = "sha256-HDyA5SQNZe9G83ARfvD4AAIIos8Oatp+RhnEQTdnRp4=";
36 };
37
38 build-system = [
39 cython
40 numpy
41 setuptools
42 ];
43
44 nativeBuildInputs = [
45 pkgs.lz4.dev # lz4 was hidden by python3Packages.lz4
46 lcms2.dev
47 openjpeg.dev
48 ];
49
50 buildInputs = [
51 pkgs.lz4
52 jxrlib
53 lcms2
54 lerc
55 libdeflate
56 libpng
57 libtiff
58 libwebp
59 openjpeg
60 xz # liblzma
61 zlib
62 zstd
63 ];
64
65 dependencies = [
66 numpy
67 ];
68
69 prePatch = ''
70 substituteInPlace setup.py \
71 --replace-fail "/usr/include/openjpeg" "${openjpeg.dev}/include/openjpeg" \
72 --replace-fail "/usr/include/jxrlib" "${jxrlib}/include/jxrlib"
73 '';
74
75 nativeCheckInputs = [
76 pytest
77 ];
78
79 pythonImportsCheck = [
80 "imagecodecs"
81 ];
82
83 meta = {
84 description = "Image transformation, compression, and decompression codecs";
85 homepage = "https://github.com/cgohlke/imagecodecs";
86 changelog = "https://github.com/cgohlke/imagecodecs/blob/${src.tag}/CHANGES.rst";
87 license = lib.licenses.bsd3;
88 maintainers = with lib.maintainers; [ yzx9 ];
89 };
90}