1{
2 lib,
3 stdenv,
4 buildPythonPackage,
5 fetchPypi,
6 pythonOlder,
7
8 # build-system
9 setuptools,
10 setuptools-scm,
11 cython,
12 py-cpuinfo,
13
14 # dependencies
15 deprecated,
16 numpy,
17
18 # optional-dependencies
19 crc32c,
20
21 # tests
22 msgpack,
23 pytestCheckHook,
24 importlib-metadata,
25}:
26
27buildPythonPackage rec {
28 pname = "numcodecs";
29 version = "0.16.1";
30 pyproject = true;
31
32 disabled = pythonOlder "3.8";
33
34 src = fetchPypi {
35 inherit pname version;
36 hash = "sha256-xH8g1lZFRWjGtGl84CCB5ru1EvGYc4xqVvr+gCnJf7E=";
37 };
38
39 build-system = [
40 setuptools
41 setuptools-scm
42 cython
43 py-cpuinfo
44 ];
45
46 dependencies = [
47 deprecated
48 numpy
49 ];
50
51 optional-dependencies = {
52 crc32c = [ crc32c ];
53 msgpack = [ msgpack ];
54 # zfpy = [ zfpy ];
55 };
56
57 preBuild = lib.optionalString (stdenv.hostPlatform.isx86 && !stdenv.hostPlatform.avx2Support) ''
58 export DISABLE_NUMCODECS_AVX2=1
59 '';
60
61 nativeCheckInputs = [
62 pytestCheckHook
63 importlib-metadata
64 ]
65 ++ lib.flatten (lib.attrValues optional-dependencies);
66
67 # https://github.com/NixOS/nixpkgs/issues/255262
68 preCheck = "pushd $out";
69 postCheck = "popd";
70
71 meta = {
72 homepage = "https://github.com/zarr-developers/numcodecs";
73 license = lib.licenses.mit;
74 description = "Buffer compression and transformation codecs for use in data storage and communication applications";
75 maintainers = with lib.maintainers; [ doronbehar ];
76 };
77}