From 4640bdd3cd0bc09b7e57bddb9da098023aadbfa6 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 1 May 2025 13:15:08 -0700 Subject: [PATCH] python3Packages.hdbscan: fix build error --- .../python-modules/hdbscan/default.nix | 50 ++++++++++++++----- 1 file changed, 38 insertions(+), 12 deletions(-) diff --git a/pkgs/development/python-modules/hdbscan/default.nix b/pkgs/development/python-modules/hdbscan/default.nix index 509921eb6d7b..0312436eaf95 100644 --- a/pkgs/development/python-modules/hdbscan/default.nix +++ b/pkgs/development/python-modules/hdbscan/default.nix @@ -1,14 +1,18 @@ { lib, buildPythonPackage, + fetchFromGitHub, + fetchpatch, + cython, numpy, - pytestCheckHook, scipy, scikit-learn, - fetchPypi, joblib, six, + + # test + pytestCheckHook, }: buildPythonPackage rec { @@ -16,27 +20,40 @@ buildPythonPackage rec { version = "0.8.40"; format = "setuptools"; - src = fetchPypi { - inherit pname version; - hash = "sha256-yeOD/xe+7gWRB1/2XVJL2ltaNd+wHSGCRae6MMjUihc="; + src = fetchFromGitHub { + owner = "scikit-learn-contrib"; + repo = "hdbscan"; + tag = "release-${version}"; + hash = "sha256-xsBlmSQU47e+M+nRqUXdWKS7Rtj2QZ1UWLAvjSQOJ0Q="; }; + patches = [ + (fetchpatch { + # Replace obsolete use of assert_raises with pytest.raises + name = "replace-assert_raises"; + url = "https://github.com/scikit-learn-contrib/hdbscan/pull/667/commits/04d6a4dcdcd2bb2597419b8aa981d7620765809f.patch"; + hash = "sha256-z/u5b2rNPKOCe+3/GVE8rMB5ajeU5PrvLVesjEgj9TA="; + }) + ]; + pythonRemoveDeps = [ "cython" ]; + nativeBuildInputs = [ cython - ]; - propagatedBuildInputs = [ - numpy - scipy - scikit-learn joblib + numpy + scikit-learn + scipy six ]; + preCheck = '' cd hdbscan/tests rm __init__.py ''; + nativeCheckInputs = [ pytestCheckHook ]; + disabledTests = [ # known flaky tests: https://github.com/scikit-learn-contrib/hdbscan/issues/420 "test_mem_vec_diff_clusters" @@ -47,13 +64,22 @@ buildPythonPackage rec { # more flaky tests https://github.com/scikit-learn-contrib/hdbscan/issues/570 "test_hdbscan_boruvka_balltree" "test_hdbscan_best_balltree_metric" + # "got an unexpected keyword argument" + "test_hdbscan_badargs" + ]; + + disabledTestPaths = [ + # joblib.externals.loky.process_executor.BrokenProcessPool: + "test_branches.py" ]; pythonImportsCheck = [ "hdbscan" ]; - meta = with lib; { + meta = { description = "Hierarchical Density-Based Spatial Clustering of Applications with Noise, a clustering algorithm with a scikit-learn compatible API"; homepage = "https://github.com/scikit-learn-contrib/hdbscan"; - license = licenses.bsd3; + changelog = "https://github.com/scikit-learn-contrib/hdbscan/releases/tag/release-${version}"; + license = lib.licenses.bsd3; + maintainers = [ ]; }; }