summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/patches/python-hdmedians-replace-nose.patch95
-rw-r--r--gnu/packages/statistics.scm20
3 files changed, 106 insertions, 10 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index e78792fdf8..0e56f89e52 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -2039,6 +2039,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-clarabel-blas.patch \
%D%/packages/patches/python-docrepr-fix-tests.patch \
%D%/packages/patches/python-feedparser-missing-import.patch \
+ %D%/packages/patches/python-hdmedians-replace-nose.patch \
%D%/packages/patches/python-louvain-fix-test.patch \
%D%/packages/patches/python-matplotlib-fix-legend-loc-best-test.patch \
%D%/packages/patches/python-mohawk-pytest.patch \
diff --git a/gnu/packages/patches/python-hdmedians-replace-nose.patch b/gnu/packages/patches/python-hdmedians-replace-nose.patch
new file mode 100644
index 0000000000..2341fee2cd
--- /dev/null
+++ b/gnu/packages/patches/python-hdmedians-replace-nose.patch
@@ -0,0 +1,95 @@
+This patch is from the upstream pull request.
+https://github.com/daleroberts/hdmedians/pull/10.
+It adds compatibility with Pytest and drops Nose.
+
+diff --git a/hdmedians/tests/test_geomedian.py b/hdmedians/tests/test_geomedian.py
+index 0bc37e9..ff5f938 100644
+--- a/hdmedians/tests/test_geomedian.py
++++ b/hdmedians/tests/test_geomedian.py
+@@ -4,9 +4,9 @@ Tests.
+
+ import numpy as np
+ import hdmedians as hd
++import pytest
+
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -124,10 +124,12 @@ def test_nangeomedian_axis_one_two_good():
+ def test_nangeomedian_axis_bad():
+ data = np.array([[1.0, np.nan, 1.0],
+ [2.0, 1.0, 1.0]])
+- assert_raises(IndexError, hd.nangeomedian, data, axis=2)
++ with pytest.raises(IndexError):
++ hd.nangeomedian(data, axis=2)
+
+
+ def test_nangeomedian_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nangeomedian, data)
++ with pytest.raises(ValueError):
++ hd.nangeomedian(data)
+diff --git a/hdmedians/tests/test_medoid.py b/hdmedians/tests/test_medoid.py
+index c5e0a7f..4fbdf80 100644
+--- a/hdmedians/tests/test_medoid.py
++++ b/hdmedians/tests/test_medoid.py
+@@ -4,9 +4,9 @@ Tests.
+
+ import numpy as np
+ import hdmedians as hd
++import pytest
+
+ from numpy.testing import assert_equal, assert_array_almost_equal
+-from nose.tools import assert_true, assert_raises
+
+ # shape (6, 25)
+ DATA1 = np.array([[693, 990, 1281, 2101, 3524, 2577],
+@@ -59,7 +59,7 @@ def test_medoid_in_set_random():
+ s = [list(x) for x in a.T]
+ m = hd.medoid(a)
+ idx = s.index(list(m))
+- assert_true(idx > -1)
++ assert(idx > -1)
+
+
+ def test_medoid_noaxis():
+@@ -85,7 +85,8 @@ def test_medoid_axis_one():
+
+
+ def test_medoid_axis_bad():
+- assert_raises(IndexError, hd.medoid, DATA1, axis=2)
++ with pytest.raises(IndexError):
++ hd.medoid(DATA1, axis=2)
+
+
+ def test_medoid_noaxis_indexonly():
+@@ -136,7 +137,8 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nanmedoid, data)
++ with pytest.raises(ValueError):
++ hd.nanmedoid(data)
+
+
+ def test_nanmedoid_axis_zero():
+@@ -170,7 +172,8 @@ def test_nanmedoid_axis_one_indexonly():
+
+
+ def test_nanmedoid_axis_bad():
+- assert_raises(IndexError, hd.nanmedoid, DATA1, axis=2)
++ with pytest.raises(IndexError):
++ hd.nanmedoid(DATA1, axis=2)
+
+
+ def test_nanmedoid_two_obs():
+@@ -184,4 +187,5 @@ def test_nanmedoid_two_obs():
+ def test_nanmedoid_all_nan():
+ data = np.array([[np.nan, np.nan, np.nan],
+ [np.nan, np.nan, np.nan]])
+- assert_raises(ValueError, hd.nanmedoid, data)
++ with pytest.raises(ValueError):
++ hd.nanmedoid(data)
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 28a619e664..b33d99e29f 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -1100,19 +1100,19 @@ correlated samples from Markov Chain Monte Carlo (MCMC).")
(uri (pypi-uri "hdmedians" version))
(sha256
(base32
- "1mn2k8srnmfy451l7zvb2l4hn9701bc5awjm6q3vmqbicyqyqyml"))))
+ "1mn2k8srnmfy451l7zvb2l4hn9701bc5awjm6q3vmqbicyqyqyml"))
+ (patches (search-patches "python-hdmedians-replace-nose.patch"))))
(build-system pyproject-build-system)
(arguments
(list
- #:phases
- '(modify-phases %standard-phases
- (add-before 'check 'build-extensions
- (lambda _
- ;; Cython extensions have to be built before running the tests.
- (invoke "python" "setup.py" "build_ext" "--inplace"))))))
- (propagated-inputs (list python-cython python-numpy python-setuptools
- python-wheel))
- (native-inputs (list python-nose))
+ #:test-flags #~(list "--pyargs" "hdmedians")))
+ (native-inputs
+ (list python-pytest))
+ (propagated-inputs
+ (list python-cython
+ python-numpy
+ python-setuptools
+ python-wheel))
(home-page "http://github.com/daleroberts/hdmedians")
(synopsis "High-dimensional medians")
(description "Various definitions for a high-dimensional median exist and