From 7c3da54d383ad91b494b1cf20212de522a88e15e Mon Sep 17 00:00:00 2001 From: jeremie du boisberranger Date: Fri, 5 Apr 2024 14:04:26 +0200 Subject: [PATCH 1/7] remove numpy<2 constraint --- setup.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/setup.py b/setup.py index 10296aed5f2eb..bc1921a06ebb8 100755 --- a/setup.py +++ b/setup.py @@ -614,12 +614,6 @@ def setup_package(): }, ) - # Overwrite the dependencies to not allow for NumPy >= 2.0 - metadata["install_requires"] = [ - f"{dep},<2.0" if dep.startswith("numpy") else dep - for dep in metadata["install_requires"] - ] - commands = [arg for arg in sys.argv[1:] if not arg.startswith("-")] if not all( command in ("egg_info", "dist_info", "clean", "check") for command in commands From 36908b67f844497c111d5402306939acfde0aab7 Mon Sep 17 00:00:00 2001 From: jeremie du boisberranger Date: Fri, 5 Apr 2024 14:07:48 +0200 Subject: [PATCH 2/7] bump version --- sklearn/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/__init__.py b/sklearn/__init__.py index 8c674b3635181..069f3ad50b951 100644 --- a/sklearn/__init__.py +++ b/sklearn/__init__.py @@ -42,7 +42,7 @@ # Dev branch marker is: 'X.Y.dev' or 'X.Y.devN' where N is an integer. # 'X.Y.dev0' is the canonical version of 'X.Y.dev' # -__version__ = "1.4.1.post1" +__version__ = "1.4.2" # On OSX, we can get a runtime error due to multiple OpenMP libraries loaded From 87c32d35eeb8f6f7fec63dc3d97d9c416545f053 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Mon, 18 Mar 2024 12:37:57 +0100 Subject: [PATCH 3/7] TST remove sparse-np.float16 support in tests (#28635) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- sklearn/preprocessing/tests/test_data.py | 8 +++++++- sklearn/utils/tests/test_validation.py | 1 - 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/sklearn/preprocessing/tests/test_data.py b/sklearn/preprocessing/tests/test_data.py index 2896e729e970b..24d8ab2a36c3a 100644 --- a/sklearn/preprocessing/tests/test_data.py +++ b/sklearn/preprocessing/tests/test_data.py @@ -208,7 +208,13 @@ def test_standard_scaler_dtype(add_sample_weight, sparse_container): else: sample_weight = None with_mean = True - for dtype in [np.float16, np.float32, np.float64]: + if sparse_container is not None: + # scipy sparse containers do not support float16, see + # https://github.com/scipy/scipy/issues/7408 for more details. + supported_dtype = [np.float64, np.float32] + else: + supported_dtype = [np.float64, np.float32, np.float16] + for dtype in supported_dtype: X = rng.randn(n_samples, n_features).astype(dtype) if sparse_container is not None: X = sparse_container(X) diff --git a/sklearn/utils/tests/test_validation.py b/sklearn/utils/tests/test_validation.py index 292c2cbbde95d..0cd65685c0a85 100644 --- a/sklearn/utils/tests/test_validation.py +++ b/sklearn/utils/tests/test_validation.py @@ -1632,7 +1632,6 @@ def test_check_pandas_sparse_invalid(ntype1, ntype2): "ntype1, ntype2, expected_subtype", [ ("double", "longdouble", np.floating), - ("float16", "half", np.floating), ("single", "float32", np.floating), ("double", "float64", np.floating), ("int8", "byte", np.integer), From 01cd8d476092a51e2693e37b43d735fa7b96034f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 6 Mar 2024 17:45:43 +0100 Subject: [PATCH 4/7] CI fix scipy-dev by using asarray() instead of array(..., copy=False) (#28583) --- sklearn/preprocessing/_label.py | 2 +- sklearn/utils/fixes.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/sklearn/preprocessing/_label.py b/sklearn/preprocessing/_label.py index 41494f2649a01..bd009d52a6853 100644 --- a/sklearn/preprocessing/_label.py +++ b/sklearn/preprocessing/_label.py @@ -827,7 +827,7 @@ def fit_transform(self, y): class_mapping[:] = tmp self.classes_, inverse = np.unique(class_mapping, return_inverse=True) # ensure yt.indices keeps its current dtype - yt.indices = np.array(inverse[yt.indices], dtype=yt.indices.dtype, copy=False) + yt.indices = np.asarray(inverse[yt.indices], dtype=yt.indices.dtype) if not self.sparse_output: yt = yt.toarray() diff --git a/sklearn/utils/fixes.py b/sklearn/utils/fixes.py index 2769e99b8619c..e97062390920d 100644 --- a/sklearn/utils/fixes.py +++ b/sklearn/utils/fixes.py @@ -256,14 +256,17 @@ def _sparse_nan_min_max(X, axis): from scipy.integrate import trapz as trapezoid # type: ignore # noqa -# TODO: Remove when Pandas > 2.2 is the minimum supported version +# TODO: Adapt when Pandas > 2.2 is the minimum supported version def pd_fillna(pd, frame): pd_version = parse_version(pd.__version__).base_version if parse_version(pd_version) < parse_version("2.2"): frame = frame.fillna(value=np.nan) else: + infer_objects_kwargs = ( + {} if parse_version(pd_version) >= parse_version("3") else {"copy": False} + ) with pd.option_context("future.no_silent_downcasting", True): - frame = frame.fillna(value=np.nan).infer_objects(copy=False) + frame = frame.fillna(value=np.nan).infer_objects(**infer_objects_kwargs) return frame From c329eb3f3e8779c1118703dfb367569fdfe0851b Mon Sep 17 00:00:00 2001 From: jeremie du boisberranger Date: Fri, 5 Apr 2024 15:19:41 +0200 Subject: [PATCH 5/7] pin numpy==2.0.0rc1 to force cibuildwheels to build against numpy 2 --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index d55bf62b55ed0..815402cc4f783 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ requires = [ "setuptools", "wheel", "Cython>=3.0.8", - "numpy>=1.25", + "numpy==2.0.0rc1", "scipy>=1.6.0", ] From c9a73248c5fc538280f46ca3ef39ea646e590b7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20du=20Boisberranger?= Date: Mon, 8 Apr 2024 18:01:39 +0200 Subject: [PATCH 6/7] MAINT Set 1.4.2 release month (#28790) --- doc/whats_new/v1.4.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/whats_new/v1.4.rst b/doc/whats_new/v1.4.rst index 176504409fbc4..c41476a8ff91b 100644 --- a/doc/whats_new/v1.4.rst +++ b/doc/whats_new/v1.4.rst @@ -13,6 +13,15 @@ For a short description of the main highlights of the release, please refer to .. include:: changelog_legend.inc +.. _changes_1_4_2: + +Version 1.4.2 +============= + +**April 2024** + +This release only includes support for numpy 2. + .. _changes_1_4_1: Version 1.4.1.post1 From b5b65f72feab70685cc06725396383e87eb47d67 Mon Sep 17 00:00:00 2001 From: jeremie du boisberranger Date: Mon, 8 Apr 2024 18:17:22 +0200 Subject: [PATCH 7/7] update news [cd build] --- doc/templates/index.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/templates/index.html b/doc/templates/index.html index 85f286520a7ba..ad54eb877c413 100644 --- a/doc/templates/index.html +++ b/doc/templates/index.html @@ -169,6 +169,8 @@

News

  • On-going development: scikit-learn 1.5 (Changelog)
  • +
  • April 2024. scikit-learn 1.4.2 is available for download (Changelog). +
  • February 2024. scikit-learn 1.4.1.post1 is available for download (Changelog).
  • January 2024. scikit-learn 1.4.0 is available for download (Changelog).