Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / tables / default.nix
blobfd034b209133513181ee0afb3bf034d08ad9a243
1 { lib
2 , fetchPypi
3 , buildPythonPackage
4 , pythonOlder
5 , blosc2
6 , bzip2
7 , c-blosc
8 , cython
9 , hdf5
10 , lzo
11 , numpy
12 , numexpr
13 , packaging
14 , setuptools
15 , sphinx
16   # Test inputs
17 , python
18 , pytest
19 , py-cpuinfo
22 buildPythonPackage rec {
23   pname = "tables";
24   version = "3.9.2";
25   format = "setuptools";
27   disabled = pythonOlder "3.8";
29   src = fetchPypi {
30     inherit pname version;
31     hash = "sha256-1HAmPC5QxLfIY1oNmawf8vnnBMJNceX6M8RSnn0K2cM=";
32   };
34   nativeBuildInputs = [
35     blosc2
36     cython
37     setuptools
38     sphinx
39   ];
41   buildInputs = [
42     bzip2
43     c-blosc
44     blosc2.c-blosc2
45     hdf5
46     lzo
47   ];
49   propagatedBuildInputs = [
50     blosc2
51     py-cpuinfo
52     numpy
53     numexpr
54     packaging # uses packaging.version at runtime
55   ];
57   # When doing `make distclean`, ignore docs
58   postPatch = ''
59     substituteInPlace Makefile --replace "src doc" "src"
60     # Force test suite to error when unittest runner fails
61     substituteInPlace tables/tests/test_suite.py \
62       --replace "return 0" "assert result.wasSuccessful(); return 0" \
63       --replace "return 1" "assert result.wasSuccessful(); return 1"
64     substituteInPlace requirements.txt \
65       --replace "cython>=0.29.21" "" \
66       --replace "blosc2~=2.0.0" "blosc2"
67   '';
69   # Regenerate C code with Cython
70   preBuild = ''
71     make distclean
72   '';
74   setupPyBuildFlags = [
75     "--hdf5=${lib.getDev hdf5}"
76     "--lzo=${lib.getDev lzo}"
77     "--bzip2=${lib.getDev bzip2}"
78     "--blosc=${lib.getDev c-blosc}"
79     "--blosc2=${lib.getDev blosc2.c-blosc2}"
80   ];
82   nativeCheckInputs = [
83     pytest
84   ];
86   preCheck = ''
87     cd ..
88   '';
90   # Runs the light (yet comprehensive) subset of the test suite.
91   # The whole "heavy" test suite supposedly takes ~4 hours to run.
92   checkPhase = ''
93     runHook preCheck
94     ${python.interpreter} -m tables.tests.test_all
95     runHook postCheck
96   '';
98   pythonImportsCheck = [ "tables" ];
100   meta = with lib; {
101     description = "Hierarchical datasets for Python";
102     homepage = "https://www.pytables.org/";
103     changelog = "https://github.com/PyTables/PyTables/releases/tag/v${version}";
104     license = licenses.bsd2;
105     maintainers = with maintainers; [ drewrisinger ];
106   };