From 83da530ae10c9a6226e08a71ed0b7e89868f6846 Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Sat, 10 Aug 2024 23:50:37 +1000 Subject: [PATCH 01/17] FIX Add error when `LeaveOneOut` used in `CalibratedClassifierCV` (#29545) --- doc/whats_new/v1.5.rst | 7 ++++ sklearn/calibration.py | 9 ++++- sklearn/tests/test_calibration.py | 62 +++++++++++++++++++------------ 3 files changed, 54 insertions(+), 24 deletions(-) diff --git a/doc/whats_new/v1.5.rst b/doc/whats_new/v1.5.rst index 059875eec12d6..b5542a0d1cf5f 100644 --- a/doc/whats_new/v1.5.rst +++ b/doc/whats_new/v1.5.rst @@ -23,6 +23,13 @@ Version 1.5.2 Changelog --------- +:mod:`sklearn.calibration` +.......................... + +- |Fix| Raise error when :class:`~sklearn.model_selection.LeaveOneOut` used in + `cv`, matching what would happen if `KFold(n_splits=n_samples)` was used. + :pr:`29545` by :user:`Lucy Liu ` + :mod:`sklearn.compose` ...................... diff --git a/sklearn/calibration.py b/sklearn/calibration.py index bc5ed634a3be4..609f051ab1626 100644 --- a/sklearn/calibration.py +++ b/sklearn/calibration.py @@ -24,7 +24,7 @@ clone, ) from .isotonic import IsotonicRegression -from .model_selection import check_cv, cross_val_predict +from .model_selection import LeaveOneOut, check_cv, cross_val_predict from .preprocessing import LabelEncoder, label_binarize from .svm import LinearSVC from .utils import ( @@ -390,6 +390,13 @@ def fit(self, X, y, sample_weight=None, **fit_params): "cross-validation but provided less than " f"{n_folds} examples for at least one class." ) + if isinstance(self.cv, LeaveOneOut): + raise ValueError( + "LeaveOneOut cross-validation does not allow" + "all classes to be present in test splits. " + "Please use a cross-validation generator that allows " + "all classes to appear in every test and train split." + ) cv = check_cv(self.cv, y, classifier=True) if self.ensemble: diff --git a/sklearn/tests/test_calibration.py b/sklearn/tests/test_calibration.py index c2cbad4060fde..b80083f3eac0d 100644 --- a/sklearn/tests/test_calibration.py +++ b/sklearn/tests/test_calibration.py @@ -146,6 +146,20 @@ def test_calibration_cv_splitter(data, ensemble): assert len(calib_clf.calibrated_classifiers_) == expected_n_clf +def test_calibration_cv_nfold(data): + # Check error raised when number of examples per class less than nfold + X, y = data + + kfold = KFold(n_splits=101) + calib_clf = CalibratedClassifierCV(cv=kfold, ensemble=True) + with pytest.raises(ValueError, match="Requesting 101-fold cross-validation"): + calib_clf.fit(X, y) + + calib_clf = CalibratedClassifierCV(cv=LeaveOneOut(), ensemble=True) + with pytest.raises(ValueError, match="LeaveOneOut cross-validation does"): + calib_clf.fit(X, y) + + @pytest.mark.parametrize("method", ["sigmoid", "isotonic"]) @pytest.mark.parametrize("ensemble", [True, False]) def test_sample_weight(data, method, ensemble): @@ -423,45 +437,47 @@ def test_calibration_nan_imputer(ensemble): @pytest.mark.parametrize("ensemble", [True, False]) def test_calibration_prob_sum(ensemble): - # Test that sum of probabilities is 1. A non-regression test for - # issue #7796 - num_classes = 2 - X, y = make_classification(n_samples=10, n_features=5, n_classes=num_classes) + # Test that sum of probabilities is (max) 1. A non-regression test for + # issue #7796 - when test has fewer classes than train + X, _ = make_classification(n_samples=10, n_features=5, n_classes=2) + y = [1, 1, 1, 1, 1, 0, 0, 0, 0, 0] clf = LinearSVC(C=1.0, random_state=7) + # In the first and last fold, test will have 1 class while train will have 2 clf_prob = CalibratedClassifierCV( - clf, method="sigmoid", cv=LeaveOneOut(), ensemble=ensemble + clf, method="sigmoid", cv=KFold(n_splits=3), ensemble=ensemble ) clf_prob.fit(X, y) - - probs = clf_prob.predict_proba(X) - assert_array_almost_equal(probs.sum(axis=1), np.ones(probs.shape[0])) + assert_allclose(clf_prob.predict_proba(X).sum(axis=1), 1.0) @pytest.mark.parametrize("ensemble", [True, False]) def test_calibration_less_classes(ensemble): # Test to check calibration works fine when train set in a test-train # split does not contain all classes - # Since this test uses LOO, at each iteration train set will not contain a - # class label - X = np.random.randn(10, 5) - y = np.arange(10) - clf = LinearSVC(C=1.0, random_state=7) + # In 1st split, train is missing class 0 + # In 3rd split, train is missing class 3 + X = np.random.randn(12, 5) + y = [0, 0, 0, 1] + [1, 1, 2, 2] + [2, 3, 3, 3] + clf = DecisionTreeClassifier(random_state=7) cal_clf = CalibratedClassifierCV( - clf, method="sigmoid", cv=LeaveOneOut(), ensemble=ensemble + clf, method="sigmoid", cv=KFold(3), ensemble=ensemble ) cal_clf.fit(X, y) - for i, calibrated_classifier in enumerate(cal_clf.calibrated_classifiers_): - proba = calibrated_classifier.predict_proba(X) - if ensemble: + if ensemble: + classes = np.arange(4) + for calib_i, class_i in zip([0, 2], [0, 3]): + proba = cal_clf.calibrated_classifiers_[calib_i].predict_proba(X) # Check that the unobserved class has proba=0 - assert_array_equal(proba[:, i], np.zeros(len(y))) + assert_array_equal(proba[:, class_i], np.zeros(len(y))) # Check for all other classes proba>0 - assert np.all(proba[:, :i] > 0) - assert np.all(proba[:, i + 1 :] > 0) - else: - # Check `proba` are all 1/n_classes - assert np.allclose(proba, 1 / proba.shape[0]) + assert np.all(proba[:, classes != class_i] > 0) + + # When `ensemble=False`, `cross_val_predict` is used to compute predictions + # to fit only one `calibrated_classifiers_` + else: + proba = cal_clf.calibrated_classifiers_[0].predict_proba(X) + assert_array_almost_equal(proba.sum(axis=1), np.ones(proba.shape[0])) @pytest.mark.parametrize( From 94ca256871a21c76c4431723b14bb0b58729ac0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Sat, 10 Aug 2024 15:55:44 +0200 Subject: [PATCH 02/17] BLD Remove confusing default Meson buildtype (#29594) --- meson.build | 1 - 1 file changed, 1 deletion(-) diff --git a/meson.build b/meson.build index 9902d3fe189d2..3f14108f77998 100644 --- a/meson.build +++ b/meson.build @@ -5,7 +5,6 @@ project( license: 'BSD-3', meson_version: '>= 1.1.0', default_options: [ - 'buildtype=debugoptimized', 'c_std=c11', 'cpp_std=c++14', ], From edfb690954412a4754dcf5d05ba45256349eaeff Mon Sep 17 00:00:00 2001 From: ParsifalXu <43930877+ParsifalXu@users.noreply.github.com> Date: Sun, 11 Aug 2024 07:20:18 +0800 Subject: [PATCH 03/17] Updating documentation of `SequentialFeatureSelector` (#29468) Co-authored-by: Adrin Jalali Co-authored-by: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Co-authored-by: Thomas J. Fan --- sklearn/feature_selection/_sequential.py | 5 ++++- sklearn/feature_selection/tests/test_sequential.py | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/sklearn/feature_selection/_sequential.py b/sklearn/feature_selection/_sequential.py index 9578e27920d12..99700e50661ed 100644 --- a/sklearn/feature_selection/_sequential.py +++ b/sklearn/feature_selection/_sequential.py @@ -65,6 +65,7 @@ class SequentialFeatureSelector(SelectorMixin, MetaEstimatorMixin, BaseEstimator consecutive feature additions or removals, stop adding or removing. `tol` can be negative when removing features using `direction="backward"`. + `tol` is required to be strictly positive when doing forward selection. It can be useful to reduce the number of features at the cost of a small decrease in the score. @@ -250,7 +251,9 @@ def fit(self, X, y=None, **params): self.n_features_to_select_ = int(n_features * self.n_features_to_select) if self.tol is not None and self.tol < 0 and self.direction == "forward": - raise ValueError("tol must be positive when doing forward selection") + raise ValueError( + "tol must be strictly positive when doing forward selection" + ) cv = check_cv(self.cv, y, classifier=is_classifier(self.estimator)) diff --git a/sklearn/feature_selection/tests/test_sequential.py b/sklearn/feature_selection/tests/test_sequential.py index c6fa9b15dc80a..b98d5b400b84e 100644 --- a/sklearn/feature_selection/tests/test_sequential.py +++ b/sklearn/feature_selection/tests/test_sequential.py @@ -278,7 +278,7 @@ def test_forward_neg_tol_error(): tol=-1e-3, ) - with pytest.raises(ValueError, match="tol must be positive"): + with pytest.raises(ValueError, match="tol must be strictly positive"): sfs.fit(X, y) From d5e4202c392e2c4f669611d00158babf92588578 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Mon, 12 Aug 2024 10:32:59 +0200 Subject: [PATCH 04/17] DOC add CZI and Wellcome Trust as funders (#29646) Co-authored-by: Thomas J. Fan --- doc/about.rst | 31 +++++++++++++++++++++++++++- doc/images/czi-small.png | Bin 0 -> 16114 bytes doc/images/czi.png | Bin 0 -> 11788 bytes doc/images/czi_logo.svg | 19 ----------------- doc/images/wellcome-trust-small.png | Bin 0 -> 7109 bytes doc/images/wellcome-trust.png | Bin 0 -> 6512 bytes doc/templates/index.html | 2 ++ 7 files changed, 32 insertions(+), 20 deletions(-) create mode 100644 doc/images/czi-small.png create mode 100644 doc/images/czi.png delete mode 100644 doc/images/czi_logo.svg create mode 100644 doc/images/wellcome-trust-small.png create mode 100644 doc/images/wellcome-trust.png diff --git a/doc/about.rst b/doc/about.rst index 7d2039fb890be..7ea26ad126eea 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -292,6 +292,35 @@ The project would like to thank the following funders. ........... +.. |czi| image:: images/czi.png + :target: https://chanzuckerberg.com + +.. |wellcome| image:: images/wellcome-trust.png + :target: https://wellcome.org/ + +.. div:: sk-text-image-grid-small + + .. div:: text-box + + `The Chan-Zuckerberg Initiative `_ and + `Wellcome Trust `_ fund scikit-learn through the + `Essential Open Source Software for Science (EOSS) `_ + cycle 6. + + It supports Lucy Liu and diversity & inclusion initiatives that will + be announced in the future. + + .. div:: image-box + + .. table:: + :class: image-subtable + + +----------+----------------+ + | |czi| | |wellcome| | + +----------+----------------+ + +........... + .. div:: sk-text-image-grid-small .. div:: text-box @@ -455,7 +484,7 @@ Past Sponsors .. div:: image-box - .. image:: images/czi_logo.svg + .. image:: images/czi.png :target: https://chanzuckerberg.com ...................... diff --git a/doc/images/czi-small.png b/doc/images/czi-small.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6c81acb44a0722a3d0c35d44d994b63dc0ae80 GIT binary patch literal 16114 zcmeHtWl&sA*X`i$?(XjH?(Ps6U~qQ{?ry=|CAdp)Cj^%S_uy_p!X?k^b-zDf)xH1T znL0D)^xk{z-m6#lOjmW3szHl~jNKru=ikLcf1*12QrI06I(`O&pUT(Mdprv_bk^KLw5zFtfp5_e8C zbUwM$bA^$w$$_(G1es*K8oym+1iYRYPlfL(DV83jHSHVQHT;@FSrmSIdOf!LVtgS& zvf0}~Lc(Jla4CrSNStSE>!1JTz2;}M^=s)DonMz~?ghz6LV(o;(#O{$@r$@%>AhdT zZXBD7u;75-TN?;Aumu(chjh!Hm~`UXGV zkqJY!=!@Kpk3XzoNaneIvVC=)Wm;Z$e)i9IU>~Y*zFL1i8uY6U-^tGJ z$3Mlq+m2@`3=4zu%gErlta!tZ>3Xn#@R-+f_(C{+8y~~>VLPtp#rWgPmH5xG{oJNI z+Zx>T^kQ~IJ!NBWY-s17yD~@2mp^xZ1~l6C1s^fHf`ZrMf1*=#EVu2+Y~%A^4h=of zEE(!uK)G+4Oh$J#z%xeGnT}6&* z_RpF2_xn1!TSF6{t2e|z-DiTb#Bo3&?*g$NL zVtAbOcu=(%_tdfLj%G%jxNn~^+$}2Gh6{dMU!F43tN5YbUy5Z!653ird5hm(@4t;* z3q!j2aIRhL|A0=@YC-iyu7`O^C~v$I_M-xc&un8){&R{uLirWN4b|-@-!a=~e(@7f zST~*>!|d@&WUL}Fgw$5m32>gPB*jb zn&yBZ<++)np+r!KT-qjmL@{T4j+fFAM5I|It6v*`*rE7M5XtW<1c{*eX1VFzlb~+O zkGr$i?~{{!eQBGxM;^kyK~sbLgN$(`k6-Q6C}K5A3N3=AZXT8Zu6y3R3tqWNGsiJw z1BsFEg+5~5u1_XYLJ9+#s>QT(4H|pO;4jxp5O7ln78F>Be2|_%(q#4-9-fnM50Qg? zn$CA?KQEHlxeaZ#(f3YnQpR+{b)6pw?a;_;t3T2mO#Q`vseay^wa4)79(3-y-qj%9^=Pe-rH}A)6nA5b$Nm7C?0Zy8%r50=7aOl<-2G#{ z&Q1ah>~~uedQ@48J$<#yMpr(sLZF(??LOf C&B#px6YcqENiK;%8e1+(O@>XRq* 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
  • `R6zUvbiH zJ}83E(=-ux>FDAr1uWN73`Q!xNDJ*P^euND#~m!q?H7W)tlBlBex(37DSF)zmng`%)!!_B8pU|1@6ZbW2|J#Fr!(ds+zti_;b;}6t!h;-}WEM1O5i@`NJ?vJdw2l|XFT2g{}9+Tsl zi*a_NYoDq=Zq`2xX{#L`V%<-->rz3GuoV$Cd6j^v^Z>Q)?$i$~`vg63kQl5NiV3t& zoZ?J>e4VRbf%^{USEzwJIR2xbmtAA))#Yp1{{b`)30?pI literal 0 HcmV?d00001 diff --git a/doc/images/czi.png b/doc/images/czi.png new file mode 100644 index 0000000000000000000000000000000000000000..9f2b6ebb26c5ca0537d4928859b0e311ae7d89a2 GIT binary patch literal 11788 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 - - - nav / elements / czi_mark_red - Created with Sketch. - - - - - - - - - - - - - - \ No newline at end of file diff --git a/doc/images/wellcome-trust-small.png b/doc/images/wellcome-trust-small.png new file mode 100644 index 0000000000000000000000000000000000000000..32be045a080a2d5790dde7d37808fba0dde51c3e GIT binary patch literal 7109 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 literal 0 HcmV?d00001 diff --git a/doc/templates/index.html b/doc/templates/index.html index 875a295068f7c..c99d45ff1321f 100644 --- a/doc/templates/index.html +++ b/doc/templates/index.html @@ -300,6 +300,8 @@

    Who uses scikit-learn?

    + + From 5d0544983f3c7d24b3dfde278ba0842e9382cc49 Mon Sep 17 00:00:00 2001 From: scikit-learn-bot Date: Mon, 12 Aug 2024 01:34:05 -0700 Subject: [PATCH 05/17] :lock: :robot: CI Update lock files for main CI build(s) :lock: :robot: (#29659) Co-authored-by: Lock file bot --- build_tools/azure/debian_atlas_32bit_lock.txt | 2 +- ...latest_conda_forge_mkl_linux-64_conda.lock | 56 +++++++++---------- ...pylatest_conda_forge_mkl_osx-64_conda.lock | 18 +++--- ...test_conda_mkl_no_openmp_osx-64_conda.lock | 8 +-- ...st_pip_openblas_pandas_linux-64_conda.lock | 12 ++-- .../pymin_conda_forge_mkl_win-64_conda.lock | 12 ++-- ...nblas_min_dependencies_linux-64_conda.lock | 16 +++--- ...e_openblas_ubuntu_2204_linux-64_conda.lock | 20 +++---- build_tools/circle/doc_linux-64_conda.lock | 36 ++++++------ .../doc_min_dependencies_linux-64_conda.lock | 26 ++++----- 10 files changed, 103 insertions(+), 103 deletions(-) diff --git a/build_tools/azure/debian_atlas_32bit_lock.txt b/build_tools/azure/debian_atlas_32bit_lock.txt index 64513a4be3866..6e407243fc695 100644 --- a/build_tools/azure/debian_atlas_32bit_lock.txt +++ b/build_tools/azure/debian_atlas_32bit_lock.txt @@ -4,7 +4,7 @@ # # pip-compile --output-file=build_tools/azure/debian_atlas_32bit_lock.txt build_tools/azure/debian_atlas_32bit_requirements.txt # -attrs==24.1.0 +attrs==24.2.0 # via pytest coverage==7.6.1 # via pytest-cov diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock index d25420e46b309..e54faa3011313 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock @@ -22,7 +22,7 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62e https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.3-h4bc722e_0.conda#7624e34ee6baebfc80d67bac76cc9d9d https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 @@ -50,7 +50,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852 https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.1-h87b94db_1.conda#2d76d2cfdcfe2d5c3883d33d8be919e7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h87b94db_0.conda#8623f26fa29df281dc69ebdb41df0a25 https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-he027950_7.conda#11e5cb0b426772974f6416545baee0ce https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-he027950_3.conda#adbf0c44ca88a3cded175cd809a106b6 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-he027950_7.conda#95611b325a9728ed68b8f7eef2dd3feb @@ -81,43 +81,43 @@ https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#391 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 -https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.17-he19d79f_0.conda#e25ac9bf10f8e6aa67727b1cdbe762ef +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.19-h3400bea_0.conda#7d6818f07e4471d471be9b4252d7b54c https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda#6b7dcc7349efd123d493d2dbe85a045f https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.0-h5291e77_0.conda#c13ca0abd5d1d31d0eebcf86d51da8a4 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.10-h826b7d6_1.conda#6961646dded770513a781de4cd5c1fe1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h6ea103f_1.conda#b0da9b0d46def0a1190790e623f246d3 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda#8cdb7d41faa0260875ba92414c487e2d -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda#08a9265c637230c37cb1be4a6cad4536 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.8-hf5423f3_0.conda#322be9d39e030673e105b0abb320514e https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h38ae2d0_2.conda#168e18a2bba4f8520e6c5e38982f5847 https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d -https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda#d73490214f536cccb5819e9873048c92 +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda#9c56c4df45f6571b13111d8df2448692 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-hb711507_2.conda#8637c3e5821654d0edf97e2b0404b443 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda#ad748ccca349aec3e91743e08b5e2b50 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda#0e0cbe0564d03a99afd5fd7b362feecd https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda#608e0ef8256b81d04456e8d211eee3e8 https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda#4a6d410296d7e39f00bacdee7df046e9 https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.8-pyhd8ed1ab_0.conda#1178a75b8f6f260ac4b4436979754278 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h7671281_15.conda#3b45b0da170f515de8be68155e14955a -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-he17ee6b_6.conda#4e3d1bb2ade85619ac2163e695c2cc1b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h29f85be_19.conda#5e668aea2cda1c93c9ae72da95415440 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-h45b8271_1.conda#397d8a9cad2e86361587d37840f41e4c https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda#f27a24d46e3ea7b70a1f98e50c62508f https://conda.anaconda.org/conda-forge/linux-64/ccache-4.10.1-h065aff2_0.conda#d6b48c138e0c8170a6fe9c136e063540 https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.10-py312h30efb56_0.conda#b119273bff37284cbcb9281c1e85e67d +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.11-py312hca68cad_0.conda#f824c60def49466ad5b9aed4eaa23c28 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 @@ -130,8 +130,8 @@ https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda#7da1d242ca3591e174a3c7d82230d3c0 https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.1-default_hecaa2ac_1000.conda#f54aeebefb5c5ff84eca4fb05ca8aa3a -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda#6ff0b9582da2d4a74a1f9ae1f9ce2af6 https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca @@ -158,8 +158,8 @@ https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2. https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.42-h4ab18f5_0.conda#b193af204da1bfb8c13882d131a14bd2 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-hbd3ac97_10.conda#7ca4abcc98c7521c02f4e8809bbe40df -https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hcd6a914_8.conda#b81c45867558446640306507498b2c6b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-hdfe1943_2.conda#02273b04ae28f0822310d1be2be75c83 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h7eb77b2_15.conda#46913a2424bbf6b8c5ab5910d967c64a https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda#debd1677c2fea41eb2233a260f48a298 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda#fceaedf1cdbcb02df9699a0d9b005292 https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda#4006636c39312dc42f8504475be3800f @@ -167,8 +167,8 @@ https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py312h41a817b_0 https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h1d5cde6_1.conda#27abd7664bc87595bd98b6306b8393d1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda#7b86ecb7d3557821c649b3c31e3eb9f2 https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_1.conda#1cd622f71ea159cc8c9c416568a34f0a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_2.conda#b0f8c590aa86d9bee5987082f7f15bdf +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda#8dabe607748cb3d7002ad73cd06f1325 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda#e2eaefa4de2b7237af7c907b8bbc760a https://conda.anaconda.org/conda-forge/noarch/meson-1.5.1-pyhd8ed1ab_1.conda#979087ee59bea1355f991a3b738af64e @@ -179,46 +179,46 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda#e0 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.12.0-h434a139_3.conda#c667c11d1e488a38220ede8a34441bff https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.4-h4ab18f5_2.conda#79e46d4a6ccecb7ee1912042958a8758 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.0-h365ddd8_2.conda#22339cf124753bafda336167f80e7860 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hd923058_5.conda#1fdd83fe1d7a8a208a88be70911a5f9c https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda#36df3cf05459de5d0a41c77c4329634b https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda#ab6d507ad16dbe2157920451d662e4a1 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda#76b32dcf243444aea9c6b804bcfa40b8 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.26.0-h26d7fe4_0.conda#7b9d4c93870fb2d644168071d4d76afb +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda#2c51703b4d775f8943c08a361788131b https://conda.anaconda.org/conda-forge/noarch/meson-python-0.16.0-pyh0c530f3_0.conda#e16f0dbf502da873be9f9adb0dc52547 https://conda.anaconda.org/conda-forge/linux-64/mkl-2023.2.0-h84fe81f_50496.conda#81d4a1a57d618adf0152db973d93b2ad https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda#c54c0107057d67ddf077751339ec2c63 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda#b39568655c127a9c4a44d178ac99b6d0 -https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.0-pypyh2585a3b_103.conda#be7ad175eb670a83ff575f86e53c57fb -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.3-hda66527_2.conda#734875312c8196feecc91f89856da612 +https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.1-pypyh2585a3b_103.conda#e8095a7cdbe43c73ba5a381ead1a52f4 +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hdd22b19_3.conda#6f7122a63de602ee202b059e698c574d https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda#61f1c193452f0daa582f39634627ea33 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_mkl.conda#8bf521f6007b0b0eb91515a1165b5d85 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.26.0-ha262f82_0.conda#89b53708fd67762b26c38c8ecc5d323d +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda#9e7960f0b9ab3895ef73d92477c47dae https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2023.2.0-ha770c72_50496.conda#3b4c50e31ff098b18a450e4f5f860adf https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.7.2-hb12f9c5_4.conda#5dd4fddb73e5e4fef38ef54f35c155cd -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-h46c3b66_9.conda#c840f07ec58dc0b06041e7f36550a539 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-h82708ae_1.conda#ea040cd44271cd00a36d1a464a2aaad5 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda#11d926d1f4a75a1b03d1c053ca20424b https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_mkl.conda#7a2972758a03adc92d856072c71c9170 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_mkl.conda#4db0cd03efcdab535f6f066aca4cddbb -https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_1.conda#3ea04b72ac9f7df92d1614f216d94048 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h4b47046_3_cpu.conda#c4e92e0d3c8b065294ac61a33cb0abc6 +https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_2.conda#99889d0c042cc4dfb9a758619d487282 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda#c0d3c973e49d549ba10003c3c985f027 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-20_linux64_mkl.conda#3dea5e9be386b963d7f4368966e238b3 https://conda.anaconda.org/conda-forge/linux-64/libtorch-2.1.2-cpu_mkl_hff68eba_104.conda#a47f9e37a5e5006a0be7e845b3bb4b3e https://conda.anaconda.org/conda-forge/linux-64/numpy-1.26.4-py312heda63a1_0.conda#d8285bea2a350f63fab23bf460221f3f https://conda.anaconda.org/conda-forge/noarch/array-api-strict-2.0.1-pyhd8ed1ab_0.conda#2c00d29e0e276f2d32dfe20e698b8eeb https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-20_linux64_mkl.conda#079d50df2338a3d47522d7e84c3dfbf6 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py312h8572e83_0.conda#12c6a831ef734f0b2dd4caff514cbb7f -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_3_cpu.conda#8e3a0843cc7c09921c65ad80fe28d801 -https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_3_cpu.conda#f6eb0a9b55a0cd22bd8dede025562ede +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda#f38e5ee8bb811b2a465598a4bfc41e22 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda#974d42b6c948038824ce56ae006c9237 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda#ae00b61f3000d2284d1f2584d4dfafa8 https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda#f9f44acb5e671f282cf09e3fb79f446c https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda#235827b9c93850cafdd2d5ab359893f9 https://conda.anaconda.org/conda-forge/linux-64/pytorch-2.1.2-cpu_mkl_py312he7b903e_104.conda#a5cc49281c2e59c18bf0c75e23f3eabc https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_1.conda#eae80145f63aa04a02dda456d4883b46 https://conda.anaconda.org/conda-forge/linux-64/blas-2.120-mkl.conda#9444330235a4828878cbe9c897ba0aa3 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_3_cpu.conda#6cf5d038ca5cfd29988c4a05cd5a6276 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda#94b84127d9f697b4ac0eba53e58583b6 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py312h854627b_2.conda#2a49f2a9c0447bc1bdaec98e3ee59117 https://conda.anaconda.org/conda-forge/linux-64/pyamg-5.2.1-py312h389efb2_0.conda#37038b979f8be9666d90a852879368fb https://conda.anaconda.org/conda-forge/linux-64/pytorch-cpu-2.1.2-cpu_mkl_py312he2922ba_104.conda#d258a5ab0b958cbdd0573f5ca2ef8895 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_3_cpu.conda#5014dd2d204f163d5296b7c803b6c1ca +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda#f6fd0b0822f00c963b31ac3fec2b6905 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.1-py312h7900ff3_2.conda#0cb46cee2785e2d9dd29a5f36f5a1de7 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda#7e8ddbd44fb99ba376b09c4e9e61e509 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock index 2425532b1bb73..3b8066be2568c 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock @@ -4,7 +4,6 @@ @EXPLICIT https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.7.4-h8857fd0_0.conda#7df874a4b05b2d2b82826190170eaa0f https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h0dc2134_1.conda#9e6c31441c9aa24e41ace40d6151aab6 -https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.20-h49d49c5_0.conda#d46104f6a896a0bc6a1d37b88b2edf5c https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.2-h73e2aa4_0.conda#3d1d51c8f716d97c864d12f7af329526 https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2#ccb34fb14960ad8b125962d3d79b31a9 https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-12.3.0-h0b6f5ec_3.conda#39eeea5454333825d72202fae2d5e0b8 @@ -23,7 +22,8 @@ https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda#7ed43 https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda#d68d48a3060eb5abdc1cdc8e2a3a5966 https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h0dc2134_1.conda#9ee0bab91b2ca579e10353738be36063 https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h0dc2134_1.conda#8a421fe09c6187f0eb5e2338a8a8be6d -https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-hef8daea_2.conda#c21d8b63b5cf5d3290d5a7aa2b028bcc +https://conda.anaconda.org/conda-forge/osx-64/libcxx-18.1.8-heced48a_2.conda#8c8198f9e93fcc0fd359ff37b4a8cd2d +https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.21-hfdf4475_0.conda#88409b23a5585c15d52de0073f3c9c61 https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.16-h0dc2134_0.conda#07e80289d4ba724f37b4b6f001f88fbe https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-h87427d6_1.conda#b7575b5aa92108dcc9aaab0f05f2dbce https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-18.1.8-h15ab845_0.conda#2c3c6c8aaf8728f87326964a82fdc7d8 @@ -49,13 +49,13 @@ https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda#2 https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda#0b6e23a012ee7a9a5f6b244f5a92c1d5 https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.11.1-default_h456cccd_1000.conda#a14989f6bbea46e6ec4521a403f63ff2 https://conda.anaconda.org/conda-forge/osx-64/libllvm16-16.0.6-hbedff68_3.conda#8fd56c0adc07a37f93bd44aa61a97c90 -https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h129831d_3.conda#568593071d2e6cea7b5fc1f75bfa10ca +https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.6.0-h603087a_4.conda#362626a2aacb976ec89c91b99bfab30b https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-hc80595b_2.conda#fc9b5179824146b67ad5a0b053b253ff -https://conda.anaconda.org/conda-forge/osx-64/python-3.12.4-h37a9e06_0_cpython.conda#94e2b77992f580ac6b7a4fc9b53018b3 +https://conda.anaconda.org/conda-forge/osx-64/python-3.12.5-h37a9e06_0_cpython.conda#517cb4e16466f8d96ba2a72897d14c48 https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.10-py312hede676d_0.conda#3008aa88f0dc67e7144734b16e331ee4 +https://conda.anaconda.org/conda-forge/osx-64/cython-3.0.11-py312h28f332c_0.conda#4ab9ee64007a1e4a79b38e4de31aa2fc https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 @@ -115,15 +115,15 @@ https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.2.1-py312h9230928_0.co https://conda.anaconda.org/conda-forge/osx-64/pandas-2.2.2-py312h1171441_1.conda#240737937f1f046b0e03ecc11ac4ec98 https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.0-py312hb9702fa_1.conda#9899db3cf8965c3aecab3daf5227d3eb https://conda.anaconda.org/conda-forge/osx-64/blas-2.120-mkl.conda#b041a7677a412f3d925d8208936cb1e2 -https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-16.0.6-h8787910_18.conda#12f8213141de7f6750b237eb933bfe40 +https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-16.0.6-h8787910_19.conda#64155ef139280e8c181dad866dea2980 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.1-py312h0d5aeb7_2.conda#0aece95a1cd3b77990022d3e0f37c6aa https://conda.anaconda.org/conda-forge/osx-64/pyamg-5.2.1-py312h44e70fa_0.conda#a7c77239f0135d30cbba0164922aa861 -https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-16.0.6-hb91bd55_18.conda#fd48bd52766dc748842ae785a96d547c +https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-16.0.6-hb91bd55_19.conda#760ecbc6f4b6cecbe440b0080626286f https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.1-py312hb401068_2.conda#1ead575881ba176014aad8dfac07d1b1 https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.7.0-h282daa2_1.conda#d27411cb82bc1b76b9f487da6ae97f1d -https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-16.0.6-h6d92fbe_18.conda#6caeea3e1c0af451118c19894448d4a0 +https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-16.0.6-h6d92fbe_19.conda#9ffa16e2bd7eb5b8b1a0d19185710cd3 https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-12.3.0-h18f7dce_1.conda#436af2384c47aedb94af78a128e174f1 -https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-16.0.6-hb91bd55_18.conda#0d120b5e06d2ea6c9103f2017be1ff22 +https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-16.0.6-hb91bd55_19.conda#81d40fad4c14cc7a893f2e274647c7a4 https://conda.anaconda.org/conda-forge/osx-64/gfortran-12.3.0-h2c809b3_1.conda#c48adbaa8944234b80ef287c37e329b0 https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.7.0-h7728843_1.conda#e04cb15a20553b973dd068c2dc81d682 https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.7.0-h6c2ab21_1.conda#48319058089f492d5059e04494b81ed9 diff --git a/build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock b/build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock index f9827208ac958..b994b147ae513 100644 --- a/build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock @@ -5,7 +5,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/blas-1.0-mkl.conda#cb2c87e85ac8e0ceae776d26d4214c8a https://repo.anaconda.com/pkgs/main/osx-64/bzip2-1.0.8-h6c40b1e_6.conda#96224786021d0765ce05818fa3c59bdb https://repo.anaconda.com/pkgs/main/osx-64/ca-certificates-2024.7.2-hecd8cb5_0.conda#297cfad0c0eac53e5ac75674828eedd9 -https://repo.anaconda.com/pkgs/main/osx-64/jpeg-9e-h46256e1_2.conda#5f0bfd93528771ebc3e340ac1c91a4cd +https://repo.anaconda.com/pkgs/main/osx-64/jpeg-9e-h46256e1_3.conda#b1d9769eac428e11f5f922531a1da2e0 https://repo.anaconda.com/pkgs/main/osx-64/libbrotlicommon-1.0.9-h6c40b1e_8.conda#8e86dfa34b08bc664b19e1499e5465b8 https://repo.anaconda.com/pkgs/main/osx-64/libcxx-14.0.6-h9765a3e_0.conda#387757bb354ae9042370452cd0fb5627 https://repo.anaconda.com/pkgs/main/osx-64/libdeflate-1.17-hb664fd8_1.conda#b6116b8db33ea6a5b5287dae70d4a913 @@ -48,13 +48,13 @@ https://repo.anaconda.com/pkgs/main/osx-64/kiwisolver-1.4.4-py312hcec6c5f_0.cond https://repo.anaconda.com/pkgs/main/osx-64/lcms2-2.12-hf1fd2bf_0.conda#697aba7a3308226df7a93ccfeae16ffa https://repo.anaconda.com/pkgs/main/osx-64/mkl-service-2.4.0-py312h6c40b1e_1.conda#b1ef860be9043b35c5e8d9388b858514 https://repo.anaconda.com/pkgs/main/osx-64/ninja-1.10.2-hecd8cb5_5.conda#a0043b325fb08db82477ae433668e684 -https://repo.anaconda.com/pkgs/main/osx-64/openjpeg-2.4.0-h7231236_2.conda#e7cd7f1cdc309f7e32cedd73803536e0 +https://repo.anaconda.com/pkgs/main/osx-64/openjpeg-2.5.2-hbf2204d_0.conda#8463f11309271a93d615450382761470 https://repo.anaconda.com/pkgs/main/osx-64/packaging-24.1-py312hecd8cb5_0.conda#6130dafc4d26d55e93ceab460d2a72b5 https://repo.anaconda.com/pkgs/main/osx-64/pluggy-1.0.0-py312hecd8cb5_1.conda#647fada22f1697691fdee90b52c99bcb https://repo.anaconda.com/pkgs/main/osx-64/pyparsing-3.0.9-py312hecd8cb5_0.conda#d85cf2b81c6d9326a57a6418e14db258 https://repo.anaconda.com/pkgs/main/noarch/python-tzdata-2023.3-pyhd3eb1b0_0.conda#479c037de0186d114b9911158427624e https://repo.anaconda.com/pkgs/main/osx-64/pytz-2024.1-py312hecd8cb5_0.conda#2b28ec0e0d07f5c0c701f75200b1e8b6 -https://repo.anaconda.com/pkgs/main/osx-64/setuptools-69.5.1-py312hecd8cb5_0.conda#5c7c7ef1e0762e3ca1f543d28310946f +https://repo.anaconda.com/pkgs/main/osx-64/setuptools-72.1.0-py312hecd8cb5_0.conda#dff219f3528a6e8ad235c48a29cd6dbe https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a https://repo.anaconda.com/pkgs/main/osx-64/tornado-6.4.1-py312h46256e1_0.conda#ff2efd781e1b1af38284aeda9d676d42 @@ -79,7 +79,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.7-py312hac873b0_0.conda#6 https://repo.anaconda.com/pkgs/main/osx-64/scipy-1.11.4-py312h81688c2_0.conda#7d57b4c21a9261f97fa511e0940c5d93 https://repo.anaconda.com/pkgs/main/osx-64/pandas-2.2.2-py312h77d3abe_0.conda#463868c40d8ff98bec263f1fd57a8d97 https://repo.anaconda.com/pkgs/main/osx-64/pyamg-4.2.3-py312h44cbcf4_0.conda#3bdc7be74087b3a5a83c520a74e1e8eb -# pip cython @ https://files.pythonhosted.org/packages/d5/6d/06c08d75adb98cdf72af18801e193d22580cc86ca553610f430f18ea26b3/Cython-3.0.10-cp312-cp312-macosx_10_9_x86_64.whl#sha256=8f2864ab5fcd27a346f0b50f901ebeb8f60b25a60a575ccfd982e7f3e9674914 +# pip cython @ https://files.pythonhosted.org/packages/58/50/fbb23239efe2183e4eaf76689270d6f5b3bbcf9be9ad1eb97cc34349e6fc/Cython-3.0.11-cp312-cp312-macosx_10_9_x86_64.whl#sha256=11996c40c32abf843ba652a6d53cb15944c88d91f91fc4e6f0028f5df8a8f8a1 # pip meson @ https://files.pythonhosted.org/packages/1d/8d/b83d525907c00c5e22a9cae832bbd958310518ae6ad1dc7e01b69abbb117/meson-1.4.2.tar.gz#sha256=ea2546a26f4a171a741c1fd036f22c9c804d6198e3259f1df588e01f842dd69f # pip threadpoolctl @ https://files.pythonhosted.org/packages/4b/2c/ffbf7a134b9ab11a67b0cf0726453cedd9c5043a4fe7a35d1cefa9a1bcfb/threadpoolctl-3.5.0-py3-none-any.whl#sha256=56c1e26c150397e58c4926da8eeee87533b1e32bef131bd4bf6a2f45f3185467 # pip pyproject-metadata @ https://files.pythonhosted.org/packages/aa/5f/bb5970d3d04173b46c9037109f7f05fc8904ff5be073ee49bb6ff00301bc/pyproject_metadata-0.8.0-py3-none-any.whl#sha256=ad858d448e1d3a1fb408ac5bac9ea7743e7a8bbb472f2693aaa334d2db42f526 diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock b/build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock index b79b8cd5ea6de..7cc0fbf4c197e 100644 --- a/build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock +++ b/build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock @@ -22,17 +22,17 @@ https://repo.anaconda.com/pkgs/main/linux-64/readline-8.2-h5eee18b_0.conda#be421 https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.14-h39e8969_0.conda#78dbc5e3c69143ebc037fc5d5b22e597 https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.45.3-h5eee18b_0.conda#acf93d6aceb74d6110e20b44cc45939e https://repo.anaconda.com/pkgs/main/linux-64/python-3.11.9-h955ad1f_0.conda#5668a8845dd35bbbc9663c8f217a2ab8 -https://repo.anaconda.com/pkgs/main/linux-64/setuptools-69.5.1-py311h06a4308_0.conda#0989470c81841dfcb22c7bbb40f543c5 +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-72.1.0-py311h06a4308_0.conda#58a35dba367429761d046074dcfa8b19 https://repo.anaconda.com/pkgs/main/linux-64/wheel-0.43.0-py311h06a4308_0.conda#ec915b5ff89bdbcea7ef943d9e296967 https://repo.anaconda.com/pkgs/main/linux-64/pip-24.0-py311h06a4308_0.conda#84aef4db159f0daf63751d87d7d6ca56 # pip alabaster @ https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl#sha256=fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b # pip array-api-compat @ https://files.pythonhosted.org/packages/0f/22/8228be1d3c6d4ffcf05cd89872ce65c1317b2af98d34b9d89b247d8d49cb/array_api_compat-1.8-py3-none-any.whl#sha256=140204454086264d37263bc4afe1182b428353e94e9edcc38d17b009863c982d -# pip babel @ https://files.pythonhosted.org/packages/27/45/377f7e32a5c93d94cd56542349b34efab5ca3f9e2fd5a68c5e93169aa32d/Babel-2.15.0-py3-none-any.whl#sha256=08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb +# pip babel @ https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl#sha256=368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b # pip certifi @ https://files.pythonhosted.org/packages/1c/d5/c84e1a17bf61d4df64ca866a1c9a913874b4e9bdc131ec689a0ad013fb36/certifi-2024.7.4-py3-none-any.whl#sha256=c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # pip charset-normalizer @ https://files.pythonhosted.org/packages/40/26/f35951c45070edc957ba40a5b1db3cf60a9dbb1b350c2d5bef03e01e61de/charset_normalizer-3.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=753f10e867343b4511128c6ed8c82f7bec3bd026875576dfd88483c5c73b2fd8 # pip coverage @ https://files.pythonhosted.org/packages/14/6f/8351b465febb4dbc1ca9929505202db909c5a635c6fdf33e089bbc3d7d85/coverage-7.6.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=0c0420b573964c760df9e9e86d1a9a622d0d27f417e1a949a8a66dd7bcee7bc6 # pip cycler @ https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl#sha256=85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 -# pip cython @ https://files.pythonhosted.org/packages/45/82/077c13035d6f45d8b8b74d67e9f73f2bfc54ef8d1f79572790f6f7d2b4f5/Cython-3.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=38d40fa1324ac47c04483d151f5e092406a147eac88a18aec789cf01c089c3f2 +# pip cython @ https://files.pythonhosted.org/packages/93/03/e330b241ad8aa12bb9d98b58fb76d4eb7dcbe747479aab5c29fce937b9e7/Cython-3.0.11-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=3999fb52d3328a6a5e8c63122b0a8bd110dfcdb98dda585a3def1426b991cba7 # pip docutils @ https://files.pythonhosted.org/packages/8f/d7/9322c609343d929e75e7e5e6255e614fcc67572cfd083959cdef3b7aad79/docutils-0.21.2-py3-none-any.whl#sha256=dafca5b9e384f0e419294eb4d2ff9fa826435bf15f15b7bd45723e8ad76811b2 # pip execnet @ https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl#sha256=26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc # pip fonttools @ https://files.pythonhosted.org/packages/a4/22/0a0ad59d9367997fd74a00ad2e88d10559122e09f105e94d34c155aecc0a/fonttools-4.53.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=bee32ea8765e859670c4447b0817514ca79054463b6b79784b08a8df3a4d78e3 @@ -74,9 +74,9 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-24.0-py311h06a4308_0.conda#84ae # pip python-dateutil @ https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl#sha256=a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 # pip requests @ https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl#sha256=70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 # pip scipy @ https://files.pythonhosted.org/packages/89/bb/80c9c98d887c855710fd31fc5ae5574133e98203b3475b07579251803662/scipy-1.14.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=9e3154691b9f7ed73778d746da2df67a19d046a6c8087c8b385bc4cdb2cfca74 -# pip tifffile @ https://files.pythonhosted.org/packages/05/a9/f7b3fd6c73e0ac29e7f9c9c86c3b7367b182a3dd60495da7b8129e6df681/tifffile-2024.7.24-py3-none-any.whl#sha256=f5cce1a915c37bc44ae4a792e3b42c07a30a3fa88406f5c6060a3de076487ed1 +# pip tifffile @ https://files.pythonhosted.org/packages/fd/3a/6ec0327e238253a2b7adab0e542763fd639c4b3cef63b135a74ef3f454a7/tifffile-2024.8.10-py3-none-any.whl#sha256=1c224564fa92e7e9f9a0ed65880b2ece97c3f0d10029ffbebfa5e62b3f6b343d # pip lightgbm @ https://files.pythonhosted.org/packages/4e/19/1b928cad70a4e1a3e2c37d5417ca2182510f2451eaadb6c91cd9ec692cae/lightgbm-4.5.0-py3-none-manylinux_2_28_x86_64.whl#sha256=960a0e7c077de0ca3053f1325d3edfc92ea815acf5176adcacdea0f635aeef9b -# pip matplotlib @ https://files.pythonhosted.org/packages/b8/63/cef838d92c1918ae28afd12b8aeaa9c104a0686cf6447aa0546f7c6dd1f0/matplotlib-3.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=ab38a4f3772523179b2f772103d8030215b318fef6360cb40558f585bf3d017f +# pip matplotlib @ https://files.pythonhosted.org/packages/a5/8b/90fae9c1b34ef3252003c26b15e8cb26b83701e34e5acf6430919c2c5c89/matplotlib-3.9.1.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=89eb7e89e2b57856533c5c98f018aa3254fa3789fcd86d5f80077b9034a54c9a # pip meson-python @ https://files.pythonhosted.org/packages/91/c0/104cb6244c83fe6bc3886f144cc433db0c0c78efac5dc00e409a5a08c87d/meson_python-0.16.0-py3-none-any.whl#sha256=842dc9f5dc29e55fc769ff1b6fe328412fe6c870220fc321060a1d2d395e69e8 # pip pandas @ https://files.pythonhosted.org/packages/fc/a5/4d82be566f069d7a9a702dcdf6f9106df0e0b042e738043c0cc7ddd7e3f6/pandas-2.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=6d2123dc9ad6a814bcdea0f099885276b31b24f7edf40f6cdbc0912672e22eee # pip pyamg @ https://files.pythonhosted.org/packages/d3/e8/6898b3b791f369605012e896ed903b6626f3bd1208c6a647d7219c070209/pyamg-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=679a5904eac3a4880288c8c0e6a29f110a2627ea15a443a4e9d5997c7dc5fab6 @@ -84,4 +84,4 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-24.0-py311h06a4308_0.conda#84ae # pip pytest-xdist @ https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl#sha256=9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7 # pip scikit-image @ https://files.pythonhosted.org/packages/ad/96/138484302b8ec9a69cdf65e8d4ab47a640a3b1a8ea3c437e1da3e1a5a6b8/scikit_image-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=fa27b3a0dbad807b966b8db2d78da734cb812ca4787f7fbb143764800ce2fa9c # pip sphinx @ https://files.pythonhosted.org/packages/4d/61/2ad169c6ff1226b46e50da0e44671592dbc6d840a52034a0193a99b28579/sphinx-8.0.2-py3-none-any.whl#sha256=56173572ae6c1b9a38911786e206a110c9749116745873feae4f9ce88e59391d -# pip numpydoc @ https://files.pythonhosted.org/packages/f0/fa/dcfe0f65660661db757ee9ebd84e170ff98edd5d80235f62457d9088f85f/numpydoc-1.7.0-py3-none-any.whl#sha256=5a56419d931310d79a06cfc2a126d1558700feeb9b4f3d8dcae1a8134be829c9 +# pip numpydoc @ https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl#sha256=72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541 diff --git a/build_tools/azure/pymin_conda_forge_mkl_win-64_conda.lock b/build_tools/azure/pymin_conda_forge_mkl_win-64_conda.lock index ae91423d25ea1..feae35c24526a 100644 --- a/build_tools/azure/pymin_conda_forge_mkl_win-64_conda.lock +++ b/build_tools/azure/pymin_conda_forge_mkl_win-64_conda.lock @@ -29,7 +29,7 @@ https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.con https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda#8579b6bb8d18be7c0b27fb08adeeeb40 https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2#1900cb3cab5055833cfddb0ba233b074 https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-hcfcfb64_1.conda#f77f319fb82980166569e1280d5b2864 -https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.20-hcfcfb64_0.conda#b12b5bde5eb201a1df75e49320cc938a +https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.21-h2466b09_0.conda#4ebe2206ebf4bf38f6084ad836110361 https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2#2c96d1b6915b408893f9472569dee135 https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda#e1eb10b1cca179f2baa3601e4efc8712 https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda#3f1b948619c45b1ca714d60c7389092c @@ -59,16 +59,16 @@ https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-hcfcfb64_1.conda# https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/win-64/cython-3.0.10-py39h99910a6_0.conda#8ebc2fca8a6840d0694f37e698f4e59c +https://conda.anaconda.org/conda-forge/win-64/cython-3.0.11-py39ha51f57c_0.conda#d7dfdb0e5fa3cc89807fc77fe6173c4d https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda#3761b23693f768dc75a8fd0a73ca053f https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.5-py39h1f6ef14_1.conda#4fc5bd0a7b535252028c647cc27d6c87 -https://conda.anaconda.org/conda-forge/win-64/libclang13-18.1.8-default_ha5278ca_1.conda#30a167d5b69555fbf39192a23e40df52 -https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_1.conda#53c80e0ed9a3905ca7047c03756a5caa +https://conda.anaconda.org/conda-forge/win-64/libclang13-18.1.8-default_ha5278ca_2.conda#8185207d3f7e59474870cc79e4f9eaa5 +https://conda.anaconda.org/conda-forge/win-64/libglib-2.80.3-h7025463_2.conda#b60894793e7e4a555027bfb4e4ed1d54 https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.1-default_h8125262_1000.conda#933bad6e4658157f1aec9b171374fde2 -https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hddb2be6_3.conda#6d1828c9039929e2f185c5fa9d133018 +https://conda.anaconda.org/conda-forge/win-64/libtiff-4.6.0-hb151862_4.conda#7d35d9aa8f051d548116039f5813c8ec https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda#279ee338c9b34871d578cb3c7aa68f70 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda#cbe1bb1f21567018ce595d9c2be0f0db @@ -116,7 +116,7 @@ https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-23_win64_mkl.conda https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.7.2-hbb46ec1_4.conda#11c572c84b282f085c0379d6b5a6db19 https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-23_win64_mkl.conda#f6e2619d4359c6806b97b3d405193741 https://conda.anaconda.org/conda-forge/win-64/numpy-2.0.1-py39h60232e0_0.conda#abb4185f8ac60eeb9b450757197da7ac -https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py39h0285922_1.conda#f1e4e1f964077cce3d44bbfd94686a78 +https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.2-py39h0285922_2.conda#12004e14d1835eca43c4207841c24e4f https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-23_win64_mkl.conda#5fd0882b94fa827533f51cc8c2e04392 https://conda.anaconda.org/conda-forge/win-64/contourpy-1.2.1-py39h1f6ef14_0.conda#03e25c6bae87f4f9595337255b44b0fb https://conda.anaconda.org/conda-forge/win-64/scipy-1.13.1-py39h1a10956_0.conda#9f8e571406af04d2f5fdcbecec704505 diff --git a/build_tools/azure/pymin_conda_forge_openblas_min_dependencies_linux-64_conda.lock b/build_tools/azure/pymin_conda_forge_openblas_min_dependencies_linux-64_conda.lock index 3f7ea06a3891b..264049d4abb3a 100644 --- a/build_tools/azure/pymin_conda_forge_openblas_min_dependencies_linux-64_conda.lock +++ b/build_tools/azure/pymin_conda_forge_openblas_min_dependencies_linux-64_conda.lock @@ -21,7 +21,7 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62e https://conda.anaconda.org/conda-forge/linux-64/gettext-tools-0.22.5-h59595ed_2.conda#985f2f453fb72408d6b6f1be0f324033 https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda#172bcc51059416e7ce99e7b528cede83 @@ -77,10 +77,10 @@ https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d05 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda#02e41ab5834dcdcc8590cf29d9526f50 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.25-pthreads_h413a1c8_0.conda#d172b34a443b95f86089e8229ddc9a17 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda#0ac9aff6010a7751961c8e4b863a40e7 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.8-hf5423f3_0.conda#322be9d39e030673e105b0abb320514e https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d @@ -101,15 +101,15 @@ https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0. https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda#219ba82e95d7614cf7140d2a4afc0926 -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h73ef956_1.conda#99701cdc9a25a333d15265d1d243b2dc +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda#9958a1f8faba35260e6b68e3a7bc88d6 https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.0.0-pyhd8ed1ab_0.conda#f800d2da156d08e289b14e87e43c1ae5 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1.conda#c9f74d717e5a2847a9f8b779c54130f2 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb7010fc86f70eee639b4bb7a894f5 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-20_linux64_openblas.conda#2b7bb4f7562c8cf334fc2e20c2d28abc https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.25-pthreads_h7a3da1a_0.conda#87661673941b5e702275fdf0fc095ad0 https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda#7f2e286780f072ed750df46dc2631138 https://conda.anaconda.org/conda-forge/noarch/packaging-24.1-pyhd8ed1ab_0.conda#cbe1bb1f21567018ce595d9c2be0f0db @@ -131,11 +131,11 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.co https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda#b6d90276c5aee9b4407dd94eb0cd40a8 https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py39hcd6043d_0.conda#daab0ee8e85e258281e2b2dd74ebe0bb -https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h8a4344b_1.conda#a3acc4920c9ca19cb6b295028d606477 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h315aac3_2.conda#00e0da7e4fceb5449f3ddd2bf6b2c351 https://conda.anaconda.org/conda-forge/noarch/joblib-1.2.0-pyhd8ed1ab_0.tar.bz2#7583652522d71ad78ba536bba06940eb https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-20_linux64_openblas.conda#36d486d72ab64ffea932329a1d3729a3 https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda#d0a9633b53cdc319b8a1a532ae7822b8 -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.50-h4f305b6_0.conda#0d7ff1a8e69565ca3add6925e18e708f https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-20_linux64_openblas.conda#6fabc51f5e647d09cc010c40061557e0 diff --git a/build_tools/azure/pymin_conda_forge_openblas_ubuntu_2204_linux-64_conda.lock b/build_tools/azure/pymin_conda_forge_openblas_ubuntu_2204_linux-64_conda.lock index b35e7a0764bb1..b3aa33c38e4e2 100644 --- a/build_tools/azure/pymin_conda_forge_openblas_ubuntu_2204_linux-64_conda.lock +++ b/build_tools/azure/pymin_conda_forge_openblas_ubuntu_2204_linux-64_conda.lock @@ -19,7 +19,7 @@ https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.12-h4ab18f5_0.conda https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda#6456c2620c990cd8dde2428a27ba0bc5 @@ -70,10 +70,10 @@ https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d05 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda#08a9265c637230c37cb1be4a6cad4536 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.8-hf5423f3_0.conda#322be9d39e030673e105b0abb320514e https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d @@ -91,7 +91,7 @@ https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.10-py39h3d6467e_0.conda#76b5d215fb735a6dc43010ffbe78040e +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.11-py39h98e3656_0.conda#e3762ffb02c6490cf1b8d2c7af219eb5 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda#e8cd5d629f65bdf0f3bb312cde14659e https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 @@ -106,8 +106,8 @@ https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1. https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb7010fc86f70eee639b4bb7a894f5 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda#96c8450a40aa2b9733073a9460de972c https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py39hd1e30aa_0.conda#9a9a22eb1f83c44953319ee3b027769f https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 @@ -138,7 +138,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_ https://conda.anaconda.org/conda-forge/noarch/zipp-3.19.2-pyhd8ed1ab_0.conda#49808e59df5535116f6878b2a820d6f4 https://conda.anaconda.org/conda-forge/noarch/babel-2.14.0-pyhd8ed1ab_0.conda#9669586875baeced8fc30c0826c3270e https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda#fceaedf1cdbcb02df9699a0d9b005292 -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py39h7a31438_0.conda#ac992767d7f8ed2cb27e71e78f0fb2d7 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py39h49a4b6b_0.conda#278cc676a7e939cf2561ce4a5cfaa484 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py39hcd6043d_0.conda#297804eca6ea16a835a869699095de1c https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c72_0.conda#c261d14fc7f49cdd403868998a18c318 @@ -146,8 +146,8 @@ https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda#7b86ecb7d3557821c649b3c31e3eb9f2 https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda#eede29b40efa878cbe5bdcb767e97310 -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_1.conda#1cd622f71ea159cc8c9c416568a34f0a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_2.conda#b0f8c590aa86d9bee5987082f7f15bdf +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda#2af0879961951987e464722fd00ec1e0 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda#e2eaefa4de2b7237af7c907b8bbc760a https://conda.anaconda.org/conda-forge/noarch/meson-1.5.1-pyhd8ed1ab_1.conda#979087ee59bea1355f991a3b738af64e @@ -173,7 +173,7 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e https://conda.anaconda.org/conda-forge/linux-64/blas-2.123-openblas.conda#7f4b3ea1cdd6e50dca2a226abda6e2d9 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py39h0565ad7_2.conda#bdde79163fde321b3dddac0c08dd6134 https://conda.anaconda.org/conda-forge/linux-64/pyamg-5.2.1-py39h85c637f_0.conda#0bfaf33b7ebdbadc77bf9a67e281c0b1 -https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py39h8242bd1_1.conda#27964496b9996f7453f8b45ea72acc7a +https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py39h8242bd1_2.conda#e5c6995331893cf9fcaab45d11e343ff https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.1-py39hf3d152e_2.conda#600643bf041c52023bdc30477c1f077b https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.7.0-pyhd8ed1ab_3.conda#4f5a67d2176fe024a7d83b3eb09b8e13 diff --git a/build_tools/circle/doc_linux-64_conda.lock b/build_tools/circle/doc_linux-64_conda.lock index 68b3e798f84c0..3a0d9d2cf2c32 100644 --- a/build_tools/circle/doc_linux-64_conda.lock +++ b/build_tools/circle/doc_linux-64_conda.lock @@ -31,7 +31,7 @@ https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3b https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aeabe88534ea4169d4c49998f293d6c https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda#6456c2620c990cd8dde2428a27ba0bc5 @@ -98,10 +98,10 @@ https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.4.0-hb2e57f8_0.conda#61f3e74c92b7c44191143a661f821bab https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h9b56c87_0.conda#cb7355212240e92dcf9c73cb1f10e4a9 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.3-h66b40c8_0.conda#a394f85083195ab8aa33911f40d76870 https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda#08a9265c637230c37cb1be4a6cad4536 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.8-hf5423f3_0.conda#322be9d39e030673e105b0abb320514e https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d @@ -118,7 +118,7 @@ https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.3.2-pyhd8ed1ab_0.conda#7f4a9e3fcff3f6356ae99244a014da6a https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.10-py39h3d6467e_0.conda#76b5d215fb735a6dc43010ffbe78040e +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.11-py39h98e3656_0.conda#e3762ffb02c6490cf1b8d2c7af219eb5 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_0.conda#e8cd5d629f65bdf0f3bb312cde14659e https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 @@ -127,7 +127,7 @@ https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.con https://conda.anaconda.org/conda-forge/linux-64/gcc-12.4.0-h236703b_0.conda#9485dc28dccde81b12e17f9bdda18f14 https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-12.4.0-h6b7512a_0.conda#fec7117a58f5becf76b43dec55064ff9 https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-12.4.0-hc568b83_0.conda#bf4f9ad129a9a8dc86cce6626697d413 -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.4.0-h557a472_0.conda#77076175ffd18ef618470991cc38c540 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.4.0-h613a52c_0.conda#0740149e4653caebd1d2f6bbf84a1720 https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda#c0cc1420498b17414d8617d0b9f506ca @@ -137,8 +137,8 @@ https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.5-py39h7633fee_1. https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb7010fc86f70eee639b4bb7a894f5 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_openblas.conda#96c8450a40aa2b9733073a9460de972c https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py39hd1e30aa_0.conda#9a9a22eb1f83c44953319ee3b027769f https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 @@ -179,7 +179,7 @@ https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0 https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.7.0-hd590300_1.conda#e9dffe1056994133616378309f932d77 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda#fceaedf1cdbcb02df9699a0d9b005292 -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py39h7a31438_0.conda#ac992767d7f8ed2cb27e71e78f0fb2d7 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py39h49a4b6b_0.conda#278cc676a7e939cf2561ce4a5cfaa484 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py39hcd6043d_0.conda#297804eca6ea16a835a869699095de1c https://conda.anaconda.org/conda-forge/linux-64/gfortran-12.4.0-h236703b_0.conda#581156aeb9b903f5425d5dd963d56ec1 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-12.4.0-hd748a6a_0.conda#6fd80632f36e5a3934af2600bcbb2b2d @@ -191,8 +191,8 @@ https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda#7b86ecb7d3557821c649b3c31e3eb9f2 https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-23_linux64_openblas.conda#eede29b40efa878cbe5bdcb767e97310 -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_1.conda#1cd622f71ea159cc8c9c416568a34f0a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_2.conda#b0f8c590aa86d9bee5987082f7f15bdf +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-23_linux64_openblas.conda#2af0879961951987e464722fd00ec1e0 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda#e2eaefa4de2b7237af7c907b8bbc760a https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhd8ed1ab_0.tar.bz2#8b45f9f2b2f7a98b0ec179c8991a4a9b @@ -217,7 +217,7 @@ https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py39h623c9ba_0. https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-23_linux64_openblas.conda#08b43a5c3d6cc13aeb69bd2cbc293196 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.7.0-ha770c72_1.conda#d8d07866ac3b5b6937213c89a1874f08 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py39h7633fee_0.conda#bdc188e59857d6efab332714e0d01d93 -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py39h34cef29_2.conda#d3ee926e63ebd5b44ebc984dff020305 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py39h9d013fb_3.conda#f3bcbaa497af215e86d966244d683289 https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.2-pyh12aca89_0.conda#97ad994fae55dce96bd397054b32e41a https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py39hfc16268_1.conda#8b23d2b425035a7468d17e6fe1d54124 https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.6-pyhd8ed1ab_0.conda#a5b55d1cb110cdcedc748b5c3e16e687 @@ -229,7 +229,7 @@ https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.2-pyhd8ed1ab_1.conda#e https://conda.anaconda.org/conda-forge/linux-64/blas-2.123-openblas.conda#7f4b3ea1cdd6e50dca2a226abda6e2d9 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py39h0565ad7_2.conda#bdde79163fde321b3dddac0c08dd6134 https://conda.anaconda.org/conda-forge/linux-64/pyamg-5.2.1-py39h85c637f_0.conda#0bfaf33b7ebdbadc77bf9a67e281c0b1 -https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py39h8242bd1_1.conda#27964496b9996f7453f8b45ea72acc7a +https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py39h8242bd1_2.conda#e5c6995331893cf9fcaab45d11e343ff https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda#5ede4753180c7a550a443c430dc8ab52 https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.2-py39hd92a3bb_0.conda#2f6c03d60e71f13d92d511b06193f007 https://conda.anaconda.org/conda-forge/noarch/tifffile-2024.6.18-pyhd8ed1ab_0.conda#7c3077529bfe3b86f9425d526d73bd24 @@ -242,7 +242,7 @@ https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.7.0-pyhd8ed1ab_3.conda# https://conda.anaconda.org/conda-forge/noarch/pydata-sphinx-theme-0.15.4-pyhd8ed1ab_0.conda#c7c50dd5192caa58a05e6a4248a27acb https://conda.anaconda.org/conda-forge/noarch/sphinx-copybutton-0.5.2-pyhd8ed1ab_0.conda#ac832cc43adc79118cf6e23f1f9b8995 https://conda.anaconda.org/conda-forge/noarch/sphinx-design-0.6.1-pyhd8ed1ab_0.conda#51b2433e4a223b14defee96d3caf9bab -https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.17.0-pyhd8ed1ab_0.conda#952c3c12f751861ae704080aab566c5a +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.17.1-pyhd8ed1ab_0.conda#0adfccc6e7269a29a63c1c8ee3c6d8ba https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2#88ee91e8679603f2a5bd036d52919cc2 https://conda.anaconda.org/conda-forge/noarch/sphinx-remove-toctrees-1.0.0.post1-pyhd8ed1ab_0.conda#6dee8412218288a17f99f2cfffab334d https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-2.0.0-pyhd8ed1ab_0.conda#9075bd8c033f0257122300db914e49c9 @@ -252,7 +252,7 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-2.0.0-pyhd8ed https://conda.anaconda.org/conda-forge/noarch/sphinx-7.4.7-pyhd8ed1ab_0.conda#c568e260463da2528ecfd7c5a0b41bbd https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_0.conda#e507335cb4ca9cff4c3d0fa9cdab255e https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1ab_0.conda#286283e05a1eff606f55e7cd70f6d7f7 -# pip attrs @ https://files.pythonhosted.org/packages/9b/2b/913eda7a67f7bea7496c1a8e1666f48aa9f15520da79368e4ec1109e2690/attrs-24.1.0-py3-none-any.whl#sha256=377b47448cb61fea38533f671fba0d0f8a96fd58facd4dc518e3dac9dbea0905 +# pip attrs @ https://files.pythonhosted.org/packages/6a/21/5b6702a7f963e95456c0de2d495f67bf5fd62840ac655dc451586d23d39a/attrs-24.2.0-py3-none-any.whl#sha256=81921eb96de3191c8258c199618104dd27ac608d9366f5e35d011eae1867ede2 # pip cloudpickle @ https://files.pythonhosted.org/packages/96/43/dae06432d0c4b1dc9e9149ad37b4ca8384cf6eb7700cd9215b177b914f0a/cloudpickle-3.0.0-py3-none-any.whl#sha256=246ee7d0c295602a036e86369c77fecda4ab17b506496730f2f576d9016fd9c7 # pip defusedxml @ https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl#sha256=a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61 # pip fastjsonschema @ https://files.pythonhosted.org/packages/6d/ca/086311cdfc017ec964b2436fe0c98c1f4efcb7e4c328956a22456e497655/fastjsonschema-2.20.0-py3-none-any.whl#sha256=5875f0b0fa7a0043a91e93a9b8f793bcbbba9691e7fd83dca95c28ba26d21f0a @@ -268,15 +268,15 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1 # pip prometheus-client @ https://files.pythonhosted.org/packages/c7/98/745b810d822103adca2df8decd4c0bbe839ba7ad3511af3f0d09692fc0f0/prometheus_client-0.20.0-py3-none-any.whl#sha256=cde524a85bce83ca359cc837f28b8c0db5cac7aa653a588fd7e84ba061c329e7 # pip ptyprocess @ https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl#sha256=4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35 # pip python-json-logger @ https://files.pythonhosted.org/packages/35/a6/145655273568ee78a581e734cf35beb9e33a370b29c5d3c8fee3744de29f/python_json_logger-2.0.7-py3-none-any.whl#sha256=f380b826a991ebbe3de4d897aeec42760035ac760345e57b812938dc8b35e2bd -# pip pyyaml @ https://files.pythonhosted.org/packages/7d/39/472f2554a0f1e825bd7c5afc11c817cd7a2f3657460f7159f691fbb37c51/PyYAML-6.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=bc1bf2925a1ecd43da378f4db9e4f799775d6367bdb94671027b73b393a7c42c +# pip pyyaml @ https://files.pythonhosted.org/packages/3d/32/e7bd8535d22ea2874cef6a81021ba019474ace0d13a4819c2a4bce79bd6a/PyYAML-6.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 # pip rfc3986-validator @ https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl#sha256=2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9 -# pip rpds-py @ https://files.pythonhosted.org/packages/9d/9f/683f61c2541da8e98d9d4612c7282ce5a6b169573df3262274fdf3ba94a8/rpds_py-0.19.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=f09529d2332264a902688031a83c19de8fda5eb5881e44233286b9c9ec91856d +# pip rpds-py @ https://files.pythonhosted.org/packages/04/d8/e73d56b1908a6c0e3e5982365eb293170cd458cc25a19363f69c76e00fd2/rpds_py-0.20.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=b4c29cbbba378759ac5786730d1c3cb4ec6f8ababf5c42a9ce303dc4b3d08cda # pip send2trash @ https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl#sha256=0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9 # pip sniffio @ https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl#sha256=2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2 # pip traitlets @ https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl#sha256=b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f # pip types-python-dateutil @ https://files.pythonhosted.org/packages/c7/1b/af4f4c4f3f7339a4b7eb3c0ab13416db98f8ac09de3399129ee5fdfa282b/types_python_dateutil-2.9.0.20240316-py3-none-any.whl#sha256=6b8cb66d960771ce5ff974e9dd45e38facb81718cc1e208b10b1baccbfdbee3b # pip uri-template @ https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl#sha256=a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363 -# pip webcolors @ https://files.pythonhosted.org/packages/3b/45/0c30e10a2ac52606476394e4ba11cf3b12ba5823e7fbb9167f80eee6000a/webcolors-24.6.0-py3-none-any.whl#sha256=8cf5bc7e28defd1d48b9e83d5fc30741328305a8195c29a8e668fa45586568a1 +# pip webcolors @ https://files.pythonhosted.org/packages/f0/33/12020ba99beaff91682b28dc0bbf0345bbc3244a4afbae7644e4fa348f23/webcolors-24.8.0-py3-none-any.whl#sha256=fc4c3b59358ada164552084a8ebee637c221e4059267d0f8325b3b560f6c7f0a # pip webencodings @ https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl#sha256=a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 # pip websocket-client @ https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl#sha256=17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526 # pip anyio @ https://files.pythonhosted.org/packages/7b/a2/10639a79341f6c019dedc95bd48a4928eed9f1d1197f4c04f546fc7ae0ff/anyio-4.4.0-py3-none-any.whl#sha256=c1b2d8f46a8a812513012e1107cb0e68c17159a7a594208005a57dc776e1bdc7 @@ -305,4 +305,4 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxext-opengraph-0.9.1-pyhd8ed1 # pip nbconvert @ https://files.pythonhosted.org/packages/b8/bb/bb5b6a515d1584aa2fd89965b11db6632e4bdc69495a52374bcc36e56cfa/nbconvert-7.16.4-py3-none-any.whl#sha256=05873c620fe520b6322bf8a5ad562692343fe3452abda5765c7a34b7d1aa3eb3 # pip jupyter-server @ https://files.pythonhosted.org/packages/57/e1/085edea6187a127ca8ea053eb01f4e1792d778b4d192c74d32eb6730fed6/jupyter_server-2.14.2-py3-none-any.whl#sha256=47ff506127c2f7851a17bf4713434208fc490955d0e8632e95014a9a9afbeefd # pip jupyterlab-server @ https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl#sha256=e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4 -# pip jupyterlite-sphinx @ https://files.pythonhosted.org/packages/ce/a4/f91fa06fb9d345e7e9fe38c9f5cc12b5de24741ad13ec82e9769396d7a8c/jupyterlite_sphinx-0.16.3-py3-none-any.whl#sha256=0e6d976f831fbdfd12e15adf2f3bbcbfd59705fdf5546948956c5ce7928026a8 +# pip jupyterlite-sphinx @ https://files.pythonhosted.org/packages/f6/71/d7fa0b7d802f359539019dfe2ec9e4b0b11b14ce815748b5adc8d28bb283/jupyterlite_sphinx-0.16.5-py3-none-any.whl#sha256=9429bfd0310d18c3cd4273e342a7e67e5a07b6baf21b150c26a54fae1b2a0077 diff --git a/build_tools/circle/doc_min_dependencies_linux-64_conda.lock b/build_tools/circle/doc_min_dependencies_linux-64_conda.lock index 1c28f0399ef47..286c970c75940 100644 --- a/build_tools/circle/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/circle/doc_min_dependencies_linux-64_conda.lock @@ -35,7 +35,7 @@ https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda#5aea https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2#a8832b479f93521a9e7b5b743803be51 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 https://conda.anaconda.org/conda-forge/linux-64/libgettextpo-0.22.5-h59595ed_2.conda#172bcc51059416e7ce99e7b528cede83 @@ -110,9 +110,9 @@ https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-12.4.0-hb2e57f https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libasprintf-devel-0.22.5-h661eb56_2.conda#02e41ab5834dcdcc8590cf29d9526f50 https://conda.anaconda.org/conda-forge/linux-64/libavif16-1.1.1-h9b56c87_0.conda#cb7355212240e92dcf9c73cb1f10e4a9 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.10.3-h66b40c8_0.conda#a394f85083195ab8aa33911f40d76870 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-h4c95cb1_3.conda#0ac9aff6010a7751961c8e4b863a40e7 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-18.1.8-hf5423f3_0.conda#322be9d39e030673e105b0abb320514e https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d @@ -144,8 +144,8 @@ https://conda.anaconda.org/conda-forge/linux-64/gcc-12.4.0-h236703b_0.conda#9485 https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-12.4.0-h6b7512a_0.conda#fec7117a58f5becf76b43dec55064ff9 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.22.5-h59595ed_2.conda#219ba82e95d7614cf7140d2a4afc0926 https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-12.4.0-hc568b83_0.conda#bf4f9ad129a9a8dc86cce6626697d413 -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h73ef956_1.conda#99701cdc9a25a333d15265d1d243b2dc -https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.4.0-h557a472_0.conda#77076175ffd18ef618470991cc38c540 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.80.3-h8fdd7da_2.conda#9958a1f8faba35260e6b68e3a7bc88d6 +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-12.4.0-h613a52c_0.conda#0740149e4653caebd1d2f6bbf84a1720 https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2#914d6646c4dbb1fd3ff539830a12fd71 https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2#9f765cbfab6870c8435b9eefecd7a1f4 https://conda.anaconda.org/conda-forge/noarch/idna-3.7-pyhd8ed1ab_0.conda#c0cc1420498b17414d8617d0b9f506ca @@ -156,8 +156,8 @@ https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda#51bb https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d4529f4dff3057982a7617c7ac58fde3 https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.1-default_hecaa2ac_1000.conda#f54aeebefb5c5ff84eca4fb05ca8aa3a https://conda.anaconda.org/conda-forge/linux-64/libllvm15-15.0.7-hb3ce162_4.conda#8a35df3cbc0c8b12cc8af9473ae75eef -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py39hd1e30aa_0.conda#9a9a22eb1f83c44953319ee3b027769f https://conda.anaconda.org/conda-forge/noarch/networkx-3.2-pyhd8ed1ab_0.conda#cec8cc498664cc00a070676aa89e69a7 @@ -171,7 +171,7 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_0.conda https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2#2a7de29fb590ca14b5243c4c812c8025 https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3eeeeb9e4827ace8c0c1419c85d590ad -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py39hd1e30aa_1.conda#37218233bcdc310e4fde6453bc1b40d8 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py39hcd6043d_0.conda#40f1dd93ac87fff4b776d6fb8033ddb9 https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py39hf3d152e_1.tar.bz2#4252d0c211566a9f65149ba7f6e87aa4 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/snowballstemmer-2.2.0-pyhd8ed1ab_0.tar.bz2#4d22a9315e78c6827f806065957d566e @@ -196,11 +196,11 @@ https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_0 https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.7.0-hd590300_1.conda#e9dffe1056994133616378309f932d77 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hbb29018_2.conda#b6d90276c5aee9b4407dd94eb0cd40a8 -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.16.0-py39h7a31438_0.conda#ac992767d7f8ed2cb27e71e78f0fb2d7 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.0-py39h49a4b6b_0.conda#278cc676a7e939cf2561ce4a5cfaa484 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.3-py39hd1e30aa_0.conda#dc0fb8e157c7caba4c98f1e1f9d2e5f4 https://conda.anaconda.org/conda-forge/linux-64/gfortran-12.4.0-h236703b_0.conda#581156aeb9b903f5425d5dd963d56ec1 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-12.4.0-hd748a6a_0.conda#6fd80632f36e5a3934af2600bcbb2b2d -https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h8a4344b_1.conda#a3acc4920c9ca19cb6b295028d606477 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.80.3-h315aac3_2.conda#00e0da7e4fceb5449f3ddd2bf6b2c351 https://conda.anaconda.org/conda-forge/linux-64/gxx-12.4.0-h236703b_0.conda#56cefffbce52071b597fd3eb9208adc9 https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-12.4.0-h8489865_0.conda#5cf73d936678e6805da39b8ba6be263c https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2#b748fbf7060927a6e82df7cb5ee8f097 @@ -208,7 +208,7 @@ https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.2.0-pyha770c7 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda#7b86ecb7d3557821c649b3c31e3eb9f2 https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp15-15.0.7-default_h127d8a8_5.conda#d0a9633b53cdc319b8a1a532ae7822b8 -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/libflac-1.4.3-h59595ed_0.conda#ee48bf17cc83a00f59ca1494d5646869 https://conda.anaconda.org/conda-forge/linux-64/libgpg-error-1.50-h4f305b6_0.conda#0d7ff1a8e69565ca3add6925e18e708f https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda#e2eaefa4de2b7237af7c907b8bbc760a @@ -237,7 +237,7 @@ https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.12.2-py39h3d6467e_5 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda#b39568655c127a9c4a44d178ac99b6d0 https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py39h623c9ba_0.conda#a19d023682384c637cb356d270c276c0 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.7.0-ha770c72_1.conda#d8d07866ac3b5b6937213c89a1874f08 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.7.1-pyhd8ed1ab_0.conda#80f7ce024289c333fdc5ad54a194fc86 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2024.8.0-pyhd8ed1ab_0.conda#bf68bf9ff9a18f1b17aa8c817225aee0 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.24.6-hbaaba92_0.conda#b22ffc80ac9af846df60b2640c98fea4 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-23_linux64_mkl.conda#5bdaf561cf48f95093dedaa665083874 https://conda.anaconda.org/conda-forge/linux-64/libsystemd0-255-h3516f8a_1.conda#3366af27f0b593544a6cd453c7932ac5 @@ -252,7 +252,7 @@ https://conda.anaconda.org/conda-forge/linux-64/numpy-1.19.5-py39hd249d9e_3.tar. https://conda.anaconda.org/conda-forge/noarch/pooch-1.6.0-pyhd8ed1ab_0.tar.bz2#6429e1d1091c51f626b5dcfdd38bf429 https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.8-h320f8da_24.conda#bec111b67cb8dc63277c6af65d214044 https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-23_linux64_mkl.conda#c8f8d0ebf2e7fd3a90ec68e3bb008995 -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py39h34cef29_2.conda#d3ee926e63ebd5b44ebc984dff020305 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2024.6.1-py39h9d013fb_3.conda#f3bcbaa497af215e86d966244d683289 https://conda.anaconda.org/conda-forge/noarch/imageio-2.34.2-pyh12aca89_0.conda#97ad994fae55dce96bd397054b32e41a https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.3.4-py39h2fa2bec_0.tar.bz2#9ec0b2186fab9121c54f4844f93ee5b7 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.1.5-py39hde0f152_0.tar.bz2#79fc4b5b3a865b90dd3701cecf1ad33c From 6d81672368bf298cc5f9d18ca522a7d8e3f5107f Mon Sep 17 00:00:00 2001 From: scikit-learn-bot Date: Mon, 12 Aug 2024 01:34:34 -0700 Subject: [PATCH 06/17] :lock: :robot: CI Update lock files for array-api CI build(s) :lock: :robot: (#29658) Co-authored-by: Lock file bot --- ...a_forge_cuda_array-api_linux-64_conda.lock | 58 +++++++++---------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/build_tools/github/pylatest_conda_forge_cuda_array-api_linux-64_conda.lock b/build_tools/github/pylatest_conda_forge_cuda_array-api_linux-64_conda.lock index 159e0f77d20ae..fc815e047708a 100644 --- a/build_tools/github/pylatest_conda_forge_cuda_array-api_linux-64_conda.lock +++ b/build_tools/github/pylatest_conda_forge_cuda_array-api_linux-64_conda.lock @@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62e https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.3-h4bc722e_0.conda#7624e34ee6baebfc80d67bac76cc9d9d https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hd590300_1.conda#aec6c91c7371c26392a06708a73c70e5 -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.21-h4bc722e_0.conda#36ce76665bf67f5aac36be7a0d21b7f3 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 @@ -53,7 +53,7 @@ https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_10 https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.1-h87b94db_1.conda#2d76d2cfdcfe2d5c3883d33d8be919e7 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.7.2-h87b94db_0.conda#8623f26fa29df281dc69ebdb41df0a25 https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.2.18-he027950_7.conda#11e5cb0b426772974f6416545baee0ce https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.1.16-he027950_3.conda#adbf0c44ca88a3cded175cd809a106b6 https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.1.18-he027950_7.conda#95611b325a9728ed68b8f7eef2dd3feb @@ -97,44 +97,44 @@ https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#391 https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 -https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.17-he19d79f_0.conda#e25ac9bf10f8e6aa67727b1cdbe762ef +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.4.19-h3400bea_0.conda#7d6818f07e4471d471be9b4252d7b54c https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda#6b7dcc7349efd123d493d2dbe85a045f https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.0-h5291e77_0.conda#c13ca0abd5d1d31d0eebcf86d51da8a4 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.10-h826b7d6_1.conda#6961646dded770513a781de4cd5c1fe1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.14.18-h6ea103f_1.conda#b0da9b0d46def0a1190790e623f246d3 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hd590300_1.conda#39f910d205726805a958da408ca194ba https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libcublas-12.4.2.65-hd3aeb46_0.conda#a83c33c2abd3bd467e13329a9655cb03 https://conda.anaconda.org/conda-forge/linux-64/libcusparse-12.3.0.142-hd3aeb46_0.conda#d72fd369532e32f800ab6447e9cd00ac -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h315aac3_2.conda#b0143a3e98136a680b728fdf9b42a258 https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-4.25.3-h08a7969_0.conda#6945825cebd2aeb16af4c69d97c32c13 https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2023.09.01-h5a48ba9_2.conda#41c69fba59d495e8cf5ffda48a607e35 https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.19.0-hb90f79a_1.conda#8cdb7d41faa0260875ba92414c487e2d -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h46a8edc_4.conda#a7e3a62981350e232e0e7345b5aea580 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda#08a9265c637230c37cb1be4a6cad4536 https://conda.anaconda.org/conda-forge/linux-64/mpfr-4.2.1-h38ae2d0_2.conda#168e18a2bba4f8520e6c5e38982f5847 https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.3.0-ha479ceb_5.conda#82776ee8145b9d1fd6546604de4b351d -https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda#d73490214f536cccb5819e9873048c92 +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.5-h2ad013b_0_cpython.conda#9c56c4df45f6571b13111d8df2448692 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-hb711507_2.conda#8637c3e5821654d0edf97e2b0404b443 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda#ad748ccca349aec3e91743e08b5e2b50 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda#0e0cbe0564d03a99afd5fd7b362feecd https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda#608e0ef8256b81d04456e8d211eee3e8 https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda#4a6d410296d7e39f00bacdee7df046e9 https://conda.anaconda.org/conda-forge/noarch/array-api-compat-1.8-pyhd8ed1ab_0.conda#1178a75b8f6f260ac4b4436979754278 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h7671281_15.conda#3b45b0da170f515de8be68155e14955a -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.2-he17ee6b_6.conda#4e3d1bb2ade85619ac2163e695c2cc1b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.4.2-h29f85be_19.conda#5e668aea2cda1c93c9ae72da95415440 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.8.7-h45b8271_1.conda#397d8a9cad2e86361587d37840f41e4c https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hd590300_1.conda#f27a24d46e3ea7b70a1f98e50c62508f https://conda.anaconda.org/conda-forge/linux-64/ccache-4.10.1-h065aff2_0.conda#d6b48c138e0c8170a6fe9c136e063540 https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.10-py312h30efb56_0.conda#b119273bff37284cbcb9281c1e85e67d +https://conda.anaconda.org/conda-forge/linux-64/cython-3.0.11-py312hca68cad_0.conda#f824c60def49466ad5b9aed4eaa23c28 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 @@ -148,8 +148,8 @@ https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda#d https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.9.1-hdb1bdb2_0.conda#7da1d242ca3591e174a3c7d82230d3c0 https://conda.anaconda.org/conda-forge/linux-64/libcusolver-11.6.0.99-hd3aeb46_0.conda#ccea7d03d84947a00296f6a39dc774b8 https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.1-default_hecaa2ac_1000.conda#f54aeebefb5c5ff84eca4fb05ca8aa3a -https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_1.conda#16d94b3586ef3558e5a583598524deb4 -https://conda.anaconda.org/conda-forge/linux-64/libpq-16.3-ha72fbe1_0.conda#bac737ae28b79cfbafd515258d97d29e +https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.8-h8b73ec9_2.conda#2e25bb2f53e4a48873a936f8ef53e592 +https://conda.anaconda.org/conda-forge/linux-64/libpq-16.4-h482b261_0.conda#0f74c5581623f860e7baca042d9d7139 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda#e71f31f8cfb0a91439f2086fc8aa0461 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.5-py312h98912ed_0.conda#6ff0b9582da2d4a74a1f9ae1f9ce2af6 https://conda.anaconda.org/conda-forge/linux-64/mpc-1.3.1-hfe3b2da_0.conda#289c71e83dc0daa7d4c81f04180778ca @@ -163,7 +163,7 @@ https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda#d3 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.1.2-pyhd8ed1ab_0.conda#b9a4dacf97241704529131a0dfc0494f https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.1-pyhd8ed1ab_0.conda#98206ea9954216ee7540f0c773f2104d https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda#3eeeeb9e4827ace8c0c1419c85d590ad -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda#e3fd78d8d490af1d84763b9fe3f2e552 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h41a817b_0.conda#1779c9cbd9006415ab7bb9e12747e9d1 https://conda.anaconda.org/conda-forge/linux-64/re2-2023.09.01-h7f4b329_2.conda#8f70e36268dea8eb666ef14c29bd3cda https://conda.anaconda.org/conda-forge/noarch/setuptools-72.1.0-pyhd8ed1ab_0.conda#e06d4c26df4f958a8d38696f2c344d15 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 @@ -177,8 +177,8 @@ https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2. https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.42-h4ab18f5_0.conda#b193af204da1bfb8c13882d131a14bd2 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.22-hbd3ac97_10.conda#7ca4abcc98c7521c02f4e8809bbe40df -https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-hcd6a914_8.conda#b81c45867558446640306507498b2c6b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.7.25-hdfe1943_2.conda#02273b04ae28f0822310d1be2be75c83 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.10.4-h7eb77b2_15.conda#46913a2424bbf6b8c5ab5910d967c64a https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.13.0-h935415a_0.conda#debd1677c2fea41eb2233a260f48a298 https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda#fceaedf1cdbcb02df9699a0d9b005292 https://conda.anaconda.org/conda-forge/linux-64/coverage-7.6.1-py312h41a817b_0.conda#4006636c39312dc42f8504475be3800f @@ -187,8 +187,8 @@ https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.53.1-py312h41a817b_0 https://conda.anaconda.org/conda-forge/linux-64/gmpy2-2.1.5-py312h1d5cde6_1.conda#27abd7664bc87595bd98b6306b8393d1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda#7b86ecb7d3557821c649b3c31e3eb9f2 https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_1.conda#1cd622f71ea159cc8c9c416568a34f0a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_1.conda#04c8c481b30c3fe62bec148fa4a75857 +https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.8-default_hf981a13_2.conda#b0f8c590aa86d9bee5987082f7f15bdf +https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.8-default_h9def88c_2.conda#ba2d12adbea9de311297f2b577f4bb86 https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.62.2-h15f2491_0.conda#8dabe607748cb3d7002ad73cd06f1325 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda#e2eaefa4de2b7237af7c907b8bbc760a https://conda.anaconda.org/conda-forge/noarch/meson-1.5.1-pyhd8ed1ab_1.conda#979087ee59bea1355f991a3b738af64e @@ -199,48 +199,48 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-8.3.2-pyhd8ed1ab_0.conda#e0 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0-pyhd8ed1ab_0.conda#2cf4264fffb9e6eff6031c5b6884d61c https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.12.0-h434a139_3.conda#c667c11d1e488a38220ede8a34441bff https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.4-h4ab18f5_2.conda#79e46d4a6ccecb7ee1912042958a8758 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.0-h365ddd8_2.conda#22339cf124753bafda336167f80e7860 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.6.4-hd923058_5.conda#1fdd83fe1d7a8a208a88be70911a5f9c https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.8.0-hd126650_2.conda#36df3cf05459de5d0a41c77c4329634b https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.7.0-h10ac4d7_1.conda#ab6d507ad16dbe2157920451d662e4a1 https://conda.anaconda.org/conda-forge/noarch/cuda-runtime-12.4.0-ha804496_0.conda#b760ac3b8e6faaf4f59cb2c47334b4f3 https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda#76b32dcf243444aea9c6b804bcfa40b8 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.26.0-h26d7fe4_0.conda#7b9d4c93870fb2d644168071d4d76afb +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.28.0-h26d7fe4_0.conda#2c51703b4d775f8943c08a361788131b https://conda.anaconda.org/conda-forge/noarch/meson-python-0.16.0-pyh0c530f3_0.conda#e16f0dbf502da873be9f9adb0dc52547 https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2#b9c8f925797a93dbff45e1626b025a6b https://conda.anaconda.org/conda-forge/noarch/pytest-cov-5.0.0-pyhd8ed1ab_0.conda#c54c0107057d67ddf077751339ec2c63 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-3.6.1-pyhd8ed1ab_0.conda#b39568655c127a9c4a44d178ac99b6d0 -https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.0-pypyh2585a3b_103.conda#be7ad175eb670a83ff575f86e53c57fb -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.3-hda66527_2.conda#734875312c8196feecc91f89856da612 +https://conda.anaconda.org/conda-forge/noarch/sympy-1.13.1-pypyh2585a3b_103.conda#e8095a7cdbe43c73ba5a381ead1a52f4 +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.27.5-hdd22b19_3.conda#6f7122a63de602ee202b059e698c574d https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.12.0-hd2e3451_0.conda#61f1c193452f0daa582f39634627ea33 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-16_linux64_mkl.tar.bz2#85f61af03fd291dae33150ffe89dc09a -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.26.0-ha262f82_0.conda#89b53708fd67762b26c38c8ecc5d323d +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.28.0-ha262f82_0.conda#9e7960f0b9ab3895ef73d92477c47dae https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2#69ba49e445f87aea2cba343a71a35ca2 https://conda.anaconda.org/pytorch/linux-64/pytorch-cuda-12.4-hc786d27_6.tar.bz2#294df2aee019b0e314713842d46e6b65 https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.7.2-hb12f9c5_4.conda#5dd4fddb73e5e4fef38ef54f35c155cd -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.329-h46c3b66_9.conda#c840f07ec58dc0b06041e7f36550a539 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.379-h82708ae_1.conda#ea040cd44271cd00a36d1a464a2aaad5 https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.11.0-h325d260_1.conda#11d926d1f4a75a1b03d1c053ca20424b https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-16_linux64_mkl.tar.bz2#361bf757b95488de76c4f123805742d3 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-16_linux64_mkl.tar.bz2#a2f166748917d6d6e4707841ca1f519e -https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_1.conda#3ea04b72ac9f7df92d1614f216d94048 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h4b47046_3_cpu.conda#c4e92e0d3c8b065294ac61a33cb0abc6 +https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.2-py312hb5137db_2.conda#99889d0c042cc4dfb9a758619d487282 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-17.0.0-h03aeac6_6_cpu.conda#c0d3c973e49d549ba10003c3c985f027 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-16_linux64_mkl.tar.bz2#44ccc4d4dca6a8d57fa17442bc64b5a1 https://conda.anaconda.org/conda-forge/linux-64/numpy-2.0.1-py312h1103770_0.conda#9f444595d8d9682891f2f078fc19da43 https://conda.anaconda.org/conda-forge/noarch/array-api-strict-2.0.1-pyhd8ed1ab_0.conda#2c00d29e0e276f2d32dfe20e698b8eeb https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-16_linux64_mkl.tar.bz2#3f92c1c9e1c0e183462c5071aa02cae1 https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.2.1-py312h8572e83_0.conda#12c6a831ef734f0b2dd4caff514cbb7f https://conda.anaconda.org/conda-forge/linux-64/cupy-core-13.2.0-py312hd074ebb_1.conda#222e2290af35f5c1fff96425456031e1 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_3_cpu.conda#8e3a0843cc7c09921c65ad80fe28d801 -https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_3_cpu.conda#f6eb0a9b55a0cd22bd8dede025562ede +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-17.0.0-he02047a_6_cpu.conda#f38e5ee8bb811b2a465598a4bfc41e22 +https://conda.anaconda.org/conda-forge/linux-64/libparquet-17.0.0-h9e5060d_6_cpu.conda#974d42b6c948038824ce56ae006c9237 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.2-py312h1d6d2e6_1.conda#ae00b61f3000d2284d1f2584d4dfafa8 https://conda.anaconda.org/conda-forge/linux-64/polars-1.2.1-py312h7285250_0.conda#f9f44acb5e671f282cf09e3fb79f446c https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-17.0.0-py312h9cafe31_1_cpu.conda#235827b9c93850cafdd2d5ab359893f9 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.0-py312hc2bc53b_1.conda#eae80145f63aa04a02dda456d4883b46 https://conda.anaconda.org/conda-forge/linux-64/blas-2.116-mkl.tar.bz2#c196a26abf6b4f132c88828ab7c2231c https://conda.anaconda.org/conda-forge/linux-64/cupy-13.2.0-py312had87585_1.conda#f5b30677da665b13e1ef2a47f239992d -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_3_cpu.conda#6cf5d038ca5cfd29988c4a05cd5a6276 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-17.0.0-he02047a_6_cpu.conda#94b84127d9f697b4ac0eba53e58583b6 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.1-py312h854627b_2.conda#2a49f2a9c0447bc1bdaec98e3ee59117 https://conda.anaconda.org/conda-forge/linux-64/pyamg-5.2.1-py312h389efb2_0.conda#37038b979f8be9666d90a852879368fb -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_3_cpu.conda#5014dd2d204f163d5296b7c803b6c1ca +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-17.0.0-hc9a23c6_6_cpu.conda#f6fd0b0822f00c963b31ac3fec2b6905 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.1-py312h7900ff3_2.conda#0cb46cee2785e2d9dd29a5f36f5a1de7 https://conda.anaconda.org/conda-forge/linux-64/pyarrow-17.0.0-py312h9cebb41_1.conda#7e8ddbd44fb99ba376b09c4e9e61e509 https://conda.anaconda.org/pytorch/linux-64/pytorch-2.4.0-py3.12_cuda12.4_cudnn9.1.0_0.tar.bz2#9731ae9086ed66acc02e8e4aba5d9990 From ca04e64bea0f4df93b3f8033ef9fcc53e5851cb4 Mon Sep 17 00:00:00 2001 From: scikit-learn-bot Date: Mon, 12 Aug 2024 01:35:20 -0700 Subject: [PATCH 07/17] :lock: :robot: CI Update lock files for scipy-dev CI build(s) :lock: :robot: (#29657) Co-authored-by: Lock file bot --- .../azure/pylatest_pip_scipy_dev_linux-64_conda.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock b/build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock index afecc31b579cf..5c84b2119f2e8 100644 --- a/build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock +++ b/build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock @@ -23,11 +23,11 @@ https://repo.anaconda.com/pkgs/main/linux-64/readline-8.2-h5eee18b_0.conda#be421 https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.14-h39e8969_0.conda#78dbc5e3c69143ebc037fc5d5b22e597 https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.45.3-h5eee18b_0.conda#acf93d6aceb74d6110e20b44cc45939e https://repo.anaconda.com/pkgs/main/linux-64/python-3.12.4-h5148396_1.conda#7863dc035441267f7b617f080c933671 -https://repo.anaconda.com/pkgs/main/linux-64/setuptools-69.5.1-py312h06a4308_0.conda#ce85d9a864a73e0b12d31a97733c9fca +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-72.1.0-py312h06a4308_0.conda#bab64ac5186aa07014788baf1fbe3ca9 https://repo.anaconda.com/pkgs/main/linux-64/wheel-0.43.0-py312h06a4308_0.conda#18d5f3b68a175c72576876db4afc9e9e https://repo.anaconda.com/pkgs/main/linux-64/pip-24.0-py312h06a4308_0.conda#6d9697bb8b9f3212be10b3b8e01a12b9 # pip alabaster @ https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl#sha256=fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b -# pip babel @ https://files.pythonhosted.org/packages/27/45/377f7e32a5c93d94cd56542349b34efab5ca3f9e2fd5a68c5e93169aa32d/Babel-2.15.0-py3-none-any.whl#sha256=08706bdad8d0a3413266ab61bd6c34d0c28d6e1e7badf40a2cebe67644e2e1fb +# pip babel @ https://files.pythonhosted.org/packages/ed/20/bc79bc575ba2e2a7f70e8a1155618bb1301eaa5132a8271373a6903f73f8/babel-2.16.0-py3-none-any.whl#sha256=368b5b98b37c06b7daf6696391c3240c938b37767d4584413e8438c5c435fa8b # pip certifi @ https://files.pythonhosted.org/packages/1c/d5/c84e1a17bf61d4df64ca866a1c9a913874b4e9bdc131ec689a0ad013fb36/certifi-2024.7.4-py3-none-any.whl#sha256=c198e21b1289c2ab85ee4e67bb4b4ef3ead0892059901a8d5b622f24a1101e90 # pip charset-normalizer @ https://files.pythonhosted.org/packages/ee/fb/14d30eb4956408ee3ae09ad34299131fb383c47df355ddb428a7331cfa1e/charset_normalizer-3.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=90d558489962fd4918143277a773316e56c72da56ec7aa3dc3dbbe20fdfed15b # pip coverage @ https://files.pythonhosted.org/packages/1f/0f/c890339dd605f3ebc269543247bdd43b703cce6825b5ed42ff5f2d6122c7/coverage-7.6.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#sha256=c44fee9975f04b33331cb8eb272827111efc8930cfd582e0320613263ca849ca @@ -64,4 +64,4 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-24.0-py312h06a4308_0.conda#6d96 # pip pytest-cov @ https://files.pythonhosted.org/packages/78/3a/af5b4fa5961d9a1e6237b530eb87dd04aea6eb83da09d2a4073d81b54ccf/pytest_cov-5.0.0-py3-none-any.whl#sha256=4f0764a1219df53214206bf1feea4633c3b558a2925c8b59f144f682861ce652 # pip pytest-xdist @ https://files.pythonhosted.org/packages/6d/82/1d96bf03ee4c0fdc3c0cbe61470070e659ca78dc0086fb88b66c185e2449/pytest_xdist-3.6.1-py3-none-any.whl#sha256=9ed4adfb68a016610848639bb7e02c9352d5d9f03d04809919e2dafc3be4cca7 # pip sphinx @ https://files.pythonhosted.org/packages/4d/61/2ad169c6ff1226b46e50da0e44671592dbc6d840a52034a0193a99b28579/sphinx-8.0.2-py3-none-any.whl#sha256=56173572ae6c1b9a38911786e206a110c9749116745873feae4f9ce88e59391d -# pip numpydoc @ https://files.pythonhosted.org/packages/f0/fa/dcfe0f65660661db757ee9ebd84e170ff98edd5d80235f62457d9088f85f/numpydoc-1.7.0-py3-none-any.whl#sha256=5a56419d931310d79a06cfc2a126d1558700feeb9b4f3d8dcae1a8134be829c9 +# pip numpydoc @ https://files.pythonhosted.org/packages/6c/45/56d99ba9366476cd8548527667f01869279cedb9e66b28eb4dfb27701679/numpydoc-1.8.0-py3-none-any.whl#sha256=72024c7fd5e17375dec3608a27c03303e8ad00c81292667955c6fea7a3ccf541 From e98865a2b9775e151a8945b3b2c08b1e7cafbbe3 Mon Sep 17 00:00:00 2001 From: scikit-learn-bot Date: Mon, 12 Aug 2024 02:18:57 -0700 Subject: [PATCH 08/17] :lock: :robot: CI Update lock files for cirrus-arm CI build(s) :lock: :robot: (#29656) Co-authored-by: Lock file bot --- .../pymin_conda_forge_linux-aarch64_conda.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/build_tools/cirrus/pymin_conda_forge_linux-aarch64_conda.lock b/build_tools/cirrus/pymin_conda_forge_linux-aarch64_conda.lock index cb2d117efcd76..9ce2c67444c6d 100644 --- a/build_tools/cirrus/pymin_conda_forge_linux-aarch64_conda.lock +++ b/build_tools/cirrus/pymin_conda_forge_linux-aarch64_conda.lock @@ -18,7 +18,7 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.12-h68df207_0. https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda#56398c28220513b9ea13d7b450acfb20 https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2#1f24853e59c68892452ef94ddd8afd4b https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h31becfc_1.conda#1b219fd801eddb7a94df5bd001053ad9 -https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.20-h31becfc_0.conda#018592a3d691662f451f89d0de474a20 +https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.21-h68df207_0.conda#806c74df6dcf96adea47c7829b264f80 https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.2-h2f0025b_0.conda#1b9f46b804a2c3c5d7fd6a80b77c35f9 https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2#dddd85f4d52121fab0a8b099c5e06501 https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.1.0-h9420597_0.conda#b907b29b964b8ebd7be215e47a659179 @@ -69,10 +69,10 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h31becfc_1.conda#9e4a13596ab651ea8d77aae023d0ce3f https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda#a5ab74c5bd158c3d5532b66d8d83d907 https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda#29c10432a2ca1472b53f299ffb2ffa37 -https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.80.3-haee52c6_1.conda#50ed8a077706cfe3da719deb71001f2c +https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.80.3-haee52c6_2.conda#937a787ab5789a1e0c818b9545b6deb9 https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.0.2-h05efe27_0.tar.bz2#a87f068744fd20334cd41489eb163bee https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.27-pthreads_h076ed1e_1.conda#cc0a15e3a6f92f454b6132ca6aca8e8d -https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-hf980d43_3.conda#b6f3abf5726ae33094bee238b4eb492f +https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.6.0-h395e79b_4.conda#07ac339fcab2d44ddfd9b8ac58e80a05 https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.12.7-h00a45b3_4.conda#d25c3e16ee77cd25342e4e235424c758 https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-18.1.8-hb063fc5_0.conda#f0cf07feda9ed87092833cd8fca012f5 https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-libs-8.3.0-h0c23661_5.conda#c5447423bf6ba4f4ad398033bd66998f @@ -87,7 +87,7 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.10.1-ha3bccff_0.co https://conda.anaconda.org/conda-forge/noarch/certifi-2024.7.4-pyhd8ed1ab_0.conda#24e7fd6ca65997938fff9e5ab6f653e4 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2#3faab06a954c2a04039983f2c4a50d99 https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda#5cd86562580f274031ede6aa6aa24441 -https://conda.anaconda.org/conda-forge/linux-aarch64/cython-3.0.10-py39h387a81e_0.conda#0e917a89f77c978d152099357bd75b22 +https://conda.anaconda.org/conda-forge/linux-aarch64/cython-3.0.11-py39h6e76b30_0.conda#7b2bd72eeb9a59b13090b02f4a534168 https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2#f3d63805602166bac09386741e00935e https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_0.conda#d02ae936e42063ca46af6cdad2dbd1e0 https://conda.anaconda.org/conda-forge/noarch/execnet-2.1.1-pyhd8ed1ab_0.conda#15dda3cdbf330abfe9f555d22f66db46 @@ -97,8 +97,8 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.5-py39had2cf https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda#ffdd8267a04c515e7ce69c727b051414 https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-23_linuxaarch64_openblas.conda#3ac1ad627e1a07fae62556d6aabafdfd https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h405e4a8_4.conda#d42c670b0c96c1795fd859d5e0275a55 -https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm18-18.1.8-h36f4c5c_1.conda#4807ee3558305d0e7634fd4be0f6cfbc -https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-16.3-hcf0348d_0.conda#7dd46e914b037824b9a9629ca6586fc3 +https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm18-18.1.8-h36f4c5c_2.conda#e42436ab11417326ca4c317a9a78124b +https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-16.4-hcf0348d_0.conda#d7a3cef9193c842d8621869affb3e069 https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.39-h1cc9640_0.conda#13e1d3f9188e85c6d59a98651aced002 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/linux-aarch64/openblas-0.3.27-pthreads_hd33deab_1.conda#70c0aa7d1dd049fffae952bfe8f2c4e9 @@ -123,8 +123,8 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.53.1-py39he257e https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.0-pyhd8ed1ab_0.conda#c5d3907ad8bd7bf557521a1833cf7e6d https://conda.anaconda.org/conda-forge/noarch/joblib-1.4.2-pyhd8ed1ab_0.conda#25df261d4523d9f9783bcdb7208d872f https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-23_linuxaarch64_openblas.conda#65a4f18036c0f5419146fddee6653a96 -https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp18.1-18.1.8-default_h14d1da3_1.conda#b8c48ff5a2c8fac7885ca558202d0bd4 -https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-18.1.8-default_h465fbfb_1.conda#b472fe26d5032bed56caf31064580fb9 +https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp18.1-18.1.8-default_h14d1da3_2.conda#ed0dd9fe9fb649dc19593919df0afd43 +https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-18.1.8-default_h465fbfb_2.conda#940ece4a5d753f0cb6ee27219bcd814a https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-23_linuxaarch64_openblas.conda#85c4fec3847027ca7402f3bd7d2de4c1 https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.7.0-h46f2afe_1.conda#78a24e611ab9c09c518f519be49c2e46 https://conda.anaconda.org/conda-forge/noarch/meson-1.5.1-pyhd8ed1ab_1.conda#979087ee59bea1355f991a3b738af64e @@ -146,5 +146,5 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.7.2-h288a8fd_4.c https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.13.1-py39hb921187_0.conda#1aac9080de661e03d286f18fb71e5240 https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.123-openblas.conda#43772c0a1ae8f29c9a223c21fd89262b https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.9.1-py39hf3ba65a_2.conda#2c71adc96eab781c8cd8d1cfc64d5bc7 -https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.2-py39hb23dda1_1.conda#0e0b29e8b60171e7c8d5652b955a50fd +https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.2-py39hb23dda1_2.conda#f4e3d54705d9aaddc4cadf200c30f330 https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.9.1-py39ha65689a_2.conda#6f6879438411334f90c06aca5e2cb6b7 From 596ba5fd37618f0b9b12815cb47ade9fa1bcafd3 Mon Sep 17 00:00:00 2001 From: Olivier Grisel Date: Mon, 12 Aug 2024 13:39:19 +0200 Subject: [PATCH 09/17] TST use error_score='raise' in test_array_api_search_cv_classifier (#29660) --- sklearn/model_selection/tests/test_search.py | 1 + 1 file changed, 1 insertion(+) diff --git a/sklearn/model_selection/tests/test_search.py b/sklearn/model_selection/tests/test_search.py index 36887fb36e770..060ab9ed55f98 100644 --- a/sklearn/model_selection/tests/test_search.py +++ b/sklearn/model_selection/tests/test_search.py @@ -2780,6 +2780,7 @@ def test_array_api_search_cv_classifier(SearchCV, array_namespace, device, dtype LinearDiscriminantAnalysis(), {"tol": [1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7]}, cv=2, + error_score="raise", ) searcher.fit(X_xp, y_xp) searcher.score(X_xp, y_xp) From fcf5cc7a9f43a1812e67b8416069f16a2fd140fd Mon Sep 17 00:00:00 2001 From: Evelyn Date: Tue, 13 Aug 2024 02:56:50 -0400 Subject: [PATCH 10/17] DOC Copyedit species names in species distribution modeling example (#29654) --- .../plot_species_distribution_modeling.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/examples/applications/plot_species_distribution_modeling.py b/examples/applications/plot_species_distribution_modeling.py index ea5f2c4aaf97d..3bb5c771adfd8 100644 --- a/examples/applications/plot_species_distribution_modeling.py +++ b/examples/applications/plot_species_distribution_modeling.py @@ -17,13 +17,13 @@ The two species are: - - `"Bradypus variegatus" - `_ , - the Brown-throated Sloth. + - `Bradypus variegatus + `_, + the brown-throated sloth. - - `"Microryzomys minutus" - `_ , - also known as the Forest Small Rice Rat, a rodent that lives in Peru, + - `Microryzomys minutus + `_, + also known as the forest small rice rat, a rodent that lives in Peru, Colombia, Ecuador, Peru, and Venezuela. References From 38fefe1da24663826a89a447370eedab26310d97 Mon Sep 17 00:00:00 2001 From: Omar Salman Date: Tue, 13 Aug 2024 13:27:13 +0500 Subject: [PATCH 11/17] FEA Add metadata routing for RFE and RFECV (#29312) --- doc/metadata_routing.rst | 4 +- doc/whats_new/v1.6.rst | 4 + sklearn/feature_selection/_rfe.py | 250 ++++++++++++++++-- sklearn/feature_selection/tests/test_rfe.py | 38 ++- sklearn/metrics/_scorer.py | 12 +- sklearn/tests/metadata_routing_common.py | 2 + sklearn/tests/test_metaestimators.py | 8 +- .../test_metaestimators_metadata_routing.py | 22 +- 8 files changed, 303 insertions(+), 37 deletions(-) diff --git a/doc/metadata_routing.rst b/doc/metadata_routing.rst index fec2cf610c02f..9b21b74032562 100644 --- a/doc/metadata_routing.rst +++ b/doc/metadata_routing.rst @@ -284,6 +284,8 @@ Meta-estimators and functions supporting metadata routing: - :class:`sklearn.ensemble.VotingRegressor` - :class:`sklearn.ensemble.BaggingClassifier` - :class:`sklearn.ensemble.BaggingRegressor` +- :class:`sklearn.feature_selection.RFE` +- :class:`sklearn.feature_selection.RFECV` - :class:`sklearn.feature_selection.SelectFromModel` - :class:`sklearn.feature_selection.SequentialFeatureSelector` - :class:`sklearn.impute.IterativeImputer` @@ -323,5 +325,3 @@ Meta-estimators and tools not supporting metadata routing yet: - :class:`sklearn.ensemble.AdaBoostClassifier` - :class:`sklearn.ensemble.AdaBoostRegressor` -- :class:`sklearn.feature_selection.RFE` -- :class:`sklearn.feature_selection.RFECV` diff --git a/doc/whats_new/v1.6.rst b/doc/whats_new/v1.6.rst index 74357c9171f10..6df2d9b2218bb 100644 --- a/doc/whats_new/v1.6.rst +++ b/doc/whats_new/v1.6.rst @@ -104,6 +104,10 @@ more details. for the `fit` method of its estimator and for its underlying CV splitter and scorer. :pr:`29266` by :user:`Adam Li `. +- |Feature| :class:`feature_selection.RFE` and :class:`feature_selection.RFECV` + now support metadata routing. + :pr:`29312` by :user:`Omar Salman `. + Dropping support for building with setuptools --------------------------------------------- diff --git a/sklearn/feature_selection/_rfe.py b/sklearn/feature_selection/_rfe.py index 524c791be6989..8ccbffce9b15e 100644 --- a/sklearn/feature_selection/_rfe.py +++ b/sklearn/feature_selection/_rfe.py @@ -10,38 +10,52 @@ from joblib import effective_n_jobs from ..base import BaseEstimator, MetaEstimatorMixin, _fit_context, clone, is_classifier -from ..metrics import check_scoring +from ..metrics import get_scorer from ..model_selection import check_cv from ..model_selection._validation import _score -from ..utils._param_validation import HasMethods, Interval, RealNotInt -from ..utils.metadata_routing import ( - _raise_for_unsupported_routing, - _RoutingNotSupportedMixin, +from ..utils import Bunch, metadata_routing +from ..utils._metadata_requests import ( + MetadataRouter, + MethodMapping, + _raise_for_params, + _routing_enabled, + process_routing, ) +from ..utils._param_validation import HasMethods, Interval, RealNotInt from ..utils.metaestimators import _safe_split, available_if from ..utils.parallel import Parallel, delayed -from ..utils.validation import check_is_fitted +from ..utils.validation import ( + _check_method_params, + _deprecate_positional_args, + check_is_fitted, +) from ._base import SelectorMixin, _get_feature_importances -def _rfe_single_fit(rfe, estimator, X, y, train, test, scorer): +def _rfe_single_fit(rfe, estimator, X, y, train, test, scorer, routed_params): """ Return the score and n_features per step for a fit across one fold. """ X_train, y_train = _safe_split(estimator, X, y, train) X_test, y_test = _safe_split(estimator, X, y, test, train) + fit_params = _check_method_params( + X, params=routed_params.estimator.fit, indices=train + ) + score_params = _check_method_params( + X=X, params=routed_params.scorer.score, indices=test + ) rfe._fit( X_train, y_train, lambda estimator, features: _score( - # TODO(SLEP6): pass score_params here estimator, X_test[:, features], y_test, scorer, - score_params=None, + score_params=score_params, ), + **fit_params, ) return rfe.step_scores_, rfe.step_n_features_ @@ -66,7 +80,7 @@ def check(self): return check -class RFE(_RoutingNotSupportedMixin, SelectorMixin, MetaEstimatorMixin, BaseEstimator): +class RFE(SelectorMixin, MetaEstimatorMixin, BaseEstimator): """Feature ranking with recursive feature elimination. Given an external estimator that assigns weights to features (e.g., the @@ -253,16 +267,31 @@ def fit(self, X, y, **fit_params): The target values. **fit_params : dict - Additional parameters passed to the `fit` method of the underlying - estimator. + - If `enable_metadata_routing=False` (default): + + Parameters directly passed to the ``fit`` method of the + underlying estimator. + + - If `enable_metadata_routing=True`: + + Parameters safely routed to the ``fit`` method of the + underlying estimator. + + .. versionchanged:: 1.6 + See :ref:`Metadata Routing User Guide ` + for more details. Returns ------- self : object Fitted estimator. """ - _raise_for_unsupported_routing(self, "fit", **fit_params) - return self._fit(X, y, **fit_params) + if _routing_enabled(): + routed_params = process_routing(self, "fit", **fit_params) + else: + routed_params = Bunch(estimator=Bunch(fit=fit_params)) + + return self._fit(X, y, **routed_params.estimator.fit) def _fit(self, X, y, step_score=None, **fit_params): # Parameter step_score controls the calculation of self.step_scores_ @@ -358,7 +387,7 @@ def _fit(self, X, y, step_score=None, **fit_params): return self @available_if(_estimator_has("predict")) - def predict(self, X): + def predict(self, X, **predict_params): """Reduce X to the selected features and predict using the estimator. Parameters @@ -366,16 +395,35 @@ def predict(self, X): X : array of shape [n_samples, n_features] The input samples. + **predict_params : dict + Parameters to route to the ``predict`` method of the + underlying estimator. + + .. versionadded:: 1.6 + Only available if `enable_metadata_routing=True`, + which can be set by using + ``sklearn.set_config(enable_metadata_routing=True)``. + See :ref:`Metadata Routing User Guide ` + for more details. + Returns ------- y : array of shape [n_samples] The predicted target values. """ + _raise_for_params(predict_params, self, "predict") check_is_fitted(self) - return self.estimator_.predict(self.transform(X)) + if _routing_enabled(): + routed_params = process_routing(self, "predict", **predict_params) + else: + routed_params = Bunch(estimator=Bunch(predict={})) + + return self.estimator_.predict( + self.transform(X), **routed_params.estimator.predict + ) @available_if(_estimator_has("score")) - def score(self, X, y, **fit_params): + def score(self, X, y, **score_params): """Reduce X to the selected features and return the score of the estimator. Parameters @@ -386,11 +434,22 @@ def score(self, X, y, **fit_params): y : array of shape [n_samples] The target values. - **fit_params : dict - Parameters to pass to the `score` method of the underlying - estimator. + **score_params : dict + - If `enable_metadata_routing=False` (default): - .. versionadded:: 1.0 + Parameters directly passed to the ``score`` method of the + underlying estimator. + + .. versionadded:: 1.0 + + - If `enable_metadata_routing=True`: + + Parameters safely routed to the `score` method of the + underlying estimator. + + .. versionchanged:: 1.6 + See :ref:`Metadata Routing User Guide ` + for more details. Returns ------- @@ -399,7 +458,14 @@ def score(self, X, y, **fit_params): features returned by `rfe.transform(X)` and `y`. """ check_is_fitted(self) - return self.estimator_.score(self.transform(X), y, **fit_params) + if _routing_enabled(): + routed_params = process_routing(self, "score", **score_params) + else: + routed_params = Bunch(estimator=Bunch(score=score_params)) + + return self.estimator_.score( + self.transform(X), y, **routed_params.estimator.score + ) def _get_support_mask(self): check_is_fitted(self) @@ -478,6 +544,29 @@ def _more_tags(self): return tags + def get_metadata_routing(self): + """Get metadata routing of this object. + + Please check :ref:`User Guide ` on how the routing + mechanism works. + + .. versionadded:: 1.6 + + Returns + ------- + routing : MetadataRouter + A :class:`~sklearn.utils.metadata_routing.MetadataRouter` encapsulating + routing information. + """ + router = MetadataRouter(owner=self.__class__.__name__).add( + estimator=self.estimator, + method_mapping=MethodMapping() + .add(caller="fit", callee="fit") + .add(caller="predict", callee="predict") + .add(caller="score", callee="score"), + ) + return router + class RFECV(RFE): """Recursive feature elimination with cross-validation to select features. @@ -668,6 +757,7 @@ class RFECV(RFE): "n_jobs": [None, Integral], } _parameter_constraints.pop("n_features_to_select") + __metadata_request__fit = {"groups": metadata_routing.UNUSED} def __init__( self, @@ -690,11 +780,13 @@ def __init__( self.n_jobs = n_jobs self.min_features_to_select = min_features_to_select + # TODO(1.8): remove `groups` from the signature after deprecation cycle. + @_deprecate_positional_args(version="1.8") @_fit_context( # RFECV.estimator is not validated yet prefer_skip_nested_validation=False ) - def fit(self, X, y, groups=None): + def fit(self, X, y, *, groups=None, **params): """Fit the RFE model and automatically tune the number of selected features. Parameters @@ -714,12 +806,23 @@ def fit(self, X, y, groups=None): .. versionadded:: 0.20 + **params : dict of str -> object + Parameters passed to the ``fit`` method of the estimator, + the scorer, and the CV splitter. + + ..versionadded:: 1.6 + Only available if `enable_metadata_routing=True`, + which can be set by using + ``sklearn.set_config(enable_metadata_routing=True)``. + See :ref:`Metadata Routing User Guide ` + for more details. + Returns ------- self : object Fitted estimator. """ - _raise_for_unsupported_routing(self, "fit", groups=groups) + _raise_for_params(params, self, "fit") X, y = self._validate_data( X, y, @@ -729,9 +832,20 @@ def fit(self, X, y, groups=None): multi_output=True, ) + if _routing_enabled(): + if groups is not None: + params.update({"groups": groups}) + routed_params = process_routing(self, "fit", **params) + else: + routed_params = Bunch( + estimator=Bunch(fit={}), + splitter=Bunch(split={"groups": groups}), + scorer=Bunch(score={}), + ) + # Initialization cv = check_cv(self.cv, y, classifier=is_classifier(self.estimator)) - scorer = check_scoring(self.estimator, scoring=self.scoring) + scorer = self._get_scorer() # Build an RFE object, which will evaluate and score each possible # feature count, down to self.min_features_to_select @@ -772,8 +886,8 @@ def fit(self, X, y, groups=None): func = delayed(_rfe_single_fit) scores_features = parallel( - func(rfe, self.estimator, X, y, train, test, scorer) - for train, test in cv.split(X, y, groups) + func(rfe, self.estimator, X, y, train, test, scorer, routed_params) + for train, test in cv.split(X, y, **routed_params.splitter.split) ) scores, step_n_features = zip(*scores_features) @@ -793,14 +907,14 @@ def fit(self, X, y, groups=None): verbose=self.verbose, ) - rfe.fit(X, y) + rfe.fit(X, y, **routed_params.estimator.fit) # Set final attributes self.support_ = rfe.support_ self.n_features_ = rfe.n_features_ self.ranking_ = rfe.ranking_ self.estimator_ = clone(self.estimator) - self.estimator_.fit(self._transform(X), y) + self.estimator_.fit(self._transform(X), y, **routed_params.estimator.fit) # reverse to stay consistent with before scores_rev = scores[:, ::-1] @@ -811,3 +925,81 @@ def fit(self, X, y, groups=None): "n_features": step_n_features_rev, } return self + + def score(self, X, y, **score_params): + """Score using the `scoring` option on the given test data and labels. + + Parameters + ---------- + X : array-like of shape (n_samples, n_features) + Test samples. + + y : array-like of shape (n_samples,) + True labels for X. + + **score_params : dict + Parameters to pass to the `score` method of the underlying scorer. + + ..versionadded:: 1.6 + Only available if `enable_metadata_routing=True`, + which can be set by using + ``sklearn.set_config(enable_metadata_routing=True)``. + See :ref:`Metadata Routing User Guide ` + for more details. + + Returns + ------- + score : float + Score of self.predict(X) w.r.t. y defined by `scoring`. + """ + _raise_for_params(score_params, self, "score") + scoring = self._get_scorer() + if _routing_enabled(): + routed_params = process_routing(self, "score", **score_params) + else: + routed_params = Bunch() + routed_params.scorer = Bunch(score={}) + + return scoring(self, X, y, **routed_params.scorer.score) + + def get_metadata_routing(self): + """Get metadata routing of this object. + + Please check :ref:`User Guide ` on how the routing + mechanism works. + + .. versionadded:: 1.6 + + Returns + ------- + routing : MetadataRouter + A :class:`~sklearn.utils.metadata_routing.MetadataRouter` encapsulating + routing information. + """ + router = MetadataRouter(owner=self.__class__.__name__) + router.add( + estimator=self.estimator, + method_mapping=MethodMapping().add(caller="fit", callee="fit"), + ) + router.add( + splitter=check_cv(self.cv), + method_mapping=MethodMapping().add( + caller="fit", + callee="split", + ), + ) + router.add( + scorer=self._get_scorer(), + method_mapping=MethodMapping() + .add(caller="fit", callee="score") + .add(caller="score", callee="score"), + ) + + return router + + def _get_scorer(self): + if self.scoring is None: + scoring = "accuracy" if is_classifier(self.estimator) else "r2" + else: + scoring = self.scoring + return get_scorer(scoring) diff --git a/sklearn/feature_selection/tests/test_rfe.py b/sklearn/feature_selection/tests/test_rfe.py index a0610e990054f..6e9acd7acc0ee 100644 --- a/sklearn/feature_selection/tests/test_rfe.py +++ b/sklearn/feature_selection/tests/test_rfe.py @@ -26,7 +26,7 @@ from sklearn.utils.fixes import CSR_CONTAINERS -class MockClassifier: +class MockClassifier(ClassifierMixin): """ Dummy classifier to test recursive feature elimination """ @@ -37,10 +37,11 @@ def __init__(self, foo_param=0): def fit(self, X, y): assert len(X) == len(y) self.coef_ = np.ones(X.shape[1], dtype=np.float64) + self.classes_ = sorted(set(y)) return self def predict(self, T): - return T.shape[0] + return np.ones(T.shape[0]) predict_proba = predict decision_function = predict @@ -666,3 +667,36 @@ def test_rfe_n_features_to_select_warning(ClsRFE, param): # larger than the number of features present in the X variable clsrfe = ClsRFE(estimator=LogisticRegression(), **{param: 21}) clsrfe.fit(X, y) + + +def test_rfe_with_sample_weight(): + """Test that `RFE` works correctly with sample weights.""" + X, y = make_classification(random_state=0) + n_samples = X.shape[0] + + # Assign the first half of the samples with twice the weight + sample_weight = np.ones_like(y) + sample_weight[: n_samples // 2] = 2 + + # Duplicate the first half of the data samples to replicate the effect + # of sample weights for comparison + X2 = np.concatenate([X, X[: n_samples // 2]], axis=0) + y2 = np.concatenate([y, y[: n_samples // 2]]) + + estimator = SVC(kernel="linear") + + rfe_sw = RFE(estimator=estimator, step=0.1) + rfe_sw.fit(X, y, sample_weight=sample_weight) + + rfe = RFE(estimator=estimator, step=0.1) + rfe.fit(X2, y2) + + assert_array_equal(rfe_sw.ranking_, rfe.ranking_) + + # Also verify that when sample weights are not doubled the results + # are different from the duplicated data + rfe_sw_2 = RFE(estimator=estimator, step=0.1) + sample_weight_2 = np.ones_like(y) + rfe_sw_2.fit(X, y, sample_weight=sample_weight_2) + + assert not np.array_equal(rfe_sw_2.ranking_, rfe.ranking_) diff --git a/sklearn/metrics/_scorer.py b/sklearn/metrics/_scorer.py index 76ad55514b8c2..f09b4e6d77442 100644 --- a/sklearn/metrics/_scorer.py +++ b/sklearn/metrics/_scorer.py @@ -378,7 +378,10 @@ def _score(self, method_caller, estimator, X, y_true, **kwargs): pos_label = None if is_regressor(estimator) else self._get_pos_label() response_method = _check_response_method(estimator, self._response_method) y_pred = method_caller( - estimator, response_method.__name__, X, pos_label=pos_label + estimator, + _get_response_method_name(response_method), + X, + pos_label=pos_label, ) scoring_kwargs = {**self._kwargs, **kwargs} @@ -651,6 +654,13 @@ def _get_response_method(response_method, needs_threshold, needs_proba): return response_method +def _get_response_method_name(response_method): + try: + return response_method.__name__ + except AttributeError: + return _get_response_method_name(response_method.func) + + @validate_params( { "score_func": [callable], diff --git a/sklearn/tests/metadata_routing_common.py b/sklearn/tests/metadata_routing_common.py index 5fffec8fccecf..174164daada8c 100644 --- a/sklearn/tests/metadata_routing_common.py +++ b/sklearn/tests/metadata_routing_common.py @@ -201,6 +201,7 @@ def __init__(self, alpha=0.0): def fit(self, X, y): self.classes_ = np.unique(y) + self.coef_ = np.ones_like(X) return self def partial_fit(self, X, y, classes=None): @@ -281,6 +282,7 @@ def fit(self, X, y, sample_weight="default", metadata="default"): ) self.classes_ = np.unique(y) + self.coef_ = np.ones_like(X) return self def predict(self, X, sample_weight="default", metadata="default"): diff --git a/sklearn/tests/test_metaestimators.py b/sklearn/tests/test_metaestimators.py index e06d2f59a6c10..9c12afd60c206 100644 --- a/sklearn/tests/test_metaestimators.py +++ b/sklearn/tests/test_metaestimators.py @@ -40,6 +40,10 @@ def __init__( self.skip_methods = skip_methods +# For the following meta estimators we check for the existence of relevant +# methods only if the sub estimator also contains them. Any methods that +# are implemented in the meta estimator themselves and are not dependent +# on the sub estimator are specified in the `skip_methods` parameter. DELEGATING_METAESTIMATORS = [ DelegatorData("Pipeline", lambda est: Pipeline([("est", est)])), DelegatorData( @@ -55,7 +59,9 @@ def __init__( skip_methods=["score"], ), DelegatorData("RFE", RFE, skip_methods=["transform", "inverse_transform"]), - DelegatorData("RFECV", RFECV, skip_methods=["transform", "inverse_transform"]), + DelegatorData( + "RFECV", RFECV, skip_methods=["transform", "inverse_transform", "score"] + ), DelegatorData( "BaggingClassifier", BaggingClassifier, diff --git a/sklearn/tests/test_metaestimators_metadata_routing.py b/sklearn/tests/test_metaestimators_metadata_routing.py index 5c31361163689..614c8669592b4 100644 --- a/sklearn/tests/test_metaestimators_metadata_routing.py +++ b/sklearn/tests/test_metaestimators_metadata_routing.py @@ -419,6 +419,26 @@ def enable_slep006(): "cv_name": "cv", "cv_routing_methods": ["fit"], }, + { + "metaestimator": RFE, + "estimator": "classifier", + "estimator_name": "estimator", + "X": X, + "y": y, + "estimator_routing_methods": ["fit", "predict", "score"], + }, + { + "metaestimator": RFECV, + "estimator": "classifier", + "estimator_name": "estimator", + "estimator_routing_methods": ["fit"], + "cv_name": "cv", + "cv_routing_methods": ["fit"], + "scorer_name": "scoring", + "scorer_routing_methods": ["fit", "score"], + "X": X, + "y": y, + }, ] """List containing all metaestimators to be tested and their settings @@ -460,8 +480,6 @@ def enable_slep006(): UNSUPPORTED_ESTIMATORS = [ AdaBoostClassifier(), AdaBoostRegressor(), - RFE(ConsumingClassifier()), - RFECV(ConsumingClassifier()), ] From 3b0c70b9c03a74835fe260b6b46b3f1ef6af8ba5 Mon Sep 17 00:00:00 2001 From: bme-git Date: Tue, 13 Aug 2024 12:13:39 +0200 Subject: [PATCH 12/17] DOC Update svm.rst - Add default setting 'ovr' to SVC/NuSVC multi-class classification description. (#29363) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/modules/svm.rst | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/modules/svm.rst b/doc/modules/svm.rst index 47115e43a89e0..99e66e1dd69ce 100644 --- a/doc/modules/svm.rst +++ b/doc/modules/svm.rst @@ -125,7 +125,8 @@ classifiers are constructed and each one trains data from two classes. To provide a consistent interface with other classifiers, the ``decision_function_shape`` option allows to monotonically transform the results of the "one-versus-one" classifiers to a "one-vs-rest" decision -function of shape ``(n_samples, n_classes)``. +function of shape ``(n_samples, n_classes)``, which is the default setting +of the parameter (default='ovr'). >>> X = [[0], [1], [2], [3]] >>> Y = [0, 1, 2, 3] From d33c5e2ce48bdd8ae55277586acac1baa20d3e90 Mon Sep 17 00:00:00 2001 From: dinga92 Date: Tue, 13 Aug 2024 13:19:06 +0200 Subject: [PATCH 13/17] TST change y creation in the check_estimators_dtypes test so that it is not identical to a column in X (#29080) Co-authored-by: Adrin Jalali --- sklearn/utils/estimator_checks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/utils/estimator_checks.py b/sklearn/utils/estimator_checks.py index a8776aa19608e..42edfe0d4d3c4 100644 --- a/sklearn/utils/estimator_checks.py +++ b/sklearn/utils/estimator_checks.py @@ -1915,7 +1915,7 @@ def check_estimators_dtypes(name, estimator_orig): X_train_64 = X_train_32.astype(np.float64) X_train_int_64 = X_train_32.astype(np.int64) X_train_int_32 = X_train_32.astype(np.int32) - y = X_train_int_64[:, 0] + y = np.array([1, 2] * 10, dtype=np.int64) y = _enforce_estimator_tags_y(estimator_orig, y) methods = ["predict", "transform", "decision_function", "predict_proba"] From 74695f1f11d49e35fdcde294ca153f73a26d8d7e Mon Sep 17 00:00:00 2001 From: Yao Xiao <108576690+Charlie-XIAO@users.noreply.github.com> Date: Tue, 13 Aug 2024 20:36:41 +0800 Subject: [PATCH 14/17] MAINT trigger lock file update in PR with a comment (#29505) --- .github/workflows/update-lock-files-pr.yml | 58 +++++++++++++++ ...ment_update_environments_and_lock_files.py | 73 +++++++++++++++++++ doc/developers/contributing.rst | 43 ++++++++++- 3 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/update-lock-files-pr.yml create mode 100644 build_tools/on_pr_comment_update_environments_and_lock_files.py diff --git a/.github/workflows/update-lock-files-pr.yml b/.github/workflows/update-lock-files-pr.yml new file mode 100644 index 0000000000000..86e7c793de4af --- /dev/null +++ b/.github/workflows/update-lock-files-pr.yml @@ -0,0 +1,58 @@ +# Workflow to update lock files in a PR, triggered by specific PR comments +name: Update lock files in PR +on: + issue_comment: + types: [created] + +permissions: + contents: write + +jobs: + update-lock-files: + if: >- + github.event.issue.pull_request + && startsWith(github.event.comment.body, '@scikit-learn-bot update lock-files') + runs-on: ubuntu-latest + + steps: + # There is no direct way to get the HEAD information directly from issue_comment + # event, so we use the GitHub CLI to get the PR head ref and repository + - name: Get pull request HEAD information + id: pr-head-info + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + pr_info=$(gh pr view ${{ github.event.issue.number }} --repo ${{ github.repository }} --json headRefName,headRepository,headRepositoryOwner) + pr_head_ref=$(echo "$pr_info" | jq -r '.headRefName') + pr_head_repository=$(echo "$pr_info" | jq -r '.headRepositoryOwner.login + "/" + .headRepository.name') + echo "pr_head_ref=$pr_head_ref" >> $GITHUB_OUTPUT + echo "pr_head_repository=$pr_head_repository" >> $GITHUB_OUTPUT + + - name: Check out the PR branch + uses: actions/checkout@v4 + with: + ref: ${{ steps.pr-head-info.outputs.pr_head_ref }} + repository: ${{ steps.pr-head-info.outputs.pr_head_repository }} + + # We overwrite all the scripts we are going to use in this workflow with their + # versions on main; since this workflow has the write permissions this is to avoid + # malicious changes to these scripts in PRs to be executed + - name: Download scripts from main + run: | + curl https://raw.githubusercontent.com/${{ github.repository }}/comment-update-lock/build_tools/shared.sh --retry 5 -o ./build_tools/shared.sh + curl https://raw.githubusercontent.com/${{ github.repository }}/comment-update-lock/build_tools/update_environments_and_lock_files.py --retry 5 -o ./build_tools/update_environments_and_lock_files.py + curl https://raw.githubusercontent.com/${{ github.repository }}/comment-update-lock/build_tools/on_pr_comment_update_environments_and_lock_files.py --retry 5 -o ./build_tools/on_pr_comment_update_environments_and_lock_files.py + + - name: Update lock files + env: + COMMENT: ${{ github.event.comment.body }} + # We download the lock files update scripts from main, since this workflow is + # run from main itself + run: | + source build_tools/shared.sh + source $CONDA/bin/activate + conda install -n base conda conda-libmamba-solver -y + conda config --set solver libmamba + conda install -c conda-forge "$(get_dep conda-lock min)" -y + + python build_tools/on_pr_comment_update_environments_and_lock_files.py diff --git a/build_tools/on_pr_comment_update_environments_and_lock_files.py b/build_tools/on_pr_comment_update_environments_and_lock_files.py new file mode 100644 index 0000000000000..f57a17af1f1fc --- /dev/null +++ b/build_tools/on_pr_comment_update_environments_and_lock_files.py @@ -0,0 +1,73 @@ +import argparse +import os +import shlex +import subprocess + + +def execute_command(command): + command_list = shlex.split(command) + subprocess.run(command_list, check=True, text=True) + + +def main(): + comment = os.environ["COMMENT"].splitlines()[0].strip() + + # Extract the command-line arguments from the comment + prefix = "@scikit-learn-bot update lock-files" + assert comment.startswith(prefix) + all_args_list = shlex.split(comment[len(prefix) :]) + + # Parse the options for the lock-file script + parser = argparse.ArgumentParser() + parser.add_argument("--select-build", default="") + parser.add_argument("--skip-build", default=None) + parser.add_argument("--select-tag", default=None) + args, extra_args_list = parser.parse_known_args(all_args_list) + + # Rebuild the command-line arguments for the lock-file script + args_string = "" + if args.select_build != "": + args_string += f" --select-build {args.select_build}" + if args.skip_build is not None: + args_string += f" --skip-build {args.skip_build}" + if args.select_tag is not None: + args_string += f" --select-tag {args.select_tag}" + + # Parse extra arguments + extra_parser = argparse.ArgumentParser() + extra_parser.add_argument("--commit-marker", default=None) + extra_args, _ = extra_parser.parse_known_args(extra_args_list) + + marker = "" + # Additional markers based on the tag + if args.select_tag == "main-ci": + marker += "[doc build] " + elif args.select_tag == "scipy-dev": + marker += "[scipy-dev] " + elif args.select_tag == "arm": + marker += "[cirrus arm] " + elif len(all_args_list) == 0: + # No arguments which will update all lock files so add all markers + marker += "[doc build] [scipy-dev] [cirrus arm] " + # The additional `--commit-marker` argument + if extra_args.commit_marker is not None: + marker += extra_args.commit_marker + " " + + execute_command( + f"python build_tools/update_environments_and_lock_files.py{args_string}" + ) + execute_command('git config --global user.name "scikit-learn-bot"') + execute_command('git config --global user.email "noreply@github.com"') + execute_command("git add -A") + # Avoiding commiting the scripts that are downloaded from main + execute_command("git reset build_tools/shared.sh") + execute_command("git reset build_tools/update_environments_and_lock_files.py") + execute_command( + "git reset build_tools/on_pr_comment_update_environments_and_lock_files.py" + ) + execute_command(f'git commit -m "{marker}Update lock files"') + execute_command("git push") + + +if __name__ == "__main__": + main() diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index ede9d44e44240..cd187b128d12d 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -517,7 +517,7 @@ profiling and Cython optimizations. sections. Continuous Integration (CI) -^^^^^^^^^^^^^^^^^^^^^^^^^^^ +--------------------------- * Azure pipelines are used for testing scikit-learn on Linux, Mac and Windows, with different dependencies and settings. @@ -526,12 +526,17 @@ Continuous Integration (CI) source distributions. * Cirrus CI is used to build on ARM. +.. _commit_markers: + +Commit message markers +^^^^^^^^^^^^^^^^^^^^^^ + Please note that if one of the following markers appear in the latest commit message, the following actions are taken. ====================== =================== Commit Message Marker Action Taken by CI ----------------------- ------------------- +====================== =================== [ci skip] CI is skipped completely [cd build] CD is run (wheels and source distribution are built) [cd build gh] CD is run only for GitHub Actions @@ -551,10 +556,40 @@ Commit Message Marker Action Taken by CI Note that, by default, the documentation is built but only the examples that are directly modified by the pull request are executed. +Lock files +^^^^^^^^^^ + +CIs use lock files to build environments with specific versions of dependencies. When a +PR needs to modify the dependencies or their versions, the lock files should be updated +accordingly. This can be done by commenting in the PR: + +.. code-block:: text + + @scikit-learn-bot update lock-files + +A bot will push a commit to your PR branch with the updated lock files in a few minutes. +Make sure to tick the *Allow edits from maintainers* checkbox located at the bottom of +the right sidebar of the PR. You can also specify the options `--select-build`, +`--skip-build`, and `--select-tag` as in a command line. Use `--help` on the script +`build_tools/update_environments_and_lock_files.py` for more information. For example, + +.. code-block:: text + + @scikit-learn-bot update lock-files --select-tag main-ci --skip-build doc + +The bot will automatically add :ref:`commit message markers ` to the +commit for certain tags. If you want to add more markers manually, you can do so using +the `--commit-marker` option. For example, the following comment will trigger the bot to +update documentation-related lock files and add the `[doc build]` marker to the commit: + +.. code-block:: text + + @scikit-learn-bot update lock-files --select-build doc --commit-marker "[doc build]" + .. _stalled_pull_request: Stalled pull requests -^^^^^^^^^^^^^^^^^^^^^ +--------------------- As contributing a feature can be a lengthy process, some pull requests appear inactive but unfinished. In such a case, taking @@ -586,7 +621,7 @@ them over is a great service for the project. A good etiquette to take over is: old one. Stalled and Unclaimed Issues -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +---------------------------- Generally speaking, issues which are up for grabs will have a `"help wanted" `_. From 3a25c38be811cbf301a5faabf61dea557dfd1569 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Sr=C5=A1e=C5=88?= Date: Tue, 13 Aug 2024 16:02:13 +0200 Subject: [PATCH 15/17] DOC improved documentation for BaseSearchCV fit method - precomputed kernel or distance matrices (#29586) Co-authored-by: Stepan Srsen --- sklearn/model_selection/_search.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/sklearn/model_selection/_search.py b/sklearn/model_selection/_search.py index 2ddbc7854e93e..9218b5bb6b3be 100644 --- a/sklearn/model_selection/_search.py +++ b/sklearn/model_selection/_search.py @@ -890,9 +890,10 @@ def fit(self, X, y=None, **params): Parameters ---------- - X : array-like of shape (n_samples, n_features) - Training vector, where `n_samples` is the number of samples and - `n_features` is the number of features. + X : array-like of shape (n_samples, n_features) or (n_samples, n_samples) + Training vectors, where `n_samples` is the number of samples and + `n_features` is the number of features. For precomputed kernel or + distance matrix, the expected shape of X is (n_samples, n_samples). y : array-like of shape (n_samples, n_output) \ or (n_samples,), default=None From 8392e92e9be74b06cd47dff28354f3f091557c0d Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Tue, 13 Aug 2024 22:20:37 +0530 Subject: [PATCH 16/17] DOC include note for searching for optimal parameters with successive halving (#25645) --- doc/modules/grid_search.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/doc/modules/grid_search.rst b/doc/modules/grid_search.rst index 12ee76d8e4d39..ee567c8e497e2 100644 --- a/doc/modules/grid_search.rst +++ b/doc/modules/grid_search.rst @@ -188,6 +188,11 @@ iteration, which will be allocated more resources. For parameter tuning, the resource is typically the number of training samples, but it can also be an arbitrary numeric parameter such as `n_estimators` in a random forest. +.. note:: + + The resource increase chosen should be large enough so that a large improvement + in scores is obtained when taking into account statistical significance. + As illustrated in the figure below, only a subset of candidates 'survive' until the last iteration. These are the candidates that have consistently ranked among the top-scoring candidates across all iterations. From 151cb2dc64f60d011b178b91d0defb81d90f72b3 Mon Sep 17 00:00:00 2001 From: Adam Li Date: Tue, 13 Aug 2024 15:13:13 -0400 Subject: [PATCH 17/17] FEA Add `_build_pruned_tree` to tree.pxd file to allow cimports and a `_build_pruned_tree_py` to allow anyone to prune trees (#29590) Signed-off-by: Adam Li Co-authored-by: Thomas J. Fan --- sklearn/tree/_tree.pxd | 17 +++++++++++ sklearn/tree/_tree.pyx | 41 ++++++++++++++++++++++++++- sklearn/tree/_utils.pxd | 1 + sklearn/tree/tests/test_tree.py | 50 +++++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+), 1 deletion(-) diff --git a/sklearn/tree/_tree.pxd b/sklearn/tree/_tree.pxd index 831ca38a11148..2cadca4564a87 100644 --- a/sklearn/tree/_tree.pxd +++ b/sklearn/tree/_tree.pxd @@ -114,3 +114,20 @@ cdef class TreeBuilder: const float64_t[:, ::1] y, const float64_t[:] sample_weight, ) + + +# ============================================================================= +# Tree pruning +# ============================================================================= + +# The private function allows any external caller to prune the tree and return +# a new tree with the pruned nodes. The pruned tree is a new tree object. +# +# .. warning:: this function is not backwards compatible and may change without +# notice. +cdef void _build_pruned_tree( + Tree tree, # OUT + Tree orig_tree, + const uint8_t[:] leaves_in_subtree, + intp_t capacity +) diff --git a/sklearn/tree/_tree.pyx b/sklearn/tree/_tree.pyx index 43b7770131497..7e6946a718a81 100644 --- a/sklearn/tree/_tree.pyx +++ b/sklearn/tree/_tree.pyx @@ -1872,7 +1872,7 @@ cdef struct BuildPrunedRecord: intp_t parent bint is_left -cdef _build_pruned_tree( +cdef void _build_pruned_tree( Tree tree, # OUT Tree orig_tree, const uint8_t[:] leaves_in_subtree, @@ -1931,6 +1931,15 @@ cdef _build_pruned_tree( is_leaf = leaves_in_subtree[orig_node_id] node = &orig_tree.nodes[orig_node_id] + # protect against an infinite loop as a runtime error, when leaves_in_subtree + # are improperly set where a node is not marked as a leaf, but is a node + # in the original tree. Thus, it violates the assumption that the node + # is a leaf in the pruned tree, or has a descendant that will be pruned. + if (not is_leaf and node.left_child == _TREE_LEAF + and node.right_child == _TREE_LEAF): + rc = -2 + break + new_node_id = tree._add_node( parent, is_left, is_leaf, node.feature, node.threshold, node.impurity, node.n_node_samples, @@ -1960,3 +1969,33 @@ cdef _build_pruned_tree( tree.max_depth = max_depth_seen if rc == -1: raise MemoryError("pruning tree") + elif rc == -2: + raise ValueError( + "Node has reached a leaf in the original tree, but is not " + "marked as a leaf in the leaves_in_subtree mask." + ) + + +def _build_pruned_tree_py(Tree tree, Tree orig_tree, const uint8_t[:] leaves_in_subtree): + """Build a pruned tree. + + Build a pruned tree from the original tree by transforming the nodes in + ``leaves_in_subtree`` into leaves. + + Parameters + ---------- + tree : Tree + Location to place the pruned tree + orig_tree : Tree + Original tree + leaves_in_subtree : uint8_t ndarray, shape=(node_count, ) + Boolean mask for leaves to include in subtree. The array must have + the same size as the number of nodes in the original tree. + """ + if leaves_in_subtree.shape[0] != orig_tree.node_count: + raise ValueError( + f"The length of leaves_in_subtree {len(leaves_in_subtree)} must be " + f"equal to the number of nodes in the original tree {orig_tree.node_count}." + ) + + _build_pruned_tree(tree, orig_tree, leaves_in_subtree, orig_tree.node_count) diff --git a/sklearn/tree/_utils.pxd b/sklearn/tree/_utils.pxd index de16cc65b32a9..bc1d7668187d7 100644 --- a/sklearn/tree/_utils.pxd +++ b/sklearn/tree/_utils.pxd @@ -8,6 +8,7 @@ from ._tree cimport Node from ..neighbors._quad_tree cimport Cell from ..utils._typedefs cimport float32_t, float64_t, intp_t, uint8_t, int32_t, uint32_t + cdef enum: # Max value for our rand_r replacement (near the bottom). # We don't use RAND_MAX because it's different across platforms and diff --git a/sklearn/tree/tests/test_tree.py b/sklearn/tree/tests/test_tree.py index 60d864a73a790..5ef783de305d2 100644 --- a/sklearn/tree/tests/test_tree.py +++ b/sklearn/tree/tests/test_tree.py @@ -39,6 +39,7 @@ NODE_DTYPE, TREE_LEAF, TREE_UNDEFINED, + _build_pruned_tree_py, _check_n_classes, _check_node_ndarray, _check_value_ndarray, @@ -2783,3 +2784,52 @@ def test_classification_tree_missing_values_toy(): (tree.tree_.children_left == -1) & (tree.tree_.n_node_samples == 1) ) assert_allclose(tree.tree_.impurity[leaves_idx], 0.0) + + +def test_build_pruned_tree_py(): + """Test pruning a tree with the Python caller of the Cythonized prune tree.""" + tree = DecisionTreeClassifier(random_state=0, max_depth=1) + tree.fit(iris.data, iris.target) + + n_classes = np.atleast_1d(tree.n_classes_) + pruned_tree = CythonTree(tree.n_features_in_, n_classes, tree.n_outputs_) + + # only keep the root note + leave_in_subtree = np.zeros(tree.tree_.node_count, dtype=np.uint8) + leave_in_subtree[0] = 1 + _build_pruned_tree_py(pruned_tree, tree.tree_, leave_in_subtree) + + assert tree.tree_.node_count == 3 + assert pruned_tree.node_count == 1 + with pytest.raises(AssertionError): + assert_array_equal(tree.tree_.value, pruned_tree.value) + assert_array_equal(tree.tree_.value[0], pruned_tree.value[0]) + + # now keep all the leaves + pruned_tree = CythonTree(tree.n_features_in_, n_classes, tree.n_outputs_) + leave_in_subtree = np.zeros(tree.tree_.node_count, dtype=np.uint8) + leave_in_subtree[1:] = 1 + + # Prune the tree + _build_pruned_tree_py(pruned_tree, tree.tree_, leave_in_subtree) + assert tree.tree_.node_count == 3 + assert pruned_tree.node_count == 3, pruned_tree.node_count + assert_array_equal(tree.tree_.value, pruned_tree.value) + + +def test_build_pruned_tree_infinite_loop(): + """Test pruning a tree does not result in an infinite loop.""" + + # Create a tree with root and two children + tree = DecisionTreeClassifier(random_state=0, max_depth=1) + tree.fit(iris.data, iris.target) + n_classes = np.atleast_1d(tree.n_classes_) + pruned_tree = CythonTree(tree.n_features_in_, n_classes, tree.n_outputs_) + + # only keeping one child as a leaf results in an improper tree + leave_in_subtree = np.zeros(tree.tree_.node_count, dtype=np.uint8) + leave_in_subtree[1] = 1 + with pytest.raises( + ValueError, match="Node has reached a leaf in the original tree" + ): + _build_pruned_tree_py(pruned_tree, tree.tree_, leave_in_subtree)