diff options
Diffstat (limited to 'pkgs/development/python-modules/shap/default.nix')
-rw-r--r-- | pkgs/development/python-modules/shap/default.nix | 118 |
1 files changed, 59 insertions, 59 deletions
diff --git a/pkgs/development/python-modules/shap/default.nix b/pkgs/development/python-modules/shap/default.nix index 96c9c1f952acd..9284d645215b4 100644 --- a/pkgs/development/python-modules/shap/default.nix +++ b/pkgs/development/python-modules/shap/default.nix @@ -1,51 +1,68 @@ { lib , buildPythonPackage , fetchFromGitHub -, writeText -, isPy27 +, fetchpatch , pytestCheckHook -, pytest-mpl +, pythonOlder +, writeText +, catboost +, cloudpickle +, ipython +, lightgbm +, lime +, matplotlib +, nose +, numba , numpy -, scipy -, scikit-learn -, pandas -, transformers , opencv4 -, lightgbm -, catboost +, pandas , pyspark +, pytest-mpl +, scikit-learn +, scipy , sentencepiece -, tqdm +, setuptools , slicer -, numba -, matplotlib -, nose -, lime -, cloudpickle -, ipython +, tqdm +, transformers +, xgboost }: buildPythonPackage rec { pname = "shap"; - version = "0.41.0"; - disabled = isPy27; + version = "0.42.0"; + format = "pyproject"; + + disabled = pythonOlder "3.7"; src = fetchFromGitHub { owner = "slundberg"; - repo = pname; + repo = "shap"; rev = "refs/tags/v${version}"; - hash = "sha256-rYVWQ3VRvIObSQPwDRsxhTOGOKNkYkLtiHzVwoB3iJ0="; + hash = "sha256-VGlswr9ywHk4oKSmmAzEC7+E0V2XEFlg19zXVktUdhc="; }; + patches = [ + (fetchpatch { + name = "fix-circular-import-error.patch"; + url = "https://github.com/slundberg/shap/commit/ce118526b19b4a206cf8b496c2cd2b215ef7a91b.patch"; + hash = "sha256-n2yFjFgc2VSFKb4ZJx775HblULWfnQSEnqjfPa8AOt0="; + }) + ]; + + nativeBuildInputs = [ + setuptools + ]; + propagatedBuildInputs = [ + cloudpickle + numba numpy - scipy - scikit-learn pandas - tqdm + scikit-learn + scipy slicer - numba - cloudpickle + tqdm ]; passthru.optional-dependencies = { @@ -58,7 +75,7 @@ buildPythonPackage rec { # tests that try to access the network will raise, get caught, be marked as skipped and tagged as xfailed. conftestSkipNetworkErrors = writeText "conftest.py" '' from _pytest.runner import pytest_runtest_makereport as orig_pytest_runtest_makereport - import urllib, requests + import urllib, requests, transformers class NetworkAccessDeniedError(RuntimeError): pass def deny_network_access(*a, **kw): @@ -68,6 +85,7 @@ buildPythonPackage rec { requests.get = deny_network_access urllib.request.urlopen = deny_network_access urllib.request.Request = deny_network_access + transformers.AutoTokenizer.from_pretrained = deny_network_access def pytest_runtest_makereport(item, call): tr = orig_pytest_runtest_makereport(item, call) @@ -81,55 +99,41 @@ buildPythonPackage rec { # when importing the local copy the extension is not found rm -r shap - # coverage testing is a waste considering how much we have to skip - substituteInPlace pytest.ini \ - --replace "--cov=shap --cov-report=term-missing" "" - # Add pytest hook skipping tests that access network. # These tests are marked as "Expected fail" (xfail) cat ${conftestSkipNetworkErrors} >> tests/conftest.py ''; + nativeCheckInputs = [ - pytestCheckHook - pytest-mpl + ipython matplotlib nose - ipython + pytest-mpl + pytestCheckHook # optional dependencies, which only serve to enable more tests: - opencv4 - #pytorch # we already skip all its tests due to slowness, adding it does nothing - transformers - #xgboost # numerically unstable? xgboost tests randomly fails pending on nixpkgs revision - lightgbm catboost + lightgbm + opencv4 pyspark sentencepiece + #torch # we already skip all its tests due to slowness, adding it does nothing + transformers + xgboost ]; + disabledTestPaths = [ - # takes forever without GPU acceleration - "tests/explainers/test_deep.py" - "tests/explainers/test_gradient.py" - # requires GPU. We skip here instead of having pytest repeatedly check for GPU - "tests/explainers/test_gpu_tree.py" # The resulting plots look sane, but does not match pixel-perfectly with the baseline. # Likely due to a matplotlib version mismatch, different backend, or due to missing fonts. "tests/plots/test_summary.py" # FIXME: enable - # 100% of the tests in these paths require network - "tests/explainers/test_explainer.py" - "tests/explainers/test_exact.py" - "tests/explainers/test_partition.py" - "tests/maskers/test_fixed_composite.py" - "tests/maskers/test_text.py" - "tests/models/test_teacher_forcing_logits.py" - "tests/models/test_text_generation.py" ]; + disabledTests = [ - # unstable. A xgboost-enabled test. possibly related: https://github.com/slundberg/shap/issues/2480 - "test_provided_background_tree_path_dependent" + # The same reason as above test_summary.py + "test_simple_bar_with_cohorts_dict" + "test_random_summary_violin_with_data2" + "test_random_summary_layered_violin_with_data2" ]; - #pytestFlagsArray = ["-x" "-W" "ignore"]; # uncomment this to debug - pythonImportsCheck = [ "shap" "shap.explainers" @@ -149,9 +153,5 @@ buildPythonPackage rec { changelog = "https://github.com/slundberg/shap/releases/tag/v${version}"; license = licenses.mit; maintainers = with maintainers; [ evax ]; - platforms = platforms.unix; - # No support for scikit-learn > 1.2 - # https://github.com/slundberg/shap/issues/2866 - broken = true; }; } |