The package rpms/python-pyriemann.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/python-pyriemann.git/commit/?id=f508....
Change: +ExcludeArch: %{ix86}
Thanks.
Full change: ============
commit d8048d23832ebb6269cc94ff3b18e144c80fdb1b Author: Ankur Sinha (Ankur Sinha Gmail) sanjay.ankur@gmail.com Date: Mon Jun 24 12:37:11 2024 +0100
feat: v0.6 (fixes rh#2274377)
diff --git a/.gitignore b/.gitignore index aa8dd64..50a832c 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /pyRiemann-0.3.tar.gz /pyRiemann-0.4.tar.gz /pyRiemann-0.5.tar.gz +/pyRiemann-0.6.tar.gz diff --git a/254.patch b/254.patch deleted file mode 100644 index d572d02..0000000 --- a/254.patch +++ /dev/null @@ -1,748 +0,0 @@ -From 52da888772eb7a695aad773251d27731eef36331 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Tue, 27 Jun 2023 18:09:48 +0200 -Subject: [PATCH 01/17] update readme for release 0.5 - ---- - README.md | 12 ++++++------ - 1 file changed, 6 insertions(+), 6 deletions(-) - -diff --git a/README.md b/README.md -index c15af883..a9715f6a 100644 ---- a/README.md -+++ b/README.md -@@ -149,13 +149,13 @@ pytest - Maria Sayu Yamamoto and - Pierre Clisson and - Marie-Constance Corsi}, -- title = {pyRiemann/pyRiemann: v0.3}, -- month = jul, -- year = 2022, -+ title = {pyRiemann/pyRiemann: v0.5}, -+ month = june, -+ year = 2023, - publisher = {Zenodo}, -- version = {v0.3}, -- doi = {10.5281/zenodo.7547583}, -- url = {https://doi.org/10.5281/zenodo.7547583%7D -+ version = {v0.5}, -+ doi = {10.5281/zenodo.8059038}, -+ url = {https://doi.org/10.5281/zenodo.8059038%7D - } - ``` - - -From d4a1bdfb744aad8f2cc1d6a2fab74a0a373da362 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Tue, 27 Jun 2023 18:31:01 +0200 -Subject: [PATCH 02/17] enforce extended labels to be numeric for classifiers - ---- - pyriemann/transfer/_estimators.py | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/pyriemann/transfer/_estimators.py b/pyriemann/transfer/_estimators.py -index ed8cc190..d93a7650 100644 ---- a/pyriemann/transfer/_estimators.py -+++ b/pyriemann/transfer/_estimators.py -@@ -601,8 +601,7 @@ def fit(self, X, y_enc): - self : TLEstimator instance - The TLEstimator instance. - """ -- if not is_regressor(self.estimator) \ -- and not is_classifier(self.estimator): -+ if not (is_regressor(self.estimator) or is_classifier(self.estimator)): - raise TypeError( - 'Estimator has to be either a classifier or a regressor.') - -@@ -610,6 +609,8 @@ def fit(self, X, y_enc): - - if is_regressor(self.estimator): - y_dec = y_dec.astype(float) -+ if is_classifier(self.estimator): -+ y_dec = y_dec.astype(int) - - if self.domain_weight is not None: - w = np.zeros(len(X_dec)) - -From 2bc215cb51829f759908394c23701adf468d91f1 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Tue, 27 Jun 2023 18:34:06 +0200 -Subject: [PATCH 03/17] remove pytest warning in test for mean - ---- - tests/test_utils_mean.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/tests/test_utils_mean.py b/tests/test_utils_mean.py -index 77dab16b..fef78101 100644 ---- a/tests/test_utils_mean.py -+++ b/tests/test_utils_mean.py -@@ -150,7 +150,7 @@ def test_mean_of_means(kind, mean, get_mats): - n_matrices, n_channels = 10, 3 - mats = get_mats(n_matrices, n_channels, kind) - if mean is mean_ale and kind == "hpd": -- return True -+ pytest.skip() - if mean == mean_power: - p = -0.42 - C = mean(mats, p) - -From 6639a6845b3ed61697563ed8030564b6ada1124b Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Tue, 27 Jun 2023 18:57:36 +0200 -Subject: [PATCH 04/17] fix some errors - ---- - tests/test_transfer.py | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/tests/test_transfer.py b/tests/test_transfer.py -index fac023db..e82ec652 100644 ---- a/tests/test_transfer.py -+++ b/tests/test_transfer.py -@@ -170,6 +170,9 @@ def test_tlclassifier_mdm(rndstate, clf, source_domain, target_domain): - } - tlclf.fit(X, y_enc) - -+ # test fit -+ assert_array_equal(tlclf.estimator.classes_, [1, 2]) -+ - X, y, domain = decode_domains(X, y_enc) - X_source = X[domain == 'source_domain'] - y_source = y[domain == 'source_domain'] -@@ -232,7 +235,7 @@ def test_tlclassifiers(rndstate, clf, source_domain, target_domain): - tlclf.fit(X, y_enc) - - # test fit -- assert_array_equal(tlclf.estimator.classes_, ['1', '2']) -+ assert_array_equal(tlclf.estimator.classes_, [1, 2]) - - # test predict - predicted = tlclf.predict(X) - -From b25e0e0bbbb2f4734d01c6d6d45f850d4170fecb Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Wed, 28 Jun 2023 07:36:14 +0200 -Subject: [PATCH 05/17] use np.unique instead of scipy.mode - ---- - pyriemann/classification.py | 3 +-- - pyriemann/transfer/_estimators.py | 2 -- - tests/test_transfer.py | 5 +---- - 3 files changed, 2 insertions(+), 8 deletions(-) - -diff --git a/pyriemann/classification.py b/pyriemann/classification.py -index 81f839d4..acfc3c32 100644 ---- a/pyriemann/classification.py -+++ b/pyriemann/classification.py -@@ -2,7 +2,6 @@ - import functools - - import numpy as np --from scipy import stats - from sklearn.base import BaseEstimator, ClassifierMixin, TransformerMixin - from sklearn.svm import SVC as sklearnSVC - from sklearn.utils.extmath import softmax -@@ -524,7 +523,7 @@ def predict(self, covtest): - """ - dist = self._predict_distances(covtest) - neighbors_classes = self.classmeans_[np.argsort(dist)] -- out, _ = stats.mode(neighbors_classes[:, 0:self.n_neighbors], axis=1) -+ out = np.unique(neighbors_classes[:, 0:self.n_neighbors], axis=1)[:, 0] - return out.ravel() - - def predict_proba(self, X): -diff --git a/pyriemann/transfer/_estimators.py b/pyriemann/transfer/_estimators.py -index d93a7650..24800839 100644 ---- a/pyriemann/transfer/_estimators.py -+++ b/pyriemann/transfer/_estimators.py -@@ -609,8 +609,6 @@ def fit(self, X, y_enc): - - if is_regressor(self.estimator): - y_dec = y_dec.astype(float) -- if is_classifier(self.estimator): -- y_dec = y_dec.astype(int) - - if self.domain_weight is not None: - w = np.zeros(len(X_dec)) -diff --git a/tests/test_transfer.py b/tests/test_transfer.py -index e82ec652..fac023db 100644 ---- a/tests/test_transfer.py -+++ b/tests/test_transfer.py -@@ -170,9 +170,6 @@ def test_tlclassifier_mdm(rndstate, clf, source_domain, target_domain): - } - tlclf.fit(X, y_enc) - -- # test fit -- assert_array_equal(tlclf.estimator.classes_, [1, 2]) -- - X, y, domain = decode_domains(X, y_enc) - X_source = X[domain == 'source_domain'] - y_source = y[domain == 'source_domain'] -@@ -235,7 +232,7 @@ def test_tlclassifiers(rndstate, clf, source_domain, target_domain): - tlclf.fit(X, y_enc) - - # test fit -- assert_array_equal(tlclf.estimator.classes_, [1, 2]) -+ assert_array_equal(tlclf.estimator.classes_, ['1', '2']) - - # test predict - predicted = tlclf.predict(X) - -From 66b0e8d20239dfd7a164bd9866d628627ec8720a Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Wed, 28 Jun 2023 07:47:18 +0200 -Subject: [PATCH 06/17] remove ravel - ---- - pyriemann/classification.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pyriemann/classification.py b/pyriemann/classification.py -index acfc3c32..abd40c33 100644 ---- a/pyriemann/classification.py -+++ b/pyriemann/classification.py -@@ -524,7 +524,7 @@ def predict(self, covtest): - dist = self._predict_distances(covtest) - neighbors_classes = self.classmeans_[np.argsort(dist)] - out = np.unique(neighbors_classes[:, 0:self.n_neighbors], axis=1)[:, 0] -- return out.ravel() -+ return out - - def predict_proba(self, X): - """Predict proba using softmax. - -From 357e98c5bbe7701d2e23036e79bf8466e0bb1460 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Wed, 28 Jun 2023 09:58:00 +0200 -Subject: [PATCH 07/17] remove another deprecation warning - ---- - pyriemann/embedding.py | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/pyriemann/embedding.py b/pyriemann/embedding.py -index 594a8658..52448aa5 100644 ---- a/pyriemann/embedding.py -+++ b/pyriemann/embedding.py -@@ -384,7 +384,7 @@ def locally_linear_embedding(X, - M.flat[:: M.shape[0] + 1] += 1 - - eigen_values, eigen_vectors = eigh( -- M, eigvals=(1, n_components), overwrite_a=True -+ M, subset_by_index=(1, n_components), overwrite_a=True - ) - index = np.argsort(np.abs(eigen_values)) - embd, error = eigen_vectors[:, index], np.sum(eigen_values) - -From 008db99c1b2f16b9f16821ad200de1b324a9cf5c Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Thu, 29 Jun 2023 19:49:03 +0200 -Subject: [PATCH 08/17] add private function for mode, add tests, and remove - warning for mean tests - ---- - pyriemann/classification.py | 15 +++++++++++++-- - tests/test_classification.py | 31 +++++++++++++++++++++++++++++++ - tests/test_utils_mean.py | 2 ++ - 3 files changed, 46 insertions(+), 2 deletions(-) - -diff --git a/pyriemann/classification.py b/pyriemann/classification.py -index abd40c33..c82a3ef2 100644 ---- a/pyriemann/classification.py -+++ b/pyriemann/classification.py -@@ -35,6 +35,17 @@ def _check_metric(metric): - return metric_mean, metric_dist - - -+def _mode_1d(X): -+ vals, counts = np.unique(X, return_counts=True) -+ mode = vals[counts.argmax()] -+ return mode -+ -+ -+def _mode_2d(X, axis=1): -+ mode = np.apply_along_axis(_mode_1d, axis, X) -+ return mode -+ -+ - class MDM(BaseEstimator, ClassifierMixin, TransformerMixin): - """Classification by Minimum Distance to Mean. - -@@ -523,8 +534,8 @@ def predict(self, covtest): - """ - dist = self._predict_distances(covtest) - neighbors_classes = self.classmeans_[np.argsort(dist)] -- out = np.unique(neighbors_classes[:, 0:self.n_neighbors], axis=1)[:, 0] -- return out -+ pred = _mode_2d(neighbors_classes[:, 0:self.n_neighbors], axis=1) -+ return pred - - def predict_proba(self, X): - """Predict proba using softmax. -diff --git a/tests/test_classification.py b/tests/test_classification.py -index c39400cc..603e04a4 100644 ---- a/tests/test_classification.py -+++ b/tests/test_classification.py -@@ -4,6 +4,7 @@ - from numpy.testing import assert_array_equal - import pytest - from pytest import approx -+from scipy.stats import mode - from sklearn.dummy import DummyClassifier - - from conftest import get_distances, get_means, get_metrics -@@ -11,6 +12,7 @@ - from pyriemann.utils.kernel import kernel - from pyriemann.utils.mean import mean_covariance - from pyriemann.classification import ( -+ _mode_2d, - MDM, - FgMDM, - KNearestNeighbor, -@@ -23,6 +25,35 @@ - rclf = [MDM, FgMDM, KNearestNeighbor, TSclassifier, SVC, MeanField] - - -+@pytest.mark.parametrize( -+ "X, axis, expected", -+ [ -+ ( -+ np.array([[0, 5], [1, 7], [0, 6], [2, 7]]), -+ 0, -+ np.array([0, 7]), -+ ), -+ ( -+ np.array([[0, 1, 2, 1, 1, 0], [7, 5, 7, 6, 7, 6]]), -+ 1, -+ np.array([1, 7]), -+ ), -+ ( -+ np.array([['a', 'b', 'a', 'c', 'a'], ['d', 'e', 'f', 'e', 'e']]), -+ 1, -+ np.array(['a', 'e']), -+ ), -+ ], -+) -+def test_mode(X, axis, expected): -+ actual = _mode_2d(X, axis=axis) -+ assert_array_equal(actual, expected) -+ -+ if np.issubdtype(X.dtype, np.number): -+ sp, _ = mode(X, axis=axis) -+ assert_array_equal(actual, sp.ravel()) -+ -+ - @pytest.mark.parametrize("n_classes", [2, 3]) - @pytest.mark.parametrize("classif", rclf) - def test_classifier(n_classes, classif, get_covmats, get_labels): -diff --git a/tests/test_utils_mean.py b/tests/test_utils_mean.py -index fef78101..cb9c767e 100644 ---- a/tests/test_utils_mean.py -+++ b/tests/test_utils_mean.py -@@ -43,6 +43,8 @@ def test_mean_shape(kind, mean, get_mats): - """Test the shape of mean""" - n_matrices, n_channels = 5, 3 - mats = get_mats(n_matrices, n_channels, kind) -+ if mean is mean_ale and kind == "hpd": -+ pytest.skip() - if mean == mean_power: - C = mean(mats, 0.42) - else: - -From 50cbf79304d6789b66bcc0826d3584962d1eec95 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Fri, 30 Jun 2023 18:00:23 +0200 -Subject: [PATCH 09/17] freeze joblib version to 1.2.0 - ---- - requirements.txt | 2 +- - setup.py | 3 +-- - 2 files changed, 2 insertions(+), 3 deletions(-) - -diff --git a/requirements.txt b/requirements.txt -index 8ace2081..5e9a19e6 100644 ---- a/requirements.txt -+++ b/requirements.txt -@@ -1,4 +1,4 @@ - numpy!=1.24.0 - scipy - scikit-learn>=0.22 --joblib -+joblib<=1.2.0 -diff --git a/setup.py b/setup.py -index b48b01a0..79316d0c 100644 ---- a/setup.py -+++ b/setup.py -@@ -4,7 +4,6 @@ - from setuptools import setup, find_packages - - --# get the version (don't import mne here, so dependencies are not needed) - version = None - with open(op.join("pyriemann", "_version.py"), "r") as fid: - for line in (line.strip() for line in fid): -@@ -41,7 +40,7 @@ - "numpy!=1.24.0", - "scipy", - "scikit-learn", -- "joblib", -+ "joblib<=1.2.0", - ], - extras_require={ - "docs": [ - -From 4bbdb3010b0fc3d0b1fdc086a9afcb07000e6735 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Mon, 3 Jul 2023 13:04:12 +0200 -Subject: [PATCH 10/17] manage case when _init_centroids is used with - sample_weight - ---- - pyriemann/clustering.py | 31 +++++++++++++++++-------------- - requirements.txt | 2 +- - setup.py | 3 +-- - 3 files changed, 19 insertions(+), 17 deletions(-) - -diff --git a/pyriemann/clustering.py b/pyriemann/clustering.py -index 9b2c1729..5c00f142 100644 ---- a/pyriemann/clustering.py -+++ b/pyriemann/clustering.py -@@ -1,29 +1,32 @@ - """Clustering functions.""" - import numpy as np -+from joblib import Parallel, delayed - from scipy.stats import norm, chi2 - from sklearn.base import (BaseEstimator, ClassifierMixin, TransformerMixin, - ClusterMixin, clone) -+from sklearn.cluster import KMeans as _KMeans - --try: -- from sklearn.cluster._kmeans import _init_centroids --except ImportError: -- # Workaround for scikit-learn v0.24.0rc1+ -- # See issue: https://github.com/alexandrebarachant/pyRiemann/issues/92 -- from sklearn.cluster import KMeans as _KMeans -- -- def _init_centroids(X, n_clusters, init, random_state, x_squared_norms): -- if random_state is not None: -- random_state = np.random.RandomState(random_state) -+def _init_centroids(X, n_clusters, init, random_state, x_squared_norms): -+ if random_state is not None: -+ random_state = np.random.RandomState(random_state) -+ try: - return _KMeans(n_clusters=n_clusters, init=init)._init_centroids( - X, - x_squared_norms, - init, - random_state, - ) -+ except AttributeError: # from sklearn 1.3.0 -+ n_samples = X.shape[0] -+ return _KMeans(n_clusters=n_clusters, init=init)._init_centroids( -+ X, -+ x_squared_norms, -+ init, -+ random_state, -+ sample_weight=np.ones(n_samples) / n_samples, -+ ) - - --from joblib import Parallel, delayed -- - from .classification import MDM, _check_metric - from .utils.mean import mean_covariance - from .utils.geodesic import geodesic -@@ -37,10 +40,10 @@ def _fit_single(X, y=None, n_clusters=2, init='random', random_state=None, - # init random state if provided - mdm = MDM(metric=metric, n_jobs=n_jobs) - mdm.metric_mean, mdm.metric_dist = _check_metric(metric) -- squared_nomrs = [np.linalg.norm(x, ord='fro')**2 for x in X] -+ squared_norms = [np.linalg.norm(x, ord='fro')**2 for x in X] - mdm.covmeans_ = _init_centroids(X, n_clusters, init, - random_state=random_state, -- x_squared_norms=squared_nomrs) -+ x_squared_norms=squared_norms) - if y is not None: - mdm.classes_ = np.unique(y) - else: -diff --git a/requirements.txt b/requirements.txt -index 5e9a19e6..c89d82f0 100644 ---- a/requirements.txt -+++ b/requirements.txt -@@ -1,4 +1,4 @@ - numpy!=1.24.0 - scipy --scikit-learn>=0.22 -+scikit-learn>=0.24 - joblib<=1.2.0 -diff --git a/setup.py b/setup.py -index 79316d0c..67f5a4c9 100644 ---- a/setup.py -+++ b/setup.py -@@ -1,6 +1,5 @@ - import sys - import os.path as op -- - from setuptools import setup, find_packages - - -@@ -39,7 +38,7 @@ - install_requires=[ - "numpy!=1.24.0", - "scipy", -- "scikit-learn", -+ "scikit-learn>=0.24", - "joblib<=1.2.0", - ], - extras_require={ - -From 6a68a02d0ebcad631df519fbcaf1a06ddcbd0478 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Mon, 3 Jul 2023 13:06:44 +0200 -Subject: [PATCH 11/17] update order of imports - ---- - pyriemann/clustering.py | 9 +++++---- - 1 file changed, 5 insertions(+), 4 deletions(-) - -diff --git a/pyriemann/clustering.py b/pyriemann/clustering.py -index 5c00f142..515fbdc4 100644 ---- a/pyriemann/clustering.py -+++ b/pyriemann/clustering.py -@@ -6,6 +6,11 @@ - ClusterMixin, clone) - from sklearn.cluster import KMeans as _KMeans - -+from .classification import MDM, _check_metric -+from .utils.mean import mean_covariance -+from .utils.geodesic import geodesic -+ -+ - def _init_centroids(X, n_clusters, init, random_state, x_squared_norms): - if random_state is not None: - random_state = np.random.RandomState(random_state) -@@ -27,10 +32,6 @@ def _init_centroids(X, n_clusters, init, random_state, x_squared_norms): - ) - - --from .classification import MDM, _check_metric --from .utils.mean import mean_covariance --from .utils.geodesic import geodesic -- - ####################################################################### - - - -From 3d13b60856d5d3a24f847d63bc5c88cb07c91159 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Thu, 6 Jul 2023 10:09:27 +0200 -Subject: [PATCH 12/17] improve sklearn version checking - ---- - pyriemann/clustering.py | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/pyriemann/clustering.py b/pyriemann/clustering.py -index 515fbdc4..8e14ad37 100644 ---- a/pyriemann/clustering.py -+++ b/pyriemann/clustering.py -@@ -2,6 +2,7 @@ - import numpy as np - from joblib import Parallel, delayed - from scipy.stats import norm, chi2 -+import sklearn - from sklearn.base import (BaseEstimator, ClassifierMixin, TransformerMixin, - ClusterMixin, clone) - from sklearn.cluster import KMeans as _KMeans -@@ -14,14 +15,14 @@ - def _init_centroids(X, n_clusters, init, random_state, x_squared_norms): - if random_state is not None: - random_state = np.random.RandomState(random_state) -- try: -+ if sklearn.__version__ < '1.3.0': - return _KMeans(n_clusters=n_clusters, init=init)._init_centroids( - X, - x_squared_norms, - init, - random_state, - ) -- except AttributeError: # from sklearn 1.3.0 -+ else: - n_samples = X.shape[0] - return _KMeans(n_clusters=n_clusters, init=init)._init_centroids( - X, - -From 0f9a51220d5cc10ac0bc512965d121447f50b0eb Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Thu, 6 Jul 2023 10:29:34 +0200 -Subject: [PATCH 13/17] update to python 3.8 - 3.10 - ---- - .github/workflows/testing.yml | 2 +- - requirements.txt | 2 +- - setup.py | 4 ++-- - 3 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml -index e1396ed4..7e4ecbad 100644 ---- a/.github/workflows/testing.yml -+++ b/.github/workflows/testing.yml -@@ -16,7 +16,7 @@ jobs: - strategy: - fail-fast: false - matrix: -- python-version: [3.7, 3.8, 3.9] -+ python-version: [3.8, 3.9, 3.10] - os: [ubuntu-latest, macOS-latest, windows-latest] - - steps: -diff --git a/requirements.txt b/requirements.txt -index c89d82f0..7993a90b 100644 ---- a/requirements.txt -+++ b/requirements.txt -@@ -1,4 +1,4 @@ - numpy!=1.24.0 - scipy - scikit-learn>=0.24 --joblib<=1.2.0 -+joblib -diff --git a/setup.py b/setup.py -index 67f5a4c9..87aaa27d 100644 ---- a/setup.py -+++ b/setup.py -@@ -34,12 +34,12 @@ - "Tracker": "https://github.com/pyRiemann/pyRiemann/issues/", - }, - platforms="any", -- python_requires=">=3.7", -+ python_requires=">=3.8", - install_requires=[ - "numpy!=1.24.0", - "scipy", - "scikit-learn>=0.24", -- "joblib<=1.2.0", -+ "joblib", - ], - extras_require={ - "docs": [ - -From 7a29ac14f5accae7be02898de5ebe23a3fdd3153 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Thu, 6 Jul 2023 10:42:17 +0200 -Subject: [PATCH 14/17] correct versions - ---- - .github/workflows/testing.yml | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/.github/workflows/testing.yml b/.github/workflows/testing.yml -index 7e4ecbad..b17b08fa 100644 ---- a/.github/workflows/testing.yml -+++ b/.github/workflows/testing.yml -@@ -16,7 +16,7 @@ jobs: - strategy: - fail-fast: false - matrix: -- python-version: [3.8, 3.9, 3.10] -+ python-version: ['3.8', '3.9', '3.10'] - os: [ubuntu-latest, macOS-latest, windows-latest] - - steps: - -From 60d28f60a8c3cfb7b467efb2eed2528c58f63a35 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Thu, 6 Jul 2023 10:55:26 +0200 -Subject: [PATCH 15/17] update whatsnew - ---- - doc/whatsnew.rst | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/doc/whatsnew.rst b/doc/whatsnew.rst -index 5a6fb80b..d29e4d9c 100644 ---- a/doc/whatsnew.rst -+++ b/doc/whatsnew.rst -@@ -10,6 +10,8 @@ A catalog of new features, improvements, and bug-fixes in each release. - v0.6.dev - -------- - -+- Update pyRiemann from Python 3.7 to 3.8. pr`254` by :user:`qbarthelemy` -+ - - v0.5 (Jun 2023) - --------------- - -From 9d404dd4bad6b597efe79031e48e448a302d6e15 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Wed, 9 Aug 2023 12:14:03 +0200 -Subject: [PATCH 16/17] fix documentation build - ---- - doc/requirements.txt | 3 +-- - setup.py | 1 + - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/doc/requirements.txt b/doc/requirements.txt -index 2d7721b4..38bf7b92 100644 ---- a/doc/requirements.txt -+++ b/doc/requirements.txt -@@ -1,9 +1,8 @@ - numpydoc -+sphinx<=7.0.1 - sphinx-gallery - sphinx-bootstrap_theme - mne[data]>=0.24 --scikit-learn - seaborn - pandas --joblib - ipython -diff --git a/setup.py b/setup.py -index 87aaa27d..b2a975c6 100644 ---- a/setup.py -+++ b/setup.py -@@ -43,6 +43,7 @@ - ], - extras_require={ - "docs": [ -+ "sphinx<=7.0.1", - "sphinx-gallery", - "sphinx-bootstrap_theme", - "numpydoc", - -From 03883495eeb265c8504088688fb92c4727ef7e50 Mon Sep 17 00:00:00 2001 -From: qbarthelemy q.barthelemy@gmail.com -Date: Wed, 9 Aug 2023 14:11:54 +0200 -Subject: [PATCH 17/17] add version min for sphinx - ---- - doc/requirements.txt | 2 +- - setup.py | 2 +- - 2 files changed, 2 insertions(+), 2 deletions(-) - -diff --git a/doc/requirements.txt b/doc/requirements.txt -index 38bf7b92..3c53cb8c 100644 ---- a/doc/requirements.txt -+++ b/doc/requirements.txt -@@ -1,5 +1,5 @@ - numpydoc --sphinx<=7.0.1 -+sphinx>=6.0.0,<=7.0.1 - sphinx-gallery - sphinx-bootstrap_theme - mne[data]>=0.24 -diff --git a/setup.py b/setup.py -index b2a975c6..3dff0100 100644 ---- a/setup.py -+++ b/setup.py -@@ -43,7 +43,7 @@ - ], - extras_require={ - "docs": [ -- "sphinx<=7.0.1", -+ "sphinx>=6.0.0,<=7.0.1", - "sphinx-gallery", - "sphinx-bootstrap_theme", - "numpydoc", diff --git a/python-pyriemann.spec b/python-pyriemann.spec index 34f0744..00371d3 100644 --- a/python-pyriemann.spec +++ b/python-pyriemann.spec @@ -2,16 +2,13 @@ %global forgeurl https://github.com/alexandrebarachant/pyRiemann
Name: python-pyriemann -Version: 0.5 +Version: 0.6 Release: %autorelease Summary: Riemannian Geometry for Python %forgemeta License: BSD-3-Clause URL: %forgeurl Source0: %forgesource -# For fixing test failures -# https://github.com/pyRiemann/pyRiemann/issues/262 -Patch: https://patch-diff.githubusercontent.com/raw/pyRiemann/pyRiemann/pull/254.pa...
# This package has had architecture-dependent test failures in the past, e.g. # “One test failure on s390x” diff --git a/sources b/sources index 39d4bd7..6d6ba60 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (pyRiemann-0.5.tar.gz) = f1332a1c21950557335112c19bff209cedde83550c562a4c1158a8ad87ac4b197557857a4179ed9630ad742d0896cffd96d794213216a111140eb59e03e23e0a +SHA512 (pyRiemann-0.6.tar.gz) = 94e80b0f9c60645a7e6a68386539692f3e3b607e984969547566d82e4988983c4569fea9e00c2e7c79439fe4b4a64ded2407b3f6a49567450f104b7830f50614
commit 44a06e993cb0c6239740d01f0c1a44fb6cfc04bc Author: Ankur Sinha (Ankur Sinha Gmail) sanjay.ankur@gmail.com Date: Thu Jul 27 15:31:38 2023 +0100
chore: add packit config
diff --git a/.packit.yaml b/.packit.yaml new file mode 100644 index 0000000..82752c9 --- /dev/null +++ b/.packit.yaml @@ -0,0 +1,13 @@ +upstream_project_url: https://github.com/alexandrebarachant/pyRiemann +copy_upstream_release_description: false +upstream_tag_template: "v{version}" + +jobs: + - job: pull_from_upstream + trigger: release + dist_git_branches: + - fedora-rawhide + - job: koji_build + trigger: commit + dist_git_branches: + - fedora-rawhide
commit 7eae9884271d21bfbda0eba5ad11b7a6a59a79d5 Author: Python Maint python-maint@redhat.com Date: Sun Jun 9 02:10:27 2024 +0200
Rebuilt for Python 3.13
commit f50832671aa6e08f72859c70f7230e3d65fe9ed0 Author: Benjamin A. Beasley code@musicinmybrain.net Date: Wed Apr 10 10:45:18 2024 -0400
F40+: Drop i686 support since python-scikit-learn did
diff --git a/python-pyriemann.spec b/python-pyriemann.spec index 8033a78..34f0744 100644 --- a/python-pyriemann.spec +++ b/python-pyriemann.spec @@ -21,6 +21,9 @@ Patch: https://patch-diff.githubusercontent.com/raw/pyRiemann/pyRiemann # debugging symbols. %global debug_package %{nil}
+# Since F40, python-scikit-learn is ExcludeArch: %%{ix86} +ExcludeArch: %{ix86} + BuildRequires: python3-devel
# Required to run tests
commit bac79c741fddd9713d0f9dccd0cd4455034f14b2 Author: Fedora Release Engineering releng@fedoraproject.org Date: Fri Jan 26 09:09:02 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit 9592fc8991f39a941675ceb44bf495c9afd3f830 Author: Fedora Release Engineering releng@fedoraproject.org Date: Mon Jan 22 05:53:02 2024 +0000
Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
commit c3670ca28f8489cd280365e96473b0dc53eadb04 Author: Benjamin A. Beasley code@musicinmybrain.net Date: Thu Jan 4 11:53:47 2024 -0500
Assert that the .dist-info directory contains a license file
diff --git a/python-pyriemann.spec b/python-pyriemann.spec index 3acc641..8033a78 100644 --- a/python-pyriemann.spec +++ b/python-pyriemann.spec @@ -103,7 +103,7 @@ sed -r -i 's/("tests".*), "flake8"/\1/' setup.py
%install %pyproject_install -%pyproject_save_files pyriemann +%pyproject_save_files -l pyriemann
%check
arch-excludes@lists.fedoraproject.org