Subject: [bug#70089] [PATCH] gnu: python-scikit-optimize: Update to 0.10.1.

From: Vinicius Monego <[email-masked]>
Date: Sat, 30 Mar 2024 12:30:52 +0000

* gnu/packages/python-science.scm (python-scikit-optimize): Update to 0.10.1.
[source]: Switch to maintained repository. Remove compatibility patches and
snippet.
* gnu/packages/patches/python-scikit-optimize-1148.patch,
gnu/packages/patches/python-scikit-optimize-1148.patch: Remove files.
* gnu/local.mk (dist_patch_DATA): Remove them.

Change-Id: I6c23c93d3c256b0b97166f80eaeab7f2c7282c5f
---
scikit-optimize was archived by upstream without explanation. One of the (ex) maintainers forked the project and is updating it, seems to be a one man project, but again no annoucement. I noticed that the PyPI page for this package is now held by this new repo. Is it safe to merge?

 gnu/local.mk                                  |   2 -
 .../patches/python-scikit-optimize-1148.patch |  32 --
 .../patches/python-scikit-optimize-1150.patch | 275 ------------------
 gnu/packages/python-science.scm               |  19 +-
 4 files changed, 3 insertions(+), 325 deletions(-)
 delete mode 100644 gnu/packages/patches/python-scikit-optimize-1148.patch
 delete mode 100644 gnu/packages/patches/python-scikit-optimize-1150.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index f2b480bded..3d45b8f573 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1947,8 +1947,6 @@ dist_patch_DATA =						\
   %D%/packages/patches/python-robotframework-source-date-epoch.patch \
   %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
   %D%/packages/patches/python-scikit-bio-1887.patch		\
-  %D%/packages/patches/python-scikit-optimize-1148.patch	\
-  %D%/packages/patches/python-scikit-optimize-1150.patch	\
   %D%/packages/patches/python-typing-inspect-fix.patch		\
   %D%/packages/patches/python-unittest2-python3-compat.patch	\
   %D%/packages/patches/python-unittest2-remove-argparse.patch	\
diff --git a/gnu/packages/patches/python-scikit-optimize-1148.patch b/gnu/packages/patches/python-scikit-optimize-1148.patch
deleted file mode 100644
index 6ad854ab1e..0000000000
--- a/gnu/packages/patches/python-scikit-optimize-1148.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-From 3a5d5eb90ec9d8d4905c05387748486157cadbbb Mon Sep 17 00:00:00 2001
-From: valtron <[email-masked]>
-Date: Tue, 14 Feb 2023 09:56:10 -0700
-Subject: [PATCH] `np.int` -> `int`
-
-`np.int is int` and it was deprecated in numpy 1.20: https://numpy.org/doc/1.20/release/1.20.0-notes.html#deprecations
----
- skopt/space/transformers.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/skopt/space/transformers.py b/skopt/space/transformers.py
-index 68892952..f2dfb164 100644
---- a/skopt/space/transformers.py
-+++ b/skopt/space/transformers.py
-@@ -259,7 +259,7 @@ def transform(self, X):
-         if (self.high - self.low) == 0.:
-             return X * 0.
-         if self.is_int:
--            return (np.round(X).astype(np.int) - self.low) /\
-+            return (np.round(X).astype(int) - self.low) /\
-                    (self.high - self.low)
-         else:
-             return (X - self.low) / (self.high - self.low)
-@@ -272,7 +272,7 @@ def inverse_transform(self, X):
-             raise ValueError("All values should be greater than 0.0")
-         X_orig = X * (self.high - self.low) + self.low
-         if self.is_int:
--            return np.round(X_orig).astype(np.int)
-+            return np.round(X_orig).astype(int)
-         return X_orig
- 
- 
diff --git a/gnu/packages/patches/python-scikit-optimize-1150.patch b/gnu/packages/patches/python-scikit-optimize-1150.patch
deleted file mode 100644
index 0cdf361a80..0000000000
--- a/gnu/packages/patches/python-scikit-optimize-1150.patch
+++ /dev/null
@@ -1,275 +0,0 @@
-From cd74e00d0e4f435d548444e1a5edc20155e371d7 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20T=C3=B8rnes?= <[email-masked]>
-Date: Wed, 15 Feb 2023 18:47:52 +0100
-Subject: [PATCH 1/5] Update RandomForesetRegressor criterion to be inline with
- scikit-learn change from mse to squared error this has the same funcitonality
-
----
- requirements.txt         |  6 +++---
- setup.py                 |  6 +++---
- skopt/learning/forest.py | 30 +++++++++++++++---------------
- 3 files changed, 21 insertions(+), 21 deletions(-)
-
-diff --git a/requirements.txt b/requirements.txt
-index 1eaa3083a..23ab3d856 100644
---- a/requirements.txt
-+++ b/requirements.txt
-@@ -1,6 +1,6 @@
--numpy>=1.13.3
--scipy>=0.19.1
--scikit-learn>=0.20
-+numpy>=1.23.2
-+scipy>=1.10.0
-+scikit-learn>=1.2.1
- matplotlib>=2.0.0
- pytest
- pyaml>=16.9
-diff --git a/setup.py b/setup.py
-index 8879da880..e7f921765 100644
---- a/setup.py
-+++ b/setup.py
-@@ -42,9 +42,9 @@
-       classifiers=CLASSIFIERS,
-       packages=['skopt', 'skopt.learning', 'skopt.optimizer', 'skopt.space',
-                 'skopt.learning.gaussian_process', 'skopt.sampler'],
--      install_requires=['joblib>=0.11', 'pyaml>=16.9', 'numpy>=1.13.3',
--                        'scipy>=0.19.1',
--                        'scikit-learn>=0.20.0'],
-+      install_requires=['joblib>=0.11', 'pyaml>=16.9', 'numpy>=1.23.2',
-+                        'scipy>=1.10.0',
-+                        'scikit-learn>=1.2.1'],
-       extras_require={
-         'plots':  ["matplotlib>=2.0.0"]
-         }
-diff --git a/skopt/learning/forest.py b/skopt/learning/forest.py
-index 096770c1d..ebde568f5 100644
---- a/skopt/learning/forest.py
-+++ b/skopt/learning/forest.py
-@@ -27,7 +27,7 @@ def _return_std(X, trees, predictions, min_variance):
-     -------
-     std : array-like, shape=(n_samples,)
-         Standard deviation of `y` at `X`. If criterion
--        is set to "mse", then `std[i] ~= std(y | X[i])`.
-+        is set to "squared_error", then `std[i] ~= std(y | X[i])`.
- 
-     """
-     # This derives std(y | x) as described in 4.3.2 of arXiv:1211.0906
-@@ -61,9 +61,9 @@ class RandomForestRegressor(_sk_RandomForestRegressor):
-     n_estimators : integer, optional (default=10)
-         The number of trees in the forest.
- 
--    criterion : string, optional (default="mse")
-+    criterion : string, optional (default="squared_error")
-         The function to measure the quality of a split. Supported criteria
--        are "mse" for the mean squared error, which is equal to variance
-+        are "squared_error" for the mean squared error, which is equal to variance
-         reduction as feature selection criterion, and "mae" for the mean
-         absolute error.
- 
-@@ -194,7 +194,7 @@ class RandomForestRegressor(_sk_RandomForestRegressor):
-     .. [1] L. Breiman, "Random Forests", Machine Learning, 45(1), 5-32, 2001.
- 
-     """
--    def __init__(self, n_estimators=10, criterion='mse', max_depth=None,
-+    def __init__(self, n_estimators=10, criterion='squared_error', max_depth=None,
-                  min_samples_split=2, min_samples_leaf=1,
-                  min_weight_fraction_leaf=0.0, max_features='auto',
-                  max_leaf_nodes=None, min_impurity_decrease=0.,
-@@ -228,20 +228,20 @@ def predict(self, X, return_std=False):
-         Returns
-         -------
-         predictions : array-like of shape = (n_samples,)
--            Predicted values for X. If criterion is set to "mse",
-+            Predicted values for X. If criterion is set to "squared_error",
-             then `predictions[i] ~= mean(y | X[i])`.
- 
-         std : array-like of shape=(n_samples,)
-             Standard deviation of `y` at `X`. If criterion
--            is set to "mse", then `std[i] ~= std(y | X[i])`.
-+            is set to "squared_error", then `std[i] ~= std(y | X[i])`.
- 
-         """
-         mean = super(RandomForestRegressor, self).predict(X)
- 
-         if return_std:
--            if self.criterion != "mse":
-+            if self.criterion != "squared_error":
-                 raise ValueError(
--                    "Expected impurity to be 'mse', got %s instead"
-+                    "Expected impurity to be 'squared_error', got %s instead"
-                     % self.criterion)
-             std = _return_std(X, self.estimators_, mean, self.min_variance)
-             return mean, std
-@@ -257,9 +257,9 @@ class ExtraTreesRegressor(_sk_ExtraTreesRegressor):
-     n_estimators : integer, optional (default=10)
-         The number of trees in the forest.
- 
--    criterion : string, optional (default="mse")
-+    criterion : string, optional (default="squared_error")
-         The function to measure the quality of a split. Supported criteria
--        are "mse" for the mean squared error, which is equal to variance
-+        are "squared_error" for the mean squared error, which is equal to variance
-         reduction as feature selection criterion, and "mae" for the mean
-         absolute error.
- 
-@@ -390,7 +390,7 @@ class ExtraTreesRegressor(_sk_ExtraTreesRegressor):
-     .. [1] L. Breiman, "Random Forests", Machine Learning, 45(1), 5-32, 2001.
- 
-     """
--    def __init__(self, n_estimators=10, criterion='mse', max_depth=None,
-+    def __init__(self, n_estimators=10, criterion='squared_error', max_depth=None,
-                  min_samples_split=2, min_samples_leaf=1,
-                  min_weight_fraction_leaf=0.0, max_features='auto',
-                  max_leaf_nodes=None, min_impurity_decrease=0.,
-@@ -425,19 +425,19 @@ def predict(self, X, return_std=False):
-         Returns
-         -------
-         predictions : array-like of shape=(n_samples,)
--            Predicted values for X. If criterion is set to "mse",
-+            Predicted values for X. If criterion is set to "squared_error",
-             then `predictions[i] ~= mean(y | X[i])`.
- 
-         std : array-like of shape=(n_samples,)
-             Standard deviation of `y` at `X`. If criterion
--            is set to "mse", then `std[i] ~= std(y | X[i])`.
-+            is set to "squared_error", then `std[i] ~= std(y | X[i])`.
-         """
-         mean = super(ExtraTreesRegressor, self).predict(X)
- 
-         if return_std:
--            if self.criterion != "mse":
-+            if self.criterion != "squared_error":
-                 raise ValueError(
--                    "Expected impurity to be 'mse', got %s instead"
-+                    "Expected impurity to be 'squared_error', got %s instead"
-                     % self.criterion)
-             std = _return_std(X, self.estimators_, mean, self.min_variance)
-             return mean, std
-
-From 6eb2d4ddaa299ae47d9a69ffb31ebc4ed366d1c1 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20T=C3=B8rnes?= <[email-masked]>
-Date: Thu, 16 Feb 2023 11:34:58 +0100
-Subject: [PATCH 2/5] Change test to be consistent with code changes.
-
----
- skopt/learning/tests/test_forest.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/skopt/learning/tests/test_forest.py b/skopt/learning/tests/test_forest.py
-index 0711cde9d..c6ed610f3 100644
---- a/skopt/learning/tests/test_forest.py
-+++ b/skopt/learning/tests/test_forest.py
-@@ -35,7 +35,7 @@ def test_random_forest():
-     assert_array_equal(clf.predict(T), true_result)
-     assert 10 == len(clf)
- 
--    clf = RandomForestRegressor(n_estimators=10, criterion="mse",
-+    clf = RandomForestRegressor(n_estimators=10, criterion="squared_error",
-                                 max_depth=None, min_samples_split=2,
-                                 min_samples_leaf=1,
-                                 min_weight_fraction_leaf=0.,
-@@ -80,7 +80,7 @@ def test_extra_forest():
-     assert_array_equal(clf.predict(T), true_result)
-     assert 10 == len(clf)
- 
--    clf = ExtraTreesRegressor(n_estimators=10, criterion="mse",
-+    clf = ExtraTreesRegressor(n_estimators=10, criterion="squared_error",
-                               max_depth=None, min_samples_split=2,
-                               min_samples_leaf=1, min_weight_fraction_leaf=0.,
-                               max_features="auto", max_leaf_nodes=None,
-
-From 52c620add07d845debbaff2ce2b1c5faf3eae79b Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20T=C3=B8rnes?= <[email-masked]>
-Date: Wed, 22 Feb 2023 16:59:03 +0100
-Subject: [PATCH 3/5] Update skopt/learning/forest.py
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Fix max line width
-
-Co-authored-by: Roland Laurès <[email-masked]>
----
- skopt/learning/forest.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/skopt/learning/forest.py b/skopt/learning/forest.py
-index ebde568f5..07dc42664 100644
---- a/skopt/learning/forest.py
-+++ b/skopt/learning/forest.py
-@@ -194,8 +194,8 @@ class RandomForestRegressor(_sk_RandomForestRegressor):
-     .. [1] L. Breiman, "Random Forests", Machine Learning, 45(1), 5-32, 2001.
- 
-     """
--    def __init__(self, n_estimators=10, criterion='squared_error', max_depth=None,
--                 min_samples_split=2, min_samples_leaf=1,
-+    def __init__(self, n_estimators=10, criterion='squared_error',
-+                 max_depth=None, min_samples_split=2, min_samples_leaf=1,
-                  min_weight_fraction_leaf=0.0, max_features='auto',
-                  max_leaf_nodes=None, min_impurity_decrease=0.,
-                  bootstrap=True, oob_score=False,
-
-From 52a7db95cb567186fb4e9003139fea4592bdbf05 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20T=C3=B8rnes?= <[email-masked]>
-Date: Wed, 22 Feb 2023 17:03:25 +0100
-Subject: [PATCH 4/5] Fix line widht issues
-
----
- skopt/learning/forest.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/skopt/learning/forest.py b/skopt/learning/forest.py
-index 07dc42664..d4c24456b 100644
---- a/skopt/learning/forest.py
-+++ b/skopt/learning/forest.py
-@@ -390,8 +390,8 @@ class ExtraTreesRegressor(_sk_ExtraTreesRegressor):
-     .. [1] L. Breiman, "Random Forests", Machine Learning, 45(1), 5-32, 2001.
- 
-     """
--    def __init__(self, n_estimators=10, criterion='squared_error', max_depth=None,
--                 min_samples_split=2, min_samples_leaf=1,
-+    def __init__(self, n_estimators=10, criterion='squared_error',
-+                 max_depth=None, min_samples_split=2, min_samples_leaf=1,
-                  min_weight_fraction_leaf=0.0, max_features='auto',
-                  max_leaf_nodes=None, min_impurity_decrease=0.,
-                  bootstrap=False, oob_score=False,
-
-From 6b185e489fb4a56625e8505292a20c80434f0633 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Jonas=20T=C3=B8rnes?= <[email-masked]>
-Date: Wed, 22 Feb 2023 18:37:11 +0100
-Subject: [PATCH 5/5] Fix lin width issues for comments.
-
----
- skopt/learning/forest.py | 12 ++++++------
- 1 file changed, 6 insertions(+), 6 deletions(-)
-
-diff --git a/skopt/learning/forest.py b/skopt/learning/forest.py
-index d4c24456b..eb3bd6648 100644
---- a/skopt/learning/forest.py
-+++ b/skopt/learning/forest.py
-@@ -63,9 +63,9 @@ class RandomForestRegressor(_sk_RandomForestRegressor):
- 
-     criterion : string, optional (default="squared_error")
-         The function to measure the quality of a split. Supported criteria
--        are "squared_error" for the mean squared error, which is equal to variance
--        reduction as feature selection criterion, and "mae" for the mean
--        absolute error.
-+        are "squared_error" for the mean squared error, which is equal to
-+        variance reduction as feature selection criterion, and "mae" for the
-+        mean absolute error.
- 
-     max_features : int, float, string or None, optional (default="auto")
-         The number of features to consider when looking for the best split:
-@@ -259,9 +259,9 @@ class ExtraTreesRegressor(_sk_ExtraTreesRegressor):
- 
-     criterion : string, optional (default="squared_error")
-         The function to measure the quality of a split. Supported criteria
--        are "squared_error" for the mean squared error, which is equal to variance
--        reduction as feature selection criterion, and "mae" for the mean
--        absolute error.
-+        are "squared_error" for the mean squared error, which is equal to
-+        variance reduction as feature selection criterion, and "mae" for the
-+        mean absolute error.
- 
-     max_features : int, float, string or None, optional (default="auto")
-         The number of features to consider when looking for the best split:
diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm
index 93d3b25272..762e8c98e5 100644
--- a/gnu/packages/python-science.scm
+++ b/gnu/packages/python-science.scm
@@ -364,29 +364,16 @@ (define-public python-scikit-opt
 (define-public python-scikit-optimize
   (package
     (name "python-scikit-optimize")
-    (version "0.9.0")
+    (version "0.10.1")
     (source (origin
               (method git-fetch)
               (uri (git-reference
-                    (url "https://github.com/scikit-optimize/scikit-optimize")
+                    (url "https://github.com/holgern/scikit-optimize")
                     (commit (string-append "v" version))))
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "0hsq6pmryimxc275yrcy4bv217bx7ma6rz0q6m4138bv4zgq18d1"))
-              (patches
-               ;; These are for compatibility with more recent versions of
-               ;; numpy and scikit-learn.
-               (search-patches "python-scikit-optimize-1148.patch"
-                               "python-scikit-optimize-1150.patch"))
-              (modules '((guix build utils)))
-              (snippet
-               ;; Since scikit-learn 1.3 max_features no longer supports
-               ;; 'auto', which is identical to 'sqrt'
-               '(substitute* '("skopt/learning/forest.py"
-                               "skopt/learning/tests/test_forest.py")
-                  (("max_features=['\"]auto['\"]")
-                   "max_features='sqrt'")))))
+                "1c9b7g3v9ajaq78nzv6gy3xqlfjlcqqhsq87d7gfc4pdswvfv1ns"))))
     (build-system pyproject-build-system)
     (propagated-inputs
      (list python-joblib

base-commit: a17976e975001d3e95c998f1196a39bbb432de4f
prerequisite-patch-id: 35b1bce8404aa9b122774f343fbde6b1accb6a33
prerequisite-patch-id: c0c840125378b58dddfeb89491c36a0ffcd34d90
prerequisite-patch-id: 6307ea85cee71834b4e3b8d362025c19d5144177
prerequisite-patch-id: e49db0ce706076aafa11c84cbe27a017531f7a98
prerequisite-patch-id: dc8571a1261a53ba90ae37dcebe79bc99630e661
prerequisite-patch-id: 1462b7d670025fea8e66ed6290a994e62035ef5d
prerequisite-patch-id: 3e713b03abf25cc015c33e810b179af1c0b42804
prerequisite-patch-id: 920528da46d1621c15c5a6f10464c7ae5cde4003
prerequisite-patch-id: 7a94347b316fc5e4f20f51fe2ddeb097c3cae79f
prerequisite-patch-id: 098696bf90a9e1b3e6237ae8c647b63d3bed8c6e
prerequisite-patch-id: 84cc8b92fa6e1e0491a5f7ca020d13c662d3d3be
prerequisite-patch-id: c56fb6c601a1014b6ba876b8d601449e535ea7b5
prerequisite-patch-id: 5971911f2fe36d93c11c11ec878495033dec14cf
prerequisite-patch-id: 6e1fecd20a532eca97a9ea044765186159f6551e
prerequisite-patch-id: 1ad8cb8f6e5ccfb35b32ea20a1c2f0b25de08b6b
prerequisite-patch-id: 9a72f1e2eda3506da18d209bd83c0a45adeadfe3
-- 
2.39.2