evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / development / python-modules / lightgbm / default.nix
blob231b9e5c258ce78e9096c2548259865a982bba3f
2   lib,
3   config,
4   stdenv,
5   buildPythonPackage,
6   fetchPypi,
8   # build-system
9   cmake,
10   ninja,
11   pathspec,
12   pyproject-metadata,
13   scikit-build-core,
15   # dependencies
16   llvmPackages,
17   numpy,
18   scipy,
19   pythonOlder,
21   # optionals
22   cffi,
23   dask,
24   pandas,
25   pyarrow,
26   scikit-learn,
28   # optionals: gpu
29   boost,
30   ocl-icd,
31   opencl-headers,
32   gpuSupport ? stdenv.hostPlatform.isLinux && !cudaSupport,
33   cudaSupport ? config.cudaSupport,
34   cudaPackages,
37 assert gpuSupport -> !cudaSupport;
38 assert cudaSupport -> !gpuSupport;
40 buildPythonPackage rec {
41   pname = "lightgbm";
42   version = "4.5.0";
43   pyproject = true;
45   disabled = pythonOlder "3.7";
47   src = fetchPypi {
48     inherit pname version;
49     hash = "sha256-4c17rwMY1OMIomV1pjpGNfCN+GatNiKp2OPXHZY3obo=";
50   };
52   nativeBuildInputs = [
53     cmake
54     ninja
55     pathspec
56     pyproject-metadata
57     scikit-build-core
58   ] ++ lib.optionals cudaSupport [ cudaPackages.cuda_nvcc ];
60   dontUseCmakeConfigure = true;
62   buildInputs =
63     (lib.optionals stdenv.cc.isClang [ llvmPackages.openmp ])
64     ++ (lib.optionals gpuSupport [
65       boost
66       ocl-icd
67       opencl-headers
68     ])
69     ++ lib.optionals cudaSupport [
70       cudaPackages.cuda_nvcc
71       cudaPackages.cuda_cudart
72     ];
74   propagatedBuildInputs = [
75     numpy
76     scipy
77   ];
79   pypaBuildFlags =
80     lib.optionals gpuSupport [ "--config-setting=cmake.define.USE_GPU=ON" ]
81     ++ lib.optionals cudaSupport [ "--config-setting=cmake.define.USE_CUDA=ON" ];
83   postConfigure = ''
84     export HOME=$(mktemp -d)
85   '';
87   optional-dependencies = {
88     arrow = [
89       cffi
90       pyarrow
91     ];
92     dask =
93       [
94         dask
95         pandas
96       ]
97       ++ dask.optional-dependencies.array
98       ++ dask.optional-dependencies.dataframe
99       ++ dask.optional-dependencies.distributed;
100     pandas = [ pandas ];
101     scikit-learn = [ scikit-learn ];
102   };
104   # The pypi package doesn't distribute the tests from the GitHub
105   # repository. It contains c++ tests which don't seem to wired up to
106   # `make check`.
107   doCheck = false;
109   pythonImportsCheck = [ "lightgbm" ];
111   meta = {
112     description = "Fast, distributed, high performance gradient boosting (GBDT, GBRT, GBM or MART) framework";
113     homepage = "https://github.com/Microsoft/LightGBM";
114     changelog = "https://github.com/microsoft/LightGBM/releases/tag/v${version}";
115     license = lib.licenses.mit;
116     maintainers = with lib.maintainers; [ teh ];
117   };