about summary refs log tree commit diff
path: root/pkgs/development/python-modules/lightgbm/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/python-modules/lightgbm/default.nix')
-rw-r--r--pkgs/development/python-modules/lightgbm/default.nix57
1 files changed, 47 insertions, 10 deletions
diff --git a/pkgs/development/python-modules/lightgbm/default.nix b/pkgs/development/python-modules/lightgbm/default.nix
index d2fc8cbc13a26..6c64228249e1b 100644
--- a/pkgs/development/python-modules/lightgbm/default.nix
+++ b/pkgs/development/python-modules/lightgbm/default.nix
@@ -1,4 +1,5 @@
 { lib
+, config
 , stdenv
 , buildPythonPackage
 , fetchPypi
@@ -14,27 +15,37 @@
 , llvmPackages
 , numpy
 , scipy
-, scikit-learn
 , pythonOlder
 
+# optionals
+, cffi
+, dask
+, pandas
+, pyarrow
+, scikit-learn
+
 # optionals: gpu
 , boost
-, cudatoolkit
 , ocl-icd
 , opencl-headers
-, gpuSupport ? stdenv.isLinux
+, gpuSupport ? stdenv.isLinux && !cudaSupport
+, cudaSupport ? config.cudaSupport
+, cudaPackages
 }:
 
+assert gpuSupport -> cudaSupport != true;
+assert cudaSupport -> gpuSupport != true;
+
 buildPythonPackage rec {
   pname = "lightgbm";
-  version = "4.1.0";
-  format = "pyproject";
+  version = "4.2.0";
+  pyproject = true;
 
   disabled = pythonOlder "3.7";
 
   src = fetchPypi {
     inherit pname version;
-    hash = "sha256-vuWd0mmpOwk/LGENSmaDp+qHxj0+o1xiISPOLAILKrw=";
+    hash = "sha256-ik0FHfKrIhiZihb3cS6EPunpbYsJ/7/MGFM9oSfg2gI=";
   };
 
   nativeBuildInputs = [
@@ -43,6 +54,8 @@ buildPythonPackage rec {
     pathspec
     pyproject-metadata
     scikit-build-core
+  ] ++ lib.optionals cudaSupport [
+    cudaPackages.cuda_nvcc
   ];
 
   dontUseCmakeConfigure = true;
@@ -51,23 +64,47 @@ buildPythonPackage rec {
     llvmPackages.openmp
   ]) ++ (lib.optionals gpuSupport [
     boost
-    cudatoolkit
     ocl-icd
     opencl-headers
-  ]);
+  ]) ++ lib.optionals cudaSupport [
+    cudaPackages.cuda_nvcc
+    cudaPackages.cuda_cudart
+  ];
 
   propagatedBuildInputs = [
     numpy
     scipy
-    scikit-learn
   ];
 
-  pypaBuildFlags = lib.optionalString gpuSupport "--config-setting=cmake.define.USE_CUDA=ON";
+  pypaBuildFlags = lib.optionals gpuSupport [
+    "--config-setting=cmake.define.USE_GPU=ON"
+  ] ++ lib.optionals cudaSupport [
+    "--config-setting=cmake.define.USE_CUDA=ON"
+  ];
 
   postConfigure = ''
     export HOME=$(mktemp -d)
   '';
 
+  passthru.optional-dependencies = {
+    arrow = [
+      cffi
+      pyarrow
+    ];
+    dask = [
+      dask
+      pandas
+    ] ++ dask.optional-dependencies.array
+      ++ dask.optional-dependencies.dataframe
+      ++ dask.optional-dependencies.distributed;
+    pandas = [
+      pandas
+    ];
+    scikit-learn = [
+      scikit-learn
+    ];
+  };
+
   # The pypi package doesn't distribute the tests from the GitHub
   # repository. It contains c++ tests which don't seem to wired up to
   # `make check`.