Merge pull request #307098 from r-ryantm/auto-update/cilium-cli
[NixPkgs.git] / pkgs / development / python-modules / pot / default.nix
blob321ad2e2dba7820b2e2ee2b4753e47e3195142eb
1 { lib
2 , autograd
3 , buildPythonPackage
4 , fetchFromGitHub
5 , cupy
6 , cvxopt
7 , cython
8 , oldest-supported-numpy
9 , matplotlib
10 , numpy
11 , tensorflow
12 , pymanopt
13 , pytestCheckHook
14 , pythonOlder
15 , scikit-learn
16 , scipy
17 , enableDimensionalityReduction ? false
18 , enableGPU ? false
21 buildPythonPackage rec {
22   pname = "pot";
23   version = "0.9.3";
24   pyproject = true;
26   disabled = pythonOlder "3.6";
28   src = fetchFromGitHub {
29     owner = "PythonOT";
30     repo = "POT";
31     rev = "refs/tags/${version}";
32     hash = "sha256-fdqDM0V6zTFe1lcqi53ZZNHAfmuR2I7fdX4SN9qeNn8=";
33   };
35   nativeBuildInputs = [
36     cython
37     oldest-supported-numpy
38   ];
40   propagatedBuildInputs = [
41     numpy
42     scipy
43   ] ++ lib.optionals enableGPU [
44     cupy
45   ] ++ lib.optionals enableDimensionalityReduction [
46     autograd
47     pymanopt
48   ];
50   nativeCheckInputs = [
51     cvxopt
52     matplotlib
53     numpy
54     tensorflow
55     scikit-learn
56     pytestCheckHook
57   ];
59   postPatch = ''
60     substituteInPlace setup.cfg \
61       --replace " --cov-report= --cov=ot" "" \
62       --replace " --durations=20" "" \
63       --replace " --junit-xml=junit-results.xml" ""
65     # we don't need setup.py to find the macos sdk for us
66     sed -i '/sdk_path/d' setup.py
67   '';
69   # need to run the tests with the built package next to the test directory
70   preCheck = ''
71     pushd build/lib.*
72     ln -s -t . "$OLDPWD/test"
73   '';
75   postCheck = ''
76     popd
77   '';
79   disabledTests = [
80     # GPU tests are always skipped because of sandboxing
81     "warnings"
82     # Fixture is not available
83     "test_conditional_gradient"
84     "test_convert_between_backends"
85     "test_emd_backends"
86     "test_emd_emd2_types_devices"
87     "test_emd1d_type_devices"
88     "test_emd2_backends"
89     "test_factored_ot_backends"
90     "test_free_support_barycenter_backends"
91     "test_func_backends"
92     "test_generalized_conditional_gradient"
93     "test_line_search_armijo"
94     "test_loss_dual"
95     "test_max_sliced_backend"
96     "test_plan_dual"
97     "test_random_backends"
98     "test_sliced_backend"
99     "test_to_numpy"
100     "test_wasserstein_1d_type_devices"
101     "test_wasserstein"
102     "test_weak_ot_bakends"
103     # TypeError: Only integers, slices...
104     "test_emd1d_device_tf"
105   ];
107   disabledTestPaths = lib.optionals (!enableDimensionalityReduction) [
108     "test/test_dr.py"
109   ];
111   pythonImportsCheck = [
112     "ot"
113     "ot.lp"
114   ];
116   meta = with lib; {
117     description = "Python Optimal Transport Library";
118     homepage = "https://pythonot.github.io/";
119     license = licenses.mit;
120     maintainers = with maintainers; [ yl3dy ];
121   };