From f4c27b9602522796974690eec3f491f3d3386812 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 15:21:46 +0200 Subject: [PATCH 001/251] MAINT Sort and clean-up whats new 1.1 (#23216) --- doc/whats_new/v1.1.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 0ce67e9d1f8d5..5c9dd64e8a919 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -572,9 +572,12 @@ Changelog `warm_start` enabled. :pr:`22106` by :user:`Pieter Gijsbers `. +<<<<<<< HEAD - |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` by skipping repetitive input checks. :pr:`23149` by :user:`Zhehao Liu `. +======= +>>>>>>> 4942ba76eb (MAINT Sort and clean-up whats new 1.1 (#23216)) - |Fix| Change the parameter `validation_fraction` in :class:`ensemble.GradientBoostingClassifier` and :class:`ensemble.GradientBoostingRegressor` so that an error is raised if anything @@ -843,10 +846,13 @@ Changelog of sample weights when the input is sparse. :pr:`22899` by :user:`Jérémie du Boisberranger `. +<<<<<<< HEAD - |Fix| :class:`linear_model.SGDRegressor` and :class:`linear_model.SGDClassifier` now computes the validation error correctly when early stopping is enabled. :pr:`23256` by :user:`Zhehao Liu `. +======= +>>>>>>> 4942ba76eb (MAINT Sort and clean-up whats new 1.1 (#23216)) - |API| :class:`linear_model.LassoLarsIC` now exposes `noise_variance` as a parameter in order to provide an estimate of the noise variance. This is particularly relevant when `n_features > n_samples` and the From b612222d07b64e5e0365fa5994dcc8f85afc856d Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 15:44:32 +0200 Subject: [PATCH 002/251] MNT finalize what's new and update web page for 1.1 (#23219) --- doc/whats_new/v1.1.rst | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 5c9dd64e8a919..0ce67e9d1f8d5 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -572,12 +572,9 @@ Changelog `warm_start` enabled. :pr:`22106` by :user:`Pieter Gijsbers `. -<<<<<<< HEAD - |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` by skipping repetitive input checks. :pr:`23149` by :user:`Zhehao Liu `. -======= ->>>>>>> 4942ba76eb (MAINT Sort and clean-up whats new 1.1 (#23216)) - |Fix| Change the parameter `validation_fraction` in :class:`ensemble.GradientBoostingClassifier` and :class:`ensemble.GradientBoostingRegressor` so that an error is raised if anything @@ -846,13 +843,10 @@ Changelog of sample weights when the input is sparse. :pr:`22899` by :user:`Jérémie du Boisberranger `. -<<<<<<< HEAD - |Fix| :class:`linear_model.SGDRegressor` and :class:`linear_model.SGDClassifier` now computes the validation error correctly when early stopping is enabled. :pr:`23256` by :user:`Zhehao Liu `. -======= ->>>>>>> 4942ba76eb (MAINT Sort and clean-up whats new 1.1 (#23216)) - |API| :class:`linear_model.LassoLarsIC` now exposes `noise_variance` as a parameter in order to provide an estimate of the noise variance. This is particularly relevant when `n_features > n_samples` and the From 160f5b83a19bc496f29ce21852cb631e2e4275f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20du=20Boisberranger?= <34657725+jeremiedbb@users.noreply.github.com> Date: Thu, 28 Apr 2022 17:55:25 +0200 Subject: [PATCH 003/251] MNT update what's new 1.1 for 1.1.1 and add what's new 1.2 (#23223) --- doc/whats_new.rst | 1 + doc/whats_new/v1.2.rst | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 doc/whats_new/v1.2.rst diff --git a/doc/whats_new.rst b/doc/whats_new.rst index 931420a30b02f..3354a6b13f32b 100644 --- a/doc/whats_new.rst +++ b/doc/whats_new.rst @@ -12,6 +12,7 @@ on libraries.io to be notified when new versions are released. .. toctree:: :maxdepth: 1 + Version 1.2 Version 1.1 Version 1.0 Version 0.24 diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst new file mode 100644 index 0000000000000..bdb9f3018aba8 --- /dev/null +++ b/doc/whats_new/v1.2.rst @@ -0,0 +1,42 @@ +.. include:: _contributors.rst + +.. currentmodule:: sklearn + +.. _changes_1_2: + +Version 1.2.0 +============= + +**In Development** + +.. include:: changelog_legend.inc + +Changed models +-------------- + +The following estimators and functions, when fit with the same data and +parameters, may produce different models from the previous version. This often +occurs due to changes in the modelling logic (bug fixes or enhancements), or in +random sampling procedures. + +Changelog +--------- + +.. + Entries should be grouped by module (in alphabetic order) and prefixed with + one of the labels: |MajorFeature|, |Feature|, |Efficiency|, |Enhancement|, + |Fix| or |API| (see whats_new.rst for descriptions). + Entries should be ordered by those labels (e.g. |Fix| after |Efficiency|). + Changes not specific to a module should be listed under *Multiple Modules* + or *Miscellaneous*. + Entries should end with: + :pr:`123456` by :user:`Joe Bloggs `. + where 123456 is the *pull request* number, not the issue number. + +Code and Documentation Contributors +----------------------------------- + +Thanks to everyone who has contributed to the maintenance and improvement of +the project since version 1.1, including: + +TODO: update at the time of the release. From 5aedfd1241e58af1ed5fa21cf32ce66fabe7ae65 Mon Sep 17 00:00:00 2001 From: Maxwell Date: Fri, 29 Apr 2022 17:03:48 +0800 Subject: [PATCH 004/251] remove redundant lambda function (#23232) --- benchmarks/bench_multilabel_metrics.py | 4 ++-- doc/tutorial/machine_learning_map/parse_path.py | 6 +++--- sklearn/tests/test_docstrings.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/benchmarks/bench_multilabel_metrics.py b/benchmarks/bench_multilabel_metrics.py index 9981184a4af78..2a87b388e91a2 100755 --- a/benchmarks/bench_multilabel_metrics.py +++ b/benchmarks/bench_multilabel_metrics.py @@ -34,8 +34,8 @@ FORMATS = { "sequences": lambda y: [list(np.flatnonzero(s)) for s in y], "dense": lambda y: y, - "csr": lambda y: sp.csr_matrix(y), - "csc": lambda y: sp.csc_matrix(y), + "csr": sp.csr_matrix, + "csc": sp.csc_matrix, } diff --git a/doc/tutorial/machine_learning_map/parse_path.py b/doc/tutorial/machine_learning_map/parse_path.py index 770fd1481f53b..b1c68cec7f76b 100644 --- a/doc/tutorial/machine_learning_map/parse_path.py +++ b/doc/tutorial/machine_learning_map/parse_path.py @@ -89,7 +89,7 @@ def convertToFloat(s, loc, toks): coordinateSequence = Sequence(coordinate) -coordinatePair = (coordinate + maybeComma + coordinate).setParseAction(lambda t: tuple(t)) +coordinatePair = (coordinate + maybeComma + coordinate).setParseAction(tuple) coordinatePairSequence = Sequence(coordinatePair) coordinatePairPair = coordinatePair + maybeComma + coordinatePair @@ -111,9 +111,9 @@ def convertToFloat(s, loc, toks): arcRadius = ( nonnegativeNumber + maybeComma + #rx nonnegativeNumber #ry -).setParseAction(lambda t: tuple(t)) +).setParseAction(tuple) -arcFlags = (flag + maybeComma + flag).setParseAction(lambda t: tuple(t)) +arcFlags = (flag + maybeComma + flag).setParseAction(tuple) ellipticalArcArgument = Group( arcRadius + maybeComma + #rx, ry diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 0131dae6c01a3..8a0f3c10ec8e5 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -144,7 +144,7 @@ def get_all_methods(): methods.append(name) methods.append(None) - for method in sorted(methods, key=lambda x: str(x)): + for method in sorted(methods, key=str): yield Estimator, method From 77173f1dacb8bcef89345ccd277b96c138387757 Mon Sep 17 00:00:00 2001 From: Maxwell Date: Fri, 29 Apr 2022 17:12:19 +0800 Subject: [PATCH 005/251] ENH Optimize runtime for IsolationForest (#23149) --- doc/whats_new/v1.1.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 0ce67e9d1f8d5..39cfb62dc8057 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -609,6 +609,9 @@ Changelog :class:`ensemble.ExtraTreesClassifier`. :pr:`20803` by :user:`Brian Sun `. +- |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` + by skipping repetitive input checks. :pr:`23149` by :user:`Zhehao Liu `. + :mod:`sklearn.feature_extraction` ................................. From 74e0800cfce5906c25e4e279761499311150ca10 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 15:53:06 +0200 Subject: [PATCH 006/251] MNT Refactor splitter flow by removing indentation (#23237) Co-authored-by: Julien Jerphanion --- sklearn/tree/_splitter.pyx | 531 +++++++++++++++++++------------------ 1 file changed, 268 insertions(+), 263 deletions(-) diff --git a/sklearn/tree/_splitter.pyx b/sklearn/tree/_splitter.pyx index 514975380a8b5..10be4a411aa92 100644 --- a/sklearn/tree/_splitter.pyx +++ b/sklearn/tree/_splitter.pyx @@ -344,75 +344,78 @@ cdef class BestSplitter(BaseDenseSplitter): features[n_drawn_constants], features[f_j] = features[f_j], features[n_drawn_constants] n_drawn_constants += 1 + continue - else: - # f_j in the interval [n_known_constants, f_i - n_found_constants[ - f_j += n_found_constants - # f_j in the interval [n_total_constants, f_i[ - current.feature = features[f_j] + # f_j in the interval [n_known_constants, f_i - n_found_constants[ + f_j += n_found_constants + # f_j in the interval [n_total_constants, f_i[ + current.feature = features[f_j] - # Sort samples along that feature; by - # copying the values into an array and - # sorting the array in a manner which utilizes the cache more - # effectively. - for i in range(start, end): - Xf[i] = self.X[samples[i], current.feature] + # Sort samples along that feature; by + # copying the values into an array and + # sorting the array in a manner which utilizes the cache more + # effectively. + for i in range(start, end): + Xf[i] = self.X[samples[i], current.feature] - sort(Xf + start, samples + start, end - start) + simultaneous_sort(Xf + start, samples + start, end - start) - if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: - features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] + if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: + features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] - n_found_constants += 1 - n_total_constants += 1 + n_found_constants += 1 + n_total_constants += 1 + continue - else: - f_i -= 1 - features[f_i], features[f_j] = features[f_j], features[f_i] + f_i -= 1 + features[f_i], features[f_j] = features[f_j], features[f_i] + + # Evaluate all splits + self.criterion.reset() + p = start - # Evaluate all splits - self.criterion.reset() - p = start + while p < end: + while p + 1 < end and Xf[p + 1] <= Xf[p] + FEATURE_THRESHOLD: + p += 1 - while p < end: - while (p + 1 < end and - Xf[p + 1] <= Xf[p] + FEATURE_THRESHOLD): - p += 1 + # (p + 1 >= end) or (X[samples[p + 1], current.feature] > + # X[samples[p], current.feature]) + p += 1 + # (p >= end) or (X[samples[p], current.feature] > + # X[samples[p - 1], current.feature]) - # (p + 1 >= end) or (X[samples[p + 1], current.feature] > - # X[samples[p], current.feature]) - p += 1 - # (p >= end) or (X[samples[p], current.feature] > - # X[samples[p - 1], current.feature]) + if p >= end: + continue - if p < end: - current.pos = p + current.pos = p - # Reject if min_samples_leaf is not guaranteed - if (((current.pos - start) < min_samples_leaf) or - ((end - current.pos) < min_samples_leaf)): - continue + # Reject if min_samples_leaf is not guaranteed + if (((current.pos - start) < min_samples_leaf) or + ((end - current.pos) < min_samples_leaf)): + continue - self.criterion.update(current.pos) + self.criterion.update(current.pos) - # Reject if min_weight_leaf is not satisfied - if ((self.criterion.weighted_n_left < min_weight_leaf) or - (self.criterion.weighted_n_right < min_weight_leaf)): - continue + # Reject if min_weight_leaf is not satisfied + if ((self.criterion.weighted_n_left < min_weight_leaf) or + (self.criterion.weighted_n_right < min_weight_leaf)): + continue - current_proxy_improvement = self.criterion.proxy_impurity_improvement() + current_proxy_improvement = self.criterion.proxy_impurity_improvement() - if current_proxy_improvement > best_proxy_improvement: - best_proxy_improvement = current_proxy_improvement - # sum of halves is used to avoid infinite value - current.threshold = Xf[p - 1] / 2.0 + Xf[p] / 2.0 + if current_proxy_improvement > best_proxy_improvement: + best_proxy_improvement = current_proxy_improvement + # sum of halves is used to avoid infinite value + current.threshold = Xf[p - 1] / 2.0 + Xf[p] / 2.0 - if ((current.threshold == Xf[p]) or - (current.threshold == INFINITY) or - (current.threshold == -INFINITY)): - current.threshold = Xf[p - 1] + if ( + current.threshold == Xf[p] or + current.threshold == INFINITY or + current.threshold == -INFINITY + ): + current.threshold = Xf[p - 1] - best = current # copy + best = current # copy # Reorganize into samples[start:best.pos] + samples[best.pos:end] if best.pos < end: @@ -654,78 +657,78 @@ cdef class RandomSplitter(BaseDenseSplitter): # f_j in the interval [n_drawn_constants, n_known_constants[ features[n_drawn_constants], features[f_j] = features[f_j], features[n_drawn_constants] n_drawn_constants += 1 + continue - else: - # f_j in the interval [n_known_constants, f_i - n_found_constants[ - f_j += n_found_constants - # f_j in the interval [n_total_constants, f_i[ + # f_j in the interval [n_known_constants, f_i - n_found_constants[ + f_j += n_found_constants + # f_j in the interval [n_total_constants, f_i[ - current.feature = features[f_j] + current.feature = features[f_j] - # Find min, max - min_feature_value = self.X[samples[start], current.feature] - max_feature_value = min_feature_value - Xf[start] = min_feature_value + # Find min, max + min_feature_value = self.X[samples[start], current.feature] + max_feature_value = min_feature_value + Xf[start] = min_feature_value - for p in range(start + 1, end): - current_feature_value = self.X[samples[p], current.feature] - Xf[p] = current_feature_value + for p in range(start + 1, end): + current_feature_value = self.X[samples[p], current.feature] + Xf[p] = current_feature_value - if current_feature_value < min_feature_value: - min_feature_value = current_feature_value - elif current_feature_value > max_feature_value: - max_feature_value = current_feature_value + if current_feature_value < min_feature_value: + min_feature_value = current_feature_value + elif current_feature_value > max_feature_value: + max_feature_value = current_feature_value - if max_feature_value <= min_feature_value + FEATURE_THRESHOLD: - features[f_j], features[n_total_constants] = features[n_total_constants], current.feature + if max_feature_value <= min_feature_value + FEATURE_THRESHOLD: + features[f_j], features[n_total_constants] = features[n_total_constants], current.feature - n_found_constants += 1 - n_total_constants += 1 + n_found_constants += 1 + n_total_constants += 1 + continue - else: - f_i -= 1 - features[f_i], features[f_j] = features[f_j], features[f_i] + f_i -= 1 + features[f_i], features[f_j] = features[f_j], features[f_i] - # Draw a random threshold - current.threshold = rand_uniform(min_feature_value, - max_feature_value, - random_state) + # Draw a random threshold + current.threshold = rand_uniform(min_feature_value, + max_feature_value, + random_state) - if current.threshold == max_feature_value: - current.threshold = min_feature_value + if current.threshold == max_feature_value: + current.threshold = min_feature_value - # Partition - p, partition_end = start, end - while p < partition_end: - if Xf[p] <= current.threshold: - p += 1 - else: - partition_end -= 1 + # Partition + p, partition_end = start, end + while p < partition_end: + if Xf[p] <= current.threshold: + p += 1 + else: + partition_end -= 1 - Xf[p], Xf[partition_end] = Xf[partition_end], Xf[p] - samples[p], samples[partition_end] = samples[partition_end], samples[p] + Xf[p], Xf[partition_end] = Xf[partition_end], Xf[p] + samples[p], samples[partition_end] = samples[partition_end], samples[p] - current.pos = partition_end + current.pos = partition_end - # Reject if min_samples_leaf is not guaranteed - if (((current.pos - start) < min_samples_leaf) or - ((end - current.pos) < min_samples_leaf)): - continue + # Reject if min_samples_leaf is not guaranteed + if (((current.pos - start) < min_samples_leaf) or + ((end - current.pos) < min_samples_leaf)): + continue - # Evaluate split - self.criterion.reset() - self.criterion.update(current.pos) + # Evaluate split + self.criterion.reset() + self.criterion.update(current.pos) - # Reject if min_weight_leaf is not satisfied - if ((self.criterion.weighted_n_left < min_weight_leaf) or - (self.criterion.weighted_n_right < min_weight_leaf)): - continue + # Reject if min_weight_leaf is not satisfied + if ((self.criterion.weighted_n_left < min_weight_leaf) or + (self.criterion.weighted_n_right < min_weight_leaf)): + continue - current_proxy_improvement = self.criterion.proxy_impurity_improvement() + current_proxy_improvement = self.criterion.proxy_impurity_improvement() - if current_proxy_improvement > best_proxy_improvement: - best_proxy_improvement = current_proxy_improvement - best = current # copy + if current_proxy_improvement > best_proxy_improvement: + best_proxy_improvement = current_proxy_improvement + best = current # copy # Reorganize into samples[start:best.pos] + samples[best.pos:end] if best.pos < end: @@ -1184,101 +1187,103 @@ cdef class BestSparseSplitter(BaseSparseSplitter): features[f_j], features[n_drawn_constants] = features[n_drawn_constants], features[f_j] n_drawn_constants += 1 + continue - else: - # f_j in the interval [n_known_constants, f_i - n_found_constants[ - f_j += n_found_constants - # f_j in the interval [n_total_constants, f_i[ - - current.feature = features[f_j] - self.extract_nnz(current.feature, &end_negative, &start_positive, - &is_samples_sorted) - # Sort the positive and negative parts of `Xf` - sort(Xf + start, samples + start, end_negative - start) - if start_positive < end: - sort(Xf + start_positive, samples + start_positive, - end - start_positive) - - # Update index_to_samples to take into account the sort - for p in range(start, end_negative): - index_to_samples[samples[p]] = p - for p in range(start_positive, end): - index_to_samples[samples[p]] = p - - # Add one or two zeros in Xf, if there is any - if end_negative < start_positive: - start_positive -= 1 - Xf[start_positive] = 0. - - if end_negative != start_positive: - Xf[end_negative] = 0. - end_negative += 1 - - if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: - features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] - - n_found_constants += 1 - n_total_constants += 1 + # f_j in the interval [n_known_constants, f_i - n_found_constants[ + f_j += n_found_constants + # f_j in the interval [n_total_constants, f_i[ - else: - f_i -= 1 - features[f_i], features[f_j] = features[f_j], features[f_i] + current.feature = features[f_j] + self.extract_nnz(current.feature, &end_negative, &start_positive, + &is_samples_sorted) + + # Sort the positive and negative parts of `Xf` + simultaneous_sort(Xf + start, samples + start, end_negative - start) + simultaneous_sort(Xf + start_positive, samples + start_positive, end - start_positive) - # Evaluate all splits - self.criterion.reset() - p = start + # Update index_to_samples to take into account the sort + for p in range(start, end_negative): + index_to_samples[samples[p]] = p + for p in range(start_positive, end): + index_to_samples[samples[p]] = p - while p < end: - if p + 1 != end_negative: - p_next = p + 1 - else: - p_next = start_positive + # Add one or two zeros in Xf, if there is any + if end_negative < start_positive: + start_positive -= 1 + Xf[start_positive] = 0. - while (p_next < end and - Xf[p_next] <= Xf[p] + FEATURE_THRESHOLD): - p = p_next - if p + 1 != end_negative: - p_next = p + 1 - else: - p_next = start_positive + if end_negative != start_positive: + Xf[end_negative] = 0. + end_negative += 1 + if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: + features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] - # (p_next >= end) or (X[samples[p_next], current.feature] > - # X[samples[p], current.feature]) - p_prev = p - p = p_next - # (p >= end) or (X[samples[p], current.feature] > - # X[samples[p_prev], current.feature]) + n_found_constants += 1 + n_total_constants += 1 + continue + f_i -= 1 + features[f_i], features[f_j] = features[f_j], features[f_i] - if p < end: - current.pos = p + # Evaluate all splits + self.criterion.reset() + p = start + + while p < end: + if p + 1 != end_negative: + p_next = p + 1 + else: + p_next = start_positive + + while (p_next < end and + Xf[p_next] <= Xf[p] + FEATURE_THRESHOLD): + p = p_next + if p + 1 != end_negative: + p_next = p + 1 + else: + p_next = start_positive + + + # (p_next >= end) or (X[samples[p_next], current.feature] > + # X[samples[p], current.feature]) + p_prev = p + p = p_next + # (p >= end) or (X[samples[p], current.feature] > + # X[samples[p_prev], current.feature]) + + if p >= end: + continue + + current.pos = p - # Reject if min_samples_leaf is not guaranteed - if (((current.pos - start) < min_samples_leaf) or - ((end - current.pos) < min_samples_leaf)): - continue + # Reject if min_samples_leaf is not guaranteed + if (((current.pos - start) < min_samples_leaf) or + ((end - current.pos) < min_samples_leaf)): + continue - self.criterion.update(current.pos) + self.criterion.update(current.pos) - # Reject if min_weight_leaf is not satisfied - if ((self.criterion.weighted_n_left < min_weight_leaf) or - (self.criterion.weighted_n_right < min_weight_leaf)): - continue + # Reject if min_weight_leaf is not satisfied + if ((self.criterion.weighted_n_left < min_weight_leaf) or + (self.criterion.weighted_n_right < min_weight_leaf)): + continue - current_proxy_improvement = self.criterion.proxy_impurity_improvement() + current_proxy_improvement = self.criterion.proxy_impurity_improvement() - if current_proxy_improvement > best_proxy_improvement: - best_proxy_improvement = current_proxy_improvement - # sum of halves used to avoid infinite values - current.threshold = Xf[p_prev] / 2.0 + Xf[p] / 2.0 + if current_proxy_improvement > best_proxy_improvement: + best_proxy_improvement = current_proxy_improvement + # sum of halves used to avoid infinite values + current.threshold = Xf[p_prev] / 2.0 + Xf[p] / 2.0 - if ((current.threshold == Xf[p]) or - (current.threshold == INFINITY) or - (current.threshold == -INFINITY)): - current.threshold = Xf[p_prev] + if ( + current.threshold == Xf[p] or + current.threshold == INFINITY or + current.threshold == -INFINITY + ): + current.threshold = Xf[p_prev] - best = current + best = current # Reorganize into samples[start:best.pos] + samples[best.pos:end] if best.pos < end: @@ -1416,97 +1421,97 @@ cdef class RandomSparseSplitter(BaseSparseSplitter): features[f_j], features[n_drawn_constants] = features[n_drawn_constants], features[f_j] n_drawn_constants += 1 + continue - else: - # f_j in the interval [n_known_constants, f_i - n_found_constants[ - f_j += n_found_constants - # f_j in the interval [n_total_constants, f_i[ + # f_j in the interval [n_known_constants, f_i - n_found_constants[ + f_j += n_found_constants + # f_j in the interval [n_total_constants, f_i[ - current.feature = features[f_j] + current.feature = features[f_j] - self.extract_nnz(current.feature, - &end_negative, &start_positive, - &is_samples_sorted) + self.extract_nnz(current.feature, + &end_negative, &start_positive, + &is_samples_sorted) - # Add one or two zeros in Xf, if there is any - if end_negative < start_positive: - start_positive -= 1 - Xf[start_positive] = 0. + # Add one or two zeros in Xf, if there is any + if end_negative < start_positive: + start_positive -= 1 + Xf[start_positive] = 0. - if end_negative != start_positive: - Xf[end_negative] = 0. - end_negative += 1 + if end_negative != start_positive: + Xf[end_negative] = 0. + end_negative += 1 - # Find min, max in Xf[start:end_negative] - min_feature_value = Xf[start] - max_feature_value = min_feature_value + # Find min, max in Xf[start:end_negative] + min_feature_value = Xf[start] + max_feature_value = min_feature_value - for p in range(start, end_negative): - current_feature_value = Xf[p] + for p in range(start, end_negative): + current_feature_value = Xf[p] - if current_feature_value < min_feature_value: - min_feature_value = current_feature_value - elif current_feature_value > max_feature_value: - max_feature_value = current_feature_value + if current_feature_value < min_feature_value: + min_feature_value = current_feature_value + elif current_feature_value > max_feature_value: + max_feature_value = current_feature_value - # Update min, max given Xf[start_positive:end] - for p in range(start_positive, end): - current_feature_value = Xf[p] + # Update min, max given Xf[start_positive:end] + for p in range(start_positive, end): + current_feature_value = Xf[p] - if current_feature_value < min_feature_value: - min_feature_value = current_feature_value - elif current_feature_value > max_feature_value: - max_feature_value = current_feature_value + if current_feature_value < min_feature_value: + min_feature_value = current_feature_value + elif current_feature_value > max_feature_value: + max_feature_value = current_feature_value - if max_feature_value <= min_feature_value + FEATURE_THRESHOLD: - features[f_j] = features[n_total_constants] - features[n_total_constants] = current.feature + if max_feature_value <= min_feature_value + FEATURE_THRESHOLD: + features[f_j] = features[n_total_constants] + features[n_total_constants] = current.feature - n_found_constants += 1 - n_total_constants += 1 + n_found_constants += 1 + n_total_constants += 1 + continue - else: - f_i -= 1 - features[f_i], features[f_j] = features[f_j], features[f_i] - - # Draw a random threshold - current.threshold = rand_uniform(min_feature_value, - max_feature_value, - random_state) - - if current.threshold == max_feature_value: - current.threshold = min_feature_value - - # Partition - current.pos = self._partition(current.threshold, - end_negative, - start_positive, - start_positive + - (Xf[start_positive] == 0.)) - - # Reject if min_samples_leaf is not guaranteed - if (((current.pos - start) < min_samples_leaf) or - ((end - current.pos) < min_samples_leaf)): - continue - - # Evaluate split - self.criterion.reset() - self.criterion.update(current.pos) - - # Reject if min_weight_leaf is not satisfied - if ((self.criterion.weighted_n_left < min_weight_leaf) or - (self.criterion.weighted_n_right < min_weight_leaf)): - continue - - current_proxy_improvement = self.criterion.proxy_impurity_improvement() - - if current_proxy_improvement > best_proxy_improvement: - best_proxy_improvement = current_proxy_improvement - self.criterion.children_impurity(¤t.impurity_left, - ¤t.impurity_right) - current.improvement = self.criterion.impurity_improvement( - impurity, current.impurity_left, current.impurity_right) - best = current + f_i -= 1 + features[f_i], features[f_j] = features[f_j], features[f_i] + + # Draw a random threshold + current.threshold = rand_uniform(min_feature_value, + max_feature_value, + random_state) + + if current.threshold == max_feature_value: + current.threshold = min_feature_value + + # Partition + current.pos = self._partition(current.threshold, + end_negative, + start_positive, + start_positive + + (Xf[start_positive] == 0.)) + + # Reject if min_samples_leaf is not guaranteed + if (((current.pos - start) < min_samples_leaf) or + ((end - current.pos) < min_samples_leaf)): + continue + + # Evaluate split + self.criterion.reset() + self.criterion.update(current.pos) + + # Reject if min_weight_leaf is not satisfied + if ((self.criterion.weighted_n_left < min_weight_leaf) or + (self.criterion.weighted_n_right < min_weight_leaf)): + continue + + current_proxy_improvement = self.criterion.proxy_impurity_improvement() + + if current_proxy_improvement > best_proxy_improvement: + best_proxy_improvement = current_proxy_improvement + self.criterion.children_impurity(¤t.impurity_left, + ¤t.impurity_right) + current.improvement = self.criterion.impurity_improvement( + impurity, current.impurity_left, current.impurity_right) + best = current # Reorganize into samples[start:best.pos] + samples[best.pos:end] if best.pos < end: From 7f10a8004b4e63a41d78bb4bfd2813be7a64fa07 Mon Sep 17 00:00:00 2001 From: Olivier Grisel Date: Mon, 2 May 2022 14:09:26 +0200 Subject: [PATCH 007/251] CI Experimental [nogil] build of scikit-learn (#23174) Co-authored-by: Thomas J. Fan --- azure-pipelines.yml | 34 ++++++++++++++++++++ build_tools/azure/install.sh | 53 +++++++++++++++++++++++++++----- build_tools/azure/test_docs.sh | 2 +- build_tools/azure/test_script.sh | 2 +- doc/developers/contributing.rst | 1 + 5 files changed, 82 insertions(+), 10 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 2a44674ef8610..020d007acc651 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -71,6 +71,40 @@ jobs: # Here we make sure, that they are still run on a regular basis. SKLEARN_SKIP_NETWORK_TESTS: '0' +- template: build_tools/azure/posix.yml + # Experimental CPython branch without the Global Interpreter Lock: + # https://github.com/colesbury/nogil/ + # + # The nogil build relies on a dedicated PyPI-style index to install patched + # versions of NumPy, SciPy and Cython maintained by @colesbury and that + # include specifc fixes to make them run correctly without relying on the GIL. + # + # The goal of this CI entry is to make sure that we do not introduce any + # dependency on the GIL in scikit-learn itself. An auxiliary goal is to early + # detect any regression in the patched build dependencies to report them + # upstream. The long-term goal is to be able to stop having to maintain + # multiprocessing based workaround / hacks in joblib / loky to make multi-CPU + # computing in scikit-learn efficient by default using regular threads. + # + # If this experimental entry becomes too unstable, feel free to disable it. + parameters: + name: Linux_nogil + vmImage: ubuntu-20.04 + dependsOn: [git_commit, linting] + condition: | + and( + succeeded(), + not(contains(dependencies['git_commit']['outputs']['commit.message'], '[ci skip]')), + or(eq(variables['Build.Reason'], 'Schedule'), + contains(dependencies['git_commit']['outputs']['commit.message'], '[nogil]' + ) + ) + ) + matrix: + pylatest_pip_nogil: + DISTRIB: 'pip-nogil' + COVERAGE: 'false' + # Check compilation with intel C++ compiler (ICC) - template: build_tools/azure/posix.yml parameters: diff --git a/build_tools/azure/install.sh b/build_tools/azure/install.sh index ff89358c0c1f6..cfc563a4f9f65 100755 --- a/build_tools/azure/install.sh +++ b/build_tools/azure/install.sh @@ -8,6 +8,9 @@ source build_tools/shared.sh UNAMESTR=`uname` +CCACHE_LINKS_DIR="/tmp/ccache" + + make_conda() { TO_INSTALL="$@" if [[ "$DISTRIB" == *"mamba"* ]]; then @@ -20,14 +23,21 @@ make_conda() { } setup_ccache() { - echo "Setting up ccache with CCACHE_DIR=${CCACHE_DIR}" - mkdir /tmp/ccache/ - which ccache - for name in gcc g++ cc c++ clang clang++ i686-linux-gnu-gcc i686-linux-gnu-c++ x86_64-linux-gnu-gcc x86_64-linux-gnu-c++ x86_64-apple-darwin13.4.0-clang x86_64-apple-darwin13.4.0-clang++; do - ln -s $(which ccache) "/tmp/ccache/${name}" - done - export PATH="/tmp/ccache/:${PATH}" - ccache -M 256M + CCACHE_BIN=`which ccache || echo ""` + if [[ "${CCACHE_BIN}" == "" ]]; then + echo "ccache not found, skipping..." + elif [[ -d "${CCACHE_LINKS_DIR}" ]]; then + echo "ccache already configured, skipping..." + else + echo "Setting up ccache with CCACHE_DIR=${CCACHE_DIR}" + mkdir ${CCACHE_LINKS_DIR} + which ccache + for name in gcc g++ cc c++ clang clang++ i686-linux-gnu-gcc i686-linux-gnu-c++ x86_64-linux-gnu-gcc x86_64-linux-gnu-c++ x86_64-apple-darwin13.4.0-clang x86_64-apple-darwin13.4.0-clang++; do + ln -s ${CCACHE_BIN} "${CCACHE_LINKS_DIR}/${name}" + done + export PATH="${CCACHE_LINKS_DIR}:${PATH}" + ccache -M 256M + fi } pre_python_environment_install() { @@ -48,6 +58,12 @@ pre_python_environment_install() { apt-get -yq update apt-get -yq install build-essential + elif [[ "$DISTRIB" == "pip-nogil" ]]; then + echo "deb-src http://archive.ubuntu.com/ubuntu/ focal main" | sudo tee -a /etc/apt/sources.list + sudo apt-get -yq update + sudo apt-get install -yq ccache + sudo apt-get build-dep -yq python3 python3-dev + elif [[ "$BUILD_WITH_ICC" == "true" ]]; then wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB @@ -56,6 +72,7 @@ pre_python_environment_install() { sudo apt-get update sudo apt-get install intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic source /opt/intel/oneapi/setvars.sh + fi } @@ -120,6 +137,26 @@ python_environment_install() { pip install https://github.com/joblib/joblib/archive/master.zip echo "Installing pillow master" pip install https://github.com/python-pillow/Pillow/archive/main.zip + + elif [[ "$DISTRIB" == "pip-nogil" ]]; then + setup_ccache # speed-up the build of CPython it-self + ORIGINAL_FOLDER=`pwd` + cd .. + git clone --depth 1 https://github.com/colesbury/nogil + cd nogil + ./configure && make -j 2 + ./python -m venv $ORIGINAL_FOLDER/$VIRTUALENV + cd $ORIGINAL_FOLDER + source $VIRTUALENV/bin/activate + + python -m pip install -U pip + # The pip version that comes with the nogil branch of CPython + # automatically uses the custom nogil index as its highest priority + # index to fetch patched versions of libraries with native code that + # would otherwise depend on the GIL. + echo "Installing build dependencies with pip from the nogil repository: https://d1yxz45j0ypngg.cloudfront.net/" + pip install numpy scipy cython joblib threadpoolctl + fi python -m pip install $(get_dep threadpoolctl $THREADPOOLCTL_VERSION) \ diff --git a/build_tools/azure/test_docs.sh b/build_tools/azure/test_docs.sh index 18b3ccb148b5e..1d28f64a036cd 100755 --- a/build_tools/azure/test_docs.sh +++ b/build_tools/azure/test_docs.sh @@ -4,7 +4,7 @@ set -e if [[ "$DISTRIB" =~ ^conda.* ]]; then source activate $VIRTUALENV -elif [[ "$DISTRIB" == "ubuntu" ]]; then +elif [[ "$DISTRIB" == "ubuntu" || "$DISTRIB" == "pip-nogil" ]]; then source $VIRTUALENV/bin/activate fi diff --git a/build_tools/azure/test_script.sh b/build_tools/azure/test_script.sh index c083114df60a4..3d74a0d98b374 100755 --- a/build_tools/azure/test_script.sh +++ b/build_tools/azure/test_script.sh @@ -7,7 +7,7 @@ source build_tools/shared.sh if [[ "$DISTRIB" =~ ^conda.* ]]; then source activate $VIRTUALENV -elif [[ "$DISTRIB" == "ubuntu" ]] || [[ "$DISTRIB" == "debian-32" ]]; then +elif [[ "$DISTRIB" == "ubuntu" || "$DISTRIB" == "debian-32" || "$DISTRIB" == "pip-nogil" ]]; then source $VIRTUALENV/bin/activate fi diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index fbcec1871f2dd..3883cd3e53a6d 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -552,6 +552,7 @@ message, the following actions are taken. [cd build gh] CD is run only for GitHub Actions [lint skip] Azure pipeline skips linting [scipy-dev] Build & test with our dependencies (numpy, scipy, etc ...) development builds + [nogil] Build & test with the nogil experimental branches of CPython, Cython, NumPy, SciPy... [icc-build] Build & test with the Intel C compiler (ICC) [pypy] Build & test with PyPy [doc skip] Docs are not built From bb16a84ba18df016e5ecf1352e9863f787a97d0c Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 15:57:45 +0200 Subject: [PATCH 008/251] FIX partial_fit from SelectFromModel doesn't validate the parameters (#23299) Co-authored-by: Thomas J. Fan Co-authored-by: Guillaume Lemaitre --- doc/whats_new/v1.2.rst | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index bdb9f3018aba8..7a62d94458def 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -33,6 +33,38 @@ Changelog :pr:`123456` by :user:`Joe Bloggs `. where 123456 is the *pull request* number, not the issue number. +:mod:`sklearn.cluster` +...................... + +- |Enhancement| The `predict` and `fit_predict` methods of :class:`cluster.OPTICS` now + accept sparse data type for input data. :pr:`14736` by :user:`Hunt Zhan `, + :pr:`20802` by :user:`Brandon Pokorny `, + and :pr:`22965` by :user:`Meekail Zain `. + +- |Enhancement| :class:`cluster.Birch` now preserves dtype for `numpy.float32` + inputs. :pr:`22968` by `Meekail Zain `. + +:mod:`sklearn.ensemble` +....................... + +- |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` + by avoiding data copies. :pr:`23252` by :user:`Zhehao Liu `. + +:mod:`sklearn.neighbors` +........................ + +- |Enhancement| :class:`neighbors.KernelDensity` bandwidth parameter now accepts + definition using Scott's and Silvermann's estimation methods. + :pr:`10468` by :user:`Ruben ` and :pr:`22993` by + :user:`Jovan Stojanovic `. + +:mod:`sklearn.feature_selection` +................................ + +- |Fix| The `partial_fit` method of :class:`feature_selection.SelectFromModel` + now conducts validation for `max_features` and `feature_names_in` parameters. + :pr:`23299` by :user:`Long Bao `. + Code and Documentation Contributors ----------------------------------- From 160b9a3bc64e0217f2e2029dda30bb3f0ca74777 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Thu, 12 May 2022 05:28:53 -0400 Subject: [PATCH 009/251] MNT Removes pytest.warns(None) in test_validation (#23282) --- sklearn/utils/tests/test_validation.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/sklearn/utils/tests/test_validation.py b/sklearn/utils/tests/test_validation.py index a8078a2b39416..e33d14fa3b07e 100644 --- a/sklearn/utils/tests/test_validation.py +++ b/sklearn/utils/tests/test_validation.py @@ -1286,15 +1286,20 @@ def test_check_psd_eigenvalues_valid( if not enable_warnings: w_type = None - w_msg = "" - with pytest.warns(w_type, match=w_msg) as w: - assert_array_equal( - _check_psd_eigenvalues(lambdas, enable_warnings=enable_warnings), - expected_lambdas, - ) if w_type is None: - assert not w + with warnings.catch_warnings(): + warnings.simplefilter("error", PositiveSpectrumWarning) + lambdas_fixed = _check_psd_eigenvalues( + lambdas, enable_warnings=enable_warnings + ) + else: + with pytest.warns(w_type, match=w_msg): + lambdas_fixed = _check_psd_eigenvalues( + lambdas, enable_warnings=enable_warnings + ) + + assert_allclose(expected_lambdas, lambdas_fixed) _psd_cases_invalid = { From f044ff113c0745b5e20bd52080c8897848a115f5 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 16:01:02 +0200 Subject: [PATCH 010/251] MNT Refactor tree splitter to use memoryviews (#23273) Co-authored-by: Guillaume Lemaitre --- doc/whats_new/v1.2.rst | 7 ++ sklearn/tree/_splitter.pxd | 8 +- sklearn/tree/_splitter.pyx | 230 +++++++++++++++---------------------- 3 files changed, 105 insertions(+), 140 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 7a62d94458def..1a66f32260354 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -65,6 +65,13 @@ Changelog now conducts validation for `max_features` and `feature_names_in` parameters. :pr:`23299` by :user:`Long Bao `. +:mod:`sklearn.tree` +................... + +- |Fix| Fixed invalid memory access bug during fit in + :class:`tree.DecisionTreeRegressor` and :class:`tree.DecisionTreeClassifier`. + :pr:`23273` by `Thomas Fan`_. + Code and Documentation Contributors ----------------------------------- diff --git a/sklearn/tree/_splitter.pxd b/sklearn/tree/_splitter.pxd index cf01fed9cfd7d..f24577652e818 100644 --- a/sklearn/tree/_splitter.pxd +++ b/sklearn/tree/_splitter.pxd @@ -46,13 +46,13 @@ cdef class Splitter: cdef object random_state # Random state cdef UINT32_t rand_r_state # sklearn_rand_r random number state - cdef SIZE_t* samples # Sample indices in X, y + cdef SIZE_t[::1] samples # Sample indices in X, y cdef SIZE_t n_samples # X.shape[0] cdef double weighted_n_samples # Weighted number of samples - cdef SIZE_t* features # Feature indices in X - cdef SIZE_t* constant_features # Constant features indices + cdef SIZE_t[::1] features # Feature indices in X + cdef SIZE_t[::1] constant_features # Constant features indices cdef SIZE_t n_features # X.shape[1] - cdef DTYPE_t* feature_values # temp. array holding feature values + cdef DTYPE_t[::1] feature_values # temp. array holding feature values cdef SIZE_t start # Start position for the current node cdef SIZE_t end # End position for the current node diff --git a/sklearn/tree/_splitter.pyx b/sklearn/tree/_splitter.pyx index 10be4a411aa92..c1bb25c422195 100644 --- a/sklearn/tree/_splitter.pyx +++ b/sklearn/tree/_splitter.pyx @@ -28,7 +28,7 @@ from ._utils cimport log from ._utils cimport rand_int from ._utils cimport rand_uniform from ._utils cimport RAND_R_MAX -from ._utils cimport safe_realloc +from ..utils._sorting cimport simultaneous_sort cdef double INFINITY = np.inf @@ -82,11 +82,8 @@ cdef class Splitter: self.criterion = criterion - self.samples = NULL self.n_samples = 0 - self.features = NULL self.n_features = 0 - self.feature_values = NULL self.sample_weight = NULL @@ -95,14 +92,6 @@ cdef class Splitter: self.min_weight_leaf = min_weight_leaf self.random_state = random_state - def __dealloc__(self): - """Destructor.""" - - free(self.samples) - free(self.features) - free(self.constant_features) - free(self.feature_values) - def __getstate__(self): return {} @@ -139,7 +128,8 @@ cdef class Splitter: # Create a new array which will be used to store nonzero # samples from the feature of interest - cdef SIZE_t* samples = safe_realloc(&self.samples, n_samples) + self.samples = np.empty(n_samples, dtype=np.intp) + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t i, j cdef double weighted_n_samples = 0.0 @@ -161,15 +151,11 @@ cdef class Splitter: self.weighted_n_samples = weighted_n_samples cdef SIZE_t n_features = X.shape[1] - cdef SIZE_t* features = safe_realloc(&self.features, n_features) - - for i in range(n_features): - features[i] = i - + self.features = np.arange(n_features, dtype=np.intp) self.n_features = n_features - safe_realloc(&self.feature_values, n_samples) - safe_realloc(&self.constant_features, n_features) + self.feature_values = np.empty(n_samples, dtype=np.float32) + self.constant_features = np.empty(n_features, dtype=np.intp) self.y = y @@ -199,7 +185,7 @@ cdef class Splitter: self.criterion.init(self.y, self.sample_weight, self.weighted_n_samples, - self.samples, + &self.samples[0], start, end) @@ -268,15 +254,15 @@ cdef class BestSplitter(BaseDenseSplitter): or 0 otherwise. """ # Find the best split - cdef SIZE_t* samples = self.samples + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t start = self.start cdef SIZE_t end = self.end - cdef SIZE_t* features = self.features - cdef SIZE_t* constant_features = self.constant_features + cdef SIZE_t[::1] features = self.features + cdef SIZE_t[::1] constant_features = self.constant_features cdef SIZE_t n_features = self.n_features - cdef DTYPE_t* Xf = self.feature_values + cdef DTYPE_t[::1] Xf = self.feature_values cdef SIZE_t max_features = self.max_features cdef SIZE_t min_samples_leaf = self.min_samples_leaf cdef double min_weight_leaf = self.min_weight_leaf @@ -358,7 +344,7 @@ cdef class BestSplitter(BaseDenseSplitter): for i in range(start, end): Xf[i] = self.X[samples[i], current.feature] - simultaneous_sort(Xf + start, samples + start, end - start) + simultaneous_sort(&Xf[start], &samples[start], end - start) if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] @@ -441,11 +427,11 @@ cdef class BestSplitter(BaseDenseSplitter): # Respect invariant for constant features: the original order of # element in features[:n_known_constants] must be preserved for sibling # and child nodes - memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants) + memcpy(&features[0], &constant_features[0], sizeof(SIZE_t) * n_known_constants) # Copy newly found constant features - memcpy(constant_features + n_known_constants, - features + n_known_constants, + memcpy(&constant_features[n_known_constants], + &features[n_known_constants], sizeof(SIZE_t) * n_found_constants) # Return values @@ -585,15 +571,15 @@ cdef class RandomSplitter(BaseDenseSplitter): or 0 otherwise. """ # Draw random splits and pick the best - cdef SIZE_t* samples = self.samples + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t start = self.start cdef SIZE_t end = self.end - cdef SIZE_t* features = self.features - cdef SIZE_t* constant_features = self.constant_features + cdef SIZE_t[::1] features = self.features + cdef SIZE_t[::1] constant_features = self.constant_features cdef SIZE_t n_features = self.n_features - cdef DTYPE_t* Xf = self.feature_values + cdef DTYPE_t[::1] Xf = self.feature_values cdef SIZE_t max_features = self.max_features cdef SIZE_t min_samples_leaf = self.min_samples_leaf cdef double min_weight_leaf = self.min_weight_leaf @@ -753,11 +739,11 @@ cdef class RandomSplitter(BaseDenseSplitter): # Respect invariant for constant features: the original order of # element in features[:n_known_constants] must be preserved for sibling # and child nodes - memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants) + memcpy(&features[0], &constant_features[0], sizeof(SIZE_t) * n_known_constants) # Copy newly found constant features - memcpy(constant_features + n_known_constants, - features + n_known_constants, + memcpy(&constant_features[n_known_constants], + &features[n_known_constants], sizeof(SIZE_t) * n_found_constants) # Return values @@ -768,34 +754,21 @@ cdef class RandomSplitter(BaseDenseSplitter): cdef class BaseSparseSplitter(Splitter): # The sparse splitter works only with csc sparse matrix format - cdef DTYPE_t* X_data - cdef INT32_t* X_indices - cdef INT32_t* X_indptr + cdef DTYPE_t[::1] X_data + cdef INT32_t[::1] X_indices + cdef INT32_t[::1] X_indptr cdef SIZE_t n_total_samples - cdef SIZE_t* index_to_samples - cdef SIZE_t* sorted_samples + cdef SIZE_t[::1] index_to_samples + cdef SIZE_t[::1] sorted_samples def __cinit__(self, Criterion criterion, SIZE_t max_features, SIZE_t min_samples_leaf, double min_weight_leaf, object random_state): # Parent __cinit__ is automatically called - - self.X_data = NULL - self.X_indices = NULL - self.X_indptr = NULL - self.n_total_samples = 0 - self.index_to_samples = NULL - self.sorted_samples = NULL - - def __dealloc__(self): - """Deallocate memory.""" - free(self.index_to_samples) - free(self.sorted_samples) - cdef int init(self, object X, const DOUBLE_t[:, ::1] y, @@ -811,31 +784,24 @@ cdef class BaseSparseSplitter(Splitter): if not isinstance(X, csc_matrix): raise ValueError("X should be in csc format") - cdef SIZE_t* samples = self.samples + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t n_samples = self.n_samples # Initialize X - cdef np.ndarray[dtype=DTYPE_t, ndim=1] data = X.data - cdef np.ndarray[dtype=INT32_t, ndim=1] indices = X.indices - cdef np.ndarray[dtype=INT32_t, ndim=1] indptr = X.indptr cdef SIZE_t n_total_samples = X.shape[0] - self.X_data = data.data - self.X_indices = indices.data - self.X_indptr = indptr.data + self.X_data = X.data + self.X_indices = X.indices + self.X_indptr = X.indptr self.n_total_samples = n_total_samples # Initialize auxiliary array used to perform split - safe_realloc(&self.index_to_samples, n_total_samples) - safe_realloc(&self.sorted_samples, n_samples) + self.index_to_samples = np.full(n_total_samples, fill_value=-1, dtype=np.intp) + self.sorted_samples = np.empty(n_samples, dtype=np.intp) - cdef SIZE_t* index_to_samples = self.index_to_samples cdef SIZE_t p - for p in range(n_total_samples): - index_to_samples[p] = -1 - for p in range(n_samples): - index_to_samples[samples[p]] = p + self.index_to_samples[samples[p]] = p return 0 cdef inline SIZE_t _partition(self, double threshold, @@ -846,9 +812,9 @@ cdef class BaseSparseSplitter(Splitter): cdef SIZE_t p cdef SIZE_t partition_end - cdef DTYPE_t* Xf = self.feature_values - cdef SIZE_t* samples = self.samples - cdef SIZE_t* index_to_samples = self.index_to_samples + cdef DTYPE_t[::1] Xf = self.feature_values + cdef SIZE_t[::1] samples = self.samples + cdef SIZE_t[::1] index_to_samples = self.index_to_samples if threshold < 0.: p = self.start @@ -908,6 +874,12 @@ cdef class BaseSparseSplitter(Splitter): cdef SIZE_t indptr_end = self.X_indptr[feature + 1] cdef SIZE_t n_indices = (indptr_end - indptr_start) cdef SIZE_t n_samples = self.end - self.start + cdef SIZE_t[::1] samples = self.samples + cdef DTYPE_t[::1] feature_values = self.feature_values + cdef SIZE_t[::1] index_to_samples = self.index_to_samples + cdef SIZE_t[::1] sorted_samples = self.sorted_samples + cdef INT32_t[::1] X_indices = self.X_indices + cdef DTYPE_t[::1] X_data = self.X_data # Use binary search if n_samples * log(n_indices) < # n_indices and index_to_samples approach otherwise. @@ -916,22 +888,22 @@ cdef class BaseSparseSplitter(Splitter): # approach. if ((1 - is_samples_sorted[0]) * n_samples * log(n_samples) + n_samples * log(n_indices) < EXTRACT_NNZ_SWITCH * n_indices): - extract_nnz_binary_search(self.X_indices, self.X_data, + extract_nnz_binary_search(X_indices, X_data, indptr_start, indptr_end, - self.samples, self.start, self.end, - self.index_to_samples, - self.feature_values, + samples, self.start, self.end, + index_to_samples, + feature_values, end_negative, start_positive, - self.sorted_samples, is_samples_sorted) + sorted_samples, is_samples_sorted) # Using an index to samples technique to extract non zero values # index_to_samples is a mapping from X_indices to samples else: - extract_nnz_index_to_samples(self.X_indices, self.X_data, + extract_nnz_index_to_samples(X_indices, X_data, indptr_start, indptr_end, - self.samples, self.start, self.end, - self.index_to_samples, - self.feature_values, + samples, self.start, self.end, + index_to_samples, + feature_values, end_negative, start_positive) @@ -940,7 +912,7 @@ cdef int compare_SIZE_t(const void* a, const void* b) nogil: return ((a)[0] - (b)[0]) -cdef inline void binary_search(INT32_t* sorted_array, +cdef inline void binary_search(INT32_t[::1] sorted_array, INT32_t start, INT32_t end, SIZE_t value, SIZE_t* index, INT32_t* new_start) nogil: @@ -965,15 +937,15 @@ cdef inline void binary_search(INT32_t* sorted_array, new_start[0] = start -cdef inline void extract_nnz_index_to_samples(INT32_t* X_indices, - DTYPE_t* X_data, +cdef inline void extract_nnz_index_to_samples(INT32_t[::1] X_indices, + DTYPE_t[::1] X_data, INT32_t indptr_start, INT32_t indptr_end, - SIZE_t* samples, + SIZE_t[::1] samples, SIZE_t start, SIZE_t end, - SIZE_t* index_to_samples, - DTYPE_t* Xf, + SIZE_t[::1] index_to_samples, + DTYPE_t[::1] Xf, SIZE_t* end_negative, SIZE_t* start_positive) nogil: """Extract and partition values for a feature using index_to_samples. @@ -1005,18 +977,18 @@ cdef inline void extract_nnz_index_to_samples(INT32_t* X_indices, start_positive[0] = start_positive_ -cdef inline void extract_nnz_binary_search(INT32_t* X_indices, - DTYPE_t* X_data, +cdef inline void extract_nnz_binary_search(INT32_t[::1] X_indices, + DTYPE_t[::1] X_data, INT32_t indptr_start, INT32_t indptr_end, - SIZE_t* samples, + SIZE_t[::1] samples, SIZE_t start, SIZE_t end, - SIZE_t* index_to_samples, - DTYPE_t* Xf, + SIZE_t[::1] index_to_samples, + DTYPE_t[::1] Xf, SIZE_t* end_negative, SIZE_t* start_positive, - SIZE_t* sorted_samples, + SIZE_t[::1] sorted_samples, bint* is_samples_sorted) nogil: """Extract and partition values for a given feature using binary search. @@ -1030,9 +1002,9 @@ cdef inline void extract_nnz_binary_search(INT32_t* X_indices, if not is_samples_sorted[0]: n_samples = end - start - memcpy(sorted_samples + start, samples + start, + memcpy(&sorted_samples[start], &samples[start], n_samples * sizeof(SIZE_t)) - qsort(sorted_samples + start, n_samples, sizeof(SIZE_t), + qsort(&sorted_samples[start], n_samples, sizeof(SIZE_t), compare_SIZE_t) is_samples_sorted[0] = 1 @@ -1077,7 +1049,7 @@ cdef inline void extract_nnz_binary_search(INT32_t* X_indices, start_positive[0] = start_positive_ -cdef inline void sparse_swap(SIZE_t* index_to_samples, SIZE_t* samples, +cdef inline void sparse_swap(SIZE_t[::1] index_to_samples, SIZE_t[::1] samples, SIZE_t pos_1, SIZE_t pos_2) nogil: """Swap sample pos_1 and pos_2 preserving sparse invariant.""" samples[pos_1], samples[pos_2] = samples[pos_2], samples[pos_1] @@ -1103,21 +1075,16 @@ cdef class BestSparseSplitter(BaseSparseSplitter): or 0 otherwise. """ # Find the best split - cdef SIZE_t* samples = self.samples + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t start = self.start cdef SIZE_t end = self.end - cdef INT32_t* X_indices = self.X_indices - cdef INT32_t* X_indptr = self.X_indptr - cdef DTYPE_t* X_data = self.X_data - - cdef SIZE_t* features = self.features - cdef SIZE_t* constant_features = self.constant_features + cdef SIZE_t[::1] features = self.features + cdef SIZE_t[::1] constant_features = self.constant_features cdef SIZE_t n_features = self.n_features - cdef DTYPE_t* Xf = self.feature_values - cdef SIZE_t* sorted_samples = self.sorted_samples - cdef SIZE_t* index_to_samples = self.index_to_samples + cdef DTYPE_t[::1] Xf = self.feature_values + cdef SIZE_t[::1] index_to_samples = self.index_to_samples cdef SIZE_t max_features = self.max_features cdef SIZE_t min_samples_leaf = self.min_samples_leaf cdef double min_weight_leaf = self.min_weight_leaf @@ -1198,8 +1165,9 @@ cdef class BestSparseSplitter(BaseSparseSplitter): &is_samples_sorted) # Sort the positive and negative parts of `Xf` - simultaneous_sort(Xf + start, samples + start, end_negative - start) - simultaneous_sort(Xf + start_positive, samples + start_positive, end - start_positive) + simultaneous_sort(&Xf[start], &samples[start], end_negative - start) + if start_positive < end: + simultaneous_sort(&Xf[start_positive], &samples[start_positive], end - start_positive) # Update index_to_samples to take into account the sort for p in range(start, end_negative): @@ -1303,11 +1271,11 @@ cdef class BestSparseSplitter(BaseSparseSplitter): # Respect invariant for constant features: the original order of # element in features[:n_known_constants] must be preserved for sibling # and child nodes - memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants) + memcpy(&features[0], &constant_features[0], sizeof(SIZE_t) * n_known_constants) # Copy newly found constant features - memcpy(constant_features + n_known_constants, - features + n_known_constants, + memcpy(&constant_features[n_known_constants], + &features[n_known_constants], sizeof(SIZE_t) * n_found_constants) # Return values @@ -1334,21 +1302,16 @@ cdef class RandomSparseSplitter(BaseSparseSplitter): or 0 otherwise. """ # Find the best split - cdef SIZE_t* samples = self.samples + cdef SIZE_t[::1] samples = self.samples cdef SIZE_t start = self.start cdef SIZE_t end = self.end - cdef INT32_t* X_indices = self.X_indices - cdef INT32_t* X_indptr = self.X_indptr - cdef DTYPE_t* X_data = self.X_data - - cdef SIZE_t* features = self.features - cdef SIZE_t* constant_features = self.constant_features + cdef SIZE_t[::1] features = self.features + cdef SIZE_t[::1] constant_features = self.constant_features cdef SIZE_t n_features = self.n_features - cdef DTYPE_t* Xf = self.feature_values - cdef SIZE_t* sorted_samples = self.sorted_samples - cdef SIZE_t* index_to_samples = self.index_to_samples + cdef DTYPE_t[::1] Xf = self.feature_values + cdef SIZE_t[::1] index_to_samples = self.index_to_samples cdef SIZE_t max_features = self.max_features cdef SIZE_t min_samples_leaf = self.min_samples_leaf cdef double min_weight_leaf = self.min_weight_leaf @@ -1433,19 +1396,15 @@ cdef class RandomSparseSplitter(BaseSparseSplitter): &end_negative, &start_positive, &is_samples_sorted) - # Add one or two zeros in Xf, if there is any - if end_negative < start_positive: - start_positive -= 1 - Xf[start_positive] = 0. - - if end_negative != start_positive: - Xf[end_negative] = 0. - end_negative += 1 + if end_negative != start_positive: + # There is a zero + min_feature_value = 0 + max_feature_value = 0 + else: + min_feature_value = Xf[start] + max_feature_value = min_feature_value # Find min, max in Xf[start:end_negative] - min_feature_value = Xf[start] - max_feature_value = min_feature_value - for p in range(start, end_negative): current_feature_value = Xf[p] @@ -1486,8 +1445,7 @@ cdef class RandomSparseSplitter(BaseSparseSplitter): current.pos = self._partition(current.threshold, end_negative, start_positive, - start_positive + - (Xf[start_positive] == 0.)) + start_positive) # Reject if min_samples_leaf is not guaranteed if (((current.pos - start) < min_samples_leaf) or @@ -1532,11 +1490,11 @@ cdef class RandomSparseSplitter(BaseSparseSplitter): # Respect invariant for constant features: the original order of # element in features[:n_known_constants] must be preserved for sibling # and child nodes - memcpy(features, constant_features, sizeof(SIZE_t) * n_known_constants) + memcpy(&features[0], &constant_features[0], sizeof(SIZE_t) * n_known_constants) # Copy newly found constant features - memcpy(constant_features + n_known_constants, - features + n_known_constants, + memcpy(&constant_features[n_known_constants], + &features[n_known_constants], sizeof(SIZE_t) * n_found_constants) # Return values From 3e980238a7df8dc5a999e00366bb79bb11adff3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Fri, 13 May 2022 20:32:28 +0200 Subject: [PATCH 011/251] CI: move Linux and MacOS Azure builds to conda lock files (#22448) Co-authored-by: Olivier Grisel Co-authored-by: Thomas J. Fan --- azure-pipelines.yml | 48 +- build_tools/azure/debian_atlas_32bit_lock.txt | 34 ++ .../azure/debian_atlas_32bit_requirements.txt | 7 + build_tools/azure/install.sh | 131 ++---- build_tools/azure/posix-docker.yml | 23 +- build_tools/azure/posix.yml | 10 - ...38_conda_defaults_openblas_environment.yml | 23 + ...onda_defaults_openblas_linux-64_conda.lock | 92 ++++ ...forge_openblas_ubuntu_1804_environment.yml | 20 + ...e_openblas_ubuntu_1804_linux-64_conda.lock | 131 ++++++ ...latest_conda_forge_mkl_linux-64_conda.lock | 148 +++++++ ...t_conda_forge_mkl_linux-64_environment.yml | 23 + ...onda_forge_mkl_no_coverage_environment.yml | 20 + ..._forge_mkl_no_coverage_linux-64_conda.lock | 134 ++++++ ...pylatest_conda_forge_mkl_osx-64_conda.lock | 132 ++++++ ...est_conda_forge_mkl_osx-64_environment.yml | 25 ++ ...latest_conda_mkl_no_openmp_environment.yml | 23 + ...test_conda_mkl_no_openmp_osx-64_conda.lock | 82 ++++ ...latest_pip_openblas_pandas_environment.yml | 28 ++ ...st_pip_openblas_pandas_linux-64_conda.lock | 86 ++++ .../pylatest_pip_scipy_dev_environment.yml | 19 + ...pylatest_pip_scipy_dev_linux-64_conda.lock | 67 +++ build_tools/azure/pypy3_environment.yml | 18 + build_tools/azure/pypy3_linux-64_conda.lock | 96 ++++ build_tools/azure/python_nogil_lock.txt | 62 +++ .../azure/python_nogil_requirements.txt | 15 + build_tools/azure/ubuntu_atlas_lock.txt | 39 ++ .../azure/ubuntu_atlas_requirements.txt | 8 + .../update_environments_and_lock_files.py | 419 ++++++++++++++++++ 29 files changed, 1796 insertions(+), 167 deletions(-) create mode 100644 build_tools/azure/debian_atlas_32bit_lock.txt create mode 100644 build_tools/azure/debian_atlas_32bit_requirements.txt create mode 100644 build_tools/azure/py38_conda_defaults_openblas_environment.yml create mode 100644 build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock create mode 100644 build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml create mode 100644 build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock create mode 100644 build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml create mode 100644 build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml create mode 100644 build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock create mode 100644 build_tools/azure/pylatest_pip_openblas_pandas_environment.yml create mode 100644 build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock create mode 100644 build_tools/azure/pylatest_pip_scipy_dev_environment.yml create mode 100644 build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock create mode 100644 build_tools/azure/pypy3_environment.yml create mode 100644 build_tools/azure/pypy3_linux-64_conda.lock create mode 100644 build_tools/azure/python_nogil_lock.txt create mode 100644 build_tools/azure/python_nogil_requirements.txt create mode 100644 build_tools/azure/ubuntu_atlas_lock.txt create mode 100644 build_tools/azure/ubuntu_atlas_requirements.txt create mode 100644 build_tools/azure/update_environments_and_lock_files.py diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 020d007acc651..8143cb7e04452 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -63,7 +63,7 @@ jobs: matrix: pylatest_pip_scipy_dev: DISTRIB: 'conda-pip-scipy-dev' - PYTHON_VERSION: '*' + LOCK_FILE: './build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock' CHECK_WARNINGS: 'true' CHECK_PYTEST_SOFT_DEPENDENCY: 'true' TEST_DOCSTRINGS: 'true' @@ -103,6 +103,7 @@ jobs: matrix: pylatest_pip_nogil: DISTRIB: 'pip-nogil' + LOCK_FILE: './build_tools/azure/python_nogil_lock.txt' COVERAGE: 'false' # Check compilation with intel C++ compiler (ICC) @@ -122,9 +123,7 @@ jobs: matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' - CONDA_CHANNEL: 'conda-forge' - PYTHON_VERSION: '*' - BLAS: 'mkl' + LOCK_FILE: 'build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock' COVERAGE: 'false' BUILD_WITH_ICC: 'true' @@ -144,10 +143,9 @@ jobs: ) matrix: pypy3: - DISTRIB: 'conda-mamba-pypy3' - DOCKER_CONTAINER: 'condaforge/mambaforge-pypy3:4.10.3-5' - PILLOW_VERSION: 'none' - PANDAS_VERSION: 'none' + DOCKER_CONTAINER: 'condaforge/miniforge3:4.10.3-5' + DISTRIB: 'conda-pypy3' + LOCK_FILE: './build_tools/azure/pypy3_linux-64_conda.lock' # Will run all the time regardless of linting outcome. - template: build_tools/azure/posix.yml @@ -163,9 +161,7 @@ jobs: matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' - CONDA_CHANNEL: 'conda-forge' - PYTHON_VERSION: '*' - BLAS: 'mkl' + LOCK_FILE: './build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock' COVERAGE: 'true' SHOW_SHORT_SUMMARY: 'true' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '42' # default global random seed @@ -184,9 +180,7 @@ jobs: matrix: py38_conda_forge_openblas_ubuntu_1804: DISTRIB: 'conda' - CONDA_CHANNEL: 'conda-forge' - PYTHON_VERSION: '3.8' - BLAS: 'openblas' + LOCK_FILE: './build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock' COVERAGE: 'false' BUILD_WITH_ICC: 'false' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '0' # non-default seed @@ -207,21 +201,13 @@ jobs: # i.e. numpy 1.17.4 and scipy 1.3.3 ubuntu_atlas: DISTRIB: 'ubuntu' - JOBLIB_VERSION: 'min' - PANDAS_VERSION: 'none' - THREADPOOLCTL_VERSION: 'min' + LOCK_FILE: './build_tools/azure/ubuntu_atlas_lock.txt' COVERAGE: 'false' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '1' # non-default seed # Linux + Python 3.8 build with OpenBLAS py38_conda_defaults_openblas: DISTRIB: 'conda' - CONDA_CHANNEL: 'defaults' # Anaconda main channel - PYTHON_VERSION: '3.8' - BLAS: 'openblas' - NUMPY_VERSION: 'min' - SCIPY_VERSION: 'min' - MATPLOTLIB_VERSION: 'min' - THREADPOOLCTL_VERSION: '2.2.0' + LOCK_FILE: './build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock' SKLEARN_ENABLE_DEBUG_CYTHON_DIRECTIVES: '1' SKLEARN_RUN_FLOAT32_TESTS: '1' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '2' # non-default seed @@ -229,8 +215,7 @@ jobs: # It runs tests requiring lightgbm, pandas and PyAMG. pylatest_pip_openblas_pandas: DISTRIB: 'conda-pip-latest' - PYTHON_VERSION: '3.9' - PYTEST_VERSION: '6.2.5' + LOCK_FILE: './build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock' CHECK_PYTEST_SOFT_DEPENDENCY: 'true' TEST_DOCSTRINGS: 'true' CHECK_WARNINGS: 'true' @@ -248,13 +233,11 @@ jobs: ) matrix: debian_atlas_32bit: - DISTRIB: 'debian-32' DOCKER_CONTAINER: 'i386/debian:11.2' - JOBLIB_VERSION: 'min' + DISTRIB: 'debian-32' + LOCK_FILE: './build_tools/azure/debian_atlas_32bit_lock.txt' # disable pytest xdist due to unknown bug with 32-bit container PYTEST_XDIST_VERSION: 'none' - PYTEST_VERSION: 'min' - THREADPOOLCTL_VERSION: '2.2.0' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '4' # non-default seed - template: build_tools/azure/posix.yml @@ -270,12 +253,11 @@ jobs: matrix: pylatest_conda_forge_mkl: DISTRIB: 'conda' - BLAS: 'mkl' - CONDA_CHANNEL: 'conda-forge' + LOCK_FILE: './build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '5' # non-default seed pylatest_conda_mkl_no_openmp: DISTRIB: 'conda' - BLAS: 'mkl' + LOCK_FILE: './build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock' SKLEARN_TEST_NO_OPENMP: 'true' SKLEARN_SKIP_OPENMP_TEST: 'true' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '6' # non-default seed diff --git a/build_tools/azure/debian_atlas_32bit_lock.txt b/build_tools/azure/debian_atlas_32bit_lock.txt new file mode 100644 index 0000000000000..633829fbf2874 --- /dev/null +++ b/build_tools/azure/debian_atlas_32bit_lock.txt @@ -0,0 +1,34 @@ +# +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile --output-file=build_tools/azure/debian_atlas_32bit_lock.txt build_tools/azure/debian_atlas_32bit_requirements.txt +# +atomicwrites==1.4.0 + # via pytest +attrs==21.4.0 + # via pytest +cython==0.29.28 + # via -r build_tools/azure/debian_atlas_32bit_requirements.txt +importlib-metadata==4.11.3 + # via pytest +joblib==1.0.0 + # via -r build_tools/azure/debian_atlas_32bit_requirements.txt +more-itertools==8.13.0 + # via pytest +packaging==21.3 + # via pytest +pluggy==0.13.1 + # via pytest +py==1.11.0 + # via pytest +pyparsing==3.0.9 + # via packaging +pytest==5.0.1 + # via -r build_tools/azure/debian_atlas_32bit_requirements.txt +threadpoolctl==2.2.0 + # via -r build_tools/azure/debian_atlas_32bit_requirements.txt +wcwidth==0.2.5 + # via pytest +zipp==3.8.0 + # via importlib-metadata diff --git a/build_tools/azure/debian_atlas_32bit_requirements.txt b/build_tools/azure/debian_atlas_32bit_requirements.txt new file mode 100644 index 0000000000000..d7f36644ecec1 --- /dev/null +++ b/build_tools/azure/debian_atlas_32bit_requirements.txt @@ -0,0 +1,7 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +cython +joblib==1.0.0 # min +threadpoolctl==2.2.0 +pytest==5.0.1 # min diff --git a/build_tools/azure/install.sh b/build_tools/azure/install.sh index cfc563a4f9f65..ff836c4a2c787 100755 --- a/build_tools/azure/install.sh +++ b/build_tools/azure/install.sh @@ -7,21 +7,8 @@ set -x source build_tools/shared.sh UNAMESTR=`uname` - CCACHE_LINKS_DIR="/tmp/ccache" - -make_conda() { - TO_INSTALL="$@" - if [[ "$DISTRIB" == *"mamba"* ]]; then - mamba create -n $VIRTUALENV --yes $TO_INSTALL - else - conda config --show - conda create -n $VIRTUALENV --yes $TO_INSTALL - fi - source activate $VIRTUALENV -} - setup_ccache() { CCACHE_BIN=`which ccache || echo ""` if [[ "${CCACHE_BIN}" == "" ]]; then @@ -53,8 +40,8 @@ pre_python_environment_install() { python3-matplotlib libatlas3-base libatlas-base-dev \ python3-virtualenv python3-pandas ccache - elif [[ "$DISTRIB" == "conda-mamba-pypy3" ]]; then - # condaforge/mambaforge-pypy3 needs compilers + elif [[ "$DISTRIB" == "conda-pypy3" ]]; then + # need compilers apt-get -yq update apt-get -yq install build-essential @@ -63,6 +50,14 @@ pre_python_environment_install() { sudo apt-get -yq update sudo apt-get install -yq ccache sudo apt-get build-dep -yq python3 python3-dev + setup_ccache # speed-up the build of CPython itself + # build Python nogil + PYTHON_NOGIL_CLONE_PATH=../nogil + git clone --depth 1 https://github.com/colesbury/nogil $PYTHON_NOGIL_CLONE_PATH + cd $PYTHON_NOGIL_CLONE_PATH + ./configure && make -j 2 + export PYTHON_NOGIL_PATH="${PYTHON_NOGIL_CLONE_PATH}/python" + cd $OLDPWD elif [[ "$BUILD_WITH_ICC" == "true" ]]; then wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB @@ -76,103 +71,35 @@ pre_python_environment_install() { fi } -python_environment_install() { - if [[ "$DISTRIB" == "conda" || "$DISTRIB" == *"mamba"* ]]; then - - if [[ "$CONDA_CHANNEL" != "" ]]; then - TO_INSTALL="--override-channels -c $CONDA_CHANNEL" - else - TO_INSTALL="" - fi +python_environment_install_and_activate() { + if [[ "$DISTRIB" == "conda"* ]]; then + conda update -n base conda -y + # pin conda-lock to latest released version (needs manual update from time to time) + conda install -c conda-forge conda-lock==1.0.5 -y + conda-lock install --name $VIRTUALENV $LOCK_FILE + source activate $VIRTUALENV - if [[ "$DISTRIB" == *"pypy"* ]]; then - TO_INSTALL="$TO_INSTALL pypy" - else - TO_INSTALL="$TO_INSTALL python=$PYTHON_VERSION" - fi - - TO_INSTALL="$TO_INSTALL ccache pip blas[build=$BLAS]" - - TO_INSTALL="$TO_INSTALL $(get_dep numpy $NUMPY_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep scipy $SCIPY_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep cython $CYTHON_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep joblib $JOBLIB_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep pandas $PANDAS_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep pyamg $PYAMG_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep Pillow $PILLOW_VERSION)" - TO_INSTALL="$TO_INSTALL $(get_dep matplotlib $MATPLOTLIB_VERSION)" - - if [[ "$UNAMESTR" == "Darwin" ]] && [[ "$SKLEARN_TEST_NO_OPENMP" != "true" ]]; then - TO_INSTALL="$TO_INSTALL compilers llvm-openmp" - fi - - make_conda $TO_INSTALL - - elif [[ "$DISTRIB" == "ubuntu" ]] || [[ "$DISTRIB" == "debian-32" ]]; then + elif [[ "$DISTRIB" == "ubuntu" || "$DISTRIB" == "debian-32" ]]; then python3 -m virtualenv --system-site-packages --python=python3 $VIRTUALENV source $VIRTUALENV/bin/activate + pip install -r "${LOCK_FILE}" - python -m pip install $(get_dep cython $CYTHON_VERSION) \ - $(get_dep joblib $JOBLIB_VERSION) - - elif [[ "$DISTRIB" == "conda-pip-latest" ]]; then - # Since conda main channel usually lacks behind on the latest releases, - # we use pypi to test against the latest releases of the dependencies. - # conda is still used as a convenient way to install Python and pip. - make_conda "ccache python=$PYTHON_VERSION" - python -m pip install -U pip - - python -m pip install pandas matplotlib scikit-image pyamg - # do not install dependencies for lightgbm since it requires scikit-learn. - python -m pip install "lightgbm>=3.0.0" --no-deps + elif [[ "$DISTRIB" == "pip-nogil" ]]; then + ${PYTHON_NOGIL_PATH} -m venv $VIRTUALENV + source $VIRTUALENV/bin/activate + pip install -r "${LOCK_FILE}" + fi - elif [[ "$DISTRIB" == "conda-pip-scipy-dev" ]]; then - make_conda "ccache python=$PYTHON_VERSION" - python -m pip install -U pip - echo "Installing numpy and scipy master wheels" + if [[ "$DISTRIB" == "conda-pip-scipy-dev" ]]; then + echo "Installing development dependency wheels" dev_anaconda_url=https://pypi.anaconda.org/scipy-wheels-nightly/simple pip install --pre --upgrade --timeout=60 --extra-index $dev_anaconda_url numpy pandas scipy + echo "Installing Cython from PyPI enabling pre-releases" pip install --pre cython echo "Installing joblib master" pip install https://github.com/joblib/joblib/archive/master.zip echo "Installing pillow master" pip install https://github.com/python-pillow/Pillow/archive/main.zip - - elif [[ "$DISTRIB" == "pip-nogil" ]]; then - setup_ccache # speed-up the build of CPython it-self - ORIGINAL_FOLDER=`pwd` - cd .. - git clone --depth 1 https://github.com/colesbury/nogil - cd nogil - ./configure && make -j 2 - ./python -m venv $ORIGINAL_FOLDER/$VIRTUALENV - cd $ORIGINAL_FOLDER - source $VIRTUALENV/bin/activate - - python -m pip install -U pip - # The pip version that comes with the nogil branch of CPython - # automatically uses the custom nogil index as its highest priority - # index to fetch patched versions of libraries with native code that - # would otherwise depend on the GIL. - echo "Installing build dependencies with pip from the nogil repository: https://d1yxz45j0ypngg.cloudfront.net/" - pip install numpy scipy cython joblib threadpoolctl - - fi - - python -m pip install $(get_dep threadpoolctl $THREADPOOLCTL_VERSION) \ - $(get_dep pytest $PYTEST_VERSION) \ - $(get_dep pytest-xdist $PYTEST_XDIST_VERSION) - - if [[ "$COVERAGE" == "true" ]]; then - # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe - # cf. https://github.com/nedbat/coveragepy/issues/1310 - python -m pip install codecov pytest-cov coverage==6.2 - fi - - if [[ "$TEST_DOCSTRINGS" == "true" ]]; then - # numpydoc requires sphinx - python -m pip install sphinx - python -m pip install numpydoc fi } @@ -184,7 +111,7 @@ scikit_learn_install() { # workers with 2 cores when building the compiled extensions of scikit-learn. export SKLEARN_BUILD_PARALLEL=3 - if [[ "$UNAMESTR" == "Darwin" ]] && [[ "$SKLEARN_TEST_NO_OPENMP" == "true" ]]; then + if [[ "$UNAMESTR" == "Darwin" && "$SKLEARN_TEST_NO_OPENMP" == "true" ]]; then # Without openmp, we use the system clang. Here we use /usr/bin/ar # instead because llvm-ar errors export AR=/usr/bin/ar @@ -220,7 +147,7 @@ scikit_learn_install() { main() { pre_python_environment_install - python_environment_install + python_environment_install_and_activate scikit_learn_install } diff --git a/build_tools/azure/posix-docker.yml b/build_tools/azure/posix-docker.yml index 890731ffb5b0d..b27b1d0747e60 100644 --- a/build_tools/azure/posix-docker.yml +++ b/build_tools/azure/posix-docker.yml @@ -19,20 +19,9 @@ jobs: OPENBLAS_NUM_THREADS: '2' CPU_COUNT: '2' SKLEARN_SKIP_NETWORK_TESTS: '1' - NUMPY_VERSION: 'latest' - SCIPY_VERSION: 'latest' - CYTHON_VERSION: 'latest' - JOBLIB_VERSION: 'latest' - PANDAS_VERSION: 'latest' - PYAMG_VERSION: 'latest' - PILLOW_VERSION: 'latest' - MATPLOTLIB_VERSION: 'latest' - PYTEST_VERSION: 'latest' PYTEST_XDIST_VERSION: 'latest' - THREADPOOLCTL_VERSION: 'latest' COVERAGE: 'false' TEST_DOCSTRINGS: 'false' - BLAS: 'openblas' # Set in azure-pipelines.yml DISTRIB: '' DOCKER_CONTAINER: '' @@ -76,24 +65,14 @@ jobs: --detach --name skcontainer -e DISTRIB=$DISTRIB + -e LOCK_FILE=$LOCK_FILE -e TEST_DIR=/temp_dir -e JUNITXML=$JUNITXML -e VIRTUALENV=testvenv - -e NUMPY_VERSION=$NUMPY_VERSION - -e SCIPY_VERSION=$SCIPY_VERSION - -e CYTHON_VERSION=$CYTHON_VERSION - -e JOBLIB_VERSION=$JOBLIB_VERSION - -e PANDAS_VERSION=$PANDAS_VERSION - -e PYAMG_VERSION=$PYAMG_VERSION - -e PILLOW_VERSION=$PILLOW_VERSION - -e MATPLOTLIB_VERSION=$MATPLOTLIB_VERSION - -e PYTEST_VERSION=$PYTEST_VERSION -e PYTEST_XDIST_VERSION=$PYTEST_XDIST_VERSION - -e THREADPOOLCTL_VERSION=$THREADPOOLCTL_VERSION -e OMP_NUM_THREADS=$OMP_NUM_THREADS -e OPENBLAS_NUM_THREADS=$OPENBLAS_NUM_THREADS -e SKLEARN_SKIP_NETWORK_TESTS=$SKLEARN_SKIP_NETWORK_TESTS - -e BLAS=$BLAS -e SELECTED_TESTS="$SELECTED_TESTS" -e CPU_COUNT=$CPU_COUNT -e CCACHE_DIR=/ccache diff --git a/build_tools/azure/posix.yml b/build_tools/azure/posix.yml index 169b61ce4859b..f93cd6e211231 100644 --- a/build_tools/azure/posix.yml +++ b/build_tools/azure/posix.yml @@ -22,17 +22,7 @@ jobs: SKLEARN_SKIP_NETWORK_TESTS: '1' CCACHE_DIR: $(Pipeline.Workspace)/ccache CCACHE_COMPRESS: '1' - NUMPY_VERSION: 'latest' - SCIPY_VERSION: 'latest' - CYTHON_VERSION: 'latest' - JOBLIB_VERSION: 'latest' - PANDAS_VERSION: 'latest' - PYAMG_VERSION: 'latest' - PILLOW_VERSION: 'latest' - MATPLOTLIB_VERSION: 'latest' - PYTEST_VERSION: '6.2.5' PYTEST_XDIST_VERSION: 'latest' - THREADPOOLCTL_VERSION: 'latest' COVERAGE: 'true' TEST_DOCSTRINGS: 'false' CREATE_ISSUE_ON_TRACKER: 'true' diff --git a/build_tools/azure/py38_conda_defaults_openblas_environment.yml b/build_tools/azure/py38_conda_defaults_openblas_environment.yml new file mode 100644 index 0000000000000..549d1f7f50990 --- /dev/null +++ b/build_tools/azure/py38_conda_defaults_openblas_environment.yml @@ -0,0 +1,23 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - defaults +dependencies: + - python=3.8 + - numpy=1.17.3 # min + - blas[build=openblas] + - scipy=1.3.2 # min + - cython + - joblib + - threadpoolctl=2.2.0 + - matplotlib=3.1.2 # min + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage=6.2 + - ccache diff --git a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock new file mode 100644 index 0000000000000..5a291b80343a3 --- /dev/null +++ b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock @@ -0,0 +1,92 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: d91596671b52a17e757671b6ec100470a003803ffb5fa9df2cce7ba21b19e051 +@EXPLICIT +https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 +https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-openblas.conda#9ddfcaef10d79366c90128f5dc444be8 +https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/linux-64/libgfortran4-7.5.0-ha8ba4b0_17.conda#e3883581cbf0a98672250c3e80d292bf +https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.5.0-ha8ba4b0_17.conda#ecb35c8952579d5c8dc56c6e076ba948 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/expat-2.4.4-h295c915_0.conda#f9930c60940181cf06d0bd0b8095063c +https://repo.anaconda.com/pkgs/main/linux-64/giflib-5.2.1-h7b6447c_0.conda#c2583ad8de5051f19479580c58336f15 +https://repo.anaconda.com/pkgs/main/linux-64/icu-58.2-he6710b0_3.conda#48cc14d5ad1a9bcd8dac17211a8deb8b +https://repo.anaconda.com/pkgs/main/linux-64/jpeg-9e-h7f8727e_0.conda#a0571bd2254b360aef526307a17f3526 +https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c +https://repo.anaconda.com/pkgs/main/linux-64/libopenblas-0.3.18-hf726d26_0.conda#10422bb3b9b022e27798fc368cda69ba +https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 +https://repo.anaconda.com/pkgs/main/linux-64/libwebp-base-1.2.2-h7f8727e_0.conda#162451b4884cfc7db8400580c711e83a +https://repo.anaconda.com/pkgs/main/linux-64/libxcb-1.14-h7b6447c_0.conda#05811f2f9a9af28f3d7d665dca4d573e +https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.3-h295c915_1.conda#d9bd18f73ff566e08add10a54a3463cf +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/pcre-8.45-h295c915_0.conda#b32ccc24d1d9808618c1e898da60f68d +https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc +https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 +https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e +https://repo.anaconda.com/pkgs/main/linux-64/glib-2.69.1-h4ff587b_1.conda#4c3eae7c0b8b1c8fb3046a0740313bbf +https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda#689f903925dcf6c5ab7bc1de0f58b67b +https://repo.anaconda.com/pkgs/main/linux-64/libxml2-2.9.12-h74e7548_1.conda#ac7815a8b90fcc5f12b129f7c86af735 +https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 +https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.4.9-haebb681_0.conda#2e81424da35919b0f552b9e5ba0a37ba +https://repo.anaconda.com/pkgs/main/linux-64/dbus-1.13.18-hb2f20db_0.conda#6a6a6f1391f807847404344489ef6cf4 +https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.11.0-h70c0345_0.conda#b767874a6273e1058027cb2e300d00ac +https://repo.anaconda.com/pkgs/main/linux-64/gstreamer-1.14.0-h28cd5cc_2.conda#6af5d0cbd7310e1cd8a6a5c1c99649b2 +https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.2.0-h85742a9_0.conda#a70887f6e46ea21d5e4e27685bd59ff9 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 +https://repo.anaconda.com/pkgs/main/linux-64/fontconfig-2.13.1-h6c09931_0.conda#fa04e89166d4b44326c6d76e2f708715 +https://repo.anaconda.com/pkgs/main/linux-64/gst-plugins-base-1.14.0-h8213a91_2.conda#838648422452405b86699e780e293c1d +https://repo.anaconda.com/pkgs/main/linux-64/lcms2-2.12-h3be6417_0.conda#719db47afba9f6586eecb5eacac70bff +https://repo.anaconda.com/pkgs/main/linux-64/libwebp-1.2.2-h55f646e_0.conda#c9ed6bddefc09dbfc246301c3ce3ca14 +https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.13-h12debd9_0.conda#edc17980bae484b711e090f0a0cbbaef +https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.10.8-py38h06a4308_2.conda#5b1b38defe6479dcc64df1bc4dfb587d +https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 +https://repo.anaconda.com/pkgs/main/linux-64/coverage-6.2-py38h7f8727e_0.conda#34a3006ca7d8d286b63593b31b845ace +https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab +https://repo.anaconda.com/pkgs/main/linux-64/cython-0.29.28-py38h295c915_0.conda#5c546bcf04d20b8291d5794227de04fa +https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895937671af67cebb8af617494b3513 +https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a +https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 +https://repo.anaconda.com/pkgs/main/noarch/joblib-1.1.0-pyhd3eb1b0_0.conda#cae25b839f3b24686e683addde01b742 +https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.3.2-py38h295c915_0.conda#110dea482a589287f78324302f4b1c17 +https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.17.3-py38h2f8d375_0.conda#40edbb76ecacefb1e6ab639b514822b1 +https://repo.anaconda.com/pkgs/main/linux-64/pillow-9.0.1-py38h22f2fdc_0.conda#13c7b8b727dc6af99e9f6d75b3ec18f3 +https://repo.anaconda.com/pkgs/main/linux-64/pluggy-1.0.0-py38h06a4308_1.conda#87bb1d3f6cf3e409a1dac38cee99918e +https://repo.anaconda.com/pkgs/main/noarch/py-1.11.0-pyhd3eb1b0_0.conda#7205a898ed2abbf6e9b903dff6abe08e +https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda#135a72ff2a31150a3a3ff0b1edd41ca9 +https://repo.anaconda.com/pkgs/main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda#6bca2ae9c9aae9ccdebcb8cf2aa87cb3 +https://repo.anaconda.com/pkgs/main/linux-64/pysocks-1.7.1-py38h06a4308_0.conda#21c67581f3a81ffbb02728eb2178d693 +https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda#76415b791ffd2007687ac5f0665aa7af +https://repo.anaconda.com/pkgs/main/linux-64/qt-5.9.7-h5867ecd_1.conda#05507dbc35c46ac5a7066fc860a62341 +https://repo.anaconda.com/pkgs/main/linux-64/sip-4.19.13-py38h295c915_0.conda#2046e66b7d12f7c0cda5687e4c27b692 +https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 +https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 +https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a +https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.1-py38h27cfd23_0.conda#d2d3043f631807af72b0fde504baf625 +https://repo.anaconda.com/pkgs/main/linux-64/cffi-1.15.0-py38hd667e15_1.conda#7b12fe728b28de7b8851af1eb1ba1d38 +https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.17.3-py38h7e8d029_0.conda#5f2b196b515f8fe6b37e3d224650577d +https://repo.anaconda.com/pkgs/main/noarch/packaging-21.3-pyhd3eb1b0_0.conda#07bbfbb961db7fa329cc42716943ea62 +https://repo.anaconda.com/pkgs/main/linux-64/pyqt-5.9.2-py38h05f1152_4.conda#d3e6b8e1a634125414f87f231c755dae +https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.conda#211ee00320b08a1ac9fea6677649f6c9 +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py38h06a4308_0.conda#c5e94bc1e8e443ae6d53b191a351591e +https://repo.anaconda.com/pkgs/main/linux-64/brotlipy-0.7.0-py38h27cfd23_1003.conda#e881c8ee8a4048f29da5d20f0330fe37 +https://repo.anaconda.com/pkgs/main/linux-64/cryptography-37.0.1-py38h9ce1e76_0.conda#16d301ed789096eb9881a25ed7a1155e +https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-base-3.1.2-py38hef1b27d_1.conda#5e99f974f4c2757791aa10a27596230a +https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.2.4-py38ha9443f7_0.conda#5bd3fd807a294f387feabc65821b75d0 +https://repo.anaconda.com/pkgs/main/linux-64/pytest-6.2.5-py38h06a4308_2.conda#52a6739ba472ddd5aeaf0fd495827c38 +https://repo.anaconda.com/pkgs/main/linux-64/scipy-1.3.2-py38he2b7bc3_0.conda#a9df91d5a41c1f39524fc8a53c56bc29 +https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-3.1.2-py38_1.conda#1781036a02c5def820ea2923074d158a +https://repo.anaconda.com/pkgs/main/linux-64/pyamg-4.1.0-py38h9a67853_0.conda#9b0bffd5f67e0c5ee3c226e5518991fb +https://repo.anaconda.com/pkgs/main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda#1dbbf9422269cd62c7094960d9b43f36 +https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#bbdaac2947f507399816d509107945c2 +https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 +https://repo.anaconda.com/pkgs/main/noarch/pytest-xdist-2.5.0-pyhd3eb1b0_0.conda#d15cdc4207bcf8ca920822597f1d138d +https://repo.anaconda.com/pkgs/main/linux-64/urllib3-1.26.9-py38h06a4308_0.conda#40c1c6f5e634ec77344a822ab3aa84cc +https://repo.anaconda.com/pkgs/main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda#9b593f86737e69140c47c2107ecf277c +https://repo.anaconda.com/pkgs/main/noarch/codecov-2.1.11-pyhd3eb1b0_0.conda#83a743cc928162d53d4066c43468b2c7 diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml new file mode 100644 index 0000000000000..e4d69b9e280a4 --- /dev/null +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml @@ -0,0 +1,20 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python=3.8 + - numpy + - blas[build=openblas] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - ccache diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock new file mode 100644 index 0000000000000..9e9a0f4564650 --- /dev/null +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock @@ -0,0 +1,131 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 3cd8b21f7fb7fc5f475b6f8472cfdbbc4a2c06a0da1a549c9f0b95f076312b0f +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h28343ad_4.tar.bz2#4a049fc560e00e43151dc51368915fdd +https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_0.tar.bz2#6fb32e979e612fe11fd5e654fc527bb8 +https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e +https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a +https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_0.tar.bz2#4f0d6c754a21008055d999fa573efa4b +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-h676c864_0.tar.bz2#013524c79f4441281fa1833b703c160a +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.8.13-ha86cf86_0_cpython.tar.bz2#39183fc3fc91579b466dfa767d2ef4b1 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-2_cp38.tar.bz2#bfbb29d517281e78ac53e48d21e6e860 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_2.tar.bz2#63a01bce71bc3e8c8e0510ed997d1458 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py38hfa26641_2.tar.bz2#f264fa736a10b947b6032a6f963dfb64 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py38h99721a1_2.tar.bz2#e6ed43e96f813b184fe9bb677476e56d +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py38h0ee0e06_2.tar.bz2#8243a9d13155e6dfb254d35284653a39 +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_8.tar.bz2#11b72f5b1cc15427c89232321172a0bc +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py38h578d9bd_0.tar.bz2#5efbc16cda18259c2ce412d181ba0d9f +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h0a891b7_1.tar.bz2#83df0e9e3faffc295f12607438691465 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py38h0a891b7_0.tar.bz2#fd11badf5b3f7d738cc983cb2c75946e +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py38h47df419_1.tar.bz2#0cdb1150994e0c449b25d6f92b69eda2 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.tar.bz2#acfc7625a212c27f7decdca86fdb2aba +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.bz2#23a8cc7179515f7092fa580275ae57d6 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py38h56a6a73_1.tar.bz2#86073932d9e675c5929376f6f8b79b97 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py38h826bfd8_0.tar.bz2#107af20136422bcabf9f1195f6262117 +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py38h514daf8_0.tar.bz2#b668a53168c9e66fd5948cf9a456ae50 +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_8.tar.bz2#78a2a6cb4ef31f997c1bee8223a9e579 +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py38h7400c14_8.tar.bz2#857894ea9c5e53c962c3a0932efa71ea +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38h578d9bd_8.tar.bz2#88368a5889f31dff922a2d57bbfc3f5b +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py38h578d9bd_0.tar.bz2#b15039e7f67b5f91c35f9b6d27c2775c 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 new file mode 100644 index 0000000000000..9f7d6fc198215 --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_conda.lock @@ -0,0 +1,148 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 3d477285e630a12c9c8b60ea8531e45c86b5ecb4a06bc6d2f69c563e6fdc73f8 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 +https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_0.tar.bz2#69c2d220ca1b41a881928a91a6cbbd93 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e +https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 +https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_0.tar.bz2#3314d5f8d6c831514363625cb28c8ff1 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-hd57d9b9_0.tar.bz2#91b38e297e1cc79f88f7cbf7bdb248e0 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h9a8a25e_0_cpython.tar.bz2#4c6ebd5ba5e606f77a58154b37d96851 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_mkl.tar.bz2#27fda2535874f86f52c0fb382208be76 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_mkl.tar.bz2#a399241e54c43f219e65781995516a1e +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-2_cp310.tar.bz2#9e7160cd0d865e98f6803f1fe15c8b61 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py310hff52083_2.tar.bz2#9d379ec519a1e4cece41bee7a8a0c451 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py310h0fdd8cc_0.tar.bz2#7b7366be82277a5a210e48cc6d25ce26 +https://conda.anaconda.org/conda-forge/linux-64/coverage-6.2-py310h6acc77f_0.tar.bz2#3a96cddd907fb4ecb34d0ee8205ee708 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py310hd8f1fbe_2.tar.bz2#2ac7b943bf7280631348083d516f0d62 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py310h4ef5377_2.tar.bz2#6881d1a459458a4ec9f3c1b44ed024d9 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py310he619898_2.tar.bz2#b4cde935a2ca6c97a6700add567f38ef +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2#378f2260e871f3ea46c6fa58d9f05277 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py310hff52083_0.tar.bz2#2fad189c2eae603293c746329510f0ba +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1004.tar.bz2#6499bb11b7feffb63b26847fc9181319 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.2-py310h597c629_1.tar.bz2#e8c95a1b5542c95fc054e9ace7269708 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py310hff52083_2.tar.bz2#6ccfe8cf3b03ac083a4928a9e7b2ea9f +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py310hea5193d_1.tar.bz2#664d80ddeb51241629b3ada5ea926e4d +https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py310hfcd6d55_8.tar.bz2#e7daa09dba0d95a874c3d0a678665e77 +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py310hfcd6d55_8.tar.bz2#f78e8d66e92e73e8fda274664888b2a2 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py310hff52083_8.tar.bz2#f75c4f1fe3bd1a15ae0d2e5f33bc75e6 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e +https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml new file mode 100644 index 0000000000000..7d7ba258422d9 --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml @@ -0,0 +1,23 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python + - numpy + - blas[build=mkl] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage=6.2 + - ccache diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml new file mode 100644 index 0000000000000..c51b32e65955b --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml @@ -0,0 +1,20 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python + - numpy + - blas[build=mkl] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - ccache diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock new file mode 100644 index 0000000000000..bae736681a0cd --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock @@ -0,0 +1,134 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 586dc9008fe85aec80f466d7722fa9f394376fc0e2800044aacd74a7b43df74f +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h28343ad_4.tar.bz2#4a049fc560e00e43151dc51368915fdd +https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_0.tar.bz2#6fb32e979e612fe11fd5e654fc527bb8 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e +https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb +https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_0.tar.bz2#4f0d6c754a21008055d999fa573efa4b +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-h676c864_0.tar.bz2#013524c79f4441281fa1833b703c160a +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h2660328_0_cpython.tar.bz2#0f72b088a5471e97309031e1636e7b3f +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_mkl.tar.bz2#27fda2535874f86f52c0fb382208be76 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_mkl.tar.bz2#a399241e54c43f219e65781995516a1e +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-2_cp310.tar.bz2#9e7160cd0d865e98f6803f1fe15c8b61 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py310hff52083_2.tar.bz2#9d379ec519a1e4cece41bee7a8a0c451 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py310hd8f1fbe_2.tar.bz2#2ac7b943bf7280631348083d516f0d62 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py310h4ef5377_2.tar.bz2#6881d1a459458a4ec9f3c1b44ed024d9 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py310he619898_2.tar.bz2#b4cde935a2ca6c97a6700add567f38ef +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py310hff52083_0.tar.bz2#2fad189c2eae603293c746329510f0ba +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py310hff52083_2.tar.bz2#6ccfe8cf3b03ac083a4928a9e7b2ea9f +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py310hea5193d_1.tar.bz2#664d80ddeb51241629b3ada5ea926e4d +https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 +https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py310hfcd6d55_8.tar.bz2#e7daa09dba0d95a874c3d0a678665e77 +https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py310hfcd6d55_8.tar.bz2#f78e8d66e92e73e8fda274664888b2a2 +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py310hff52083_8.tar.bz2#f75c4f1fe3bd1a15ae0d2e5f33bc75e6 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e 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 new file mode 100644 index 0000000000000..632827cf4c838 --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_conda.lock @@ -0,0 +1,132 @@ +# Generated by conda-lock. +# platform: osx-64 +# input_hash: bafcdf40fe6962b1f903f7cc91e2cd06d481688c80e4bf2d364a50660b97e729 +@EXPLICIT +https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5 +https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2021.10.8-h033912b_0.tar.bz2#bb82d0243db9882b509702ecb69e38f0 +https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hbcb3906_2.tar.bz2#be8f747c37e4d7e346c133e641966750 +https://conda.anaconda.org/conda-forge/osx-64/jbig-2.1-h0d85af4_2003.tar.bz2#4d76d11d3a256931926099498aa3565b +https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-h5eb16cf_1.tar.bz2#9d52137dd3f98b32dee941642901d08f +https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-h5eb16cf_7.tar.bz2#898a296a93b36e42a065963bb4504f2b +https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.3-hc203e6f_0.tar.bz2#169cb4aae14ca89851deda1756b2ebf7 +https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.10-h0d85af4_0.tar.bz2#98a4bf0073c56678453dd86845d3bcc9 +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-9.3.0-h6c81a4c_23.tar.bz2#d66ac79367c179bf53520066430565e8 +https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.16-haf1e3a3_0.tar.bz2#c5fab167412a52e491c8e11453ae016f +https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.2-h0d85af4_1.tar.bz2#052369eda6e13f44b308407c99857f84 +https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.11-h6c3fc93_1014.tar.bz2#49f20ed86f7ed34204be74fbb2868c60 +https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-14.0.3-ha654fa7_0.tar.bz2#321df8a58df1427266e9f9c18af3f7f5 +https://conda.anaconda.org/conda-forge/osx-64/mkl-include-2022.0.0-hf224eb6_782.tar.bz2#fbead6cb1217042b0d05717f61f2369d +https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.3-h96cf925_1.tar.bz2#76217ebfbb163ff2770a261f955a5861 +https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2#addd19059de62181cd11ae8f4ef26084 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.9-h35c211d_0.tar.bz2#c5049997b2e98edfbcdd294582f66281 +https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.3-h35c211d_0.tar.bz2#86ac76d6bf1cbb9621943eb3bd9ae36e +https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.5-haf1e3a3_1.tar.bz2#41116deb499e9bc58048c297d6403ce6 +https://conda.anaconda.org/conda-forge/osx-64/gmp-6.2.1-h2e338ed_0.tar.bz2#dedc96914428dae572a39e69ee2a392f +https://conda.anaconda.org/conda-forge/osx-64/isl-0.22.1-hb1e8313_2.tar.bz2#d875acf04fcf1e4d5f3e179e0799363d +https://conda.anaconda.org/conda-forge/osx-64/lerc-3.0-he49afe7_0.tar.bz2#a1d21f85e4b0d5e27a88ecab5e3961da +https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.0.9-h5eb16cf_7.tar.bz2#2f53da3dfe9d14ef4666ad2558df8615 +https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.0.9-h5eb16cf_7.tar.bz2#16993c3cd38b5ad4980b0934ac308ef6 +https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-9.3.0-h6c81a4c_23.tar.bz2#a6956ceb628b14594613cefee5127a7a +https://conda.anaconda.org/conda-forge/osx-64/libllvm13-13.0.1-h64f94b2_2.tar.bz2#bac1c6f12f44f40e19274e6e04e9bad5 +https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.13-h0d85af4_1004.tar.bz2#eb7860935e14aec936065cbc21a1a962 +https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.3-he49afe7_1.tar.bz2#05c08241b66631c00ca4f9e0b75320bc +https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1o-hfe4f2af_0.tar.bz2#655048e118f0b7029e5c216a1d7a6189 +https://conda.anaconda.org/conda-forge/osx-64/readline-8.1-h05e3726_0.tar.bz2#2832e9b6a7caa7cb192fcda6cfcd8871 +https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2#f9ff42ccf809a21ba6f8607f8de36108 +https://conda.anaconda.org/conda-forge/osx-64/tbb-2021.5.0-hbb4e6a2_1.tar.bz2#b83feb61bdbc393ba05a1b7626c4fcf0 +https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2#8e9480d9c47061db2ed1b4ecce519a7f +https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.11-h6c3fc93_1014.tar.bz2#98b82f6a8de694bc6259f2d1a69bc02b +https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-h5eb16cf_7.tar.bz2#6ae0a8419a03d0d9675f319bef66d3aa +https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp13-13.0.1-default_he082bbe_0.tar.bz2#88cccadb3e9824f6859e605ad64c526c +https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-9_3_0_h6c81a4c_23.tar.bz2#60f48cef2d50674e0428c5579b6c3f66 +https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h7cec526_2.tar.bz2#9e52521faba2b53269672628d34e1513 +https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-13.0.1-h64f94b2_2.tar.bz2#38b9526e6cc69b7e0a358771ddb02874 +https://conda.anaconda.org/conda-forge/osx-64/mkl-2022.0.0-h89fa619_782.tar.bz2#c66ac5ac447afe4c64b832b72ec6eb88 +https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da +https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h57ddcff_0.tar.bz2#e0dcb354df4ad4f79539d57e4f8ec1bd +https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.38.5-hd9f0692_0.tar.bz2#258c39c5e2eff8b8b29d1a027e4e1b5a +https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-h582d3a0_0.tar.bz2#df9ed22d1725b8fecaede2d579fd6bc4 +https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-h5eb16cf_7.tar.bz2#d3320319f06d6adb52ed01e1839475a1 +https://conda.anaconda.org/conda-forge/osx-64/clang-13-13.0.1-default_he082bbe_0.tar.bz2#ffb3d690ddae0b4f601fb937187e38e1 +https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 +https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-hd77a64a_10.tar.bz2#22ac1feaffbec04061468d823d8b6491 +https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-14_osx64_mkl.tar.bz2#c9505f8e11836aac300706d24a0ecc38 +https://conda.anaconda.org/conda-forge/osx-64/libhiredis-1.0.2-h2beb688_0.tar.bz2#524282b2c46c9dedf051b3bc2ae05494 +https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.3.0-h17f2ce3_3.tar.bz2#8a2611163920a17b13a1325bb70d7293 +https://conda.anaconda.org/conda-forge/osx-64/mkl-devel-2022.0.0-h694c41f_783.tar.bz2#d2ef72a35e1ac30e817ead1fe5720f03 +https://conda.anaconda.org/conda-forge/osx-64/mpc-1.2.1-hbb51d92_0.tar.bz2#9f46d6ad4c460679ee997abc10da3bac +https://conda.anaconda.org/conda-forge/osx-64/python-3.10.4-h8b4d769_0_cpython.tar.bz2#62ebdb09c27c4cd4bcc84c6a283cb6cb +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/osx-64/ccache-4.5.1-hfceccdb_0.tar.bz2#183d1dd5b0655fbfa29c7cabcc9fdcca +https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h2b735b3_10.tar.bz2#d1d89125c6030d675607a15405d428fe +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/osx-64/clang-13.0.1-h694c41f_0.tar.bz2#d11f9dc9b90ae4b55f501bdf2784d3c0 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-9.3.0-h9cc0e5e_23.tar.bz2#e906ccf40e156c6aa1e7804a1db4b849 +https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b +https://conda.anaconda.org/conda-forge/osx-64/ld64-609-h54cff87_10.tar.bz2#deec546e1bb2b5439002ad45aa39d307 +https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-14_osx64_mkl.tar.bz2#3f6dcac8db8e959489338d3718b39a51 +https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-14_osx64_mkl.tar.bz2#b35a77c4ab5b7af5981a57de2da9ebe0 +https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.2.2-h28dabe5_0.tar.bz2#6aa31e81854e3172dae89300ae9a5444 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.4.0-h6e7aa92_1.tar.bz2#c8cbb6d99f6467246ac26a139256e50f +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.10-2_cp310.tar.bz2#502ca4a8b43b424316f380d864832877 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-hfc3f419_10.tar.bz2#e4bb0705030f1ad5d36645797182a601 +https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py310h2ec42d9_2.tar.bz2#18104c0f017253a9abf3201ae152d4e7 +https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py310hcc37b68_0.tar.bz2#bca69dbd12cea5ae0dc298fc58a3c4ee +https://conda.anaconda.org/conda-forge/osx-64/clangxx-13.0.1-default_he082bbe_0.tar.bz2#2c7017821fa3d741405ab4c4da24ff54 +https://conda.anaconda.org/conda-forge/osx-64/coverage-6.2-py310he24745e_0.tar.bz2#a715a002d748aa32fe3ce650886061e3 +https://conda.anaconda.org/conda-forge/osx-64/cython-0.29.28-py310h9d931ec_2.tar.bz2#192ab2dcf7e12fefc859f5ef57880781 +https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.2-py310h6be76da_1.tar.bz2#ac3944d0ad3b024c448a5b40f0a56acb +https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.9.0-14_osx64_mkl.tar.bz2#1d72bf3f74d97964eed152b28012924a +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.22.3-py310he1f95b8_2.tar.bz2#96e91eef3b843626d498c793f81e6581 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.0-py310h382dc3b_2.tar.bz2#64546d1e457fb9d0d62caf408611ced6 +https://conda.anaconda.org/conda-forge/osx-64/pluggy-1.0.0-py310h2ec42d9_3.tar.bz2#b2349ab9b4c83ae573a6985f728e5f37 +https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py310h2ec42d9_5.tar.bz2#8b7a82347d1ed70878126333339f4969 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.2.0-py310h2ec42d9_0.tar.bz2#b361f098d343fa2d7c7ad01ac77cd7a1 +https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py310h1961e1f_3.tar.bz2#84d43324014a93910f008ada676ca542 +https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py310h1961e1f_1.tar.bz2#3fe48797c02b3b467efd4d9bc53d1624 +https://conda.anaconda.org/conda-forge/osx-64/blas-devel-3.9.0-14_osx64_mkl.tar.bz2#e0784569bc28feea5a24b9c469001407 +https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py310h1961e1f_1004.tar.bz2#e84bd2f66966aa51356dfe14ef887e42 +https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-13.0.1-hd3f61c9_0.tar.bz2#d744aae4a8e003c1fd2a1d3d757bd628 +https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.2-py310hd6fa1ae_1.tar.bz2#bcfbed5cb8f4d32c024194f3e93aefa3 +https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.33.3-py310h6c45266_0.tar.bz2#71ce94a99d1efe13d3ded06770d07127 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/osx-64/pandas-1.4.2-py310h514ec25_1.tar.bz2#95fc16c001a0cc46c60933b7b3aebd65 +https://conda.anaconda.org/conda-forge/osx-64/pytest-6.2.5-py310h2ec42d9_2.tar.bz2#bea18ab864d7aa15be892c76c083e203 +https://conda.anaconda.org/conda-forge/osx-64/scipy-1.8.0-py310h47774c9_1.tar.bz2#c463c43c2d05bf8c09e29145488b8f68 +https://conda.anaconda.org/conda-forge/osx-64/blas-2.114-mkl.tar.bz2#b3c52c1eb378cf480ad1366367078a7f +https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-13.0.1-he01351e_0.tar.bz2#e30fcb14e68727908484468c4fd35ede +https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.2-py310h4510841_0.tar.bz2#fd973aaf25d1e82d67ce4d87f7aad060 +https://conda.anaconda.org/conda-forge/osx-64/pyamg-4.2.3-py310h84c6d00_0.tar.bz2#2e0bb5228d595052b8a67d5baa643c67 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_0.tar.bz2#ec59e1b93ba4d35a69d5736119cdb9af +https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.2-py310h2ec42d9_0.tar.bz2#55c15bc829a216804a0fe2aabe9294e6 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.4.2-had99412_0.tar.bz2#2e89dc235b304e25307378efec943f50 +https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_0.tar.bz2#f4e177067a007d024b22c80fb2a85f91 +https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-9.3.0-h18f7dce_15.tar.bz2#48f985e599ff223cd8acea3595d2cbe5 +https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 +https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.4.2-h1b54a9f_0.tar.bz2#7a72e1003218550251de458140635999 +https://conda.anaconda.org/conda-forge/osx-64/gfortran-9.3.0-h768ea0c_15.tar.bz2#de56b2cd45db24c02bcc0463643e03a6 +https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.4.2-h373f3de_0.tar.bz2#d14368828e3766dfc3b072e275c50c7d +https://conda.anaconda.org/conda-forge/osx-64/compilers-1.4.2-h694c41f_0.tar.bz2#40ad9bf1a937232adba976dab26c65a6 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml new file mode 100644 index 0000000000000..bf6f5caad40ef --- /dev/null +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml @@ -0,0 +1,25 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python + - numpy + - blas[build=mkl] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage=6.2 + - ccache + - compilers + - llvm-openmp diff --git a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml new file mode 100644 index 0000000000000..6838c1ccb78b6 --- /dev/null +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml @@ -0,0 +1,23 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - defaults +dependencies: + - python + - numpy + - blas[build=mkl] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage=6.2 + - ccache 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 new file mode 100644 index 0000000000000..f6afc0d45e199 --- /dev/null +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_osx-64_conda.lock @@ -0,0 +1,82 @@ +# Generated by conda-lock. +# platform: osx-64 +# input_hash: f786ff160250fc554d701b3e70cd9eaafcb72add6786ac73f19a8face11482f2 +@EXPLICIT +https://repo.anaconda.com/pkgs/main/osx-64/blas-1.0-mkl.conda#cb2c87e85ac8e0ceae776d26d4214c8a +https://repo.anaconda.com/pkgs/main/osx-64/ca-certificates-2022.4.26-hecd8cb5_0.conda#dd4c1cfc3606b56486f7af0a99e80fa3 +https://repo.anaconda.com/pkgs/main/osx-64/giflib-5.2.1-haf1e3a3_0.conda#0c36d6800a1a0f0ae244699a09d3f982 +https://repo.anaconda.com/pkgs/main/osx-64/intel-openmp-2021.4.0-hecd8cb5_3538.conda#65e79d0ffef79cbb8ebd3c71e74eb50a +https://repo.anaconda.com/pkgs/main/osx-64/jpeg-9e-hca72f7f_0.conda#99b7d820514a0c07818d58c320ab21fc +https://repo.anaconda.com/pkgs/main/osx-64/libcxx-12.0.0-h2f01273_0.conda#fa697ecaca74bdf72bd0a10e42a2287a +https://repo.anaconda.com/pkgs/main/osx-64/libgfortran-3.0.1-h93005f0_2.conda#2f6d6d3c7a46ff214a5a1a8991af9bef +https://repo.anaconda.com/pkgs/main/osx-64/libwebp-base-1.2.2-hca72f7f_0.conda#029b8fce196d53c93af17512f6f606d8 +https://repo.anaconda.com/pkgs/main/osx-64/ncurses-6.3-hca72f7f_2.conda#32896581ee96215797b753884720e581 +https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 +https://repo.anaconda.com/pkgs/main/osx-64/xz-5.2.5-hca72f7f_1.conda#bb093b4af8f53670468795e5f12676e5 +https://repo.anaconda.com/pkgs/main/osx-64/zlib-1.2.12-h4dc903c_2.conda#4264c14bdd0bd302b0232cb65f3ee275 +https://repo.anaconda.com/pkgs/main/osx-64/brotli-1.0.9-hb1e8313_2.conda#47c6f0f0789dc3b0c350e2f6caac3ebc +https://repo.anaconda.com/pkgs/main/osx-64/ccache-3.7.9-hf120daa_0.conda#a01515a32e721c51d631283f991bc8ea +https://repo.anaconda.com/pkgs/main/osx-64/libffi-3.3-hb1e8313_2.conda#0c959d444ac65555cb836cdbd3e9a2d9 +https://repo.anaconda.com/pkgs/main/osx-64/libpng-1.6.37-ha441bb4_0.conda#d69245a20ec59d8dc534c65308607129 +https://repo.anaconda.com/pkgs/main/osx-64/lz4-c-1.9.3-h23ab428_1.conda#dc70fec3978d3189741886cc05fcb145 +https://repo.anaconda.com/pkgs/main/osx-64/mkl-2021.4.0-hecd8cb5_637.conda#07d14ece4a852cefa17c1c156db8134e +https://repo.anaconda.com/pkgs/main/osx-64/openssl-1.1.1o-hca72f7f_0.conda#2b44a8f7a0051ffbc4814e9f99114222 +https://repo.anaconda.com/pkgs/main/osx-64/readline-8.1.2-hca72f7f_1.conda#c54a6153e7ef82f55e7a0ae2f6749592 +https://repo.anaconda.com/pkgs/main/osx-64/tk-8.6.11-h3fd3227_1.conda#30fd8466573613aadae5fe013306b51b +https://repo.anaconda.com/pkgs/main/osx-64/freetype-2.11.0-hd8bbffd_0.conda#a06dcb72dc6961d37f280b4b97d74f43 +https://repo.anaconda.com/pkgs/main/osx-64/sqlite-3.38.3-h707629a_0.conda#5d3e2867383881b9227ee3aba91cd52d +https://repo.anaconda.com/pkgs/main/osx-64/zstd-1.4.9-h322a384_0.conda#bc8c39208f4e8205c729683dcfa7e95e +https://repo.anaconda.com/pkgs/main/osx-64/libtiff-4.2.0-h87d7836_0.conda#32cded0d1900a09a8fefdeda35e0de1c +https://repo.anaconda.com/pkgs/main/osx-64/python-3.9.12-hdfd78df_0.conda#cee6193364c53d83006ed4c6398b3a84 +https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e +https://repo.anaconda.com/pkgs/main/osx-64/certifi-2021.10.8-py39hecd8cb5_2.conda#702c7c377935b139ba90a2e676a348d5 +https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 +https://repo.anaconda.com/pkgs/main/osx-64/coverage-6.2-py39hca72f7f_0.conda#55962a70ebebc8de15c4e1d745b20cdd +https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab +https://repo.anaconda.com/pkgs/main/osx-64/cython-0.29.28-py39he9d5cce_0.conda#ebbe0186b64db68fa2625b75ebd825b1 +https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895937671af67cebb8af617494b3513 +https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a +https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 +https://repo.anaconda.com/pkgs/main/noarch/joblib-1.1.0-pyhd3eb1b0_0.conda#cae25b839f3b24686e683addde01b742 +https://repo.anaconda.com/pkgs/main/osx-64/kiwisolver-1.3.2-py39he9d5cce_0.conda#65b97fa4e8b5705e891b923a06516bfd +https://repo.anaconda.com/pkgs/main/osx-64/lcms2-2.12-hf1fd2bf_0.conda#697aba7a3308226df7a93ccfeae16ffa +https://repo.anaconda.com/pkgs/main/osx-64/libwebp-1.2.2-h56c3ce4_0.conda#027d2450b64e251b8169798f6121b47a +https://repo.anaconda.com/pkgs/main/noarch/munkres-1.1.4-py_0.conda#148362ba07f92abab76999a680c80084 +https://repo.anaconda.com/pkgs/main/osx-64/pluggy-1.0.0-py39hecd8cb5_1.conda#c5507133514846cc5f54dc4de9ba1563 +https://repo.anaconda.com/pkgs/main/noarch/py-1.11.0-pyhd3eb1b0_0.conda#7205a898ed2abbf6e9b903dff6abe08e +https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda#135a72ff2a31150a3a3ff0b1edd41ca9 +https://repo.anaconda.com/pkgs/main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda#6bca2ae9c9aae9ccdebcb8cf2aa87cb3 +https://repo.anaconda.com/pkgs/main/osx-64/pysocks-1.7.1-py39hecd8cb5_0.conda#4765ca1a39ea5287cbe170734ac83e37 +https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda#76415b791ffd2007687ac5f0665aa7af +https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 +https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 +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.1-py39h9ed2024_0.conda#3d060362ebceec33851e3b9369d5d502 +https://repo.anaconda.com/pkgs/main/osx-64/cffi-1.15.0-py39hc55c11b_1.conda#eecfc04a444eaefdf128199499b2c2e0 +https://repo.anaconda.com/pkgs/main/noarch/fonttools-4.25.0-pyhd3eb1b0_0.conda#bb9c5b5a6d892fca5efe4bf0203b6a48 +https://repo.anaconda.com/pkgs/main/osx-64/mkl-service-2.4.0-py39h9ed2024_0.conda#68ed4da109042256b78f9c46537bd2a3 +https://repo.anaconda.com/pkgs/main/noarch/packaging-21.3-pyhd3eb1b0_0.conda#07bbfbb961db7fa329cc42716943ea62 +https://repo.anaconda.com/pkgs/main/osx-64/pillow-9.0.1-py39hde71d04_0.conda#f7246dddf696bc3fb0c953f62425c3d5 +https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.conda#211ee00320b08a1ac9fea6677649f6c9 +https://repo.anaconda.com/pkgs/main/osx-64/setuptools-61.2.0-py39hecd8cb5_0.conda#e262d518e990f236ada779f23d58ed18 +https://repo.anaconda.com/pkgs/main/osx-64/brotlipy-0.7.0-py39h9ed2024_1003.conda#a08f6f5f899aff4a07351217b36fae41 +https://repo.anaconda.com/pkgs/main/osx-64/cryptography-37.0.1-py39hf6deb26_0.conda#5f4c90fdfd8a45bc7060dbc3b65f025a +https://repo.anaconda.com/pkgs/main/osx-64/numpy-base-1.21.5-py39h3b1a694_2.conda#40a831ef5bc18c617f72d6ca2df74486 +https://repo.anaconda.com/pkgs/main/osx-64/pytest-6.2.5-py39hecd8cb5_2.conda#69fc26ab7be8e3e94bc67bd80a01dd66 +https://repo.anaconda.com/pkgs/main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda#1dbbf9422269cd62c7094960d9b43f36 +https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#bbdaac2947f507399816d509107945c2 +https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 +https://repo.anaconda.com/pkgs/main/noarch/pytest-xdist-2.5.0-pyhd3eb1b0_0.conda#d15cdc4207bcf8ca920822597f1d138d +https://repo.anaconda.com/pkgs/main/osx-64/urllib3-1.26.9-py39hecd8cb5_0.conda#7dab8b6edc90f7dc6e83e0c3d9c69432 +https://repo.anaconda.com/pkgs/main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda#9b593f86737e69140c47c2107ecf277c +https://repo.anaconda.com/pkgs/main/noarch/codecov-2.1.11-pyhd3eb1b0_0.conda#83a743cc928162d53d4066c43468b2c7 +https://repo.anaconda.com/pkgs/main/osx-64/bottleneck-1.3.4-py39h67323c0_0.conda#8da674eeda1069663e69f0b112232ffb +https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-3.5.1-py39hecd8cb5_1.conda#7a58b76a491c78d0be87c83f63a36d02 +https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-base-3.5.1-py39hfb0c5b7_1.conda#999c6f2f8542a0dd322f97c94de45a63 +https://repo.anaconda.com/pkgs/main/osx-64/mkl_fft-1.3.1-py39h4ab4a9b_0.conda#f947c9a1c65da729963b3035c219ba10 +https://repo.anaconda.com/pkgs/main/osx-64/mkl_random-1.2.2-py39hb2f4e1b_0.conda#1bc33de45069ad534182ca92e616ec7e +https://repo.anaconda.com/pkgs/main/osx-64/numpy-1.21.5-py39h2e5f0a9_2.conda#d2a2edaa119ee8dedfbd35a041d8f3b7 +https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.1-py39h2e5f0a9_0.conda#d7c50238e03c12077f70591771c4ce68 +https://repo.anaconda.com/pkgs/main/osx-64/scipy-1.7.3-py39h8c7af03_0.conda#de2900b6122e1417d2f79f0266f700e9 +https://repo.anaconda.com/pkgs/main/osx-64/pandas-1.4.2-py39he9d5cce_0.conda#9513b1735fc6feabfb647c545a5be53a +https://repo.anaconda.com/pkgs/main/osx-64/pyamg-4.1.0-py39h1341a74_0.conda#9c560e676ee6f9f26b05f94ffda599d8 diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml new file mode 100644 index 0000000000000..ae2503503daae --- /dev/null +++ b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml @@ -0,0 +1,28 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - defaults +dependencies: + - python=3.9 + - ccache + - pip + - pip: + - numpy + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest==6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage==6.2 + - sphinx + - numpydoc + - lightgbm + - scikit-image 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 new file mode 100644 index 0000000000000..b75659b1e59f1 --- /dev/null +++ b/build_tools/azure/pylatest_pip_openblas_pandas_linux-64_conda.lock @@ -0,0 +1,86 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 5dc59d462d7953439da4b033dbb144e84f4b8c6f5ab63fa17195d6336914ee75 +@EXPLICIT +https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 +https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc +https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 +https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e +https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 +https://repo.anaconda.com/pkgs/main/linux-64/python-3.9.12-h12debd9_0.conda#24e7b6490961f6e3dd7fa3ba24c9302f +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.10.8-py39h06a4308_2.conda#471b9268be2134d5e875de762b71d922 +https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py39h06a4308_0.conda#720869dc83cf20f2167fb12e7a54ebaa +https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74bcf27ebb94020ea1c838279382cadf +# pip alabaster @ https://files.pythonhosted.org/packages/10/ad/00b090d23a222943eb0eda509720a404f531a439e803f6538f35136cae9e/alabaster-0.7.12-py2.py3-none-any.whl#md5=None +# pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None +# pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None +# pip cycler @ https://files.pythonhosted.org/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl#md5=None +# pip cython @ https://files.pythonhosted.org/packages/9a/26/d2b6bc4cb7d716c82ebc89690cbd5ba0f547db364809cd42dad34d593182/Cython-0.29.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl#md5=None +# pip docutils @ https://files.pythonhosted.org/packages/4c/5e/6003a0d1f37725ec2ebd4046b657abb9372202655f96e76795dca8c0063c/docutils-0.17.1-py2.py3-none-any.whl#md5=None +# pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None +# pip fonttools @ https://files.pythonhosted.org/packages/2f/85/2f6e42fb4b537b9998835410578fb1973175b81691e9a82ab6668cf64b0b/fonttools-4.33.3-py3-none-any.whl#md5=None +# pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None +# pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None +# pip iniconfig @ https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl#md5=None +# pip joblib @ https://files.pythonhosted.org/packages/3e/d5/0163eb0cfa0b673aa4fe1cd3ea9d8a81ea0f32e50807b0c295871e4aab2e/joblib-1.1.0-py2.py3-none-any.whl#md5=None +# pip kiwisolver @ https://files.pythonhosted.org/packages/f6/13/2a187e2280251f5c035da46e1706d4c8bd6ccc9f34e88c298cffbc5ba793/kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip markupsafe @ https://files.pythonhosted.org/packages/df/06/c515c5bc43b90462e753bc768e6798193c6520c9c7eb2054c7466779a9db/MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip networkx @ https://files.pythonhosted.org/packages/df/04/416751fe793a10a9b1c786d8dd93b80190ae745b3c9cb847c8f84fd119c2/networkx-2.8-py3-none-any.whl#md5=None +# pip numpy @ https://files.pythonhosted.org/packages/25/2f/811ad95effd790cd13cdea494e1cd7520ebc3bf049c3e88c3ca4ba8175c5/numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pillow @ https://files.pythonhosted.org/packages/15/37/45ad6041473ebb803d0bb265cf7e749c4838dc48c3335a03e63d6aad07d8/Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None +# pip py @ https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl#md5=None +# pip pygments @ https://files.pythonhosted.org/packages/5c/8e/1d9017950034297fffa336c72e693a5b51bbf85141b24a763882cf1977b5/Pygments-2.12.0-py3-none-any.whl#md5=None +# pip pyparsing @ https://files.pythonhosted.org/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl#md5=None +# pip pytz @ https://files.pythonhosted.org/packages/60/2e/dec1cc18c51b8df33c7c4d0a321b084cf38e1733b98f9d15018880fb4970/pytz-2022.1-py2.py3-none-any.whl#md5=None +# pip six @ https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl#md5=None +# pip snowballstemmer @ https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-applehelp @ https://files.pythonhosted.org/packages/dc/47/86022665a9433d89a66f5911b558ddff69861766807ba685de2e324bd6ed/sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-devhelp @ https://files.pythonhosted.org/packages/c5/09/5de5ed43a521387f18bdf5f5af31d099605c992fd25372b2b9b825ce48ee/sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-htmlhelp @ https://files.pythonhosted.org/packages/63/40/c854ef09500e25f6432dcbad0f37df87fd7046d376272292d8654cc71c95/sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-jsmath @ https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-qthelp @ https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None +# pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None +# pip toml @ https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#md5=None +# pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None +# pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None +# pip zipp @ https://files.pythonhosted.org/packages/80/0e/16a7ee38617aab6a624e95948d314097cc2669edae9b02ded53309941cfc/zipp-3.8.0-py3-none-any.whl#md5=None +# pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None +# pip coverage @ https://files.pythonhosted.org/packages/d2/41/87d1e548a0418b24cff9c60815ea2cc2d0e0cd4891337a24236a30a1d141/coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip imageio @ https://files.pythonhosted.org/packages/b0/bc/2d9b381b00aaf19233ddc3468d3e0b98e70531873c19dab8a89a3b9b3051/imageio-2.19.1-py3-none-any.whl#md5=None +# pip importlib-metadata @ https://files.pythonhosted.org/packages/92/f2/c48787ca7d1e20daa185e1b6b2d4e16acd2fb5e0320bc50ffc89b91fa4d7/importlib_metadata-4.11.3-py3-none-any.whl#md5=None +# pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None +# pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None +# pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None +# pip pywavelets @ https://files.pythonhosted.org/packages/45/fd/1ad6a2c2b9f16d684c8a21e92455885891b38c703b39f13916971e9ee8ff/PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None +# pip scipy @ https://files.pythonhosted.org/packages/b8/51/6a058c1c742c8365399c93685a5b3c4f9c39389957189725738954c427a0/scipy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip tifffile @ https://files.pythonhosted.org/packages/19/b7/30d7af4c25985be3852dccd99f15a2003a81bc8f287d57704619fed006ec/tifffile-2022.5.4-py3-none-any.whl#md5=None +# pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None +# pip pandas @ https://files.pythonhosted.org/packages/35/ad/616c27cade647c2a1513343c72c095146cf3e7a72ace6582574a334fb525/pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pyamg @ https://files.pythonhosted.org/packages/8e/08/d512b6e34d502152723b5a4ad9d962a6141dfe83cd8bcd01af4cb6e84f28/pyamg-4.2.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip pytest @ https://files.pythonhosted.org/packages/40/76/86f886e750b81a4357b6ed606b2bcf0ce6d6c27ad3c09ebf63ed674fc86e/pytest-6.2.5-py3-none-any.whl#md5=None +# pip scikit-image @ https://files.pythonhosted.org/packages/b4/56/eed15f4aa01169db761d60552be8f3ff2d46ce587a2faade03a330afc311/scikit_image-0.19.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip scikit-learn @ https://files.pythonhosted.org/packages/57/aa/483fbe6b5314bce2d49801e6cec1f2139a9c220d0d51494788fff47233b3/scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip setuptools-scm @ https://files.pythonhosted.org/packages/e3/e5/c28b544051340e63e0d507eb893c9513d3a300e5e9183e2990518acbfe36/setuptools_scm-6.4.2-py3-none-any.whl#md5=None +# pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None +# pip lightgbm @ https://files.pythonhosted.org/packages/a1/00/84c572ff02b27dd828d6095158f4bda576c124c4c863be7bf14f58101e53/lightgbm-3.3.2-py3-none-manylinux1_x86_64.whl#md5=None +# pip matplotlib @ https://files.pythonhosted.org/packages/e1/81/0a73fe71098683a1f73243f18f419464ec109acae16811bf29c5d0dc173e/matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl#md5=None +# pip numpydoc @ https://files.pythonhosted.org/packages/38/66/04aa44cdc48010317f473b47003045078b083201af68b9c5a110e19444e3/numpydoc-1.3.1-py3-none-any.whl#md5=None +# pip pytest-cov @ https://files.pythonhosted.org/packages/20/49/b3e0edec68d81846f519c602ac38af9db86e1e71275528b3e814ae236063/pytest_cov-3.0.0-py3-none-any.whl#md5=None +# pip pytest-forked @ https://files.pythonhosted.org/packages/0c/36/c56ef2aea73912190cdbcc39aaa860db8c07c1a5ce8566994ec9425453db/pytest_forked-1.4.0-py3-none-any.whl#md5=None +# pip pytest-xdist @ https://files.pythonhosted.org/packages/21/08/b1945d4b4986eb1aa10cf84efc5293bba39da80a2f95db3573dd90678408/pytest_xdist-2.5.0-py3-none-any.whl#md5=None diff --git a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml new file mode 100644 index 0000000000000..1a6498fa7a511 --- /dev/null +++ b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml @@ -0,0 +1,19 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - defaults +dependencies: + - python + - ccache + - pip + - pip: + - threadpoolctl + - pytest==6.2.5 + - pytest-xdist + - codecov + - pytest-cov + - coverage==6.2 + - sphinx + - numpydoc + - python-dateutil 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 new file mode 100644 index 0000000000000..db3519835558e --- /dev/null +++ b/build_tools/azure/pylatest_pip_scipy_dev_linux-64_conda.lock @@ -0,0 +1,67 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: dd32840a183f1bada4c6163996c4b5bb86af284e34b0dc41a4b432e4804ad611 +@EXPLICIT +https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 +https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/bzip2-1.0.8-h7b6447c_0.conda#9303f4af7c004e069bae22bde8d800ee +https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c +https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc +https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 +https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e +https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 +https://repo.anaconda.com/pkgs/main/linux-64/python-3.10.4-h12debd9_0.tar.bz2#f931504bb2eeaf18f20388fd0ad44be4 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.5.30-py310h06a4308_0.conda#803b97c2b3265bd360e303e133352b31 +https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 +https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py310h06a4308_0.conda#1f43427d7c045e63786e0bb79084cf70 +https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4e2586f845008770fa152082c04b27c +# pip alabaster @ https://files.pythonhosted.org/packages/10/ad/00b090d23a222943eb0eda509720a404f531a439e803f6538f35136cae9e/alabaster-0.7.12-py2.py3-none-any.whl#md5=None +# pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None +# pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None +# pip docutils @ https://files.pythonhosted.org/packages/4c/5e/6003a0d1f37725ec2ebd4046b657abb9372202655f96e76795dca8c0063c/docutils-0.17.1-py2.py3-none-any.whl#md5=None +# pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None +# pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None +# pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None +# pip iniconfig @ https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl#md5=None +# pip markupsafe @ https://files.pythonhosted.org/packages/9e/82/2e089c6f34e77c073aa5a67040d368aac0dfb9b8ccbb46d381452c26fc33/MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None +# pip py @ https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl#md5=None +# pip pygments @ https://files.pythonhosted.org/packages/5c/8e/1d9017950034297fffa336c72e693a5b51bbf85141b24a763882cf1977b5/Pygments-2.12.0-py3-none-any.whl#md5=None +# pip pyparsing @ https://files.pythonhosted.org/packages/6c/10/a7d0fa5baea8fe7b50f448ab742f26f52b80bfca85ac2be9d35cdd9a3246/pyparsing-3.0.9-py3-none-any.whl#md5=None +# pip pytz @ https://files.pythonhosted.org/packages/60/2e/dec1cc18c51b8df33c7c4d0a321b084cf38e1733b98f9d15018880fb4970/pytz-2022.1-py2.py3-none-any.whl#md5=None +# pip six @ https://files.pythonhosted.org/packages/d9/5a/e7c31adbe875f2abbb91bd84cf2dc52d792b5a01506781dbcf25c91daf11/six-1.16.0-py2.py3-none-any.whl#md5=None +# pip snowballstemmer @ https://files.pythonhosted.org/packages/ed/dc/c02e01294f7265e63a7315fe086dd1df7dacb9f840a804da846b96d01b96/snowballstemmer-2.2.0-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-applehelp @ https://files.pythonhosted.org/packages/dc/47/86022665a9433d89a66f5911b558ddff69861766807ba685de2e324bd6ed/sphinxcontrib_applehelp-1.0.2-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-devhelp @ https://files.pythonhosted.org/packages/c5/09/5de5ed43a521387f18bdf5f5af31d099605c992fd25372b2b9b825ce48ee/sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-htmlhelp @ https://files.pythonhosted.org/packages/63/40/c854ef09500e25f6432dcbad0f37df87fd7046d376272292d8654cc71c95/sphinxcontrib_htmlhelp-2.0.0-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-jsmath @ https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-qthelp @ https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl#md5=None +# pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None +# pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None +# pip toml @ https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#md5=None +# pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None +# pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None +# pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None +# pip coverage @ https://files.pythonhosted.org/packages/da/64/468ca923e837285bd0b0a60bd9a287945d6b68e325705b66b368c07518b1/coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None +# pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None +# pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None +# pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None +# pip pytest @ https://files.pythonhosted.org/packages/40/76/86f886e750b81a4357b6ed606b2bcf0ce6d6c27ad3c09ebf63ed674fc86e/pytest-6.2.5-py3-none-any.whl#md5=None +# pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None +# pip numpydoc @ https://files.pythonhosted.org/packages/38/66/04aa44cdc48010317f473b47003045078b083201af68b9c5a110e19444e3/numpydoc-1.3.1-py3-none-any.whl#md5=None +# pip pytest-cov @ https://files.pythonhosted.org/packages/20/49/b3e0edec68d81846f519c602ac38af9db86e1e71275528b3e814ae236063/pytest_cov-3.0.0-py3-none-any.whl#md5=None +# pip pytest-forked @ https://files.pythonhosted.org/packages/0c/36/c56ef2aea73912190cdbcc39aaa860db8c07c1a5ce8566994ec9425453db/pytest_forked-1.4.0-py3-none-any.whl#md5=None +# pip pytest-xdist @ https://files.pythonhosted.org/packages/21/08/b1945d4b4986eb1aa10cf84efc5293bba39da80a2f95db3573dd90678408/pytest_xdist-2.5.0-py3-none-any.whl#md5=None diff --git a/build_tools/azure/pypy3_environment.yml b/build_tools/azure/pypy3_environment.yml new file mode 100644 index 0000000000000..0929f6e545e7d --- /dev/null +++ b/build_tools/azure/pypy3_environment.yml @@ -0,0 +1,18 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - pypy + - numpy + - blas[build=openblas] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pyamg + - pytest=6.2.5 + - pytest-xdist + - ccache diff --git a/build_tools/azure/pypy3_linux-64_conda.lock b/build_tools/azure/pypy3_linux-64_conda.lock new file mode 100644 index 0000000000000..7248bb349c3ae --- /dev/null +++ b/build_tools/azure/pypy3_linux-64_conda.lock @@ -0,0 +1,96 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: 94016e30d582c2990f92c497c222a6b4c3e5510c7567b0dd47c7b8bb44df83ad +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e +https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 +https://conda.anaconda.org/conda-forge/linux-64/gdbm-1.18-h0a1914f_2.tar.bz2#b77bc399b07a19c00fe12fdc95ee0297 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/pypy3.7-7.3.7-h24b73cb_3.tar.bz2#b48b2037293953ac936b2a7dd61f111a +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.7-2_pypy37_pp73.tar.bz2#768e358541ec4abb2a3f4300e6caf4a9 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 +https://conda.anaconda.org/conda-forge/linux-64/python-3.7.12-0_73_pypy.tar.bz2#0718ea16c32e9f500f471713a4b3d5a7 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py37h9c2f6ca_1.tar.bz2#c34a43aefed7c093e459890232dbb58b +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py37h2ca511a_1.tar.bz2#d04698a9e465c7f6d63d3bef13493a85 +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.21.5-py37h18e8e3d_0.tar.bz2#f9c1534d421ac008ccdeec21b3c6f825 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py37h5350b5b_0.tar.bz2#9d0446d35e6668166abdd1123a7c8881 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/noarch/pypy-7.3.7-0_pypy37.tar.bz2#bea1f6f8d946aafd6ed814c84db3ef99 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-61.2.0-py37h9c2f6ca_0.tar.bz2#628b5ca5eb44eda9028ad710bae81e33 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py37h6b43d8f_2.tar.bz2#2027d768b9cd13e9738e0856aba431ca +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.2.0-pyha770c72_1.tar.bz2#f0f7e024f94e23d3bfee0ab777bf335a +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py37h6b43d8f_0.tar.bz2#0abe97867cd8e0bd2ca5092f5d7ada85 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.31.2-py37h0313132_0.tar.bz2#97ce82afb9d0ccfcad3bd775ce9b8eac +https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.3-py37h9c2f6ca_0.tar.bz2#2ecfd05cf475affe93c3abb820d5a353 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py37ha768fb6_0.tar.bz2#02658efbe18de3c92c6a18e568fae544 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.2.0-hd8ed1ab_1.tar.bz2#6d9d7480c5780514779967be2ee8b963 +https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.11.3-hd8ed1ab_1.tar.bz2#bd6b6ae37c03e68061574d5e32fe5bd1 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py37h506a98e_0.tar.bz2#6e29b82c7ac67717d9e6c834e0760efe +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py37h1903001_0.tar.bz2#fa07775fa3ba272a9edaf38bca8581b8 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py37he341ac4_0.tar.bz2#1b13b927abe70400d6b9c71ac69fed15 +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py37h9c2f6ca_2.tar.bz2#01f62860cfd125f2d103146495ae6312 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py37h9c2f6ca_0.tar.bz2#a9050f7b5a866766f69fac8d19b39bc3 +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py37h9c2f6ca_2.tar.bz2#2cba70607a1c89ff472d07e3c1e26323 +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e diff --git a/build_tools/azure/python_nogil_lock.txt b/build_tools/azure/python_nogil_lock.txt new file mode 100644 index 0000000000000..3be35727f930f --- /dev/null +++ b/build_tools/azure/python_nogil_lock.txt @@ -0,0 +1,62 @@ +# This file is autogenerated by pip-compile with python 3.9 +# To update, run: +# +# pip-compile --output-file=/scikit-learn/build_tools/azure/python_nogil_lock.txt /scikit-learn/build_tools/azure/python_nogil_requirements.txt +# +--index-url https://d1yxz45j0ypngg.cloudfront.net/ +--extra-index-url https://pypi.org/simple + +attrs==21.4.0 + # via pytest +cycler==0.11.0 + # via matplotlib +cython==0.29.26 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +execnet==1.9.0 + # via pytest-xdist +iniconfig==1.1.1 + # via pytest +joblib==1.1.0 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +kiwisolver==1.3.2 + # via matplotlib +matplotlib==3.4.3 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +numpy==1.22.3 + # via + # -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt + # matplotlib + # scipy +packaging==21.3 + # via pytest +pillow==8.4.0 + # via matplotlib +pluggy==1.0.0 + # via pytest +py==1.11.0 + # via + # pytest + # pytest-forked +pyparsing==3.0.8 + # via + # matplotlib + # packaging +pytest==6.2.5 + # via + # -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt + # pytest-forked + # pytest-xdist +pytest-forked==1.4.0 + # via pytest-xdist +pytest-xdist==2.5.0 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +python-dateutil==2.8.2 + # via matplotlib +scipy==1.8.0 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +six==1.16.0 + # via python-dateutil +threadpoolctl==3.1.0 + # via -r /scikit-learn/build_tools/azure/python_nogil_requirements.txt +toml==0.10.2 + # via pytest diff --git a/build_tools/azure/python_nogil_requirements.txt b/build_tools/azure/python_nogil_requirements.txt new file mode 100644 index 0000000000000..466ceb35d382e --- /dev/null +++ b/build_tools/azure/python_nogil_requirements.txt @@ -0,0 +1,15 @@ +# To generate python_nogil_lock.txt, use the following command: +# docker run -v $PWD:/scikit-learn -it nogil/python bash -c 'pip install pip-tools; pip-compile --upgrade /scikit-learn/build_tools/azure/python_nogil_requirements.txt -o /scikit-learn/build_tools/azure/python_nogil_lock.txt' +# +# The reason behind it is that you need python-nogil to generate the pip lock +# file. Using pip-compile --index and --extra-index will not work, for example +# the latest cython will be picked up from PyPI, rather than the one from the +# python-nogil index +matplotlib +numpy +scipy +cython +joblib +threadpoolctl +pytest==6.2.5 +pytest-xdist diff --git a/build_tools/azure/ubuntu_atlas_lock.txt b/build_tools/azure/ubuntu_atlas_lock.txt new file mode 100644 index 0000000000000..5aee9e093e0ee --- /dev/null +++ b/build_tools/azure/ubuntu_atlas_lock.txt @@ -0,0 +1,39 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --output-file=build_tools/azure/ubuntu_atlas_lock.txt build_tools/azure/ubuntu_atlas_requirements.txt +# +attrs==21.4.0 + # via pytest +cython==0.29.28 + # via -r build_tools/azure/ubuntu_atlas_requirements.txt +execnet==1.9.0 + # via pytest-xdist +iniconfig==1.1.1 + # via pytest +joblib==1.0.0 + # via -r build_tools/azure/ubuntu_atlas_requirements.txt +packaging==21.3 + # via pytest +pluggy==1.0.0 + # via pytest +py==1.11.0 + # via + # pytest + # pytest-forked +pyparsing==3.0.9 + # via packaging +pytest==6.2.5 + # via + # -r build_tools/azure/ubuntu_atlas_requirements.txt + # pytest-forked + # pytest-xdist +pytest-forked==1.4.0 + # via pytest-xdist +pytest-xdist==2.5.0 + # via -r build_tools/azure/ubuntu_atlas_requirements.txt +threadpoolctl==2.0.0 + # via -r build_tools/azure/ubuntu_atlas_requirements.txt +toml==0.10.2 + # via pytest diff --git a/build_tools/azure/ubuntu_atlas_requirements.txt b/build_tools/azure/ubuntu_atlas_requirements.txt new file mode 100644 index 0000000000000..396b07eff14c0 --- /dev/null +++ b/build_tools/azure/ubuntu_atlas_requirements.txt @@ -0,0 +1,8 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +cython +joblib==1.0.0 # min +threadpoolctl==2.0.0 # min +pytest==6.2.5 +pytest-xdist diff --git a/build_tools/azure/update_environments_and_lock_files.py b/build_tools/azure/update_environments_and_lock_files.py new file mode 100644 index 0000000000000..d8487f2a808c2 --- /dev/null +++ b/build_tools/azure/update_environments_and_lock_files.py @@ -0,0 +1,419 @@ +"""Script to update CI environment files and associated lock files. + +To run it you need to be in the root folder of the scikit-learn repo: +python build_tools/azure/update_environments_and_lock_files.py + +Two scenarios where this script can be useful: +- make sure that the latest versions of all the dependencies are used in the CI. + We can run this script regularly and open a PR with the changes to the lock + files. This workflow will eventually be automated with a bot in the future. +- bump minimum dependencies in sklearn/_min_dependencies.py. Running this + script will update both the CI environment files and associated lock files. + You can then open a PR with the changes. +- pin some packages to an older version by adding them to the + default_package_constraints variable. This is useful when regressions are + introduced in our dependencies, this has happened for example with pytest 7 + and coverage 6.3. + +Environments are conda environment.yml or pip requirements.txt. Lock files are +conda-lock lock files or pip-compile requirements.txt. + +pip requirements.txt are used when we install some dependencies (e.g. numpy and +scipy) with apt-get and the rest of the dependencies (e.g. pytest and joblib) +with pip. + +To run this script you need: +- conda-lock. The version should match the one used in the CI in + build_tools/azure/install.sh +- pip-tools +- jinja2 + +""" + +import re +import subprocess +import sys +from pathlib import Path +import shlex +import json + +from jinja2 import Environment + +import logging + +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +handler = logging.StreamHandler() +logger.addHandler(handler) + + +common_dependencies_without_coverage = [ + "python", + "numpy", + "blas", + "scipy", + "cython", + "joblib", + "threadpoolctl", + "matplotlib", + "pandas", + "pyamg", + "pytest", + "pytest-xdist", + "pillow", +] + +common_dependencies = common_dependencies_without_coverage + [ + "codecov", + "pytest-cov", + "coverage", +] + +docstring_test_dependencies = ["sphinx", "numpydoc"] + +default_package_constraints = { + # XXX: pytest is temporary pinned to 6.2.5 because pytest 7 causes CI + # issues https://github.com/scikit-learn/scikit-learn/pull/22381 + "pytest": "6.2.5", + # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe + # cf. https://github.com/nedbat/coveragepy/issues/1310 + "coverage": "6.2", +} + + +def remove_from(alist, to_remove): + return [each for each in alist if each not in to_remove] + + +conda_build_metadata_list = [ + { + "build_name": "pylatest_conda_forge_mkl_linux-64", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies + ["ccache"], + "package_constraints": { + "blas": "[build=mkl]", + }, + }, + { + "build_name": "pylatest_conda_forge_mkl_osx-64", + "platform": "osx-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies + + ["ccache", "compilers", "llvm-openmp"], + "package_constraints": { + "blas": "[build=mkl]", + }, + }, + { + "build_name": "pylatest_conda_mkl_no_openmp", + "platform": "osx-64", + "channel": "defaults", + "conda_dependencies": common_dependencies + ["ccache"], + "package_constraints": { + "blas": "[build=mkl]", + }, + }, + { + "build_name": "pylatest_conda_forge_mkl_no_coverage", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies_without_coverage + ["ccache"], + "package_constraints": { + "blas": "[build=mkl]", + }, + }, + { + "build_name": "py38_conda_defaults_openblas", + "platform": "linux-64", + "channel": "defaults", + "conda_dependencies": common_dependencies + ["ccache"], + "package_constraints": { + "python": "3.8", + "blas": "[build=openblas]", + "numpy": "min", + "scipy": "min", + "matplotlib": "min", + "threadpoolctl": "2.2.0", + }, + }, + { + "build_name": "py38_conda_forge_openblas_ubuntu_1804", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies_without_coverage + ["ccache"], + "package_constraints": {"python": "3.8", "blas": "[build=openblas]"}, + }, + { + "build_name": "pylatest_pip_openblas_pandas", + "platform": "linux-64", + "channel": "defaults", + "conda_dependencies": ["python", "ccache"], + "pip_dependencies": remove_from(common_dependencies, ["python", "blas"]) + + docstring_test_dependencies + + ["lightgbm", "scikit-image"], + "package_constraints": {"python": "3.9"}, + }, + { + "build_name": "pylatest_pip_scipy_dev", + "platform": "linux-64", + "channel": "defaults", + "conda_dependencies": ["python", "ccache"], + "pip_dependencies": remove_from( + common_dependencies, + [ + "python", + "blas", + "matplotlib", + "pyamg", + # all the dependencies below have a development version + # installed in the CI, so they can be removed from the + # environment.yml + "numpy", + "scipy", + "pandas", + "cython", + "joblib", + "pillow", + ], + ) + + docstring_test_dependencies + # python-dateutil is a dependency of pandas and pandas is removed from + # the environment.yml. Adding python-dateutil so it is pinned + + ["python-dateutil"], + }, + { + "build_name": "pypy3", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": ["pypy"] + + remove_from( + common_dependencies_without_coverage, ["python", "pandas", "pillow"] + ) + + ["ccache"], + "package_constraints": {"blas": "[build=openblas]"}, + }, +] + + +pip_build_metadata_list = [ + { + "build_name": "debian_atlas_32bit", + "pip_dependencies": ["cython", "joblib", "threadpoolctl", "pytest"], + "package_constraints": { + "joblib": "min", + "threadpoolctl": "2.2.0", + "pytest": "min", + # no pytest-xdist because it causes issue on 32bit + }, + # same Python version as in debian-32 build + "python_version": "3.9.2", + }, + { + "build_name": "ubuntu_atlas", + "pip_dependencies": [ + "cython", + "joblib", + "threadpoolctl", + "pytest", + "pytest-xdist", + ], + "package_constraints": {"joblib": "min", "threadpoolctl": "min"}, + # Ubuntu 20.04 has 3.8.2 but only 3.8.5 is available for osx-arm64 on + # conda-forge. Chosing 3.8.5 so that this script can be run locally on + # osx-arm64 machines. This should not matter for pining versions with + # pip-compile + "python_version": "3.8.5", + }, +] + + +def execute_command(command_list): + proc = subprocess.Popen( + command_list, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) + + out, err = proc.communicate() + out, err = out.decode(), err.decode() + + if proc.returncode != 0: + command_str = " ".join(command_list) + raise RuntimeError( + "Command exited with non-zero exit code.\n" + "Exit code: {}\n" + "Command:\n{}\n" + "stdout:\n{}\n" + "stderr:\n{}\n".format(proc.returncode, command_str, out, err) + ) + return out + + +def get_package_with_constraint(package_name, build_metadata, uses_pip=False): + build_package_constraints = build_metadata.get("package_constraints") + if build_package_constraints is None: + constraint = None + else: + constraint = build_package_constraints.get(package_name) + + constraint = constraint or default_package_constraints.get(package_name) + + if constraint is None: + return package_name + + comment = "" + if constraint == "min": + constraint = execute_command( + [sys.executable, "sklearn/_min_dependencies.py", package_name] + ).strip() + comment = " # min" + + if re.match(r"\d[.\d]*", constraint): + equality = "==" if uses_pip else "=" + constraint = equality + constraint + + return f"{package_name}{constraint}{comment}" + + +environment = Environment(trim_blocks=True, lstrip_blocks=True) +environment.filters["get_package_with_constraint"] = get_package_with_constraint + + +def get_conda_environment_content(build_metadata): + template = environment.from_string( + """ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +channels: + - {{ build_metadata['channel'] }} +dependencies: + {% for conda_dep in build_metadata['conda_dependencies'] %} + - {{ conda_dep | get_package_with_constraint(build_metadata) }} + {% endfor %} + {% if build_metadata['pip_dependencies'] %} + - pip + - pip: + {% for pip_dep in build_metadata.get('pip_dependencies', []) %} + - {{ pip_dep | get_package_with_constraint(build_metadata, uses_pip=True) }} + {% endfor %} + {% endif %}""".strip() + ) + return template.render(build_metadata=build_metadata) + + +def write_conda_environment(build_metadata, folder_path): + content = get_conda_environment_content(build_metadata) + build_name = build_metadata["build_name"] + output_path = folder_path / f"{build_name}_environment.yml" + output_path.write_text(content) + + +def write_all_conda_environments(build_metadata_list, folder_path): + for build_metadata in build_metadata_list: + write_conda_environment(build_metadata, folder_path) + + +def conda_lock(environment_path, lock_file_path, platform): + command = ( + f"conda-lock lock --mamba --kind explicit --platform {platform} " + f"--file {environment_path} --filename-template {lock_file_path}" + ) + + logger.debug("conda-lock command: %s", command) + execute_command(shlex.split(command)) + + +def create_conda_lock_file(build_metadata, folder_path): + build_name = build_metadata["build_name"] + environment_path = folder_path / f"{build_name}_environment.yml" + platform = build_metadata["platform"] + lock_file_basename = build_name + if not lock_file_basename.endswith(platform): + lock_file_basename = f"{lock_file_basename}_{platform}" + + lock_file_path = folder_path / f"{lock_file_basename}_conda.lock" + conda_lock(environment_path, lock_file_path, platform) + + +def write_all_conda_lock_files(build_metadata_list, folder_path): + for build_metadata in build_metadata_list: + logger.info(build_metadata["build_name"]) + create_conda_lock_file(build_metadata, folder_path) + + +def get_pip_requirements_content(build_metadata): + template = environment.from_string( + """ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/azure/update_environments_and_lock_files.py +{% for pip_dep in build_metadata['pip_dependencies'] %} +{{ pip_dep | get_package_with_constraint(build_metadata, uses_pip=True) }} +{% endfor %}""".strip() + ) + return template.render(build_metadata=build_metadata) + + +def write_pip_requirements(build_metadata, folder_path): + build_name = build_metadata["build_name"] + content = get_pip_requirements_content(build_metadata) + output_path = folder_path / f"{build_name}_requirements.txt" + output_path.write_text(content) + + +def write_all_pip_requirements(build_metadata_list, folder_path): + for build_metadata in build_metadata_list: + logger.info(build_metadata["build_name"]) + write_pip_requirements(build_metadata, folder_path) + + +def pip_compile(pip_compile_path, requirements_path, lock_file_path): + command = f"{pip_compile_path} --upgrade {requirements_path} -o {lock_file_path}" + + logger.debug("pip-compile command: %s", command) + execute_command(shlex.split(command)) + + +def write_pip_lock_file(build_metadata, folder_path): + build_name = build_metadata["build_name"] + python_version = build_metadata["python_version"] + environment_name = f"pip-tools-python{python_version}" + # To make sure that the Python used to create the pip lock file is the same + # as the one used during the CI build where the lock file is used, we first + # create a conda environment with the correct Python version and + # pip-compile and run pip-compile in this environment + command = ( + "conda create -c conda-forge -n" + f" pip-tools-python{python_version} python={python_version} pip-tools -y" + ) + execute_command(shlex.split(command)) + + json_output = execute_command(shlex.split("conda info --json")) + conda_info = json.loads(json_output) + environment_folder = [ + each for each in conda_info["envs"] if each.endswith(environment_name) + ][0] + environment_path = Path(environment_folder) + pip_compile_path = environment_path / "bin" / "pip-compile" + + requirement_path = folder_path / f"{build_name}_requirements.txt" + lock_file_path = folder_path / f"{build_name}_lock.txt" + pip_compile(pip_compile_path, requirement_path, lock_file_path) + + +def write_all_pip_lock_files(build_metadata_list, folder_path): + for build_metadata in build_metadata_list: + write_pip_lock_file(build_metadata, folder_path) + + +if __name__ == "__main__": + output_path = Path("build_tools/azure/") + logger.info("Writing conda environments") + write_all_conda_environments(conda_build_metadata_list, output_path) + logger.info("Writing conda lock files") + write_all_conda_lock_files(conda_build_metadata_list, output_path) + + logger.info("Writing pip requirements") + write_all_pip_requirements(pip_build_metadata_list, output_path) + logger.info("Writing pip lock files") + write_all_pip_lock_files(pip_build_metadata_list, output_path) From 483e2a9de549623d00eabc877fc904672c065033 Mon Sep 17 00:00:00 2001 From: Rocco Meli Date: Sat, 14 May 2022 21:04:01 +0100 Subject: [PATCH 012/251] MNT Use cimport numpy as cnp for sklearn/tree (#23315) Co-authored-by: Guillaume Lemaitre Co-authored-by: Thomas J. Fan --- sklearn/tree/_criterion.pxd | 3 - sklearn/tree/_criterion.pyx | 10 +-- sklearn/tree/_splitter.pxd | 3 - sklearn/tree/_splitter.pyx | 2 - sklearn/tree/_tree.pxd | 30 ++++----- sklearn/tree/_tree.pyx | 124 ++++++++++++++++++------------------ sklearn/tree/_utils.pxd | 15 ++--- sklearn/tree/_utils.pyx | 13 ++-- 8 files changed, 95 insertions(+), 105 deletions(-) diff --git a/sklearn/tree/_criterion.pxd b/sklearn/tree/_criterion.pxd index 1639b5f4b3195..bc78c09b6ff5e 100644 --- a/sklearn/tree/_criterion.pxd +++ b/sklearn/tree/_criterion.pxd @@ -9,9 +9,6 @@ # See _criterion.pyx for implementation details. -import numpy as np -cimport numpy as np - from ._tree cimport DTYPE_t # Type of X from ._tree cimport DOUBLE_t # Type of y, sample_weight from ._tree cimport SIZE_t # Type for indices and counters diff --git a/sklearn/tree/_criterion.pyx b/sklearn/tree/_criterion.pyx index 57012fcab2296..680719464e11d 100644 --- a/sklearn/tree/_criterion.pyx +++ b/sklearn/tree/_criterion.pyx @@ -17,8 +17,8 @@ from libc.string cimport memset from libc.math cimport fabs import numpy as np -cimport numpy as np -np.import_array() +cimport numpy as cnp +cnp.import_array() from numpy.math cimport INFINITY from scipy.special.cython_special cimport xlogy @@ -197,7 +197,7 @@ cdef class ClassificationCriterion(Criterion): """Abstract criterion for classification.""" def __cinit__(self, SIZE_t n_outputs, - np.ndarray[SIZE_t, ndim=1] n_classes): + cnp.ndarray[SIZE_t, ndim=1] n_classes): """Initialize attributes for this criterion. Parameters @@ -874,8 +874,8 @@ cdef class MAE(RegressionCriterion): MAE = (1 / n)*(\sum_i |y_i - f_i|), where y_i is the true value and f_i is the predicted value.""" - cdef np.ndarray left_child - cdef np.ndarray right_child + cdef cnp.ndarray left_child + cdef cnp.ndarray right_child cdef DOUBLE_t[::1] node_medians def __cinit__(self, SIZE_t n_outputs, SIZE_t n_samples): diff --git a/sklearn/tree/_splitter.pxd b/sklearn/tree/_splitter.pxd index f24577652e818..1b899d2c66454 100644 --- a/sklearn/tree/_splitter.pxd +++ b/sklearn/tree/_splitter.pxd @@ -9,9 +9,6 @@ # See _splitter.pyx for details. -import numpy as np -cimport numpy as np - from ._criterion cimport Criterion from ._tree cimport DTYPE_t # Type of X diff --git a/sklearn/tree/_splitter.pyx b/sklearn/tree/_splitter.pyx index c1bb25c422195..8a40d14cac5b7 100644 --- a/sklearn/tree/_splitter.pyx +++ b/sklearn/tree/_splitter.pyx @@ -19,8 +19,6 @@ from libc.string cimport memcpy from libc.string cimport memset import numpy as np -cimport numpy as np -np.import_array() from scipy.sparse import csc_matrix diff --git a/sklearn/tree/_tree.pxd b/sklearn/tree/_tree.pxd index 0874187ee98ae..55895a8279828 100644 --- a/sklearn/tree/_tree.pxd +++ b/sklearn/tree/_tree.pxd @@ -11,13 +11,13 @@ # See _tree.pyx for details. import numpy as np -cimport numpy as np +cimport numpy as cnp -ctypedef np.npy_float32 DTYPE_t # Type of X -ctypedef np.npy_float64 DOUBLE_t # Type of y, sample_weight -ctypedef np.npy_intp SIZE_t # Type for indices and counters -ctypedef np.npy_int32 INT32_t # Signed 32 bit integer -ctypedef np.npy_uint32 UINT32_t # Unsigned 32 bit integer +ctypedef cnp.npy_float32 DTYPE_t # Type of X +ctypedef cnp.npy_float64 DOUBLE_t # Type of y, sample_weight +ctypedef cnp.npy_intp SIZE_t # Type for indices and counters +ctypedef cnp.npy_int32 INT32_t # Signed 32 bit integer +ctypedef cnp.npy_uint32 UINT32_t # Unsigned 32 bit integer from ._splitter cimport Splitter from ._splitter cimport SplitRecord @@ -62,14 +62,14 @@ cdef class Tree: cdef int _resize(self, SIZE_t capacity) nogil except -1 cdef int _resize_c(self, SIZE_t capacity=*) nogil except -1 - cdef np.ndarray _get_value_ndarray(self) - cdef np.ndarray _get_node_ndarray(self) + cdef cnp.ndarray _get_value_ndarray(self) + cdef cnp.ndarray _get_node_ndarray(self) - cpdef np.ndarray predict(self, object X) + cpdef cnp.ndarray predict(self, object X) - cpdef np.ndarray apply(self, object X) - cdef np.ndarray _apply_dense(self, object X) - cdef np.ndarray _apply_sparse_csr(self, object X) + cpdef cnp.ndarray apply(self, object X) + cdef cnp.ndarray _apply_dense(self, object X) + cdef cnp.ndarray _apply_sparse_csr(self, object X) cpdef object decision_path(self, object X) cdef object _decision_path_dense(self, object X) @@ -98,6 +98,6 @@ cdef class TreeBuilder: cdef SIZE_t max_depth # Maximal tree depth cdef double min_impurity_decrease # Impurity threshold for early stopping - cpdef build(self, Tree tree, object X, np.ndarray y, - np.ndarray sample_weight=*) - cdef _check_input(self, object X, np.ndarray y, np.ndarray sample_weight) + cpdef build(self, Tree tree, object X, cnp.ndarray y, + cnp.ndarray sample_weight=*) + cdef _check_input(self, object X, cnp.ndarray y, cnp.ndarray sample_weight) diff --git a/sklearn/tree/_tree.pyx b/sklearn/tree/_tree.pyx index 85c44b5eaf9b8..c2a2e80caaec6 100644 --- a/sklearn/tree/_tree.pyx +++ b/sklearn/tree/_tree.pyx @@ -27,8 +27,8 @@ from libcpp cimport bool import struct import numpy as np -cimport numpy as np -np.import_array() +cimport numpy as cnp +cnp.import_array() from scipy.sparse import issparse from scipy.sparse import csr_matrix @@ -37,11 +37,11 @@ from ._utils cimport safe_realloc from ._utils cimport sizet_ptr_to_ndarray cdef extern from "numpy/arrayobject.h": - object PyArray_NewFromDescr(PyTypeObject* subtype, np.dtype descr, - int nd, np.npy_intp* dims, - np.npy_intp* strides, + object PyArray_NewFromDescr(PyTypeObject* subtype, cnp.dtype descr, + int nd, cnp.npy_intp* dims, + cnp.npy_intp* strides, void* data, int flags, object obj) - int PyArray_SetBaseObject(np.ndarray arr, PyObject* obj) + int PyArray_SetBaseObject(cnp.ndarray arr, PyObject* obj) cdef extern from "" namespace "std" nogil: cdef cppclass stack[T]: @@ -87,13 +87,13 @@ NODE_DTYPE = np.asarray((&dummy)).dtype cdef class TreeBuilder: """Interface for different tree building strategies.""" - cpdef build(self, Tree tree, object X, np.ndarray y, - np.ndarray sample_weight=None): + cpdef build(self, Tree tree, object X, cnp.ndarray y, + cnp.ndarray sample_weight=None): """Build a decision tree from the training set (X, y).""" pass - cdef inline _check_input(self, object X, np.ndarray y, - np.ndarray sample_weight): + cdef inline _check_input(self, object X, cnp.ndarray y, + cnp.ndarray sample_weight): """Check input dtype, layout and format""" if issparse(X): X = X.tocsc() @@ -145,8 +145,8 @@ cdef class DepthFirstTreeBuilder(TreeBuilder): self.max_depth = max_depth self.min_impurity_decrease = min_impurity_decrease - cpdef build(self, Tree tree, object X, np.ndarray y, - np.ndarray sample_weight=None): + cpdef build(self, Tree tree, object X, cnp.ndarray y, + cnp.ndarray sample_weight=None): """Build a decision tree from the training set (X, y).""" # check input @@ -341,8 +341,8 @@ cdef class BestFirstTreeBuilder(TreeBuilder): self.max_leaf_nodes = max_leaf_nodes self.min_impurity_decrease = min_impurity_decrease - cpdef build(self, Tree tree, object X, np.ndarray y, - np.ndarray sample_weight=None): + cpdef build(self, Tree tree, object X, cnp.ndarray y, + cnp.ndarray sample_weight=None): """Build a decision tree from the training set (X, y).""" # check input @@ -624,7 +624,7 @@ cdef class Tree: def __get__(self): return self._get_value_ndarray()[:self.node_count] - def __cinit__(self, int n_features, np.ndarray n_classes, int n_outputs): + def __cinit__(self, int n_features, cnp.ndarray n_classes, int n_outputs): """Constructor.""" cdef SIZE_t dummy = 0 size_t_dtype = np.array(dummy).dtype @@ -699,9 +699,9 @@ cdef class Tree: self.capacity = node_ndarray.shape[0] if self._resize_c(self.capacity) != 0: raise MemoryError("resizing tree to %d" % self.capacity) - nodes = memcpy(self.nodes, ( node_ndarray).data, + nodes = memcpy(self.nodes, ( node_ndarray).data, self.capacity * sizeof(Node)) - value = memcpy(self.value, ( value_ndarray).data, + value = memcpy(self.value, ( value_ndarray).data, self.capacity * self.value_stride * sizeof(double)) cdef int _resize(self, SIZE_t capacity) nogil except -1: @@ -789,7 +789,7 @@ cdef class Tree: return node_id - cpdef np.ndarray predict(self, object X): + cpdef cnp.ndarray predict(self, object X): """Predict target for X.""" out = self._get_value_ndarray().take(self.apply(X), axis=0, mode='clip') @@ -797,14 +797,14 @@ cdef class Tree: out = out.reshape(X.shape[0], self.max_n_classes) return out - cpdef np.ndarray apply(self, object X): + cpdef cnp.ndarray apply(self, object X): """Finds the terminal region (=leaf node) for each sample in X.""" if issparse(X): return self._apply_sparse_csr(X) else: return self._apply_dense(X) - cdef inline np.ndarray _apply_dense(self, object X): + cdef inline cnp.ndarray _apply_dense(self, object X): """Finds the terminal region (=leaf node) for each sample in X.""" # Check input @@ -820,7 +820,7 @@ cdef class Tree: cdef SIZE_t n_samples = X.shape[0] # Initialize output - cdef np.ndarray[SIZE_t] out = np.zeros((n_samples,), dtype=np.intp) + cdef cnp.ndarray[SIZE_t] out = np.zeros((n_samples,), dtype=np.intp) cdef SIZE_t* out_ptr = out.data # Initialize auxiliary data-structure @@ -842,7 +842,7 @@ cdef class Tree: return out - cdef inline np.ndarray _apply_sparse_csr(self, object X): + cdef inline cnp.ndarray _apply_sparse_csr(self, object X): """Finds the terminal region (=leaf node) for each sample in sparse X. """ # Check input @@ -854,9 +854,9 @@ cdef class Tree: raise ValueError("X.dtype should be np.float32, got %s" % X.dtype) # Extract input - cdef np.ndarray[ndim=1, dtype=DTYPE_t] X_data_ndarray = X.data - cdef np.ndarray[ndim=1, dtype=INT32_t] X_indices_ndarray = X.indices - cdef np.ndarray[ndim=1, dtype=INT32_t] X_indptr_ndarray = X.indptr + cdef cnp.ndarray[ndim=1, dtype=DTYPE_t] X_data_ndarray = X.data + cdef cnp.ndarray[ndim=1, dtype=INT32_t] X_indices_ndarray = X.indices + cdef cnp.ndarray[ndim=1, dtype=INT32_t] X_indptr_ndarray = X.indptr cdef DTYPE_t* X_data = X_data_ndarray.data cdef INT32_t* X_indices = X_indices_ndarray.data @@ -866,8 +866,8 @@ cdef class Tree: cdef SIZE_t n_features = X.shape[1] # Initialize output - cdef np.ndarray[SIZE_t, ndim=1] out = np.zeros((n_samples,), - dtype=np.intp) + cdef cnp.ndarray[SIZE_t, ndim=1] out = np.zeros((n_samples,), + dtype=np.intp) cdef SIZE_t* out_ptr = out.data # Initialize auxiliary data-structure @@ -940,12 +940,12 @@ cdef class Tree: cdef SIZE_t n_samples = X.shape[0] # Initialize output - cdef np.ndarray[SIZE_t] indptr = np.zeros(n_samples + 1, dtype=np.intp) + cdef cnp.ndarray[SIZE_t] indptr = np.zeros(n_samples + 1, dtype=np.intp) cdef SIZE_t* indptr_ptr = indptr.data - cdef np.ndarray[SIZE_t] indices = np.zeros(n_samples * - (1 + self.max_depth), - dtype=np.intp) + cdef cnp.ndarray[SIZE_t] indices = np.zeros(n_samples * + (1 + self.max_depth), + dtype=np.intp) cdef SIZE_t* indices_ptr = indices.data # Initialize auxiliary data-structure @@ -973,8 +973,8 @@ cdef class Tree: indptr_ptr[i + 1] += 1 indices = indices[:indptr[n_samples]] - cdef np.ndarray[SIZE_t] data = np.ones(shape=len(indices), - dtype=np.intp) + cdef cnp.ndarray[SIZE_t] data = np.ones(shape=len(indices), + dtype=np.intp) out = csr_matrix((data, indices, indptr), shape=(n_samples, self.node_count)) @@ -992,9 +992,9 @@ cdef class Tree: raise ValueError("X.dtype should be np.float32, got %s" % X.dtype) # Extract input - cdef np.ndarray[ndim=1, dtype=DTYPE_t] X_data_ndarray = X.data - cdef np.ndarray[ndim=1, dtype=INT32_t] X_indices_ndarray = X.indices - cdef np.ndarray[ndim=1, dtype=INT32_t] X_indptr_ndarray = X.indptr + cdef cnp.ndarray[ndim=1, dtype=DTYPE_t] X_data_ndarray = X.data + cdef cnp.ndarray[ndim=1, dtype=INT32_t] X_indices_ndarray = X.indices + cdef cnp.ndarray[ndim=1, dtype=INT32_t] X_indptr_ndarray = X.indptr cdef DTYPE_t* X_data = X_data_ndarray.data cdef INT32_t* X_indices = X_indices_ndarray.data @@ -1004,12 +1004,12 @@ cdef class Tree: cdef SIZE_t n_features = X.shape[1] # Initialize output - cdef np.ndarray[SIZE_t] indptr = np.zeros(n_samples + 1, dtype=np.intp) + cdef cnp.ndarray[SIZE_t] indptr = np.zeros(n_samples + 1, dtype=np.intp) cdef SIZE_t* indptr_ptr = indptr.data - cdef np.ndarray[SIZE_t] indices = np.zeros(n_samples * - (1 + self.max_depth), - dtype=np.intp) + cdef cnp.ndarray[SIZE_t] indices = np.zeros(n_samples * + (1 + self.max_depth), + dtype=np.intp) cdef SIZE_t* indices_ptr = indices.data # Initialize auxiliary data-structure @@ -1065,8 +1065,8 @@ cdef class Tree: free(feature_to_sample) indices = indices[:indptr[n_samples]] - cdef np.ndarray[SIZE_t] data = np.ones(shape=len(indices), - dtype=np.intp) + cdef cnp.ndarray[SIZE_t] data = np.ones(shape=len(indices), + dtype=np.intp) out = csr_matrix((data, indices, indptr), shape=(n_samples, self.node_count)) @@ -1083,7 +1083,7 @@ cdef class Tree: cdef double normalizer = 0. - cdef np.ndarray[np.float64_t, ndim=1] importances + cdef cnp.ndarray[cnp.float64_t, ndim=1] importances importances = np.zeros((self.n_features,)) cdef DOUBLE_t* importance_data = importances.data @@ -1111,40 +1111,40 @@ cdef class Tree: return importances - cdef np.ndarray _get_value_ndarray(self): + cdef cnp.ndarray _get_value_ndarray(self): """Wraps value as a 3-d NumPy array. The array keeps a reference to this Tree, which manages the underlying memory. """ - cdef np.npy_intp shape[3] - shape[0] = self.node_count - shape[1] = self.n_outputs - shape[2] = self.max_n_classes - cdef np.ndarray arr - arr = np.PyArray_SimpleNewFromData(3, shape, np.NPY_DOUBLE, self.value) + cdef cnp.npy_intp shape[3] + shape[0] = self.node_count + shape[1] = self.n_outputs + shape[2] = self.max_n_classes + cdef cnp.ndarray arr + arr = cnp.PyArray_SimpleNewFromData(3, shape, cnp.NPY_DOUBLE, self.value) Py_INCREF(self) if PyArray_SetBaseObject(arr, self) < 0: raise ValueError("Can't initialize array.") return arr - cdef np.ndarray _get_node_ndarray(self): + cdef cnp.ndarray _get_node_ndarray(self): """Wraps nodes as a NumPy struct array. The array keeps a reference to this Tree, which manages the underlying memory. Individual fields are publicly accessible as properties of the Tree. """ - cdef np.npy_intp shape[1] - shape[0] = self.node_count - cdef np.npy_intp strides[1] + cdef cnp.npy_intp shape[1] + shape[0] = self.node_count + cdef cnp.npy_intp strides[1] strides[0] = sizeof(Node) - cdef np.ndarray arr + cdef cnp.ndarray arr Py_INCREF(NODE_DTYPE) - arr = PyArray_NewFromDescr( np.ndarray, - NODE_DTYPE, 1, shape, + arr = PyArray_NewFromDescr( cnp.ndarray, + NODE_DTYPE, 1, shape, strides, self.nodes, - np.NPY_DEFAULT, None) + cnp.NPY_DEFAULT, None) Py_INCREF(self) if PyArray_SetBaseObject(arr, self) < 0: raise ValueError("Can't initialize array.") @@ -1680,10 +1680,10 @@ def ccp_pruning_path(Tree orig_tree): cdef: UINT32_t total_items = path_finder.count - np.ndarray ccp_alphas = np.empty(shape=total_items, - dtype=np.float64) - np.ndarray impurities = np.empty(shape=total_items, - dtype=np.float64) + cnp.ndarray ccp_alphas = np.empty(shape=total_items, + dtype=np.float64) + cnp.ndarray impurities = np.empty(shape=total_items, + dtype=np.float64) UINT32_t count = 0 while count < total_items: diff --git a/sklearn/tree/_utils.pxd b/sklearn/tree/_utils.pxd index fe4aca67d7b52..9d41b757d85dc 100644 --- a/sklearn/tree/_utils.pxd +++ b/sklearn/tree/_utils.pxd @@ -8,16 +8,15 @@ # See _utils.pyx for details. -import numpy as np -cimport numpy as np +cimport numpy as cnp from ._tree cimport Node from ..neighbors._quad_tree cimport Cell -ctypedef np.npy_float32 DTYPE_t # Type of X -ctypedef np.npy_float64 DOUBLE_t # Type of y, sample_weight -ctypedef np.npy_intp SIZE_t # Type for indices and counters -ctypedef np.npy_int32 INT32_t # Signed 32 bit integer -ctypedef np.npy_uint32 UINT32_t # Unsigned 32 bit integer +ctypedef cnp.npy_float32 DTYPE_t # Type of X +ctypedef cnp.npy_float64 DOUBLE_t # Type of y, sample_weight +ctypedef cnp.npy_intp SIZE_t # Type for indices and counters +ctypedef cnp.npy_int32 INT32_t # Signed 32 bit integer +ctypedef cnp.npy_uint32 UINT32_t # Unsigned 32 bit integer cdef enum: @@ -47,7 +46,7 @@ ctypedef fused realloc_ptr: cdef realloc_ptr safe_realloc(realloc_ptr* p, size_t nelems) nogil except * -cdef np.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size) +cdef cnp.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size) cdef SIZE_t rand_int(SIZE_t low, SIZE_t high, diff --git a/sklearn/tree/_utils.pyx b/sklearn/tree/_utils.pyx index ba4c0f716a985..7346070b7a149 100644 --- a/sklearn/tree/_utils.pyx +++ b/sklearn/tree/_utils.pyx @@ -12,9 +12,8 @@ from libc.stdlib cimport malloc from libc.stdlib cimport realloc from libc.math cimport log as ln -import numpy as np -cimport numpy as np -np.import_array() +cimport numpy as cnp +cnp.import_array() from ..utils._random cimport our_rand_r @@ -50,11 +49,11 @@ def _realloc_test(): assert False -cdef inline np.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size): +cdef inline cnp.ndarray sizet_ptr_to_ndarray(SIZE_t* data, SIZE_t size): """Return copied data as 1D numpy array of intp's.""" - cdef np.npy_intp shape[1] - shape[0] = size - return np.PyArray_SimpleNewFromData(1, shape, np.NPY_INTP, data).copy() + cdef cnp.npy_intp shape[1] + shape[0] = size + return cnp.PyArray_SimpleNewFromData(1, shape, cnp.NPY_INTP, data).copy() cdef inline SIZE_t rand_int(SIZE_t low, SIZE_t high, From 3b92f2dfaa6a7421415e5bf4862ef0e5349585a5 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 16:01:48 +0200 Subject: [PATCH 013/251] move 23299 to 1.1.1: fixes regression (#23399) --- doc/whats_new/v1.1.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 39cfb62dc8057..baa14b4799b37 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -38,6 +38,13 @@ Changelog :mod:`sklearn.feature_selection` ................................ +- |Fix| The `partial_fit` method of :class:`feature_selection.SelectFromModel` + now conducts validation for `max_features` and `feature_names_in` parameters. + :pr:`23299` by :user:`Long Bao `. + +:mod:`sklearn.feature_selection` +................................ + - |Fix| The `partial_fit` method of :class:`feature_selection.SelectFromModel` now conducts validation for `max_features` and `feature_names_in` parameters. :pr:`23299` by :user:`Long Bao `. From d02a4012be1c48ff30c06d9a6c27d01644cc058c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 19 May 2022 09:48:29 +0200 Subject: [PATCH 014/251] FIX fix performance regression in trees with low-cardinality features (#23410) Co-authored-by: Guillaume Lemaitre Co-authored-by: Thomas J. Fan --- sklearn/tree/_splitter.pyx | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/sklearn/tree/_splitter.pyx b/sklearn/tree/_splitter.pyx index 8a40d14cac5b7..76b502f98f144 100644 --- a/sklearn/tree/_splitter.pyx +++ b/sklearn/tree/_splitter.pyx @@ -26,7 +26,6 @@ from ._utils cimport log from ._utils cimport rand_int from ._utils cimport rand_uniform from ._utils cimport RAND_R_MAX -from ..utils._sorting cimport simultaneous_sort cdef double INFINITY = np.inf @@ -342,7 +341,7 @@ cdef class BestSplitter(BaseDenseSplitter): for i in range(start, end): Xf[i] = self.X[samples[i], current.feature] - simultaneous_sort(&Xf[start], &samples[start], end - start) + sort(&Xf[start], &samples[start], end - start) if Xf[end - 1] <= Xf[start] + FEATURE_THRESHOLD: features[f_j], features[n_total_constants] = features[n_total_constants], features[f_j] @@ -1161,11 +1160,11 @@ cdef class BestSparseSplitter(BaseSparseSplitter): current.feature = features[f_j] self.extract_nnz(current.feature, &end_negative, &start_positive, &is_samples_sorted) - # Sort the positive and negative parts of `Xf` - simultaneous_sort(&Xf[start], &samples[start], end_negative - start) + sort(&Xf[start], &samples[start], end_negative - start) if start_positive < end: - simultaneous_sort(&Xf[start_positive], &samples[start_positive], end - start_positive) + sort(&Xf[start_positive], &samples[start_positive], + end - start_positive) # Update index_to_samples to take into account the sort for p in range(start, end_negative): From d18be5b18adcf2d34da20acc197f879fb7a076c4 Mon Sep 17 00:00:00 2001 From: SELEE Date: Thu, 19 May 2022 17:25:25 +0900 Subject: [PATCH 015/251] FIX Update randomized SVD benchmark (#23373) --- benchmarks/bench_plot_randomized_svd.py | 2 +- sklearn/utils/extmath.py | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/benchmarks/bench_plot_randomized_svd.py b/benchmarks/bench_plot_randomized_svd.py index c16e21c3e0568..896b29ef471dd 100644 --- a/benchmarks/bench_plot_randomized_svd.py +++ b/benchmarks/bench_plot_randomized_svd.py @@ -153,7 +153,7 @@ def get_data(dataset_name): elif dataset_name == "rcv1": X = fetch_rcv1().data elif dataset_name == "CIFAR": - if handle_missing_dataset(CIFAR_FOLDER) == "skip": + if handle_missing_dataset(CIFAR_FOLDER) == 0: return X1 = [unpickle("%sdata_batch_%d" % (CIFAR_FOLDER, i + 1)) for i in range(5)] X = np.vstack(X1) diff --git a/sklearn/utils/extmath.py b/sklearn/utils/extmath.py index 2521990e6cc68..4438f67fb5729 100644 --- a/sklearn/utils/extmath.py +++ b/sklearn/utils/extmath.py @@ -216,9 +216,6 @@ def randomized_range_finder( # Generating normal random vectors with shape: (A.shape[1], size) Q = random_state.normal(size=(A.shape[1], size)) - if A.dtype.kind == "f": - # Ensure f32 is preserved as f32 - Q = Q.astype(A.dtype, copy=False) # Deal with "auto" mode if power_iteration_normalizer == "auto": @@ -243,6 +240,11 @@ def randomized_range_finder( # Sample the range of A using by linear projection of Q # Extract an orthonormal basis Q, _ = linalg.qr(safe_sparse_dot(A, Q), mode="economic") + + if hasattr(A, "dtype") and A.dtype.kind == "f": + # Ensure f32 is preserved as f32 + Q = Q.astype(A.dtype, copy=False) + return Q From d12b017f4ab9cde6a61c9809a1bafcd20528ea84 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 19 May 2022 11:26:47 +0200 Subject: [PATCH 016/251] DOC update and add release date 1.1.1 (#23416) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- doc/whats_new/v1.1.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index baa14b4799b37..fb2a1b153a31d 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -42,6 +42,12 @@ Changelog now conducts validation for `max_features` and `feature_names_in` parameters. :pr:`23299` by :user:`Long Bao `. +:mod:`sklearn.decomposition` +............................ + +- |Fix| Avoid spurious warning in :class:`decomposition.IncrementalPCA` when + `n_samples == n_components`. :pr:`23264` by :user:`Lucy Liu `. + :mod:`sklearn.feature_selection` ................................ From 0ddaadc35a39bec9bc13b2e58a09b8af5b3db351 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 19 May 2022 17:47:51 +0200 Subject: [PATCH 017/251] CI Use lock file for CircleCI arm64 build (#23392) --- .circleci/config.yml | 12 +-- .../azure/debian_atlas_32bit_requirements.txt | 2 +- ...38_conda_defaults_openblas_environment.yml | 2 +- ...forge_openblas_ubuntu_1804_environment.yml | 2 +- ...t_conda_forge_mkl_linux-64_environment.yml | 2 +- ...onda_forge_mkl_no_coverage_environment.yml | 2 +- ...est_conda_forge_mkl_osx-64_environment.yml | 2 +- ...latest_conda_mkl_no_openmp_environment.yml | 2 +- ...latest_pip_openblas_pandas_environment.yml | 2 +- .../pylatest_pip_scipy_dev_environment.yml | 2 +- build_tools/azure/pypy3_environment.yml | 2 +- .../azure/ubuntu_atlas_requirements.txt | 2 +- build_tools/circle/build_test_arm.sh | 43 +-------- .../circle/py39_conda_forge_environment.yml | 19 ++++ .../py39_conda_forge_linux-aarch64_conda.lock | 91 +++++++++++++++++++ .../update_environments_and_lock_files.py | 70 ++++++++++---- 16 files changed, 177 insertions(+), 80 deletions(-) create mode 100644 build_tools/circle/py39_conda_forge_environment.yml create mode 100644 build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock rename build_tools/{azure => }/update_environments_and_lock_files.py (85%) diff --git a/.circleci/config.yml b/.circleci/config.yml index 90098519eee0f..e34f48ec34f34 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -116,18 +116,10 @@ jobs: image: ubuntu-2004:202101-01 resource_class: arm.medium environment: - # Use the latest supported version of python - - PYTHON_VERSION: '3.9' - OMP_NUM_THREADS: 2 - OPENBLAS_NUM_THREADS: 2 - - NUMPY_VERSION: 'latest' - - SCIPY_VERSION: 'latest' - - CYTHON_VERSION: 'latest' - - JOBLIB_VERSION: 'latest' - - THREADPOOLCTL_VERSION: 'latest' - - PYTEST_VERSION: 'latest' - - PYTEST_XDIST_VERSION: 'latest' - - TEST_DOCSTRINGS: 'true' + - CONDA_ENV_NAME: testenv + - LOCK_FILE: build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock steps: - checkout - run: ./build_tools/circle/checkout_merge_commit.sh diff --git a/build_tools/azure/debian_atlas_32bit_requirements.txt b/build_tools/azure/debian_atlas_32bit_requirements.txt index d7f36644ecec1..2708f7b8ff5e8 100644 --- a/build_tools/azure/debian_atlas_32bit_requirements.txt +++ b/build_tools/azure/debian_atlas_32bit_requirements.txt @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py cython joblib==1.0.0 # min threadpoolctl==2.2.0 diff --git a/build_tools/azure/py38_conda_defaults_openblas_environment.yml b/build_tools/azure/py38_conda_defaults_openblas_environment.yml index 549d1f7f50990..13cb49bb2af07 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_environment.yml +++ b/build_tools/azure/py38_conda_defaults_openblas_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - defaults dependencies: diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml index e4d69b9e280a4..fa82037236fe4 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - conda-forge dependencies: diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml index 7d7ba258422d9..318bba9517758 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - conda-forge dependencies: diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml index c51b32e65955b..1a61f4cc9395d 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - conda-forge dependencies: diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml index bf6f5caad40ef..6a619b0298772 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - conda-forge dependencies: diff --git a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml index 6838c1ccb78b6..90fe0e893991f 100644 --- a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - defaults dependencies: diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml index ae2503503daae..c452f7587331f 100644 --- a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml +++ b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - defaults dependencies: diff --git a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml index 1a6498fa7a511..9b8fb02d77266 100644 --- a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml +++ b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - defaults dependencies: diff --git a/build_tools/azure/pypy3_environment.yml b/build_tools/azure/pypy3_environment.yml index 0929f6e545e7d..5dc45f334d903 100644 --- a/build_tools/azure/pypy3_environment.yml +++ b/build_tools/azure/pypy3_environment.yml @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - conda-forge dependencies: diff --git a/build_tools/azure/ubuntu_atlas_requirements.txt b/build_tools/azure/ubuntu_atlas_requirements.txt index 396b07eff14c0..320b9d8fe4a2e 100644 --- a/build_tools/azure/ubuntu_atlas_requirements.txt +++ b/build_tools/azure/ubuntu_atlas_requirements.txt @@ -1,6 +1,6 @@ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py cython joblib==1.0.0 # min threadpoolctl==2.0.0 # min diff --git a/build_tools/circle/build_test_arm.sh b/build_tools/circle/build_test_arm.sh index c086f3c7813a4..7376244b2203a 100755 --- a/build_tools/circle/build_test_arm.sh +++ b/build_tools/circle/build_test_arm.sh @@ -6,7 +6,6 @@ set -x UNAMESTR=`uname` N_CORES=`nproc --all` - setup_ccache() { echo "Setting up ccache" mkdir /tmp/ccache/ @@ -20,13 +19,6 @@ setup_ccache() { ccache -M 0 } -# imports get_dep -source build_tools/shared.sh - -sudo add-apt-repository --remove ppa:ubuntu-toolchain-r/test -sudo apt-get update - -# Setup conda environment MINICONDA_URL="https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-aarch64.sh" # Install Mambaforge @@ -36,40 +28,13 @@ chmod +x mambaforge.sh && ./mambaforge.sh -b -p $MINICONDA_PATH export PATH=$MINICONDA_PATH/bin:$PATH mamba init --all --verbose mamba update --yes conda +# TODO Update conda-lock version from time to time +mamba install conda-lock=1.0.5 -y +conda-lock install --name $CONDA_ENV_NAME $LOCK_FILE +source activate $CONDA_ENV_NAME -# Create environment and install dependencies -mamba create -n testenv --yes $(get_dep python $PYTHON_VERSION) -source activate testenv - -# pin pip to 22.0.4 because pip 22.1 validates build dependencies in -# pyproject.toml. oldest-supported-numpy is part of the build dependencies in -# pyproject.toml so using pip 22.1 will cause an error since -# oldest-supported-numpy is not really meant to be installed in the -# environment. See https://github.com/scikit-learn/scikit-learn/pull/23336 for -# more details. -mamba install --verbose -y ccache \ - pip==22.0.4 \ - $(get_dep numpy $NUMPY_VERSION) \ - $(get_dep scipy $SCIPY_VERSION) \ - $(get_dep cython $CYTHON_VERSION) \ - $(get_dep joblib $JOBLIB_VERSION) \ - $(get_dep threadpoolctl $THREADPOOLCTL_VERSION) \ - $(get_dep pytest $PYTEST_VERSION) \ - $(get_dep pytest-xdist $PYTEST_XDIST_VERSION) setup_ccache -if [[ "$COVERAGE" == "true" ]]; then - # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe - # cf. https://github.com/nedbat/coveragepy/issues/1310 - mamba install --verbose -y codecov pytest-cov coverage=6.2 -fi - -if [[ "$TEST_DOCSTRINGS" == "true" ]]; then - # numpydoc requires sphinx - mamba install --verbose -y sphinx - mamba install --verbose -y numpydoc -fi - python --version # Set parallelism to $N_CORES + 1 to overlap IO bound tasks with CPU bound tasks on CI diff --git a/build_tools/circle/py39_conda_forge_environment.yml b/build_tools/circle/py39_conda_forge_environment.yml new file mode 100644 index 0000000000000..f5b6581ee2689 --- /dev/null +++ b/build_tools/circle/py39_conda_forge_environment.yml @@ -0,0 +1,19 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python=3.9 + - numpy + - blas + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pytest=6.2.5 + - pytest-xdist + - pillow + - pip=22.0.4 + - ccache diff --git a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock new file mode 100644 index 0000000000000..8b70af34e0e83 --- /dev/null +++ b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock @@ -0,0 +1,91 @@ +# Generated by conda-lock. +# platform: linux-aarch64 +# input_hash: e3e1ef206f1ca1cb3b6316fc18cc4c22a5dc95324159f4b0756b259d802aaf81 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2021.10.8-h4fd8a4c_0.tar.bz2#ad855209fcca3b45da677d409b16e021 +https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.36.1-h02ad14f_2.tar.bz2#3ca1a8e406eab04ffc3bfa6e8ac0a724 +https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-12.1.0-h41d5c85_16.tar.bz2#f053ad62fdac14fb8e73cfed4e8d2676 +https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-12.1.0-hd01590b_16.tar.bz2#b64391bb81cc2f914d57c0927ec8a26b +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-12.1.0-he9431aa_16.tar.bz2#69e5a58bbd94c934277f715160c1f0b5 +https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#98a1185182fec3c434069fa74e6473d6 +https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-12.1.0-h3242a24_16.tar.bz2#70e9f0947c17f3faf1a1974be0c110bf +https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a +https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.1-hb9de7d4_2.tar.bz2#08575a68724ff44a0cb24c6158511c0a +https://conda.anaconda.org/conda-forge/linux-aarch64/jbig-2.1-hf897c2e_2003.tar.bz2#a3d4206bcecf771e286e39155fe00b24 +https://conda.anaconda.org/conda-forge/linux-aarch64/jpeg-9e-h9cdd2b7_1.tar.bz2#584d93de10ab8d47874c5f29c29ba729 +https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-3.0-h01db608_0.tar.bz2#13505433bc073878ec237f8ff8ba1ea5 +https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.0.9-h4e544f5_7.tar.bz2#6ee071311281942e2fec227751e7efff +https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.10-hf897c2e_0.tar.bz2#cf24cc05d49de7c6a981f2d485cb6fb6 +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/libhiredis-1.0.2-h05efe27_0.tar.bz2#a87f068744fd20334cd41489eb163bee +https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-hf897c2e_0.tar.bz2#36fdbc05c9d9145ece86f5a63c3f352e +https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.20-pthreads_h6cb6f83_0.tar.bz2#1110034f2f90ca3c7ea35bf0d2eea15e +https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.32.1-hf897c2e_1000.tar.bz2#e038da5ef9095b0d79aac14a311394e7 +https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.2.2-hf897c2e_1.tar.bz2#833c405d24bf7e52022b61108e78028a +https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.11-h4e544f5_1014.tar.bz2#e829241b520bfd3187d921f82e9b4460 +https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.3-h01db608_1.tar.bz2#25b5ec27b49b04a997a87b0f00f5e205 +https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.3-headf329_1.tar.bz2#486b68148e121bc8bbadc3cefae4c04f +https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.0.3-h4e544f5_0.tar.bz2#19a1e30ba6680f2ad0795d985628663c +https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2#d0183ec6ce0b5aaa3486df25fa5f0ded +https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.9-h3557bc0_0.tar.bz2#e0c187f5ce240897762bbb89a8a407cc +https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2#a6c9016ae1ca5c47a3603ed4cd65fedd +https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.5-h6dd45c4_1.tar.bz2#9da6f161d0f47f8a29fa708cda8deda2 +https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-14_linuxaarch64_openblas.tar.bz2#e8a37033814609b27d188b35c134d007 +https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.0.9-h4e544f5_7.tar.bz2#6839e1d20fce65ff5f0f0bcf32841993 +https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.0.9-h4e544f5_7.tar.bz2#353cfe995ca6183994d5eb3e674ab42c +https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.13-h3557bc0_1004.tar.bz2#cc973f5f452272c397546eac588cddb3 +https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-14.0.3-hb2805f8_0.tar.bz2#0096034fdd07049c70f40853655ad8b3 +https://conda.anaconda.org/conda-forge/linux-aarch64/openblas-0.3.20-pthreads_h2d9dd7e_0.tar.bz2#db1b9433e8d04b2591111d75be683d5e +https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.1-h1a49cc3_0.tar.bz2#ccd3c3e1bde615ec934282f3481a1ede +https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.12-hd8af866_0.tar.bz2#7894e82ff743bd96c76585ddebe28e2a +https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.11-h4e544f5_1014.tar.bz2#5d6528db5739f248a7a5749d2dba8a27 +https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-h41fb7a4_0.tar.bz2#03434131cc82915a59513e1ab989fdd5 +https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.0.9-h4e544f5_7.tar.bz2#4014ebf8c97d8cb219bfc0a12344ceb6 +https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.5.1-h637f6b2_0.tar.bz2#0981c793a35b1e72d75d3a40e8dd69a4 +https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-14_linuxaarch64_openblas.tar.bz2#8a1d66921d3e7dacacc8dd3af6d5ec5f +https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-14_linuxaarch64_openblas.tar.bz2#1dcb7e50e399fc73824320b9ea709477 +https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.37-hbd635b3_2.tar.bz2#c95d3cee5815206d562fffa531a60a86 +https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.3.0-hdea21e4_3.tar.bz2#70385b4e904cf3fc9622319532c1a9eb +https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.38.5-hc74f5b8_0.tar.bz2#ac6e9256d71294f14a6aea6e1e537f37 +https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.0.9-h4e544f5_7.tar.bz2#4c345a372cf4936c8e959b8d266c4396 +https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.10.4-hdf53a3c_1.tar.bz2#c0b393690f63cdfb986b430971f09cc2 +https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.12-h012adcb_0.tar.bz2#d112a00b1ba7dda1f79735d2a4661ea3 +https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.9.0-14_linuxaarch64_openblas.tar.bz2#e18b63ca39fc7b5d7602d88440c0d0b1 +https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.2.2-h21830e5_0.tar.bz2#0b0287f266b3c32803830bbf6307c48d +https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.4.0-h45037e0_1.tar.bz2#c888c9aa7f6e60f2514f88c070ec6f45 +https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.12-h5016f1d_1_cpython.tar.bz2#09cceb4a3e723338d0fbed7c7d22e2a4 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/linux-aarch64/blas-devel-3.9.0-14_linuxaarch64_openblas.tar.bz2#a321d5f472b8b3e9d938540ca7277606 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.9-2_cp39.tar.bz2#c74e493d773fa544a312b0904abcfbfb +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 +https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.114-openblas.tar.bz2#240259abe13902a22c25ad1ff8082d90 +https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2021.10.8-py39h4420490_2.tar.bz2#aebb51e6774e3d98b8412e500afa638c +https://conda.anaconda.org/conda-forge/linux-aarch64/cython-0.29.29-py39h3d8bfb9_0.tar.bz2#18507b4cf568e8d1f661d31746d0db11 +https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.2-py39h110580c_1.tar.bz2#e5136a6aa77ec81ab5c6d3f9ba2ebf1d +https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.22.3-py39h451b137_2.tar.bz2#db82cd177da11c34dbbc29bee711a8d7 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.0-py39h2a8e185_2.tar.bz2#073167cf5063f41dd7b2918f9de492b0 +https://conda.anaconda.org/conda-forge/linux-aarch64/pluggy-1.0.0-py39ha65689a_3.tar.bz2#3ccbd600f5d9921e928da3d69a9720a9 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.2.0-py39ha65689a_0.tar.bz2#09fcd847a6f83a7c0ac32892c14e069c +https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.1-py39hb9a1dbb_3.tar.bz2#11dace3e5ebbaeb5069179cfa5b53923 +https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-14.0.0-py39h0fd3b05_1.tar.bz2#7182266a1f86f367d88c86a9ab560cca +https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.33.3-py39h0fd3b05_0.tar.bz2#0f8d88eb32e53e0756a4bceaa5d85d3e +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/noarch/pip-22.0.4-pyhd8ed1ab_0.tar.bz2#b1239ce8ef2a1eec485c398a683c5bff +https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-6.2.5-py39ha65689a_2.tar.bz2#1b663c678dd3032ef9dbdfd35165091c +https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.8.0-py39h59f125f_1.tar.bz2#c82bb1939eae2df3a6b1fa993fb4f3a3 +https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.5.2-py39hfed42d8_0.tar.bz2#9f90790067684c9f0ab1b07e6e82070a +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.5.2-py39ha65689a_0.tar.bz2#e5738e0c03863f94223c19aaf0f2564d +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e diff --git a/build_tools/azure/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py similarity index 85% rename from build_tools/azure/update_environments_and_lock_files.py rename to build_tools/update_environments_and_lock_files.py index d8487f2a808c2..c441c2451911b 100644 --- a/build_tools/azure/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -1,7 +1,7 @@ """Script to update CI environment files and associated lock files. To run it you need to be in the root folder of the scikit-learn repo: -python build_tools/azure/update_environments_and_lock_files.py +python build_tools/update_environments_and_lock_files.py Two scenarios where this script can be useful: - make sure that the latest versions of all the dependencies are used in the CI. @@ -88,6 +88,7 @@ def remove_from(alist, to_remove): conda_build_metadata_list = [ { "build_name": "pylatest_conda_forge_mkl_linux-64", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": common_dependencies + ["ccache"], @@ -97,6 +98,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pylatest_conda_forge_mkl_osx-64", + "folder": "build_tools/azure", "platform": "osx-64", "channel": "conda-forge", "conda_dependencies": common_dependencies @@ -107,6 +109,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pylatest_conda_mkl_no_openmp", + "folder": "build_tools/azure", "platform": "osx-64", "channel": "defaults", "conda_dependencies": common_dependencies + ["ccache"], @@ -116,6 +119,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pylatest_conda_forge_mkl_no_coverage", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": common_dependencies_without_coverage + ["ccache"], @@ -125,6 +129,7 @@ def remove_from(alist, to_remove): }, { "build_name": "py38_conda_defaults_openblas", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "defaults", "conda_dependencies": common_dependencies + ["ccache"], @@ -139,6 +144,7 @@ def remove_from(alist, to_remove): }, { "build_name": "py38_conda_forge_openblas_ubuntu_1804", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": common_dependencies_without_coverage + ["ccache"], @@ -146,6 +152,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pylatest_pip_openblas_pandas", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "defaults", "conda_dependencies": ["python", "ccache"], @@ -156,6 +163,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pylatest_pip_scipy_dev", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "defaults", "conda_dependencies": ["python", "ccache"], @@ -184,6 +192,7 @@ def remove_from(alist, to_remove): }, { "build_name": "pypy3", + "folder": "build_tools/azure", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": ["pypy"] @@ -193,12 +202,29 @@ def remove_from(alist, to_remove): + ["ccache"], "package_constraints": {"blas": "[build=openblas]"}, }, + { + "build_name": "py39_conda_forge", + "folder": "build_tools/circle", + "platform": "linux-aarch64", + "channel": "conda-forge", + "conda_dependencies": remove_from( + common_dependencies_without_coverage, ["pandas", "pyamg"] + ) + + ["pip", "ccache"], + "package_constraints": { + "python": "3.9", + # TODO remove constraint when pip > 22.1 is released. See + # https://github.com/pypa/pip/issues/11116 for more details. + "pip": "22.0.4", + }, + }, ] pip_build_metadata_list = [ { "build_name": "debian_atlas_32bit", + "folder": "build_tools/azure", "pip_dependencies": ["cython", "joblib", "threadpoolctl", "pytest"], "package_constraints": { "joblib": "min", @@ -211,6 +237,7 @@ def remove_from(alist, to_remove): }, { "build_name": "ubuntu_atlas", + "folder": "build_tools/azure", "pip_dependencies": [ "cython", "joblib", @@ -283,7 +310,7 @@ def get_conda_environment_content(build_metadata): """ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py channels: - {{ build_metadata['channel'] }} dependencies: @@ -301,16 +328,17 @@ def get_conda_environment_content(build_metadata): return template.render(build_metadata=build_metadata) -def write_conda_environment(build_metadata, folder_path): +def write_conda_environment(build_metadata): content = get_conda_environment_content(build_metadata) build_name = build_metadata["build_name"] + folder_path = Path(build_metadata["folder"]) output_path = folder_path / f"{build_name}_environment.yml" output_path.write_text(content) -def write_all_conda_environments(build_metadata_list, folder_path): +def write_all_conda_environments(build_metadata_list): for build_metadata in build_metadata_list: - write_conda_environment(build_metadata, folder_path) + write_conda_environment(build_metadata) def conda_lock(environment_path, lock_file_path, platform): @@ -323,8 +351,9 @@ def conda_lock(environment_path, lock_file_path, platform): execute_command(shlex.split(command)) -def create_conda_lock_file(build_metadata, folder_path): +def create_conda_lock_file(build_metadata): build_name = build_metadata["build_name"] + folder_path = Path(build_metadata["folder"]) environment_path = folder_path / f"{build_name}_environment.yml" platform = build_metadata["platform"] lock_file_basename = build_name @@ -335,10 +364,10 @@ def create_conda_lock_file(build_metadata, folder_path): conda_lock(environment_path, lock_file_path, platform) -def write_all_conda_lock_files(build_metadata_list, folder_path): +def write_all_conda_lock_files(build_metadata_list): for build_metadata in build_metadata_list: logger.info(build_metadata["build_name"]) - create_conda_lock_file(build_metadata, folder_path) + create_conda_lock_file(build_metadata) def get_pip_requirements_content(build_metadata): @@ -346,7 +375,7 @@ def get_pip_requirements_content(build_metadata): """ # DO NOT EDIT: this file is generated from the specification found in the # following script to centralize the configuration for all Azure CI builds: -# build_tools/azure/update_environments_and_lock_files.py +# build_tools/update_environments_and_lock_files.py {% for pip_dep in build_metadata['pip_dependencies'] %} {{ pip_dep | get_package_with_constraint(build_metadata, uses_pip=True) }} {% endfor %}""".strip() @@ -354,17 +383,18 @@ def get_pip_requirements_content(build_metadata): return template.render(build_metadata=build_metadata) -def write_pip_requirements(build_metadata, folder_path): +def write_pip_requirements(build_metadata): build_name = build_metadata["build_name"] content = get_pip_requirements_content(build_metadata) + folder_path = Path(build_metadata["folder"]) output_path = folder_path / f"{build_name}_requirements.txt" output_path.write_text(content) -def write_all_pip_requirements(build_metadata_list, folder_path): +def write_all_pip_requirements(build_metadata_list): for build_metadata in build_metadata_list: logger.info(build_metadata["build_name"]) - write_pip_requirements(build_metadata, folder_path) + write_pip_requirements(build_metadata) def pip_compile(pip_compile_path, requirements_path, lock_file_path): @@ -374,7 +404,7 @@ def pip_compile(pip_compile_path, requirements_path, lock_file_path): execute_command(shlex.split(command)) -def write_pip_lock_file(build_metadata, folder_path): +def write_pip_lock_file(build_metadata): build_name = build_metadata["build_name"] python_version = build_metadata["python_version"] environment_name = f"pip-tools-python{python_version}" @@ -396,24 +426,24 @@ def write_pip_lock_file(build_metadata, folder_path): environment_path = Path(environment_folder) pip_compile_path = environment_path / "bin" / "pip-compile" + folder_path = Path(build_metadata["folder"]) requirement_path = folder_path / f"{build_name}_requirements.txt" lock_file_path = folder_path / f"{build_name}_lock.txt" pip_compile(pip_compile_path, requirement_path, lock_file_path) -def write_all_pip_lock_files(build_metadata_list, folder_path): +def write_all_pip_lock_files(build_metadata_list): for build_metadata in build_metadata_list: - write_pip_lock_file(build_metadata, folder_path) + write_pip_lock_file(build_metadata) if __name__ == "__main__": - output_path = Path("build_tools/azure/") logger.info("Writing conda environments") - write_all_conda_environments(conda_build_metadata_list, output_path) + write_all_conda_environments(conda_build_metadata_list) logger.info("Writing conda lock files") - write_all_conda_lock_files(conda_build_metadata_list, output_path) + write_all_conda_lock_files(conda_build_metadata_list) logger.info("Writing pip requirements") - write_all_pip_requirements(pip_build_metadata_list, output_path) + write_all_pip_requirements(pip_build_metadata_list) logger.info("Writing pip lock files") - write_all_pip_lock_files(pip_build_metadata_list, output_path) + write_all_pip_lock_files(pip_build_metadata_list) From 5ec7ed6d9ea955a71d0ae2e986fd16c17042988f Mon Sep 17 00:00:00 2001 From: Ivan Sedykh Date: Thu, 19 May 2022 23:03:17 +0300 Subject: [PATCH 018/251] DOC changed <= symbol to \leq in tree module documentation (#23425) Co-authored-by: Ivan Sedykh <`sed.ivan.dm@gmail.com> --- doc/modules/tree.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/tree.rst b/doc/modules/tree.rst index 102bda44c3436..73500003b9ecf 100644 --- a/doc/modules/tree.rst +++ b/doc/modules/tree.rst @@ -452,7 +452,7 @@ feature :math:`j` and threshold :math:`t_m`, partition the data into .. math:: - Q_m^{left}(\theta) = \{(x, y) | x_j <= t_m\} + Q_m^{left}(\theta) = \{(x, y) | x_j \leq t_m\} Q_m^{right}(\theta) = Q_m \setminus Q_m^{left}(\theta) From 35a870a2858473c0c7653beb170abfd02e57dd89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Fri, 20 May 2022 09:41:56 +0200 Subject: [PATCH 019/251] CI Use lock files for Windows builds (#23379) --- azure-pipelines.yml | 8 +- build_tools/azure/install_win.sh | 37 ++---- .../py38_conda_forge_mkl_environment.yml | 22 ++++ .../py38_conda_forge_mkl_win-64_conda.lock | 121 ++++++++++++++++++ .../azure/py38_pip_openblas_32bit_lock.txt | 49 +++++++ .../py38_pip_openblas_32bit_requirements.txt | 12 ++ build_tools/azure/test_script.sh | 2 + build_tools/azure/windows.yml | 5 +- .../update_environments_and_lock_files.py | 64 +++++++-- 9 files changed, 280 insertions(+), 40 deletions(-) create mode 100644 build_tools/azure/py38_conda_forge_mkl_environment.yml create mode 100644 build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock create mode 100644 build_tools/azure/py38_pip_openblas_32bit_lock.txt create mode 100644 build_tools/azure/py38_pip_openblas_32bit_requirements.txt diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 8143cb7e04452..48c3021745fe0 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -275,15 +275,13 @@ jobs: matrix: py38_conda_forge_mkl: DISTRIB: 'conda' - CONDA_CHANNEL: 'conda-forge' - PYTHON_VERSION: '3.8' + LOCK_FILE: ./build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock CHECK_WARNINGS: 'true' - PYTHON_ARCH: '64' - # Unpin when pytest stalling issue is fixed - PYTEST_VERSION: '6.2.5' COVERAGE: 'true' SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '7' # non-default seed py38_pip_openblas_32bit: + DISTRIB: 'pip-windows' PYTHON_VERSION: '3.8' PYTHON_ARCH: '32' + LOCK_FILE: ./build_tools/azure/py38_pip_openblas_32bit_lock.txt SKLEARN_TESTS_GLOBAL_RANDOM_SEED: '8' # non-default seed diff --git a/build_tools/azure/install_win.sh b/build_tools/azure/install_win.sh index e2f9a0c2f25e9..459967e850042 100755 --- a/build_tools/azure/install_win.sh +++ b/build_tools/azure/install_win.sh @@ -3,34 +3,23 @@ set -e set -x -if [[ "$PYTHON_ARCH" == "64" ]]; then - conda create -n $VIRTUALENV -q -y python=$PYTHON_VERSION numpy scipy cython matplotlib wheel pillow joblib - +# defines the get_dep and show_installed_libraries functions +source build_tools/shared.sh + +if [[ "$DISTRIB" == "conda" ]]; then + conda update -n base conda -y + # TODO: update conda-lock version from time to time + conda install pip -y + pip install conda-lock==1.0.5 + conda-lock install --name $VIRTUALENV $LOCK_FILE source activate $VIRTUALENV - - pip install threadpoolctl - - if [[ "$PYTEST_VERSION" == "*" ]]; then - pip install pytest - else - pip install pytest==$PYTEST_VERSION - fi else - pip install numpy scipy cython pytest wheel pillow joblib threadpoolctl -fi - -if [[ "$PYTEST_XDIST_VERSION" != "none" ]]; then - pip install pytest-xdist -fi - -if [[ "$COVERAGE" == "true" ]]; then - # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe - # cf. https://github.com/nedbat/coveragepy/issues/1310 - pip install coverage codecov pytest-cov coverage==6.2 + python -m venv $VIRTUALENV + source $VIRTUALENV/Scripts/activate + pip install -r $LOCK_FILE fi -python --version -pip --version +show_installed_libraries # Build scikit-learn python setup.py bdist_wheel diff --git a/build_tools/azure/py38_conda_forge_mkl_environment.yml b/build_tools/azure/py38_conda_forge_mkl_environment.yml new file mode 100644 index 0000000000000..ce1a3d1430c25 --- /dev/null +++ b/build_tools/azure/py38_conda_forge_mkl_environment.yml @@ -0,0 +1,22 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python=3.8 + - numpy + - blas[build=mkl] + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pytest=6.2.5 + - pytest-xdist + - pillow + - codecov + - pytest-cov + - coverage=6.2 + - wheel + - pip diff --git a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock new file mode 100644 index 0000000000000..106703d0ee7d8 --- /dev/null +++ b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock @@ -0,0 +1,121 @@ +# Generated by conda-lock. +# platform: win-64 +# input_hash: 05232660711e1b0074907c31600bace2ace58a920e879f252b9e4e5b3add11d7 +@EXPLICIT +https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2021.10.8-h5b45459_0.tar.bz2#2ddd48c9b52f7f65361b9645b2c5d370 +https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2022.0.0-h57928b3_3663.tar.bz2#9617f0042f5eea1155970e6861f3ab6b +https://conda.anaconda.org/conda-forge/win-64/mkl-include-2022.0.0-h0e2418a_796.tar.bz2#7e7184f5402aed0e2bf84d0e2cb215d1 +https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2#b0309b72560df66f71a9d5e34a5efdfa +https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.20348.0-h57928b3_0.tar.bz2#6d666b6ea8251231ff508062d1e41f9c +https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2#53a1c73e1e3d185516d7e3af177596d9 +https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2#774130a326dee16f1ceb05cc687ee4f0 +https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.29.30037-h902a5da_6.tar.bz2#33d07ebe91062743eabc9e53a60d18e1 +https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2#4289d80fb4d272f1f3b56cfe87ac90bd +https://conda.anaconda.org/conda-forge/win-64/vc-14.2-hb210afc_6.tar.bz2#c2aecbc9b00ba6f352e27d3d61fd31fb +https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h8ffe710_4.tar.bz2#7c03c66026944073040cb19a4f3ec3c9 +https://conda.anaconda.org/conda-forge/win-64/icu-70.1-h0e60522_0.tar.bz2#64073396a905b6df895ab2489fae3847 +https://conda.anaconda.org/conda-forge/win-64/jbig-2.1-h8d14728_2003.tar.bz2#37dcc26d63c315f6c0588579dca810da +https://conda.anaconda.org/conda-forge/win-64/jpeg-9e-h8ffe710_1.tar.bz2#cda58df0a6d1165a82a0dfd59e9be5b0 +https://conda.anaconda.org/conda-forge/win-64/lerc-3.0-h0e60522_0.tar.bz2#756c8b51a32758df2ed6cddcc7b7ed58 +https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.0.9-h8ffe710_7.tar.bz2#e7b12a6cf353395dda7ed36b9041048b +https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.10-h8ffe710_0.tar.bz2#ad4246997621fdf913fe6f958bc16fd4 +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.16-he774522_0.tar.bz2#bdfeadc9348e4d9fbe4821e81bf8f221 +https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.4-h8ffe710_1.tar.bz2#04286d905a0dcb7f7d4a12bdfe02516d +https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.2.2-h8ffe710_1.tar.bz2#24e23990217d3542fb821759a41d6ec2 +https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.11-h8ffe710_1014.tar.bz2#5e57ffcf6d651d94d329a3e9ce1f8f21 +https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.3-h8ffe710_1.tar.bz2#d12763533276560a931c1bd3df1adf63 +https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2#066552ac6b907ec6d72c0ddab29050dc +https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1o-h8ffe710_0.tar.bz2#afd7ea72111c4cc1fe8101ae2a321bda +https://conda.anaconda.org/conda-forge/win-64/pcre-8.45-h0e60522_0.tar.bz2#3cd3948bb5de74ebef93b6be6d8cf0d5 +https://conda.anaconda.org/conda-forge/win-64/sqlite-3.38.5-h8ffe710_0.tar.bz2#9f9c961fc099c7c91a27f38890c42498 +https://conda.anaconda.org/conda-forge/win-64/tbb-2021.5.0-h2d74725_1.tar.bz2#8f00f39dbd7deaba11410b0b6e7b2cb4 +https://conda.anaconda.org/conda-forge/win-64/tk-8.6.12-h8ffe710_0.tar.bz2#c69a5047cc9291ae40afd4a1ad6f0c0f +https://conda.anaconda.org/conda-forge/win-64/xz-5.2.5-h62dcd97_1.tar.bz2#eabcbfedd14d7c18a514afca09ea0ebb +https://conda.anaconda.org/conda-forge/win-64/gettext-0.19.8.1-ha2e2712_1008.tar.bz2#7097f745c7b794ce3e2a1ffe3195580f +https://conda.anaconda.org/conda-forge/win-64/krb5-1.19.3-h1176d77_0.tar.bz2#2e0d447ab95d58d3ea1222121ec57f9f +https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.0.9-h8ffe710_7.tar.bz2#ca57bf17ba92eed4ca2667a4c5df9343 +https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.0.9-h8ffe710_7.tar.bz2#75c0a84c7f22d57cda6aaf7205b4a27c +https://conda.anaconda.org/conda-forge/win-64/libclang13-14.0.3-default_h77d9078_0.tar.bz2#7e38ed4e8cde97ab81ac251c3cbe8212 +https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h0e60522_0.tar.bz2#e1a22282de0169c93e4ffe6ce6acc212 +https://conda.anaconda.org/conda-forge/win-64/libwebp-1.2.2-h57928b3_0.tar.bz2#80c0ce63cf8f69c5a5781ab7a9645942 +https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2#fe759119b8b3bfa720b8762c6fdc35de +https://conda.anaconda.org/conda-forge/win-64/mkl-2022.0.0-h0e2418a_796.tar.bz2#54baa34953c02445bfd6f566c45decbb +https://conda.anaconda.org/conda-forge/win-64/python-3.8.13-h9a09f29_0_cpython.tar.bz2#41de0ad5db009f4f829f9d415a6a4200 +https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.11-h8ffe710_1014.tar.bz2#8f3f8b243814bddb2898c314ed024e03 +https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.2-h6255e5f_1.tar.bz2#90702967af600ea2e2c7f7968c0ce099 +https://conda.anaconda.org/conda-forge/noarch/atomicwrites-1.4.0-pyh9f0ad1d_0.tar.bz2#5e36230ffaf3b7bb599424592684ae53 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.0.9-h8ffe710_7.tar.bz2#fd458f76be2068973734834202ac0352 +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-14_win64_mkl.tar.bz2#5166ac76c8e0607a2977cf3331ed37a9 +https://conda.anaconda.org/conda-forge/win-64/libclang-14.0.3-default_h77d9078_0.tar.bz2#1988b8c400db69820a72e9a5015988e7 +https://conda.anaconda.org/conda-forge/win-64/libglib-2.70.2-h3be07f2_4.tar.bz2#355750a238b15920d75ec3c49554c3e3 +https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.37-h1d00b33_2.tar.bz2#005ddb14b8f876ed6a85b76dfc9892db +https://conda.anaconda.org/conda-forge/win-64/libtiff-4.3.0-hc4061b1_3.tar.bz2#2e9f4af7dd16047f2f370562fb9e81fc +https://conda.anaconda.org/conda-forge/win-64/mkl-devel-2022.0.0-h57928b3_797.tar.bz2#88bea1a9a80bea1270e7017994142816 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2#a1f820480193ea83582b13249a7e7bd9 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/win-64/python_abi-3.8-2_cp38.tar.bz2#80b95487563108d4cf92ff6384050751 +https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 +https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.9-hcd874cb_0.tar.bz2#9cef622e75683c17d05ae62d66e69e6c +https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2#46878ebb6b9cbd8afcf8088d7ef00ece +https://conda.anaconda.org/conda-forge/win-64/brotli-1.0.9-h8ffe710_7.tar.bz2#bdd3236d1f6962e8e6953276d12b7e5b +https://conda.anaconda.org/conda-forge/win-64/certifi-2021.10.8-py38haa244fe_2.tar.bz2#632c416a7b1cda7712254bc58dd3de10 +https://conda.anaconda.org/conda-forge/win-64/cffi-1.15.0-py38hd8c33c5_0.tar.bz2#b6a0fcd49b88b2fef6892785c8e33092 +https://conda.anaconda.org/conda-forge/win-64/coverage-6.2-py38h294d835_0.tar.bz2#9fcad0bc875eb5cf8b7e45e128cfd886 +https://conda.anaconda.org/conda-forge/win-64/cython-0.29.30-py38h885f38d_0.tar.bz2#7cdd65a187c9c04207b394b67c6cf64b +https://conda.anaconda.org/conda-forge/win-64/freetype-2.10.4-h546665d_1.tar.bz2#1215a2e49d23da91c28d97cff8de35ea +https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.20.2-hdff456e_1.tar.bz2#ddebb9004ed53fbf745a2f69faf22b6b +https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.2-py38hbd9d945_1.tar.bz2#171f7a504550a6093548f618df9a76f5 +https://conda.anaconda.org/conda-forge/win-64/lcms2-2.12-h2a16943_0.tar.bz2#fee639c27301c4165b4d1f7e442de8a5 +https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-14_win64_mkl.tar.bz2#b73477bd66b6efdcbcb8c7fb527794ae +https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-14_win64_mkl.tar.bz2#741ce71c5f5522fbec9508830b05cc32 +https://conda.anaconda.org/conda-forge/win-64/libxcb-1.13-hcd874cb_1004.tar.bz2#a6d7fd030532378ecb6ba435cd9f8234 +https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.4.0-hb211442_1.tar.bz2#0991d2e943e5ba7ec9b7b32eec14e2e3 +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/win-64/pluggy-1.0.0-py38haa244fe_3.tar.bz2#bd23d4e34ce9647a448d8048be89b2dd +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/win-64/setuptools-62.3.1-py38haa244fe_0.tar.bz2#920449401ee73243bf2d4c8f9bc40892 +https://conda.anaconda.org/conda-forge/win-64/tornado-6.1-py38h294d835_3.tar.bz2#f7ac7c9ee9c07ff085df3564b9ea70f2 +https://conda.anaconda.org/conda-forge/win-64/unicodedata2-14.0.0-py38h294d835_1.tar.bz2#957e1074c481cbeba55ac1a5e4c07637 +https://conda.anaconda.org/conda-forge/win-64/win_inet_pton-1.1.0-py38haa244fe_4.tar.bz2#8adadd81dc9c22710b69628ec6e6d41a +https://conda.anaconda.org/conda-forge/win-64/brotlipy-0.7.0-py38h294d835_1004.tar.bz2#f12a527d29a252cef0abbfd752d3ab01 +https://conda.anaconda.org/conda-forge/win-64/cryptography-36.0.2-py38hb7941b4_1.tar.bz2#e8c71e699193603b90555aec63d5e60f +https://conda.anaconda.org/conda-forge/win-64/fonttools-4.33.3-py38h294d835_0.tar.bz2#092c08f5f754280122530958639839d1 +https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.20.2-he07aa86_1.tar.bz2#fb9c7ea19dea6268a5cb8cf6b43ebca9 +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-14_win64_mkl.tar.bz2#7f34614de31d915e048f9fc5d50c9529 +https://conda.anaconda.org/conda-forge/win-64/numpy-1.22.3-py38h1d2777f_2.tar.bz2#1d64035cbc8ce5ce5659001caf5a019c +https://conda.anaconda.org/conda-forge/win-64/pillow-9.1.1-py38hd8e0db4_0.tar.bz2#c14d08dfe6367ae2d8db3c785094ef9b +https://conda.anaconda.org/conda-forge/noarch/pip-22.1-pyhd8ed1ab_0.tar.bz2#bc23e31a667caa608150cbd34b4e4796 +https://conda.anaconda.org/conda-forge/win-64/pysocks-1.7.1-py38haa244fe_5.tar.bz2#81fd9157802c3d99efc4a24563cfe885 +https://conda.anaconda.org/conda-forge/win-64/pytest-6.2.5-py38haa244fe_2.tar.bz2#cde2cd74dd2f599d7313ccad592ec0e9 +https://conda.anaconda.org/conda-forge/win-64/sip-6.5.1-py38h885f38d_2.tar.bz2#61080bcdb3a9c61ef47d8afc7eae5232 +https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-14_win64_mkl.tar.bz2#5b29a65b3456d68f42b8eb516409316a +https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.5.2-py38he529843_0.tar.bz2#437b6a636997b284e69d33360d88e634 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.9.0-py38h885f38d_0.tar.bz2#61ec05b4445091a90a769785710f2e2c +https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.3-h467ea89_1.tar.bz2#a6148c66e63782296ae0ccbc60745693 +https://conda.anaconda.org/conda-forge/win-64/scipy-1.8.0-py38ha1292f7_1.tar.bz2#18623ace6c1d5a2e1c1b294cab3f994c +https://conda.anaconda.org/conda-forge/win-64/blas-2.114-mkl.tar.bz2#df41b867954336603ad9c8d21a829867 +https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.4-py38h885f38d_0.tar.bz2#a7855cbd399e5c173739a1122420db9b +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.5.2-py38haa244fe_0.tar.bz2#3f67b7e43451da103b28f5fab2fe8feb +https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 diff --git a/build_tools/azure/py38_pip_openblas_32bit_lock.txt b/build_tools/azure/py38_pip_openblas_32bit_lock.txt new file mode 100644 index 0000000000000..b30f7c2c40fb3 --- /dev/null +++ b/build_tools/azure/py38_pip_openblas_32bit_lock.txt @@ -0,0 +1,49 @@ +# +# This file is autogenerated by pip-compile with python 3.8 +# To update, run: +# +# pip-compile --output-file=build_tools/azure/py38_pip_openblas_32bit_lock.txt build_tools/azure/py38_pip_openblas_32bit_requirements.txt +# +attrs==21.4.0 + # via pytest +cython==0.29.30 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +execnet==1.9.0 + # via pytest-xdist +iniconfig==1.1.1 + # via pytest +joblib==1.1.0 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +numpy==1.22.3 + # via + # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt + # scipy +packaging==21.3 + # via pytest +pillow==9.1.1 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +pluggy==1.0.0 + # via pytest +py==1.11.0 + # via + # pytest + # pytest-forked +pyparsing==3.0.9 + # via packaging +pytest==6.2.5 + # via + # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt + # pytest-forked + # pytest-xdist +pytest-forked==1.4.0 + # via pytest-xdist +pytest-xdist==2.5.0 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +scipy==1.8.1 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +threadpoolctl==3.1.0 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt +toml==0.10.2 + # via pytest +wheel==0.37.1 + # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt diff --git a/build_tools/azure/py38_pip_openblas_32bit_requirements.txt b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt new file mode 100644 index 0000000000000..fd0cf73fe1c97 --- /dev/null +++ b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt @@ -0,0 +1,12 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for all Azure CI builds: +# build_tools/update_environments_and_lock_files.py +numpy +scipy +cython +joblib +threadpoolctl +pytest==6.2.5 +pytest-xdist +pillow +wheel diff --git a/build_tools/azure/test_script.sh b/build_tools/azure/test_script.sh index 3d74a0d98b374..03e12e8ab4702 100755 --- a/build_tools/azure/test_script.sh +++ b/build_tools/azure/test_script.sh @@ -9,6 +9,8 @@ if [[ "$DISTRIB" =~ ^conda.* ]]; then source activate $VIRTUALENV elif [[ "$DISTRIB" == "ubuntu" || "$DISTRIB" == "debian-32" || "$DISTRIB" == "pip-nogil" ]]; then source $VIRTUALENV/bin/activate +elif [[ "$DISTRIB" == "pip-windows" ]]; then + source $VIRTUALENV/Scripts/activate fi if [[ "$BUILD_WITH_ICC" == "true" ]]; then diff --git a/build_tools/azure/windows.yml b/build_tools/azure/windows.yml index 3e1d282f3d79a..c11fa617eefcf 100644 --- a/build_tools/azure/windows.yml +++ b/build_tools/azure/windows.yml @@ -16,7 +16,6 @@ jobs: VIRTUALENV: 'testvenv' JUNITXML: 'test-data.xml' SKLEARN_SKIP_NETWORK_TESTS: '1' - PYTEST_VERSION: '5.2.1' PYTEST_XDIST_VERSION: 'latest' TEST_DIR: '$(Agent.WorkFolder)/tmp_folder' SHOW_SHORT_SUMMARY: 'false' @@ -30,8 +29,8 @@ jobs: displayName: Check selected tests for all random seeds condition: eq(variables['Build.Reason'], 'PullRequest') - bash: echo "##vso[task.prependpath]$CONDA/Scripts" - displayName: Add conda to PATH for 64 bit Python - condition: eq(variables['PYTHON_ARCH'], '64') + displayName: Add conda to PATH + condition: startsWith(variables['DISTRIB'], 'conda') - task: UsePythonVersion@0 inputs: versionSpec: '$(PYTHON_VERSION)' diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index c441c2451911b..175a790b40a53 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -26,7 +26,6 @@ - conda-lock. The version should match the one used in the CI in build_tools/azure/install.sh - pip-tools -- jinja2 """ @@ -36,10 +35,11 @@ from pathlib import Path import shlex import json +import logging -from jinja2 import Environment +import click -import logging +from jinja2 import Environment logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) @@ -202,6 +202,15 @@ def remove_from(alist, to_remove): + ["ccache"], "package_constraints": {"blas": "[build=openblas]"}, }, + { + "build_name": "py38_conda_forge_mkl", + "folder": "build_tools/azure", + "platform": "win-64", + "channel": "conda-forge", + "conda_dependencies": remove_from(common_dependencies, ["pandas", "pyamg"]) + + ["wheel", "pip"], + "package_constraints": {"python": "3.8", "blas": "[build=mkl]"}, + }, { "build_name": "py39_conda_forge", "folder": "build_tools/circle", @@ -252,6 +261,25 @@ def remove_from(alist, to_remove): # pip-compile "python_version": "3.8.5", }, + { + "build_name": "py38_pip_openblas_32bit", + "folder": "build_tools/azure", + "pip_dependencies": [ + "numpy", + "scipy", + "cython", + "joblib", + "threadpoolctl", + "pytest", + "pytest-xdist", + "pillow", + "wheel", + ], + # The Windows 32bit build use 3.8.10. No cross-compilation support for + # pip-compile, we are going to assume the pip lock file on a Linux + # 64bit machine gives appropriate versions + "python_version": "3.8.10", + }, ] @@ -437,13 +465,33 @@ def write_all_pip_lock_files(build_metadata_list): write_pip_lock_file(build_metadata) -if __name__ == "__main__": +@click.command() +@click.option( + "--select-build", + default="", + help="Regex to restrict the builds we want to update environment and lock files", +) +def main(select_build): + filtered_conda_build_metadata_list = [ + each + for each in conda_build_metadata_list + if re.search(select_build, each["build_name"]) + ] logger.info("Writing conda environments") - write_all_conda_environments(conda_build_metadata_list) + write_all_conda_environments(filtered_conda_build_metadata_list) logger.info("Writing conda lock files") - write_all_conda_lock_files(conda_build_metadata_list) + write_all_conda_lock_files(filtered_conda_build_metadata_list) + filtered_pip_build_metadata_list = [ + each + for each in pip_build_metadata_list + if re.search(select_build, each["build_name"]) + ] logger.info("Writing pip requirements") - write_all_pip_requirements(pip_build_metadata_list) + write_all_pip_requirements(filtered_pip_build_metadata_list) logger.info("Writing pip lock files") - write_all_pip_lock_files(pip_build_metadata_list) + write_all_pip_lock_files(filtered_pip_build_metadata_list) + + +if __name__ == "__main__": + main() From 12209179d176b589ed21c234aca62e0065d6c3d8 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 20 May 2022 10:28:59 -0400 Subject: [PATCH 020/251] MNT Fix setup.py clean with setuptools >= 61 (#23426) --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index 7ad32e95e53a5..2b0584f772e6d 100755 --- a/setup.py +++ b/setup.py @@ -290,6 +290,7 @@ def setup_package(): from setuptools import setup metadata["version"] = VERSION + metadata["packages"] = ["sklearn"] else: if sys.version_info < required_python_version: required_version = "%d.%d" % required_python_version From 09504d660f25343cfc1be981384da33077321170 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Fri, 20 May 2022 17:01:38 +0200 Subject: [PATCH 021/251] Revert change in sklearn.extmath.util and fix randomized_svd benchmark (#23421) --- benchmarks/bench_plot_randomized_svd.py | 11 +++++++---- sklearn/utils/extmath.py | 7 +++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/benchmarks/bench_plot_randomized_svd.py b/benchmarks/bench_plot_randomized_svd.py index 896b29ef471dd..cb9c208e1161d 100644 --- a/benchmarks/bench_plot_randomized_svd.py +++ b/benchmarks/bench_plot_randomized_svd.py @@ -107,7 +107,7 @@ # Determine when to switch to batch computation for matrix norms, # in case the reconstructed (dense) matrix is too large -MAX_MEMORY = int(2e9) +MAX_MEMORY = int(4e9) # The following datasets can be downloaded manually from: # CIFAR 10: https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz @@ -323,8 +323,11 @@ def norm_diff(A, norm=2, msg=True, random_state=None): def scalable_frobenius_norm_discrepancy(X, U, s, V): - # if the input is not too big, just call scipy - if X.shape[0] * X.shape[1] < MAX_MEMORY: + if not sp.sparse.issparse(X) or ( + X.shape[0] * X.shape[1] * X.dtype.itemsize < MAX_MEMORY + ): + # if the input is not sparse or sparse but not too big, + # U.dot(np.diag(s).dot(V)) will fit in RAM A = X - U.dot(np.diag(s).dot(V)) return norm_diff(A, norm="fro") @@ -498,7 +501,7 @@ def bench_c(datasets, n_comps): if __name__ == "__main__": random_state = check_random_state(1234) - power_iter = np.linspace(0, 6, 7, dtype=int) + power_iter = np.arange(0, 6) n_comps = 50 for dataset_name in datasets: diff --git a/sklearn/utils/extmath.py b/sklearn/utils/extmath.py index 4438f67fb5729..089bd2efadff5 100644 --- a/sklearn/utils/extmath.py +++ b/sklearn/utils/extmath.py @@ -216,6 +216,9 @@ def randomized_range_finder( # Generating normal random vectors with shape: (A.shape[1], size) Q = random_state.normal(size=(A.shape[1], size)) + if hasattr(A, "dtype") and A.dtype.kind == "f": + # Ensure f32 is preserved as f32 + Q = Q.astype(A.dtype, copy=False) # Deal with "auto" mode if power_iteration_normalizer == "auto": @@ -241,10 +244,6 @@ def randomized_range_finder( # Extract an orthonormal basis Q, _ = linalg.qr(safe_sparse_dot(A, Q), mode="economic") - if hasattr(A, "dtype") and A.dtype.kind == "f": - # Ensure f32 is preserved as f32 - Q = Q.astype(A.dtype, copy=False) - return Q From be58ee6c6433017acf60718d5d8959bb3b409edf Mon Sep 17 00:00:00 2001 From: Naipawat Poolsawat <43258373+boraxpr@users.noreply.github.com> Date: Sat, 21 May 2022 04:53:12 +0700 Subject: [PATCH 022/251] DOC Ensures that sklearn.metrics._ranking.auc passes numpydoc validation (#23433) --- sklearn/metrics/_ranking.py | 5 +++-- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/metrics/_ranking.py b/sklearn/metrics/_ranking.py index 4e88bd5edc888..0d201bf99bc10 100644 --- a/sklearn/metrics/_ranking.py +++ b/sklearn/metrics/_ranking.py @@ -55,14 +55,15 @@ def auc(x, y): Parameters ---------- x : ndarray of shape (n,) - x coordinates. These must be either monotonic increasing or monotonic + X coordinates. These must be either monotonic increasing or monotonic decreasing. y : ndarray of shape, (n,) - y coordinates. + Y coordinates. Returns ------- auc : float + Area Under the Curve. See Also -------- diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 8a0f3c10ec8e5..22c635f8baaa2 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -41,7 +41,6 @@ "sklearn.metrics._classification.log_loss", "sklearn.metrics._plot.det_curve.plot_det_curve", "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", - "sklearn.metrics._ranking.auc", "sklearn.metrics._ranking.coverage_error", "sklearn.metrics._ranking.dcg_score", "sklearn.metrics._ranking.label_ranking_average_precision_score", From ee881f2b6659463c04a7a78ec2efdac1c9e2c994 Mon Sep 17 00:00:00 2001 From: Robert Hommes <38126540+RobertHGit@users.noreply.github.com> Date: Sat, 21 May 2022 20:31:49 +0200 Subject: [PATCH 023/251] DOC Implement documentation suggestions pairwise distance (#23431) Co-authored-by: Thomas J. Fan --- sklearn/metrics/pairwise.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 33b2a9901902b..934bf9d4e0e4f 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1862,7 +1862,7 @@ def pairwise_distances( valid scipy.spatial.distance metrics), the scikit-learn implementation will be used, which is faster and has support for sparse matrices (except for 'cityblock'). For a verbose description of the metrics from - scikit-learn, see the __doc__ of the sklearn.pairwise.distance_metrics + scikit-learn, see :func:`sklearn.metrics.pairwise.distance_metrics` function. Read more in the :ref:`User Guide `. From 15fc66a45dd5a8be2048e2182274334b934dfbe3 Mon Sep 17 00:00:00 2001 From: John Koumentis <39617722+JoKoum@users.noreply.github.com> Date: Sat, 21 May 2022 22:36:31 +0300 Subject: [PATCH 024/251] DOC Fixes typo in empirical_covariance.py (#23441) --- sklearn/covariance/_empirical_covariance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/covariance/_empirical_covariance.py b/sklearn/covariance/_empirical_covariance.py index 4362a14f04f6e..532390d74bded 100644 --- a/sklearn/covariance/_empirical_covariance.py +++ b/sklearn/covariance/_empirical_covariance.py @@ -207,7 +207,7 @@ def get_precision(self): return precision def fit(self, X, y=None): - """Fit the maximum liklihood covariance estimator to X. + """Fit the maximum likelihood covariance estimator to X. Parameters ---------- From 5afcc3864c6553a68cdfdc6a99daaf366a700f33 Mon Sep 17 00:00:00 2001 From: Peter Jansson <21022916+peter-jansson@users.noreply.github.com> Date: Mon, 23 May 2022 11:40:32 +0200 Subject: [PATCH 025/251] DOC Added instruction for installation on Alpine Linux (#23438) Co-authored-by: Thomas J. Fan --- doc/install.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/doc/install.rst b/doc/install.rst index 9710e98b2a555..faae9fccb60f3 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -188,6 +188,19 @@ dependencies (numpy, scipy) that scikit-learn requires. The following is an incomplete list of OS and python distributions that provide their own version of scikit-learn. +Alpine Linux +------------ + +Alpine Linux's package is provided through the `official repositories +`__ as +``py3-scikit-learn`` for Python. +It can be installed by typing the following command: + +.. prompt:: bash $ + + sudo apk add py3-scikit-learn + + Arch Linux ---------- From efac78f39d5336dca98060e26c49193eb1eec4dc Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Mon, 23 May 2022 09:26:55 -0400 Subject: [PATCH 026/251] DOC Improved clarity, consistency and formatting for `fastica`/`FastICA` docstrings (#23309) * Improved clarity, consistency and formatting for FastICA docstrings * Updated wording --- sklearn/decomposition/_fastica.py | 62 +++++++++++---------- sklearn/decomposition/tests/test_fastica.py | 6 +- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/sklearn/decomposition/_fastica.py b/sklearn/decomposition/_fastica.py index 490a3323344d1..a6ddac4cb3347 100644 --- a/sklearn/decomposition/_fastica.py +++ b/sklearn/decomposition/_fastica.py @@ -180,22 +180,23 @@ def fastica( `n_features` is the number of features. n_components : int, default=None - Number of components to extract. If None no dimension reduction - is performed. + Number of components to use. If None is passed, all are used. algorithm : {'parallel', 'deflation'}, default='parallel' - Apply a parallel or deflational FASTICA algorithm. + Specify which algorithm to use for FastICA. whiten : str or bool, default="warn" Specify the whitening strategy to use. - If 'arbitrary-variance' (default), a whitening with variance arbitrary is used. - If 'unit-variance', the whitening matrix is rescaled to ensure that each - recovered source has unit variance. - If False, the data is already considered to be whitened, and no - whitening is performed. + + - If 'arbitrary-variance' (default), a whitening with variance + arbitrary is used. + - If 'unit-variance', the whitening matrix is rescaled to ensure that + each recovered source has unit variance. + - If False, the data is already considered to be whitened, and no + whitening is performed. .. deprecated:: 1.1 - From version 1.3, `whiten='unit-variance'` will be used by default. + Starting in v1.3, `whiten='unit-variance'` will be used by default. `whiten=True` is deprecated from 1.1 and will raise ValueError in 1.3. Use `whiten=arbitrary-variance` instead. @@ -206,10 +207,10 @@ def fastica( You can also provide your own function. It should return a tuple containing the value of the function, and of its derivative, in the point. The derivative should be averaged along its last dimension. - Example: + Example:: - def my_g(x): - return x ** 3, np.mean(3 * x ** 2, axis=-1) + def my_g(x): + return x ** 3, (3 * x ** 2).mean(axis=-1) fun_args : dict, default=None Arguments to send to the functional form. @@ -219,13 +220,13 @@ def my_g(x): max_iter : int, default=200 Maximum number of iterations to perform. - tol : float, default=1e-04 + tol : float, default=1e-4 A positive scalar giving the tolerance at which the un-mixing matrix is considered to have converged. w_init : ndarray of shape (n_components, n_components), default=None - Initial un-mixing array of dimension (n.comp,n.comp). - If None (default) then an array of normal r.v.'s is used. + Initial un-mixing array. If `w_init=None`, then an array of values + drawn from a normal distribution is used. random_state : int, RandomState instance or None, default=None Used to initialize ``w_init`` when not specified, with a @@ -332,18 +333,20 @@ class FastICA(_ClassNamePrefixFeaturesOutMixin, TransformerMixin, BaseEstimator) Number of components to use. If None is passed, all are used. algorithm : {'parallel', 'deflation'}, default='parallel' - Apply parallel or deflational algorithm for FastICA. + Specify which algorithm to use for FastICA. whiten : str or bool, default="warn" Specify the whitening strategy to use. - If 'arbitrary-variance' (default), a whitening with variance arbitrary is used. - If 'unit-variance', the whitening matrix is rescaled to ensure that each - recovered source has unit variance. - If False, the data is already considered to be whitened, and no - whitening is performed. + + - If 'arbitrary-variance' (default), a whitening with variance + arbitrary is used. + - If 'unit-variance', the whitening matrix is rescaled to ensure that + each recovered source has unit variance. + - If False, the data is already considered to be whitened, and no + whitening is performed. .. deprecated:: 1.1 - From version 1.3 whiten='unit-variance' will be used by default. + Starting in v1.3, `whiten='unit-variance'` will be used by default. `whiten=True` is deprecated from 1.1 and will raise ValueError in 1.3. Use `whiten=arbitrary-variance` instead. @@ -353,24 +356,27 @@ class FastICA(_ClassNamePrefixFeaturesOutMixin, TransformerMixin, BaseEstimator) or 'cube'. You can also provide your own function. It should return a tuple containing the value of the function, and of its derivative, in the - point. Example:: + point. The derivative should be averaged along its last dimension. + Example:: def my_g(x): return x ** 3, (3 * x ** 2).mean(axis=-1) fun_args : dict, default=None Arguments to send to the functional form. - If empty and if fun='logcosh', fun_args will take value + If empty or None and if fun='logcosh', fun_args will take value {'alpha' : 1.0}. max_iter : int, default=200 Maximum number of iterations during fit. tol : float, default=1e-4 - Tolerance on update at each iteration. + A positive scalar giving the tolerance at which the + un-mixing matrix is considered to have converged. w_init : ndarray of shape (n_components, n_components), default=None - The mixing matrix to be used to initialize the algorithm. + Initial un-mixing array. If `w_init=None`, then an array of values + drawn from a normal distribution is used. random_state : int, RandomState instance or None, default=None Used to initialize ``w_init`` when not specified, with a @@ -486,14 +492,14 @@ def _fit(self, X, compute_sources=False): if self._whiten == "warn": warnings.warn( - "From version 1.3 whiten='unit-variance' will be used by default.", + "Starting in v1.3, whiten='unit-variance' will be used by default.", FutureWarning, ) self._whiten = "arbitrary-variance" if self._whiten is True: warnings.warn( - "From version 1.3 whiten=True should be specified as " + "Starting in v1.3, whiten=True should be specified as " "whiten='arbitrary-variance' (its current behaviour). This " "behavior is deprecated in 1.1 and will raise ValueError in 1.3.", FutureWarning, diff --git a/sklearn/decomposition/tests/test_fastica.py b/sklearn/decomposition/tests/test_fastica.py index 082b7d68dee79..b8c99803df373 100644 --- a/sklearn/decomposition/tests/test_fastica.py +++ b/sklearn/decomposition/tests/test_fastica.py @@ -71,7 +71,7 @@ def test_fastica_return_dtypes(global_dtype): # FIXME remove filter in 1.3 @pytest.mark.filterwarnings( - "ignore:From version 1.3 whiten='unit-variance' will be used by default." + "ignore:Starting in v1.3, whiten='unit-variance' will be used by default." ) @pytest.mark.parametrize("add_noise", [True, False]) def test_fastica_simple(add_noise, global_random_seed, global_dtype): @@ -353,7 +353,7 @@ def test_inverse_transform( # FIXME remove filter in 1.3 @pytest.mark.filterwarnings( - "ignore:From version 1.3 whiten='unit-variance' will be used by default." + "ignore:Starting in v1.3, whiten='unit-variance' will be used by default." ) def test_fastica_errors(): n_features = 3 @@ -398,7 +398,7 @@ def test_fastica_whiten_default_value_deprecation(ica): """ rng = np.random.RandomState(0) X = rng.random_sample((100, 10)) - with pytest.warns(FutureWarning, match=r"From version 1.3 whiten="): + with pytest.warns(FutureWarning, match=r"Starting in v1.3, whiten="): ica.fit(X) assert ica._whiten == "arbitrary-variance" From 517c68dd88fca5e6e72ec308009a2fb7ff7ee44b Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 23 May 2022 09:35:03 -0400 Subject: [PATCH 027/251] MNT Centralize conda-lock version into min_dependencies.py (#23432) --- build_tools/azure/install.sh | 3 +-- build_tools/azure/install_win.sh | 3 +-- build_tools/circle/build_test_arm.sh | 6 ++++-- build_tools/update_environments_and_lock_files.py | 2 +- sklearn/_min_dependencies.py | 9 +++++---- 5 files changed, 12 insertions(+), 11 deletions(-) diff --git a/build_tools/azure/install.sh b/build_tools/azure/install.sh index ff836c4a2c787..e240acadc1ec5 100755 --- a/build_tools/azure/install.sh +++ b/build_tools/azure/install.sh @@ -74,8 +74,7 @@ pre_python_environment_install() { python_environment_install_and_activate() { if [[ "$DISTRIB" == "conda"* ]]; then conda update -n base conda -y - # pin conda-lock to latest released version (needs manual update from time to time) - conda install -c conda-forge conda-lock==1.0.5 -y + conda install -c conda-forge "$(get_dep conda-lock min)" -y conda-lock install --name $VIRTUALENV $LOCK_FILE source activate $VIRTUALENV diff --git a/build_tools/azure/install_win.sh b/build_tools/azure/install_win.sh index 459967e850042..b28bc86270925 100755 --- a/build_tools/azure/install_win.sh +++ b/build_tools/azure/install_win.sh @@ -8,9 +8,8 @@ source build_tools/shared.sh if [[ "$DISTRIB" == "conda" ]]; then conda update -n base conda -y - # TODO: update conda-lock version from time to time conda install pip -y - pip install conda-lock==1.0.5 + pip install "$(get_dep conda-lock min)" conda-lock install --name $VIRTUALENV $LOCK_FILE source activate $VIRTUALENV else diff --git a/build_tools/circle/build_test_arm.sh b/build_tools/circle/build_test_arm.sh index 7376244b2203a..b3de234d87c67 100755 --- a/build_tools/circle/build_test_arm.sh +++ b/build_tools/circle/build_test_arm.sh @@ -6,6 +6,9 @@ set -x UNAMESTR=`uname` N_CORES=`nproc --all` +# defines the get_dep and show_installed_libraries functions +source build_tools/shared.sh + setup_ccache() { echo "Setting up ccache" mkdir /tmp/ccache/ @@ -28,8 +31,7 @@ chmod +x mambaforge.sh && ./mambaforge.sh -b -p $MINICONDA_PATH export PATH=$MINICONDA_PATH/bin:$PATH mamba init --all --verbose mamba update --yes conda -# TODO Update conda-lock version from time to time -mamba install conda-lock=1.0.5 -y +mamba install "$(get_dep conda-lock min)" -y conda-lock install --name $CONDA_ENV_NAME $LOCK_FILE source activate $CONDA_ENV_NAME diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index 175a790b40a53..6d80464153cc5 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -24,7 +24,7 @@ To run this script you need: - conda-lock. The version should match the one used in the CI in - build_tools/azure/install.sh + sklearn/_min_dependencies.py - pip-tools """ diff --git a/sklearn/_min_dependencies.py b/sklearn/_min_dependencies.py index 957e1e01f0551..36ad29298d937 100644 --- a/sklearn/_min_dependencies.py +++ b/sklearn/_min_dependencies.py @@ -1,4 +1,5 @@ """All minimum dependencies for scikit-learn.""" +from collections import defaultdict import platform import argparse @@ -46,14 +47,14 @@ "Pillow": ("7.1.2", "docs"), "sphinx-prompt": ("1.3.0", "docs"), "sphinxext-opengraph": ("0.4.2", "docs"), + # XXX: Pin conda-lock to the latest released version (needs manual update + # from time to time) + "conda-lock": ("1.0.5", "maintenance"), } # create inverse mapping for setuptools -tag_to_packages: dict = { - extra: [] - for extra in ["build", "install", "docs", "examples", "tests", "benchmark"] -} +tag_to_packages: dict = defaultdict(list) for package, (min_version, extras) in dependent_packages.items(): for extra in extras.split(", "): tag_to_packages[extra].append("{}>={}".format(package, min_version)) From a317702ef57dbf82c64dea056df537aff14f44bc Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Mon, 23 May 2022 18:21:37 +0200 Subject: [PATCH 028/251] DOC rework plot_document_classification_20newsgroups.py example (#22928) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> Co-authored-by: Olivier Grisel Co-authored-by: Julien Jerphanion --- ...ot_document_classification_20newsgroups.py | 530 +++++++++++------- 1 file changed, 331 insertions(+), 199 deletions(-) diff --git a/examples/text/plot_document_classification_20newsgroups.py b/examples/text/plot_document_classification_20newsgroups.py index 7f24861a0e9ce..b53920178aa86 100644 --- a/examples/text/plot_document_classification_20newsgroups.py +++ b/examples/text/plot_document_classification_20newsgroups.py @@ -3,45 +3,37 @@ Classification of text documents using sparse features ====================================================== -This is an example showing how scikit-learn can be used to classify documents -by topics using a bag-of-words approach. This example uses a scipy.sparse -matrix to store the features and demonstrates various classifiers that can -efficiently handle sparse matrices. - -The dataset used in this example is the 20 newsgroups dataset. It will be -automatically downloaded, then cached. +This is an example showing how scikit-learn can be used to classify documents by +topics using a bag-of-words approach. This example uses a Tf-idf-weighted +document-term sparse matrix to encode the features and demonstrates various +classifiers that can efficiently handle sparse matrices. """ # Author: Peter Prettenhofer # Olivier Grisel # Mathieu Blondel +# Arturo Amor # Lars Buitinck # License: BSD 3 clause # %% -# Configuration options for the analysis -# -------------------------------------- - -# If True, we use `HashingVectorizer`, otherwise we use a `TfidfVectorizer` -USE_HASHING = False - -# Number of features used by `HashingVectorizer` -N_FEATURES = 2**16 +# Load data +# --------- +# We define a function to load data from :ref:`20newsgroups_dataset`, which +# comprises around 18000 newsgroups posts on 20 topics split in two subsets: one +# for training (or development) and the other one for testing (or for +# performance evaluation). Note that, by default, the text samples contain some +# message metadata such as `'headers'`, `'footers'` (signatures) and `'quotes'` +# to other posts. The `fetch_20newsgroups` function therefore accepts a +# parameter named `remove` to attempt stripping such information that can make +# the classification problem "too easy". This is achieved using simple +# heuristics that are neither perfect nor standard, hence disabled by default. -# Optional feature selection: either False, or an integer: the number of -# features to select -SELECT_CHI2 = False - - -# %% -# Load data from the training set -# ------------------------------------ -# Let's load data from the newsgroups dataset which comprises around 18000 -# newsgroups posts on 20 topics split in two subsets: one for training (or -# development) and the other one for testing (or for performance evaluation). from sklearn.datasets import fetch_20newsgroups +from sklearn.feature_extraction.text import TfidfVectorizer +from time import time categories = [ "alt.atheism", @@ -50,157 +42,304 @@ "sci.space", ] -data_train = fetch_20newsgroups( - subset="train", categories=categories, shuffle=True, random_state=42 -) -data_test = fetch_20newsgroups( - subset="test", categories=categories, shuffle=True, random_state=42 -) -print("data loaded") +def size_mb(docs): + return sum(len(s.encode("utf-8")) for s in docs) / 1e6 -# order of labels in `target_names` can be different from `categories` -target_names = data_train.target_names +def load_dataset(verbose=False, remove=()): + """Load and vectorize the 20 newsgroups dataset.""" -def size_mb(docs): - return sum(len(s.encode("utf-8")) for s in docs) / 1e6 + data_train = fetch_20newsgroups( + subset="train", + categories=categories, + shuffle=True, + random_state=42, + remove=remove, + ) + + data_test = fetch_20newsgroups( + subset="test", + categories=categories, + shuffle=True, + random_state=42, + remove=remove, + ) + + # order of labels in `target_names` can be different from `categories` + target_names = data_train.target_names + + # split target in a training set and a test set + y_train, y_test = data_train.target, data_test.target + + # Extracting features from the training data using a sparse vectorizer + t0 = time() + vectorizer = TfidfVectorizer( + sublinear_tf=True, max_df=0.5, min_df=5, stop_words="english" + ) + X_train = vectorizer.fit_transform(data_train.data) + duration_train = time() - t0 + + # Extracting features from the test data using the same vectorizer + t0 = time() + X_test = vectorizer.transform(data_test.data) + duration_test = time() - t0 + + feature_names = vectorizer.get_feature_names_out() + + if verbose: + + # compute size of loaded data + data_train_size_mb = size_mb(data_train.data) + data_test_size_mb = size_mb(data_test.data) + + print( + f"{len(data_train.data)} documents - " + f"{data_train_size_mb:.2f}MB (training set)" + ) + print(f"{len(data_test.data)} documents - {data_test_size_mb:.2f}MB (test set)") + print(f"{len(target_names)} categories") + print( + f"vectorize training done in {duration_train:.3f}s " + f"at {data_train_size_mb / duration_train:.3f}MB/s" + ) + print(f"n_samples: {X_train.shape[0]}, n_features: {X_train.shape[1]}") + print( + f"vectorize testing done in {duration_test:.3f}s " + f"at {data_test_size_mb / duration_test:.3f}MB/s" + ) + print(f"n_samples: {X_test.shape[0]}, n_features: {X_test.shape[1]}") + + return X_train, X_test, y_train, y_test, feature_names, target_names -data_train_size_mb = size_mb(data_train.data) -data_test_size_mb = size_mb(data_test.data) +# %% +# Compare feature effects +# ----------------------- +# We train a first classification model without attempting to strip the metadata +# of the dataset. -print( - "%d documents - %0.3fMB (training set)" % (len(data_train.data), data_train_size_mb) +X_train, X_test, y_train, y_test, feature_names, target_names = load_dataset( + verbose=True ) -print("%d documents - %0.3fMB (test set)" % (len(data_test.data), data_test_size_mb)) -print("%d categories" % len(target_names)) # %% -# Vectorize the training and test data -# ------------------------------------- -# -# split a training set and a test set -y_train, y_test = data_train.target, data_test.target +# Our first model is an instance of the +# :class:`~sklearn.linear_model.RidgeClassifier` class. This is a linear +# classification model that uses the mean squared error on {-1, 1} encoded +# targets, one for each possible class. Contrary to +# :class:`~sklearn.linear_model.LogisticRegression`, +# :class:`~sklearn.linear_model.RidgeClassifier` does not +# provide probabilistic predictions (no `predict_proba` method), +# but it is often faster to train. + +from sklearn.linear_model import RidgeClassifier + +clf = RidgeClassifier(tol=1e-2, solver="sparse_cg") +clf.fit(X_train, y_train) +pred = clf.predict(X_test) # %% -# Extracting features from the training data using a sparse vectorizer -from time import time +# We plot the confusion matrix of this classifier to find if there is a pattern +# in the classification errors. -from sklearn.feature_extraction.text import TfidfVectorizer -from sklearn.feature_extraction.text import HashingVectorizer +import matplotlib.pyplot as plt +from sklearn.metrics import ConfusionMatrixDisplay + +fig, ax = plt.subplots(figsize=(10, 5)) +ConfusionMatrixDisplay.from_predictions(y_test, pred, ax=ax) +ax.xaxis.set_ticklabels(target_names) +ax.yaxis.set_ticklabels(target_names) +_ = ax.set_title( + f"Confusion Matrix for {clf.__class__.__name__}\non the original documents" +) + +# %% +# The confusion matrix highlights that documents of the `alt.atheism` class are +# often confused with documents with the class `talk.religion.misc` class and +# vice-versa which is expected since the topics are semantically related. +# +# We also observe that some documents of the `sci.space` class can be misclassified as +# `comp.graphics` while the converse is much rarer. A manual inspection of those +# badly classified documents would be required to get some insights on this +# asymmetry. It could be the case that the vocabulary of the space topic could +# be more specific than the vocabulary for computer graphics. +# +# We can gain a deeper understanding of how this classifier makes its decisions +# by looking at the words with the highest average feature effects: + +import pandas as pd +import numpy as np -t0 = time() -if USE_HASHING: - vectorizer = HashingVectorizer( - stop_words="english", alternate_sign=False, n_features=N_FEATURES +def plot_feature_effects(): + # learned coefficients weighted by frequency of appearance + average_feature_effects = clf.coef_ * np.asarray(X_train.mean(axis=0)).ravel() + + for i, label in enumerate(target_names): + top5 = np.argsort(average_feature_effects[i])[-5:][::-1] + if i == 0: + top = pd.DataFrame(feature_names[top5], columns=[label]) + top_indices = top5 + else: + top[label] = feature_names[top5] + top_indices = np.concatenate((top_indices, top5), axis=None) + top_indices = np.unique(top_indices) + predictive_words = feature_names[top_indices] + + # plot feature effects + bar_size = 0.25 + padding = 0.75 + y_locs = np.arange(len(top_indices)) * (4 * bar_size + padding) + + fig, ax = plt.subplots(figsize=(10, 8)) + for i, label in enumerate(target_names): + ax.barh( + y_locs + (i - 2) * bar_size, + average_feature_effects[i, top_indices], + height=bar_size, + label=label, + ) + ax.set( + yticks=y_locs, + yticklabels=predictive_words, + ylim=[ + 0 - 4 * bar_size, + len(top_indices) * (4 * bar_size + padding) - 4 * bar_size, + ], ) - X_train = vectorizer.transform(data_train.data) -else: - vectorizer = TfidfVectorizer(sublinear_tf=True, max_df=0.5, stop_words="english") - X_train = vectorizer.fit_transform(data_train.data) -duration = time() - t0 -print("done in %fs at %0.3fMB/s" % (duration, data_train_size_mb / duration)) -print("n_samples: %d, n_features: %d" % X_train.shape) + ax.legend(loc="lower right") + + print("top 5 keywords per class:") + print(top) + + return ax + + +_ = plot_feature_effects().set_title("Average feature effect on the original data") # %% -# Extracting features from the test data using the same vectorizer -t0 = time() -X_test = vectorizer.transform(data_test.data) -duration = time() - t0 -print("done in %fs at %0.3fMB/s" % (duration, data_test_size_mb / duration)) -print("n_samples: %d, n_features: %d" % X_test.shape) +# We can observe that the most predictive words are often strongly positively +# associated with a single class and negatively associated with all the other +# classes. Most of those positive associations are quite easy to interpret. +# However, some words such as `"god"` and `"people"` are positively associated to +# both `"talk.misc.religion"` and `"alt.atheism"` as those two classes expectedly +# share some common vocabulary. Notice however that there are also words such as +# `"christian"` and `"morality"` that are only positively associated with +# `"talk.misc.religion"`. Furthermore, in this version of the dataset, the word +# `"caltech"` is one of the top predictive features for atheism due to pollution +# in the dataset coming from some sort of metadata such as the email addresses +# of the sender of previous emails in the discussion as can be seen below: + +data_train = fetch_20newsgroups( + subset="train", categories=categories, shuffle=True, random_state=42 +) + +for doc in data_train.data: + if "caltech" in doc: + print(doc) + break # %% -# mapping from integer feature name to original token string -if USE_HASHING: - feature_names = None -else: - feature_names = vectorizer.get_feature_names_out() +# Such headers, signature footers (and quoted metadata from previous messages) +# can be considered side information that artificially reveals the newsgroup by +# identifying the registered members and one would rather want our text +# classifier to only learn from the "main content" of each text document instead +# of relying on the leaked identity of the writers. +# +# The `remove` option of the 20 newsgroups dataset loader in scikit-learn allows +# to heuristically attempt to filter out some of this unwanted metadata that +# makes the classification problem artificially easier. Be aware that such +# filtering of the text contents is far from perfect. +# +# Let us try to leverage this option to train a text classifier that does not +# rely too much on this kind of metadata to make its decisions: +( + X_train, + X_test, + y_train, + y_test, + feature_names, + target_names, +) = load_dataset(remove=("headers", "footers", "quotes")) + +clf = RidgeClassifier(tol=1e-2, solver="sparse_cg") +clf.fit(X_train, y_train) +pred = clf.predict(X_test) + +fig, ax = plt.subplots(figsize=(10, 5)) +ConfusionMatrixDisplay.from_predictions(y_test, pred, ax=ax) +ax.xaxis.set_ticklabels(target_names) +ax.yaxis.set_ticklabels(target_names) +_ = ax.set_title( + f"Confusion Matrix for {clf.__class__.__name__}\non filtered documents" +) # %% -# Keeping only the best features -from sklearn.feature_selection import SelectKBest, chi2 +# By looking at the confusion matrix, it is more evident that the scores of the +# model trained with metadata were over-optimistic. The classification problem +# without access to the metadata is less accurate but more representative of the +# intended text classification problem. -if SELECT_CHI2: - print("Extracting %d best features by a chi-squared test" % SELECT_CHI2) - t0 = time() - ch2 = SelectKBest(chi2, k=SELECT_CHI2) - X_train = ch2.fit_transform(X_train, y_train) - X_test = ch2.transform(X_test) - if feature_names is not None: - # keep selected feature names - feature_names = feature_names[ch2.get_support()] - print("done in %fs" % (time() - t0)) - print() +_ = plot_feature_effects().set_title("Average feature effects on filtered documents") +# %% +# In the next section we keep the dataset without metadata to compare several +# classifiers. # %% -# Benchmark classifiers -# ------------------------------------ +# Benchmarking classifiers +# ------------------------ # # First we define small benchmarking utilities -import numpy as np -from sklearn import metrics -from sklearn.utils.extmath import density - -def trim(s): - """Trim string to fit on terminal (assuming 80-column display)""" - return s if len(s) <= 80 else s[:77] + "..." +from sklearn.utils.extmath import density +from sklearn import metrics -def benchmark(clf): +def benchmark(clf, custom_name=False): print("_" * 80) print("Training: ") print(clf) t0 = time() clf.fit(X_train, y_train) train_time = time() - t0 - print("train time: %0.3fs" % train_time) + print(f"train time: {train_time:.3}s") t0 = time() pred = clf.predict(X_test) test_time = time() - t0 - print("test time: %0.3fs" % test_time) + print(f"test time: {test_time:.3}s") score = metrics.accuracy_score(y_test, pred) - print("accuracy: %0.3f" % score) + print(f"accuracy: {score:.3}") if hasattr(clf, "coef_"): - print("dimensionality: %d" % clf.coef_.shape[1]) - print("density: %f" % density(clf.coef_)) - - if feature_names is not None: - print("top 10 keywords per class:") - for i, label in enumerate(target_names): - top10 = np.argsort(clf.coef_[i])[-10:] - print(trim("%s: %s" % (label, " ".join(feature_names[top10])))) + print(f"dimensionality: {clf.coef_.shape[1]}") + print(f"density: {density(clf.coef_)}") print() - print("classification report:") - print(metrics.classification_report(y_test, pred, target_names=target_names)) - - print("confusion matrix:") - print(metrics.confusion_matrix(y_test, pred)) - print() - clf_descr = str(clf).split("(")[0] + if custom_name: + clf_descr = str(custom_name) + else: + clf_descr = clf.__class__.__name__ return clf_descr, score, train_time, test_time # %% -# We now train and test the datasets with 15 different classification -# models and get performance results for each model. -from sklearn.feature_selection import SelectFromModel -from sklearn.linear_model import RidgeClassifier -from sklearn.pipeline import Pipeline +# We now train and test the datasets with 8 different classification models and +# get performance results for each model. The goal of this study is to highlight +# the computation/accuracy tradeoffs of different types of classifiers for +# such a multi-class text classification problem. +# +# Notice that the most important hyperparameters values were tuned using a grid +# search procedure not shown in this notebook for the sake of simplicity. + +from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC from sklearn.linear_model import SGDClassifier -from sklearn.linear_model import Perceptron -from sklearn.linear_model import PassiveAggressiveClassifier -from sklearn.naive_bayes import BernoulliNB, ComplementNB, MultinomialNB +from sklearn.naive_bayes import ComplementNB from sklearn.neighbors import KNeighborsClassifier from sklearn.neighbors import NearestCentroid from sklearn.ensemble import RandomForestClassifier @@ -208,90 +347,83 @@ def benchmark(clf): results = [] for clf, name in ( - (RidgeClassifier(tol=1e-2, solver="sag"), "Ridge Classifier"), - (Perceptron(max_iter=50), "Perceptron"), - (PassiveAggressiveClassifier(max_iter=50), "Passive-Aggressive"), - (KNeighborsClassifier(n_neighbors=10), "kNN"), - (RandomForestClassifier(), "Random forest"), + (LogisticRegression(C=5, max_iter=1000), "Logistic Regression"), + (RidgeClassifier(alpha=1.0, solver="sparse_cg"), "Ridge Classifier"), + (KNeighborsClassifier(n_neighbors=100), "kNN"), + (RandomForestClassifier(), "Random Forest"), + # L2 penalty Linear SVC + (LinearSVC(C=0.1, dual=False, max_iter=1000), "Linear SVC"), + # L2 penalty Linear SGD + ( + SGDClassifier( + loss="log_loss", alpha=1e-4, n_iter_no_change=3, early_stopping=True + ), + "log-loss SGD", + ), + # NearestCentroid (aka Rocchio classifier) + (NearestCentroid(), "NearestCentroid"), + # Sparse naive Bayes classifier + (ComplementNB(alpha=0.1), "Complement naive Bayes"), ): print("=" * 80) print(name) - results.append(benchmark(clf)) - -for penalty in ["l2", "l1"]: - print("=" * 80) - print("%s penalty" % penalty.upper()) - # Train Liblinear model - results.append(benchmark(LinearSVC(penalty=penalty, dual=False, tol=1e-3))) - - # Train SGD model - results.append(benchmark(SGDClassifier(alpha=0.0001, max_iter=50, penalty=penalty))) - -# Train SGD with Elastic Net penalty -print("=" * 80) -print("Elastic-Net penalty") -results.append( - benchmark(SGDClassifier(alpha=0.0001, max_iter=50, penalty="elasticnet")) -) - -# Train NearestCentroid without threshold -print("=" * 80) -print("NearestCentroid (aka Rocchio classifier)") -results.append(benchmark(NearestCentroid())) - -# Train sparse Naive Bayes classifiers -print("=" * 80) -print("Naive Bayes") -results.append(benchmark(MultinomialNB(alpha=0.01))) -results.append(benchmark(BernoulliNB(alpha=0.01))) -results.append(benchmark(ComplementNB(alpha=0.1))) - -print("=" * 80) -print("LinearSVC with L1-based feature selection") -# The smaller C, the stronger the regularization. -# The more regularization, the more sparsity. -results.append( - benchmark( - Pipeline( - [ - ( - "feature_selection", - SelectFromModel(LinearSVC(penalty="l1", dual=False, tol=1e-3)), - ), - ("classification", LinearSVC(penalty="l2")), - ] - ) - ) -) - + results.append(benchmark(clf, name)) # %% -# Add plots -# ------------------------------------ -# The bar plot indicates the accuracy, training time (normalized) and test time -# (normalized) of each classifier. -import matplotlib.pyplot as plt +# Plot accuracy, training and test time of each classifier +# -------------------------------------------------------- +# The scatter plots show the trade-off between the test accuracy and the +# training and testing time of each classifier. indices = np.arange(len(results)) results = [[x[i] for x in results] for i in range(4)] clf_names, score, training_time, test_time = results -training_time = np.array(training_time) / np.max(training_time) -test_time = np.array(test_time) / np.max(test_time) - -plt.figure(figsize=(12, 8)) -plt.title("Score") -plt.barh(indices, score, 0.2, label="score", color="navy") -plt.barh(indices + 0.3, training_time, 0.2, label="training time", color="c") -plt.barh(indices + 0.6, test_time, 0.2, label="test time", color="darkorange") -plt.yticks(()) -plt.legend(loc="best") -plt.subplots_adjust(left=0.25) -plt.subplots_adjust(top=0.95) -plt.subplots_adjust(bottom=0.05) - -for i, c in zip(indices, clf_names): - plt.text(-0.3, i, c) - -plt.show() +training_time = np.array(training_time) +test_time = np.array(test_time) + +fig, ax1 = plt.subplots(figsize=(10, 8)) +ax1.scatter(score, training_time, s=60) +ax1.set( + title="Score-training time trade-off", + yscale="log", + xlabel="test accuracy", + ylabel="training time (s)", +) +fig, ax2 = plt.subplots(figsize=(10, 8)) +ax2.scatter(score, test_time, s=60) +ax2.set( + title="Score-test time trade-off", + yscale="log", + xlabel="test accuracy", + ylabel="test time (s)", +) + +for i, txt in enumerate(clf_names): + ax1.annotate(txt, (score[i], training_time[i])) + ax2.annotate(txt, (score[i], test_time[i])) + +# %% +# The naive Bayes model has the best trade-off between score and +# training/testing time, while Random Forest is both slow to train, expensive to +# predict and has a comparatively bad accuracy. This is expected: for +# high-dimensional prediction problems, linear models are often better suited as +# most problems become linearly separable when the feature space has 10,000 +# dimensions or more. +# +# The difference in training speed and accuracy of the linear models can be +# explained by the choice of the loss function they optimize and the kind of +# regularization they use. Be aware that some linear models with the same loss +# but a different solver or regularization configuration may yield different +# fitting times and test accuracy. We can observe on the second plot that once +# trained, all linear models have approximately the same prediction speed which +# is expected because they all implement the same prediction function. +# +# KNeighborsClassifier has a relatively low accuracy and has the highest testing +# time. The long prediction time is also expected: for each prediction the model +# has to compute the pairwise distances between the testing sample and each +# document in the training set, which is computationally expensive. Furthermore, +# the "curse of dimensionality" harms the ability of this model to yield +# competitive accuracy in the high dimensional feature space of text +# classification problems. From b0ef82b5d58f71e883dad622519d574d404ff68d Mon Sep 17 00:00:00 2001 From: Michel de Ruiter Date: Mon, 23 May 2022 23:42:28 +0200 Subject: [PATCH 029/251] DOC Fix pinball loss fomula in linear_model.rst (#23445) A minus sign got lost there. --- doc/modules/linear_model.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/linear_model.rst b/doc/modules/linear_model.rst index 125c78a5043b7..09a8eff4b23d4 100644 --- a/doc/modules/linear_model.rst +++ b/doc/modules/linear_model.rst @@ -1512,7 +1512,7 @@ see also :class:`~sklearn.metrics.mean_pinball_loss`, \begin{cases} q t, & t > 0, \\ 0, & t = 0, \\ - (1-q) t, & t < 0 + (q-1) t, & t < 0 \end{cases} and the L1 penalty controlled by parameter ``alpha``, similar to From 8cf97770533d4cd3d269380929540bed3cc86b9d Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Tue, 24 May 2022 21:59:55 +1000 Subject: [PATCH 030/251] DOCS Fix broken link (#23449) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/presentations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/presentations.rst b/doc/presentations.rst index 15b02469d3a6c..8a74cd6331bf6 100644 --- a/doc/presentations.rst +++ b/doc/presentations.rst @@ -9,7 +9,7 @@ New to Scientific Python? ========================== For those that are still new to the scientific Python ecosystem, we highly recommend the `Python Scientific Lecture Notes -`_. This will help you find your footing a +`_. This will help you find your footing a bit and will definitely improve your scikit-learn experience. A basic understanding of NumPy arrays is recommended to make the most of scikit-learn. From 7c5bee0f3e37b4977e3a096e523da2f331331c56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Tue, 24 May 2022 16:19:55 +0200 Subject: [PATCH 031/251] CI Use lock files for CircleCI doc builds (#23429) --- .circleci/config.yml | 28 +-- README.rst | 2 +- .../azure/debian_atlas_32bit_requirements.txt | 2 +- ...38_conda_defaults_openblas_environment.yml | 2 +- .../py38_conda_forge_mkl_environment.yml | 2 +- ...forge_openblas_ubuntu_1804_environment.yml | 2 +- .../py38_pip_openblas_32bit_requirements.txt | 2 +- ...t_conda_forge_mkl_linux-64_environment.yml | 2 +- ...onda_forge_mkl_no_coverage_environment.yml | 2 +- ...est_conda_forge_mkl_osx-64_environment.yml | 2 +- ...latest_conda_mkl_no_openmp_environment.yml | 2 +- ...latest_pip_openblas_pandas_environment.yml | 2 +- .../pylatest_pip_scipy_dev_environment.yml | 2 +- build_tools/azure/pypy3_environment.yml | 2 +- .../azure/ubuntu_atlas_requirements.txt | 2 +- build_tools/circle/build_doc.sh | 33 +-- build_tools/circle/doc_environment.yml | 30 +++ build_tools/circle/doc_linux-64_conda.lock | 235 ++++++++++++++++++ .../doc_min_dependencies_environment.yml | 30 +++ .../doc_min_dependencies_linux-64_conda.lock | 166 +++++++++++++ .../circle/py39_conda_forge_environment.yml | 2 +- .../update_environments_and_lock_files.py | 57 ++++- doc/conf.py | 2 +- sklearn/_min_dependencies.py | 2 +- 24 files changed, 540 insertions(+), 73 deletions(-) create mode 100644 build_tools/circle/doc_environment.yml create mode 100644 build_tools/circle/doc_linux-64_conda.lock create mode 100644 build_tools/circle/doc_min_dependencies_environment.yml create mode 100644 build_tools/circle/doc_min_dependencies_linux-64_conda.lock diff --git a/.circleci/config.yml b/.circleci/config.yml index e34f48ec34f34..7d526dc058510 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -8,18 +8,7 @@ jobs: - OMP_NUM_THREADS: 2 - MKL_NUM_THREADS: 2 - CONDA_ENV_NAME: testenv - - PYTHON_VERSION: 3.8 - - NUMPY_VERSION: 'min' - - SCIPY_VERSION: 'min' - - MATPLOTLIB_VERSION: 'min' - - CYTHON_VERSION: 'min' - - SCIKIT_IMAGE_VERSION: 'min' - - SPHINX_VERSION: 'min' - - PANDAS_VERSION: 'min' - - SPHINX_GALLERY_VERSION: 'min' - - NUMPYDOC_VERSION: 'min' - - SPHINX_PROMPT_VERSION: 'min' - - SPHINXEXT_OPENGRAPH_VERSION: 'min' + - LOCK_FILE: build_tools/circle/doc_min_dependencies_linux-64_conda.lock steps: - checkout - run: ./build_tools/circle/checkout_merge_commit.sh @@ -53,20 +42,7 @@ jobs: - OMP_NUM_THREADS: 2 - MKL_NUM_THREADS: 2 - CONDA_ENV_NAME: testenv - - PYTHON_VERSION: '3.9' - - NUMPY_VERSION: 'latest' - - SCIPY_VERSION: 'latest' - - MATPLOTLIB_VERSION: 'latest' - - CYTHON_VERSION: 'latest' - - SCIKIT_IMAGE_VERSION: 'latest' - # Bump the sphinx version from time to time. Avoid latest sphinx version - # that tends to break things slightly too often - - SPHINX_VERSION: 4.2.0 - - PANDAS_VERSION: 'latest' - - SPHINX_GALLERY_VERSION: 'latest' - - NUMPYDOC_VERSION: 'latest' - - SPHINX_PROMPT_VERSION: 'latest' - - SPHINXEXT_OPENGRAPH_VERSION: 'latest' + - LOCK_FILE: build_tools/circle/doc_linux-64_conda.lock steps: - checkout - run: ./build_tools/circle/checkout_merge_commit.sh diff --git a/README.rst b/README.rst index ad101cec6c673..61af9d3e91e3f 100644 --- a/README.rst +++ b/README.rst @@ -38,7 +38,7 @@ .. |JoblibMinVersion| replace:: 1.0.0 .. |ThreadpoolctlMinVersion| replace:: 2.0.0 .. |MatplotlibMinVersion| replace:: 3.1.2 -.. |Scikit-ImageMinVersion| replace:: 0.14.5 +.. |Scikit-ImageMinVersion| replace:: 0.16.2 .. |PandasMinVersion| replace:: 1.0.5 .. |SeabornMinVersion| replace:: 0.9.0 .. |PytestMinVersion| replace:: 5.0.1 diff --git a/build_tools/azure/debian_atlas_32bit_requirements.txt b/build_tools/azure/debian_atlas_32bit_requirements.txt index 2708f7b8ff5e8..d856832d474dc 100644 --- a/build_tools/azure/debian_atlas_32bit_requirements.txt +++ b/build_tools/azure/debian_atlas_32bit_requirements.txt @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py cython joblib==1.0.0 # min diff --git a/build_tools/azure/py38_conda_defaults_openblas_environment.yml b/build_tools/azure/py38_conda_defaults_openblas_environment.yml index 13cb49bb2af07..068b7679d2ec8 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_environment.yml +++ b/build_tools/azure/py38_conda_defaults_openblas_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - defaults diff --git a/build_tools/azure/py38_conda_forge_mkl_environment.yml b/build_tools/azure/py38_conda_forge_mkl_environment.yml index ce1a3d1430c25..7581f7f3579bd 100644 --- a/build_tools/azure/py38_conda_forge_mkl_environment.yml +++ b/build_tools/azure/py38_conda_forge_mkl_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml index fa82037236fe4..cb57ed74bc0b1 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/py38_pip_openblas_32bit_requirements.txt b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt index fd0cf73fe1c97..9bc0ae3fdbadc 100644 --- a/build_tools/azure/py38_pip_openblas_32bit_requirements.txt +++ b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py numpy scipy diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml index 318bba9517758..78ed2e7ddb40e 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml index 1a61f4cc9395d..c88f858bcb4b8 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml index 6a619b0298772..374ebb6aa64d0 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml index 90fe0e893991f..d0bbd4964c778 100644 --- a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - defaults diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml index c452f7587331f..40a4c4a403164 100644 --- a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml +++ b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - defaults diff --git a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml index 9b8fb02d77266..41796dd67c825 100644 --- a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml +++ b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - defaults diff --git a/build_tools/azure/pypy3_environment.yml b/build_tools/azure/pypy3_environment.yml index 5dc45f334d903..9026d35625dd0 100644 --- a/build_tools/azure/pypy3_environment.yml +++ b/build_tools/azure/pypy3_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/azure/ubuntu_atlas_requirements.txt b/build_tools/azure/ubuntu_atlas_requirements.txt index 320b9d8fe4a2e..5ce44c3885749 100644 --- a/build_tools/azure/ubuntu_atlas_requirements.txt +++ b/build_tools/azure/ubuntu_atlas_requirements.txt @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py cython joblib==1.0.0 # min diff --git a/build_tools/circle/build_doc.sh b/build_tools/circle/build_doc.sh index c0bbb4350cc0a..1f10fd0c294c7 100755 --- a/build_tools/circle/build_doc.sh +++ b/build_tools/circle/build_doc.sh @@ -153,35 +153,12 @@ export PATH="/usr/lib/ccache:$MINICONDA_PATH/bin:$PATH" ccache -M 512M export CCACHE_COMPRESS=1 -# Old packages coming from the 'free' conda channel have been removed but we -# are using them for our min-dependencies doc generation. See -# https://www.anaconda.com/why-we-removed-the-free-channel-in-conda-4-7/ for -# more details. -if [[ "$CIRCLE_JOB" == "doc-min-dependencies" ]]; then - conda config --set restore_free_channel true -fi - -# imports get_dep -source build_tools/shared.sh - -# packaging won't be needed once setuptools starts shipping packaging>=17.0 -mamba create -n $CONDA_ENV_NAME --yes --quiet \ - python="${PYTHON_VERSION:-*}" \ - "$(get_dep numpy $NUMPY_VERSION)" \ - "$(get_dep scipy $SCIPY_VERSION)" \ - "$(get_dep cython $CYTHON_VERSION)" \ - "$(get_dep matplotlib $MATPLOTLIB_VERSION)" \ - "$(get_dep sphinx $SPHINX_VERSION)" \ - "$(get_dep pandas $PANDAS_VERSION)" \ - joblib memory_profiler packaging seaborn pillow pytest coverage \ - compilers +# pin conda-lock to latest released version (needs manual update from time to time) +mamba install conda-lock==1.0.5 -y +conda-lock install --name $CONDA_ENV_NAME $LOCK_FILE +source activate $CONDA_ENV_NAME -source activate testenv -pip install "$(get_dep scikit-image $SCIKIT_IMAGE_VERSION)" -pip install "$(get_dep sphinx-gallery $SPHINX_GALLERY_VERSION)" -pip install "$(get_dep numpydoc $NUMPYDOC_VERSION)" -pip install "$(get_dep sphinx-prompt $SPHINX_PROMPT_VERSION)" -pip install "$(get_dep sphinxext-opengraph $SPHINXEXT_OPENGRAPH_VERSION)" +mamba list # Set parallelism to 3 to overlap IO bound tasks with CPU bound tasks on CI # workers with 2 cores when building the compiled extensions of scikit-learn. diff --git a/build_tools/circle/doc_environment.yml b/build_tools/circle/doc_environment.yml new file mode 100644 index 0000000000000..e91d4e9820615 --- /dev/null +++ b/build_tools/circle/doc_environment.yml @@ -0,0 +1,30 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for CI builds: +# build_tools/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python=3.9 + - numpy + - blas + - scipy + - cython + - joblib + - threadpoolctl + - matplotlib + - pandas + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - scikit-image + - seaborn + - memory_profiler + - compilers + - sphinx + - sphinx-gallery + - numpydoc + - sphinx-prompt + - pip + - pip: + - sphinxext-opengraph diff --git a/build_tools/circle/doc_linux-64_conda.lock b/build_tools/circle/doc_linux-64_conda.lock new file mode 100644 index 0000000000000..0f670c9df5027 --- /dev/null +++ b/build_tools/circle/doc_linux-64_conda.lock @@ -0,0 +1,235 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: ce2c52faa4a5f78e85354d69599fa230afb083e5f95ae37903edb103d6e0d59f +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-10.3.0-he6cfe16_16.tar.bz2#878a30aba0574e69bd920c55f243aa06 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-10.3.0-he6cfe16_16.tar.bz2#baae55f62968547a3731cb668736f611 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 +https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_15.tar.bz2#66c192522eacf5bb763568b4e415d133 +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.36.1-h193b22a_2.tar.bz2#32aae4265554a47ea77f7c09f86aeb3b +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/linux-64/binutils-2.36.1-hdd6e379_2.tar.bz2#3111f86041b5b6863545ca49130cca95 +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_10.tar.bz2#9d5cdbfe24b182d4c749b86d500ac9d2 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/aom-3.3.0-h27087fc_1.tar.bz2#fe863d1e92331e69c8f231df5eaf5e16 +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_0.tar.bz2#ec47e97c8e0b27dcadbebc4d17764548 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.18.1-h7f98852_0.tar.bz2#f26ef8098fab1f719c91eb760d63381a +https://conda.anaconda.org/conda-forge/linux-64/charls-2.3.4-h9c3ff4c_0.tar.bz2#c3f85a96a52befc5e41cab1145c8d3c2 +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 +https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-h7f98852_2.tar.bz2#8e787b08fe19986d99d034b839df2961 +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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2#c77f5e4e418fa47d699d6afa54c5d444 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2#3f3258d8f841fbac63b36b75bdac1afd +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 +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/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 +https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 +https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-10.3.0-h26c7422_16.tar.bz2#4076c395c7fa53cd708949e4be48154e +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.9-hbd366e4_1.tar.bz2#418adb239781d9690afc6b1a05514c37 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +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/zfp-0.5.5-h9c3ff4c_8.tar.bz2#f12900b1e1e0527c0e9a4e922a5de2bf +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.0.6-h166bdaf_0.tar.bz2#8650e4fb44c4a618e5ab3e1e19607e32 +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#a340c8ce9e702836e999984fcabd1b6e +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 +https://conda.anaconda.org/conda-forge/linux-64/libavif-0.10.1-h166bdaf_0.tar.bz2#eb9a725cb66435aaf81f13ce585a64eb +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 +https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.51-h166bdaf_1.tar.bz2#875e5931fb2faa6dacb4c13672630ae3 +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.3-he0ac6c6_0.tar.bz2#8ab9f9c0fc641b53c5f87368e41af18d +https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.tar.bz2#c01640c8bad562720d6caff0402dbd96 +https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.1-h83bc5f7_3.tar.bz2#37baca23e60af4130cfc03e8ab9f8e22 +https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.1.1-h7a311fb_2.tar.bz2#b8fd04387e09835347b6177d023c534b +https://conda.anaconda.org/conda-forge/linux-64/gcc-10.3.0-he2824d0_10.tar.bz2#b1f092f4fdbfff91e1df27aa46efa2bb +https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-10.3.0-hc39de41_10.tar.bz2#6e52c54509389c06f88ea74c137f75be +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-10.3.0-h73f4979_16.tar.bz2#0407b066da49b4562ce054c06b40558c +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#f825336ce3d4dba77ffd1edc78e7abf9 +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.3-default_h3a83d3e_0.tar.bz2#1a571eb098b894a66642cd8b638f5f1d +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 +https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.4.2-h166bdaf_0.tar.bz2#d3a922efc75c5f2534372eead96d46be +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/gfortran-10.3.0-h18518b4_10.tar.bz2#794676d0d7dd69998cb12654cf37f43d +https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-10.3.0-hb09a455_10.tar.bz2#dd9058b625a6edce185db90cf99e3590 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/gxx-10.3.0-he2824d0_10.tar.bz2#121c9d19ecb6cf6e587c2ab8dfb5c73c +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-10.3.0-h2593f52_10.tar.bz2#075de70ba0493c56ed9e9cda930978ce +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.3-default_h2e3cab8_0.tar.bz2#2343b7c11c031c5415b28641eb81275d +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.83.1-h7bff187_0.tar.bz2#d0c278476dba3b29ee13203784672ab1 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13980beea7c55e6b68db1349f25bd454 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b +https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.9.12-h9a8a25e_1_cpython.tar.bz2#06dadf5df9d340439c2aa32e15099d31 +https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad +https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.1.0-hd9d235c_0.tar.bz2#ebc04a148d7204bb428f8633b89fd3dd +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.4.2-h924138e_0.tar.bz2#40b38afc72b4f12be8a2ca29853b03ac +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.4.2-h2a4ca65_0.tar.bz2#a39c981deb5b50e2ea1464ab9d5c0b10 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-hfd4fe87_1001.tar.bz2#a44a1d690250f6bbb01b7e328ea0c719 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.9-2_cp39.tar.bz2#39adde4247484de2bb4000122fdcf665 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +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 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2#20b2eaeaeea4ef9a9a0d99770620fd09 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2#68e01cac9d38d0e717cd5c87bc3d2cc9 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8ed1ab_0.tar.bz2#77dad82eb9c8c1525ff7953e0756d708 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e +https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 +https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py39hf3d152e_0.tar.bz2#c6f766c4abf9207215c610187e61381a +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py39h4bc2ebd_0.tar.bz2#f6191bf565dee581e77549d63737751c +https://conda.anaconda.org/conda-forge/linux-64/compilers-1.4.2-ha770c72_0.tar.bz2#b353fa1271e1a82d37a7d35f4785de13 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py39h5a03fae_0.tar.bz2#78d64530b059de26a60f979e02c9fa3c +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py39hb9d737c_2.tar.bz2#27e20d4d5b494d2f1f3fa31fa44190ae +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py39hf3d152e_2.tar.bz2#fea5dea40592ea943aa56f4935308ee4 +https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py39hf3d152e_0.tar.bz2#4c2a0eabf0b8980b2c755646a6f750eb +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py39hf939315_1.tar.bz2#93232e4148e28b2665c16e573747a874 +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1.tar.bz2#7cda413e43b252044a270c2477031c5c +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py39hc58783e_2.tar.bz2#e682ad4e85c7fda7dd0f0283d3b2ae8e +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_0.tar.bz2#795b91dbac91f606bd0abc466bdef572 +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-hb166930_4.tar.bz2#7c165f1b39385b9fee1f279005ee512e +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2#d34b97a2386932b97c7cb80916a673e7 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py39hb9d737c_4.tar.bz2#dcc47a3b751508507183d17e569805e5 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py39hf3d152e_0.tar.bz2#3f81b2509daf345842e7a243f5b86ece +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39hb9d737c_3.tar.bz2#5e13a2d214ed4184969df363a1aab420 +https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py39hb9d737c_1.tar.bz2#ef84376736d1e8a814ccb06d1d814e6f +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1004.tar.bz2#05a99367d885ec9990f25e74128a8a08 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a_0.tar.bz2#11780968ae65fdeb1a0bc294d211597d +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.0-pyhd8ed1ab_0.tar.bz2#3aef8ad6f9af56117e959a53cb9b9fd1 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39h9c0c3a3_5.tar.bz2#e0d91afa9019bca0484bddb1626b7035 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py39h1832856_1.tar.bz2#264505bcd299b8d564195cfb3e6038f0 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py39hf3d152e_2.tar.bz2#b88777273800a6df2120fbcfa4d60569 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py39he49c0e8_0.tar.bz2#b1b4cc4216e555168e88d6a2b1914af1 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py39he80948d_2.tar.bz2#e93686e0252282dd8ccba5c6cbcd8295 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py39h700656a_0.tar.bz2#ab1bcd0fd24e375f16d662e4cc783cab +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py39hac2352c_0.tar.bz2#9df63dea0e4d2163be63b8e40c17ceaf +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_0.tar.bz2#772c3115b4e857f3fd2051435f04f68d +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.5.4-pyhd8ed1ab_0.tar.bz2#8c8c68b9d466b8804584abe11a75c396 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h5a03fae_0.tar.bz2#af520e0af4a0772f90f9ec79ca91f603 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.2-py39hde0f152_0.tar.bz2#200ceba1a31bf22629232285a550506f +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hce5d2b2_0.tar.bz2#0d4a4a2f2e52548519a76262839494c9 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py39hf3d152e_0.tar.bz2#d65d073d186977a2a9a9d5a68b2b77ef +https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 +https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2#46b38d88c4270ff9ba78a89c83c66345 +https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.3.1-pyhd8ed1ab_0.tar.bz2#31b43675aa1bb68e049c2f65c15da864 +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.10.1-pyhd8ed1ab_0.tar.bz2#4918585fe5e5341740f7e63c61743efb +https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2#88ee91e8679603f2a5bd036d52919cc2 +# pip sphinxext-opengraph @ https://files.pythonhosted.org/packages/58/ed/59df64b8400caf736f38bd3725ab9b1d9e50874f629980973aea090c1a8b/sphinxext_opengraph-0.6.3-py3-none-any.whl#md5=None diff --git a/build_tools/circle/doc_min_dependencies_environment.yml b/build_tools/circle/doc_min_dependencies_environment.yml new file mode 100644 index 0000000000000..4fd342722efce --- /dev/null +++ b/build_tools/circle/doc_min_dependencies_environment.yml @@ -0,0 +1,30 @@ +# DO NOT EDIT: this file is generated from the specification found in the +# following script to centralize the configuration for CI builds: +# build_tools/update_environments_and_lock_files.py +channels: + - conda-forge +dependencies: + - python=3.8 + - numpy=1.17.3 # min + - blas + - scipy=1.3.2 # min + - cython=0.29.24 # min + - joblib + - threadpoolctl + - matplotlib=3.1.2 # min + - pandas=1.0.5 # min + - pyamg + - pytest=6.2.5 + - pytest-xdist + - pillow + - scikit-image=0.16.2 # min + - seaborn + - memory_profiler + - compilers + - sphinx=4.0.1 # min + - sphinx-gallery=0.7.0 # min + - numpydoc=1.2.0 # min + - sphinx-prompt=1.3.0 # min + - pip + - pip: + - sphinxext-opengraph==0.4.2 # min diff --git a/build_tools/circle/doc_min_dependencies_linux-64_conda.lock b/build_tools/circle/doc_min_dependencies_linux-64_conda.lock new file mode 100644 index 0000000000000..aa09f29ca0866 --- /dev/null +++ b/build_tools/circle/doc_min_dependencies_linux-64_conda.lock @@ -0,0 +1,166 @@ +# Generated by conda-lock. +# platform: linux-64 +# input_hash: f0d3389155e6be5c2e3e2ffc42e39a82aaa2809e3880c4f6ad2bb83fb8fd57b4 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee +https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-7.5.0-hda03d7c_20.tar.bz2#2146b25eb2a762a44fab709338a7b6d9 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran4-7.5.0-h14aa051_20.tar.bz2#a072eab836c3a9578ce72b5640ce592d +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-devel_linux-64-7.5.0-hb016644_20.tar.bz2#31d5500f621954679ee41d7f5d1089fb +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-7.5.0-h14aa051_20.tar.bz2#c3b2ad091c043c08689e64b10741484b +https://conda.anaconda.org/conda-forge/linux-64/libgomp-12.1.0-h8d9b700_16.tar.bz2#f013cf7749536ce43d82afbffdf499ab +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_15.tar.bz2#66c192522eacf5bb763568b4e415d133 +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.36.1-h193b22a_2.tar.bz2#32aae4265554a47ea77f7c09f86aeb3b +https://conda.anaconda.org/conda-forge/linux-64/binutils-2.36.1-hdd6e379_2.tar.bz2#3111f86041b5b6863545ca49130cca95 +https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_33.tar.bz2#72b245322c589284f1b92a5c971e5cb6 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c +https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-7.5.0-habd7529_20.tar.bz2#42140612518a7ce78f571d64b6a50ba3 +https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d +https://conda.anaconda.org/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2#8e881214a23508f1541eb7a3135d6fcb +https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 +https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 +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/gcc_linux-64-7.5.0-h47867f9_33.tar.bz2#3a31c3f430a31184a5d07e67d3b24e2c +https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-hf34092f_1004.tar.bz2#5582e1349bee4a25705adca745bf6845 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-7.5.0-h56cb351_20.tar.bz2#8f897b30195bd3a2251b4c51c3cc91cf +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-hd0bb8aa_20.tar.bz2#dbe78fc5fb9c339f8e55426559e12f7b +https://conda.anaconda.org/conda-forge/linux-64/libllvm9-9.0.1-default_hc23dcda_7.tar.bz2#9f4686a2c319355fe8636ca13783c3b4 +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.1.1-h516909a_0.tar.bz2#d98aa4948ec35f52907e2d6152e2b255 +https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-7.5.0-h78c8a43_33.tar.bz2#b2879010fb369f4012040f7a27657cd8 +https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-7.5.0-h555fc39_33.tar.bz2#5cf979793d2c5130a012cb6480867adc +https://conda.anaconda.org/conda-forge/linux-64/libclang-9.0.1-default_hb4e5071_5.tar.bz2#9dde69aa2a8ecd575a16e44987bdc9f7 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.1.1-hc9558a2_0.tar.bz2#1eb7c67eb11eab0c98a87f84174fdde1 +https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.1.1-he991be0_0.tar.bz2#e38ac82cc517b9e245c1ae99f9f140da +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa +https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.8.0-20_mkl.tar.bz2#8fbce60932c01d0e193a1a814f2002be +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 +https://conda.anaconda.org/conda-forge/linux-64/python-3.8.6-h852b56e_0_cpython.tar.bz2#dd65401dfb61ac030edc0dc4d15c2c51 +https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 +https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/linux-64/compilers-1.1.1-0.tar.bz2#1ba267e19dbaf3db9dd0404e6fb9cdb9 +https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb +https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 +https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2#62c2e5c84f6cdc7ded2307ef9c30dc8c +https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 +https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-20_mkl.tar.bz2#14b25490fdcc44e879ac6c10fe764f68 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.8.0-20_mkl.tar.bz2#52c0ae3606eeae7e1d493f37f336f4f5 +https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 +https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff +https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-2_cp38.tar.bz2#bfbb29d517281e78ac53e48d21e6e860 +https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 +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 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-applehelp-1.0.2-py_0.tar.bz2#20b2eaeaeea4ef9a9a0d99770620fd09 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-devhelp-1.0.2-py_0.tar.bz2#68e01cac9d38d0e717cd5c87bc3d2cc9 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-htmlhelp-2.0.0-pyhd8ed1ab_0.tar.bz2#77dad82eb9c8c1525ff7953e0756d708 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.tar.bz2#67cd9d9c0382d37479b4d306c369a2d4 +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a +https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 +https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e +https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py38h578d9bd_0.tar.bz2#429a49d95358a078211aad97c4fc286c +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.4-py38ha312104_0.tar.bz2#8f82b87522fbb1d4b24e8b5e2b1d0501 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.24-py38h709712a_1.tar.bz2#9e5fe389471a13ae523ae980de4ad1f4 +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h0a891b7_2.tar.bz2#71f54bf65927270177d66e26664f11ea +https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2#4caaca6356992ee545080c7d7193b5a3 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py38h578d9bd_2.tar.bz2#affd6b87adb2b0c98da0e3ad274349be +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2#00084ab2657be5bf0ba0757ccde797ef +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-20_mkl.tar.bz2#8274dc30518af9df1de47f5d9e73165c +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e +https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 +https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_0.tar.bz2#b2135f7c9f4ba2ef94666946c8238d03 +https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 +https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 +https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 +https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h0a891b7_4.tar.bz2#ba24ff01bb38c5cd5be54b45ef685db3 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_1.tar.bz2#da023e4a9c777abc28434d7a6473dcc2 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed +https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30_0.tar.bz2#bcc387154aae535f8b4f84822621b5f7 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.0-pyhd8ed1ab_0.tar.bz2#3aef8ad6f9af56117e959a53cb9b9fd1 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_1.tar.bz2#d32c1aa8047d2d11163abbe4a8f852ac +https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.2-py38h250f245_1.tar.bz2#0ae46309d21c964547792bac48162fc8 +https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 +https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.bz2#23a8cc7179515f7092fa580275ae57d6 +https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.3.2-py38h921218d_0.tar.bz2#278670dc2fef5a6309d1635f047bd456 +https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 +https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.0.0-py38hf6732f7_1003.tar.bz2#44e00bf7a4b6a564e9313181aaea2615 +https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.5-hd8c4c69_1.tar.bz2#0e105d4afe0c3c81c4fbd9937ec4f359 +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.16.2-py38hb3f55d8_0.tar.bz2#468b398fefac8884cd6e6513af66549b +https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38ha8c2ead_3.tar.bz2#242c206b0c30fdc4c18aea16f04c4262 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.2-py38_1.tar.bz2#c2b9671a19c01716c37fe0a0e18b0aec +https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 +https://conda.anaconda.org/conda-forge/noarch/sphinx-4.0.1-pyh6c4a22f_2.tar.bz2#c203dcc46f262853ecbb9552c50d664e +https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#025ad7ca2c7f65007ab6b6f5d93a56eb +https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.7.0-py_0.tar.bz2#80bad3f857ecc86a4ab73f3e57addd13 +https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.3.0-py_0.tar.bz2#9363002e2a134a287af4e32ff0f26cdc +# pip sphinxext-opengraph @ https://files.pythonhosted.org/packages/50/ac/c105ed3e0a00b14b28c0aa630935af858fd8a32affeff19574b16e2c6ae8/sphinxext_opengraph-0.4.2-py3-none-any.whl#md5=None diff --git a/build_tools/circle/py39_conda_forge_environment.yml b/build_tools/circle/py39_conda_forge_environment.yml index f5b6581ee2689..76c7973106bc1 100644 --- a/build_tools/circle/py39_conda_forge_environment.yml +++ b/build_tools/circle/py39_conda_forge_environment.yml @@ -1,5 +1,5 @@ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - conda-forge diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index 6d80464153cc5..0f5b74b8bd02b 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -211,6 +211,59 @@ def remove_from(alist, to_remove): + ["wheel", "pip"], "package_constraints": {"python": "3.8", "blas": "[build=mkl]"}, }, + { + "build_name": "doc_min_dependencies", + "folder": "build_tools/circle", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies_without_coverage + + [ + "scikit-image", + "seaborn", + "memory_profiler", + "compilers", + "sphinx", + "sphinx-gallery", + "numpydoc", + "sphinx-prompt", + ], + "pip_dependencies": ["sphinxext-opengraph"], + "package_constraints": { + "python": "3.8", + "numpy": "min", + "scipy": "min", + "matplotlib": "min", + "cython": "min", + "scikit-image": "min", + "sphinx": "min", + "pandas": "min", + "sphinx-gallery": "min", + "numpydoc": "min", + "sphinx-prompt": "min", + "sphinxext-opengraph": "min", + }, + }, + { + "build_name": "doc", + "folder": "build_tools/circle", + "platform": "linux-64", + "channel": "conda-forge", + "conda_dependencies": common_dependencies_without_coverage + + [ + "scikit-image", + "seaborn", + "memory_profiler", + "compilers", + "sphinx", + "sphinx-gallery", + "numpydoc", + "sphinx-prompt", + ], + "pip_dependencies": ["sphinxext-opengraph"], + "package_constraints": { + "python": "3.9", + }, + }, { "build_name": "py39_conda_forge", "folder": "build_tools/circle", @@ -337,7 +390,7 @@ def get_conda_environment_content(build_metadata): template = environment.from_string( """ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py channels: - {{ build_metadata['channel'] }} @@ -402,7 +455,7 @@ def get_pip_requirements_content(build_metadata): template = environment.from_string( """ # DO NOT EDIT: this file is generated from the specification found in the -# following script to centralize the configuration for all Azure CI builds: +# following script to centralize the configuration for CI builds: # build_tools/update_environments_and_lock_files.py {% for pip_dep in build_metadata['pip_dependencies'] %} {{ pip_dep | get_package_with_constraint(build_metadata, uses_pip=True) }} diff --git a/doc/conf.py b/doc/conf.py index 8276e8522f133..7c309357d97fc 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -15,7 +15,7 @@ import warnings import re from datetime import datetime -from packaging.version import parse +from sklearn.externals._packaging.version import parse from pathlib import Path from io import StringIO diff --git a/sklearn/_min_dependencies.py b/sklearn/_min_dependencies.py index 36ad29298d937..f055037d78be9 100644 --- a/sklearn/_min_dependencies.py +++ b/sklearn/_min_dependencies.py @@ -31,7 +31,7 @@ "threadpoolctl": (THREADPOOLCTL_MIN_VERSION, "install"), "cython": (CYTHON_MIN_VERSION, "build"), "matplotlib": ("3.1.2", "benchmark, docs, examples, tests"), - "scikit-image": ("0.14.5", "docs, examples, tests"), + "scikit-image": ("0.16.2", "docs, examples, tests"), "pandas": ("1.0.5", "benchmark, docs, examples, tests"), "seaborn": ("0.9.0", "docs, examples"), "memory_profiler": ("0.57.0", "benchmark, docs"), From 688d78b282664a57b6d21779ac3038aa0c694087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Tue, 24 May 2022 17:19:18 +0200 Subject: [PATCH 032/251] CI Remove pin 22.0.4 now that 22.1.1 has been released (#23448) --- .../circle/py39_conda_forge_environment.yml | 2 +- .../py39_conda_forge_linux-aarch64_conda.lock | 20 +++++++++---------- .../update_environments_and_lock_files.py | 3 --- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/build_tools/circle/py39_conda_forge_environment.yml b/build_tools/circle/py39_conda_forge_environment.yml index 76c7973106bc1..28676862e0597 100644 --- a/build_tools/circle/py39_conda_forge_environment.yml +++ b/build_tools/circle/py39_conda_forge_environment.yml @@ -15,5 +15,5 @@ dependencies: - pytest=6.2.5 - pytest-xdist - pillow - - pip=22.0.4 + - pip - ccache diff --git a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock index 8b70af34e0e83..6b1a9a9543203 100644 --- a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock +++ b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock @@ -1,8 +1,8 @@ # Generated by conda-lock. # platform: linux-aarch64 -# input_hash: e3e1ef206f1ca1cb3b6316fc18cc4c22a5dc95324159f4b0756b259d802aaf81 +# input_hash: f1c0d9e31e06e83634304690566f166bbeedf60e757b9a5333641a3db841f9b9 @EXPLICIT -https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2021.10.8-h4fd8a4c_0.tar.bz2#ad855209fcca3b45da677d409b16e021 +https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2022.5.18.1-h4fd8a4c_0.tar.bz2#8f445510f2354b85b27fb5f4f202c59b https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.36.1-h02ad14f_2.tar.bz2#3ca1a8e406eab04ffc3bfa6e8ac0a724 https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-12.1.0-h41d5c85_16.tar.bz2#f053ad62fdac14fb8e73cfed4e8d2676 https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-12.1.0-hd01590b_16.tar.bz2#b64391bb81cc2f914d57c0927ec8a26b @@ -40,7 +40,7 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/openblas-0.3.20-pthreads_h2 https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.1-h1a49cc3_0.tar.bz2#ccd3c3e1bde615ec934282f3481a1ede https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.12-hd8af866_0.tar.bz2#7894e82ff743bd96c76585ddebe28e2a https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.11-h4e544f5_1014.tar.bz2#5d6528db5739f248a7a5749d2dba8a27 -https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-h41fb7a4_0.tar.bz2#03434131cc82915a59513e1ab989fdd5 +https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-haad177d_1.tar.bz2#13d695d25882b3efad8e0e3ffad89a83 https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.0.9-h4e544f5_7.tar.bz2#4014ebf8c97d8cb219bfc0a12344ceb6 https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.5.1-h637f6b2_0.tar.bz2#0981c793a35b1e72d75d3a40e8dd69a4 https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-14_linuxaarch64_openblas.tar.bz2#8a1d66921d3e7dacacc8dd3af6d5ec5f @@ -69,22 +69,22 @@ https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.t https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.114-openblas.tar.bz2#240259abe13902a22c25ad1ff8082d90 -https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2021.10.8-py39h4420490_2.tar.bz2#aebb51e6774e3d98b8412e500afa638c -https://conda.anaconda.org/conda-forge/linux-aarch64/cython-0.29.29-py39h3d8bfb9_0.tar.bz2#18507b4cf568e8d1f661d31746d0db11 +https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2022.5.18.1-py39h4420490_0.tar.bz2#32f70b59cab5617c4ac9e8529631f844 +https://conda.anaconda.org/conda-forge/linux-aarch64/cython-0.29.30-py39h3d8bfb9_0.tar.bz2#1928a6be375c7b0197b8bc7b64a3bf40 https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.2-py39h110580c_1.tar.bz2#e5136a6aa77ec81ab5c6d3f9ba2ebf1d -https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.22.3-py39h451b137_2.tar.bz2#db82cd177da11c34dbbc29bee711a8d7 +https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.22.4-py39h451b137_0.tar.bz2#83b4bb0a5f7095f1551f0f637111f38e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.0-py39h2a8e185_2.tar.bz2#073167cf5063f41dd7b2918f9de492b0 +https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.1-py39h2a8e185_0.tar.bz2#5e9230ccd6d157f21103359f4a7ada6d https://conda.anaconda.org/conda-forge/linux-aarch64/pluggy-1.0.0-py39ha65689a_3.tar.bz2#3ccbd600f5d9921e928da3d69a9720a9 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.2.0-py39ha65689a_0.tar.bz2#09fcd847a6f83a7c0ac32892c14e069c +https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.3.2-py39ha65689a_0.tar.bz2#a64aaf7753f9f47ca26e8c9f0130172e https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.1-py39hb9a1dbb_3.tar.bz2#11dace3e5ebbaeb5069179cfa5b53923 https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-14.0.0-py39h0fd3b05_1.tar.bz2#7182266a1f86f367d88c86a9ab560cca https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.33.3-py39h0fd3b05_0.tar.bz2#0f8d88eb32e53e0756a4bceaa5d85d3e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/noarch/pip-22.0.4-pyhd8ed1ab_0.tar.bz2#b1239ce8ef2a1eec485c398a683c5bff +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-6.2.5-py39ha65689a_2.tar.bz2#1b663c678dd3032ef9dbdfd35165091c -https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.8.0-py39h59f125f_1.tar.bz2#c82bb1939eae2df3a6b1fa993fb4f3a3 +https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.8.1-py39h43b6dad_0.tar.bz2#372f005c9ca6dc0db0adae0f78dbc4d4 https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.5.2-py39hfed42d8_0.tar.bz2#9f90790067684c9f0ab1b07e6e82070a https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.5.2-py39ha65689a_0.tar.bz2#e5738e0c03863f94223c19aaf0f2564d diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index 0f5b74b8bd02b..e4f3222cfd968 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -275,9 +275,6 @@ def remove_from(alist, to_remove): + ["pip", "ccache"], "package_constraints": { "python": "3.9", - # TODO remove constraint when pip > 22.1 is released. See - # https://github.com/pypa/pip/issues/11116 for more details. - "pip": "22.0.4", }, }, ] From 2aa17fbdc7714a2ab7c80d417a95c0b1b633dbc5 Mon Sep 17 00:00:00 2001 From: johnthagen Date: Tue, 24 May 2022 11:49:25 -0400 Subject: [PATCH 033/251] Add BSD license trove classifier (#23451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève Co-authored-by: Thomas J. Fan --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 2b0584f772e6d..2ecc5ba0bcc2e 100755 --- a/setup.py +++ b/setup.py @@ -254,7 +254,7 @@ def setup_package(): classifiers=[ "Intended Audience :: Science/Research", "Intended Audience :: Developers", - "License :: OSI Approved", + "License :: OSI Approved :: BSD License", "Programming Language :: C", "Programming Language :: Python", "Topic :: Software Development", From 0fcce8dc9121e92a17f8e629ec329285ad6bfbe7 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Tue, 24 May 2022 19:27:20 +0200 Subject: [PATCH 034/251] DOC Point GradientBoosting towards HistGradientBoosting (#23340) * Point GradientBoosting towards HistGradientBoosting on docstrings * Point GradientBoosting towards HistGradientBoosting on examples * Avoid the GB acronym * Iter * Apply suggestion from lesteve * Apply suggestions from code review Co-authored-by: Olivier Grisel * Format * Apply suggestions from code review Co-authored-by: Julien Jerphanion * Format Co-authored-by: Olivier Grisel Co-authored-by: Julien Jerphanion --- .../plot_model_complexity_influence.py | 8 ++++-- .../ensemble/plot_feature_transformation.py | 7 ++++- .../plot_gradient_boosting_quantile.py | 5 ++++ sklearn/ensemble/_gb.py | 26 ++++++++++++------- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/examples/applications/plot_model_complexity_influence.py b/examples/applications/plot_model_complexity_influence.py index d05f4ab497ada..60475e2c4302e 100644 --- a/examples/applications/plot_model_complexity_influence.py +++ b/examples/applications/plot_model_complexity_influence.py @@ -21,8 +21,12 @@ - :class:`~sklearn.svm.NuSVR` (for regression data) which implements Nu support vector regression; - - :class:`~sklearn.ensemble.GradientBoostingRegressor` (for regression - data) which builds an additive model in a forward stage-wise fashion. + - :class:`~sklearn.ensemble.GradientBoostingRegressor` builds an additive + model in a forward stage-wise fashion. Notice that + :class:`~sklearn.ensemble.HistGradientBoostingRegressor` is much faster + than :class:`~sklearn.ensemble.GradientBoostingRegressor` starting with + intermediate datasets (`n_samples >= 10_000`), which is not the case for + this example. We make the model complexity vary through the choice of relevant model diff --git a/examples/ensemble/plot_feature_transformation.py b/examples/ensemble/plot_feature_transformation.py index 409396a0376b8..36eb87bb757cd 100644 --- a/examples/ensemble/plot_feature_transformation.py +++ b/examples/ensemble/plot_feature_transformation.py @@ -39,7 +39,7 @@ from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split -X, y = make_classification(n_samples=80000, random_state=10) +X, y = make_classification(n_samples=80_000, random_state=10) X_full_train, X_test, y_full_train, y_test = train_test_split( X, y, test_size=0.5, random_state=10 @@ -72,6 +72,11 @@ _ = gradient_boosting.fit(X_train_ensemble, y_train_ensemble) # %% +# Notice that :class:`~sklearn.ensemble.HistGradientBoostingClassifier` is much +# faster than :class:`~sklearn.ensemble.GradientBoostingClassifier` starting +# with intermediate datasets (`n_samples >= 10_000`), which is not the case of +# the present example. +# # The :class:`~sklearn.ensemble.RandomTreesEmbedding` is an unsupervised method # and thus does not required to be trained independently. diff --git a/examples/ensemble/plot_gradient_boosting_quantile.py b/examples/ensemble/plot_gradient_boosting_quantile.py index 9e823439b948b..2aa04c3988d9e 100644 --- a/examples/ensemble/plot_gradient_boosting_quantile.py +++ b/examples/ensemble/plot_gradient_boosting_quantile.py @@ -72,6 +72,11 @@ def f(x): all_models["q %1.2f" % alpha] = gbr.fit(X_train, y_train) # %% +# Notice that :class:`~sklearn.ensemble.HistGradientBoostingRegressor` is much +# faster than :class:`~sklearn.ensemble.GradientBoostingRegressor` starting with +# intermediate datasets (`n_samples >= 10_000`), which is not the case of the +# present example. +# # For the sake of comparison, we also fit a baseline model trained with the # usual (mean) squared error (MSE). gbr_ls = GradientBoostingRegressor(loss="squared_error", **common_params) diff --git a/sklearn/ensemble/_gb.py b/sklearn/ensemble/_gb.py index 9b776a7feab10..7151c26cdd203 100644 --- a/sklearn/ensemble/_gb.py +++ b/sklearn/ensemble/_gb.py @@ -991,12 +991,15 @@ def loss_(self): class GradientBoostingClassifier(ClassifierMixin, BaseGradientBoosting): """Gradient Boosting for classification. - GB builds an additive model in a - forward stage-wise fashion; it allows for the optimization of - arbitrary differentiable loss functions. In each stage ``n_classes_`` - regression trees are fit on the negative gradient of the loss function, - e.g. binary or multiclass log loss. Binary classification - is a special case where only a single regression tree is induced. + This algorithm builds an additive model in a forward stage-wise fashion; it + allows for the optimization of arbitrary differentiable loss functions. In + each stage ``n_classes_`` regression trees are fit on the negative gradient + of the loss function, e.g. binary or multiclass log loss. Binary + classification is a special case where only a single regression tree is + induced. + + :class:`sklearn.ensemble.HistGradientBoostingClassifier` is a much faster + variant of this algorithm for intermediate datasets (`n_samples >= 10_000`). Read more in the :ref:`User Guide `. @@ -1559,10 +1562,13 @@ def staged_predict_proba(self, X): class GradientBoostingRegressor(RegressorMixin, BaseGradientBoosting): """Gradient Boosting for regression. - GB builds an additive model in a forward stage-wise fashion; - it allows for the optimization of arbitrary differentiable loss functions. - In each stage a regression tree is fit on the negative gradient of the - given loss function. + This estimator builds an additive model in a forward stage-wise fashion; it + allows for the optimization of arbitrary differentiable loss functions. In + each stage a regression tree is fit on the negative gradient of the given + loss function. + + :class:`sklearn.ensemble.HistGradientBoostingRegressor` is a much faster + variant of this algorithm for intermediate datasets (`n_samples >= 10_000`). Read more in the :ref:`User Guide `. From 103e18b59376a22929d1bf27b1cb8f44efb6bf8f Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 25 May 2022 17:40:39 +1000 Subject: [PATCH 035/251] DOC Fix grammar in linear_model.rst (#23456) --- doc/modules/linear_model.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/linear_model.rst b/doc/modules/linear_model.rst index 09a8eff4b23d4..36c4413a0756c 100644 --- a/doc/modules/linear_model.rst +++ b/doc/modules/linear_model.rst @@ -571,7 +571,7 @@ The disadvantages of the LARS method include: in the discussion section of the Efron et al. (2004) Annals of Statistics article. -The LARS model can be used using via the estimator :class:`Lars`, or its +The LARS model can be used via the estimator :class:`Lars`, or its low-level implementation :func:`lars_path` or :func:`lars_path_gram`. @@ -631,7 +631,7 @@ column is always zero. Orthogonal Matching Pursuit (OMP) ================================= -:class:`OrthogonalMatchingPursuit` and :func:`orthogonal_mp` implements the OMP +:class:`OrthogonalMatchingPursuit` and :func:`orthogonal_mp` implement the OMP algorithm for approximating the fit of a linear model with constraints imposed on the number of non-zero coefficients (ie. the :math:`\ell_0` pseudo-norm). From aca38fde845fe5692621b3bf923f2e47ed75db55 Mon Sep 17 00:00:00 2001 From: jkarolczak <59308844+jkarolczak@users.noreply.github.com> Date: Wed, 25 May 2022 09:45:32 +0200 Subject: [PATCH 036/251] DOC fix distribution information in wine_data.rst (#23452) --- sklearn/datasets/descr/wine_data.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/datasets/descr/wine_data.rst b/sklearn/datasets/descr/wine_data.rst index bfde9288fa4dd..dbe7f38e44aa6 100644 --- a/sklearn/datasets/descr/wine_data.rst +++ b/sklearn/datasets/descr/wine_data.rst @@ -5,7 +5,7 @@ Wine recognition dataset **Data Set Characteristics:** - :Number of Instances: 178 (50 in each of three classes) + :Number of Instances: 178 :Number of Attributes: 13 numeric, predictive attributes and the class :Attribute Information: - Alcohol From 7be06afd1b3659e74d003c63253473b5653a8e0c Mon Sep 17 00:00:00 2001 From: Guitared Date: Wed, 25 May 2022 15:00:15 +0700 Subject: [PATCH 037/251] DOC Update testing section url in main README (#23435) --- README.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.rst b/README.rst index 61af9d3e91e3f..83b42b0850e0f 100644 --- a/README.rst +++ b/README.rst @@ -144,7 +144,7 @@ directory (you will need to have ``pytest`` >= |PyTestMinVersion| installed):: pytest sklearn -See the web page https://scikit-learn.org/dev/developers/advanced_installation.html#testing +See the web page https://scikit-learn.org/dev/developers/contributing.html#testing-and-improving-test-coverage for more information. Random number generation can be controlled during testing by setting From a71931940a443b2741d9d652e32500260904cd8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 25 May 2022 10:47:34 +0200 Subject: [PATCH 038/251] DOC fix typo in OneHotEncoder docstring (#23455) --- sklearn/preprocessing/_encoders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/preprocessing/_encoders.py b/sklearn/preprocessing/_encoders.py index d4cc642a18562..e0b8fa271ac89 100644 --- a/sklearn/preprocessing/_encoders.py +++ b/sklearn/preprocessing/_encoders.py @@ -664,7 +664,7 @@ def _fit_infrequent_category_mapping(self, n_samples, category_counts): to a single output: `_default_to_infrequent_mappings[7] = array([0, 3, 1, 3, 2, 3])` - Defines private attrite: `_infrequent_indices`. `_infrequent_indices[i]` + Defines private attribute: `_infrequent_indices`. `_infrequent_indices[i]` is an array of indices such that `categories_[i][_infrequent_indices[i]]` are all the infrequent category labels. If the feature `i` has no infrequent categories From 96aace1374f66802232d5af21bf9666242e17178 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 16:05:10 +0200 Subject: [PATCH 039/251] MAINT Remove commented dissimilarities (#23457) --- sklearn/metrics/_dist_metrics.pyx | 66 ------------------------------- 1 file changed, 66 deletions(-) diff --git a/sklearn/metrics/_dist_metrics.pyx b/sklearn/metrics/_dist_metrics.pyx index d17be2c8cb73d..953e6378adcb2 100644 --- a/sklearn/metrics/_dist_metrics.pyx +++ b/sklearn/metrics/_dist_metrics.pyx @@ -1097,72 +1097,6 @@ cdef class HaversineDistance(DistanceMetric): tmp = np.sin(0.5 * dist) return tmp * tmp - -#------------------------------------------------------------ -# Yule Distance (boolean) -# D(x, y) = 2 * ntf * nft / (ntt * nff + ntf * nft) -# [This is not a true metric, so we will leave it out.] -# -#cdef class YuleDistance(DistanceMetric): -# cdef inline DTYPE_t dist(self, const DTYPE_t* x1, const DTYPE_t* x2, -# ITYPE_t size): -# cdef int tf1, tf2, ntf = 0, nft = 0, ntt = 0, nff = 0 -# cdef np.intp_t j -# for j in range(size): -# tf1 = x1[j] != 0 -# tf2 = x2[j] != 0 -# ntt += tf1 and tf2 -# ntf += tf1 and (tf2 == 0) -# nft += (tf1 == 0) and tf2 -# nff = size - ntt - ntf - nft -# return (2.0 * ntf * nft) / (ntt * nff + ntf * nft) - - -#------------------------------------------------------------ -# Cosine Distance -# D(x, y) = dot(x, y) / (|x| * |y|) -# [This is not a true metric, so we will leave it out.] -# -#cdef class CosineDistance(DistanceMetric): -# cdef inline DTYPE_t dist(self, const DTYPE_t* x1, const DTYPE_t* x2, -# ITYPE_t size): -# cdef DTYPE_t d = 0, norm1 = 0, norm2 = 0 -# cdef np.intp_t j -# for j in range(size): -# d += x1[j] * x2[j] -# norm1 += x1[j] * x1[j] -# norm2 += x2[j] * x2[j] -# return 1.0 - d / sqrt(norm1 * norm2) - - -#------------------------------------------------------------ -# Correlation Distance -# D(x, y) = dot((x - mx), (y - my)) / (|x - mx| * |y - my|) -# [This is not a true metric, so we will leave it out.] -# -#cdef class CorrelationDistance(DistanceMetric): -# cdef inline DTYPE_t dist(self, const DTYPE_t* x1, const DTYPE_t* x2, -# ITYPE_t size): -# cdef DTYPE_t mu1 = 0, mu2 = 0, x1nrm = 0, x2nrm = 0, x1Tx2 = 0 -# cdef DTYPE_t tmp1, tmp2 -# -# cdef np.intp_t i -# for i in range(size): -# mu1 += x1[i] -# mu2 += x2[i] -# mu1 /= size -# mu2 /= size -# -# for i in range(size): -# tmp1 = x1[i] - mu1 -# tmp2 = x2[i] - mu2 -# x1nrm += tmp1 * tmp1 -# x2nrm += tmp2 * tmp2 -# x1Tx2 += tmp1 * tmp2 -# -# return (1. - x1Tx2) / sqrt(x1nrm * x2nrm) - - #------------------------------------------------------------ # User-defined distance # From 95a8216a15ab713b122cd0815e80e4913248ba73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20du=20Boisberranger?= <34657725+jeremiedbb@users.noreply.github.com> Date: Wed, 25 May 2022 16:18:43 +0200 Subject: [PATCH 040/251] FIX attribute error is BIRCH (#23395) --- doc/whats_new/v1.1.rst | 17 +++++++++ sklearn/cluster/_birch.py | 5 +++ sklearn/cluster/tests/test_birch.py | 53 +++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index fb2a1b153a31d..ab75b78b45758 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -2,6 +2,23 @@ .. currentmodule:: sklearn +.. _changes_1_1_2: + +Version 1.1.2 +============= + +**In Development** + +Changelog +--------- + +:mod:`sklearn.cluster` +...................... + +- |Fix| Fixed a bug in :class:`cluster.Birch` that could trigger an error when splitting + a node if there are duplicates in the dataset. + :pr:`23395` by :user:`Jérémie du Boisberranger `. + .. _changes_1_1_1: Version 1.1.1 diff --git a/sklearn/cluster/_birch.py b/sklearn/cluster/_birch.py index cfdfeab27b15c..604365a184af7 100644 --- a/sklearn/cluster/_birch.py +++ b/sklearn/cluster/_birch.py @@ -89,6 +89,11 @@ def _split_node(node, threshold, branching_factor): node1_dist, node2_dist = dist[(farthest_idx,)] node1_closer = node1_dist < node2_dist + # make sure node1 is closest to itself even if all distances are equal. + # This can only happen when all node.centroids_ are duplicates leading to all + # distances between centroids being zero. + node1_closer[farthest_idx[0]] = True + for idx, subcluster in enumerate(node.subclusters_): if node1_closer[idx]: new_node1.append_subcluster(subcluster) diff --git a/sklearn/cluster/tests/test_birch.py b/sklearn/cluster/tests/test_birch.py index e0051704653ae..cccd99a8846bb 100644 --- a/sklearn/cluster/tests/test_birch.py +++ b/sklearn/cluster/tests/test_birch.py @@ -228,3 +228,56 @@ def test_feature_names_out(): names_out = brc.get_feature_names_out() assert_array_equal([f"birch{i}" for i in range(n_clusters)], names_out) + + +def test_transform_match_across_dtypes(): + X, _ = make_blobs(n_samples=80, n_features=4, random_state=0) + brc = Birch(n_clusters=4) + Y_64 = brc.fit_transform(X) + Y_32 = brc.fit_transform(X.astype(np.float32)) + + assert_allclose(Y_64, Y_32, atol=1e-6) + + +def test_subcluster_dtype(global_dtype): + X = make_blobs(n_samples=80, n_features=4, random_state=0)[0].astype( + global_dtype, copy=False + ) + brc = Birch(n_clusters=4) + assert brc.fit(X).subcluster_centers_.dtype == global_dtype + + +def test_both_subclusters_updated(): + """Check that both subclusters are updated when a node a split, even when there are + duplicated data points. Non-regression test for #23269. + """ + + X = np.array( + [ + [-2.6192791, -1.5053215], + [-2.9993038, -1.6863596], + [-2.3724914, -1.3438171], + [-2.336792, -1.3417323], + [-2.4089134, -1.3290224], + [-2.3724914, -1.3438171], + [-3.364009, -1.8846745], + [-2.3724914, -1.3438171], + [-2.617677, -1.5003285], + [-2.2960556, -1.3260119], + [-2.3724914, -1.3438171], + [-2.5459878, -1.4533926], + [-2.25979, -1.3003055], + [-2.4089134, -1.3290224], + [-2.3724914, -1.3438171], + [-2.4089134, -1.3290224], + [-2.5459878, -1.4533926], + [-2.3724914, -1.3438171], + [-2.9720619, -1.7058647], + [-2.336792, -1.3417323], + [-2.3724914, -1.3438171], + ], + dtype=np.float32, + ) + + # no error + Birch(branching_factor=5, threshold=1e-5, n_clusters=None).fit(X) From 96c330516bf471c10ad83d107d4f27166f97bd29 Mon Sep 17 00:00:00 2001 From: Maksym <44316404+maksymborukh@users.noreply.github.com> Date: Thu, 26 May 2022 16:17:00 +0300 Subject: [PATCH 041/251] DOC Ensures that _univariate_selection.chi2 passes numpydoc validation (#23467) --- sklearn/feature_selection/_univariate_selection.py | 8 ++++---- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sklearn/feature_selection/_univariate_selection.py b/sklearn/feature_selection/_univariate_selection.py index 7754ea3bea7f4..9f1a30c7b4e32 100644 --- a/sklearn/feature_selection/_univariate_selection.py +++ b/sklearn/feature_selection/_univariate_selection.py @@ -198,14 +198,14 @@ def chi2(X, y): p_values : ndarray of shape (n_features,) P-values for each feature. - Notes - ----- - Complexity of this algorithm is O(n_classes * n_features). - See Also -------- f_classif : ANOVA F-value between label/feature for classification tasks. f_regression : F-value between label/feature for regression tasks. + + Notes + ----- + Complexity of this algorithm is O(n_classes * n_features). """ # XXX: we might want to do some of the following in logspace instead for diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 22c635f8baaa2..eaeefc28bcb11 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -26,7 +26,6 @@ "sklearn.externals._packaging.version.parse", "sklearn.feature_extraction.image.extract_patches_2d", "sklearn.feature_extraction.text.strip_accents_unicode", - "sklearn.feature_selection._univariate_selection.chi2", "sklearn.feature_selection._univariate_selection.f_oneway", "sklearn.inspection._partial_dependence.partial_dependence", "sklearn.inspection._plot.partial_dependence.plot_partial_dependence", From d06a31895784a7341f160ad0df6d1345938c6200 Mon Sep 17 00:00:00 2001 From: Roman4oo <44210395+Roman4oo@users.noreply.github.com> Date: Fri, 27 May 2022 00:47:01 +0300 Subject: [PATCH 042/251] DOC Ensures that f_oneway passes numpydoc validation. (#23468) Co-authored-by: Roman Ivanets --- sklearn/feature_selection/_univariate_selection.py | 6 ++---- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/sklearn/feature_selection/_univariate_selection.py b/sklearn/feature_selection/_univariate_selection.py index 9f1a30c7b4e32..920eb2220e84a 100644 --- a/sklearn/feature_selection/_univariate_selection.py +++ b/sklearn/feature_selection/_univariate_selection.py @@ -39,7 +39,7 @@ def _clean_nans(scores): # Contrary to the scipy.stats.f_oneway implementation it does not # copy the data while keeping the inputs unchanged. def f_oneway(*args): - """Performs a 1-way ANOVA. + """Perform a 1-way ANOVA. The one-way ANOVA tests the null hypothesis that 2 or more groups have the same population mean. The test is applied to samples from two or @@ -50,7 +50,7 @@ def f_oneway(*args): Parameters ---------- *args : {array-like, sparse matrix} - sample1, sample2... The sample measurements should be given as + Sample1, sample2... The sample measurements should be given as arguments. Returns @@ -81,13 +81,11 @@ def f_oneway(*args): References ---------- - .. [1] Lowry, Richard. "Concepts and Applications of Inferential Statistics". Chapter 14. http://faculty.vassar.edu/lowry/ch14pt1.html .. [2] Heiman, G.W. Research Methods in Statistics. 2002. - """ n_classes = len(args) args = [as_float_array(a) for a in args] diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index eaeefc28bcb11..7aadafbcf140e 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -26,7 +26,6 @@ "sklearn.externals._packaging.version.parse", "sklearn.feature_extraction.image.extract_patches_2d", "sklearn.feature_extraction.text.strip_accents_unicode", - "sklearn.feature_selection._univariate_selection.f_oneway", "sklearn.inspection._partial_dependence.partial_dependence", "sklearn.inspection._plot.partial_dependence.plot_partial_dependence", "sklearn.linear_model._least_angle.lars_path_gram", From 5cd1c00cca4d5c53b177bf9cd79e1d9aa46e5876 Mon Sep 17 00:00:00 2001 From: harshit5674 <100012454+harshit5674@users.noreply.github.com> Date: Sat, 28 May 2022 00:32:02 +0530 Subject: [PATCH 043/251] DOC Ensures that inplace_swap_column passes numpydoc validation (#23476) Co-authored-by: Thomas J. Fan Co-authored-by: harshit5674 --- sklearn/tests/test_docstrings.py | 1 - sklearn/utils/sparsefuncs.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 7aadafbcf140e..e3e8ed2aff091 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -116,7 +116,6 @@ "sklearn.utils.sparsefuncs.count_nonzero", "sklearn.utils.sparsefuncs.csc_median_axis_0", "sklearn.utils.sparsefuncs.incr_mean_variance_axis", - "sklearn.utils.sparsefuncs.inplace_swap_column", "sklearn.utils.sparsefuncs.inplace_swap_row", "sklearn.utils.sparsefuncs.inplace_swap_row_csc", "sklearn.utils.sparsefuncs.inplace_swap_row_csr", diff --git a/sklearn/utils/sparsefuncs.py b/sklearn/utils/sparsefuncs.py index d53741c044c47..64a86cf1180bf 100644 --- a/sklearn/utils/sparsefuncs.py +++ b/sklearn/utils/sparsefuncs.py @@ -385,7 +385,7 @@ def inplace_swap_row(X, m, n): def inplace_swap_column(X, m, n): """ - Swaps two columns of a CSC/CSR matrix in-place. + Swap two columns of a CSC/CSR matrix in-place. Parameters ---------- From 0e525a335638804cf8f32692f5dc63e974f989c9 Mon Sep 17 00:00:00 2001 From: hasan-yaman Date: Sun, 29 May 2022 02:58:06 +0300 Subject: [PATCH 044/251] DOC Fix typo in random forest feature importance comparison example. (#23484) --- examples/inspection/plot_permutation_importance.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/inspection/plot_permutation_importance.py b/examples/inspection/plot_permutation_importance.py index 53e4969f1740e..cd6823adf5f9b 100644 --- a/examples/inspection/plot_permutation_importance.py +++ b/examples/inspection/plot_permutation_importance.py @@ -58,7 +58,7 @@ # We define a predictive model based on a random forest. Therefore, we will make # the following preprocessing steps: # -# - use :class:`~sklearn.preprocessing.OrdinaleEcnoder` to encode the +# - use :class:`~sklearn.preprocessing.OrdinalEncoder` to encode the # categorical features; # - use :class:`~sklearn.impute.SimpleImputer` to fill missing values for # numerical features using a mean strategy. From fd897d363fef07d3d0d9076503fa76210ae25e88 Mon Sep 17 00:00:00 2001 From: hasan-yaman Date: Mon, 30 May 2022 04:55:06 +0300 Subject: [PATCH 045/251] DOC Ensures that fbeta_score passes numpydoc validation (#23486) --- sklearn/metrics/_classification.py | 5 ++++- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index b0a44e9d83d31..286a2cc22445d 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -1235,7 +1235,10 @@ def fbeta_score( See Also -------- - precision_recall_fscore_support, multilabel_confusion_matrix + precision_recall_fscore_support : Compute the precision, recall, F-score, + and support. + multilabel_confusion_matrix : Compute a confusion matrix for each class or + sample. Notes ----- diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index e3e8ed2aff091..d1cba95083e73 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -34,7 +34,6 @@ "sklearn.manifold._t_sne.trustworthiness", "sklearn.metrics._classification.brier_score_loss", "sklearn.metrics._classification.cohen_kappa_score", - "sklearn.metrics._classification.fbeta_score", "sklearn.metrics._classification.jaccard_score", "sklearn.metrics._classification.log_loss", "sklearn.metrics._plot.det_curve.plot_det_curve", From 158af909b60a85cedccea07f5163815b8d4b7a6a Mon Sep 17 00:00:00 2001 From: Duarte OC Date: Mon, 30 May 2022 11:44:15 +0200 Subject: [PATCH 046/251] Typo in deprecation of plot_roc_curve function (#23489) --- sklearn/metrics/_plot/roc_curve.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/metrics/_plot/roc_curve.py b/sklearn/metrics/_plot/roc_curve.py index a56cd3755b8d6..49953d7032c71 100644 --- a/sklearn/metrics/_plot/roc_curve.py +++ b/sklearn/metrics/_plot/roc_curve.py @@ -352,8 +352,8 @@ def from_predictions( @deprecated( "Function :func:`plot_roc_curve` is deprecated in 1.0 and will be " "removed in 1.2. Use one of the class methods: " - ":meth:`sklearn.metric.RocCurveDisplay.from_predictions` or " - ":meth:`sklearn.metric.RocCurveDisplay.from_estimator`." + ":meth:`sklearn.metrics.RocCurveDisplay.from_predictions` or " + ":meth:`sklearn.metrics.RocCurveDisplay.from_estimator`." ) def plot_roc_curve( estimator, From 77f6c5fcb49c3db099827b59eb98cbcb39297f5c Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 30 May 2022 12:42:28 -0400 Subject: [PATCH 047/251] TST Update pytest to 7.0 (#23444) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Olivier Grisel Co-authored-by: Loïc Estève --- build_tools/azure/debian_atlas_32bit_lock.txt | 4 +- ...38_conda_defaults_openblas_environment.yml | 2 +- ...onda_defaults_openblas_linux-64_conda.lock | 27 +++---- .../py38_conda_forge_mkl_environment.yml | 2 +- .../py38_conda_forge_mkl_win-64_conda.lock | 20 +++--- ...forge_openblas_ubuntu_1804_environment.yml | 2 +- ...e_openblas_ubuntu_1804_linux-64_conda.lock | 40 +++++------ .../azure/py38_pip_openblas_32bit_lock.txt | 6 +- .../py38_pip_openblas_32bit_requirements.txt | 2 +- ...latest_conda_forge_mkl_linux-64_conda.lock | 70 +++++++++++-------- ...t_conda_forge_mkl_linux-64_environment.yml | 2 +- ...onda_forge_mkl_no_coverage_environment.yml | 2 +- ..._forge_mkl_no_coverage_linux-64_conda.lock | 40 +++++------ ...pylatest_conda_forge_mkl_osx-64_conda.lock | 36 +++++----- ...est_conda_forge_mkl_osx-64_environment.yml | 2 +- ...latest_conda_mkl_no_openmp_environment.yml | 2 +- ...test_conda_mkl_no_openmp_osx-64_conda.lock | 17 ++--- ...latest_pip_openblas_pandas_environment.yml | 2 +- ...st_pip_openblas_pandas_linux-64_conda.lock | 33 +++++---- .../pylatest_pip_scipy_dev_environment.yml | 2 +- ...pylatest_pip_scipy_dev_linux-64_conda.lock | 17 +++-- build_tools/azure/pypy3_environment.yml | 2 +- build_tools/azure/pypy3_linux-64_conda.lock | 18 ++--- build_tools/azure/ubuntu_atlas_lock.txt | 6 +- .../azure/ubuntu_atlas_requirements.txt | 2 +- build_tools/circle/doc_environment.yml | 2 +- build_tools/circle/doc_linux-64_conda.lock | 11 +-- .../doc_min_dependencies_environment.yml | 2 +- .../doc_min_dependencies_linux-64_conda.lock | 10 +-- .../circle/py39_conda_forge_environment.yml | 2 +- .../py39_conda_forge_linux-aarch64_conda.lock | 6 +- .../update_environments_and_lock_files.py | 4 +- 32 files changed, 202 insertions(+), 193 deletions(-) diff --git a/build_tools/azure/debian_atlas_32bit_lock.txt b/build_tools/azure/debian_atlas_32bit_lock.txt index 633829fbf2874..b53567f27678d 100644 --- a/build_tools/azure/debian_atlas_32bit_lock.txt +++ b/build_tools/azure/debian_atlas_32bit_lock.txt @@ -8,9 +8,9 @@ atomicwrites==1.4.0 # via pytest attrs==21.4.0 # via pytest -cython==0.29.28 +cython==0.29.30 # via -r build_tools/azure/debian_atlas_32bit_requirements.txt -importlib-metadata==4.11.3 +importlib-metadata==4.11.4 # via pytest joblib==1.0.0 # via -r build_tools/azure/debian_atlas_32bit_requirements.txt diff --git a/build_tools/azure/py38_conda_defaults_openblas_environment.yml b/build_tools/azure/py38_conda_defaults_openblas_environment.yml index 068b7679d2ec8..53a6a8384d0de 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_environment.yml +++ b/build_tools/azure/py38_conda_defaults_openblas_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib=3.1.2 # min - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - codecov diff --git a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock index 5a291b80343a3..5adbe4423da6e 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock @@ -1,17 +1,17 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: d91596671b52a17e757671b6ec100470a003803ffb5fa9df2cce7ba21b19e051 +# input_hash: bc3205329e5f838f2018cbcf919b18b3b16ead68f2ae45e3f1b4518b73dc95e2 @EXPLICIT https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-openblas.conda#9ddfcaef10d79366c90128f5dc444be8 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 -https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b https://repo.anaconda.com/pkgs/main/linux-64/libgfortran4-7.5.0-ha8ba4b0_17.conda#e3883581cbf0a98672250c3e80d292bf +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.5.0-ha8ba4b0_17.conda#ecb35c8952579d5c8dc56c6e076ba948 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 -https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 https://repo.anaconda.com/pkgs/main/linux-64/expat-2.4.4-h295c915_0.conda#f9930c60940181cf06d0bd0b8095063c https://repo.anaconda.com/pkgs/main/linux-64/giflib-5.2.1-h7b6447c_0.conda#c2583ad8de5051f19479580c58336f15 https://repo.anaconda.com/pkgs/main/linux-64/icu-58.2-he6710b0_3.conda#48cc14d5ad1a9bcd8dac17211a8deb8b @@ -20,7 +20,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8 https://repo.anaconda.com/pkgs/main/linux-64/libopenblas-0.3.18-hf726d26_0.conda#10422bb3b9b022e27798fc368cda69ba https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 https://repo.anaconda.com/pkgs/main/linux-64/libwebp-base-1.2.2-h7f8727e_0.conda#162451b4884cfc7db8400580c711e83a -https://repo.anaconda.com/pkgs/main/linux-64/libxcb-1.14-h7b6447c_0.conda#05811f2f9a9af28f3d7d665dca4d573e +https://repo.anaconda.com/pkgs/main/linux-64/libxcb-1.15-h7f8727e_0.conda#ada518dcadd6aaee9aae47ba9a671553 https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.3-h295c915_1.conda#d9bd18f73ff566e08add10a54a3463cf https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc @@ -30,14 +30,14 @@ https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e https://repo.anaconda.com/pkgs/main/linux-64/glib-2.69.1-h4ff587b_1.conda#4c3eae7c0b8b1c8fb3046a0740313bbf https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda#689f903925dcf6c5ab7bc1de0f58b67b -https://repo.anaconda.com/pkgs/main/linux-64/libxml2-2.9.12-h74e7548_1.conda#ac7815a8b90fcc5f12b129f7c86af735 +https://repo.anaconda.com/pkgs/main/linux-64/libxml2-2.9.12-h74e7548_2.conda#eff5ba91c84a8329c2a1117bee13cd68 https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 -https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.4.9-haebb681_0.conda#2e81424da35919b0f552b9e5ba0a37ba +https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.5.2-ha4553b6_0.conda#0e926a5f2e02fe4a9376ece4b732ce36 https://repo.anaconda.com/pkgs/main/linux-64/dbus-1.13.18-hb2f20db_0.conda#6a6a6f1391f807847404344489ef6cf4 https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.11.0-h70c0345_0.conda#b767874a6273e1058027cb2e300d00ac https://repo.anaconda.com/pkgs/main/linux-64/gstreamer-1.14.0-h28cd5cc_2.conda#6af5d0cbd7310e1cd8a6a5c1c99649b2 -https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.2.0-h85742a9_0.conda#a70887f6e46ea21d5e4e27685bd59ff9 +https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.2.0-h2818925_1.conda#4197d70794ffb5386cf9d4b59233c481 https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 https://repo.anaconda.com/pkgs/main/linux-64/fontconfig-2.13.1-h6c09931_0.conda#fa04e89166d4b44326c6d76e2f708715 https://repo.anaconda.com/pkgs/main/linux-64/gst-plugins-base-1.14.0-h8213a91_2.conda#838648422452405b86699e780e293c1d @@ -45,7 +45,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/lcms2-2.12-h3be6417_0.conda#719db47 https://repo.anaconda.com/pkgs/main/linux-64/libwebp-1.2.2-h55f646e_0.conda#c9ed6bddefc09dbfc246301c3ce3ca14 https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.13-h12debd9_0.conda#edc17980bae484b711e090f0a0cbbaef https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.10.8-py38h06a4308_2.conda#5b1b38defe6479dcc64df1bc4dfb587d +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py38h06a4308_0.conda#dee2837b4ce535119636eb15ab312fd2 https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/linux-64/coverage-6.2-py38h7f8727e_0.conda#34a3006ca7d8d286b63593b31b845ace https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab @@ -54,7 +54,7 @@ https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895 https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 https://repo.anaconda.com/pkgs/main/noarch/joblib-1.1.0-pyhd3eb1b0_0.conda#cae25b839f3b24686e683addde01b742 -https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.3.2-py38h295c915_0.conda#110dea482a589287f78324302f4b1c17 +https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.4.2-py38h295c915_0.conda#00e5f5a50b547c8c31d1a559828f3251 https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.17.3-py38h2f8d375_0.conda#40edbb76ecacefb1e6ab639b514822b1 https://repo.anaconda.com/pkgs/main/linux-64/pillow-9.0.1-py38h22f2fdc_0.conda#13c7b8b727dc6af99e9f6d75b3ec18f3 https://repo.anaconda.com/pkgs/main/linux-64/pluggy-1.0.0-py38h06a4308_1.conda#87bb1d3f6cf3e409a1dac38cee99918e @@ -68,6 +68,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/sip-4.19.13-py38h295c915_0.conda#20 https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a +https://repo.anaconda.com/pkgs/main/noarch/tomli-1.2.2-pyhd3eb1b0_0.conda#8fa7bbbcaeed916ec190614d21b7a9ce https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.1-py38h27cfd23_0.conda#d2d3043f631807af72b0fde504baf625 https://repo.anaconda.com/pkgs/main/linux-64/cffi-1.15.0-py38hd667e15_1.conda#7b12fe728b28de7b8851af1eb1ba1d38 https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.17.3-py38h7e8d029_0.conda#5f2b196b515f8fe6b37e3d224650577d @@ -79,7 +80,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/brotlipy-0.7.0-py38h27cfd23_1003.co https://repo.anaconda.com/pkgs/main/linux-64/cryptography-37.0.1-py38h9ce1e76_0.conda#16d301ed789096eb9881a25ed7a1155e https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-base-3.1.2-py38hef1b27d_1.conda#5e99f974f4c2757791aa10a27596230a https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.2.4-py38ha9443f7_0.conda#5bd3fd807a294f387feabc65821b75d0 -https://repo.anaconda.com/pkgs/main/linux-64/pytest-6.2.5-py38h06a4308_2.conda#52a6739ba472ddd5aeaf0fd495827c38 +https://repo.anaconda.com/pkgs/main/linux-64/pytest-7.1.1-py38h06a4308_0.conda#630c0a0aff5f50ea71e2bf33389e1d5c https://repo.anaconda.com/pkgs/main/linux-64/scipy-1.3.2-py38he2b7bc3_0.conda#a9df91d5a41c1f39524fc8a53c56bc29 https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-3.1.2-py38_1.conda#1781036a02c5def820ea2923074d158a https://repo.anaconda.com/pkgs/main/linux-64/pyamg-4.1.0-py38h9a67853_0.conda#9b0bffd5f67e0c5ee3c226e5518991fb diff --git a/build_tools/azure/py38_conda_forge_mkl_environment.yml b/build_tools/azure/py38_conda_forge_mkl_environment.yml index 7581f7f3579bd..e3391ee51ac79 100644 --- a/build_tools/azure/py38_conda_forge_mkl_environment.yml +++ b/build_tools/azure/py38_conda_forge_mkl_environment.yml @@ -12,7 +12,7 @@ dependencies: - joblib - threadpoolctl - matplotlib - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - codecov diff --git a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock index 106703d0ee7d8..f07997f0b5836 100644 --- a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock @@ -1,9 +1,9 @@ # Generated by conda-lock. # platform: win-64 -# input_hash: 05232660711e1b0074907c31600bace2ace58a920e879f252b9e4e5b3add11d7 +# input_hash: fd41626afa3bcc2a9426dfc064e304c781f514d4aeaa08010d30385c8baa9609 @EXPLICIT -https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2021.10.8-h5b45459_0.tar.bz2#2ddd48c9b52f7f65361b9645b2c5d370 -https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2022.0.0-h57928b3_3663.tar.bz2#9617f0042f5eea1155970e6861f3ab6b +https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2022.5.18.1-h5b45459_0.tar.bz2#8fd522807e4af321181e74ae05f27ec8 +https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2022.1.0-h57928b3_3787.tar.bz2#35dff2b6e944ce136a574c4c006cec28 https://conda.anaconda.org/conda-forge/win-64/mkl-include-2022.0.0-h0e2418a_796.tar.bz2#7e7184f5402aed0e2bf84d0e2cb215d1 https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2#b0309b72560df66f71a9d5e34a5efdfa https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.20348.0-h57928b3_0.tar.bz2#6d666b6ea8251231ff508062d1e41f9c @@ -73,7 +73,7 @@ https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.9-hcd874cb_0.tar.bz2#9cef622e75683c17d05ae62d66e69e6c https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2#46878ebb6b9cbd8afcf8088d7ef00ece https://conda.anaconda.org/conda-forge/win-64/brotli-1.0.9-h8ffe710_7.tar.bz2#bdd3236d1f6962e8e6953276d12b7e5b -https://conda.anaconda.org/conda-forge/win-64/certifi-2021.10.8-py38haa244fe_2.tar.bz2#632c416a7b1cda7712254bc58dd3de10 +https://conda.anaconda.org/conda-forge/win-64/certifi-2022.5.18.1-py38haa244fe_0.tar.bz2#1361583065fbab1bd665946811b867f0 https://conda.anaconda.org/conda-forge/win-64/cffi-1.15.0-py38hd8c33c5_0.tar.bz2#b6a0fcd49b88b2fef6892785c8e33092 https://conda.anaconda.org/conda-forge/win-64/coverage-6.2-py38h294d835_0.tar.bz2#9fcad0bc875eb5cf8b7e45e128cfd886 https://conda.anaconda.org/conda-forge/win-64/cython-0.29.30-py38h885f38d_0.tar.bz2#7cdd65a187c9c04207b394b67c6cf64b @@ -88,21 +88,21 @@ https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.4.0-hb211442_1.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/win-64/pluggy-1.0.0-py38haa244fe_3.tar.bz2#bd23d4e34ce9647a448d8048be89b2dd https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/win-64/setuptools-62.3.1-py38haa244fe_0.tar.bz2#920449401ee73243bf2d4c8f9bc40892 +https://conda.anaconda.org/conda-forge/win-64/setuptools-62.3.2-py38haa244fe_0.tar.bz2#febb3e2b2bba5e1e9b1d202d34c811c4 https://conda.anaconda.org/conda-forge/win-64/tornado-6.1-py38h294d835_3.tar.bz2#f7ac7c9ee9c07ff085df3564b9ea70f2 https://conda.anaconda.org/conda-forge/win-64/unicodedata2-14.0.0-py38h294d835_1.tar.bz2#957e1074c481cbeba55ac1a5e4c07637 https://conda.anaconda.org/conda-forge/win-64/win_inet_pton-1.1.0-py38haa244fe_4.tar.bz2#8adadd81dc9c22710b69628ec6e6d41a https://conda.anaconda.org/conda-forge/win-64/brotlipy-0.7.0-py38h294d835_1004.tar.bz2#f12a527d29a252cef0abbfd752d3ab01 -https://conda.anaconda.org/conda-forge/win-64/cryptography-36.0.2-py38hb7941b4_1.tar.bz2#e8c71e699193603b90555aec63d5e60f +https://conda.anaconda.org/conda-forge/win-64/cryptography-37.0.2-py38hb7941b4_0.tar.bz2#8eecebc1af1259fbc204f94e47c26e5d https://conda.anaconda.org/conda-forge/win-64/fonttools-4.33.3-py38h294d835_0.tar.bz2#092c08f5f754280122530958639839d1 https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.20.2-he07aa86_1.tar.bz2#fb9c7ea19dea6268a5cb8cf6b43ebca9 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-14_win64_mkl.tar.bz2#7f34614de31d915e048f9fc5d50c9529 -https://conda.anaconda.org/conda-forge/win-64/numpy-1.22.3-py38h1d2777f_2.tar.bz2#1d64035cbc8ce5ce5659001caf5a019c +https://conda.anaconda.org/conda-forge/win-64/numpy-1.22.4-py38h1d2777f_0.tar.bz2#ef3ee9177792411be8101125ea5bd50f https://conda.anaconda.org/conda-forge/win-64/pillow-9.1.1-py38hd8e0db4_0.tar.bz2#c14d08dfe6367ae2d8db3c785094ef9b -https://conda.anaconda.org/conda-forge/noarch/pip-22.1-pyhd8ed1ab_0.tar.bz2#bc23e31a667caa608150cbd34b4e4796 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 https://conda.anaconda.org/conda-forge/win-64/pysocks-1.7.1-py38haa244fe_5.tar.bz2#81fd9157802c3d99efc4a24563cfe885 -https://conda.anaconda.org/conda-forge/win-64/pytest-6.2.5-py38haa244fe_2.tar.bz2#cde2cd74dd2f599d7313ccad592ec0e9 +https://conda.anaconda.org/conda-forge/win-64/pytest-7.1.2-py38haa244fe_0.tar.bz2#523814dad1e91a414e8e449aae2202ec https://conda.anaconda.org/conda-forge/win-64/sip-6.5.1-py38h885f38d_2.tar.bz2#61080bcdb3a9c61ef47d8afc7eae5232 https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-14_win64_mkl.tar.bz2#5b29a65b3456d68f42b8eb516409316a https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.5.2-py38he529843_0.tar.bz2#437b6a636997b284e69d33360d88e634 @@ -111,7 +111,7 @@ https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.9.0-py38h885f38d_0.ta https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.3-h467ea89_1.tar.bz2#a6148c66e63782296ae0ccbc60745693 -https://conda.anaconda.org/conda-forge/win-64/scipy-1.8.0-py38ha1292f7_1.tar.bz2#18623ace6c1d5a2e1c1b294cab3f994c +https://conda.anaconda.org/conda-forge/win-64/scipy-1.8.1-py38h9bf8e03_0.tar.bz2#cd06e46ce3f0140becc4c0aed56938d0 https://conda.anaconda.org/conda-forge/win-64/blas-2.114-mkl.tar.bz2#df41b867954336603ad9c8d21a829867 https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.4-py38h885f38d_0.tar.bz2#a7855cbd399e5c173739a1122420db9b https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml index cb57ed74bc0b1..64bb669224ef1 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - ccache diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock index 9e9a0f4564650..9572873c3e61c 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock @@ -1,21 +1,21 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 3cd8b21f7fb7fc5f475b6f8472cfdbbc4a2c06a0da1a549c9f0b95f076312b0f +# input_hash: 4a8f7bb9d2356ef6924ecbaa2de77c00a72130606a77d03cba997fdc114cbcb7 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 @@ -56,12 +56,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar. https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb -https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_0.tar.bz2#6fb32e979e612fe11fd5e654fc527bb8 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.tar.bz2#eb0ab80f8c0e15febcd644c43d1386ba https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb @@ -72,18 +72,18 @@ https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openb https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 -https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_0.tar.bz2#4f0d6c754a21008055d999fa573efa4b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-h676c864_0.tar.bz2#013524c79f4441281fa1833b703c160a +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-he2d8382_0.tar.bz2#54f2d76854c8fd049560228fcc085a33 https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.13-ha86cf86_0_cpython.tar.bz2#39183fc3fc91579b466dfa767d2ef4b1 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d @@ -100,27 +100,27 @@ https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.8-2_cp38.tar.bz2#bf https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c -https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py38h578d9bd_2.tar.bz2#63a01bce71bc3e8c8e0510ed997d1458 -https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py38hfa26641_2.tar.bz2#f264fa736a10b947b6032a6f963dfb64 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py38h578d9bd_0.tar.bz2#429a49d95358a078211aad97c4fc286c +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py38hfa26641_0.tar.bz2#189de973189a5550f34a6c1131dcd15d https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py38h99721a1_2.tar.bz2#e6ed43e96f813b184fe9bb677476e56d +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py38h99721a1_0.tar.bz2#fc4f99d9d9296861d09d487c7c32069f https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py38h0ee0e06_2.tar.bz2#8243a9d13155e6dfb254d35284653a39 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_0.tar.bz2#b2135f7c9f4ba2ef94666946c8238d03 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_8.tar.bz2#11b72f5b1cc15427c89232321172a0bc https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py38h578d9bd_0.tar.bz2#5efbc16cda18259c2ce412d181ba0d9f +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py38h578d9bd_0.tar.bz2#8b04fc38afd584d2531e630e1a59abd9 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h0a891b7_1.tar.bz2#83df0e9e3faffc295f12607438691465 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py38h0a891b7_0.tar.bz2#fd11badf5b3f7d738cc983cb2c75946e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py38h47df419_1.tar.bz2#0cdb1150994e0c449b25d6f92b69eda2 https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.tar.bz2#acfc7625a212c27f7decdca86fdb2aba -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.bz2#23a8cc7179515f7092fa580275ae57d6 -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py38h56a6a73_1.tar.bz2#86073932d9e675c5929376f6f8b79b97 +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py38h1ee437e_0.tar.bz2#a0a8bc19d491ec659a534c9a11cf74a0 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py38h826bfd8_0.tar.bz2#107af20136422bcabf9f1195f6262117 https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py38h514daf8_0.tar.bz2#b668a53168c9e66fd5948cf9a456ae50 https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_8.tar.bz2#78a2a6cb4ef31f997c1bee8223a9e579 diff --git a/build_tools/azure/py38_pip_openblas_32bit_lock.txt b/build_tools/azure/py38_pip_openblas_32bit_lock.txt index b30f7c2c40fb3..6ee885e4605b6 100644 --- a/build_tools/azure/py38_pip_openblas_32bit_lock.txt +++ b/build_tools/azure/py38_pip_openblas_32bit_lock.txt @@ -14,7 +14,7 @@ iniconfig==1.1.1 # via pytest joblib==1.1.0 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt -numpy==1.22.3 +numpy==1.22.4 # via # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt # scipy @@ -30,7 +30,7 @@ py==1.11.0 # pytest-forked pyparsing==3.0.9 # via packaging -pytest==6.2.5 +pytest==7.1.2 # via # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt # pytest-forked @@ -43,7 +43,7 @@ scipy==1.8.1 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt threadpoolctl==3.1.0 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt -toml==0.10.2 +tomli==2.0.1 # via pytest wheel==0.37.1 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt diff --git a/build_tools/azure/py38_pip_openblas_32bit_requirements.txt b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt index 9bc0ae3fdbadc..fb1b4ef7b1c63 100644 --- a/build_tools/azure/py38_pip_openblas_32bit_requirements.txt +++ b/build_tools/azure/py38_pip_openblas_32bit_requirements.txt @@ -6,7 +6,7 @@ scipy cython joblib threadpoolctl -pytest==6.2.5 +pytest pytest-xdist pillow wheel 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 9f7d6fc198215..e9f1c1d8334d8 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 @@ -1,33 +1,37 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 3d477285e630a12c9c8b60ea8531e45c86b5ecb4a06bc6d2f69c563e6fdc73f8 +# input_hash: c37a5ebd9e5b96fd88fd4f70f9850219fb4ff1d23468f3ff179d0188e72b9538 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_0.tar.bz2#ec47e97c8e0b27dcadbebc4d17764548 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 +https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d -https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa +https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c +https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2#3f3258d8f841fbac63b36b75bdac1afd https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb 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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a @@ -35,6 +39,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2#39b1328babf85c7c3a61636d9cd50206 https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f +https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 @@ -51,39 +56,44 @@ https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f6 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.51-h166bdaf_1.tar.bz2#875e5931fb2faa6dacb4c13672630ae3 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 -https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.3-he0ac6c6_0.tar.bz2#8ab9f9c0fc641b53c5f87368e41af18d https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb -https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_0.tar.bz2#69c2d220ca1b41a881928a91a6cbbd93 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.tar.bz2#c01640c8bad562720d6caff0402dbd96 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.3-default_h3a83d3e_0.tar.bz2#1a571eb098b894a66642cd8b638f5f1d +https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 -https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_0.tar.bz2#3314d5f8d6c831514363625cb28c8ff1 +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-hd57d9b9_0.tar.bz2#91b38e297e1cc79f88f7cbf7bdb248e0 +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.3-default_h2e3cab8_0.tar.bz2#2343b7c11c031c5415b28641eb81275d +https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13980beea7c55e6b68db1349f25bd454 +https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 -https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h9a8a25e_0_cpython.tar.bz2#4c6ebd5ba5e606f77a58154b37d96851 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d @@ -94,6 +104,7 @@ https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 +https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-hfd4fe87_1001.tar.bz2#a44a1d690250f6bbb01b7e328ea0c719 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_mkl.tar.bz2#27fda2535874f86f52c0fb382208be76 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_mkl.tar.bz2#a399241e54c43f219e65781995516a1e https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 @@ -106,41 +117,40 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py310hff52083_2.tar.bz2#9d379ec519a1e4cece41bee7a8a0c451 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py310hff52083_0.tar.bz2#cfdf8a8dda4e471ecdb196c0f34a85e0 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py310h0fdd8cc_0.tar.bz2#7b7366be82277a5a210e48cc6d25ce26 https://conda.anaconda.org/conda-forge/linux-64/coverage-6.2-py310h6acc77f_0.tar.bz2#3a96cddd907fb4ecb34d0ee8205ee708 -https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py310hd8f1fbe_2.tar.bz2#2ac7b943bf7280631348083d516f0d62 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py310h4ef5377_2.tar.bz2#6881d1a459458a4ec9f3c1b44ed024d9 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py310h4ef5377_0.tar.bz2#a97b04c2d88d24d4a25fd9c069189281 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py310he619898_2.tar.bz2#b4cde935a2ca6c97a6700add567f38ef +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_0.tar.bz2#0195bd87c50562a09b79ea9a4af8c0f5 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-hb166930_4.tar.bz2#7c165f1b39385b9fee1f279005ee512e https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2#378f2260e871f3ea46c6fa58d9f05277 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py310hff52083_0.tar.bz2#2fad189c2eae603293c746329510f0ba +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py310hff52083_0.tar.bz2#b9c10ed1a8a0e0abc4017f73789e666b https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1004.tar.bz2#6499bb11b7feffb63b26847fc9181319 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-36.0.2-py310h597c629_1.tar.bz2#e8c95a1b5542c95fc054e9ace7269708 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py310h597c629_0.tar.bz2#7b40622ed00061cc8f803c5ed3c62707 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec -https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py310hff52083_2.tar.bz2#6ccfe8cf3b03ac083a4928a9e7b2ea9f -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py310hea5193d_1.tar.bz2#664d80ddeb51241629b3ada5ea926e4d +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py310hff52083_0.tar.bz2#5d44c6ab93d445b6c433914753390e86 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py310h7612f91_0.tar.bz2#14a7ea0620e4c0801bee756171f4dc03 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py310h122e73d_2.tar.bz2#f485cb3efb4c179928a96fb2e02e6f7e https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py310hfcd6d55_8.tar.bz2#e7daa09dba0d95a874c3d0a678665e77 -https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py310hfcd6d55_8.tar.bz2#f78e8d66e92e73e8fda274664888b2a2 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py310hd8f1fbe_0.tar.bz2#b524296ac16718d06c0e3389668c27f6 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py310hff52083_8.tar.bz2#f75c4f1fe3bd1a15ae0d2e5f33bc75e6 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py310hd8f1fbe_0.tar.bz2#13c89455637a2f2c66c0bd5624eb6d42 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml index 78ed2e7ddb40e..3dd084529b31e 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - codecov diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml index c88f858bcb4b8..65916f127a4e6 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - ccache diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock index bae736681a0cd..b9fbfa708c752 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock @@ -1,23 +1,23 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 586dc9008fe85aec80f466d7722fa9f394376fc0e2800044aacd74a7b43df74f +# input_hash: 7f42fec6989da8219b1c3ea2edc884a39f31df1acf891ad7307070c2d02e86c0 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.tar.bz2#19410c3df09dfb12d1206132a1d357c5 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 @@ -57,11 +57,11 @@ https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar. https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb -https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_0.tar.bz2#6fb32e979e612fe11fd5e654fc527bb8 +https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.tar.bz2#eb0ab80f8c0e15febcd644c43d1386ba https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb @@ -71,19 +71,19 @@ https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 -https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_0.tar.bz2#4f0d6c754a21008055d999fa573efa4b +https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_0.tar.bz2#5608a9802071373781ee401786fa4846 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.2-h676c864_0.tar.bz2#013524c79f4441281fa1833b703c160a +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-he2d8382_0.tar.bz2#54f2d76854c8fd049560228fcc085a33 https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 -https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h2660328_0_cpython.tar.bz2#0f72b088a5471e97309031e1636e7b3f https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d @@ -101,19 +101,19 @@ https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.10-2_cp310.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b87d66d6d3991d988fb31510c95a9267 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c -https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py310hff52083_2.tar.bz2#9d379ec519a1e4cece41bee7a8a0c451 -https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.28-py310hd8f1fbe_2.tar.bz2#2ac7b943bf7280631348083d516f0d62 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py310hff52083_0.tar.bz2#cfdf8a8dda4e471ecdb196c0f34a85e0 +https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py310h4ef5377_2.tar.bz2#6881d1a459458a4ec9f3c1b44ed024d9 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py310h4ef5377_0.tar.bz2#a97b04c2d88d24d4a25fd9c069189281 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.0-py310he619898_2.tar.bz2#b4cde935a2ca6c97a6700add567f38ef +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_0.tar.bz2#0195bd87c50562a09b79ea9a4af8c0f5 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.2.0-py310hff52083_0.tar.bz2#2fad189c2eae603293c746329510f0ba +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py310hff52083_0.tar.bz2#b9c10ed1a8a0e0abc4017f73789e666b https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c @@ -121,8 +121,8 @@ https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py310hff52083_2.tar.bz2#6ccfe8cf3b03ac083a4928a9e7b2ea9f -https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.0-py310hea5193d_1.tar.bz2#664d80ddeb51241629b3ada5ea926e4d +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py310hff52083_0.tar.bz2#5d44c6ab93d445b6c433914753390e86 +https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py310h7612f91_0.tar.bz2#14a7ea0620e4c0801bee756171f4dc03 https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 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 632827cf4c838..3765653df6323 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 @@ -1,9 +1,9 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: bafcdf40fe6962b1f903f7cc91e2cd06d481688c80e4bf2d364a50660b97e729 +# input_hash: 124a7dac0edb63e994220b2ef3792fdff0ef02db5046de94437ca0fb2f0f4bb8 @EXPLICIT https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5 -https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2021.10.8-h033912b_0.tar.bz2#bb82d0243db9882b509702ecb69e38f0 +https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2022.5.18.1-h033912b_0.tar.bz2#8daebfd1f22a51afecb341604b86689c https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hbcb3906_2.tar.bz2#be8f747c37e4d7e346c133e641966750 https://conda.anaconda.org/conda-forge/osx-64/jbig-2.1-h0d85af4_2003.tar.bz2#4d76d11d3a256931926099498aa3565b https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-h5eb16cf_1.tar.bz2#9d52137dd3f98b32dee941642901d08f @@ -47,11 +47,11 @@ https://conda.anaconda.org/conda-forge/osx-64/mkl-2022.0.0-h89fa619_782.tar.bz2# https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h57ddcff_0.tar.bz2#e0dcb354df4ad4f79539d57e4f8ec1bd https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.38.5-hd9f0692_0.tar.bz2#258c39c5e2eff8b8b29d1a027e4e1b5a -https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-h582d3a0_0.tar.bz2#df9ed22d1725b8fecaede2d579fd6bc4 +https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-ha9df2e0_1.tar.bz2#8817fcb007cba0011181150378f6baf0 https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-h5eb16cf_7.tar.bz2#d3320319f06d6adb52ed01e1839475a1 https://conda.anaconda.org/conda-forge/osx-64/clang-13-13.0.1-default_he082bbe_0.tar.bz2#ffb3d690ddae0b4f601fb937187e38e1 https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 -https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-hd77a64a_10.tar.bz2#22ac1feaffbec04061468d823d8b6491 +https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-h6fbe7a8_10.tar.bz2#576f44dff0debeac8806eecdf0f301a4 https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-14_osx64_mkl.tar.bz2#c9505f8e11836aac300706d24a0ecc38 https://conda.anaconda.org/conda-forge/osx-64/libhiredis-1.0.2-h2beb688_0.tar.bz2#524282b2c46c9dedf051b3bc2ae05494 https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.3.0-h17f2ce3_3.tar.bz2#8a2611163920a17b13a1325bb70d7293 @@ -59,8 +59,8 @@ https://conda.anaconda.org/conda-forge/osx-64/mkl-devel-2022.0.0-h694c41f_783.ta https://conda.anaconda.org/conda-forge/osx-64/mpc-1.2.1-hbb51d92_0.tar.bz2#9f46d6ad4c460679ee997abc10da3bac https://conda.anaconda.org/conda-forge/osx-64/python-3.10.4-h8b4d769_0_cpython.tar.bz2#62ebdb09c27c4cd4bcc84c6a283cb6cb https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/osx-64/ccache-4.5.1-hfceccdb_0.tar.bz2#183d1dd5b0655fbfa29c7cabcc9fdcca -https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h2b735b3_10.tar.bz2#d1d89125c6030d675607a15405d428fe +https://conda.anaconda.org/conda-forge/osx-64/ccache-4.6-h8580cb5_0.tar.bz2#fa11b3db27aec2910b317f8c06f5eed0 +https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h3eff9a4_10.tar.bz2#a7552b2de2f52bbf8b726d982507b1ef https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/osx-64/clang-13.0.1-h694c41f_0.tar.bz2#d11f9dc9b90ae4b55f501bdf2784d3c0 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb @@ -69,7 +69,7 @@ https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-9.3.0-h9cc0e5 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b -https://conda.anaconda.org/conda-forge/osx-64/ld64-609-h54cff87_10.tar.bz2#deec546e1bb2b5439002ad45aa39d307 +https://conda.anaconda.org/conda-forge/osx-64/ld64-609-ha328185_10.tar.bz2#bb5eb6726c4b1bbad865673edb48ba27 https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-14_osx64_mkl.tar.bz2#3f6dcac8db8e959489338d3718b39a51 https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-14_osx64_mkl.tar.bz2#b35a77c4ab5b7af5981a57de2da9ebe0 https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.2.2-h28dabe5_0.tar.bz2#6aa31e81854e3172dae89300ae9a5444 @@ -84,32 +84,32 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-hfc3f419_10.tar.bz2#e4bb0705030f1ad5d36645797182a601 -https://conda.anaconda.org/conda-forge/osx-64/certifi-2021.10.8-py310h2ec42d9_2.tar.bz2#18104c0f017253a9abf3201ae152d4e7 +https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-h351d84c_10.tar.bz2#4c238f9fccbac5beaf219d59a59b7f10 +https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.5.18.1-py310h2ec42d9_0.tar.bz2#7835c0b6bf96eb97567694974c1902c7 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py310hcc37b68_0.tar.bz2#bca69dbd12cea5ae0dc298fc58a3c4ee https://conda.anaconda.org/conda-forge/osx-64/clangxx-13.0.1-default_he082bbe_0.tar.bz2#2c7017821fa3d741405ab4c4da24ff54 https://conda.anaconda.org/conda-forge/osx-64/coverage-6.2-py310he24745e_0.tar.bz2#a715a002d748aa32fe3ce650886061e3 -https://conda.anaconda.org/conda-forge/osx-64/cython-0.29.28-py310h9d931ec_2.tar.bz2#192ab2dcf7e12fefc859f5ef57880781 +https://conda.anaconda.org/conda-forge/osx-64/cython-0.29.30-py310hd4537e4_0.tar.bz2#1dbaaf42d2bb8289b3b03f4d20a189ba https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.2-py310h6be76da_1.tar.bz2#ac3944d0ad3b024c448a5b40f0a56acb https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.9.0-14_osx64_mkl.tar.bz2#1d72bf3f74d97964eed152b28012924a -https://conda.anaconda.org/conda-forge/osx-64/numpy-1.22.3-py310he1f95b8_2.tar.bz2#96e91eef3b843626d498c793f81e6581 +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.22.4-py310hed37afb_0.tar.bz2#cd4ad16cf8641c1b02c3966945ff00c3 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.0-py310h382dc3b_2.tar.bz2#64546d1e457fb9d0d62caf408611ced6 +https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.1-py310hb3240ae_0.tar.bz2#104f85cb4c4dc9567ef16f365bd99888 https://conda.anaconda.org/conda-forge/osx-64/pluggy-1.0.0-py310h2ec42d9_3.tar.bz2#b2349ab9b4c83ae573a6985f728e5f37 https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py310h2ec42d9_5.tar.bz2#8b7a82347d1ed70878126333339f4969 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.2.0-py310h2ec42d9_0.tar.bz2#b361f098d343fa2d7c7ad01ac77cd7a1 +https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.3.2-py310h2ec42d9_0.tar.bz2#91b01e2f0e1c2efbf4aebd2009d65d0a https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py310h1961e1f_3.tar.bz2#84d43324014a93910f008ada676ca542 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py310h1961e1f_1.tar.bz2#3fe48797c02b3b467efd4d9bc53d1624 https://conda.anaconda.org/conda-forge/osx-64/blas-devel-3.9.0-14_osx64_mkl.tar.bz2#e0784569bc28feea5a24b9c469001407 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py310h1961e1f_1004.tar.bz2#e84bd2f66966aa51356dfe14ef887e42 https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-13.0.1-hd3f61c9_0.tar.bz2#d744aae4a8e003c1fd2a1d3d757bd628 -https://conda.anaconda.org/conda-forge/osx-64/cryptography-36.0.2-py310hd6fa1ae_1.tar.bz2#bcfbed5cb8f4d32c024194f3e93aefa3 +https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.2-py310h52c3658_0.tar.bz2#d59b17f2f4c984ae052f05bc45ad7cea https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.33.3-py310h6c45266_0.tar.bz2#71ce94a99d1efe13d3ded06770d07127 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/osx-64/pandas-1.4.2-py310h514ec25_1.tar.bz2#95fc16c001a0cc46c60933b7b3aebd65 -https://conda.anaconda.org/conda-forge/osx-64/pytest-6.2.5-py310h2ec42d9_2.tar.bz2#bea18ab864d7aa15be892c76c083e203 -https://conda.anaconda.org/conda-forge/osx-64/scipy-1.8.0-py310h47774c9_1.tar.bz2#c463c43c2d05bf8c09e29145488b8f68 +https://conda.anaconda.org/conda-forge/osx-64/pytest-7.1.2-py310h2ec42d9_0.tar.bz2#213fafaad4bdda317efc58119135876b +https://conda.anaconda.org/conda-forge/osx-64/scipy-1.8.1-py310h1f9c157_0.tar.bz2#9301a094c53ed53bbbc168597c39719e https://conda.anaconda.org/conda-forge/osx-64/blas-2.114-mkl.tar.bz2#b3c52c1eb378cf480ad1366367078a7f https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-13.0.1-he01351e_0.tar.bz2#e30fcb14e68727908484468c4fd35ede https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.2-py310h4510841_0.tar.bz2#fd973aaf25d1e82d67ce4d87f7aad060 @@ -117,12 +117,12 @@ https://conda.anaconda.org/conda-forge/osx-64/pyamg-4.2.3-py310h84c6d00_0.tar.bz https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f -https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_0.tar.bz2#ec59e1b93ba4d35a69d5736119cdb9af +https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_1.tar.bz2#fc6ffeee7e43f7dbdd181218b31d5776 https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.2-py310h2ec42d9_0.tar.bz2#55c15bc829a216804a0fe2aabe9294e6 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.4.2-had99412_0.tar.bz2#2e89dc235b304e25307378efec943f50 -https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_0.tar.bz2#f4e177067a007d024b22c80fb2a85f91 +https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_1.tar.bz2#b220d126b131d9d7ca472d9f0ffac1ca https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-9.3.0-h18f7dce_15.tar.bz2#48f985e599ff223cd8acea3595d2cbe5 https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml index 374ebb6aa64d0..95dbb89e5825c 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - codecov diff --git a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml index d0bbd4964c778..415ad45bfa06d 100644 --- a/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml +++ b/build_tools/azure/pylatest_conda_mkl_no_openmp_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - codecov 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 f6afc0d45e199..d5df6417e8cf1 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 @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: f786ff160250fc554d701b3e70cd9eaafcb72add6786ac73f19a8face11482f2 +# input_hash: 1ab4cb5d3ea271222804b485b5288a9edc204e385d109d5acc8fb1d32e0ef6a4 @EXPLICIT https://repo.anaconda.com/pkgs/main/osx-64/blas-1.0-mkl.conda#cb2c87e85ac8e0ceae776d26d4214c8a https://repo.anaconda.com/pkgs/main/osx-64/ca-certificates-2022.4.26-hecd8cb5_0.conda#dd4c1cfc3606b56486f7af0a99e80fa3 @@ -25,11 +25,11 @@ https://repo.anaconda.com/pkgs/main/osx-64/readline-8.1.2-hca72f7f_1.conda#c54a6 https://repo.anaconda.com/pkgs/main/osx-64/tk-8.6.11-h3fd3227_1.conda#30fd8466573613aadae5fe013306b51b https://repo.anaconda.com/pkgs/main/osx-64/freetype-2.11.0-hd8bbffd_0.conda#a06dcb72dc6961d37f280b4b97d74f43 https://repo.anaconda.com/pkgs/main/osx-64/sqlite-3.38.3-h707629a_0.conda#5d3e2867383881b9227ee3aba91cd52d -https://repo.anaconda.com/pkgs/main/osx-64/zstd-1.4.9-h322a384_0.conda#bc8c39208f4e8205c729683dcfa7e95e -https://repo.anaconda.com/pkgs/main/osx-64/libtiff-4.2.0-h87d7836_0.conda#32cded0d1900a09a8fefdeda35e0de1c +https://repo.anaconda.com/pkgs/main/osx-64/zstd-1.5.2-hcb37349_0.conda#d3ba225e3bc4285d8efd8cdfd7aa6112 +https://repo.anaconda.com/pkgs/main/osx-64/libtiff-4.2.0-hdb42f99_1.conda#be71b575ef057665407d8a298499a669 https://repo.anaconda.com/pkgs/main/osx-64/python-3.9.12-hdfd78df_0.conda#cee6193364c53d83006ed4c6398b3a84 https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e -https://repo.anaconda.com/pkgs/main/osx-64/certifi-2021.10.8-py39hecd8cb5_2.conda#702c7c377935b139ba90a2e676a348d5 +https://repo.anaconda.com/pkgs/main/osx-64/certifi-2022.5.18.1-py39hecd8cb5_0.conda#f837ed0b5b0b47dded0c79a32f9317f0 https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/osx-64/coverage-6.2-py39hca72f7f_0.conda#55962a70ebebc8de15c4e1d745b20cdd https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab @@ -38,7 +38,7 @@ https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895 https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 https://repo.anaconda.com/pkgs/main/noarch/joblib-1.1.0-pyhd3eb1b0_0.conda#cae25b839f3b24686e683addde01b742 -https://repo.anaconda.com/pkgs/main/osx-64/kiwisolver-1.3.2-py39he9d5cce_0.conda#65b97fa4e8b5705e891b923a06516bfd +https://repo.anaconda.com/pkgs/main/osx-64/kiwisolver-1.4.2-py39he9d5cce_0.conda#6db2c99a6633b0cbd82faa1a36cd29d7 https://repo.anaconda.com/pkgs/main/osx-64/lcms2-2.12-hf1fd2bf_0.conda#697aba7a3308226df7a93ccfeae16ffa https://repo.anaconda.com/pkgs/main/osx-64/libwebp-1.2.2-h56c3ce4_0.conda#027d2450b64e251b8169798f6121b47a https://repo.anaconda.com/pkgs/main/noarch/munkres-1.1.4-py_0.conda#148362ba07f92abab76999a680c80084 @@ -51,6 +51,7 @@ https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda#76415b https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a +https://repo.anaconda.com/pkgs/main/noarch/tomli-1.2.2-pyhd3eb1b0_0.conda#8fa7bbbcaeed916ec190614d21b7a9ce https://repo.anaconda.com/pkgs/main/osx-64/tornado-6.1-py39h9ed2024_0.conda#3d060362ebceec33851e3b9369d5d502 https://repo.anaconda.com/pkgs/main/osx-64/cffi-1.15.0-py39hc55c11b_1.conda#eecfc04a444eaefdf128199499b2c2e0 https://repo.anaconda.com/pkgs/main/noarch/fonttools-4.25.0-pyhd3eb1b0_0.conda#bb9c5b5a6d892fca5efe4bf0203b6a48 @@ -61,8 +62,8 @@ https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.co https://repo.anaconda.com/pkgs/main/osx-64/setuptools-61.2.0-py39hecd8cb5_0.conda#e262d518e990f236ada779f23d58ed18 https://repo.anaconda.com/pkgs/main/osx-64/brotlipy-0.7.0-py39h9ed2024_1003.conda#a08f6f5f899aff4a07351217b36fae41 https://repo.anaconda.com/pkgs/main/osx-64/cryptography-37.0.1-py39hf6deb26_0.conda#5f4c90fdfd8a45bc7060dbc3b65f025a -https://repo.anaconda.com/pkgs/main/osx-64/numpy-base-1.21.5-py39h3b1a694_2.conda#40a831ef5bc18c617f72d6ca2df74486 -https://repo.anaconda.com/pkgs/main/osx-64/pytest-6.2.5-py39hecd8cb5_2.conda#69fc26ab7be8e3e94bc67bd80a01dd66 +https://repo.anaconda.com/pkgs/main/osx-64/numpy-base-1.22.3-py39h3b1a694_0.conda#f68019d1d839b40739b64b6feae2b436 +https://repo.anaconda.com/pkgs/main/osx-64/pytest-7.1.1-py39hecd8cb5_0.conda#d1524f1e4a0980eb0dc978438d053db9 https://repo.anaconda.com/pkgs/main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda#1dbbf9422269cd62c7094960d9b43f36 https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#bbdaac2947f507399816d509107945c2 https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 @@ -75,7 +76,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-3.5.1-py39hecd8cb5_1.conda https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-base-3.5.1-py39hfb0c5b7_1.conda#999c6f2f8542a0dd322f97c94de45a63 https://repo.anaconda.com/pkgs/main/osx-64/mkl_fft-1.3.1-py39h4ab4a9b_0.conda#f947c9a1c65da729963b3035c219ba10 https://repo.anaconda.com/pkgs/main/osx-64/mkl_random-1.2.2-py39hb2f4e1b_0.conda#1bc33de45069ad534182ca92e616ec7e -https://repo.anaconda.com/pkgs/main/osx-64/numpy-1.21.5-py39h2e5f0a9_2.conda#d2a2edaa119ee8dedfbd35a041d8f3b7 +https://repo.anaconda.com/pkgs/main/osx-64/numpy-1.22.3-py39h2e5f0a9_0.conda#16892a18dae1fb1522845e4b6005b436 https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.1-py39h2e5f0a9_0.conda#d7c50238e03c12077f70591771c4ce68 https://repo.anaconda.com/pkgs/main/osx-64/scipy-1.7.3-py39h8c7af03_0.conda#de2900b6122e1417d2f79f0266f700e9 https://repo.anaconda.com/pkgs/main/osx-64/pandas-1.4.2-py39he9d5cce_0.conda#9513b1735fc6feabfb647c545a5be53a diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml index 40a4c4a403164..593ff851c1522 100644 --- a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml +++ b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml @@ -16,7 +16,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest==6.2.5 + - pytest - pytest-xdist - pillow - codecov 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 b75659b1e59f1..a4fc4e1a9bcaf 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 @@ -1,15 +1,15 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 5dc59d462d7953439da4b033dbb144e84f4b8c6f5ab63fa17195d6336914ee75 +# input_hash: 34a05f84990bb8f6bb5f1c16cac38217a072270d62250a1ad739e32a6c006aef @EXPLICIT https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 -https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 -https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc @@ -20,7 +20,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea3 https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 https://repo.anaconda.com/pkgs/main/linux-64/python-3.9.12-h12debd9_0.conda#24e7b6490961f6e3dd7fa3ba24c9302f -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.10.8-py39h06a4308_2.conda#471b9268be2134d5e875de762b71d922 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py39h06a4308_0.conda#23cf7855837fec26c2ab8de97b95ef1d https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py39h06a4308_0.conda#720869dc83cf20f2167fb12e7a54ebaa https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74bcf27ebb94020ea1c838279382cadf @@ -28,7 +28,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None # pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None # pip cycler @ https://files.pythonhosted.org/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl#md5=None -# pip cython @ https://files.pythonhosted.org/packages/9a/26/d2b6bc4cb7d716c82ebc89690cbd5ba0f547db364809cd42dad34d593182/Cython-0.29.28-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl#md5=None +# pip cython @ https://files.pythonhosted.org/packages/a7/c6/3af0df983ba8500831fdae19a515be6e532da7683ab98e031d803e6a8d03/Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl#md5=None # pip docutils @ https://files.pythonhosted.org/packages/4c/5e/6003a0d1f37725ec2ebd4046b657abb9372202655f96e76795dca8c0063c/docutils-0.17.1-py2.py3-none-any.whl#md5=None # pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None # pip fonttools @ https://files.pythonhosted.org/packages/2f/85/2f6e42fb4b537b9998835410578fb1973175b81691e9a82ab6668cf64b0b/fonttools-4.33.3-py3-none-any.whl#md5=None @@ -38,9 +38,9 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip joblib @ https://files.pythonhosted.org/packages/3e/d5/0163eb0cfa0b673aa4fe1cd3ea9d8a81ea0f32e50807b0c295871e4aab2e/joblib-1.1.0-py2.py3-none-any.whl#md5=None # pip kiwisolver @ https://files.pythonhosted.org/packages/f6/13/2a187e2280251f5c035da46e1706d4c8bd6ccc9f34e88c298cffbc5ba793/kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None # pip markupsafe @ https://files.pythonhosted.org/packages/df/06/c515c5bc43b90462e753bc768e6798193c6520c9c7eb2054c7466779a9db/MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip networkx @ https://files.pythonhosted.org/packages/df/04/416751fe793a10a9b1c786d8dd93b80190ae745b3c9cb847c8f84fd119c2/networkx-2.8-py3-none-any.whl#md5=None -# pip numpy @ https://files.pythonhosted.org/packages/25/2f/811ad95effd790cd13cdea494e1cd7520ebc3bf049c3e88c3ca4ba8175c5/numpy-1.22.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip pillow @ https://files.pythonhosted.org/packages/15/37/45ad6041473ebb803d0bb265cf7e749c4838dc48c3335a03e63d6aad07d8/Pillow-9.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip networkx @ https://files.pythonhosted.org/packages/b3/cd/9856de630a7a7bb298e983c7d6bf5dd7810ae0092976b0da829dd66c42a7/networkx-2.8.2-py3-none-any.whl#md5=None +# pip numpy @ https://files.pythonhosted.org/packages/32/82/0a28e3a04411a1a4c1d099bb94349f97050579f90a0290432f09d9a58148/numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pillow @ https://files.pythonhosted.org/packages/59/d0/eb666c55b685419103023f62519dbc968a008e268ec243c56f3214f1da45/Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None # pip py @ https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl#md5=None # pip pygments @ https://files.pythonhosted.org/packages/5c/8e/1d9017950034297fffa336c72e693a5b51bbf85141b24a763882cf1977b5/Pygments-2.12.0-py3-none-any.whl#md5=None @@ -55,27 +55,26 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip sphinxcontrib-qthelp @ https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl#md5=None # pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None -# pip toml @ https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None # pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None # pip zipp @ https://files.pythonhosted.org/packages/80/0e/16a7ee38617aab6a624e95948d314097cc2669edae9b02ded53309941cfc/zipp-3.8.0-py3-none-any.whl#md5=None # pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None # pip coverage @ https://files.pythonhosted.org/packages/d2/41/87d1e548a0418b24cff9c60815ea2cc2d0e0cd4891337a24236a30a1d141/coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None -# pip imageio @ https://files.pythonhosted.org/packages/b0/bc/2d9b381b00aaf19233ddc3468d3e0b98e70531873c19dab8a89a3b9b3051/imageio-2.19.1-py3-none-any.whl#md5=None -# pip importlib-metadata @ https://files.pythonhosted.org/packages/92/f2/c48787ca7d1e20daa185e1b6b2d4e16acd2fb5e0320bc50ffc89b91fa4d7/importlib_metadata-4.11.3-py3-none-any.whl#md5=None +# pip imageio @ https://files.pythonhosted.org/packages/25/41/91f47808e99dd67bfc3aee53d0a7c8d10b01b221ca254bfd36cd51125866/imageio-2.19.2-py3-none-any.whl#md5=None +# pip importlib-metadata @ https://files.pythonhosted.org/packages/ab/b5/1bd220dd470b0b912fc31499e0d9c652007a60caf137995867ccc4b98cb6/importlib_metadata-4.11.4-py3-none-any.whl#md5=None # pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None # pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None # pip pywavelets @ https://files.pythonhosted.org/packages/45/fd/1ad6a2c2b9f16d684c8a21e92455885891b38c703b39f13916971e9ee8ff/PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None -# pip scipy @ https://files.pythonhosted.org/packages/b8/51/6a058c1c742c8365399c93685a5b3c4f9c39389957189725738954c427a0/scipy-1.8.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip scipy @ https://files.pythonhosted.org/packages/25/82/da07cc3bb40554f1f82d7e24bfa7ffbfb05b50c16eb8d738ebb74b68af8f/scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip tifffile @ https://files.pythonhosted.org/packages/19/b7/30d7af4c25985be3852dccd99f15a2003a81bc8f287d57704619fed006ec/tifffile-2022.5.4-py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None # pip pandas @ https://files.pythonhosted.org/packages/35/ad/616c27cade647c2a1513343c72c095146cf3e7a72ace6582574a334fb525/pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pyamg @ https://files.pythonhosted.org/packages/8e/08/d512b6e34d502152723b5a4ad9d962a6141dfe83cd8bcd01af4cb6e84f28/pyamg-4.2.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None -# pip pytest @ https://files.pythonhosted.org/packages/40/76/86f886e750b81a4357b6ed606b2bcf0ce6d6c27ad3c09ebf63ed674fc86e/pytest-6.2.5-py3-none-any.whl#md5=None +# pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None # pip scikit-image @ https://files.pythonhosted.org/packages/b4/56/eed15f4aa01169db761d60552be8f3ff2d46ce587a2faade03a330afc311/scikit_image-0.19.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip scikit-learn @ https://files.pythonhosted.org/packages/57/aa/483fbe6b5314bce2d49801e6cec1f2139a9c220d0d51494788fff47233b3/scikit_learn-1.0.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip scikit-learn @ https://files.pythonhosted.org/packages/62/cb/49d4c9d3505b0dd062f49c4f573995977876cc556c658caffcfcd9043ea8/scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip setuptools-scm @ https://files.pythonhosted.org/packages/e3/e5/c28b544051340e63e0d507eb893c9513d3a300e5e9183e2990518acbfe36/setuptools_scm-6.4.2-py3-none-any.whl#md5=None # pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None # pip lightgbm @ https://files.pythonhosted.org/packages/a1/00/84c572ff02b27dd828d6095158f4bda576c124c4c863be7bf14f58101e53/lightgbm-3.3.2-py3-none-manylinux1_x86_64.whl#md5=None diff --git a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml index 41796dd67c825..9545ce7e7fc32 100644 --- a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml +++ b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml @@ -9,7 +9,7 @@ dependencies: - pip - pip: - threadpoolctl - - pytest==6.2.5 + - pytest - pytest-xdist - codecov - pytest-cov 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 db3519835558e..8c79e267ed01c 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 @@ -1,15 +1,15 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: dd32840a183f1bada4c6163996c4b5bb86af284e34b0dc41a4b432e4804ad611 +# input_hash: 485bb690e2fd8f11d2d70b00c47154e8374d37b6f3c3cb9cd84f5ec52deeabd5 @EXPLICIT https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 -https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.35.1-h7274673_9.conda#dec20f7c8f9d5f1b293abd97b0f518ed +https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-9.3.0-h5101ec6_17.conda#fb19b69bac6d819c7f3d1126b05461e1 -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-9.3.0-hd4cf53a_17.conda#47744aca0f5e63c4672d117c3596d937 -https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-4.5-1_gnu.tar.bz2#84414b0edb0a36bd7e25fc4936c1abb5 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-9.3.0-h5101ec6_17.conda#e9cbabbfb9e8a430f6a7660fe8dd77a7 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 https://repo.anaconda.com/pkgs/main/linux-64/bzip2-1.0.8-h7b6447c_0.conda#9303f4af7c004e069bae22bde8d800ee https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 @@ -22,7 +22,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea3 https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 https://repo.anaconda.com/pkgs/main/linux-64/python-3.10.4-h12debd9_0.tar.bz2#f931504bb2eeaf18f20388fd0ad44be4 -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2021.5.30-py310h06a4308_0.conda#803b97c2b3265bd360e303e133352b31 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py310h06a4308_0.conda#8773bfc3338ab0b30f0a93067517fb0e https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py310h06a4308_0.conda#1f43427d7c045e63786e0bb79084cf70 https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4e2586f845008770fa152082c04b27c @@ -49,7 +49,6 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4 # pip sphinxcontrib-qthelp @ https://files.pythonhosted.org/packages/2b/14/05f9206cf4e9cfca1afb5fd224c7cd434dcc3a433d6d9e4e0264d29c6cdb/sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl#md5=None # pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None -# pip toml @ https://files.pythonhosted.org/packages/44/6f/7120676b6d73228c96e17f1f794d8ab046fc910d781c8d151120c3f1569e/toml-0.10.2-py2.py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None # pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None # pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None @@ -59,7 +58,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4 # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None # pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None -# pip pytest @ https://files.pythonhosted.org/packages/40/76/86f886e750b81a4357b6ed606b2bcf0ce6d6c27ad3c09ebf63ed674fc86e/pytest-6.2.5-py3-none-any.whl#md5=None +# pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None # pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None # pip numpydoc @ https://files.pythonhosted.org/packages/38/66/04aa44cdc48010317f473b47003045078b083201af68b9c5a110e19444e3/numpydoc-1.3.1-py3-none-any.whl#md5=None # pip pytest-cov @ https://files.pythonhosted.org/packages/20/49/b3e0edec68d81846f519c602ac38af9db86e1e71275528b3e814ae236063/pytest_cov-3.0.0-py3-none-any.whl#md5=None diff --git a/build_tools/azure/pypy3_environment.yml b/build_tools/azure/pypy3_environment.yml index 9026d35625dd0..d947c30f8d414 100644 --- a/build_tools/azure/pypy3_environment.yml +++ b/build_tools/azure/pypy3_environment.yml @@ -13,6 +13,6 @@ dependencies: - threadpoolctl - matplotlib - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - ccache diff --git a/build_tools/azure/pypy3_linux-64_conda.lock b/build_tools/azure/pypy3_linux-64_conda.lock index 7248bb349c3ae..cce318cca3b0c 100644 --- a/build_tools/azure/pypy3_linux-64_conda.lock +++ b/build_tools/azure/pypy3_linux-64_conda.lock @@ -1,14 +1,14 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 94016e30d582c2990f92c497c222a6b4c3e5510c7567b0dd47c7b8bb44df83ad +# input_hash: cf874320f6e578af129bfb6d9ba92149c20c91291a86dbc35043439181333dc8 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2021.10.8-ha878542_0.tar.bz2#575611b8a84f45960e87722eeb51fa26 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-11.2.0-h5c6108e_16.tar.bz2#ff034874d96195a5c5be34200689b5b7 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-11.2.0-he4da1e4_16.tar.bz2#8cfd1cd3273ff187be91b868ddf9a636 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-11.2.0-h69a702a_16.tar.bz2#27974aad841c189854df09426b1b9fac +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-11.2.0-h1d223b6_16.tar.bz2#71feb63a30085cbce51847d5ef1f769d +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d @@ -38,7 +38,7 @@ https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-ha95c52a_0.tar.bz2#5222b231b1ef49a7f60d40b363469b70 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/gdbm-1.18-h0a1914f_2.tar.bz2#b77bc399b07a19c00fe12fdc95ee0297 @@ -73,7 +73,7 @@ https://conda.anaconda.org/conda-forge/noarch/pypy-7.3.7-0_pypy37.tar.bz2#bea1f6 https://conda.anaconda.org/conda-forge/linux-64/setuptools-61.2.0-py37h9c2f6ca_0.tar.bz2#628b5ca5eb44eda9028ad710bae81e33 https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c -https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py37h6b43d8f_2.tar.bz2#2027d768b9cd13e9738e0856aba431ca https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.2.0-pyha770c72_1.tar.bz2#f0f7e024f94e23d3bfee0ab777bf335a https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py37h6b43d8f_0.tar.bz2#0abe97867cd8e0bd2ca5092f5d7ada85 @@ -91,6 +91,6 @@ https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py37h1903001_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py37he341ac4_0.tar.bz2#1b13b927abe70400d6b9c71ac69fed15 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py37h9c2f6ca_2.tar.bz2#01f62860cfd125f2d103146495ae6312 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py37h9c2f6ca_0.tar.bz2#a9050f7b5a866766f69fac8d19b39bc3 -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py37h9c2f6ca_2.tar.bz2#2cba70607a1c89ff472d07e3c1e26323 +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.1-py37h9c2f6ca_0.tar.bz2#0886b5fe236c5d16a9b669f52923d981 https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e diff --git a/build_tools/azure/ubuntu_atlas_lock.txt b/build_tools/azure/ubuntu_atlas_lock.txt index 5aee9e093e0ee..bedcf365f8eb9 100644 --- a/build_tools/azure/ubuntu_atlas_lock.txt +++ b/build_tools/azure/ubuntu_atlas_lock.txt @@ -6,7 +6,7 @@ # attrs==21.4.0 # via pytest -cython==0.29.28 +cython==0.29.30 # via -r build_tools/azure/ubuntu_atlas_requirements.txt execnet==1.9.0 # via pytest-xdist @@ -24,7 +24,7 @@ py==1.11.0 # pytest-forked pyparsing==3.0.9 # via packaging -pytest==6.2.5 +pytest==7.1.2 # via # -r build_tools/azure/ubuntu_atlas_requirements.txt # pytest-forked @@ -35,5 +35,5 @@ pytest-xdist==2.5.0 # via -r build_tools/azure/ubuntu_atlas_requirements.txt threadpoolctl==2.0.0 # via -r build_tools/azure/ubuntu_atlas_requirements.txt -toml==0.10.2 +tomli==2.0.1 # via pytest diff --git a/build_tools/azure/ubuntu_atlas_requirements.txt b/build_tools/azure/ubuntu_atlas_requirements.txt index 5ce44c3885749..b160f16a10ad4 100644 --- a/build_tools/azure/ubuntu_atlas_requirements.txt +++ b/build_tools/azure/ubuntu_atlas_requirements.txt @@ -4,5 +4,5 @@ cython joblib==1.0.0 # min threadpoolctl==2.0.0 # min -pytest==6.2.5 +pytest pytest-xdist diff --git a/build_tools/circle/doc_environment.yml b/build_tools/circle/doc_environment.yml index e91d4e9820615..f0a933e31552a 100644 --- a/build_tools/circle/doc_environment.yml +++ b/build_tools/circle/doc_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib - pandas - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - scikit-image diff --git a/build_tools/circle/doc_linux-64_conda.lock b/build_tools/circle/doc_linux-64_conda.lock index 0f670c9df5027..0ad634faa86c5 100644 --- a/build_tools/circle/doc_linux-64_conda.lock +++ b/build_tools/circle/doc_linux-64_conda.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: ce2c52faa4a5f78e85354d69599fa230afb083e5f95ae37903edb103d6e0d59f +# input_hash: 1b1e977a1b5dcedea55d0a8b53d501d1c1211b70a4419ec48dafe1b2658b4ef8 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 @@ -128,7 +128,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.9.12-h9a8a25e_1_cpython.tar.bz2#06dadf5df9d340439c2aa32e15099d31 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 @@ -168,6 +168,7 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.ta https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c @@ -182,7 +183,7 @@ https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py39hf3d152e_2.t https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py39hf3d152e_0.tar.bz2#4c2a0eabf0b8980b2c755646a6f750eb https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py39hf939315_1.tar.bz2#93232e4148e28b2665c16e573747a874 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1.tar.bz2#7cda413e43b252044a270c2477031c5c -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.3-py39hc58783e_2.tar.bz2#e682ad4e85c7fda7dd0f0283d3b2ae8e +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py39hc58783e_0.tar.bz2#a09094871a38a0abec011ec36e742045 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_0.tar.bz2#795b91dbac91f606bd0abc466bdef572 @@ -197,7 +198,7 @@ https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39hb9d737c_3.tar.b https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py39hb9d737c_1.tar.bz2#ef84376736d1e8a814ccb06d1d814e6f https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1004.tar.bz2#05a99367d885ec9990f25e74128a8a08 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a_0.tar.bz2#11780968ae65fdeb1a0bc294d211597d -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.0-pyhd8ed1ab_0.tar.bz2#3aef8ad6f9af56117e959a53cb9b9fd1 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8 https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39h9c0c3a3_5.tar.bz2#e0d91afa9019bca0484bddb1626b7035 https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c @@ -207,7 +208,7 @@ https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py39h1832856_1.tar.bz2#264505bcd299b8d564195cfb3e6038f0 https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py39hf3d152e_2.tar.bz2#b88777273800a6df2120fbcfa4d60569 +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py39hf3d152e_0.tar.bz2#a6bcf633d12aabdfc4cb32a09ebc0f31 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py39he49c0e8_0.tar.bz2#b1b4cc4216e555168e88d6a2b1914af1 diff --git a/build_tools/circle/doc_min_dependencies_environment.yml b/build_tools/circle/doc_min_dependencies_environment.yml index 4fd342722efce..9f20b9e900336 100644 --- a/build_tools/circle/doc_min_dependencies_environment.yml +++ b/build_tools/circle/doc_min_dependencies_environment.yml @@ -14,7 +14,7 @@ dependencies: - matplotlib=3.1.2 # min - pandas=1.0.5 # min - pyamg - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - scikit-image=0.16.2 # min 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 aa09f29ca0866..3c3a948784955 100644 --- a/build_tools/circle/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/circle/doc_min_dependencies_linux-64_conda.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: f0d3389155e6be5c2e3e2ffc42e39a82aaa2809e3880c4f6ad2bb83fb8fd57b4 +# input_hash: a6aaffac15d19e8ed6fc40eddb398e18e9252fb737bf8c60f99f93e7d41ac5ce @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 @@ -69,7 +69,7 @@ https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.b https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.8.0-20_mkl.tar.bz2#8fbce60932c01d0e193a1a814f2002be https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 -https://conda.anaconda.org/conda-forge/linux-64/nss-3.77-h2350873_0.tar.bz2#260617b7829b86e9e939b01c9cad1526 +https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.6-h852b56e_0_cpython.tar.bz2#dd65401dfb61ac030edc0dc4d15c2c51 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 @@ -104,7 +104,7 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-jsmath-1.0.1-py_0.ta https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.tar.bz2#d01180388e6d1838c3e1ad029590aa7a https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c -https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 @@ -132,7 +132,7 @@ https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.b https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30_0.tar.bz2#bcc387154aae535f8b4f84822621b5f7 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.0-pyhd8ed1ab_0.tar.bz2#3aef8ad6f9af56117e959a53cb9b9fd1 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_1.tar.bz2#d32c1aa8047d2d11163abbe4a8f852ac @@ -142,7 +142,7 @@ https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_ https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 -https://conda.anaconda.org/conda-forge/linux-64/pytest-6.2.5-py38h578d9bd_2.tar.bz2#23a8cc7179515f7092fa580275ae57d6 +https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.3.2-py38h921218d_0.tar.bz2#278670dc2fef5a6309d1635f047bd456 https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 diff --git a/build_tools/circle/py39_conda_forge_environment.yml b/build_tools/circle/py39_conda_forge_environment.yml index 28676862e0597..16c5b0a0144ca 100644 --- a/build_tools/circle/py39_conda_forge_environment.yml +++ b/build_tools/circle/py39_conda_forge_environment.yml @@ -12,7 +12,7 @@ dependencies: - joblib - threadpoolctl - matplotlib - - pytest=6.2.5 + - pytest - pytest-xdist - pillow - pip diff --git a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock index 6b1a9a9543203..df8551fb63105 100644 --- a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock +++ b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-aarch64 -# input_hash: f1c0d9e31e06e83634304690566f166bbeedf60e757b9a5333641a3db841f9b9 +# input_hash: e57a9b17b5add91c70ac3ba0cae1f9da4dcf5bc2b1bb65dbddac08a13e13945a @EXPLICIT https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2022.5.18.1-h4fd8a4c_0.tar.bz2#8f445510f2354b85b27fb5f4f202c59b https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.36.1-h02ad14f_2.tar.bz2#3ca1a8e406eab04ffc3bfa6e8ac0a724 @@ -66,7 +66,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.9-2_cp39.tar.bz2#c74e493d773fa544a312b0904abcfbfb https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c -https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.114-openblas.tar.bz2#240259abe13902a22c25ad1ff8082d90 https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2022.5.18.1-py39h4420490_0.tar.bz2#32f70b59cab5617c4ac9e8529631f844 @@ -83,7 +83,7 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-14.0.0-py39h0f https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.33.3-py39h0fd3b05_0.tar.bz2#0f8d88eb32e53e0756a4bceaa5d85d3e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 -https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-6.2.5-py39ha65689a_2.tar.bz2#1b663c678dd3032ef9dbdfd35165091c +https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-7.1.2-py39ha65689a_0.tar.bz2#6de5b49b9d9e7628e0666ccf2b7df40b https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.8.1-py39h43b6dad_0.tar.bz2#372f005c9ca6dc0db0adae0f78dbc4d4 https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.5.2-py39hfed42d8_0.tar.bz2#9f90790067684c9f0ab1b07e6e82070a https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index e4f3222cfd968..d0fcd35466f53 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -72,9 +72,6 @@ docstring_test_dependencies = ["sphinx", "numpydoc"] default_package_constraints = { - # XXX: pytest is temporary pinned to 6.2.5 because pytest 7 causes CI - # issues https://github.com/scikit-learn/scikit-learn/pull/22381 - "pytest": "6.2.5", # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe # cf. https://github.com/nedbat/coveragepy/issues/1310 "coverage": "6.2", @@ -490,6 +487,7 @@ def write_pip_lock_file(build_metadata): # as the one used during the CI build where the lock file is used, we first # create a conda environment with the correct Python version and # pip-compile and run pip-compile in this environment + command = ( "conda create -c conda-forge -n" f" pip-tools-python{python_version} python={python_version} pip-tools -y" From 4692409655ce07a55cc3ca8cc21d7da54caca7b4 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Mon, 30 May 2022 18:46:06 +0200 Subject: [PATCH 048/251] DOC Rework plot_hashing_vs_dict_vectorizer.py example (#23266) Co-authored-by: Olivier Grisel Co-authored-by: Julien Jerphanion --- .../text/plot_hashing_vs_dict_vectorizer.py | 401 +++++++++++++++--- 1 file changed, 337 insertions(+), 64 deletions(-) diff --git a/examples/text/plot_hashing_vs_dict_vectorizer.py b/examples/text/plot_hashing_vs_dict_vectorizer.py index ce359cd137487..44faa35ff6b86 100644 --- a/examples/text/plot_hashing_vs_dict_vectorizer.py +++ b/examples/text/plot_hashing_vs_dict_vectorizer.py @@ -3,109 +3,382 @@ FeatureHasher and DictVectorizer Comparison =========================================== -Compares FeatureHasher and DictVectorizer by using both to vectorize -text documents. +In this example we illustrate text vectorization, which is the process of +representing non-numerical input data (such as dictionaries or text documents) +as vectors of real numbers. -The example demonstrates syntax and speed only; it doesn't actually do -anything useful with the extracted vectors. See the example scripts -{document_classification_20newsgroups,clustering}.py for actual learning -on text documents. +We first compare :func:`~sklearn.feature_extraction.FeatureHasher` and +:func:`~sklearn.feature_extraction.DictVectorizer` by using both methods to +vectorize text documents that are preprocessed (tokenized) with the help of a +custom Python function. -A discrepancy between the number of terms reported for DictVectorizer and -for FeatureHasher is to be expected due to hash collisions. +Later we introduce and analyze the text-specific vectorizers +:func:`~sklearn.feature_extraction.text.HashingVectorizer`, +:func:`~sklearn.feature_extraction.text.CountVectorizer` and +:func:`~sklearn.feature_extraction.text.TfidfVectorizer` that handle both the +tokenization and the assembling of the feature matrix within a single class. + +The objective of the example is to demonstrate the usage of text vectorization +API and to compare their processing time. See the example scripts +:ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` +and :ref:`sphx_glr_auto_examples_text_plot_document_clustering.py` for actual +learning on text documents. """ # Author: Lars Buitinck +# Olivier Grisel +# Arturo Amor # License: BSD 3 clause -from collections import defaultdict -import re -import sys -from time import time - -import numpy as np +# %% +# Load Data +# --------- +# +# We load data from :ref:`20newsgroups_dataset`, which comprises around +# 18000 newsgroups posts on 20 topics split in two subsets: one for training and +# one for testing. For the sake of simplicity and reducing the computational +# cost, we select a subset of 7 topics and use the training set only. from sklearn.datasets import fetch_20newsgroups -from sklearn.feature_extraction import DictVectorizer, FeatureHasher +categories = [ + "alt.atheism", + "comp.graphics", + "comp.sys.ibm.pc.hardware", + "misc.forsale", + "rec.autos", + "sci.space", + "talk.religion.misc", +] + +print("Loading 20 newsgroups training data") +raw_data, _ = fetch_20newsgroups(subset="train", categories=categories, return_X_y=True) +data_size_mb = sum(len(s.encode("utf-8")) for s in raw_data) / 1e6 +print(f"{len(raw_data)} documents - {data_size_mb:.3f}MB") -def n_nonzero_columns(X): - """Returns the number of non-zero columns in a CSR matrix X.""" - return len(np.unique(X.nonzero()[1])) +# %% +# Define preprocessing functions +# ------------------------------ +# +# A token may be a word, part of a word or anything comprised between spaces or +# symbols in a string. Here we define a function that extracts the tokens using +# a simple regular expression (regex) that matches Unicode word characters. This +# includes most characters that can be part of a word in any language, as well +# as numbers and the underscore: + +import re -def tokens(doc): +def tokenize(doc): """Extract tokens from doc. - This uses a simple regex to break strings into tokens. For a more - principled approach, see CountVectorizer or TfidfVectorizer. + This uses a simple regex that matches word characters to break strings + into tokens. For a more principled approach, see CountVectorizer or + TfidfVectorizer. """ return (tok.lower() for tok in re.findall(r"\w+", doc)) +list(tokenize("This is a simple example, isn't it?")) + +# %% +# We define an additional function that counts the (frequency of) occurrence of +# each token in a given document. It returns a frequency dictionary to be used +# by the vectorizers. + +from collections import defaultdict + + def token_freqs(doc): - """Extract a dict mapping tokens from doc to their frequencies.""" + """Extract a dict mapping tokens from doc to their occurrences.""" + freq = defaultdict(int) - for tok in tokens(doc): + for tok in tokenize(doc): freq[tok] += 1 return freq -categories = [ - "alt.atheism", - "comp.graphics", - "comp.sys.ibm.pc.hardware", - "misc.forsale", - "rec.autos", - "sci.space", - "talk.religion.misc", -] -# Uncomment the following line to use a larger set (11k+ documents) -# categories = None +token_freqs("That is one example, but this is another one") -print(__doc__) -print("Usage: %s [n_features_for_hashing]" % sys.argv[0]) -print(" The default number of features is 2**18.") -print() +# %% +# Observe in particular that the repeated token `"is"` is counted twice for +# instance. +# +# Breaking a text document into word tokens, potentially losing the order +# information between the words in a sentence is often called a `Bag of Words +# representation `_. -try: - n_features = int(sys.argv[1]) -except IndexError: - n_features = 2**18 -except ValueError: - print("not a valid number of features: %r" % sys.argv[1]) - sys.exit(1) +# %% +# DictVectorizer +# -------------- +# +# First we benchmark the :func:`~sklearn.feature_extraction.DictVectorizer`, +# then we compare it to :func:`~sklearn.feature_extraction.FeatureHasher` as +# both of them receive dictionaries as input. +from time import time +from sklearn.feature_extraction import DictVectorizer -print("Loading 20 newsgroups training data") -raw_data, _ = fetch_20newsgroups(subset="train", categories=categories, return_X_y=True) -data_size_mb = sum(len(s.encode("utf-8")) for s in raw_data) / 1e6 -print("%d documents - %0.3fMB" % (len(raw_data), data_size_mb)) -print() +dict_count_vectorizers = defaultdict(list) -print("DictVectorizer") t0 = time() vectorizer = DictVectorizer() vectorizer.fit_transform(token_freqs(d) for d in raw_data) duration = time() - t0 -print("done in %fs at %0.3fMB/s" % (duration, data_size_mb / duration)) -print("Found %d unique terms" % len(vectorizer.get_feature_names_out())) -print() +dict_count_vectorizers["vectorizer"].append( + vectorizer.__class__.__name__ + "\non freq dicts" +) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {len(vectorizer.get_feature_names_out())} unique terms") + +# %% +# The actual mapping from text token to column index is explicitly stored in +# the `.vocabulary_` attribute which is a potentially very large Python +# dictionary: +type(vectorizer.vocabulary_) + +# %% +len(vectorizer.vocabulary_) + +# %% +vectorizer.vocabulary_["example"] + +# %% +# FeatureHasher +# ------------- +# +# Dictionaries take up a large amount of storage space and grow in size as the +# training set grows. Instead of growing the vectors along with a dictionary, +# feature hashing builds a vector of pre-defined length by applying a hash +# function `h` to the features (e.g., tokens), then using the hash values +# directly as feature indices and updating the resulting vector at those +# indices. When the feature space is not large enough, hashing functions tend to +# map distinct values to the same hash code (hash collisions). As a result, it +# is impossible to determine what object generated any particular hash code. +# +# Because of the above it is impossible to recover the original tokens from the +# feature matrix and the best approach to estimate the number of unique terms in +# the original dictionary is to count the number of active columns in the +# encoded feature matrix. For such a purpose we define the following function: + +import numpy as np + + +def n_nonzero_columns(X): + """Number of columns with at least one non-zero value in a CSR matrix. + + This is useful to count the number of features columns that are effectively + active when using the FeatureHasher. + """ + return len(np.unique(X.nonzero()[1])) + + +# %% +# The default number of features for the +# :func:`~sklearn.feature_extraction.FeatureHasher` is 2**20. Here we set +# `n_features = 2**18` to illustrate hash collisions. +# +# **FeatureHasher on frequency dictionaries** + +from sklearn.feature_extraction import FeatureHasher -print("FeatureHasher on frequency dicts") t0 = time() -hasher = FeatureHasher(n_features=n_features) +hasher = FeatureHasher(n_features=2**18) X = hasher.transform(token_freqs(d) for d in raw_data) duration = time() - t0 -print("done in %fs at %0.3fMB/s" % (duration, data_size_mb / duration)) -print("Found %d unique terms" % n_nonzero_columns(X)) -print() +dict_count_vectorizers["vectorizer"].append( + hasher.__class__.__name__ + "\non freq dicts" +) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {n_nonzero_columns(X)} unique tokens") + +# %% +# The number of unique tokens when using the +# :func:`~sklearn.feature_extraction.FeatureHasher` is lower than those obtained +# using the :func:`~sklearn.feature_extraction.DictVectorizer`. This is due to +# hash collisions. +# +# The number of collisions can be reduced by increasing the feature space. +# Notice that the speed of the vectorizer does not change significantly when +# setting a large number of features, though it causes larger coefficient +# dimensions and then requires more memory usage to store them, even if a +# majority of them is inactive. -print("FeatureHasher on raw tokens") t0 = time() -hasher = FeatureHasher(n_features=n_features, input_type="string") -X = hasher.transform(tokens(d) for d in raw_data) +hasher = FeatureHasher(n_features=2**22) +X = hasher.transform(token_freqs(d) for d in raw_data) duration = time() - t0 -print("done in %fs at %0.3fMB/s" % (duration, data_size_mb / duration)) -print("Found %d unique terms" % n_nonzero_columns(X)) + +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {n_nonzero_columns(X)} unique tokens") + +# %% +# We confirm that the number of unique tokens gets closer to the number of +# unique terms found by the :func:`~sklearn.feature_extraction.DictVectorizer`. +# +# **FeatureHasher on raw tokens** +# +# Alternatively, one can set `input_type="string"` in the +# :func:`~sklearn.feature_extraction.FeatureHasher` to vectorize the strings +# output directly from the customized `tokenize` function. This is equivalent to +# passing a dictionary with an implied frequency of 1 for each feature name. + +t0 = time() +hasher = FeatureHasher(n_features=2**18, input_type="string") +X = hasher.transform(tokenize(d) for d in raw_data) +duration = time() - t0 +dict_count_vectorizers["vectorizer"].append( + hasher.__class__.__name__ + "\non raw tokens" +) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {n_nonzero_columns(X)} unique tokens") + +# %% +# We now plot the speed of the above methods for vectorizing. + +import matplotlib.pyplot as plt + +fig, ax = plt.subplots(figsize=(12, 6)) + +y_pos = np.arange(len(dict_count_vectorizers["vectorizer"])) +ax.barh(y_pos, dict_count_vectorizers["speed"], align="center") +ax.set_yticks(y_pos) +ax.set_yticklabels(dict_count_vectorizers["vectorizer"]) +ax.invert_yaxis() +_ = ax.set_xlabel("speed (MB/s)") + +# %% +# In both cases :func:`~sklearn.feature_extraction.FeatureHasher` is +# approximately twice as fast as +# :func:`~sklearn.feature_extraction.DictVectorizer`. This is handy when dealing +# with large amounts of data, with the downside of losing the invertibility of +# the transformation, which in turn makes the interpretation of a model a more +# complex task. +# +# The `FeatureHeasher` with `input_type="string"` is slightly faster than the +# variant that works on frequency dict because it does not count repeated +# tokens: each token is implicitly counted once, even if it was repeated. +# Depending on the downstream machine learning task, it can be a limitation or +# not. +# +# Comparison with special purpose text vectorizers +# ------------------------------------------------ +# +# :func:`~sklearn.feature_extraction.text.CountVectorizer` accepts raw data as +# it internally implements tokenization and occurrence counting. It is similar +# to the :func:`~sklearn.feature_extraction.DictVectorizer` when used along with +# the customized function `token_freqs` as done in the previous section. The +# difference being that :func:`~sklearn.feature_extraction.text.CountVectorizer` +# is more flexible. In particular it accepts various regex patterns through the +# `token_pattern` parameter. + +from sklearn.feature_extraction.text import CountVectorizer + +t0 = time() +vectorizer = CountVectorizer() +vectorizer.fit_transform(raw_data) +duration = time() - t0 +dict_count_vectorizers["vectorizer"].append(vectorizer.__class__.__name__) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {len(vectorizer.get_feature_names_out())} unique terms") + +# %% +# We see that using the :func:`~sklearn.feature_extraction.text.CountVectorizer` +# implementation is approximately twice as fast as using the +# :func:`~sklearn.feature_extraction.DictVectorizer` along with the simple +# function we defined for mapping the tokens. The reason is that +# :func:`~sklearn.feature_extraction.text.CountVectorizer` is optimized by +# reusing a compiled regular expression for the full training set instead of +# creating one per document as done in our naive tokenize function. +# +# Now we make a similar experiment with the +# :func:`~sklearn.feature_extraction.text.HashingVectorizer`, which is +# equivalent to combining the “hashing trick” implemented by the +# :func:`~sklearn.feature_extraction.FeatureHasher` class and the text +# preprocessing and tokenization of the +# :func:`~sklearn.feature_extraction.text.CountVectorizer`. + +from sklearn.feature_extraction.text import HashingVectorizer + +t0 = time() +vectorizer = HashingVectorizer(n_features=2**18) +vectorizer.fit_transform(raw_data) +duration = time() - t0 +dict_count_vectorizers["vectorizer"].append(vectorizer.__class__.__name__) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") + +# %% +# We can observe that this is the fastest text tokenization strategy so far, +# assuming the that the downstream machine learning task can tolerate a few +# collisions. +# +# TfidfVectorizer +# --------------- +# +# In a large text corpus, some words appear with higher frequency (e.g. “the”, +# “a”, “is” in English) and do not carry meaningful information about the actual +# contents of a document. If we were to feed the word count data directly to a +# classifier, those very common terms would shadow the frequencies of rarer yet +# more informative terms. In order to re-weight the count features into floating +# point values suitable for usage by a classifier it is very common to use the +# tf–idf transform as implemented by the +# :func:`~sklearn.feature_extraction.text.TfidfTransformer`. TF stands for +# "term-frequency" while "tf–idf" means term-frequency times inverse +# document-frequency. +# +# We now benchmark the :func:`~sklearn.feature_extraction.text.TfidfVectorizer`, +# which is equivalent to combining the tokenization and occurrence counting of +# the :func:`~sklearn.feature_extraction.text.CountVectorizer` along with the +# normalizing and weighting from a +# :func:`~sklearn.feature_extraction.text.TfidfTransformer`. + +from sklearn.feature_extraction.text import TfidfVectorizer + +t0 = time() +vectorizer = TfidfVectorizer() +vectorizer.fit_transform(raw_data) +duration = time() - t0 +dict_count_vectorizers["vectorizer"].append(vectorizer.__class__.__name__) +dict_count_vectorizers["speed"].append(data_size_mb / duration) +print(f"done in {duration:.3f} s at {data_size_mb / duration:.1f} MB/s") +print(f"Found {len(vectorizer.get_feature_names_out())} unique terms") + +# %% +# Summary +# ------- +# Let's conclude this notebook by summarizing all the recorded processing speeds +# in a single plot: + +fig, ax = plt.subplots(figsize=(12, 6)) + +y_pos = np.arange(len(dict_count_vectorizers["vectorizer"])) +ax.barh(y_pos, dict_count_vectorizers["speed"], align="center") +ax.set_yticks(y_pos) +ax.set_yticklabels(dict_count_vectorizers["vectorizer"]) +ax.invert_yaxis() +_ = ax.set_xlabel("speed (MB/s)") + +# %% +# Notice from the plot that +# :func:`~sklearn.feature_extraction.text.TfidfVectorizer` is slightly slower +# than :func:`~sklearn.feature_extraction.text.CountVectorizer` because of the +# extra operation induced by the +# :func:`~sklearn.feature_extraction.text.TfidfTransformer`. +# +# Also notice that, by setting the number of features `n_features = 2**18`, the +# :func:`~sklearn.feature_extraction.text.HashingVectorizer` performs better +# than the :func:`~sklearn.feature_extraction.text.CountVectorizer` at the +# expense of inversibility of the transformation due to hash collisions. +# +# We highlight that :func:`~sklearn.feature_extraction.text.CountVectorizer` and +# :func:`~sklearn.feature_extraction.text.HashingVectorizer` perform better than +# their equivalent :func:`~sklearn.feature_extraction.DictVectorizer` and +# :func:`~sklearn.feature_extraction.FeatureHasher` on manually tokenized +# documents since the internal tokenization step of the former vectorizers +# compiles a regular expression once and then reuses it for all the documents. From 4fd2865d5c9ac7f759505512db2aef3f1d5d0f39 Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Mon, 30 May 2022 13:23:24 -0400 Subject: [PATCH 049/251] MNT Minor refactor of `n_support` (#23353) --- sklearn/svm/_classes.py | 8 ++++---- sklearn/svm/tests/test_svm.py | 19 +++++++------------ 2 files changed, 11 insertions(+), 16 deletions(-) diff --git a/sklearn/svm/_classes.py b/sklearn/svm/_classes.py index 3cfbafce876ea..42e696875728d 100644 --- a/sklearn/svm/_classes.py +++ b/sklearn/svm/_classes.py @@ -1167,8 +1167,8 @@ class SVR(RegressorMixin, BaseLibSVM): .. versionadded:: 1.1 - n_support_ : ndarray of shape (n_classes,), dtype=int32 - Number of support vectors for each class. + n_support_ : ndarray of shape (1,), dtype=int32 + Number of support vectors. shape_fit_ : tuple of int of shape (n_dimensions_of_X,) Array dimensions of training vector ``X``. @@ -1359,8 +1359,8 @@ class NuSVR(RegressorMixin, BaseLibSVM): .. versionadded:: 1.1 - n_support_ : ndarray of shape (n_classes,), dtype=int32 - Number of support vectors for each class. + n_support_ : ndarray of shape (1,), dtype=int32 + Number of support vectors. shape_fit_ : tuple of int of shape (n_dimensions_of_X,) Array dimensions of training vector ``X``. diff --git a/sklearn/svm/tests/test_svm.py b/sklearn/svm/tests/test_svm.py index db1d49ab4bcf9..af5f7e8c69f59 100644 --- a/sklearn/svm/tests/test_svm.py +++ b/sklearn/svm/tests/test_svm.py @@ -1398,23 +1398,18 @@ def test_linearsvm_liblinear_sample_weight(SVM, params): assert_allclose(X_est_no_weight, X_est_with_weight) -def test_n_support_oneclass_svr(): +@pytest.mark.parametrize("Klass", (OneClassSVM, SVR, NuSVR)) +def test_n_support(Klass): # Make n_support is correct for oneclass and SVR (used to be # non-initialized) # this is a non regression test for issue #14774 X = np.array([[0], [0.44], [0.45], [0.46], [1]]) - clf = svm.OneClassSVM() - assert not hasattr(clf, "n_support_") - clf.fit(X) - assert clf.n_support_ == clf.support_vectors_.shape[0] - assert clf.n_support_.size == 1 - assert clf.n_support_ == 3 - y = np.arange(X.shape[0]) - reg = svm.SVR().fit(X, y) - assert reg.n_support_ == reg.support_vectors_.shape[0] - assert reg.n_support_.size == 1 - assert reg.n_support_ == 4 + est = Klass() + assert not hasattr(est, "n_support_") + est.fit(X, y) + assert est.n_support_[0] == est.support_vectors_.shape[0] + assert est.n_support_.size == 1 @pytest.mark.parametrize("Estimator", [svm.SVC, svm.SVR]) From d74380bc7c1f8c1f53d931d6c13d38859f7c20bf Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Tue, 31 May 2022 21:53:03 +1000 Subject: [PATCH 050/251] DOC Add kernel glossary (#23487) --- doc/glossary.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/glossary.rst b/doc/glossary.rst index b52dcde382246..2042bdc742614 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -1492,7 +1492,13 @@ functions or non-estimator constructors. ``cv`` values are validated and interpreted with :func:`utils.check_cv`. ``kernel`` - TODO + Specifies the kernel function to be used by Kernel Method algorithms. + For example, the estimators :class:`SVC` and + :class:`GaussianProcessClassifier` both have a ``kernel`` parameter + that takes the name of the kernel to use as string or a callable + kernel function used to compute the kernel matrix. For more reference, + see the :ref:`kernel_approximation` and the :ref:`gaussian_process` + user guides. ``max_iter`` For estimators involving iterative optimization, this determines the From f09ec309a1ad2997a416e83d5f0fe1e518eb5f4e Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Tue, 31 May 2022 10:35:58 -0400 Subject: [PATCH 051/251] MNT Improves comment when CI fails a second time (#23469) --- maint_tools/update_tracking_issue.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/maint_tools/update_tracking_issue.py b/maint_tools/update_tracking_issue.py index 855c733cffb31..3bfb875d4be22 100644 --- a/maint_tools/update_tracking_issue.py +++ b/maint_tools/update_tracking_issue.py @@ -71,18 +71,19 @@ def get_issue(): def create_or_update_issue(body=""): # Interact with GitHub API to create issue - header = f"**CI Failed on [{args.ci_name}]({args.link_to_ci_run})**" - body_text = f"{header}\n{body}" + link = f"[{args.ci_name}]({args.link_to_ci_run})" issue = get_issue() if issue is None: # Create new issue - issue = issue_repo.create_issue(title=title, body=body_text) + header = f"**CI failed on {link}**" + issue = issue_repo.create_issue(title=title, body=f"{header}\n{body}") print(f"Created issue in {args.issue_repo}#{issue.number}") sys.exit() else: # Add comment to existing issue - issue.create_comment(body=body_text) + header = f"**CI is still failing on {link}**" + issue.create_comment(body=f"{header}\n{body}") print(f"Commented on issue: {args.issue_repo}#{issue.number}") sys.exit() From 4011a71352774d9766b12a7f155cd8ccdfc60835 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Tue, 31 May 2022 19:53:40 +0200 Subject: [PATCH 052/251] MAINT update both conda and mamba (#23501) --- build_tools/circle/build_test_arm.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/build_tools/circle/build_test_arm.sh b/build_tools/circle/build_test_arm.sh index b3de234d87c67..3b1979793f853 100755 --- a/build_tools/circle/build_test_arm.sh +++ b/build_tools/circle/build_test_arm.sh @@ -30,6 +30,7 @@ MINICONDA_PATH=$HOME/miniconda chmod +x mambaforge.sh && ./mambaforge.sh -b -p $MINICONDA_PATH export PATH=$MINICONDA_PATH/bin:$PATH mamba init --all --verbose +mamba update --yes mamba mamba update --yes conda mamba install "$(get_dep conda-lock min)" -y conda-lock install --name $CONDA_ENV_NAME $LOCK_FILE From 0ec00936ee6ee20648c46fbb8cc48bded4a26022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Alfaro=20Jim=C3=A9nez?= Date: Wed, 1 Jun 2022 04:34:59 +0200 Subject: [PATCH 053/251] CI Move documentation builder to actions (#21137) Co-authored-by: Thomas J. Fan --- .circleci/config.yml | 95 +++++-------------- .github/workflows/build-docs.yml | 66 +++++++++++++ .github/workflows/trigger-hosting.yml | 26 +++++ build_tools/circle/download_documentation.sh | 8 ++ build_tools/{circle => github}/build_doc.sh | 15 +++ .../{circle => github}/doc_environment.yml | 0 .../doc_linux-64_conda.lock | 0 .../doc_min_dependencies_environment.yml | 0 .../doc_min_dependencies_linux-64_conda.lock | 0 build_tools/github/trigger_hosting.sh | 21 ++++ .../update_environments_and_lock_files.py | 4 +- 11 files changed, 163 insertions(+), 72 deletions(-) create mode 100644 .github/workflows/build-docs.yml create mode 100644 .github/workflows/trigger-hosting.yml create mode 100755 build_tools/circle/download_documentation.sh rename build_tools/{circle => github}/build_doc.sh (95%) rename build_tools/{circle => github}/doc_environment.yml (100%) rename build_tools/{circle => github}/doc_linux-64_conda.lock (100%) rename build_tools/{circle => github}/doc_min_dependencies_environment.yml (100%) rename build_tools/{circle => github}/doc_min_dependencies_linux-64_conda.lock (100%) create mode 100755 build_tools/github/trigger_hosting.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 7d526dc058510..91f0ce0a92d8e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,92 +1,42 @@ version: 2.1 +# Parameters required to trigger the execution +# of the "doc-min-dependencies" and "doc" jobs +parameters: + GITHUB_RUN_URL: + type: string + default: "none" + jobs: doc-min-dependencies: docker: - image: cimg/python:3.8.12 environment: - - OMP_NUM_THREADS: 2 - - MKL_NUM_THREADS: 2 - - CONDA_ENV_NAME: testenv - - LOCK_FILE: build_tools/circle/doc_min_dependencies_linux-64_conda.lock + - GITHUB_ARTIFACT_URL: << pipeline.parameters.GITHUB_RUN_URL >>/doc-min-dependencies.zip steps: - checkout - - run: ./build_tools/circle/checkout_merge_commit.sh - - restore_cache: - key: v1-doc-min-deps-datasets-{{ .Branch }} - - restore_cache: - keys: - - doc-min-deps-ccache-{{ .Branch }} - - doc-min-deps-ccache - - run: ./build_tools/circle/build_doc.sh - - save_cache: - key: doc-min-deps-ccache-{{ .Branch }}-{{ .BuildNum }} - paths: - - ~/.ccache - - ~/.cache/pip - - save_cache: - key: v1-doc-min-deps-datasets-{{ .Branch }} - paths: - - ~/scikit_learn_data + - run: bash build_tools/circle/download_documentation.sh - store_artifacts: path: doc/_build/html/stable destination: doc - - store_artifacts: - path: ~/log.txt - destination: log.txt doc: docker: - image: cimg/python:3.8.12 environment: - - OMP_NUM_THREADS: 2 - - MKL_NUM_THREADS: 2 - - CONDA_ENV_NAME: testenv - - LOCK_FILE: build_tools/circle/doc_linux-64_conda.lock + - GITHUB_ARTIFACT_URL: << pipeline.parameters.GITHUB_RUN_URL >>/doc.zip steps: - checkout - - run: ./build_tools/circle/checkout_merge_commit.sh - - restore_cache: - key: v1-doc-datasets-{{ .Branch }} - - restore_cache: - keys: - - doc-ccache-{{ .Branch }} - - doc-ccache - - run: ./build_tools/circle/build_doc.sh - - save_cache: - key: doc-ccache-{{ .Branch }}-{{ .BuildNum }} - paths: - - ~/.ccache - - ~/.cache/pip - - save_cache: - key: v1-doc-datasets-{{ .Branch }} - paths: - - ~/scikit_learn_data + - run: bash build_tools/circle/download_documentation.sh - store_artifacts: path: doc/_build/html/stable destination: doc - - store_artifacts: - path: ~/log.txt - destination: log.txt - # Persists generated documentation so that it can be attached and deployed - # in the 'deploy' step. + # Persists the generated documentation, so that it + # can be attached and deployed in the "deploy" job - persist_to_workspace: root: doc/_build/html paths: . - lint: - docker: - - image: cimg/python:3.8.12 - steps: - - checkout - - run: ./build_tools/circle/checkout_merge_commit.sh - - run: - name: dependencies - command: pip install flake8 - - run: - name: linting - command: ./build_tools/circle/linting.sh - linux-arm64: machine: image: ubuntu-2004:202101-01 @@ -127,18 +77,23 @@ jobs: workflows: version: 2 + build-doc-and-deploy: + when: + not: + equal: [ "none", << pipeline.parameters.GITHUB_RUN_URL >> ] + # The jobs should run only when triggered by the workflow jobs: - - lint - - doc: - requires: - - lint - - doc-min-dependencies: - requires: - - lint + - doc-min-dependencies + - doc - deploy: requires: - doc + linux-arm64: + when: + equal: [ "none", << pipeline.parameters.GITHUB_RUN_URL >> ] + # Prevent double execution of this job: on push + # by default and when triggered by the workflow jobs: - linux-arm64 diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml new file mode 100644 index 0000000000000..286f7e16e2936 --- /dev/null +++ b/.github/workflows/build-docs.yml @@ -0,0 +1,66 @@ +# Workflow to build the documentation +name: Documentation builder + +on: + push: + branches: + - main + # Release branches + - "[0-9]+.[0-9]+.X" + pull_request: + branches: + - main + - "[0-9]+.[0-9]+.X" + +jobs: + # Build the documentation against the minimum version of the dependencies + doc-min-dependencies: + runs-on: ubuntu-latest + steps: + - name: Checkout scikit-learn + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Build documentation + run: bash build_tools/github/build_doc.sh + env: + OMP_NUM_THREADS: 2 + MKL_NUM_THREADS: 2 + CONDA_ENV_NAME: testenv + LOCK_FILE: build_tools/github/doc_min_dependencies_linux-64_conda.lock + + - name: Upload documentation + uses: actions/upload-artifact@v2 + with: + name: doc-min-dependencies + path: doc/_build/html/stable + + # Build the documentation against the latest version of the dependencies + doc: + runs-on: ubuntu-latest + steps: + - name: Checkout scikit-learn + uses: actions/checkout@v2 + with: + ref: ${{ github.event.pull_request.head.sha }} + + - name: Setup Python + uses: actions/setup-python@v2 + + - name: Build documentation + run: bash build_tools/github/build_doc.sh + env: + OMP_NUM_THREADS: 2 + MKL_NUM_THREADS: 2 + CONDA_ENV_NAME: testenv + LOCK_FILE: build_tools/github/doc_linux-64_conda.lock + + - name: Upload documentation + uses: actions/upload-artifact@v2 + with: + name: doc + path: doc/_build/html/stable diff --git a/.github/workflows/trigger-hosting.yml b/.github/workflows/trigger-hosting.yml new file mode 100644 index 0000000000000..417c1816f595c --- /dev/null +++ b/.github/workflows/trigger-hosting.yml @@ -0,0 +1,26 @@ +# Workflow to trigger the jobs that will host the documentation +name: Documentation push trigger +on: + workflow_run: + # Run the workflow after the separate "Documentation builder" workflow completes + workflows: [Documentation builder] + types: + - completed + +jobs: + push: + runs-on: ubuntu-latest + # Run the job only if the "Documentation builder" workflow succeeded + if: ${{ github.event.workflow_run.conclusion == 'success' }} + steps: + - name: Checkout scikit-learn + uses: actions/checkout@v2 + + - name: Trigger hosting jobs + run: bash build_tools/github/trigger_hosting.sh + env: + CIRCLE_CI_TOKEN: ${{ secrets.CIRCLE_CI_TOKEN }} + EVENT: ${{ github.event.workflow_run.event }} + RUN_ID: ${{ github.event.workflow_run.id }} + HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} + PULL_REQUEST_NUMBER: ${{ github.event.workflow_run.pull_requests[0].number }} diff --git a/build_tools/circle/download_documentation.sh b/build_tools/circle/download_documentation.sh new file mode 100755 index 0000000000000..c2d6d09d0abb9 --- /dev/null +++ b/build_tools/circle/download_documentation.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +set -e +set -x + +wget $GITHUB_ARTIFACT_URL +mkdir -p doc/_build/html/stable +unzip doc*.zip -d doc/_build/html/stable diff --git a/build_tools/circle/build_doc.sh b/build_tools/github/build_doc.sh similarity index 95% rename from build_tools/circle/build_doc.sh rename to build_tools/github/build_doc.sh index 1f10fd0c294c7..b812a0e03840e 100755 --- a/build_tools/circle/build_doc.sh +++ b/build_tools/github/build_doc.sh @@ -17,6 +17,21 @@ set -e # If the inspection of the current commit fails for any reason, the default # behavior is to quick build the documentation. +if [ -n "$GITHUB_ACTION" ] +then + # Map the variables for the new documentation builder to the old one + CIRCLE_SHA1=$(git log --no-merges -1 --pretty=format:%H) + CIRCLE_JOB=$GITHUB_JOB + + if [ "$GITHUB_EVENT_NAME" == "pull_request" ] + then + CIRCLE_BRANCH=$GITHUB_HEAD_REF + CI_PULL_REQUEST=true + else + CIRCLE_BRANCH=$GITHUB_REF_NAME + fi +fi + get_build_type() { if [ -z "$CIRCLE_SHA1" ] then diff --git a/build_tools/circle/doc_environment.yml b/build_tools/github/doc_environment.yml similarity index 100% rename from build_tools/circle/doc_environment.yml rename to build_tools/github/doc_environment.yml diff --git a/build_tools/circle/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock similarity index 100% rename from build_tools/circle/doc_linux-64_conda.lock rename to build_tools/github/doc_linux-64_conda.lock diff --git a/build_tools/circle/doc_min_dependencies_environment.yml b/build_tools/github/doc_min_dependencies_environment.yml similarity index 100% rename from build_tools/circle/doc_min_dependencies_environment.yml rename to build_tools/github/doc_min_dependencies_environment.yml diff --git a/build_tools/circle/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock similarity index 100% rename from build_tools/circle/doc_min_dependencies_linux-64_conda.lock rename to build_tools/github/doc_min_dependencies_linux-64_conda.lock diff --git a/build_tools/github/trigger_hosting.sh b/build_tools/github/trigger_hosting.sh new file mode 100755 index 0000000000000..4fc9b0dccbd54 --- /dev/null +++ b/build_tools/github/trigger_hosting.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +set -e +set -x + +GITHUB_RUN_URL=https://nightly.link/$GITHUB_REPOSITORY/actions/runs/$RUN_ID + +if [ "$EVENT" == pull_request ] +then + BRANCH=pull/$PULL_REQUEST_NUMBER/head +else + BRANCH=$HEAD_BRANCH +fi + +curl --request POST \ + --url https://circleci.com/api/v2/project/gh/$GITHUB_REPOSITORY/pipeline \ + --header "Circle-Token: $CIRCLE_CI_TOKEN" \ + --header "content-type: application/json" \ + --header "x-attribution-actor-id: github_actions" \ + --header "x-attribution-login: github_actions" \ + --data \{\"branch\":\"$BRANCH\",\"parameters\":\{\"GITHUB_RUN_URL\":\"$GITHUB_RUN_URL\"\}\} diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index d0fcd35466f53..a06fded6c3469 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -210,7 +210,7 @@ def remove_from(alist, to_remove): }, { "build_name": "doc_min_dependencies", - "folder": "build_tools/circle", + "folder": "build_tools/github", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": common_dependencies_without_coverage @@ -242,7 +242,7 @@ def remove_from(alist, to_remove): }, { "build_name": "doc", - "folder": "build_tools/circle", + "folder": "build_tools/github", "platform": "linux-64", "channel": "conda-forge", "conda_dependencies": common_dependencies_without_coverage From 5268e8ef92451191ecde12071446e511485f8962 Mon Sep 17 00:00:00 2001 From: angela-maennel <77272162+angela-maennel@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:35:42 +0200 Subject: [PATCH 054/251] DOC Ensure that label_ranking_average_precision_score passes numpydoc validation (#23504) Co-authored-by: Angela --- sklearn/metrics/_ranking.py | 2 +- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/metrics/_ranking.py b/sklearn/metrics/_ranking.py index 0d201bf99bc10..c506953076bef 100644 --- a/sklearn/metrics/_ranking.py +++ b/sklearn/metrics/_ranking.py @@ -1058,6 +1058,7 @@ def label_ranking_average_precision_score(y_true, y_score, *, sample_weight=None Returns ------- score : float + Ranking-based average precision score. Examples -------- @@ -1067,7 +1068,6 @@ def label_ranking_average_precision_score(y_true, y_score, *, sample_weight=None >>> y_score = np.array([[0.75, 0.5, 1], [1, 0.2, 0.1]]) >>> label_ranking_average_precision_score(y_true, y_score) 0.416... - """ check_consistent_length(y_true, y_score, sample_weight) y_true = check_array(y_true, ensure_2d=False) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index d1cba95083e73..72f98765a5eb0 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -40,7 +40,6 @@ "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", "sklearn.metrics._ranking.coverage_error", "sklearn.metrics._ranking.dcg_score", - "sklearn.metrics._ranking.label_ranking_average_precision_score", "sklearn.metrics._ranking.roc_auc_score", "sklearn.metrics._ranking.roc_curve", "sklearn.metrics._ranking.top_k_accuracy_score", From 0531bd8d7eabdf24e031b81b2574d5f50906bd44 Mon Sep 17 00:00:00 2001 From: madinak Date: Wed, 1 Jun 2022 10:31:16 +0200 Subject: [PATCH 055/251] DOC Ensures that roc_auc_score passes numpydoc validation (#23505) * DOC Ensures that roc_auc_score passes numpydoc validation * apply review Co-authored-by: Madina Kasymova Co-authored-by: Adrin Jalali --- sklearn/metrics/_ranking.py | 21 +++++++++++---------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/sklearn/metrics/_ranking.py b/sklearn/metrics/_ranking.py index c506953076bef..7f64f479ed275 100644 --- a/sklearn/metrics/_ranking.py +++ b/sklearn/metrics/_ranking.py @@ -372,7 +372,7 @@ def roc_auc_score( multi_class="raise", labels=None, ): - """Compute Area Under the Receiver Operating Characteristic Curve (ROC AUC) + """Compute Area Under the Receiver Operating Characteristic Curve (ROC AUC) \ from prediction scores. Note: this implementation can be used with binary, multiclass and @@ -471,6 +471,16 @@ class scores must correspond to the order of ``labels``, Returns ------- auc : float + Area Under the Curve score. + + See Also + -------- + average_precision_score : Area under the precision-recall curve. + roc_curve : Compute Receiver operating characteristic (ROC) curve. + RocCurveDisplay.from_estimator : Plot Receiver Operating Characteristic + (ROC) curve given an estimator and some data. + RocCurveDisplay.from_predictions : Plot Receiver Operating Characteristic + (ROC) curve given the true and predicted values. References ---------- @@ -493,15 +503,6 @@ class scores must correspond to the order of ``labels``, Machine Learning, 45(2), 171-186. `_ - See Also - -------- - average_precision_score : Area under the precision-recall curve. - roc_curve : Compute Receiver operating characteristic (ROC) curve. - RocCurveDisplay.from_estimator : Plot Receiver Operating Characteristic - (ROC) curve given an estimator and some data. - RocCurveDisplay.from_predictions : Plot Receiver Operating Characteristic - (ROC) curve given the true and predicted values. - Examples -------- Binary case: diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 72f98765a5eb0..907d6fbcf96b3 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -40,7 +40,6 @@ "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", "sklearn.metrics._ranking.coverage_error", "sklearn.metrics._ranking.dcg_score", - "sklearn.metrics._ranking.roc_auc_score", "sklearn.metrics._ranking.roc_curve", "sklearn.metrics._ranking.top_k_accuracy_score", "sklearn.metrics._regression.mean_pinball_loss", From 32fd489d2013755586a79d416cced16203b472b9 Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Wed, 1 Jun 2022 04:48:11 -0400 Subject: [PATCH 056/251] FIX Added validation for `TSNE.perplexity` against number of samples (#23471) Co-authored-by: Mathias Andersen Co-authored-by: Thomas J. Fan --- doc/whats_new/v1.2.rst | 29 ++++++++++ sklearn/manifold/_t_sne.py | 10 +++- sklearn/manifold/tests/test_t_sne.py | 65 ++++++++++++++-------- sklearn/tests/test_docstring_parameters.py | 2 +- sklearn/utils/estimator_checks.py | 6 ++ 5 files changed, 86 insertions(+), 26 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 1a66f32260354..4189e48572533 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -19,6 +19,19 @@ parameters, may produce different models from the previous version. This often occurs due to changes in the modelling logic (bug fixes or enhancements), or in random sampling procedures. +- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with + `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. + :pr:`10805` by :user:`Mathias Andersen ` and + :pr:`23471` by :user:`Meekail Zain ` + +Changes impacting all modules +----------------------------- + +- |Enhancement| Finiteness checks (detection of NaN and infinite values) in all + estimators are now significantly more efficient for float32 data by leveraging + NumPy's SIMD optimized primitives. + :pr:`23446` by :user:`Meekail Zain ` + Changelog --------- @@ -72,6 +85,22 @@ Changelog :class:`tree.DecisionTreeRegressor` and :class:`tree.DecisionTreeClassifier`. :pr:`23273` by `Thomas Fan`_. +:mod:`sklearn.utils` +.................... + +- |Enhancement| :func:`utils.extmath.randomized_svd` now accepts an argument, + `lapack_svd_driver`, to specify the lapack driver used in the internal + deterministic SVD used by the randomized SVD algorithm. + :pr:`20617` by :user:`Srinath Kailasa ` + +:mod:`sklearn.manifold` +....................... + +- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with + `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. + :pr:`10805` by :user:`Mathias Andersen ` and + :pr:`23471` by :user:`Meekail Zain ` + Code and Documentation Contributors ----------------------------------- diff --git a/sklearn/manifold/_t_sne.py b/sklearn/manifold/_t_sne.py index 5b7a3c4efd753..8e7b7f12cc59a 100644 --- a/sklearn/manifold/_t_sne.py +++ b/sklearn/manifold/_t_sne.py @@ -564,7 +564,8 @@ class TSNE(BaseEstimator): is used in other manifold learning algorithms. Larger datasets usually require a larger perplexity. Consider selecting a value between 5 and 50. Different values can result in significantly - different results. + different results. The perplexity must be less that the number + of samples. early_exaggeration : float, default=12.0 Controls how tight natural clusters in the original space are in @@ -739,7 +740,7 @@ class TSNE(BaseEstimator): >>> from sklearn.manifold import TSNE >>> X = np.array([[0, 0, 0], [0, 1, 1], [1, 0, 1], [1, 1, 1]]) >>> X_embedded = TSNE(n_components=2, learning_rate='auto', - ... init='random').fit_transform(X) + ... init='random', perplexity=3).fit_transform(X) >>> X_embedded.shape (4, 2) """ @@ -787,6 +788,10 @@ def __init__( self.n_jobs = n_jobs self.square_distances = square_distances + def _check_params_vs_input(self, X): + if self.perplexity >= X.shape[0]: + raise ValueError("perplexity must be less than n_samples") + def _fit(self, X, skip_num_points=0): """Private function to fit the model using X as training data.""" @@ -1114,6 +1119,7 @@ def fit_transform(self, X, y=None): X_new : ndarray of shape (n_samples, n_components) Embedding of the training data in low-dimensional space. """ + self._check_params_vs_input(X) embedding = self._fit(X) self.embedding_ = embedding return self.embedding_ diff --git a/sklearn/manifold/tests/test_t_sne.py b/sklearn/manifold/tests/test_t_sne.py index 861500e4a8891..997da9e542fda 100644 --- a/sklearn/manifold/tests/test_t_sne.py +++ b/sklearn/manifold/tests/test_t_sne.py @@ -389,7 +389,7 @@ def test_trustworthiness_not_euclidean_metric(): @pytest.mark.filterwarnings("ignore:The default initialization in TSNE") def test_early_exaggeration_too_small(): # Early exaggeration factor must be >= 1. - tsne = TSNE(early_exaggeration=0.99) + tsne = TSNE(early_exaggeration=0.99, perplexity=1) with pytest.raises(ValueError, match="early_exaggeration .*"): tsne.fit_transform(np.array([[0.0], [0.0]])) @@ -398,7 +398,7 @@ def test_early_exaggeration_too_small(): @pytest.mark.filterwarnings("ignore:The default initialization in TSNE") def test_too_few_iterations(): # Number of gradient descent iterations must be at least 200. - tsne = TSNE(n_iter=199) + tsne = TSNE(n_iter=199, perplexity=1) with pytest.raises(ValueError, match="n_iter .*"): tsne.fit_transform(np.array([[0.0], [0.0]])) @@ -425,6 +425,7 @@ def test_bad_precomputed_distances(method, D, retype, message_regex): method=method, init="random", random_state=42, + perplexity=1, ) with pytest.raises(ValueError, match=message_regex): tsne.fit_transform(retype(D)) @@ -437,6 +438,7 @@ def test_exact_no_precomputed_sparse(): method="exact", init="random", random_state=42, + perplexity=1, ) with pytest.raises(TypeError, match="sparse"): tsne.fit_transform(sp.csr_matrix([[0, 5], [5, 0]])) @@ -447,7 +449,7 @@ def test_high_perplexity_precomputed_sparse_distances(): # Perplexity should be less than 50 dist = np.array([[1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [1.0, 0.0, 0.0]]) bad_dist = sp.csr_matrix(dist) - tsne = TSNE(metric="precomputed", init="random", random_state=42) + tsne = TSNE(metric="precomputed", init="random", random_state=42, perplexity=1) msg = "3 neighbors per samples are required, but some samples have only 1" with pytest.raises(ValueError, match=msg): tsne.fit_transform(bad_dist) @@ -482,7 +484,7 @@ def metric(x, y): return -1 # Negative computed distances should be caught even if result is squared - tsne = TSNE(metric=metric, method="exact") + tsne = TSNE(metric=metric, method="exact", perplexity=1) X = np.array([[0.0, 0.0], [1.0, 1.0]]) with pytest.raises(ValueError, match="All distances .*metric given.*"): tsne.fit_transform(X) @@ -491,7 +493,7 @@ def metric(x, y): @pytest.mark.filterwarnings("ignore:The default learning rate in TSNE") def test_init_not_available(): # 'init' must be 'pca', 'random', or numpy array. - tsne = TSNE(init="not available") + tsne = TSNE(init="not available", perplexity=1) m = "'init' must be 'pca', 'random', or a numpy array" with pytest.raises(ValueError, match=m): tsne.fit_transform(np.array([[0.0], [1.0]])) @@ -519,11 +521,11 @@ def test_init_ndarray_precomputed(): @pytest.mark.filterwarnings("ignore:The default initialization in TSNE") def test_distance_not_available(): # 'metric' must be valid. - tsne = TSNE(metric="not available", method="exact") + tsne = TSNE(metric="not available", method="exact", perplexity=1) with pytest.raises(ValueError, match="Unknown metric not available.*"): tsne.fit_transform(np.array([[0.0], [1.0]])) - tsne = TSNE(metric="not available", method="barnes_hut") + tsne = TSNE(metric="not available", method="barnes_hut", perplexity=1) with pytest.raises(ValueError, match="Metric 'not available' not valid.*"): tsne.fit_transform(np.array([[0.0], [1.0]])) @@ -532,7 +534,7 @@ def test_distance_not_available(): @pytest.mark.filterwarnings("ignore:The default initialization in TSNE") def test_method_not_available(): # 'nethod' must be 'barnes_hut' or 'exact' - tsne = TSNE(method="not available") + tsne = TSNE(method="not available", perplexity=1) with pytest.raises(ValueError, match="'method' must be 'barnes_hut' or "): tsne.fit_transform(np.array([[0.0], [1.0]])) @@ -542,7 +544,7 @@ def test_method_not_available(): def test_angle_out_of_range_checks(): # check the angle parameter range for angle in [-1, -1e-6, 1 + 1e-6, 2]: - tsne = TSNE(angle=angle) + tsne = TSNE(angle=angle, perplexity=1) with pytest.raises(ValueError, match="'angle' must be between 0.0 - 1.0"): tsne.fit_transform(np.array([[0.0], [1.0]])) @@ -550,7 +552,7 @@ def test_angle_out_of_range_checks(): @pytest.mark.filterwarnings("ignore:The default learning rate in TSNE") def test_pca_initialization_not_compatible_with_precomputed_kernel(): # Precomputed distance matrices cannot use PCA initialization. - tsne = TSNE(metric="precomputed", init="pca") + tsne = TSNE(metric="precomputed", init="pca", perplexity=1) with pytest.raises( ValueError, match='The parameter init="pca" cannot be used with metric="precomputed".', @@ -560,7 +562,7 @@ def test_pca_initialization_not_compatible_with_precomputed_kernel(): def test_pca_initialization_not_compatible_with_sparse_input(): # Sparse input matrices cannot use PCA initialization. - tsne = TSNE(init="pca", learning_rate=100.0) + tsne = TSNE(init="pca", learning_rate=100.0, perplexity=1) with pytest.raises(TypeError, match="PCA initialization.*"): tsne.fit_transform(sp.csr_matrix([[0, 5], [5, 0]])) @@ -569,7 +571,7 @@ def test_pca_initialization_not_compatible_with_sparse_input(): @pytest.mark.filterwarnings("ignore:The default initialization in TSNE") def test_n_components_range(): # barnes_hut method should only be used with n_components <= 3 - tsne = TSNE(n_components=4, method="barnes_hut") + tsne = TSNE(n_components=4, method="barnes_hut", perplexity=1) with pytest.raises(ValueError, match="'n_components' should be .*"): tsne.fit_transform(np.array([[0.0], [1.0]])) @@ -736,7 +738,7 @@ def _run_answer_test( def test_verbose(): # Verbose options write to stdout. random_state = check_random_state(0) - tsne = TSNE(verbose=2) + tsne = TSNE(verbose=2, perplexity=4) X = random_state.randn(5, 2) old_stdout = sys.stdout @@ -760,7 +762,7 @@ def test_verbose(): def test_chebyshev_metric(): # t-SNE should allow metrics that cannot be squared (issue #3526). random_state = check_random_state(0) - tsne = TSNE(metric="chebyshev") + tsne = TSNE(metric="chebyshev", perplexity=4) X = random_state.randn(5, 2) tsne.fit_transform(X) @@ -770,7 +772,7 @@ def test_chebyshev_metric(): def test_reduction_to_one_component(): # t-SNE should allow reduction to one component (issue #4154). random_state = check_random_state(0) - tsne = TSNE(n_components=1) + tsne = TSNE(n_components=1, perplexity=4) X = random_state.randn(5, 2) X_embedded = tsne.fit(X).embedding_ assert np.all(np.isfinite(X_embedded)) @@ -1042,7 +1044,7 @@ def test_bh_match_exact(): init="random", random_state=0, n_iter=251, - perplexity=30.0, + perplexity=29.5, angle=0, ) # Kill the early_exaggeration @@ -1141,7 +1143,7 @@ def test_tsne_init_futurewarning(init): random_state = check_random_state(0) X = random_state.randn(5, 2) - kwargs = dict(learning_rate=200.0, init=init) + kwargs = dict(learning_rate=200.0, init=init, perplexity=4) tsne = TSNE(**{k: v for k, v in kwargs.items() if v is not None}) if init is None: @@ -1164,7 +1166,7 @@ def test_tsne_learning_rate_futurewarning(learning_rate): random_state = check_random_state(0) X = random_state.randn(5, 2) - kwargs = dict(learning_rate=learning_rate, init="random") + kwargs = dict(learning_rate=learning_rate, init="random", perplexity=4) tsne = TSNE(**{k: v for k, v in kwargs.items() if v is not None}) if learning_rate is None: @@ -1182,7 +1184,7 @@ def test_tsne_negative_learning_rate(): random_state = check_random_state(0) X = random_state.randn(5, 2) with pytest.raises(ValueError, match="'learning_rate' must be.*"): - TSNE(learning_rate=-50.0).fit_transform(X) + TSNE(learning_rate=-50.0, perplexity=4).fit_transform(X) @pytest.mark.parametrize("method", ["exact", "barnes_hut"]) @@ -1194,7 +1196,7 @@ def test_tsne_n_jobs(method): X_tr_ref = TSNE( n_components=2, method=method, - perplexity=30.0, + perplexity=25.0, angle=0, n_jobs=1, random_state=0, @@ -1204,7 +1206,7 @@ def test_tsne_n_jobs(method): X_tr = TSNE( n_components=2, method=method, - perplexity=30.0, + perplexity=25.0, angle=0, n_jobs=2, random_state=0, @@ -1260,7 +1262,7 @@ def test_tsne_deprecation_square_distances(): n_components=2, init="pca", learning_rate="auto", - perplexity=30.0, + perplexity=25.0, angle=0, n_jobs=1, random_state=0, @@ -1277,10 +1279,27 @@ def test_tsne_deprecation_square_distances(): n_components=2, init="pca", learning_rate="auto", - perplexity=30.0, + perplexity=25.0, angle=0, n_jobs=1, random_state=0, ) X_trans_2 = tsne.fit_transform(X) assert_allclose(X_trans_1, X_trans_2) + + +@pytest.mark.parametrize("perplexity", (20, 30)) +def test_tsne_perplexity_validation(perplexity): + """Make sure that perplexity > n_samples results in a ValueError""" + + random_state = check_random_state(0) + X = random_state.randn(20, 2) + est = TSNE( + learning_rate="auto", + init="pca", + perplexity=perplexity, + random_state=random_state, + ) + msg = "perplexity must be less than n_samples" + with pytest.raises(ValueError, match=msg): + est.fit_transform(X) diff --git a/sklearn/tests/test_docstring_parameters.py b/sklearn/tests/test_docstring_parameters.py index 5e22b425be1ec..4503446823b2a 100644 --- a/sklearn/tests/test_docstring_parameters.py +++ b/sklearn/tests/test_docstring_parameters.py @@ -248,7 +248,7 @@ def test_fit_docstring_attributes(name, Estimator): # FIXME: TO BE REMOVED for 1.2 (avoid FutureWarning) if Estimator.__name__ == "TSNE": - est.set_params(learning_rate=200.0, init="random") + est.set_params(learning_rate=200.0, init="random", perplexity=2) # FIXME: TO BE REMOVED for 1.3 (avoid FutureWarning) if Estimator.__name__ == "SequentialFeatureSelector": diff --git a/sklearn/utils/estimator_checks.py b/sklearn/utils/estimator_checks.py index 0cafae42ea2aa..6d7866dc0b85a 100644 --- a/sklearn/utils/estimator_checks.py +++ b/sklearn/utils/estimator_checks.py @@ -648,6 +648,8 @@ def _set_checking_parameters(estimator): # avoid deprecated behaviour params = estimator.get_params() name = estimator.__class__.__name__ + if name == "TSNE": + estimator.set_params(perplexity=2) if "n_iter" in params and name != "TSNE": estimator.set_params(n_iter=5) if "max_iter" in params: @@ -1419,6 +1421,10 @@ def check_fit2d_1sample(name, estimator_orig): if name == "OPTICS": estimator.set_params(min_samples=1) + # perplexity cannot be more than the number of samples for TSNE. + if name == "TSNE": + estimator.set_params(perplexity=0.5) + msgs = [ "1 sample", "n_samples = 1", From cc569a5e12b574503d8ea5f96f04817541f910ec Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Wed, 1 Jun 2022 05:03:01 -0400 Subject: [PATCH 057/251] FIX SimpleImputer uses dtype seen in fit for transform (#22063) Co-authored-by: Guillaume Lemaitre --- doc/whats_new/v1.2.rst | 14 ++++++++++++++ sklearn/impute/_base.py | 8 ++++++++ sklearn/impute/tests/test_impute.py | 26 ++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 4189e48572533..95c34daed40f3 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -63,6 +63,20 @@ Changelog - |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` by avoiding data copies. :pr:`23252` by :user:`Zhehao Liu `. +:mod:`sklearn.impute` +..................... + +- |Fix| :class:`impute.SimpleImputer` uses the dtype seen in `fit` for + `transform` when the dtype is object. :pr:`22063` by `Thomas Fan`_. + +:mod:`sklearn.metrics` +...................... + +- |Feature| :func:`class_likelihood_ratios` is added to compute the positive and + negative likelihood ratios derived from the confusion matrix + of a binary classification problem. :pr:`22518` by + :user:`Arturo Amor `. + :mod:`sklearn.neighbors` ........................ diff --git a/sklearn/impute/_base.py b/sklearn/impute/_base.py index 0c8a6f2c07a21..bb4bfed8098bf 100644 --- a/sklearn/impute/_base.py +++ b/sklearn/impute/_base.py @@ -278,6 +278,10 @@ def _validate_input(self, X, in_fit): else: dtype = FLOAT_DTYPES + if not in_fit and self._fit_dtype.kind == "O": + # Use object dtype if fitted on object dtypes + dtype = self._fit_dtype + if _is_pandas_na(self.missing_values) or is_scalar_nan(self.missing_values): force_all_finite = "allow-nan" else: @@ -303,6 +307,10 @@ def _validate_input(self, X, in_fit): else: raise ve + if in_fit: + # Use the dtype seen in `fit` for non-`fit` conversion + self._fit_dtype = X.dtype + _check_inputs_dtype(X, self.missing_values) if X.dtype.kind not in ("i", "u", "f", "O"): raise ValueError( diff --git a/sklearn/impute/tests/test_impute.py b/sklearn/impute/tests/test_impute.py index dc585571124b5..512558d28851d 100644 --- a/sklearn/impute/tests/test_impute.py +++ b/sklearn/impute/tests/test_impute.py @@ -1618,3 +1618,29 @@ def test_missing_indicator_feature_names_out(): feature_names = indicator.get_feature_names_out() expected_names = ["missingindicator_a", "missingindicator_b", "missingindicator_d"] assert_array_equal(expected_names, feature_names) + + +def test_imputer_lists_fit_transform(): + """Check transform uses object dtype when fitted on an object dtype. + + Non-regression test for #19572. + """ + + X = [["a", "b"], ["c", "b"], ["a", "a"]] + imp_frequent = SimpleImputer(strategy="most_frequent").fit(X) + X_trans = imp_frequent.transform([[np.nan, np.nan]]) + assert X_trans.dtype == object + assert_array_equal(X_trans, [["a", "b"]]) + + +@pytest.mark.parametrize("dtype_test", [np.float32, np.float64]) +def test_imputer_transform_preserves_numeric_dtype(dtype_test): + """Check transform preserves numeric dtype independent of fit dtype.""" + X = np.asarray( + [[1.2, 3.4, np.nan], [np.nan, 1.2, 1.3], [4.2, 2, 1]], dtype=np.float64 + ) + imp = SimpleImputer().fit(X) + + X_test = np.asarray([[np.nan, np.nan, np.nan]], dtype=dtype_test) + X_trans = imp.transform(X_test) + assert X_trans.dtype == dtype_test From e8bbc3a63230671e168aeccc37c308b58752d7c6 Mon Sep 17 00:00:00 2001 From: wchathura Date: Thu, 2 Jun 2022 14:11:48 -0500 Subject: [PATCH 058/251] DOC Ensures that check_pairwise_arrays and pairwise_kernel pass numpydoc validation (#23519) --- sklearn/metrics/pairwise.py | 9 ++------- sklearn/tests/test_docstrings.py | 2 -- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 934bf9d4e0e4f..3e3dabbdacde6 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -135,7 +135,6 @@ def check_pairwise_arrays( safe_Y : {array-like, sparse matrix} of shape (n_samples_Y, n_features) An array equal to Y if Y was not None, guaranteed to be a numpy array. If Y was None, safe_Y will be a pointer to X. - """ X, Y, dtype_float = _return_float_dtype(X, Y) @@ -1508,7 +1507,6 @@ def distance_metrics(): =============== ======================================== Read more in the :ref:`User Guide `. - """ return PAIRWISE_DISTANCE_FUNCTIONS @@ -2082,8 +2080,7 @@ def pairwise_kernels( Parameters ---------- - X : ndarray of shape (n_samples_X, n_samples_X) or \ - (n_samples_X, n_features) + X : ndarray of shape (n_samples_X, n_samples_X) or (n_samples_X, n_features) Array of pairwise kernels between samples, or a feature array. The shape of the array should be (n_samples_X, n_samples_X) if metric == "precomputed" and (n_samples_X, n_features) otherwise. @@ -2121,8 +2118,7 @@ def pairwise_kernels( Returns ------- - K : ndarray of shape (n_samples_X, n_samples_X) or \ - (n_samples_X, n_samples_Y) + K : ndarray of shape (n_samples_X, n_samples_X) or (n_samples_X, n_samples_Y) A kernel matrix K such that K_{i, j} is the kernel between the ith and jth vectors of the given matrix X, if Y is None. If Y is not None, then K_{i, j} is the kernel between the ith array @@ -2131,7 +2127,6 @@ def pairwise_kernels( Notes ----- If metric is 'precomputed', Y is ignored and X is returned. - """ # import GPKernel locally to prevent circular imports from ..gaussian_process.kernels import Kernel as GPKernel diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 907d6fbcf96b3..cc5883f3acc4b 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -56,7 +56,6 @@ "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.additive_chi2_kernel", "sklearn.metrics.pairwise.check_paired_arrays", - "sklearn.metrics.pairwise.check_pairwise_arrays", "sklearn.metrics.pairwise.chi2_kernel", "sklearn.metrics.pairwise.cosine_distances", "sklearn.metrics.pairwise.cosine_similarity", @@ -66,7 +65,6 @@ "sklearn.metrics.pairwise.pairwise_distances_argmin", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", - "sklearn.metrics.pairwise.pairwise_kernels", "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", From 418ef02ac4943aa60cd80d4cd25130dc55552d89 Mon Sep 17 00:00:00 2001 From: Nwanna-Joseph <98966754+Nwanna-Joseph@users.noreply.github.com> Date: Fri, 3 Jun 2022 01:30:01 +0000 Subject: [PATCH 059/251] DOC Fixes typo in code comment (#23529) --- sklearn/cluster/_kmeans.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_kmeans.py b/sklearn/cluster/_kmeans.py index eca8a5c2dc3ce..f3e72f29579b4 100644 --- a/sklearn/cluster/_kmeans.py +++ b/sklearn/cluster/_kmeans.py @@ -642,7 +642,7 @@ def _kmeans_single_lloyd( strict_convergence = False # Threadpoolctl context to limit the number of threads in second level of - # nested parallelism (i.e. BLAS) to avoid oversubsciption. + # nested parallelism (i.e. BLAS) to avoid oversubscription. with threadpool_limits(limits=1, user_api="blas"): for i in range(max_iter): lloyd_iter( From 21ce990a320f48ac52c8cc044b945af06e7ac4c0 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 3 Jun 2022 02:58:42 -0400 Subject: [PATCH 060/251] MNT Fixes lgtm config (#23493) --- lgtm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lgtm.yml b/lgtm.yml index 5394cc1664bc9..2dfdba3d160cc 100644 --- a/lgtm.yml +++ b/lgtm.yml @@ -1,7 +1,7 @@ extraction: cpp: before_index: - - pip3 install numpy==1.16.3 + - pip3 install numpy==1.17.3 - pip3 install --no-deps scipy Cython index: build_command: From f2d168c5b95b344476226a9852faf916bec04854 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 3 Jun 2022 03:47:44 -0400 Subject: [PATCH 061/251] MNT Fixes doc building on PR (#23508) --- .github/workflows/trigger-hosting.yml | 4 +++- build_tools/github/trigger_hosting.sh | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/trigger-hosting.yml b/.github/workflows/trigger-hosting.yml index 417c1816f595c..b5ff2da551b17 100644 --- a/.github/workflows/trigger-hosting.yml +++ b/.github/workflows/trigger-hosting.yml @@ -23,4 +23,6 @@ jobs: EVENT: ${{ github.event.workflow_run.event }} RUN_ID: ${{ github.event.workflow_run.id }} HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }} - PULL_REQUEST_NUMBER: ${{ github.event.workflow_run.pull_requests[0].number }} + COMMIT_SHA: ${{ github.event.workflow_run.head_sha }} + REPO_NAME: ${{ github.event.workflow_run.head_repository.full_name }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build_tools/github/trigger_hosting.sh b/build_tools/github/trigger_hosting.sh index 4fc9b0dccbd54..7922833f036e7 100755 --- a/build_tools/github/trigger_hosting.sh +++ b/build_tools/github/trigger_hosting.sh @@ -7,6 +7,11 @@ GITHUB_RUN_URL=https://nightly.link/$GITHUB_REPOSITORY/actions/runs/$RUN_ID if [ "$EVENT" == pull_request ] then + PULL_REQUEST_NUMBER=$(curl \ + -H "Accept: application/vnd.github.v3+json" \ + -H "Authorization: token $GITHUB_TOKEN" \ + https://api.github.com/repos/$REPO_NAME/commits/$COMMIT_SHA/pulls 2>/dev/null \ + | jq '.[0].number') BRANCH=pull/$PULL_REQUEST_NUMBER/head else BRANCH=$HEAD_BRANCH From 74638f4d232ac21ac5c25d347446e0b378a466dd Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 3 Jun 2022 06:28:23 -0400 Subject: [PATCH 062/251] MNT Do not run doc building on a fork (#23517) --- .github/workflows/build-docs.yml | 8 ++++++++ .github/workflows/trigger-hosting.yml | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 286f7e16e2936..3ba970afdde66 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -15,6 +15,10 @@ on: jobs: # Build the documentation against the minimum version of the dependencies doc-min-dependencies: + # This prevents this workflow from running on a fork. + # To test this workflow on a fork, uncomment the following line. + if: github.repository == 'scikit-learn/scikit-learn' + runs-on: ubuntu-latest steps: - name: Checkout scikit-learn @@ -41,6 +45,10 @@ jobs: # Build the documentation against the latest version of the dependencies doc: + # This prevents this workflow from running on a fork. + # To test this workflow on a fork, uncomment the following line. + if: github.repository == 'scikit-learn/scikit-learn' + runs-on: ubuntu-latest steps: - name: Checkout scikit-learn diff --git a/.github/workflows/trigger-hosting.yml b/.github/workflows/trigger-hosting.yml index b5ff2da551b17..63f4def8e0814 100644 --- a/.github/workflows/trigger-hosting.yml +++ b/.github/workflows/trigger-hosting.yml @@ -11,7 +11,9 @@ jobs: push: runs-on: ubuntu-latest # Run the job only if the "Documentation builder" workflow succeeded - if: ${{ github.event.workflow_run.conclusion == 'success' }} + # Prevents this workflow from running on a fork. + # To test this workflow on a fork remove the `github.repository == scikit-learn/scikit-learn` condition + if: github.repository == 'scikit-learn/scikit-learn' && github.event.workflow_run.conclusion == 'success' steps: - name: Checkout scikit-learn uses: actions/checkout@v2 From b2b195a4ad6c0b5a1e74c5e6cfa2db1d8d108cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20Carlos=20Alfaro=20Jim=C3=A9nez?= Date: Sun, 5 Jun 2022 05:05:55 +0200 Subject: [PATCH 063/251] FIX Fix empty changed files in documentation (#23541) Co-authored-by: Olivier Grisel --- .github/workflows/build-docs.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 3ba970afdde66..bd6135f4bc2c0 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -24,6 +24,8 @@ jobs: - name: Checkout scikit-learn uses: actions/checkout@v2 with: + # needed by build_doc.sh to compute the list of changed doc files: + fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - name: Setup Python @@ -54,6 +56,8 @@ jobs: - name: Checkout scikit-learn uses: actions/checkout@v2 with: + # needed by build_doc.sh to compute the list of changed doc files: + fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - name: Setup Python From e734134195253d75abdd08b816676836a7721e83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Mon, 6 Jun 2022 12:40:56 +0200 Subject: [PATCH 064/251] DOC fix glossary link (#23534) Co-authored-by: Thomas J. Fan Co-authored-by: Olivier Grisel --- build_tools/github/build_doc.sh | 3 ++- doc/developers/performance.rst | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build_tools/github/build_doc.sh b/build_tools/github/build_doc.sh index b812a0e03840e..673e6f3a70170 100755 --- a/build_tools/github/build_doc.sh +++ b/build_tools/github/build_doc.sh @@ -20,7 +20,8 @@ set -e if [ -n "$GITHUB_ACTION" ] then # Map the variables for the new documentation builder to the old one - CIRCLE_SHA1=$(git log --no-merges -1 --pretty=format:%H) + CIRCLE_SHA1=$(git log -1 --pretty=format:%H) + CIRCLE_JOB=$GITHUB_JOB if [ "$GITHUB_EVENT_NAME" == "pull_request" ] diff --git a/doc/developers/performance.rst b/doc/developers/performance.rst index 3e8bdbc4b857a..36419894eafd6 100644 --- a/doc/developers/performance.rst +++ b/doc/developers/performance.rst @@ -268,7 +268,7 @@ Then, setup the magics in a manner similar to ``line_profiler``. - **Under IPython 0.11+**, first create a configuration profile: .. prompt:: bash $ - + ipython profile create @@ -425,4 +425,4 @@ See `joblib documentation `_ A simple algorithmic trick: warm restarts ========================================= -See the glossary entry for `warm_start `_ +See the glossary entry for :term:`warm_start` From d8b4653537b405c4bd92456442230ec84bb11533 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 6 Jun 2022 09:42:32 -0400 Subject: [PATCH 065/251] CI Update original comment when updating tracker (#23539) --- maint_tools/update_tracking_issue.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maint_tools/update_tracking_issue.py b/maint_tools/update_tracking_issue.py index 3bfb875d4be22..9ab605d74e627 100644 --- a/maint_tools/update_tracking_issue.py +++ b/maint_tools/update_tracking_issue.py @@ -81,9 +81,9 @@ def create_or_update_issue(body=""): print(f"Created issue in {args.issue_repo}#{issue.number}") sys.exit() else: - # Add comment to existing issue + # Update existing issue header = f"**CI is still failing on {link}**" - issue.create_comment(body=f"{header}\n{body}") + issue.edit(body=f"{header}\n{body}") print(f"Commented on issue: {args.issue_repo}#{issue.number}") sys.exit() From 59fc6793deb68e2257778548c951b110e41bb10b Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Mon, 6 Jun 2022 23:49:42 +1000 Subject: [PATCH 066/251] DOCS Fix typos in decision trees docs (#23545) --- doc/modules/tree.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/modules/tree.rst b/doc/modules/tree.rst index 73500003b9ecf..80ed69604613b 100644 --- a/doc/modules/tree.rst +++ b/doc/modules/tree.rst @@ -33,7 +33,7 @@ Some advantages of decision trees are: - The cost of using the tree (i.e., predicting data) is logarithmic in the number of data points used to train the tree. - - Able to handle both numerical and categorical data. However scikit-learn + - Able to handle both numerical and categorical data. However, the scikit-learn implementation does not support categorical variables for now. Other techniques are usually specialized in analyzing datasets that have only one type of variable. See :ref:`algorithms ` for more @@ -415,7 +415,7 @@ must be categorical by dynamically defining a discrete attribute (based on numerical variables) that partitions the continuous attribute value into a discrete set of intervals. C4.5 converts the trained trees (i.e. the output of the ID3 algorithm) into sets of if-then rules. -These accuracy of each rule is then evaluated to determine the order +The accuracy of each rule is then evaluated to determine the order in which they should be applied. Pruning is done by removing a rule's precondition if the accuracy of the rule improves without it. @@ -428,8 +428,8 @@ it differs in that it supports numerical target variables (regression) and does not compute rule sets. CART constructs binary trees using the feature and threshold that yield the largest information gain at each node. -scikit-learn uses an optimized version of the CART algorithm; however, scikit-learn -implementation does not support categorical variables for now. +scikit-learn uses an optimized version of the CART algorithm; however, the +scikit-learn implementation does not support categorical variables for now. .. _ID3: https://en.wikipedia.org/wiki/ID3_algorithm .. _CART: https://en.wikipedia.org/wiki/Predictive_analytics#Classification_and_regression_trees_.28CART.29 From a0080bfab9045e3e6542d729a6f17f8693a69062 Mon Sep 17 00:00:00 2001 From: Hao Chun Chang Date: Tue, 7 Jun 2022 01:17:28 +0800 Subject: [PATCH 067/251] [MRG] DOC Add link of kernal approx to svm user guide (#23535) * Add link of kernal approx to svm user guide * Update doc/modules/svm.rst Co-authored-by: Gael Varoquaux Co-authored-by: Gael Varoquaux --- doc/modules/svm.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/modules/svm.rst b/doc/modules/svm.rst index 0f68366012d39..75609adf38c9c 100644 --- a/doc/modules/svm.rst +++ b/doc/modules/svm.rst @@ -483,6 +483,8 @@ Different kernels are specified by the `kernel` parameter:: >>> rbf_svc.kernel 'rbf' +See also :ref:`kernel_approximation` for a solution to use RBF kernels that is much faster and more scalable. + Parameters of the RBF Kernel ---------------------------- From d4aa67e9a2538bde557d0ee9fa3fa11bfbf21daa Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Tue, 7 Jun 2022 04:08:10 -0400 Subject: [PATCH 068/251] MNT Fixes flake8 issues (#23542) --- doc/sphinxext/allow_nan_estimators.py | 4 ---- sklearn/linear_model/_logistic.py | 4 ++-- sklearn/tests/test_base.py | 4 ++-- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/doc/sphinxext/allow_nan_estimators.py b/doc/sphinxext/allow_nan_estimators.py index bf51644b67116..901ebe12a1f08 100755 --- a/doc/sphinxext/allow_nan_estimators.py +++ b/doc/sphinxext/allow_nan_estimators.py @@ -1,11 +1,7 @@ from sklearn.utils import all_estimators -from sklearn.compose import ColumnTransformer -from sklearn.pipeline import FeatureUnion -from sklearn.decomposition import SparseCoder from sklearn.utils.estimator_checks import _construct_instance from sklearn.utils._testing import SkipTest from docutils import nodes -import warnings from contextlib import suppress from docutils.parsers.rst import Directive diff --git a/sklearn/linear_model/_logistic.py b/sklearn/linear_model/_logistic.py index 72b602e409801..93f6e31b12223 100644 --- a/sklearn/linear_model/_logistic.py +++ b/sklearn/linear_model/_logistic.py @@ -872,8 +872,8 @@ class LogisticRegression(LinearClassifierMixin, SparseCoefMixin, BaseEstimator): .. seealso:: Refer to the User Guide for more information regarding :class:`LogisticRegression` and more specifically the - `Table `_ - summarazing solver/penalty supports. + :ref:`Table ` + summarizing solver/penalty supports. .. versionadded:: 0.17 Stochastic Average Gradient descent solver. diff --git a/sklearn/tests/test_base.py b/sklearn/tests/test_base.py index bdbe55c463841..31d4263824ae0 100644 --- a/sklearn/tests/test_base.py +++ b/sklearn/tests/test_base.py @@ -653,9 +653,9 @@ def transform(self, X): "Feature names only support names that are all strings. " "Got feature names with dtypes: ['int', 'str']" ) - with pytest.warns(FutureWarning, match=msg) as record: + with pytest.warns(FutureWarning, match=msg): trans.fit(df_mixed) # transform on feature names that are mixed also warns: - with pytest.warns(FutureWarning, match=msg) as record: + with pytest.warns(FutureWarning, match=msg): trans.transform(df_mixed) From 440035745ad6f37eb5a07c9b37cca44d5a2184c4 Mon Sep 17 00:00:00 2001 From: Sean Atukorala Date: Tue, 7 Jun 2022 04:17:25 -0400 Subject: [PATCH 069/251] DOC Fix grammar in contributing doc (#23553) --- doc/developers/contributing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index 3883cd3e53a6d..a7820b613252b 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -443,7 +443,7 @@ complies with the following rules before marking a PR as ``[MRG]``. The git diff upstream/main -u -- "*.py" | flake8 --diff - or `make flake8-diff` which should work on unix-like system. + or `make flake8-diff` which should work on Unix-like systems. 7. Follow the :ref:`coding-guidelines`. From 5b0deb41ab98d9b48f1f976f929566420c1fb098 Mon Sep 17 00:00:00 2001 From: "Malte S. Kurz" Date: Tue, 7 Jun 2022 15:11:22 +0200 Subject: [PATCH 070/251] DOC fix assert_allclose docstring: atol is not being set based on the provided arrays' dtypes (#23555) --- sklearn/utils/_testing.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sklearn/utils/_testing.py b/sklearn/utils/_testing.py index 453f3437307a9..8a94b1f31abee 100644 --- a/sklearn/utils/_testing.py +++ b/sklearn/utils/_testing.py @@ -414,7 +414,6 @@ def assert_allclose( If None, it is set based on the provided arrays' dtypes. atol : float, optional, default=0. Absolute tolerance. - If None, it is set based on the provided arrays' dtypes. equal_nan : bool, optional, default=True If True, NaNs will compare equal. err_msg : str, optional, default='' From 7e5ab6cd3a02e13b2adb12af5e35438e2ab4c3e0 Mon Sep 17 00:00:00 2001 From: Olivier Grisel Date: Tue, 7 Jun 2022 15:33:41 +0200 Subject: [PATCH 071/251] CI reduce verbosity of build_doc.sh (#23557) --- build_tools/github/build_doc.sh | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/build_tools/github/build_doc.sh b/build_tools/github/build_doc.sh index 673e6f3a70170..249dd82e798b6 100755 --- a/build_tools/github/build_doc.sh +++ b/build_tools/github/build_doc.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash -set -x set -e # Decide what kind of documentation build to run, and run it. @@ -154,24 +153,24 @@ sudo -E apt-get -yq update --allow-releaseinfo-change sudo -E apt-get -yq --no-install-suggests --no-install-recommends \ install dvipng gsfonts ccache zip optipng -# deactivate circleci virtualenv and setup a miniconda env instead +# deactivate circleci virtualenv and setup a conda env instead if [[ `type -t deactivate` ]]; then deactivate fi -MINICONDA_PATH=$HOME/miniconda -# Install dependencies with miniconda -wget https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh \ - -O miniconda.sh -chmod +x miniconda.sh && ./miniconda.sh -b -p $MINICONDA_PATH -export PATH="/usr/lib/ccache:$MINICONDA_PATH/bin:$PATH" +MAMBAFORGE_PATH=$HOME/mambaforge +# Install dependencies with mamba +wget -q https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh \ + -O mambaforge.sh +chmod +x mambaforge.sh && ./mambaforge.sh -b -p $MAMBAFORGE_PATH +export PATH="/usr/lib/ccache:$MAMBAFORGE_PATH/bin:$PATH" ccache -M 512M export CCACHE_COMPRESS=1 # pin conda-lock to latest released version (needs manual update from time to time) mamba install conda-lock==1.0.5 -y -conda-lock install --name $CONDA_ENV_NAME $LOCK_FILE +conda-lock install --log-level WARNING --name $CONDA_ENV_NAME $LOCK_FILE source activate $CONDA_ENV_NAME mamba list @@ -179,7 +178,10 @@ mamba list # Set parallelism to 3 to overlap IO bound tasks with CPU bound tasks on CI # workers with 2 cores when building the compiled extensions of scikit-learn. export SKLEARN_BUILD_PARALLEL=3 -python setup.py develop +pip install -e . --no-build-isolation + +echo "ccache build summary:" +ccache -s export OMP_NUM_THREADS=1 From 1f811d3e4317c8f7a623f22b5a1cb407f2c6ebf4 Mon Sep 17 00:00:00 2001 From: "Adam J. Stewart" Date: Tue, 7 Jun 2022 08:49:11 -0700 Subject: [PATCH 072/251] DOC fix typos in GP kernels (#23536) --- doc/modules/gaussian_process.rst | 2 +- examples/gaussian_process/plot_gpr_noisy.py | 2 +- .../gaussian_process/plot_gpr_prior_posterior.py | 12 ++++++------ sklearn/gaussian_process/kernels.py | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/doc/modules/gaussian_process.rst b/doc/modules/gaussian_process.rst index 94fc69305cf6d..d6f7008c271ba 100644 --- a/doc/modules/gaussian_process.rst +++ b/doc/modules/gaussian_process.rst @@ -484,7 +484,7 @@ Note that magic methods ``__add__``, ``__mul___`` and ``__pow__`` are overridden on the Kernel objects, so one can use e.g. ``RBF() + RBF()`` as a shortcut for ``Sum(RBF(), RBF())``. -Radial-basis function (RBF) kernel +Radial basis function (RBF) kernel ---------------------------------- The :class:`RBF` kernel is a stationary kernel. It is also known as the "squared exponential" kernel. It is parameterized by a length-scale parameter :math:`l>0`, which diff --git a/examples/gaussian_process/plot_gpr_noisy.py b/examples/gaussian_process/plot_gpr_noisy.py index 04ea696e4319f..e15c9a6470d38 100644 --- a/examples/gaussian_process/plot_gpr_noisy.py +++ b/examples/gaussian_process/plot_gpr_noisy.py @@ -97,7 +97,7 @@ def target_generator(X, add_noise=False): # %% plt.plot(X, y, label="Expected signal") -plt.scatter(x=X_train[:, 0], y=y_train, color="black", alpha=0.4, label="Observsations") +plt.scatter(x=X_train[:, 0], y=y_train, color="black", alpha=0.4, label="Observations") plt.errorbar(X, y_mean, y_std) plt.legend() plt.xlabel("X") diff --git a/examples/gaussian_process/plot_gpr_prior_posterior.py b/examples/gaussian_process/plot_gpr_prior_posterior.py index 437d67f5b0ab9..b36d49617432d 100644 --- a/examples/gaussian_process/plot_gpr_prior_posterior.py +++ b/examples/gaussian_process/plot_gpr_prior_posterior.py @@ -158,7 +158,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): ) # %% -# Periodic kernel +# Exp-Sine-Squared kernel # ............... from sklearn.gaussian_process.kernels import ExpSineSquared @@ -183,7 +183,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): axs[1].legend(bbox_to_anchor=(1.05, 1.5), loc="upper left") axs[1].set_title("Samples from posterior distribution") -fig.suptitle("Periodic kernel", fontsize=18) +fig.suptitle("Exp-Sine-Squared kernel", fontsize=18) plt.tight_layout() # %% @@ -194,7 +194,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): ) # %% -# Dot product kernel +# Dot-product kernel # .................. from sklearn.gaussian_process.kernels import ConstantKernel, DotProduct @@ -216,7 +216,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): axs[1].legend(bbox_to_anchor=(1.05, 1.5), loc="upper left") axs[1].set_title("Samples from posterior distribution") -fig.suptitle("Dot product kernel", fontsize=18) +fig.suptitle("Dot-product kernel", fontsize=18) plt.tight_layout() # %% @@ -227,7 +227,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): ) # %% -# Mattern kernel +# Matérn kernel # .............. from sklearn.gaussian_process.kernels import Matern @@ -247,7 +247,7 @@ def plot_gpr_samples(gpr_model, n_samples, ax): axs[1].legend(bbox_to_anchor=(1.05, 1.5), loc="upper left") axs[1].set_title("Samples from posterior distribution") -fig.suptitle("Mattern kernel", fontsize=18) +fig.suptitle("Matérn kernel", fontsize=18) plt.tight_layout() # %% diff --git a/sklearn/gaussian_process/kernels.py b/sklearn/gaussian_process/kernels.py index 4e36dfa7add42..3ac3866cf9ba7 100644 --- a/sklearn/gaussian_process/kernels.py +++ b/sklearn/gaussian_process/kernels.py @@ -1421,7 +1421,7 @@ def __repr__(self): class RBF(StationaryKernelMixin, NormalizedKernelMixin, Kernel): - """Radial-basis function kernel (aka squared-exponential kernel). + """Radial basis function kernel (aka squared-exponential kernel). The RBF kernel is a stationary kernel. It is also known as the "squared exponential" kernel. It is parameterized by a length scale From 7d17d6d578142e5dd47b874baccbf8c8e778acc6 Mon Sep 17 00:00:00 2001 From: "Malte S. Kurz" Date: Tue, 7 Jun 2022 22:02:05 +0200 Subject: [PATCH 073/251] FIX Fix gram validation: dtype-aware tolerance (#22059) --- doc/whats_new/v1.2.rst | 6 +++++ sklearn/linear_model/_base.py | 13 ++++++++--- .../tests/test_coordinate_descent.py | 23 +++++++++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 95c34daed40f3..aba8c23017ffb 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -69,6 +69,12 @@ Changelog - |Fix| :class:`impute.SimpleImputer` uses the dtype seen in `fit` for `transform` when the dtype is object. :pr:`22063` by `Thomas Fan`_. +:mod:`sklearn.linear_model` +........................... + +- |Fix| Use dtype-aware tolerances for the validation of gram matrices (passed by users + or precomputed). :pr:`22059` by :user:`Malte S. Kurz `. + :mod:`sklearn.metrics` ...................... diff --git a/sklearn/linear_model/_base.py b/sklearn/linear_model/_base.py index 5e8417de21996..de747ef0850df 100644 --- a/sklearn/linear_model/_base.py +++ b/sklearn/linear_model/_base.py @@ -743,7 +743,7 @@ def rmatvec(b): def _check_precomputed_gram_matrix( - X, precompute, X_offset, X_scale, rtol=1e-7, atol=1e-5 + X, precompute, X_offset, X_scale, rtol=None, atol=1e-5 ): """Computes a single element of the gram matrix and compares it to the corresponding element of the user supplied gram matrix. @@ -764,8 +764,10 @@ def _check_precomputed_gram_matrix( X_scale : ndarray of shape (n_features,) Array of feature scale factors used to normalize design matrix. - rtol : float, default=1e-7 - Relative tolerance; see numpy.allclose. + rtol : float, default=None + Relative tolerance; see numpy.allclose + If None, it is set to 1e-4 for arrays of dtype numpy.float32 and 1e-7 + otherwise. atol : float, default=1e-5 absolute tolerance; see :func`numpy.allclose`. Note that the default @@ -788,6 +790,11 @@ def _check_precomputed_gram_matrix( expected = np.dot(v1, v2) actual = precompute[f1, f2] + dtypes = [precompute.dtype, expected.dtype] + if rtol is None: + rtols = [1e-4 if dtype == np.float32 else 1e-7 for dtype in dtypes] + rtol = max(rtols) + if not np.isclose(expected, actual, rtol=rtol, atol=atol): raise ValueError( "Gram matrix passed in via 'precompute' parameter " diff --git a/sklearn/linear_model/tests/test_coordinate_descent.py b/sklearn/linear_model/tests/test_coordinate_descent.py index e5d7ba358c1f5..124da4f921e00 100644 --- a/sklearn/linear_model/tests/test_coordinate_descent.py +++ b/sklearn/linear_model/tests/test_coordinate_descent.py @@ -1065,6 +1065,29 @@ def test_elasticnet_precompute_gram_weighted_samples(): assert_allclose(clf1.coef_, clf2.coef_) +def test_elasticnet_precompute_gram(): + # Check the dtype-aware check for a precomputed Gram matrix + # (see https://github.com/scikit-learn/scikit-learn/pull/22059 + # and https://github.com/scikit-learn/scikit-learn/issues/21997). + # Here: (X_c.T, X_c)[2, 3] is not equal to np.dot(X_c[:, 2], X_c[:, 3]) + # but within tolerance for np.float32 + + rng = np.random.RandomState(58) + X = rng.binomial(1, 0.25, (1000, 4)).astype(np.float32) + y = rng.rand(1000).astype(np.float32) + + X_c = X - np.average(X, axis=0) + gram = np.dot(X_c.T, X_c) + + clf1 = ElasticNet(alpha=0.01, precompute=gram) + clf1.fit(X_c, y) + + clf2 = ElasticNet(alpha=0.01, precompute=False) + clf2.fit(X, y) + + assert_allclose(clf1.coef_, clf2.coef_) + + def test_warm_start_convergence(): X, y, _, _ = build_dataset() model = ElasticNet(alpha=1e-3, tol=1e-3).fit(X, y) From b3df67792b79608f21d0dfeca52b26bcb7a089f6 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 8 Jun 2022 22:58:18 +1000 Subject: [PATCH 074/251] DOC Fix typos in ensemble docs (#23564) --- doc/modules/ensemble.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/modules/ensemble.rst b/doc/modules/ensemble.rst index e93a6201bd43c..931ab180e9b86 100644 --- a/doc/modules/ensemble.rst +++ b/doc/modules/ensemble.rst @@ -562,7 +562,7 @@ for regression which can be specified via the argument The figure below shows the results of applying :class:`GradientBoostingRegressor` with least squares loss and 500 base learners to the diabetes dataset (:func:`sklearn.datasets.load_diabetes`). -The plot on the left shows the train and test error at each iteration. +The plot shows the train and test error at each iteration. The train error at each iteration is stored in the :attr:`~GradientBoostingRegressor.train_score_` attribute of the gradient boosting model. The test error at each iterations can be obtained @@ -826,7 +826,7 @@ does poorly. :scale: 75 Another strategy to reduce the variance is by subsampling the features -analogous to the random splits in :class:`RandomForestClassifier` . +analogous to the random splits in :class:`RandomForestClassifier`. The number of subsampled features can be controlled via the ``max_features`` parameter. @@ -979,7 +979,7 @@ corresponds to :math:`\lambda` in equation (2) of [XGBoost]_. Note that **early-stopping is enabled by default if the number of samples is larger than 10,000**. The early-stopping behaviour is controlled via the -``early-stopping``, ``scoring``, ``validation_fraction``, +``early_stopping``, ``scoring``, ``validation_fraction``, ``n_iter_no_change``, and ``tol`` parameters. It is possible to early-stop using an arbitrary :term:`scorer`, or just the training or validation loss. Note that for technical reasons, using a scorer is significantly slower than From 7a1ad07d309d0cdea9809b90aac28db9021c3c2f Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Thu, 9 Jun 2022 05:28:54 -0400 Subject: [PATCH 075/251] FIX Enables make to build docs on Windows (#23561) --- doc/make.bat | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/make.bat b/doc/make.bat index fa8e7171ea7e6..b7e269a6a7836 100644 --- a/doc/make.bat +++ b/doc/make.bat @@ -9,7 +9,7 @@ if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) -if "%1" == "" goto help +if "%1" == "" goto html-noplot if "%1" == "help" ( :help @@ -42,6 +42,7 @@ if "%1" == "html" ( ) if "%1" == "html-noplot" ( + :html-noplot %SPHINXBUILD% -D plot_gallery=0 -b html %ALLSPHINXOPTS% %BUILDDIR%/html echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html From 1e2c12249840de1a718fcb2976ca23d494fef084 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Thu, 9 Jun 2022 19:42:12 +1000 Subject: [PATCH 076/251] DOC Fix minor typo in ensemble docs (#23570) --- doc/modules/ensemble.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/ensemble.rst b/doc/modules/ensemble.rst index 931ab180e9b86..be9b652ecd69d 100644 --- a/doc/modules/ensemble.rst +++ b/doc/modules/ensemble.rst @@ -1241,7 +1241,7 @@ Voting Classifier The idea behind the :class:`VotingClassifier` is to combine conceptually different machine learning classifiers and use a majority vote or the average predicted probabilities (soft vote) to predict the class labels. -Such a classifier can be useful for a set of equally well performing model +Such a classifier can be useful for a set of equally well performing models in order to balance out their individual weaknesses. From a89190e2c4b0fa73f1c333835aaa09b5312a17fd Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Thu, 9 Jun 2022 08:05:10 -0400 Subject: [PATCH 077/251] DOC Improve the mathematical description of Logistic Regression (#22382) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Christian Lorentzen Co-authored-by: Thomas J. Fan Co-authored-by: ArturoAmorQ Co-authored-by: Loïc Estève Co-authored-by: Guillaume Lemaitre --- doc/modules/linear_model.rst | 97 ++++++++++++++++++++++++++++++------ 1 file changed, 82 insertions(+), 15 deletions(-) diff --git a/doc/modules/linear_model.rst b/doc/modules/linear_model.rst index 36c4413a0756c..7f9dd6ea593a1 100644 --- a/doc/modules/linear_model.rst +++ b/doc/modules/linear_model.rst @@ -850,28 +850,91 @@ regularization. that it improves numerical stability. No regularization amounts to setting C to a very high value. -As an optimization problem, binary class :math:`\ell_2` penalized logistic -regression minimizes the following cost function: +Binary Case +----------- -.. math:: \min_{w, c} \frac{1}{2}w^T w + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1) . +For notational ease, we assume that the target :math:`y_i` takes values in the +set :math:`\{0, 1\}` for data point :math:`i`. +Once fitted, the :meth:`~sklearn.linear_model.LogisticRegression.predict_proba` +method of :class:`~sklearn.linear_model.LogisticRegression` predicts +the probability of the positive class :math:`P(y_i=1|X_i)` as -Similarly, :math:`\ell_1` regularized logistic regression solves the following -optimization problem: +.. math:: \hat{p}(X_i) = \operatorname{expit}(X_i w + w_0) = \frac{1}{1 + \exp(-X_i w - w_0)}. -.. math:: \min_{w, c} \|w\|_1 + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1). +As an optimization problem, binary +class logistic regression with regularization term :math:`r(w)` minimizes the +following cost function: -Elastic-Net regularization is a combination of :math:`\ell_1` and -:math:`\ell_2`, and minimizes the following cost function: +.. math:: \min_{w} C \sum_{i=1}^n \left(-y_i \log(\hat{p}(X_i)) - (1 - y_i) \log(1 - \hat{p}(X_i))\right) + r(w). -.. math:: \min_{w, c} \frac{1 - \rho}{2}w^T w + \rho \|w\|_1 + C \sum_{i=1}^n \log(\exp(- y_i (X_i^T w + c)) + 1), -where :math:`\rho` controls the strength of :math:`\ell_1` regularization vs. -:math:`\ell_2` regularization (it corresponds to the `l1_ratio` parameter). +We currently provide four choices for the regularization term :math:`r(w)` via +the `penalty` argument: -Note that, in this notation, it's assumed that the target :math:`y_i` takes -values in the set :math:`{-1, 1}` at trial :math:`i`. We can also see that -Elastic-Net is equivalent to :math:`\ell_1` when :math:`\rho = 1` and equivalent -to :math:`\ell_2` when :math:`\rho=0`. ++----------------+-------------------------------------------------+ +| penalty | :math:`r(w)` | ++================+=================================================+ +| `None` | :math:`0` | ++----------------+-------------------------------------------------+ +| :math:`\ell_1` | :math:`\|w\|_1` | ++----------------+-------------------------------------------------+ +| :math:`\ell_2` | :math:`\frac{1}{2}\|w\|_2^2 = \frac{1}{2}w^T w` | ++----------------+-------------------------------------------------+ +| `ElasticNet` | :math:`\frac{1 - \rho}{2}w^T w + \rho \|w\|_1` | ++----------------+-------------------------------------------------+ + +For ElasticNet, :math:`\rho` (which corresponds to the `l1_ratio` parameter) +controls the strength of :math:`\ell_1` regularization vs. :math:`\ell_2` +regularization. Elastic-Net is equivalent to :math:`\ell_1` when +:math:`\rho = 1` and equivalent to :math:`\ell_2` when :math:`\rho=0`. + +Multinomial Case +---------------- + +The binary case can be extended to :math:`K` classes leading to the multinomial +logistic regression, see also `log-linear model +`_. + +.. note:: + It is possible to parameterize a :math:`K`-class classification model + using only :math:`K-1` weight vectors, leaving one class probability fully + determined by the other class probabilities by leveraging the fact that all + class probabilities must sum to one. We deliberately choose to overparameterize the model + using :math:`K` weight vectors for ease of implementation and to preserve the + symmetrical inductive bias regarding ordering of classes, see [16]_. This effect becomes + especially important when using regularization. The choice of overparameterization can be + detrimental for unpenalized models since then the solution may not be unique, as shown in [16]_. + +Let :math:`y_i \in {1, \ldots, K}` be the label (ordinal) encoded target variable for observation :math:`i`. +Instead of a single coefficient vector, we now have +a matrix of coefficients :math:`W` where each row vector :math:`W_k` corresponds to class +:math:`k`. We aim at predicting the class probabilities :math:`P(y_i=k|X_i)` via +:meth:`~sklearn.linear_model.LogisticRegression.predict_proba` as: + +.. math:: \hat{p}_k(X_i) = \frac{\exp(X_i W_k + W_{0, k})}{\sum_{l=0}^{K-1} \exp(X_i W_l + W_{0, l})}. + +The objective for the optimization becomes + +.. math:: \min_W -C \sum_{i=1}^n \sum_{k=0}^{K-1} [y_i = k] \log(\hat{p}_k(X_i)) + r(W). + +Where :math:`[P]` represents the Iverson bracket which evaluates to :math:`0` +if :math:`P` is false, otherwise it evaluates to :math:`1`. We currently provide four choices +for the regularization term :math:`r(W)` via the `penalty` argument: + ++----------------+----------------------------------------------------------------------------------+ +| penalty | :math:`r(W)` | ++================+==================================================================================+ +| `None` | :math:`0` | ++----------------+----------------------------------------------------------------------------------+ +| :math:`\ell_1` | :math:`\|W\|_{1,1} = \sum_{i=1}^n\sum_{j=1}^{K}|W_{i,j}|` | ++----------------+----------------------------------------------------------------------------------+ +| :math:`\ell_2` | :math:`\frac{1}{2}\|W\|_F^2 = \frac{1}{2}\sum_{i=1}^n\sum_{j=1}^{K} W_{i,j}^2` | ++----------------+----------------------------------------------------------------------------------+ +| `ElasticNet` | :math:`\frac{1 - \rho}{2}\|W\|_F^2 + \rho \|W\|_{1,1}` | ++----------------+----------------------------------------------------------------------------------+ + +Solvers +------- The solvers implemented in the class :class:`LogisticRegression` are "liblinear", "newton-cg", "lbfgs", "sag" and "saga": @@ -1004,6 +1067,10 @@ to warm-starting (see :term:`Glossary `). .. [9] `"Performance Evaluation of Lbfgs vs other solvers" `_ + .. [16] :arxiv:`Simon, Noah, J. Friedman and T. Hastie. + "A Blockwise Descent Algorithm for Group-penalized Multiresponse and + Multinomial Regression." <1311.6529>` + .. _Generalized_linear_regression: Generalized Linear Regression From 959ff797a8682a0a39b5b028bddb6c4049353da5 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Mon, 13 Jun 2022 19:51:59 +1000 Subject: [PATCH 078/251] DOC Fix typos in Feature Selection page (#23601) --- doc/modules/feature_selection.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/feature_selection.rst b/doc/modules/feature_selection.rst index c27a334c2ed4b..1368f04335f18 100644 --- a/doc/modules/feature_selection.rst +++ b/doc/modules/feature_selection.rst @@ -271,14 +271,14 @@ SFS can be either forward or backward: Forward-SFS is a greedy procedure that iteratively finds the best new feature to add to the set of selected features. Concretely, we initially start with -zero feature and find the one feature that maximizes a cross-validated score +zero features and find the one feature that maximizes a cross-validated score when an estimator is trained on this single feature. Once that first feature is selected, we repeat the procedure by adding a new feature to the set of selected features. The procedure stops when the desired number of selected features is reached, as determined by the `n_features_to_select` parameter. Backward-SFS follows the same idea but works in the opposite direction: -instead of starting with no feature and greedily adding features, we start +instead of starting with no features and greedily adding features, we start with *all* the features and greedily *remove* features from the set. The `direction` parameter controls whether forward or backward SFS is used. From 09f8b4ab6569acadc65f1267413738525de87ba0 Mon Sep 17 00:00:00 2001 From: Reshama Shaikh Date: Mon, 13 Jun 2022 09:07:27 -0400 Subject: [PATCH 079/251] DOC / MAINT Link to logos in Community section of website (#23587) Co-authored-by: Thomas J. Fan --- README.rst | 1 + doc/logos/1280px-scikit-learn-logo.png | Bin 0 -> 48838 bytes doc/logos/README.md | 57 +++++++++ .../brand_colors/colorswatch_29ABE2_cyan.png | Bin 0 -> 472 bytes .../brand_colors/colorswatch_9B4600_brown.png | Bin 0 -> 445 bytes .../colorswatch_F7931E_orange.png | Bin 0 -> 462 bytes doc/logos/scikit-learn-logo.svg | 111 +----------------- 7 files changed, 59 insertions(+), 110 deletions(-) create mode 100644 doc/logos/1280px-scikit-learn-logo.png create mode 100644 doc/logos/README.md create mode 100644 doc/logos/brand_colors/colorswatch_29ABE2_cyan.png create mode 100644 doc/logos/brand_colors/colorswatch_9B4600_brown.png create mode 100644 doc/logos/brand_colors/colorswatch_F7931E_orange.png diff --git a/README.rst b/README.rst index 83b42b0850e0f..089929278c75d 100644 --- a/README.rst +++ b/README.rst @@ -184,6 +184,7 @@ Communication - Mailing list: https://mail.python.org/mailman/listinfo/scikit-learn - Gitter: https://gitter.im/scikit-learn/scikit-learn +- Logos & Branding: https://github.com/scikit-learn/scikit-learn/tree/main/doc/logos - Blog: https://blog.scikit-learn.org - Calendar: https://blog.scikit-learn.org/calendar/ - Twitter: https://twitter.com/scikit_learn diff --git a/doc/logos/1280px-scikit-learn-logo.png b/doc/logos/1280px-scikit-learn-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..f02c510019d87f3066275e358d591411842ee5b5 GIT binary patch literal 48838 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 qi($a-8bB>b*(QXw~aGMPoY$O*H& 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 literal 0 HcmV?d00001 diff --git a/doc/logos/README.md b/doc/logos/README.md new file mode 100644 index 0000000000000..99e4fb6874c36 --- /dev/null +++ b/doc/logos/README.md @@ -0,0 +1,57 @@ +# scikit-learn Branding + +This section contains scikit-learn's branding standards. +File types: +- `PNG` is a higher-quality compression format; size of file is generally larger +- `ICO` file format refers to an image file format that contains small size computer icon images +- `SVG` Scalable Vector Graphics (SVG) are an XML-based markup language for describing two-dimensional based vector graphics. They can be created and edited with any text editor or with drawing software. + +--- + +# scikit-learn: Font, Colors & Logos + +## scikit-learn Font +- "scikit": Helvetica Neue +- "learn": Script MT + +## scikit-learn Color Palette +![#29ABE2 Cyan](brand_colors/colorswatch_29ABE2_cyan.png) `RGB 41/171/226 | HEX #29ABE2 | scikit-learn Cyan` | More info: [#29ABE2](https://www.color-hex.com/color/29abe2) + +![#F7931E Orange](brand_colors/colorswatch_F7931E_orange.png) `RGB 247/147/30 | HEX #F7931E | scikit-learn Orange` | More info: [#F7931E](https://www.color-hex.com/color/f7931e) + +![#9B4600 Brown](brand_colors/colorswatch_9B4600_brown.png) `RGB 155/70/0| HEX #9B4600 | scikit-learn Brown` | More info: [#9B4600](https://www.color-hex.com/color/9b4600) + +## scikit-learn Logos + +### Logo 1 +- File type: PNG +- File size: 49 KB (1280 x 689 px) +- File name: [1280px-scikit-learn-logo.png](https://github.com/scikit-learn/scikit-learn/blob/main/doc/logos/1280px-scikit-learn-logo.png) + + + +
+ +### Logo 2 +- File type: ICO +- File size: 2 KB (32 x 32 px) +- File name: [favicon.ico](https://github.com/scikit-learn/scikit-learn/blob/main/doc/logos/favicon.ico) + + + +
+ +### Logo 3 +- File type: SVG +- File size: 5 KB +- File name: [scikit-learn-logo-without-subtitle.svg](https://github.com/scikit-learn/scikit-learn/blob/main/doc/logos/scikit-learn-logo-without-subtitle.svg) + + + +--- + +## Reference +- [color-hex](https://www.color-hex.com): Glossary of Color Palettes + +## Other +You can find more variations of the logos here: https://github.com/scikit-learn/blog/tree/main/assets/images diff --git a/doc/logos/brand_colors/colorswatch_29ABE2_cyan.png b/doc/logos/brand_colors/colorswatch_29ABE2_cyan.png new file mode 100644 index 0000000000000000000000000000000000000000..b014a859dd4b94be6e5dabfeb7311fcbaea7ecde GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^{y;3r!3HD?9v9~TDaPU;cPEB*=VV?2ITfi9o@u_m z3|c@o2LlVE6ayEbN#h%9Dc5ElYr#`O7@K+gW@>Eaj?!TI*4J>S6shNBe(D;1P^s=hw>KC?)?u;5!yshC=ym7iB&_IJ6n2XA=aFVz>@ zaV9;@T=J)<%*?F9MN%+9IE`dVG)78&qol`;+0PGxy?*IS* literal 0 HcmV?d00001 diff --git a/doc/logos/brand_colors/colorswatch_9B4600_brown.png b/doc/logos/brand_colors/colorswatch_9B4600_brown.png new file mode 100644 index 0000000000000000000000000000000000000000..379400786ef5609f01b942523f236b50d312d39d GIT binary patch literal 445 zcmeAS@N?(olHy`uVBq!ia0vp^{y;3r!3HD?9v9~TDaPU;cPEB*=VV?2ITfi9o@u_m z3|c@o2LlVE6ayEbN#h%9Dc5ElYr#`O7@K+eAB>Eaj?!TI*4A=e=Xf!2qe zH*PEy$Z3^v-13d7s_l+T|0C8M8%Hhak4#M)LJ#Qm3S2mJG3V5RCsY45o_#l|vayCI z(`@6jS-+;3d%v^iU|D}tbz{Nn&uLSS$_6h#u+e0<{hJW`T*IEwM6-=qb0crfe00z~ z!N%xz{F*hj<_DJSXQ=r5_Jz$sKAR6BjEbl2`E48>IxbZ{;AC=|a*o+wKwwdcTt!oZ zz|zkLgjrfN=CaRIP;hx^^MQp?(d#*9#aqS+bMvRktvfXPpNf?K`DgFX=l07@-*>K- gMLy;}E0?}z+=`7-<*v@_PJx2K)78&qol`;+0B7}u_5c6? literal 0 HcmV?d00001 diff --git a/doc/logos/brand_colors/colorswatch_F7931E_orange.png b/doc/logos/brand_colors/colorswatch_F7931E_orange.png new file mode 100644 index 0000000000000000000000000000000000000000..5b22b575ac4119d51ea2af6f1b1e2b5d18d2602a GIT binary patch literal 462 zcmeAS@N?(olHy`uVBq!ia0vp^{y;3v!3HF4wJ)UuDaPU;cPEB*=VV?2ITfi9o@u_m z3|c@o2LlVE6ay$)qY-(2&6a*JR*x37{rA@m@$3+C6Kel7Bvo!q7Jc3SECZP~x)-{?=Dao}d3=wUa@ufY$Pd$^Tj`_>y+gTlqr)z4*} HQ$iB}E6$DC literal 0 HcmV?d00001 diff --git a/doc/logos/scikit-learn-logo.svg b/doc/logos/scikit-learn-logo.svg index 523a656943772..362542602e0ae 100644 --- a/doc/logos/scikit-learn-logo.svg +++ b/doc/logos/scikit-learn-logo.svg @@ -1,110 +1 @@ - - - -image/svg+xml - - - - - - - - - - - - - - -scikit - - -machine learning in Python - - \ No newline at end of file +scikitmachine learning in Python From 7f9de440922f30d53daa10f605a43233af7b53b7 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Tue, 14 Jun 2022 05:13:58 -0400 Subject: [PATCH 080/251] MNT Removes parallel sphinx build by default on OSX (#23492) --- doc/Makefile | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/doc/Makefile b/doc/Makefile index 6146d11123017..4fdec654ca23f 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -2,10 +2,18 @@ # # You can set these variables from the command line. -SPHINXOPTS = -j auto +SPHINXOPTS = SPHINXBUILD ?= sphinx-build PAPER = BUILDDIR = _build + +# Disable multiple jobs on OSX +ifeq ($(shell uname), Darwin) + SPHINX_NUMJOBS = 1 +else + SPHINX_NUMJOBS = auto +endif + ifneq ($(EXAMPLES_PATTERN),) EXAMPLES_PATTERN_OPTS := -D sphinx_gallery_conf.filename_pattern="$(EXAMPLES_PATTERN)" endif @@ -14,7 +22,7 @@ endif PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -T -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS)\ - $(EXAMPLES_PATTERN_OPTS) . + -j$(SPHINX_NUMJOBS) $(EXAMPLES_PATTERN_OPTS) . .PHONY: help clean html dirhtml ziphtml pickle json latex latexpdf changes linkcheck doctest optipng From 858e640b4650d129df864009943e6c6c9f2d8d19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Tue, 14 Jun 2022 16:51:01 +0200 Subject: [PATCH 081/251] DOC fix links with broken anchor (#23611) --- doc/computing/parallelism.rst | 2 +- doc/developers/advanced_installation.rst | 8 ++++---- doc/developers/contributing.rst | 2 +- doc/developers/develop.rst | 3 ++- doc/modules/model_evaluation.rst | 10 ++++++---- doc/modules/tree.rst | 9 ++++----- doc/roadmap.rst | 4 ++-- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/doc/computing/parallelism.rst b/doc/computing/parallelism.rst index e3fe6ac386897..382fa8938b5ca 100644 --- a/doc/computing/parallelism.rst +++ b/doc/computing/parallelism.rst @@ -152,7 +152,7 @@ Note that: You will find additional details about joblib mitigation of oversubscription in `joblib documentation -`_. +`_. Configuration switches diff --git a/doc/developers/advanced_installation.rst b/doc/developers/advanced_installation.rst index 89dc6e5267ded..061034c72f925 100644 --- a/doc/developers/advanced_installation.rst +++ b/doc/developers/advanced_installation.rst @@ -177,11 +177,11 @@ each time you update the sources. Therefore it is recommended that you install in with the ``pip install --no-build-isolation --editable .`` command, which allows you to edit the code in-place. This builds the extension in place and creates a link to the development directory (see `the pip docs -`_). +`_). -This is fundamentally similar to using the command ``python setup.py develop`` -(see `the setuptool docs -`_). +As the doc aboves explains, this is fundamentally similar to using the command +``python setup.py develop``. (see `the setuptool docs +`_). It is however preferred to use pip. On Unix-like systems, you can equivalently type ``make in`` from the top-level diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index a7820b613252b..bf6ae9a4b2974 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -924,7 +924,7 @@ Monitoring performance ====================== *This section is heavily inspired from the* `pandas documentation -`_. +`_. When proposing changes to the existing code base, it's important to make sure that they don't introduce performance regressions. Scikit-learn uses diff --git a/doc/developers/develop.rst b/doc/developers/develop.rst index a60d60260b485..5d77dfebb070c 100644 --- a/doc/developers/develop.rst +++ b/doc/developers/develop.rst @@ -677,7 +677,8 @@ In addition, we add the following guidelines: find bugs in scikit-learn. * Use the `numpy docstring standard - `_ in all your docstrings. + `_ + in all your docstrings. A good example of code that we like can be found `here diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index d8fe7d87eec7a..ba248401e6062 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -2425,15 +2425,17 @@ Pinball loss ------------ The :func:`mean_pinball_loss` function is used to evaluate the predictive -performance of quantile regression models. The `pinball loss -`_ is equivalent -to :func:`mean_absolute_error` when the quantile parameter ``alpha`` is set to -0.5. +performance of `quantile regression +`_ models. .. math:: \text{pinball}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{\text{samples}}-1} \alpha \max(y_i - \hat{y}_i, 0) + (1 - \alpha) \max(\hat{y}_i - y_i, 0) +The pinball loss is equivalent to :func:`mean_absolute_error` when the quantile +parameter ``alpha`` is set to 0.5. + + Here is a small example of usage of the :func:`mean_pinball_loss` function:: >>> from sklearn.metrics import mean_pinball_loss diff --git a/doc/modules/tree.rst b/doc/modules/tree.rst index 80ed69604613b..28bcd07ab978d 100644 --- a/doc/modules/tree.rst +++ b/doc/modules/tree.rst @@ -423,16 +423,15 @@ C5.0 is Quinlan's latest version release under a proprietary license. It uses less memory and builds smaller rulesets than C4.5 while being more accurate. -CART_ (Classification and Regression Trees) is very similar to C4.5, but +CART (Classification and Regression Trees) is very similar to C4.5, but it differs in that it supports numerical target variables (regression) and does not compute rule sets. CART constructs binary trees using the feature and threshold that yield the largest information gain at each node. -scikit-learn uses an optimized version of the CART algorithm; however, the +scikit-learn uses an optimized version of the CART algorithm; however, the scikit-learn implementation does not support categorical variables for now. .. _ID3: https://en.wikipedia.org/wiki/ID3_algorithm -.. _CART: https://en.wikipedia.org/wiki/Predictive_analytics#Classification_and_regression_trees_.28CART.29 .. _tree_mathematical_formulation: @@ -515,7 +514,7 @@ Log Loss or Entropy: computed on a dataset :math:`D` is defined as follows: .. math:: - + \mathrm{LL}(D, T) = -\frac{1}{n} \sum_{(x_i, y_i) \in D} \sum_k I(y_i = k) \log(T_k(x_i)) where :math:`D` is a training dataset of :math:`n` pairs :math:`(x_i, y_i)`. @@ -529,7 +528,7 @@ Log Loss or Entropy: the number of training data points that reached each leaf: .. math:: - + \mathrm{LL}(D, T) = \sum_{m \in T} \frac{n_m}{n} H(Q_m) Regression criteria diff --git a/doc/roadmap.rst b/doc/roadmap.rst index df8811b968d7e..be3607cf542fb 100644 --- a/doc/roadmap.rst +++ b/doc/roadmap.rst @@ -257,8 +257,8 @@ Subpackage-specific goals * Cross-validation should be able to be replaced by OOB estimates whenever a cross-validation iterator is used. * Redundant computations in pipelines should be avoided (related to point - above) cf `daskml - `_ + above) cf `dask-ml + `_ :mod:`sklearn.neighbors` From 00b937acb5dfeab51bc2dd0774d6674487ad3bf5 Mon Sep 17 00:00:00 2001 From: Reshama Shaikh Date: Tue, 14 Jun 2022 10:53:23 -0400 Subject: [PATCH 082/251] DOC / MAINT Add "Logos & Branding" section to Community section of the main page (#23613) Co-authored-by: Thomas J. Fan --- doc/templates/index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/templates/index.html b/doc/templates/index.html index 923d0e940c191..d2bd879958a3b 100644 --- a/doc/templates/index.html +++ b/doc/templates/index.html @@ -205,6 +205,7 @@

Community

  • Subscribe to the mailing list
  • Gitter: gitter.im/scikit-learn
  • Blog: blog.scikit-learn.org
  • +
  • Logos & Branding: logos and branding
  • Calendar: calendar
  • Twitter: @scikit_learn
  • Twitter (commits): @sklearn_commits
  • From 240c4a972e0e61c3958a01f10775dfd1efd35338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Tue, 14 Jun 2022 17:16:51 +0200 Subject: [PATCH 083/251] MNT fix body too long in update_tracking_issue.py (#23615) --- maint_tools/update_tracking_issue.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/maint_tools/update_tracking_issue.py b/maint_tools/update_tracking_issue.py index 9ab605d74e627..010689231d7d2 100644 --- a/maint_tools/update_tracking_issue.py +++ b/maint_tools/update_tracking_issue.py @@ -74,6 +74,15 @@ def create_or_update_issue(body=""): link = f"[{args.ci_name}]({args.link_to_ci_run})" issue = get_issue() + max_body_length = 60_000 + original_body_length = len(body) + # Avoid "body is too long (maximum is 65536 characters)" error from github REST API + if original_body_length > max_body_length: + body = ( + f"{body[:max_body_length]}\n...\n" + f"Body was too long ({original_body_length} characters) and was shortened" + ) + if issue is None: # Create new issue header = f"**CI failed on {link}**" From 228e429a7ab07a46b1d978d7f1177dcfa6b35eac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 15 Jun 2022 10:14:22 +0200 Subject: [PATCH 084/251] Configure sphinx linkcheck to be more usable (#23577) --- doc/conf.py | 60 +++++++++++++++++++++++++++ doc/sphinxext/allow_nan_estimators.py | 2 +- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/doc/conf.py b/doc/conf.py index 7c309357d97fc..430e1714ec6cf 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -525,9 +525,18 @@ def generate_min_dependency_substitutions(app): issues_github_path = "scikit-learn/scikit-learn" +def disable_plot_gallery_for_linkcheck(app): + if app.builder.name == "linkcheck": + sphinx_gallery_conf["plot_gallery"] = "False" + + def setup(app): + # do not run the examples when using linkcheck by using a small priority + # (default priority is 500 and sphinx-gallery using builder-inited event too) + app.connect("builder-inited", disable_plot_gallery_for_linkcheck, priority=50) app.connect("builder-inited", generate_min_dependency_table) app.connect("builder-inited", generate_min_dependency_substitutions) + # to hide/show the prompt in code examples: app.connect("build-finished", make_carousel_thumbs) app.connect("build-finished", filter_search_index) @@ -566,3 +575,54 @@ def setup(app): ogp_image = "https://scikit-learn.org/stable/_static/scikit-learn-logo-small.png" ogp_use_first_image = True ogp_site_name = "scikit-learn" + +# Config for linkcheck that checks the documentation for broken links + +# ignore all links in 'whats_new' to avoid doing many github requests and +# hitting the github rate threshold that makes linkcheck take a lot of time +linkcheck_exclude_documents = [r"whats_new/.*"] + +# default timeout to make some sites links fail faster +linkcheck_timeout = 10 + +# Allow redirects from doi.org +linkcheck_allowed_redirects = {r"https://doi.org/.+": r".*"} +linkcheck_ignore = [ + # ignore links to local html files e.g. in image directive :target: field + r"^..?/", + # ignore links to specific pdf pages because linkcheck does not handle them + # ('utf-8' codec can't decode byte error) + r"http://www.utstat.toronto.edu/~rsalakhu/sta4273/notes/Lecture2.pdf#page=.*", + "https://www.fordfoundation.org/media/2976/" + "roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf#page=.*", + # Broken links from testimonials + "http://www.bestofmedia.com", + "http://www.data-publica.com/", + "https://livelovely.com", + "https://www.mars.com/global", + "https://www.yhat.com", + # Ignore some dynamically created anchors. See + # https://github.com/sphinx-doc/sphinx/issues/9016 for more details about + # the github example + r"https://github.com/conda-forge/miniforge#miniforge", + r"https://stackoverflow.com/questions/5836335/" + "consistently-create-same-random-numpy-array/5837352#comment6712034_5837352", +] + +# Use a browser-like user agent to avoid some "403 Client Error: Forbidden for +# url" errors. This is taken from the variable navigator.userAgent inside a +# browser console. +user_agent = ( + "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0" +) + +# Use Github token from environment variable to avoid Github rate limits when +# checking Github links +github_token = os.getenv("GITHUB_TOKEN") + +if github_token is None: + linkcheck_request_headers = {} +else: + linkcheck_request_headers = { + "https://github.com/": {"Authorization": f"token {github_token}"}, + } diff --git a/doc/sphinxext/allow_nan_estimators.py b/doc/sphinxext/allow_nan_estimators.py index 901ebe12a1f08..89af4bbee6670 100755 --- a/doc/sphinxext/allow_nan_estimators.py +++ b/doc/sphinxext/allow_nan_estimators.py @@ -23,7 +23,7 @@ def make_paragraph_for_estimator_type(estimator_type): if est._get_tags().get("allow_nan"): module_name = ".".join(est_class.__module__.split(".")[:2]) class_title = f"{est_class.__name__}" - class_url = f"generated/{module_name}.{class_title}.html" + class_url = f"./generated/{module_name}.{class_title}.html" item = nodes.list_item() para = nodes.paragraph() para += nodes.reference( From 0b1431dc03e9c78215bcb82d7fb3da259c87c900 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 15 Jun 2022 19:19:43 +1000 Subject: [PATCH 085/251] DOC Fix typo in Clustering page (#23625) --- doc/modules/clustering.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/clustering.rst b/doc/modules/clustering.rst index 881f884453fc1..13b2004a41223 100644 --- a/doc/modules/clustering.rst +++ b/doc/modules/clustering.rst @@ -141,7 +141,7 @@ K-means The :class:`KMeans` algorithm clusters data by trying to separate samples in n groups of equal variance, minimizing a criterion known as the *inertia* or within-cluster sum-of-squares (see below). This algorithm requires the number -of clusters to be specified. It scales well to large number of samples and has +of clusters to be specified. It scales well to large numbers of samples and has been used across a large range of application areas in many different fields. The k-means algorithm divides a set of :math:`N` samples :math:`X` into From 9f6f4d4bd0347617b9f151392c3bd594117d6c5b Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 15 Jun 2022 19:20:13 +1000 Subject: [PATCH 086/251] DOC Fix typo in manifold page (#23623) --- doc/modules/manifold.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/manifold.rst b/doc/modules/manifold.rst index cb616267f2d06..22987eb61e674 100644 --- a/doc/modules/manifold.rst +++ b/doc/modules/manifold.rst @@ -427,7 +427,7 @@ distances in a geometric spaces. The data can be ratings of similarity between objects, interaction frequencies of molecules, or trade indices between countries. -There exists two types of MDS algorithm: metric and non metric. In the +There exists two types of MDS algorithm: metric and non metric. In scikit-learn, the class :class:`MDS` implements both. In Metric MDS, the input similarity matrix arises from a metric (and thus respects the triangular inequality), the distances between output two points are then set to be as From 3d61ffc455b7879fa46046c918e57f39b969250e Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 15 Jun 2022 19:21:20 +1000 Subject: [PATCH 087/251] DOC Fix typos in Gaussian mixture page (#23622) --- doc/modules/mixture.rst | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/doc/modules/mixture.rst b/doc/modules/mixture.rst index 2037f15fe3ee8..e1918d305bf3c 100644 --- a/doc/modules/mixture.rst +++ b/doc/modules/mixture.rst @@ -43,7 +43,7 @@ confidence ellipsoids for multivariate models, and compute the Bayesian Information Criterion to assess the number of clusters in the data. A :meth:`GaussianMixture.fit` method is provided that learns a Gaussian Mixture Model from train data. Given test data, it can assign to each -sample the Gaussian it mostly probably belong to using +sample the Gaussian it mostly probably belongs to using the :meth:`GaussianMixture.predict` method. .. @@ -120,7 +120,7 @@ Estimation algorithm Expectation-maximization ----------------------------------------------- The main difficulty in learning Gaussian mixture models from unlabeled -data is that it is one usually doesn't know which points came from +data is that one usually doesn't know which points came from which latent component (if one has access to this information it gets very easy to fit a separate Gaussian distribution to each set of points). `Expectation-maximization @@ -179,7 +179,7 @@ Variational Bayesian Gaussian Mixture The :class:`BayesianGaussianMixture` object implements a variant of the Gaussian mixture model with variational inference algorithms. The API is -similar as the one defined by :class:`GaussianMixture`. +similar to the one defined by :class:`GaussianMixture`. .. _variational_inference: @@ -199,13 +199,13 @@ expectation-maximization solutions but introduces some subtle biases to the model. Inference is often notably slower, but not usually as much so as to render usage unpractical. -Due to its Bayesian nature, the variational algorithm needs more hyper- -parameters than expectation-maximization, the most important of these being the +Due to its Bayesian nature, the variational algorithm needs more hyperparameters +than expectation-maximization, the most important of these being the concentration parameter ``weight_concentration_prior``. Specifying a low value -for the concentration prior will make the model put most of the weight on few -components set the remaining components weights very close to zero. High values -of the concentration prior will allow a larger number of components to be active -in the mixture. +for the concentration prior will make the model put most of the weight on a few +components and set the remaining components' weights very close to zero. High +values of the concentration prior will allow a larger number of components to +be active in the mixture. The parameters implementation of the :class:`BayesianGaussianMixture` class proposes two types of prior for the weights distribution: a finite mixture model @@ -313,7 +313,7 @@ Pros Cons ..... -:Speed: the extra parametrization necessary for variational inference make +:Speed: the extra parametrization necessary for variational inference makes inference slower, although not by much. :Hyperparameters: this algorithm needs an extra hyperparameter @@ -349,7 +349,7 @@ group of the mixture. At the end, to represent the infinite mixture, we associate the last remaining piece of the stick to the proportion of points that don't fall into all the other groups. The length of each piece is a random variable with probability proportional to the concentration parameter. Smaller -value of the concentration will divide the unit-length into larger pieces of +values of the concentration will divide the unit-length into larger pieces of the stick (defining more concentrated distribution). Larger concentration values will create smaller pieces of the stick (increasing the number of components with non zero weights). From 12fda18b9cb28b4a812386c77716e9d7d1651789 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Dupr=C3=A9=20la=20Tour?= Date: Wed, 15 Jun 2022 02:44:46 -0700 Subject: [PATCH 088/251] FIX logistic regression with newton_cg solver, a single feature, and an intercept (#23608) --- doc/whats_new/v1.2.rst | 4 ++++ sklearn/linear_model/_linear_loss.py | 2 ++ sklearn/linear_model/tests/test_logistic.py | 10 ++++++++++ 3 files changed, 16 insertions(+) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index aba8c23017ffb..842991051aaaa 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -75,6 +75,10 @@ Changelog - |Fix| Use dtype-aware tolerances for the validation of gram matrices (passed by users or precomputed). :pr:`22059` by :user:`Malte S. Kurz `. +- |Fix| Fixed an error in :class:`linear_model.LogisticRegression` with + `solver="newton-cg"`, `fit_intercept=True`, and a single feature. :pr:`23608` + by `Tom Dupre la Tour`_. + :mod:`sklearn.metrics` ...................... diff --git a/sklearn/linear_model/_linear_loss.py b/sklearn/linear_model/_linear_loss.py index 64a99325dcd7a..7623a7fb20838 100644 --- a/sklearn/linear_model/_linear_loss.py +++ b/sklearn/linear_model/_linear_loss.py @@ -327,6 +327,8 @@ def gradient_hessian_product( # Calculate the double derivative with respect to intercept. # Note: In case hX is sparse, hX.sum is a matrix object. hX_sum = np.squeeze(np.asarray(hX.sum(axis=0))) + # prevent squeezing to zero-dim array if n_features == 1 + hX_sum = np.atleast_1d(hX_sum) # With intercept included and l2_reg_strength = 0, hessp returns # res = (X, 1)' @ diag(h) @ (X, 1) @ s diff --git a/sklearn/linear_model/tests/test_logistic.py b/sklearn/linear_model/tests/test_logistic.py index 5bb2b83094290..4c8c9daf78731 100644 --- a/sklearn/linear_model/tests/test_logistic.py +++ b/sklearn/linear_model/tests/test_logistic.py @@ -2071,3 +2071,13 @@ def test_large_sparse_matrix(solver): LogisticRegression(solver=solver).fit(X, y) else: LogisticRegression(solver=solver).fit(X, y) + + +def test_single_feature_newton_cg(): + # Test that Newton-CG works with a single feature and intercept. + # Non-regression test for issue #23605. + + X = np.array([[0.5, 0.65, 1.1, 1.25, 0.8, 0.54, 0.95, 0.7]]).T + y = np.array([1, 1, 0, 0, 1, 1, 0, 1]) + assert X.shape[1] == 1 + LogisticRegression(solver="newton-cg", fit_intercept=True).fit(X, y) From c22d5b99d834d7d6542af38189d3a77286f6be97 Mon Sep 17 00:00:00 2001 From: Aniket Shirsat Date: Thu, 16 Jun 2022 11:47:44 +0530 Subject: [PATCH 089/251] DOC fix link for classification metric hinge loss (#23638) --- sklearn/metrics/_classification.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index 286a2cc22445d..7af822ec7c74d 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -2511,8 +2511,7 @@ def hinge_loss(y_true, pred_decision, *, labels=None, sample_weight=None): .. [3] `L1 AND L2 Regularization for Multiclass Hinge Loss Models by Robert C. Moore, John DeNero - `_. + `_. Examples -------- From 36a5246efff4828fb598f7d79f3bb3548e37325b Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 16 Jun 2022 08:41:19 +0200 Subject: [PATCH 090/251] MAINT remove deprecated sym_pos argument in scipy.linalg.solve (#23617) --- sklearn/decomposition/_kernel_pca.py | 2 +- sklearn/linear_model/_ridge.py | 8 ++++---- sklearn/manifold/_locally_linear.py | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/decomposition/_kernel_pca.py b/sklearn/decomposition/_kernel_pca.py index 4e3ad720ae126..9f8f551b6628a 100644 --- a/sklearn/decomposition/_kernel_pca.py +++ b/sklearn/decomposition/_kernel_pca.py @@ -396,7 +396,7 @@ def _fit_inverse_transform(self, X_transformed, X): n_samples = X_transformed.shape[0] K = self._get_kernel(X_transformed) K.flat[:: n_samples + 1] += self.alpha - self.dual_coef_ = linalg.solve(K, X, sym_pos=True, overwrite_a=True) + self.dual_coef_ = linalg.solve(K, X, assume_a="pos", overwrite_a=True) self.X_transformed_fit_ = X_transformed def fit(self, X, y=None): diff --git a/sklearn/linear_model/_ridge.py b/sklearn/linear_model/_ridge.py index dee703b73c059..a3fc5cdc82baf 100644 --- a/sklearn/linear_model/_ridge.py +++ b/sklearn/linear_model/_ridge.py @@ -209,12 +209,12 @@ def _solve_cholesky(X, y, alpha): if one_alpha: A.flat[:: n_features + 1] += alpha[0] - return linalg.solve(A, Xy, sym_pos=True, overwrite_a=True).T + return linalg.solve(A, Xy, assume_a="pos", overwrite_a=True).T else: coefs = np.empty([n_targets, n_features], dtype=X.dtype) for coef, target, current_alpha in zip(coefs, Xy.T, alpha): A.flat[:: n_features + 1] += current_alpha - coef[:] = linalg.solve(A, target, sym_pos=True, overwrite_a=False).ravel() + coef[:] = linalg.solve(A, target, assume_a="pos", overwrite_a=False).ravel() A.flat[:: n_features + 1] -= current_alpha return coefs @@ -246,7 +246,7 @@ def _solve_cholesky_kernel(K, y, alpha, sample_weight=None, copy=False): # Note: we must use overwrite_a=False in order to be able to # use the fall-back solution below in case a LinAlgError # is raised - dual_coef = linalg.solve(K, y, sym_pos=True, overwrite_a=False) + dual_coef = linalg.solve(K, y, assume_a="pos", overwrite_a=False) except np.linalg.LinAlgError: warnings.warn( "Singular matrix in solving dual problem. Using " @@ -270,7 +270,7 @@ def _solve_cholesky_kernel(K, y, alpha, sample_weight=None, copy=False): K.flat[:: n_samples + 1] += current_alpha dual_coef[:] = linalg.solve( - K, target, sym_pos=True, overwrite_a=False + K, target, assume_a="pos", overwrite_a=False ).ravel() K.flat[:: n_samples + 1] -= current_alpha diff --git a/sklearn/manifold/_locally_linear.py b/sklearn/manifold/_locally_linear.py index a9c6ec350b912..f5f64dad2c1a8 100644 --- a/sklearn/manifold/_locally_linear.py +++ b/sklearn/manifold/_locally_linear.py @@ -72,7 +72,7 @@ def barycenter_weights(X, Y, indices, reg=1e-3): else: R = reg G.flat[:: n_neighbors + 1] += R - w = solve(G, v, sym_pos=True) + w = solve(G, v, assume_a="pos") B[i, :] = w / np.sum(w) return B From c1961ed587c16507333316a5168f1554f18dd705 Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Thu, 16 Jun 2022 06:40:35 -0400 Subject: [PATCH 091/251] MNT Removed object dtype validation in `check_array` for scipy nightly (#23641) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Olivier Grisel Co-authored-by: Loïc Estève --- sklearn/utils/tests/test_validation.py | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/sklearn/utils/tests/test_validation.py b/sklearn/utils/tests/test_validation.py index e33d14fa3b07e..478617bcc4031 100644 --- a/sklearn/utils/tests/test_validation.py +++ b/sklearn/utils/tests/test_validation.py @@ -358,21 +358,13 @@ def test_check_array(): Xs = [X_csc, X_coo, X_dok, X_int, X_float] accept_sparses = [["csr", "coo"], ["coo", "dok"]] - for X, dtype, accept_sparse, copy in product(Xs, dtypes, accept_sparses, copys): - with warnings.catch_warnings(record=True) as w: - X_checked = check_array( - X, dtype=dtype, accept_sparse=accept_sparse, copy=copy - ) - if (dtype is object or sp.isspmatrix_dok(X)) and len(w): - # XXX unreached code as of v0.22 - message = str(w[0].message) - messages = [ - "object dtype is not supported by sparse matrices", - "Can't check dok sparse matrix for nan or inf.", - ] - assert message in messages - else: - assert len(w) == 0 + # scipy sparse matrices do not support the object dtype so + # this dtype is skipped in this loop + non_object_dtypes = [dt for dt in dtypes if dt is not object] + for X, dtype, accept_sparse, copy in product( + Xs, non_object_dtypes, accept_sparses, copys + ): + X_checked = check_array(X, dtype=dtype, accept_sparse=accept_sparse, copy=copy) if dtype is not None: assert X_checked.dtype == dtype else: From fa2948ad3f426132bf5c1307f9504378685a3109 Mon Sep 17 00:00:00 2001 From: Meekail Zain <34613774+Micky774@users.noreply.github.com> Date: Thu, 16 Jun 2022 09:55:52 -0400 Subject: [PATCH 092/251] MNT Altered test match message to account for new scipy error message (#23642) Co-authored-by: Olivier Grisel Co-authored-by: Guillaume Lemaitre --- sklearn/tests/test_isotonic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/tests/test_isotonic.py b/sklearn/tests/test_isotonic.py index 5600cf8706e75..0b646439a3b41 100644 --- a/sklearn/tests/test_isotonic.py +++ b/sklearn/tests/test_isotonic.py @@ -336,7 +336,7 @@ def test_isotonic_regression_oob_raise(): ir.fit(x, y) # Check that an exception is thrown - msg = "A value in x_new is below the interpolation range" + msg = "in x_new is below the interpolation range" with pytest.raises(ValueError, match=msg): ir.predict([min(x) - 10, max(x) + 10]) From 81b997995fdf45827489a9108651b097098bccac Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Thu, 16 Jun 2022 22:58:29 +0530 Subject: [PATCH 093/251] DOC fix link to Stochastic Variational Inference article (#23656) --- doc/modules/decomposition.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst index 4f6a889473f13..2fb24dfd957f4 100644 --- a/doc/modules/decomposition.rst +++ b/doc/modules/decomposition.rst @@ -1077,7 +1077,7 @@ when data can be fetched sequentially. M. Hoffman, D. Blei, F. Bach, 2010 * `"Stochastic Variational Inference" - `_ + `_ M. Hoffman, D. Blei, C. Wang, J. Paisley, 2013 * `"The varimax criterion for analytic rotation in factor analysis" From 66570d9e6a2ff4047dee10cb17858af07de1fd59 Mon Sep 17 00:00:00 2001 From: puhuk Date: Fri, 17 Jun 2022 02:31:12 +0900 Subject: [PATCH 094/251] DOC fix link to "Matching pursuits with time-frequency dictionaries" article (#23652) --- sklearn/linear_model/_omp.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/linear_model/_omp.py b/sklearn/linear_model/_omp.py index b86c35c41de85..c1e3762343628 100644 --- a/sklearn/linear_model/_omp.py +++ b/sklearn/linear_model/_omp.py @@ -361,7 +361,7 @@ def orthogonal_mp( Orthogonal matching pursuit was introduced in S. Mallat, Z. Zhang, Matching pursuits with time-frequency dictionaries, IEEE Transactions on Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415. - (http://blanche.polytechnique.fr/~mallat/papiers/MallatPursuit93.pdf) + (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf) This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad, M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal @@ -515,7 +515,7 @@ def orthogonal_mp_gram( Orthogonal matching pursuit was introduced in G. Mallat, Z. Zhang, Matching pursuits with time-frequency dictionaries, IEEE Transactions on Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415. - (http://blanche.polytechnique.fr/~mallat/papiers/MallatPursuit93.pdf) + (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf) This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad, M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal @@ -670,7 +670,7 @@ class OrthogonalMatchingPursuit(MultiOutputMixin, RegressorMixin, LinearModel): Orthogonal matching pursuit was introduced in G. Mallat, Z. Zhang, Matching pursuits with time-frequency dictionaries, IEEE Transactions on Signal Processing, Vol. 41, No. 12. (December 1993), pp. 3397-3415. - (http://blanche.polytechnique.fr/~mallat/papiers/MallatPursuit93.pdf) + (https://www.di.ens.fr/~mallat/papiers/MallatPursuit93.pdf) This implementation is based on Rubinstein, R., Zibulevsky, M. and Elad, M., Efficient Implementation of the K-SVD Algorithm using Batch Orthogonal From 50732cf88e8279fc958c2990ee7e0f0b42c6fe6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 16 Jun 2022 20:22:06 +0200 Subject: [PATCH 095/251] MNT use warnings rather than np.warnings (#23654) --- sklearn/preprocessing/_data.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/preprocessing/_data.py b/sklearn/preprocessing/_data.py index f0088aab521ad..8c266e3f12e55 100644 --- a/sklearn/preprocessing/_data.py +++ b/sklearn/preprocessing/_data.py @@ -3293,8 +3293,8 @@ def _check_input( reset=in_fit, ) - with np.warnings.catch_warnings(): - np.warnings.filterwarnings("ignore", r"All-NaN (slice|axis) encountered") + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", r"All-NaN (slice|axis) encountered") if check_positive and self.method == "box-cox" and np.nanmin(X) <= 0: raise ValueError( "The Box-Cox transformation can only be " From da009b8e68a39e61b1cd3968f6784bde8b66d2c6 Mon Sep 17 00:00:00 2001 From: Maxwell Date: Fri, 17 Jun 2022 03:11:37 +0800 Subject: [PATCH 096/251] DOC Mention factor x2 between MAE and mean pinball loss (#23651) --- doc/modules/model_evaluation.rst | 2 +- sklearn/metrics/tests/test_regression.py | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index ba248401e6062..60ee6989046ef 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -2432,7 +2432,7 @@ performance of `quantile regression \text{pinball}(y, \hat{y}) = \frac{1}{n_{\text{samples}}} \sum_{i=0}^{n_{\text{samples}}-1} \alpha \max(y_i - \hat{y}_i, 0) + (1 - \alpha) \max(\hat{y}_i - y_i, 0) -The pinball loss is equivalent to :func:`mean_absolute_error` when the quantile +The value of pinball loss is equivalent to half of :func:`mean_absolute_error` when the quantile parameter ``alpha`` is set to 0.5. diff --git a/sklearn/metrics/tests/test_regression.py b/sklearn/metrics/tests/test_regression.py index 090bc64bf0fe4..b51012d6c1f1b 100644 --- a/sklearn/metrics/tests/test_regression.py +++ b/sklearn/metrics/tests/test_regression.py @@ -613,3 +613,15 @@ def test_dummy_quantile_parameter_tuning(): ).fit(X, y) assert grid_search.best_params_["quantile"] == pytest.approx(alpha) + + +def test_pinball_loss_relation_with_mae(): + # Test that mean_pinball loss with alpha=0.5 if half of mean absolute error + rng = np.random.RandomState(714) + n = 100 + y_true = rng.normal(size=n) + y_pred = y_true.copy() + rng.uniform(n) + assert ( + mean_absolute_error(y_true, y_pred) + == mean_pinball_loss(y_true, y_pred, alpha=0.5) * 2 + ) From 5877b2f7a702a156f9cf706bbb5c1a3501048625 Mon Sep 17 00:00:00 2001 From: Jordan Fleming <89767349+Jofleming@users.noreply.github.com> Date: Thu, 16 Jun 2022 23:47:22 -0700 Subject: [PATCH 097/251] DOC fix link to joblib.Memory (#23664) --- doc/modules/compose.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/compose.rst b/doc/modules/compose.rst index 2a2b007783f27..c797eb288c6e5 100644 --- a/doc/modules/compose.rst +++ b/doc/modules/compose.rst @@ -202,7 +202,7 @@ each configuration. The parameter ``memory`` is needed in order to cache the transformers. ``memory`` can be either a string containing the directory where to cache the -transformers or a `joblib.Memory `_ +transformers or a `joblib.Memory `_ object:: >>> from tempfile import mkdtemp From 0f57226d5203ede192dcae5306bbc7edbb8bcb32 Mon Sep 17 00:00:00 2001 From: Eden Brekke <85004124+eden-brekke@users.noreply.github.com> Date: Fri, 17 Jun 2022 00:33:18 -0700 Subject: [PATCH 098/251] DOC fix link to RANSAC article (#23665) --- sklearn/linear_model/_ransac.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/linear_model/_ransac.py b/sklearn/linear_model/_ransac.py index 8d20005430769..5ce0c7b1735df 100644 --- a/sklearn/linear_model/_ransac.py +++ b/sklearn/linear_model/_ransac.py @@ -228,7 +228,7 @@ class RANSACRegressor( References ---------- .. [1] https://en.wikipedia.org/wiki/RANSAC - .. [2] https://www.sri.com/sites/default/files/publications/ransac-publication.pdf + .. [2] https://www.sri.com/wp-content/uploads/2021/12/ransac-publication.pdf .. [3] http://www.bmva.org/bmvc/2009/Papers/Paper355/Paper355.pdf Examples From abd62569507780b6f37235713b58250be9860a8d Mon Sep 17 00:00:00 2001 From: Dwight Lindquist <83228157+dlindqu3@users.noreply.github.com> Date: Fri, 17 Jun 2022 04:00:35 -0400 Subject: [PATCH 099/251] DOX fix link for Cambridge Olivetti faces dataset (#23662) --- sklearn/datasets/descr/olivetti_faces.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/datasets/descr/olivetti_faces.rst b/sklearn/datasets/descr/olivetti_faces.rst index c6193d5056538..4feadcc4b2fb1 100644 --- a/sklearn/datasets/descr/olivetti_faces.rst +++ b/sklearn/datasets/descr/olivetti_faces.rst @@ -9,7 +9,7 @@ April 1994 at AT&T Laboratories Cambridge. The fetching / caching function that downloads the data archive from AT&T. -.. _This dataset contains a set of face images: http://www.cl.cam.ac.uk/research/dtg/attarchive/facedatabase.html +.. _This dataset contains a set of face images: https://cam-orl.co.uk/facedatabase.html As described on the original website: From cfef596decfd95f2d89d6fe785fecb5e6c49c49a Mon Sep 17 00:00:00 2001 From: Rachel Freeland Date: Fri, 17 Jun 2022 03:02:08 -0500 Subject: [PATCH 100/251] DOC fix broken link to Brown Throated Sloth article (#23666) --- examples/neighbors/plot_species_kde.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/neighbors/plot_species_kde.py b/examples/neighbors/plot_species_kde.py index c409d354ec986..35ea40158a45c 100644 --- a/examples/neighbors/plot_species_kde.py +++ b/examples/neighbors/plot_species_kde.py @@ -19,7 +19,7 @@ The two species are: - `"Bradypus variegatus" - `_ , + `_ , the Brown-throated Sloth. - `"Microryzomys minutus" From afae9c8be9742b77ef2165289b050b7fff8c22a6 Mon Sep 17 00:00:00 2001 From: Benjamin Carter <97478013+MotoBenny@users.noreply.github.com> Date: Fri, 17 Jun 2022 01:34:40 -0700 Subject: [PATCH 101/251] DOC fix link to Scipy development workflow (#23661) --- doc/developers/contributing.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index bf6ae9a4b2974..c6af69cc703ce 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -528,7 +528,7 @@ profiling and Cython optimizations. For two very well documented and more detailed guides on development workflow, please pay a visit to the `Scipy Development Workflow - `_ - + `_ - and the `Astropy Workflow for Developers `_ sections. From 01578443987867d89f2f036fca9c9442b536bfc6 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Fri, 17 Jun 2022 22:34:30 +0530 Subject: [PATCH 102/251] Fix link to author's website (#23671) Fixed link to Jake Vanderplas website. --- doc/presentations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/presentations.rst b/doc/presentations.rst index 8a74cd6331bf6..5a0f968426851 100644 --- a/doc/presentations.rst +++ b/doc/presentations.rst @@ -74,5 +74,5 @@ Videos .. _Gael Varoquaux: http://gael-varoquaux.info -.. _Jake Vanderplas: https://staff.washington.edu/jakevdp +.. _Jake Vanderplas: http://www.vanderplas.com .. _Olivier Grisel: https://twitter.com/ogrisel From 553d00624901493a29efe377cc06fe7fb249832a Mon Sep 17 00:00:00 2001 From: Aravindh R <61419792+Aravindh-Raju@users.noreply.github.com> Date: Fri, 17 Jun 2022 22:35:52 +0530 Subject: [PATCH 103/251] Fix broken link for random projections (#23673) * Doc fix link for random projections * Doc fix link for random projections --- sklearn/random_projection.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/random_projection.py b/sklearn/random_projection.py index 3b4a5e2236db5..568a50de695d1 100644 --- a/sklearn/random_projection.py +++ b/sklearn/random_projection.py @@ -250,7 +250,7 @@ def _sparse_random_matrix(n_components, n_features, density="auto", random_state https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf .. [2] D. Achlioptas, 2001, "Database-friendly random projections", - http://www.cs.ucsc.edu/~optas/papers/jl.pdf + https://cgi.di.uoa.gr/~optas/papers/jl.pdf """ _check_input_size(n_components, n_features) @@ -710,7 +710,7 @@ class SparseRandomProjection(BaseRandomProjection): https://web.stanford.edu/~hastie/Papers/Ping/KDD06_rp.pdf .. [2] D. Achlioptas, 2001, "Database-friendly random projections", - https://users.soe.ucsc.edu/~optas/papers/jl.pdf + https://cgi.di.uoa.gr/~optas/papers/jl.pdf Examples -------- From 78edf5494abbd7ec3f4f10d2104f512c70507806 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Mon, 20 Jun 2022 14:17:53 +0530 Subject: [PATCH 104/251] DOC fix link to Fonds de la Recherche Scientifique (#23678) --- doc/about.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/about.rst b/doc/about.rst index fe10db4939f16..5bb72531ad42b 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -574,7 +574,7 @@ The 2013 International Paris Sprint was made possible thanks to the support of `Télécom Paristech `_, `tinyclues `_, the `French Python Association `_ and the `Fonds de la Recherche Scientifique -`_. +`_. .............. From 157caff9ee77d89d3cb16d273f66b6db3b11440f Mon Sep 17 00:00:00 2001 From: Nikita Jare Date: Mon, 20 Jun 2022 14:28:28 +0530 Subject: [PATCH 105/251] DOC fix link to SVD based initialisation article (#23687) --- doc/modules/decomposition.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst index 2fb24dfd957f4..4dacee5bcc478 100644 --- a/doc/modules/decomposition.rst +++ b/doc/modules/decomposition.rst @@ -956,7 +956,7 @@ is not readily available from the start, or when the data does not fit into memo .. [4] `"SVD based initialization: A head start for nonnegative matrix factorization" - `_ + `_ C. Boutsidis, E. Gallopoulos, 2008 .. [5] `"Fast local algorithms for large scale nonnegative matrix and tensor From 723ae66e93901e245282640c3d9e52f18e660eee Mon Sep 17 00:00:00 2001 From: priyam kakati Date: Mon, 20 Jun 2022 14:36:27 +0530 Subject: [PATCH 106/251] DOC fix link to Imageio documentation (#23689) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/datasets/loading_other_datasets.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/datasets/loading_other_datasets.rst b/doc/datasets/loading_other_datasets.rst index b77bbd120aeb2..832f1b4810a4f 100644 --- a/doc/datasets/loading_other_datasets.rst +++ b/doc/datasets/loading_other_datasets.rst @@ -257,7 +257,7 @@ For some miscellaneous data such as images, videos, and audio, you may wish to refer to: * `skimage.io `_ or - `Imageio `_ + `Imageio `_ for loading images and videos into numpy arrays * `scipy.io.wavfile.read `_ From 8a0c7f29014cb8dc3d511c6906b0153676a17650 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Mon, 20 Jun 2022 14:38:01 +0530 Subject: [PATCH 107/251] DOC fix link to Statistical Learning with Sparsity book (#23693) --- sklearn/metrics/_regression.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/metrics/_regression.py b/sklearn/metrics/_regression.py index 57986692fb896..9d4315470bc97 100644 --- a/sklearn/metrics/_regression.py +++ b/sklearn/metrics/_regression.py @@ -1223,7 +1223,7 @@ def d2_tweedie_score(y_true, y_pred, *, sample_weight=None, power=0): ---------- .. [1] Eq. (3.11) of Hastie, Trevor J., Robert Tibshirani and Martin J. Wainwright. "Statistical Learning with Sparsity: The Lasso and - Generalizations." (2015). https://trevorhastie.github.io + Generalizations." (2015). https://hastie.su.domains/StatLearnSparsity/ Examples -------- @@ -1326,7 +1326,7 @@ def d2_pinball_score( `_ .. [2] Eq. (3.11) of Hastie, Trevor J., Robert Tibshirani and Martin J. Wainwright. "Statistical Learning with Sparsity: The Lasso and - Generalizations." (2015). https://trevorhastie.github.io + Generalizations." (2015). https://hastie.su.domains/StatLearnSparsity/ Examples -------- @@ -1464,7 +1464,7 @@ def d2_absolute_error_score( ---------- .. [1] Eq. (3.11) of Hastie, Trevor J., Robert Tibshirani and Martin J. Wainwright. "Statistical Learning with Sparsity: The Lasso and - Generalizations." (2015). https://trevorhastie.github.io + Generalizations." (2015). https://hastie.su.domains/StatLearnSparsity/ Examples -------- From 8d936e24085ae09002faa9177e09fe3ec62b5e25 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Mon, 20 Jun 2022 14:46:27 +0530 Subject: [PATCH 108/251] DOC update link to reference article (#23680) Update reference link to "A survey of Partial Least Squares (PLS) methods, with emphasis on the two-block case" by JA Wegelin --- doc/modules/cross_decomposition.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/cross_decomposition.rst b/doc/modules/cross_decomposition.rst index 5c9aed46e66ea..caaec18c6c6d2 100644 --- a/doc/modules/cross_decomposition.rst +++ b/doc/modules/cross_decomposition.rst @@ -185,7 +185,7 @@ targets is greater than the number of samples. .. [1] `A survey of Partial Least Squares (PLS) methods, with emphasis on the two-block case - `_ + `_ JA Wegelin .. topic:: Examples: From a714b5163460ac2ef67c7806031539dda7b7ddcc Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Mon, 20 Jun 2022 11:27:58 +0200 Subject: [PATCH 109/251] MAINT update test since SettingWithCopyWarning location change (#23658) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- sklearn/utils/tests/test_utils.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sklearn/utils/tests/test_utils.py b/sklearn/utils/tests/test_utils.py index 82be82afa5eed..4fc483e5a85b2 100644 --- a/sklearn/utils/tests/test_utils.py +++ b/sklearn/utils/tests/test_utils.py @@ -472,8 +472,13 @@ def test_safe_indexing_pandas_no_settingwithcopy_warning(): X = pd.DataFrame({"a": [1, 2, 3], "b": [3, 4, 5]}) subset = _safe_indexing(X, [0, 1], axis=0) + if hasattr(pd.errors, "SettingWithCopyWarning"): + SettingWithCopyWarning = pd.errors.SettingWithCopyWarning + else: + # backward compatibility for pandas < 1.5 + SettingWithCopyWarning = pd.core.common.SettingWithCopyWarning with warnings.catch_warnings(): - warnings.simplefilter("error", pd.core.common.SettingWithCopyWarning) + warnings.simplefilter("error", SettingWithCopyWarning) subset.iloc[0, 0] = 10 # The original dataframe is unaffected by the assignment on the subset: assert X.iloc[0, 0] == 1 From e7f9c81c8fc283f6f00f935d2018a4b814d5923b Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Mon, 20 Jun 2022 19:59:45 +1000 Subject: [PATCH 110/251] DOC fix wording in Outlier Detection docs (#23690) --- doc/modules/outlier_detection.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/outlier_detection.rst b/doc/modules/outlier_detection.rst index b0475b809ecb1..8b9be9eb74880 100644 --- a/doc/modules/outlier_detection.rst +++ b/doc/modules/outlier_detection.rst @@ -332,7 +332,7 @@ lower density than their neighbors. In practice the local density is obtained from the k-nearest neighbors. The LOF score of an observation is equal to the ratio of the -average local density of his k-nearest neighbors, and its own local density: +average local density of its k-nearest neighbors, and its own local density: a normal instance is expected to have a local density similar to that of its neighbors, while abnormal data are expected to have much smaller local density. From 01c11b6c4bcddd5799790248f44878861f4a3dbc Mon Sep 17 00:00:00 2001 From: Shinsuke Mori Date: Mon, 20 Jun 2022 19:02:09 +0900 Subject: [PATCH 111/251] DOC fix typos an -> a (#23684) --- doc/modules/ensemble.rst | 2 +- doc/tutorial/statistical_inference/model_selection.rst | 2 +- sklearn/model_selection/tests/test_search.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/modules/ensemble.rst b/doc/modules/ensemble.rst index be9b652ecd69d..7d64a0e91181c 100644 --- a/doc/modules/ensemble.rst +++ b/doc/modules/ensemble.rst @@ -1333,7 +1333,7 @@ Here, the predicted class label is 2, since it has the highest average probability. The following example illustrates how the decision regions may change -when a soft :class:`VotingClassifier` is used based on an linear Support +when a soft :class:`VotingClassifier` is used based on a linear Support Vector Machine, a Decision Tree, and a K-nearest neighbor classifier:: >>> from sklearn import datasets diff --git a/doc/tutorial/statistical_inference/model_selection.rst b/doc/tutorial/statistical_inference/model_selection.rst index 070e86c18e8b1..dd0cec4de4db0 100644 --- a/doc/tutorial/statistical_inference/model_selection.rst +++ b/doc/tutorial/statistical_inference/model_selection.rst @@ -182,7 +182,7 @@ scoring method. .. topic:: **Exercise** On the digits dataset, plot the cross-validation score of a :class:`SVC` - estimator with an linear kernel as a function of parameter ``C`` (use a + estimator with a linear kernel as a function of parameter ``C`` (use a logarithmic grid of points, from 1 to 10). .. literalinclude:: ../../auto_examples/exercises/plot_cv_digits.py diff --git a/sklearn/model_selection/tests/test_search.py b/sklearn/model_selection/tests/test_search.py index 2c1a66dcb3fed..447727830d84d 100644 --- a/sklearn/model_selection/tests/test_search.py +++ b/sklearn/model_selection/tests/test_search.py @@ -114,7 +114,7 @@ def set_params(self, **params): class LinearSVCNoScore(LinearSVC): - """An LinearSVC classifier that has no score method.""" + """A LinearSVC classifier that has no score method.""" @property def score(self): From 6125c6c71495acbf9ed6932f1e65af486dda3ee2 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Mon, 20 Jun 2022 18:02:09 +0530 Subject: [PATCH 112/251] DOC fix link to NumFOCUS donation page (#23695) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/about.rst | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/doc/about.rst b/doc/about.rst index 5bb72531ad42b..39833a31439ce 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -586,9 +586,15 @@ Donating to the project ....................... If you are interested in donating to the project or to one of our code-sprints, -you can use the *Paypal* button below or the `NumFOCUS Donations Page -`_ (if you use the latter, -please indicate that you are donating for the scikit-learn project). +please donate via the `NumFOCUS Donations Page +`_. + +.. raw :: html + + +
    All donations will be handled by `NumFOCUS `_, a non-profit-organization which is @@ -602,13 +608,6 @@ The received donations for the scikit-learn project mostly will go towards covering travel-expenses for code sprints, as well as towards the organization budget of the project [#f1]_. -.. raw :: html - -

    - -
    .. rubric:: Notes From b815ba86d0c3a36fa67e990e3c7bfb81a2e5dffa Mon Sep 17 00:00:00 2001 From: Iglesys Date: Mon, 20 Jun 2022 14:37:24 +0200 Subject: [PATCH 113/251] DOC Fix broken link to pandas doc (#23696) --- doc/developers/bug_triaging.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/developers/bug_triaging.rst b/doc/developers/bug_triaging.rst index 53333b8163ae4..fc84532efeac8 100644 --- a/doc/developers/bug_triaging.rst +++ b/doc/developers/bug_triaging.rst @@ -156,4 +156,4 @@ The following workflow [1]_ is a good way to approach issue triaging: #. Remove the "Needs Triage" label from the issue if the label exists. .. [1] Adapted from the pandas project `maintainers guide - `_ + `_ From 9b651b24e407e2f54650316d81db690b3a261998 Mon Sep 17 00:00:00 2001 From: Aravindh R <61419792+Aravindh-Raju@users.noreply.github.com> Date: Mon, 20 Jun 2022 19:46:56 +0530 Subject: [PATCH 114/251] DOC fix high-dimension distribution link (#23698) --- doc/modules/outlier_detection.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/outlier_detection.rst b/doc/modules/outlier_detection.rst index 8b9be9eb74880..75a191a767aa5 100644 --- a/doc/modules/outlier_detection.rst +++ b/doc/modules/outlier_detection.rst @@ -170,7 +170,7 @@ but regular, observation outside the frontier. .. topic:: References: * `Estimating the support of a high-dimensional distribution - `_ + `_ Schölkopf, Bernhard, et al. Neural computation 13.7 (2001): 1443-1471. .. topic:: Examples: From 8c01a564610fc90b9fac4148471b7be0ba0c4df8 Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Mon, 20 Jun 2022 20:02:05 +0530 Subject: [PATCH 115/251] DOC FIX Logo 3 image link to display correct image (#23634) --- doc/logos/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/logos/README.md b/doc/logos/README.md index 99e4fb6874c36..b2a238ec75a4d 100644 --- a/doc/logos/README.md +++ b/doc/logos/README.md @@ -46,7 +46,7 @@ File types: - File size: 5 KB - File name: [scikit-learn-logo-without-subtitle.svg](https://github.com/scikit-learn/scikit-learn/blob/main/doc/logos/scikit-learn-logo-without-subtitle.svg) - + --- From 4b3dd095a617ba90a8811c7cc747edb2005c0133 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Mon, 20 Jun 2022 16:57:29 +0200 Subject: [PATCH 116/251] DOC Rework plot_document_clustering.py example (#23528) Co-authored-by: Olivier Grisel Co-authored-by: Guillaume Lemaitre Co-authored-by: Julien Jerphanion --- examples/text/plot_document_clustering.py | 626 ++++++++++++++-------- 1 file changed, 395 insertions(+), 231 deletions(-) diff --git a/examples/text/plot_document_clustering.py b/examples/text/plot_document_clustering.py index 66b25ec9851de..acca1e34763e4 100644 --- a/examples/text/plot_document_clustering.py +++ b/examples/text/plot_document_clustering.py @@ -3,284 +3,448 @@ Clustering text documents using k-means ======================================= -This is an example showing how the scikit-learn can be used to cluster -documents by topics using a bag-of-words approach. This example uses -a scipy.sparse matrix to store the features instead of standard numpy arrays. - -Two feature extraction methods can be used in this example: - - - TfidfVectorizer uses a in-memory vocabulary (a python dict) to map the most - frequent words to features indices and hence compute a word occurrence - frequency (sparse) matrix. The word frequencies are then reweighted using - the Inverse Document Frequency (IDF) vector collected feature-wise over - the corpus. - - - HashingVectorizer hashes word occurrences to a fixed dimensional space, - possibly with collisions. The word count vectors are then normalized to - each have l2-norm equal to one (projected to the euclidean unit-ball) which - seems to be important for k-means to work in high dimensional space. - - HashingVectorizer does not provide IDF weighting as this is a stateless - model (the fit method does nothing). When IDF weighting is needed it can - be added by pipelining its output to a TfidfTransformer instance. - -Two algorithms are demoed: ordinary k-means and its more scalable cousin -minibatch k-means. - -Additionally, latent semantic analysis can also be used to reduce -dimensionality and discover latent patterns in the data. - -It can be noted that k-means (and minibatch k-means) are very sensitive to -feature scaling and that in this case the IDF weighting helps improve the -quality of the clustering by quite a lot as measured against the "ground truth" -provided by the class label assignments of the 20 newsgroups dataset. - -This improvement is not visible in the Silhouette Coefficient which is small -for both as this measure seem to suffer from the phenomenon called -"Concentration of Measure" or "Curse of Dimensionality" for high dimensional -datasets such as text data. Other measures such as V-measure and Adjusted Rand -Index are information theoretic based evaluation scores: as they are only based -on cluster assignments rather than distances, hence not affected by the curse -of dimensionality. - -Note: as k-means is optimizing a non-convex objective function, it will likely -end up in a local optimum. Several runs with independent random init might be -necessary to get a good convergence. +This is an example showing how the scikit-learn API can be used to cluster +documents by topics using a `Bag of Words approach +`_. + +Two algorithms are demoed: :class:`~sklearn.cluster.KMeans` and its more +scalable variant, :class:`~sklearn.cluster.MiniBatchKMeans`. Additionally, +latent semantic analysis is used to reduce dimensionality and discover latent +patterns in the data. + +This example uses two different text vectorizers: a +:class:`~sklearn.feature_extraction.text.TfidfVectorizer` and a +:class:`~sklearn.feature_extraction.text.HashingVectorizer`. See the example +notebook :ref:`sphx_glr_auto_examples_text_plot_hashing_vs_dict_vectorizer.py` +for more information on vectorizers and a comparison of their processing times. + +For document analysis via a supervised learning approach, see the example script +:ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py`. """ # Author: Peter Prettenhofer # Lars Buitinck +# Olivier Grisel +# Arturo Amor # License: BSD 3 clause -from sklearn.datasets import fetch_20newsgroups -from sklearn.decomposition import TruncatedSVD -from sklearn.feature_extraction.text import TfidfVectorizer -from sklearn.feature_extraction.text import HashingVectorizer -from sklearn.feature_extraction.text import TfidfTransformer -from sklearn.pipeline import make_pipeline -from sklearn.preprocessing import Normalizer -from sklearn import metrics - -from sklearn.cluster import KMeans, MiniBatchKMeans - -import logging -from optparse import OptionParser -import sys -from time import time +# %% +# Loading text data +# ================= +# +# We load data from :ref:`20newsgroups_dataset`, which comprises around 18,000 +# newsgroups posts on 20 topics. For illustrative purposes and to reduce the +# computational cost, we select a subset of 4 topics only accounting for around +# 3,400 documents. See the example +# :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` +# to gain intuition on the overlap of such topics. +# +# Notice that, by default, the text samples contain some message metadata such +# as `"headers"`, `"footers"` (signatures) and `"quotes"` to other posts. We use +# the `remove` parameter from :func:`~sklearn.datasets.fetch_20newsgroups` to +# strip those features and have a more sensible clustering problem. import numpy as np +from sklearn.datasets import fetch_20newsgroups +categories = [ + "alt.atheism", + "talk.religion.misc", + "comp.graphics", + "sci.space", +] -# Display progress logs on stdout -logging.basicConfig(level=logging.INFO, format="%(asctime)s %(levelname)s %(message)s") - -# parse commandline arguments -op = OptionParser() -op.add_option( - "--lsa", - dest="n_components", - type="int", - help="Preprocess documents with latent semantic analysis.", -) -op.add_option( - "--no-minibatch", - action="store_false", - dest="minibatch", - default=True, - help="Use ordinary k-means algorithm (in batch mode).", -) -op.add_option( - "--no-idf", - action="store_false", - dest="use_idf", - default=True, - help="Disable Inverse Document Frequency feature weighting.", -) -op.add_option( - "--use-hashing", - action="store_true", - default=False, - help="Use a hashing feature vectorizer", -) -op.add_option( - "--n-features", - type=int, - default=10000, - help="Maximum number of features (dimensions) to extract from text.", -) -op.add_option( - "--verbose", - action="store_true", - dest="verbose", - default=False, - help="Print progress reports inside k-means algorithm.", +dataset = fetch_20newsgroups( + remove=("headers", "footers", "quotes"), + subset="all", + categories=categories, + shuffle=True, + random_state=42, ) -print(__doc__) +labels = dataset.target +unique_labels, category_sizes = np.unique(labels, return_counts=True) +true_k = unique_labels.shape[0] +print(f"{len(dataset.data)} documents - {true_k} categories") -def is_interactive(): - return not hasattr(sys.modules["__main__"], "__file__") +# %% +# Quantifying the quality of clustering results +# ============================================= +# +# In this section we define a function to score different clustering pipelines +# using several metrics. +# +# Clustering algorithms are fundamentally unsupervised learning methods. +# However, since we happen to have class labels for this specific dataset, it is +# possible to use evaluation metrics that leverage this "supervised" ground +# truth information to quantify the quality of the resulting clusters. Examples +# of such metrics are the following: +# +# - homogeneity, which quantifies how much clusters contain only members of a +# single class; +# +# - completeness, which quantifies how much members of a given class are +# assigned to the same clusters; +# +# - V-measure, the harmonic mean of completeness and homogeneity; +# +# - Rand-Index, which measures how frequently pairs of data points are grouped +# consistently according to the result of the clustering algorithm and the +# ground truth class assignment; +# +# - Adjusted Rand-Index, a chance-adjusted Rand-Index such that random cluster +# assignment have an ARI of 0.0 in expectation. +# +# If the ground truth labels are not known, evaluation can only be performed +# using the model results itself. In that case, the Silhouette Coefficient comes +# in handy. +# +# For more reference, see :ref:`clustering_evaluation`. + +from collections import defaultdict +from sklearn import metrics +from time import time +evaluations = [] +evaluations_std = [] + + +def fit_and_evaluate(km, X, name=None, n_runs=5): + name = km.__class__.__name__ if name is None else name + + train_times = [] + scores = defaultdict(list) + for seed in range(n_runs): + km.set_params(random_state=seed) + t0 = time() + km.fit(X) + train_times.append(time() - t0) + scores["Homogeneity"].append(metrics.homogeneity_score(labels, km.labels_)) + scores["Completeness"].append(metrics.completeness_score(labels, km.labels_)) + scores["V-measure"].append(metrics.v_measure_score(labels, km.labels_)) + scores["Adjusted Rand-Index"].append( + metrics.adjusted_rand_score(labels, km.labels_) + ) + scores["Silhouette Coefficient"].append( + metrics.silhouette_score(X, km.labels_, sample_size=2000) + ) + train_times = np.asarray(train_times) + + print(f"clustering done in {train_times.mean():.2f} ± {train_times.std():.2f} s ") + evaluation = { + "estimator": name, + "train_time": train_times.mean(), + } + evaluation_std = { + "estimator": name, + "train_time": train_times.std(), + } + for score_name, score_values in scores.items(): + mean_score, std_score = np.mean(score_values), np.std(score_values) + print(f"{score_name}: {mean_score:.3f} ± {std_score:.3f}") + evaluation[score_name] = mean_score + evaluation_std[score_name] = std_score + evaluations.append(evaluation) + evaluations_std.append(evaluation_std) -if not is_interactive(): - op.print_help() - print() -# work-around for Jupyter notebook and IPython console -argv = [] if is_interactive() else sys.argv[1:] -(opts, args) = op.parse_args(argv) -if len(args) > 0: - op.error("this script takes no arguments.") - sys.exit(1) +# %% +# K-means clustering on text features +# =================================== +# +# Two feature extraction methods are used in this example: +# +# - :class:`~sklearn.feature_extraction.text.TfidfVectorizer` uses an in-memory +# vocabulary (a Python dict) to map the most frequent words to features +# indices and hence compute a word occurrence frequency (sparse) matrix. The +# word frequencies are then reweighted using the Inverse Document Frequency +# (IDF) vector collected feature-wise over the corpus. +# +# - :class:`~sklearn.feature_extraction.text.HashingVectorizer` hashes word +# occurrences to a fixed dimensional space, possibly with collisions. The word +# count vectors are then normalized to each have l2-norm equal to one +# (projected to the euclidean unit-sphere) which seems to be important for +# k-means to work in high dimensional space. +# +# Furthermore it is possible to post-process those extracted features using +# dimensionality reduction. We will explore the impact of those choices on the +# clustering quality in the following. +# +# Feature Extraction using TfidfVectorizer +# ---------------------------------------- +# +# We first benchmark the estimators using a dictionary vectorizer along with an +# IDF normalization as provided by +# :class:`~sklearn.feature_extraction.text.TfidfVectorizer`. +from sklearn.feature_extraction.text import TfidfVectorizer -# %% -# Load some categories from the training set -# ------------------------------------------ +vectorizer = TfidfVectorizer( + max_df=0.5, + min_df=5, + stop_words="english", +) +t0 = time() +X_tfidf = vectorizer.fit_transform(dataset.data) -categories = [ - "alt.atheism", - "talk.religion.misc", - "comp.graphics", - "sci.space", -] -# Uncomment the following to do the analysis on all the categories -# categories = None +print(f"vectorization done in {time() - t0:.3f} s") +print(f"n_samples: {X_tfidf.shape[0]}, n_features: {X_tfidf.shape[1]}") -print("Loading 20 newsgroups dataset for categories:") -print(categories) +# %% +# After ignoring terms that appear in more than 50% of the documents (as set by +# `max_df=0.5`) and terms that are not present in at least 5 documents (set by +# `min_df=5`), the resulting number of unique terms `n_features` is around +# 8,000. We can additionally quantify the sparsity of the `X_tfidf` matrix as +# the fraction of non-zero entries devided by the total number of elements. -dataset = fetch_20newsgroups( - subset="all", categories=categories, shuffle=True, random_state=42 -) +print(f"{X_tfidf.nnz / np.prod(X_tfidf.shape):.3f}") -print("%d documents" % len(dataset.data)) -print("%d categories" % len(dataset.target_names)) +# %% +# We find that around 0.7% of the entries of the `X_tfidf` matrix are non-zero. +# +# .. _kmeans_sparse_high_dim: +# +# Clustering sparse data with k-means +# ----------------------------------- +# +# As both :class:`~sklearn.cluster.KMeans` and +# :class:`~sklearn.cluster.MiniBatchKMeans` optimize a non-convex objective +# function, their clustering is not guaranteed to be optimal for a given random +# init. Even further, on sparse high-dimensional data such as text vectorized +# using the Bag of Words approach, k-means can initialize centroids on extremely +# isolated data points. Those data points can stay their own centroids all +# along. +# +# The following code illustrates how the previous phenomenon can sometimes lead +# to highly imbalanced clusters, depending on the random initialization: + +from sklearn.cluster import KMeans + +for seed in range(5): + kmeans = KMeans( + n_clusters=true_k, + max_iter=100, + n_init=1, + random_state=seed, + ).fit(X_tfidf) + cluster_ids, cluster_sizes = np.unique(kmeans.labels_, return_counts=True) + print(f"Number of elements asigned to each cluster: {cluster_sizes}") print() +print( + "True number of documents in each category according to the class labels: " + f"{category_sizes}" +) + +# %% +# To avoid this problem, one possibility is to increase the number of runs with +# independent random initiations `n_init`. In such case the clustering with the +# best inertia (objective function of k-means) is chosen. + +kmeans = KMeans( + n_clusters=true_k, + max_iter=100, + n_init=5, +) +fit_and_evaluate(kmeans, X_tfidf, name="KMeans\non tf-idf vectors") # %% -# Feature Extraction -# ------------------ +# All those clustering evaluation metrics have a maximum value of 1.0 (for a +# perfect clustering result). Higher values are better. Values of the Adjusted +# Rand-Index close to 0.0 correspond to a random labeling. Notice from the +# scores above that the cluster assignment is indeed well above chance level, +# but the overall quality can certainly improve. +# +# Keep in mind that the class labels may not reflect accurately the document +# topics and therefore metrics that use labels are not necessarily the best to +# evaluate the quality of our clustering pipeline. +# +# Performing dimensionality reduction using LSA +# --------------------------------------------- +# +# A `n_init=1` can still be used as long as the dimension of the vectorized +# space is reduced first to make k-means more stable. For such purpose we use +# :class:`~sklearn.decomposition.TruncatedSVD`, which works on term count/tf-idf +# matrices. Since SVD results are not normalized, we redo the normalization to +# improve the :class:`~sklearn.cluster.KMeans` result. Using SVD to reduce the +# dimensionality of TF-IDF document vectors is often known as `latent semantic +# analysis `_ (LSA) in +# the information retrieval and text mining literature. -labels = dataset.target -true_k = np.unique(labels).shape[0] +from sklearn.decomposition import TruncatedSVD +from sklearn.pipeline import make_pipeline +from sklearn.preprocessing import Normalizer -print("Extracting features from the training dataset using a sparse vectorizer") + +lsa = make_pipeline(TruncatedSVD(n_components=100), Normalizer(copy=False)) t0 = time() -if opts.use_hashing: - if opts.use_idf: - # Perform an IDF normalization on the output of HashingVectorizer - hasher = HashingVectorizer( - n_features=opts.n_features, - stop_words="english", - alternate_sign=False, - norm=None, - ) - vectorizer = make_pipeline(hasher, TfidfTransformer()) - else: - vectorizer = HashingVectorizer( - n_features=opts.n_features, - stop_words="english", - alternate_sign=False, - norm="l2", - ) -else: - vectorizer = TfidfVectorizer( - max_df=0.5, - max_features=opts.n_features, - min_df=2, - stop_words="english", - use_idf=opts.use_idf, - ) -X = vectorizer.fit_transform(dataset.data) - -print("done in %fs" % (time() - t0)) -print("n_samples: %d, n_features: %d" % X.shape) -print() +X_lsa = lsa.fit_transform(X_tfidf) +explained_variance = lsa[0].explained_variance_ratio_.sum() -if opts.n_components: - print("Performing dimensionality reduction using LSA") - t0 = time() - # Since LSA/SVD results are not normalized, - # we redo the normalization to improve the k-means result. - svd = TruncatedSVD(opts.n_components) - normalizer = Normalizer(copy=False) - lsa = make_pipeline(svd, normalizer) +print(f"LSA done in {time() - t0:.3f} s") +print(f"Explained variance of the SVD step: {explained_variance * 100:.1f}%") - X = lsa.fit_transform(X) +# %% +# Using a single initialization means the processing time will be reduced for +# both :class:`~sklearn.cluster.KMeans` and +# :class:`~sklearn.cluster.MiniBatchKMeans`. + +kmeans = KMeans( + n_clusters=true_k, + max_iter=100, + n_init=1, +) - print("done in %fs" % (time() - t0)) +fit_and_evaluate(kmeans, X_lsa, name="KMeans\nwith LSA on tf-idf vectors") - explained_variance = svd.explained_variance_ratio_.sum() - print( - "Explained variance of the SVD step: {}%".format(int(explained_variance * 100)) - ) +# %% +# We can observe that clustering on the LSA representation of the document is +# significantly faster (both because of `n_init=1` and because the +# dimensionality of the LSA feature space is much smaller). Furthermore, all the +# clustering evaluation metrics have improved. We repeat the experiment with +# :class:`~sklearn.cluster.MiniBatchKMeans`. + +from sklearn.cluster import MiniBatchKMeans + +minibatch_kmeans = MiniBatchKMeans( + n_clusters=true_k, + n_init=1, + init_size=1000, + batch_size=1000, +) - print() +fit_and_evaluate( + minibatch_kmeans, + X_lsa, + name="MiniBatchKMeans\nwith LSA on tf-idf vectors", +) +# %% +# Top terms per cluster +# --------------------- +# +# Since :class:`~sklearn.feature_extraction.text.TfidfVectorizer` can be +# inverted we can identify the cluster centers, which provide an intuition of +# the most influential words **for each cluster**. See the example script +# :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` +# for a comparison with the most predictive words **for each target class**. + +original_space_centroids = lsa[0].inverse_transform(kmeans.cluster_centers_) +order_centroids = original_space_centroids.argsort()[:, ::-1] +terms = vectorizer.get_feature_names_out() + +for i in range(true_k): + print(f"Cluster {i}: ", end="") + for ind in order_centroids[i, :10]: + print(f"{terms[ind]} ", end="") + print() # %% -# Clustering -# ---------- +# HashingVectorizer +# ----------------- +# An alternative vectorization can be done using a +# :class:`~sklearn.feature_extraction.text.HashingVectorizer` instance, which +# does not provide IDF weighting as this is a stateless model (the fit method +# does nothing). When IDF weighting is needed it can be added by pipelining the +# :class:`~sklearn.feature_extraction.text.HashingVectorizer` output to a +# :class:`~sklearn.feature_extraction.text.TfidfTransformer` instance. In this +# case we also add LSA to the pipeline to reduce the dimension and sparcity of +# the hashed vector space. -if opts.minibatch: - km = MiniBatchKMeans( - n_clusters=true_k, - init="k-means++", - n_init=1, - init_size=1000, - batch_size=1000, - verbose=opts.verbose, - ) -else: - km = KMeans( - n_clusters=true_k, - init="k-means++", - max_iter=100, - n_init=1, - verbose=opts.verbose, - ) +from sklearn.feature_extraction.text import HashingVectorizer +from sklearn.feature_extraction.text import TfidfTransformer -print("Clustering sparse data with %s" % km) -t0 = time() -km.fit(X) -print("done in %0.3fs" % (time() - t0)) -print() +lsa_vectorizer = make_pipeline( + HashingVectorizer(stop_words="english", n_features=50_000), + TfidfTransformer(), + TruncatedSVD(n_components=100, random_state=0), + Normalizer(copy=False), +) +t0 = time() +X_hashed_lsa = lsa_vectorizer.fit_transform(dataset.data) +print(f"vectorization done in {time() - t0:.3f} s") # %% -# Performance metrics -# ------------------- +# One can observe that the LSA step takes a relatively long time to fit, +# especially with hashed vectors. The reason is that a hashed space is typically +# large (set to `n_features=50_000` in this example). One can try lowering the +# number of features at the expense of having a larger fraction of features with +# hash collisions as shown in the example notebook +# :ref:`sphx_glr_auto_examples_text_plot_hashing_vs_dict_vectorizer.py`. +# +# We now fit and evaluate the `kmeans` and `minibatch_kmeans` instances on this +# hashed-lsa-reduced data: + +fit_and_evaluate(kmeans, X_hashed_lsa, name="KMeans\nwith LSA on hashed vectors") -print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels, km.labels_)) -print("Completeness: %0.3f" % metrics.completeness_score(labels, km.labels_)) -print("V-measure: %0.3f" % metrics.v_measure_score(labels, km.labels_)) -print("Adjusted Rand-Index: %.3f" % metrics.adjusted_rand_score(labels, km.labels_)) -print( - "Silhouette Coefficient: %0.3f" - % metrics.silhouette_score(X, km.labels_, sample_size=1000) +# %% +fit_and_evaluate( + minibatch_kmeans, + X_hashed_lsa, + name="MiniBatchKMeans\nwith LSA on hashed vectors", ) -print() +# %% +# Both methods lead to good results that are similar to running the same models +# on the traditional LSA vectors (without hashing). +# +# Clustering evaluation summary +# ============================== +import pandas as pd +import matplotlib.pyplot as plt -# %% +fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(16, 6), sharey=True) + +df = pd.DataFrame(evaluations[::-1]).set_index("estimator") +df_std = pd.DataFrame(evaluations_std[::-1]).set_index("estimator") + +df.drop( + ["train_time"], + axis="columns", +).plot.barh(ax=ax0, xerr=df_std) +ax0.set_xlabel("Clustering scores") +ax0.set_ylabel("") -if not opts.use_hashing: - print("Top terms per cluster:") - - if opts.n_components: - original_space_centroids = svd.inverse_transform(km.cluster_centers_) - order_centroids = original_space_centroids.argsort()[:, ::-1] - else: - order_centroids = km.cluster_centers_.argsort()[:, ::-1] - - terms = vectorizer.get_feature_names_out() - for i in range(true_k): - print("Cluster %d:" % i, end="") - for ind in order_centroids[i, :10]: - print(" %s" % terms[ind], end="") - print() +df["train_time"].plot.barh(ax=ax1, xerr=df_std["train_time"]) +ax1.set_xlabel("Clustering time (s)") +plt.tight_layout() + +# %% +# :class:`~sklearn.cluster.KMeans` and :class:`~sklearn.cluster.MiniBatchKMeans` +# suffer from the phenomenon called the `Curse of Dimensionality +# `_ for high dimensional +# datasets such as text data. That is the reason why the overall scores improve +# when using LSA. Using LSA reduced data also improves the stability and +# requires lower clustering time, though keep in mind that the LSA step itself +# takes a long time, especially with hashed vectors. +# +# The Silhouette Coefficient is defined between 0 and 1. In all cases we obtain +# values close to 0 (even if they improve a bit after using LSA) because its +# definition requires measuring distances, in contrast with other evaluation +# metrics such as the V-measure and the Adjusted Rand Index which are only based +# on cluster assignments rather than distances. Notice that strictly speaking, +# one should not compare the Silhouette Coefficient between spaces of different +# dimension, due to the different notions of distance they imply. +# +# The homogeneity, completeness and hence v-measure metrics do not yield a +# baseline with regards to random labeling: this means that depending on the +# number of samples, clusters and ground truth classes, a completely random +# labeling will not always yield the same values. In particular random labeling +# won’t yield zero scores, especially when the number of clusters is large. This +# problem can safely be ignored when the number of samples is more than a +# thousand and the number of clusters is less than 10, which is the case of the +# present example. For smaller sample sizes or larger number of clusters it is +# safer to use an adjusted index such as the Adjusted Rand Index (ARI). See the +# example +# :ref:`sphx_glr_auto_examples_cluster_plot_adjusted_for_chance_measures.py` for +# a demo on the effect of random labeling. +# +# The size of the error bars show that :class:`~sklearn.cluster.MiniBatchKMeans` +# is less stable than :class:`~sklearn.cluster.KMeans` for this relatively small +# dataset. It is more interesting to use when the number of samples is much +# bigger, but it can come at the expense of a small degradation in clustering +# quality compared to the traditional k-means algorithm. From d76fc74dca5b3aad04f25e5d6c696f76cbecf52b Mon Sep 17 00:00:00 2001 From: Hao Chun Chang Date: Tue, 21 Jun 2022 14:10:05 +0800 Subject: [PATCH 117/251] FIX Ensure correct sklearn.metrics.coverage_error error message for 1D array (#23548) * Change input array to ensure_2d=True * Reshape input list to 2D if metric is coverage_error * Add test for error message with 1D array on coverage_error * Modify 1D error message test * Use parametrize to test different 1d arrays * Explain why reshape in test_regression_thresholded_inf_nan_input * Add changelog entry for this fix * Add test comments to sklearn/metrics/tests/test_ranking.py Co-authored-by: Julien Jerphanion Co-authored-by: Julien Jerphanion --- doc/whats_new/v1.2.rst | 3 +++ sklearn/metrics/_ranking.py | 4 ++-- sklearn/metrics/tests/test_common.py | 4 ++++ sklearn/metrics/tests/test_ranking.py | 15 +++++++++++++++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 842991051aaaa..025460769e291 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -87,6 +87,9 @@ Changelog of a binary classification problem. :pr:`22518` by :user:`Arturo Amor `. +- |Fix| Fixed error message of :class:`metrics.coverage_error` for 1D array input. + :pr:`23548` by :user:`Hao Chun Chang `. + :mod:`sklearn.neighbors` ........................ diff --git a/sklearn/metrics/_ranking.py b/sklearn/metrics/_ranking.py index 7f64f479ed275..9e746f167381f 100644 --- a/sklearn/metrics/_ranking.py +++ b/sklearn/metrics/_ranking.py @@ -1155,8 +1155,8 @@ def coverage_error(y_true, y_score, *, sample_weight=None): handbook (pp. 667-685). Springer US. """ - y_true = check_array(y_true, ensure_2d=False) - y_score = check_array(y_score, ensure_2d=False) + y_true = check_array(y_true, ensure_2d=True) + y_score = check_array(y_score, ensure_2d=True) check_consistent_length(y_true, y_score, sample_weight) y_type = type_of_target(y_true, input_name="y_true") diff --git a/sklearn/metrics/tests/test_common.py b/sklearn/metrics/tests/test_common.py index 1e627f9f86676..c0d6d351b8c3e 100644 --- a/sklearn/metrics/tests/test_common.py +++ b/sklearn/metrics/tests/test_common.py @@ -910,6 +910,10 @@ def test_thresholded_invariance_string_vs_numbers_labels(name): ) @pytest.mark.parametrize("y_true, y_score", invalids_nan_inf) def test_regression_thresholded_inf_nan_input(metric, y_true, y_score): + # Reshape since coverage_error only accepts 2D arrays. + if metric == coverage_error: + y_true = [y_true] + y_score = [y_score] with pytest.raises(ValueError, match=r"contains (NaN|infinity)"): metric(y_true, y_score) diff --git a/sklearn/metrics/tests/test_ranking.py b/sklearn/metrics/tests/test_ranking.py index 7d2338337b83d..c27d0f326fc0b 100644 --- a/sklearn/metrics/tests/test_ranking.py +++ b/sklearn/metrics/tests/test_ranking.py @@ -1569,6 +1569,21 @@ def test_coverage_tie_handling(): assert_almost_equal(coverage_error([[1, 1, 1]], [[0.25, 0.5, 0.5]]), 3) +@pytest.mark.parametrize( + "y_true, y_score", + [ + ([1, 0, 1], [0.25, 0.5, 0.5]), + ([1, 0, 1], [[0.25, 0.5, 0.5]]), + ([[1, 0, 1]], [0.25, 0.5, 0.5]), + ], +) +def test_coverage_1d_error_message(y_true, y_score): + # Non-regression test for: + # https://github.com/scikit-learn/scikit-learn/issues/23368 + with pytest.raises(ValueError, match=r"Expected 2D array, got 1D array instead"): + coverage_error(y_true, y_score) + + def test_label_ranking_loss(): assert_almost_equal(label_ranking_loss([[0, 1]], [[0.25, 0.75]]), 0) assert_almost_equal(label_ranking_loss([[0, 1]], [[0.75, 0.25]]), 1) From c1b660f0e2b2a7e389a3de4ff8761da71e3ce203 Mon Sep 17 00:00:00 2001 From: Tyler Egashira <34391196+wildwoodwaltz@users.noreply.github.com> Date: Tue, 21 Jun 2022 01:03:01 -0700 Subject: [PATCH 118/251] DOF fix robust regression example link (#23660) --- doc/modules/linear_model.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/linear_model.rst b/doc/modules/linear_model.rst index 7f9dd6ea593a1..bf372fd52bb1c 100644 --- a/doc/modules/linear_model.rst +++ b/doc/modules/linear_model.rst @@ -1549,7 +1549,7 @@ in the following ways. * Peter J. Huber, Elvezio M. Ronchetti: Robust Statistics, Concomitant scale estimates, pg 172 Note that this estimator is different from the R implementation of Robust Regression -(http://www.ats.ucla.edu/stat/r/dae/rreg.htm) because the R implementation does a weighted least +(https://stats.oarc.ucla.edu/r/dae/robust-regression/) because the R implementation does a weighted least squares implementation with weights given to each sample on the basis of how much the residual is greater than a certain threshold. From 2b467754ef53a73f637a285647e9bb13f3888b9b Mon Sep 17 00:00:00 2001 From: Varun Jain <57365070+varunjain3@users.noreply.github.com> Date: Tue, 21 Jun 2022 13:37:39 +0530 Subject: [PATCH 119/251] DOC fix Jake's tutorial link (#23703) --- doc/presentations.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/presentations.rst b/doc/presentations.rst index 5a0f968426851..2a465af8247a7 100644 --- a/doc/presentations.rst +++ b/doc/presentations.rst @@ -63,7 +63,7 @@ Videos 3-hours long introduction to prediction tasks using scikit-learn. -- `scikit-learn - Machine Learning in Python `_ +- `scikit-learn - Machine Learning in Python `_ by `Jake Vanderplas`_ at the 2012 PyData workshop at Google Interactive demonstration of some scikit-learn features. 75 minutes. From 9be05b5a23cac7e927e2a08f4c5088dda9afbf6d Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Tue, 21 Jun 2022 13:43:03 +0530 Subject: [PATCH 120/251] DOC fix link to reference book (#23705) Updated link to book chapter in "Machine Learning: An Algorithmic Perspective" by S. Marsland. --- sklearn/datasets/_samples_generator.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/datasets/_samples_generator.py b/sklearn/datasets/_samples_generator.py index 4bb61cf85dbca..7108ebc401382 100644 --- a/sklearn/datasets/_samples_generator.py +++ b/sklearn/datasets/_samples_generator.py @@ -1532,9 +1532,9 @@ def make_swiss_roll(n_samples=100, *, noise=0.0, random_state=None, hole=False): References ---------- - .. [1] S. Marsland, "Machine Learning: An Algorithmic Perspective", - Chapter 10, 2009. - http://seat.massey.ac.nz/personal/s.r.marsland/Code/10/lle.py + .. [1] S. Marsland, "Machine Learning: An Algorithmic Perspective", 2nd edition, + Chapter 6, 2014. + https://homepages.ecs.vuw.ac.nz/~marslast/Code/Ch6/lle.py """ generator = check_random_state(random_state) From 6868cf33e29f65e11d29863b55f38a6c5e50009a Mon Sep 17 00:00:00 2001 From: Iglesys Date: Tue, 21 Jun 2022 11:06:28 +0200 Subject: [PATCH 121/251] DOC fix scipy broken link (#23697) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/modules/grid_search.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/grid_search.rst b/doc/modules/grid_search.rst index 9128c7d3c9841..0404ad3242268 100644 --- a/doc/modules/grid_search.rst +++ b/doc/modules/grid_search.rst @@ -152,8 +152,8 @@ A continuous log-uniform random variable is available through :class:`~sklearn.utils.fixes.loguniform`. This is a continuous version of log-spaced parameters. For example to specify ``C`` above, ``loguniform(1, 100)`` can be used instead of ``[1, 10, 100]`` or ``np.logspace(0, 2, -num=1000)``. This is an alias to SciPy's `stats.reciprocal -`_. +num=1000)``. This is an alias to `scipy.stats.loguniform +`_. Mirroring the example above in grid search, we can specify a continuous random variable that is log-uniformly distributed between ``1e0`` and ``1e3``:: From 3e54863a73c284f4ad51e090e9f3f0cc324eda1c Mon Sep 17 00:00:00 2001 From: aman kumar Date: Tue, 21 Jun 2022 17:54:32 +0530 Subject: [PATCH 122/251] DOC fix broken link Sequential Karhunen-Loeve Transform (#23706) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- sklearn/decomposition/_incremental_pca.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sklearn/decomposition/_incremental_pca.py b/sklearn/decomposition/_incremental_pca.py index 589796a7c97f7..da050a7e42efa 100644 --- a/sklearn/decomposition/_incremental_pca.py +++ b/sklearn/decomposition/_incremental_pca.py @@ -137,10 +137,9 @@ class IncrementalPCA(_BasePCA): See https://www.cs.toronto.edu/~dross/ivt/RossLimLinYang_ijcv.pdf This model is an extension of the Sequential Karhunen-Loeve Transform from: - *A. Levy and M. Lindenbaum, Sequential Karhunen-Loeve Basis Extraction and + :doi:`A. Levy and M. Lindenbaum, Sequential Karhunen-Loeve Basis Extraction and its Application to Images, IEEE Transactions on Image Processing, Volume 9, - Number 8, pp. 1371-1374, August 2000.* - See https://www.cs.technion.ac.il/~mic/doc/skl-ip.pdf + Number 8, pp. 1371-1374, August 2000. <10.1109/83.855432>` We have specifically abstained from an optimization used by authors of both papers, a QR decomposition used in specific situations to reduce the From f1a671f792a5cca9ca2a52f52a0f73397b6004bc Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Tue, 21 Jun 2022 20:26:51 +0530 Subject: [PATCH 123/251] DOC fix link to reference (#23713) Updated link to reference "Random Fourier approximations for skewed multiplicative histogram kernels" --- doc/modules/kernel_approximation.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/modules/kernel_approximation.rst b/doc/modules/kernel_approximation.rst index 7b46d19cb52ad..2a192d5f4273a 100644 --- a/doc/modules/kernel_approximation.rst +++ b/doc/modules/kernel_approximation.rst @@ -237,9 +237,9 @@ or store training examples. `_ Rahimi, A. and Recht, B. - Advances in neural information processing 2007, .. [LS2010] `"Random Fourier approximations for skewed multiplicative histogram kernels" - `_ - Random Fourier approximations for skewed multiplicative histogram kernels - - Lecture Notes for Computer Sciencd (DAGM) + `_ + Li, F., Ionescu, C., and Sminchisescu, C. + - Pattern Recognition, DAGM 2010, Lecture Notes in Computer Science. .. [VZ2010] `"Efficient additive kernels via explicit feature maps" `_ Vedaldi, A. and Zisserman, A. - Computer Vision and Pattern Recognition 2010 From 58a4ec0d0285e27a07f49ce22f14ce392d784fc8 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Tue, 21 Jun 2022 21:46:19 +0200 Subject: [PATCH 124/251] MAINT make sure that x0 is 1D when passed to minimize (#23659) --- sklearn/neighbors/_nca.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/neighbors/_nca.py b/sklearn/neighbors/_nca.py index af76a000ef2cb..96cdc3052c66e 100644 --- a/sklearn/neighbors/_nca.py +++ b/sklearn/neighbors/_nca.py @@ -229,7 +229,7 @@ def fit(self, X, y): # (n_samples, n_samples) # Initialize the transformation - transformation = self._initialize(X, y, init) + transformation = np.ravel(self._initialize(X, y, init)) # Create a dictionary of parameters to be passed to the optimizer disp = self.verbose - 2 if self.verbose > 1 else -1 From 065f0b6b898e1e432932efd82d92d8cf749127ed Mon Sep 17 00:00:00 2001 From: Diadochokinetic <45292173+Diadochokinetic@users.noreply.github.com> Date: Wed, 22 Jun 2022 11:05:21 +0200 Subject: [PATCH 125/251] MNT Update sklearn.externals._lobpcg.lobpcg docstring according to https://github.com/scipy/scipy/pull/16432 (#23597) Co-authored-by: Thomas J. Fan --- sklearn/externals/_lobpcg.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/sklearn/externals/_lobpcg.py b/sklearn/externals/_lobpcg.py index 1de3900b3f89c..8340b322c7b3c 100644 --- a/sklearn/externals/_lobpcg.py +++ b/sklearn/externals/_lobpcg.py @@ -141,7 +141,7 @@ def lobpcg( retLambdaHistory=False, retResidualNormsHistory=False, ): - """Locally Optimal Block Preconditioned Conjugate Gradient Method (LOBPCG) + """Locally Optimal Block Preconditioned Conjugate Gradient Method (LOBPCG). LOBPCG is a preconditioned eigensolver for large symmetric positive definite (SPD) generalized eigenproblems. @@ -161,7 +161,7 @@ def lobpcg( Preconditioner to `A`; by default ``M = Identity``. `M` should approximate the inverse of `A`. Y : ndarray, float32 or float64, optional - n-by-sizeY matrix of constraints (non-sparse), sizeY < n + An n-by-sizeY matrix of constraints (non-sparse), sizeY < n. The iterations will be performed in the B-orthogonal complement of the column-space of Y. Y must be full rank. tol : scalar, optional @@ -181,7 +181,7 @@ def lobpcg( Returns ------- w : ndarray - Array of ``k`` eigenvalues + Array of ``k`` eigenvalues. v : ndarray An array of ``k`` eigenvectors. `v` has the same shape as `X`. lambdas : list of ndarray, optional @@ -240,7 +240,6 @@ def lobpcg( Examples -------- - Solve ``A x = lambda x`` with constraints and preconditioning. >>> import numpy as np @@ -293,7 +292,6 @@ def lobpcg( Note that the vectors passed in Y are the eigenvectors of the 3 smallest eigenvalues. The results returned are orthogonal to those. - """ blockVectorX = X blockVectorY = Y From 49a71faf4c288dc0b26b8efa16451a8aff522e5a Mon Sep 17 00:00:00 2001 From: Paulo Sergio Soares <56484955+paulo-smcs@users.noreply.github.com> Date: Wed, 22 Jun 2022 08:48:31 -0300 Subject: [PATCH 126/251] DOC Ensures that fetch_lfw_pairs passes numpydoc validation (#23655) --- sklearn/datasets/_lfw.py | 3 +-- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sklearn/datasets/_lfw.py b/sklearn/datasets/_lfw.py index dc1267af59f96..be01ae6279e27 100644 --- a/sklearn/datasets/_lfw.py +++ b/sklearn/datasets/_lfw.py @@ -464,7 +464,7 @@ def fetch_lfw_pairs( slice_ : tuple of slice, default=(slice(70, 195), slice(78, 172)) Provide a custom 2D slice (height, width) to extract the 'interesting' part of the jpeg files and avoid use statistical - correlation from the background + correlation from the background. download_if_missing : bool, default=True If False, raise a IOError if the data is not locally available @@ -491,7 +491,6 @@ def fetch_lfw_pairs( The two label values being different persons or the same person. DESCR : str Description of the Labeled Faces in the Wild (LFW) dataset. - """ lfw_home, data_folder_path = _check_fetch_lfw( data_home=data_home, funneled=funneled, download_if_missing=download_if_missing diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index cc5883f3acc4b..4a7df8fe3a641 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -13,7 +13,6 @@ FUNCTION_DOCSTRING_IGNORE_LIST = [ "sklearn.datasets._kddcup99.fetch_kddcup99", - "sklearn.datasets._lfw.fetch_lfw_pairs", "sklearn.datasets._lfw.fetch_lfw_people", "sklearn.datasets._samples_generator.make_gaussian_quantiles", "sklearn.datasets._samples_generator.make_spd_matrix", From c2fe42890be671e88039973c3e3291178465039c Mon Sep 17 00:00:00 2001 From: Paulo Sergio Soares <56484955+paulo-smcs@users.noreply.github.com> Date: Wed, 22 Jun 2022 09:26:23 -0300 Subject: [PATCH 127/251] DOC Ensures that sklearn.metrics._classification.log_loss passes numpydoc validation (#23657) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Thomas J. Fan Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- sklearn/metrics/_classification.py | 11 ++++++----- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index 7af822ec7c74d..4bf3caf9f41ce 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -2377,22 +2377,23 @@ def log_loss( Returns ------- loss : float + Log loss, aka logistic loss or cross-entropy loss. Notes ----- The logarithm used is the natural logarithm (base-e). + References + ---------- + C.M. Bishop (2006). Pattern Recognition and Machine Learning. Springer, + p. 209. + Examples -------- >>> from sklearn.metrics import log_loss >>> log_loss(["spam", "ham", "ham", "spam"], ... [[.1, .9], [.9, .1], [.8, .2], [.35, .65]]) 0.21616... - - References - ---------- - C.M. Bishop (2006). Pattern Recognition and Machine Learning. Springer, - p. 209. """ y_pred = check_array(y_pred, ensure_2d=False) check_consistent_length(y_pred, y_true, sample_weight) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 4a7df8fe3a641..1489dd5c6da72 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -34,7 +34,6 @@ "sklearn.metrics._classification.brier_score_loss", "sklearn.metrics._classification.cohen_kappa_score", "sklearn.metrics._classification.jaccard_score", - "sklearn.metrics._classification.log_loss", "sklearn.metrics._plot.det_curve.plot_det_curve", "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", "sklearn.metrics._ranking.coverage_error", From c727d3e6e9033d81475a6c08ba45f51ee5f7dd56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gl=C3=B2ria=20Maci=C3=A0=20Mu=C3=B1oz?= Date: Wed, 22 Jun 2022 15:34:13 +0200 Subject: [PATCH 128/251] DOC Add None as a possible normalization value for TfidfTransformer (#23594) --- sklearn/feature_extraction/text.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sklearn/feature_extraction/text.py b/sklearn/feature_extraction/text.py index b565aeadc53c8..73623f36bca55 100644 --- a/sklearn/feature_extraction/text.py +++ b/sklearn/feature_extraction/text.py @@ -1511,7 +1511,7 @@ class TfidfTransformer(_OneToOneFeatureMixin, TransformerMixin, BaseEstimator): Parameters ---------- - norm : {'l1', 'l2'}, default='l2' + norm : {'l1', 'l2'} or None, default='l2' Each output row will have unit norm, either: - 'l2': Sum of squares of vector elements is 1. The cosine @@ -1519,6 +1519,7 @@ class TfidfTransformer(_OneToOneFeatureMixin, TransformerMixin, BaseEstimator): been applied. - 'l1': Sum of absolute values of vector elements is 1. See :func:`preprocessing.normalize`. + - None: No normalization. use_idf : bool, default=True Enable inverse-document-frequency reweighting. If False, idf(t) = 1. @@ -1684,7 +1685,7 @@ def transform(self, X, copy=True): # *= doesn't work X = X * self._idf_diag - if self.norm: + if self.norm is not None: X = normalize(X, norm=self.norm, copy=False) return X From c9d08e95577246fc2e46ce2f9fbafb3c982c625f Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Wed, 22 Jun 2022 19:26:04 +0530 Subject: [PATCH 129/251] DOC update link to reference (#23719) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Update link to reference paper "Learning to find pre-images" by Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf --- doc/modules/decomposition.rst | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst index 4dacee5bcc478..79fae944abfea 100644 --- a/doc/modules/decomposition.rst +++ b/doc/modules/decomposition.rst @@ -283,7 +283,7 @@ prediction (kernel dependency estimation). :class:`KernelPCA` supports both .. note:: :meth:`KernelPCA.inverse_transform` relies on a kernel ridge to learn the function mapping samples from the PCA basis into the original feature - space [Bakir2004]_. Thus, the reconstruction obtained with + space [Bakir2003]_. Thus, the reconstruction obtained with :meth:`KernelPCA.inverse_transform` is an approximation. See the example linked below for more details. @@ -299,10 +299,10 @@ prediction (kernel dependency estimation). :class:`KernelPCA` supports both International conference on artificial neural networks. Springer, Berlin, Heidelberg, 1997. - .. [Bakir2004] Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. + .. [Bakir2003] Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. `"Learning to find pre-images." - `_ - Advances in neural information processing systems 16 (2004): 449-456. + `_ + Advances in neural information processing systems 16 (2003): 449-456. .. _kPCA_Solvers: From 79b23edc72d4b6178da5871cc6017bc8914d19f8 Mon Sep 17 00:00:00 2001 From: Omar Hassoun <46761760+omtarful@users.noreply.github.com> Date: Wed, 22 Jun 2022 16:59:54 +0300 Subject: [PATCH 130/251] DOC fix link to reference for nonnegative matrix and tensor factorizations (#23718) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/modules/decomposition.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst index 79fae944abfea..540fb22006dd8 100644 --- a/doc/modules/decomposition.rst +++ b/doc/modules/decomposition.rst @@ -961,7 +961,7 @@ is not readily available from the start, or when the data does not fit into memo .. [5] `"Fast local algorithms for large scale nonnegative matrix and tensor factorizations." - `_ + `_ A. Cichocki, A. Phan, 2009 .. [6] :arxiv:`"Algorithms for nonnegative matrix factorization with From 598dd866d36926c35889912c3888828398e08065 Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Thu, 23 Jun 2022 16:58:28 +0530 Subject: [PATCH 131/251] DOC added link to linkcheck_ignore (#23737) --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 430e1714ec6cf..b9b1ccb394983 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -595,6 +595,8 @@ def setup(app): r"http://www.utstat.toronto.edu/~rsalakhu/sta4273/notes/Lecture2.pdf#page=.*", "https://www.fordfoundation.org/media/2976/" "roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf#page=.*", + "https://www.researchgate.net/publication/" + "233096619_A_Dendrite_Method_for_Cluster_Analysis", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", From 4ce0b085cc19848f01007e995dfceff460854813 Mon Sep 17 00:00:00 2001 From: EliaSchiavon <85481745+EliaSchiavon@users.noreply.github.com> Date: Thu, 23 Jun 2022 13:41:18 +0200 Subject: [PATCH 132/251] DOC fix link "Comparison of model selection for regression" (#23736) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/modules/linear_model.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/linear_model.rst b/doc/modules/linear_model.rst index bf372fd52bb1c..c2f18b53f758d 100644 --- a/doc/modules/linear_model.rst +++ b/doc/modules/linear_model.rst @@ -389,10 +389,10 @@ formula is valid only when `n_samples > n_features`. The Annals of Statistics 35.5 (2007): 2173-2192. <0712.0881.pdf>` - .. [13] `Cherkassky, Vladimir, and Yunqian Ma. + .. [13] :doi:`Cherkassky, Vladimir, and Yunqian Ma. "Comparison of model selection for regression." Neural computation 15.7 (2003): 1691-1714. - `_ + <10.1162/089976603321891864>` Comparison with the regularization parameter of SVM ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From 9d74d51a2009ab1465ea4e86f6c4dba36aef14e2 Mon Sep 17 00:00:00 2001 From: Vicente Reyes-Puerta Date: Thu, 23 Jun 2022 15:20:27 +0200 Subject: [PATCH 133/251] MAINT Update to mypy 0.961 to ensure compatibility with python 3.10 (#23729) --- .pre-commit-config.yaml | 2 +- azure-pipelines.yml | 2 +- sklearn/_min_dependencies.py | 2 +- sklearn/model_selection/tests/test_validation.py | 2 +- sklearn/neighbors/tests/test_neighbors.py | 2 +- sklearn/utils/_testing.py | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 6519a849852fc..75d89a1cecb2d 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ repos: - id: flake8 types: [file, python] - repo: https://github.com/pre-commit/mirrors-mypy - rev: v0.782 + rev: v0.961 hooks: - id: mypy files: sklearn/ diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 48c3021745fe0..e303739c5284e 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -34,7 +34,7 @@ jobs: versionSpec: '3.9' - bash: | # Include pytest compatibility with mypy - pip install pytest flake8 mypy==0.782 black==22.3.0 + pip install pytest flake8 mypy==0.961 black==22.3.0 displayName: Install linters - bash: | black --check --diff . diff --git a/sklearn/_min_dependencies.py b/sklearn/_min_dependencies.py index f055037d78be9..3e28d6bc7dc98 100644 --- a/sklearn/_min_dependencies.py +++ b/sklearn/_min_dependencies.py @@ -39,7 +39,7 @@ "pytest-cov": ("2.9.0", "tests"), "flake8": ("3.8.2", "tests"), "black": ("22.3.0", "tests"), - "mypy": ("0.770", "tests"), + "mypy": ("0.961", "tests"), "pyamg": ("4.0.0", "tests"), "sphinx": ("4.0.1", "docs"), "sphinx-gallery": ("0.7.0", "docs"), diff --git a/sklearn/model_selection/tests/test_validation.py b/sklearn/model_selection/tests/test_validation.py index 90b5a605ac2e4..339f98687733d 100644 --- a/sklearn/model_selection/tests/test_validation.py +++ b/sklearn/model_selection/tests/test_validation.py @@ -79,7 +79,7 @@ try: - WindowsError + WindowsError # type: ignore except NameError: WindowsError = None diff --git a/sklearn/neighbors/tests/test_neighbors.py b/sklearn/neighbors/tests/test_neighbors.py index 6b303886e2b5a..6ffd49422b1a3 100644 --- a/sklearn/neighbors/tests/test_neighbors.py +++ b/sklearn/neighbors/tests/test_neighbors.py @@ -70,7 +70,7 @@ ALGORITHMS = ("ball_tree", "brute", "kd_tree", "auto") COMMON_VALID_METRICS = sorted( set.intersection(*map(set, neighbors.VALID_METRICS.values())) -) +) # type: ignore P = (1, 2, 3, 4, np.inf) JOBLIB_BACKENDS = list(joblib.parallel.BACKENDS.keys()) diff --git a/sklearn/utils/_testing.py b/sklearn/utils/_testing.py index 8a94b1f31abee..a3ff844083998 100644 --- a/sklearn/utils/_testing.py +++ b/sklearn/utils/_testing.py @@ -34,7 +34,7 @@ # WindowsError only exist on Windows try: - WindowsError + WindowsError # type: ignore except NameError: WindowsError = None From 77730d8b6c67d90fdfd7ce73822a8ea20565d402 Mon Sep 17 00:00:00 2001 From: Bhoomika <42411552+bhoomikamadhukar@users.noreply.github.com> Date: Fri, 24 Jun 2022 05:51:41 -0400 Subject: [PATCH 134/251] DOC fix Saclay CDS link (#23745) --- doc/about.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/about.rst b/doc/about.rst index 39833a31439ce..5018c5baec761 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -410,7 +410,7 @@ full-time. It also hosts coding sprints and other events.
    `Paris-Saclay Center for Data Science -`_ +`_ funded one year for a developer to work on the project full-time (2014-2015), 50% of the time of Guillaume Lemaitre (2016-2017) and 50% of the time of Joris van den Bossche (2017-2018). From 30a2e01ccc236036c89eb9bb47aa697cbf14472e Mon Sep 17 00:00:00 2001 From: Kanissh <44309040+kanissh@users.noreply.github.com> Date: Fri, 24 Jun 2022 18:21:05 +0530 Subject: [PATCH 135/251] MNT fix add reference to linkcheck_ignore (#23743) --- doc/conf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index b9b1ccb394983..ae9dae20c8b11 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -597,6 +597,9 @@ def setup(app): "roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf#page=.*", "https://www.researchgate.net/publication/" "233096619_A_Dendrite_Method_for_Cluster_Analysis", + "https://www.researchgate.net/publication/" + "221114584_Random_Fourier_Approximations_" + "for_Skewed_Multiplicative_Histogram_Kernels", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", From 61bb2bdf531ed5cd76d3ce49d37958e8933f2c09 Mon Sep 17 00:00:00 2001 From: EliaSchiavon <85481745+EliaSchiavon@users.noreply.github.com> Date: Fri, 24 Jun 2022 17:20:36 +0200 Subject: [PATCH 136/251] MNT Added link to linkcheck_ignore (#23739) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index ae9dae20c8b11..f2165181c4863 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -595,11 +595,13 @@ def setup(app): r"http://www.utstat.toronto.edu/~rsalakhu/sta4273/notes/Lecture2.pdf#page=.*", "https://www.fordfoundation.org/media/2976/" "roads-and-bridges-the-unseen-labor-behind-our-digital-infrastructure.pdf#page=.*", + # links falsely flagged as broken "https://www.researchgate.net/publication/" "233096619_A_Dendrite_Method_for_Cluster_Analysis", "https://www.researchgate.net/publication/" "221114584_Random_Fourier_Approximations_" "for_Skewed_Multiplicative_Histogram_Kernels", + "https://doi.org/10.13140/RG.2.2.35280.02565", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", From 55583cbf421a5874644503255aafdb53cad7fc60 Mon Sep 17 00:00:00 2001 From: Kanishk Sachdev <64576646+kensac@users.noreply.github.com> Date: Mon, 27 Jun 2022 12:30:15 +0530 Subject: [PATCH 137/251] MAINT add link to Bishop book as falsely broken hyperlink (#23761) Co-authored-by: Guillaume Lemaitre --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index f2165181c4863..670bee2781185 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -602,6 +602,8 @@ def setup(app): "221114584_Random_Fourier_Approximations_" "for_Skewed_Multiplicative_Histogram_Kernels", "https://doi.org/10.13140/RG.2.2.35280.02565", + "https://www.microsoft.com/en-us/research/uploads/prod/2006/01/" + "Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", From 6d1d6db20cc884e6f889455cc871cb3f78ba94d2 Mon Sep 17 00:00:00 2001 From: Robin Lenz Date: Mon, 27 Jun 2022 09:04:29 +0200 Subject: [PATCH 138/251] FIX change wrong method name in a FutureWarning (#23756) --- sklearn/utils/metaestimators.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/utils/metaestimators.py b/sklearn/utils/metaestimators.py index 1cee8d1d42cf4..b0b20db7a5017 100644 --- a/sklearn/utils/metaestimators.py +++ b/sklearn/utils/metaestimators.py @@ -200,7 +200,7 @@ def __init__(self, fn, delegate_names, attribute_name): def _check(self, obj): warnings.warn( "if_delegate_has_method was deprecated in version 1.1 and will be " - "removed in version 1.3. Use if_available instead.", + "removed in version 1.3. Use available_if instead.", FutureWarning, ) From 992a97ffdaa2a80b66decd589658d1d5425b0a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Mon, 27 Jun 2022 11:20:21 +0200 Subject: [PATCH 139/251] CI update lock files (#23762) Co-authored-by: Olivier Grisel --- build_tools/azure/debian_atlas_32bit_lock.txt | 2 +- ...onda_defaults_openblas_linux-64_conda.lock | 18 +-- .../py38_conda_forge_mkl_win-64_conda.lock | 65 +++++------ ...e_openblas_ubuntu_1804_linux-64_conda.lock | 57 +++++----- .../azure/py38_pip_openblas_32bit_lock.txt | 2 +- ...latest_conda_forge_mkl_linux-64_conda.lock | 87 ++++++++------- ..._forge_mkl_no_coverage_linux-64_conda.lock | 65 +++++------ ...pylatest_conda_forge_mkl_osx-64_conda.lock | 57 +++++----- ...test_conda_mkl_no_openmp_osx-64_conda.lock | 14 +-- ...st_pip_openblas_pandas_linux-64_conda.lock | 41 +++---- ...pylatest_pip_scipy_dev_linux-64_conda.lock | 22 ++-- build_tools/azure/pypy3_linux-64_conda.lock | 27 +++-- .../py39_conda_forge_linux-aarch64_conda.lock | 43 ++++--- build_tools/github/doc_linux-64_conda.lock | 105 ++++++++++-------- .../doc_min_dependencies_linux-64_conda.lock | 41 ++++--- sklearn/metrics/_ranking.py | 6 +- 16 files changed, 333 insertions(+), 319 deletions(-) diff --git a/build_tools/azure/debian_atlas_32bit_lock.txt b/build_tools/azure/debian_atlas_32bit_lock.txt index b53567f27678d..be62e45dd4a88 100644 --- a/build_tools/azure/debian_atlas_32bit_lock.txt +++ b/build_tools/azure/debian_atlas_32bit_lock.txt @@ -10,7 +10,7 @@ attrs==21.4.0 # via pytest cython==0.29.30 # via -r build_tools/azure/debian_atlas_32bit_requirements.txt -importlib-metadata==4.11.4 +importlib-metadata==4.12.0 # via pytest joblib==1.0.0 # via -r build_tools/azure/debian_atlas_32bit_requirements.txt diff --git a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock index 5adbe4423da6e..dc7e7c7474438 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock @@ -7,11 +7,11 @@ https://repo.anaconda.com/pkgs/main/linux-64/blas-1.0-openblas.conda#9ddfcaef10d https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b https://repo.anaconda.com/pkgs/main/linux-64/libgfortran4-7.5.0-ha8ba4b0_17.conda#e3883581cbf0a98672250c3e80d292bf -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_1.conda#57623d10a70e09e1d048c2b2b6f4e2dd https://repo.anaconda.com/pkgs/main/linux-64/libgfortran-ng-7.5.0-ha8ba4b0_17.conda#ecb35c8952579d5c8dc56c6e076ba948 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_1.conda#b372c0eea9b60732fdae4b817a63c8cd https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_1.conda#a87728dabf3151fb9cfa990bd2eb0464 https://repo.anaconda.com/pkgs/main/linux-64/expat-2.4.4-h295c915_0.conda#f9930c60940181cf06d0bd0b8095063c https://repo.anaconda.com/pkgs/main/linux-64/giflib-5.2.1-h7b6447c_0.conda#c2583ad8de5051f19479580c58336f15 https://repo.anaconda.com/pkgs/main/linux-64/icu-58.2-he6710b0_3.conda#48cc14d5ad1a9bcd8dac17211a8deb8b @@ -30,22 +30,22 @@ https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e https://repo.anaconda.com/pkgs/main/linux-64/glib-2.69.1-h4ff587b_1.conda#4c3eae7c0b8b1c8fb3046a0740313bbf https://repo.anaconda.com/pkgs/main/linux-64/libpng-1.6.37-hbc83047_0.conda#689f903925dcf6c5ab7bc1de0f58b67b -https://repo.anaconda.com/pkgs/main/linux-64/libxml2-2.9.12-h74e7548_2.conda#eff5ba91c84a8329c2a1117bee13cd68 +https://repo.anaconda.com/pkgs/main/linux-64/libxml2-2.9.14-h74e7548_0.conda#2eafeb1cb5f00b034d150f3d70436e52 https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 -https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.12-h1ccaba5_0.conda#fa10ff4aa631fa4aa090a6234d7770b9 https://repo.anaconda.com/pkgs/main/linux-64/zstd-1.5.2-ha4553b6_0.conda#0e926a5f2e02fe4a9376ece4b732ce36 https://repo.anaconda.com/pkgs/main/linux-64/dbus-1.13.18-hb2f20db_0.conda#6a6a6f1391f807847404344489ef6cf4 https://repo.anaconda.com/pkgs/main/linux-64/freetype-2.11.0-h70c0345_0.conda#b767874a6273e1058027cb2e300d00ac https://repo.anaconda.com/pkgs/main/linux-64/gstreamer-1.14.0-h28cd5cc_2.conda#6af5d0cbd7310e1cd8a6a5c1c99649b2 https://repo.anaconda.com/pkgs/main/linux-64/libtiff-4.2.0-h2818925_1.conda#4197d70794ffb5386cf9d4b59233c481 -https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.5-hc218d9a_0.conda#ed2668e84d5e2730827ad737bc5231a3 https://repo.anaconda.com/pkgs/main/linux-64/fontconfig-2.13.1-h6c09931_0.conda#fa04e89166d4b44326c6d76e2f708715 https://repo.anaconda.com/pkgs/main/linux-64/gst-plugins-base-1.14.0-h8213a91_2.conda#838648422452405b86699e780e293c1d https://repo.anaconda.com/pkgs/main/linux-64/lcms2-2.12-h3be6417_0.conda#719db47afba9f6586eecb5eacac70bff https://repo.anaconda.com/pkgs/main/linux-64/libwebp-1.2.2-h55f646e_0.conda#c9ed6bddefc09dbfc246301c3ce3ca14 https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.13-h12debd9_0.conda#edc17980bae484b711e090f0a0cbbaef https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py38h06a4308_0.conda#dee2837b4ce535119636eb15ab312fd2 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py38h06a4308_0.conda#ebd13bbcc4bd93d8e743be775cc9b865 https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/linux-64/coverage-6.2-py38h7f8727e_0.conda#34a3006ca7d8d286b63593b31b845ace https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab @@ -62,7 +62,7 @@ https://repo.anaconda.com/pkgs/main/noarch/py-1.11.0-pyhd3eb1b0_0.conda#7205a898 https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda#135a72ff2a31150a3a3ff0b1edd41ca9 https://repo.anaconda.com/pkgs/main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda#6bca2ae9c9aae9ccdebcb8cf2aa87cb3 https://repo.anaconda.com/pkgs/main/linux-64/pysocks-1.7.1-py38h06a4308_0.conda#21c67581f3a81ffbb02728eb2178d693 -https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda#76415b791ffd2007687ac5f0665aa7af +https://repo.anaconda.com/pkgs/main/linux-64/pytz-2022.1-py38h06a4308_0.conda#d9e022584b586338e235e41a76ccc657 https://repo.anaconda.com/pkgs/main/linux-64/qt-5.9.7-h5867ecd_1.conda#05507dbc35c46ac5a7066fc860a62341 https://repo.anaconda.com/pkgs/main/linux-64/sip-4.19.13-py38h295c915_0.conda#2046e66b7d12f7c0cda5687e4c27b692 https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 @@ -80,7 +80,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/brotlipy-0.7.0-py38h27cfd23_1003.co https://repo.anaconda.com/pkgs/main/linux-64/cryptography-37.0.1-py38h9ce1e76_0.conda#16d301ed789096eb9881a25ed7a1155e https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-base-3.1.2-py38hef1b27d_1.conda#5e99f974f4c2757791aa10a27596230a https://repo.anaconda.com/pkgs/main/linux-64/pandas-1.2.4-py38ha9443f7_0.conda#5bd3fd807a294f387feabc65821b75d0 -https://repo.anaconda.com/pkgs/main/linux-64/pytest-7.1.1-py38h06a4308_0.conda#630c0a0aff5f50ea71e2bf33389e1d5c +https://repo.anaconda.com/pkgs/main/linux-64/pytest-7.1.2-py38h06a4308_0.conda#8d7f526a3d29273e06957d302f515755 https://repo.anaconda.com/pkgs/main/linux-64/scipy-1.3.2-py38he2b7bc3_0.conda#a9df91d5a41c1f39524fc8a53c56bc29 https://repo.anaconda.com/pkgs/main/linux-64/matplotlib-3.1.2-py38_1.conda#1781036a02c5def820ea2923074d158a https://repo.anaconda.com/pkgs/main/linux-64/pyamg-4.1.0-py38h9a67853_0.conda#9b0bffd5f67e0c5ee3c226e5518991fb diff --git a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock index f07997f0b5836..2ee89b6242ae9 100644 --- a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock @@ -2,9 +2,9 @@ # platform: win-64 # input_hash: fd41626afa3bcc2a9426dfc064e304c781f514d4aeaa08010d30385c8baa9609 @EXPLICIT -https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2022.5.18.1-h5b45459_0.tar.bz2#8fd522807e4af321181e74ae05f27ec8 +https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2022.6.15-h5b45459_0.tar.bz2#b84069692c33afe59f31c7117c80696e https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2022.1.0-h57928b3_3787.tar.bz2#35dff2b6e944ce136a574c4c006cec28 -https://conda.anaconda.org/conda-forge/win-64/mkl-include-2022.0.0-h0e2418a_796.tar.bz2#7e7184f5402aed0e2bf84d0e2cb215d1 +https://conda.anaconda.org/conda-forge/win-64/mkl-include-2022.1.0-h6a75c08_874.tar.bz2#414f6ab96ad71e7a95bd00d990fa3473 https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2#b0309b72560df66f71a9d5e34a5efdfa https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.20348.0-h57928b3_0.tar.bz2#6d666b6ea8251231ff508062d1e41f9c https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2#53a1c73e1e3d185516d7e3af177596d9 @@ -14,19 +14,18 @@ https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz https://conda.anaconda.org/conda-forge/win-64/vc-14.2-hb210afc_6.tar.bz2#c2aecbc9b00ba6f352e27d3d61fd31fb https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h8ffe710_4.tar.bz2#7c03c66026944073040cb19a4f3ec3c9 https://conda.anaconda.org/conda-forge/win-64/icu-70.1-h0e60522_0.tar.bz2#64073396a905b6df895ab2489fae3847 -https://conda.anaconda.org/conda-forge/win-64/jbig-2.1-h8d14728_2003.tar.bz2#37dcc26d63c315f6c0588579dca810da https://conda.anaconda.org/conda-forge/win-64/jpeg-9e-h8ffe710_1.tar.bz2#cda58df0a6d1165a82a0dfd59e9be5b0 https://conda.anaconda.org/conda-forge/win-64/lerc-3.0-h0e60522_0.tar.bz2#756c8b51a32758df2ed6cddcc7b7ed58 https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.0.9-h8ffe710_7.tar.bz2#e7b12a6cf353395dda7ed36b9041048b -https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.10-h8ffe710_0.tar.bz2#ad4246997621fdf913fe6f958bc16fd4 +https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.12-h8ffe710_0.tar.bz2#81735cd9af2e06a4eef556ed84fb4640 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.16-he774522_0.tar.bz2#bdfeadc9348e4d9fbe4821e81bf8f221 https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.4-h8ffe710_1.tar.bz2#04286d905a0dcb7f7d4a12bdfe02516d https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.2.2-h8ffe710_1.tar.bz2#24e23990217d3542fb821759a41d6ec2 -https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.11-h8ffe710_1014.tar.bz2#5e57ffcf6d651d94d329a3e9ce1f8f21 +https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.12-h8ffe710_1.tar.bz2#8b67614ab0539e803c03db2ed7990c6c https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.3-h8ffe710_1.tar.bz2#d12763533276560a931c1bd3df1adf63 https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2#066552ac6b907ec6d72c0ddab29050dc -https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1o-h8ffe710_0.tar.bz2#afd7ea72111c4cc1fe8101ae2a321bda +https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1p-h8ffe710_0.tar.bz2#2c34e13bb68c9ece446b5f96eb55d543 https://conda.anaconda.org/conda-forge/win-64/pcre-8.45-h0e60522_0.tar.bz2#3cd3948bb5de74ebef93b6be6d8cf0d5 https://conda.anaconda.org/conda-forge/win-64/sqlite-3.38.5-h8ffe710_0.tar.bz2#9f9c961fc099c7c91a27f38890c42498 https://conda.anaconda.org/conda-forge/win-64/tbb-2021.5.0-h2d74725_1.tar.bz2#8f00f39dbd7deaba11410b0b6e7b2cb4 @@ -36,29 +35,29 @@ https://conda.anaconda.org/conda-forge/win-64/gettext-0.19.8.1-ha2e2712_1008.tar https://conda.anaconda.org/conda-forge/win-64/krb5-1.19.3-h1176d77_0.tar.bz2#2e0d447ab95d58d3ea1222121ec57f9f https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.0.9-h8ffe710_7.tar.bz2#ca57bf17ba92eed4ca2667a4c5df9343 https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.0.9-h8ffe710_7.tar.bz2#75c0a84c7f22d57cda6aaf7205b4a27c -https://conda.anaconda.org/conda-forge/win-64/libclang13-14.0.3-default_h77d9078_0.tar.bz2#7e38ed4e8cde97ab81ac251c3cbe8212 +https://conda.anaconda.org/conda-forge/win-64/libclang13-14.0.6-default_h77d9078_0.tar.bz2#4d9ea47241ea0851081dfe223c76e3b3 https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h0e60522_0.tar.bz2#e1a22282de0169c93e4ffe6ce6acc212 https://conda.anaconda.org/conda-forge/win-64/libwebp-1.2.2-h57928b3_0.tar.bz2#80c0ce63cf8f69c5a5781ab7a9645942 https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2#fe759119b8b3bfa720b8762c6fdc35de -https://conda.anaconda.org/conda-forge/win-64/mkl-2022.0.0-h0e2418a_796.tar.bz2#54baa34953c02445bfd6f566c45decbb +https://conda.anaconda.org/conda-forge/win-64/mkl-2022.1.0-h6a75c08_874.tar.bz2#2ff89a7337a9636029b4db9466e9f8e3 https://conda.anaconda.org/conda-forge/win-64/python-3.8.13-h9a09f29_0_cpython.tar.bz2#41de0ad5db009f4f829f9d415a6a4200 -https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.11-h8ffe710_1014.tar.bz2#8f3f8b243814bddb2898c314ed024e03 +https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.12-h8ffe710_1.tar.bz2#852c4716604f74676b90e62df4b52d36 https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.2-h6255e5f_1.tar.bz2#90702967af600ea2e2c7f7968c0ce099 https://conda.anaconda.org/conda-forge/noarch/atomicwrites-1.4.0-pyh9f0ad1d_0.tar.bz2#5e36230ffaf3b7bb599424592684ae53 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.0.9-h8ffe710_7.tar.bz2#fd458f76be2068973734834202ac0352 https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 -https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-14_win64_mkl.tar.bz2#5166ac76c8e0607a2977cf3331ed37a9 -https://conda.anaconda.org/conda-forge/win-64/libclang-14.0.3-default_h77d9078_0.tar.bz2#1988b8c400db69820a72e9a5015988e7 +https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-15_win64_mkl.tar.bz2#661187f959fed1821cdd6921a738336d +https://conda.anaconda.org/conda-forge/win-64/libclang-14.0.6-default_h77d9078_0.tar.bz2#39e84500879d1638f1cdca7a289bcf41 https://conda.anaconda.org/conda-forge/win-64/libglib-2.70.2-h3be07f2_4.tar.bz2#355750a238b15920d75ec3c49554c3e3 https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.37-h1d00b33_2.tar.bz2#005ddb14b8f876ed6a85b76dfc9892db -https://conda.anaconda.org/conda-forge/win-64/libtiff-4.3.0-hc4061b1_3.tar.bz2#2e9f4af7dd16047f2f370562fb9e81fc -https://conda.anaconda.org/conda-forge/win-64/mkl-devel-2022.0.0-h57928b3_797.tar.bz2#88bea1a9a80bea1270e7017994142816 +https://conda.anaconda.org/conda-forge/win-64/libtiff-4.4.0-h2ed3b44_1.tar.bz2#2c0c44be2cd4d32b677d311a27130724 +https://conda.anaconda.org/conda-forge/win-64/mkl-devel-2022.1.0-h57928b3_875.tar.bz2#6319a06307af296c1dfae93687c283b2 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2#a1f820480193ea83582b13249a7e7bd9 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 @@ -73,49 +72,51 @@ https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.9-hcd874cb_0.tar.bz2#9cef622e75683c17d05ae62d66e69e6c https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2#46878ebb6b9cbd8afcf8088d7ef00ece https://conda.anaconda.org/conda-forge/win-64/brotli-1.0.9-h8ffe710_7.tar.bz2#bdd3236d1f6962e8e6953276d12b7e5b -https://conda.anaconda.org/conda-forge/win-64/certifi-2022.5.18.1-py38haa244fe_0.tar.bz2#1361583065fbab1bd665946811b867f0 +https://conda.anaconda.org/conda-forge/win-64/certifi-2022.6.15-py38haa244fe_0.tar.bz2#88eb5b7ef2bb7238573273a6ff04e461 https://conda.anaconda.org/conda-forge/win-64/cffi-1.15.0-py38hd8c33c5_0.tar.bz2#b6a0fcd49b88b2fef6892785c8e33092 https://conda.anaconda.org/conda-forge/win-64/coverage-6.2-py38h294d835_0.tar.bz2#9fcad0bc875eb5cf8b7e45e128cfd886 https://conda.anaconda.org/conda-forge/win-64/cython-0.29.30-py38h885f38d_0.tar.bz2#7cdd65a187c9c04207b394b67c6cf64b https://conda.anaconda.org/conda-forge/win-64/freetype-2.10.4-h546665d_1.tar.bz2#1215a2e49d23da91c28d97cff8de35ea -https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.20.2-hdff456e_1.tar.bz2#ddebb9004ed53fbf745a2f69faf22b6b -https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.2-py38hbd9d945_1.tar.bz2#171f7a504550a6093548f618df9a76f5 +https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.70.2-h7755175_4.tar.bz2#8ad7cafc2cc5a0e2260ac1ac668e29d3 +https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.3-py38hbd9d945_0.tar.bz2#37c1257ed3394963041816dc1c3b7100 https://conda.anaconda.org/conda-forge/win-64/lcms2-2.12-h2a16943_0.tar.bz2#fee639c27301c4165b4d1f7e442de8a5 -https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-14_win64_mkl.tar.bz2#b73477bd66b6efdcbcb8c7fb527794ae -https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-14_win64_mkl.tar.bz2#741ce71c5f5522fbec9508830b05cc32 +https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-15_win64_mkl.tar.bz2#c6012601cd7dde1b4108128fb847de9f +https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-15_win64_mkl.tar.bz2#7915daedfea4cc94ffcaa71cde184f50 https://conda.anaconda.org/conda-forge/win-64/libxcb-1.13-hcd874cb_1004.tar.bz2#a6d7fd030532378ecb6ba435cd9f8234 https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.4.0-hb211442_1.tar.bz2#0991d2e943e5ba7ec9b7b32eec14e2e3 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/win-64/pluggy-1.0.0-py38haa244fe_3.tar.bz2#bd23d4e34ce9647a448d8048be89b2dd https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/win-64/setuptools-62.3.2-py38haa244fe_0.tar.bz2#febb3e2b2bba5e1e9b1d202d34c811c4 +https://conda.anaconda.org/conda-forge/win-64/setuptools-62.6.0-py38haa244fe_0.tar.bz2#a39694c8a0a12b3ca1985628ae532e21 https://conda.anaconda.org/conda-forge/win-64/tornado-6.1-py38h294d835_3.tar.bz2#f7ac7c9ee9c07ff085df3564b9ea70f2 https://conda.anaconda.org/conda-forge/win-64/unicodedata2-14.0.0-py38h294d835_1.tar.bz2#957e1074c481cbeba55ac1a5e4c07637 https://conda.anaconda.org/conda-forge/win-64/win_inet_pton-1.1.0-py38haa244fe_4.tar.bz2#8adadd81dc9c22710b69628ec6e6d41a https://conda.anaconda.org/conda-forge/win-64/brotlipy-0.7.0-py38h294d835_1004.tar.bz2#f12a527d29a252cef0abbfd752d3ab01 https://conda.anaconda.org/conda-forge/win-64/cryptography-37.0.2-py38hb7941b4_0.tar.bz2#8eecebc1af1259fbc204f94e47c26e5d https://conda.anaconda.org/conda-forge/win-64/fonttools-4.33.3-py38h294d835_0.tar.bz2#092c08f5f754280122530958639839d1 -https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.20.2-he07aa86_1.tar.bz2#fb9c7ea19dea6268a5cb8cf6b43ebca9 +https://conda.anaconda.org/conda-forge/win-64/glib-2.70.2-h7755175_4.tar.bz2#ba2f99a6a8ed567eeae3f09a6e8c018a https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-14_win64_mkl.tar.bz2#7f34614de31d915e048f9fc5d50c9529 -https://conda.anaconda.org/conda-forge/win-64/numpy-1.22.4-py38h1d2777f_0.tar.bz2#ef3ee9177792411be8101125ea5bd50f -https://conda.anaconda.org/conda-forge/win-64/pillow-9.1.1-py38hd8e0db4_0.tar.bz2#c14d08dfe6367ae2d8db3c785094ef9b -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-15_win64_mkl.tar.bz2#383596ab975e586b0964b5fd959bea78 +https://conda.anaconda.org/conda-forge/win-64/numpy-1.23.0-py38h223ccf5_0.tar.bz2#a66d0214533f264a5e8fb233b6defd8c +https://conda.anaconda.org/conda-forge/win-64/pillow-9.1.1-py38hd8e0db4_1.tar.bz2#49027d99307bd22d7646be63e6537555 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/win-64/pysocks-1.7.1-py38haa244fe_5.tar.bz2#81fd9157802c3d99efc4a24563cfe885 https://conda.anaconda.org/conda-forge/win-64/pytest-7.1.2-py38haa244fe_0.tar.bz2#523814dad1e91a414e8e449aae2202ec https://conda.anaconda.org/conda-forge/win-64/sip-6.5.1-py38h885f38d_2.tar.bz2#61080bcdb3a9c61ef47d8afc7eae5232 -https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-14_win64_mkl.tar.bz2#5b29a65b3456d68f42b8eb516409316a +https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-15_win64_mkl.tar.bz2#9504c3464d7df789d8bcb98cba64bd33 +https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.20.3-hdff456e_0.tar.bz2#e0d08ff2d3539aec413c14ad00f95c05 https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.5.2-py38he529843_0.tar.bz2#437b6a636997b284e69d33360d88e634 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.9.0-py38h885f38d_0.tar.bz2#61ec05b4445091a90a769785710f2e2c +https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.9.0-py38h885f38d_1.tar.bz2#a609231d3e43680d8f134b4386ea9499 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f -https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.3-h467ea89_1.tar.bz2#a6148c66e63782296ae0ccbc60745693 https://conda.anaconda.org/conda-forge/win-64/scipy-1.8.1-py38h9bf8e03_0.tar.bz2#cd06e46ce3f0140becc4c0aed56938d0 -https://conda.anaconda.org/conda-forge/win-64/blas-2.114-mkl.tar.bz2#df41b867954336603ad9c8d21a829867 -https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.4-py38h885f38d_0.tar.bz2#a7855cbd399e5c173739a1122420db9b +https://conda.anaconda.org/conda-forge/win-64/blas-2.115-mkl.tar.bz2#7a7efb718a4da3f8f4e4268c5828efe1 +https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.20.3-he07aa86_0.tar.bz2#85bce748dddf6ecc690f8d29f464b1cf https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 -https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.5.2-py38haa244fe_0.tar.bz2#3f67b7e43451da103b28f5fab2fe8feb -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.4-h467ea89_2.tar.bz2#2471d740deef9ff39f309a872ad1e2bd +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 +https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.4-py38h75e37d8_1.tar.bz2#92d208d34845e0605e0b429e16f2f028 +https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.5.2-py38haa244fe_0.tar.bz2#3f67b7e43451da103b28f5fab2fe8feb diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock index 9572873c3e61c..64a508e88c0f6 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock @@ -3,7 +3,7 @@ # input_hash: 4a8f7bb9d2356ef6924ecbaa2de77c00a72130606a77d03cba997fdc114cbcb7 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb @@ -21,12 +21,11 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 @@ -36,18 +35,18 @@ https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_openblas.tar.bz2#04eb983975a1be3e57d6d667414cd774 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 @@ -55,43 +54,43 @@ https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h28343ad_4.tar.b https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.tar.bz2#eb0ab80f8c0e15febcd644c43d1386ba https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-he2d8382_0.tar.bz2#54f2d76854c8fd049560228fcc085a33 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-he2d8382_0.tar.bz2#73038d5278e922bb655235ee18545ced https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.13-ha86cf86_0_cpython.tar.bz2#39183fc3fc91579b466dfa767d2ef4b1 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_openblas.tar.bz2#2b5095be485bdb407ff3134358c3ca9c https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 @@ -101,31 +100,33 @@ https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py38h578d9bd_0.tar.bz2#429a49d95358a078211aad97c4fc286c +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e177657aa07ab306bd1bbcdf80e69 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py38hfa26641_0.tar.bz2#189de973189a5550f34a6c1131dcd15d -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py38h99721a1_0.tar.bz2#fc4f99d9d9296861d09d487c7c32069f +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py38h43d8883_0.tar.bz2#0719de23a2c5aa0b4db25ee34394e8f3 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py38h3a7f9d9_0.tar.bz2#bde7c584b811ef5aec0dd2204e502334 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_0.tar.bz2#b2135f7c9f4ba2ef94666946c8238d03 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_8.tar.bz2#11b72f5b1cc15427c89232321172a0bc https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py38h578d9bd_0.tar.bz2#8b04fc38afd584d2531e630e1a59abd9 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py38h578d9bd_0.tar.bz2#4dbffb6d975f26cd71fb27aa20fc4761 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h0a891b7_1.tar.bz2#83df0e9e3faffc295f12607438691465 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py38h0a891b7_0.tar.bz2#fd11badf5b3f7d738cc983cb2c75946e +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py38h47df419_1.tar.bz2#0cdb1150994e0c449b25d6f92b69eda2 -https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.tar.bz2#acfc7625a212c27f7decdca86fdb2aba +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py38h47df419_0.tar.bz2#91c5ac3f8f0e55a946be7b9ce489abfe https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py38h1ee437e_0.tar.bz2#a0a8bc19d491ec659a534c9a11cf74a0 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py38h826bfd8_0.tar.bz2#107af20136422bcabf9f1195f6262117 https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py38h514daf8_0.tar.bz2#b668a53168c9e66fd5948cf9a456ae50 +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py38h0ffb2e6_8.tar.bz2#acfc7625a212c27f7decdca86fdb2aba +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py38h7400c14_8.tar.bz2#78a2a6cb4ef31f997c1bee8223a9e579 https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py38h7400c14_8.tar.bz2#857894ea9c5e53c962c3a0932efa71ea -https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38h578d9bd_8.tar.bz2#88368a5889f31dff922a2d57bbfc3f5b -https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py38h578d9bd_0.tar.bz2#b15039e7f67b5f91c35f9b6d27c2775c diff --git a/build_tools/azure/py38_pip_openblas_32bit_lock.txt b/build_tools/azure/py38_pip_openblas_32bit_lock.txt index 6ee885e4605b6..94b51d5d0f70c 100644 --- a/build_tools/azure/py38_pip_openblas_32bit_lock.txt +++ b/build_tools/azure/py38_pip_openblas_32bit_lock.txt @@ -14,7 +14,7 @@ iniconfig==1.1.1 # via pytest joblib==1.1.0 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt -numpy==1.22.4 +numpy==1.23.0 # via # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt # scipy 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 e9f1c1d8334d8..219cc35fecf5f 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 @@ -3,7 +3,7 @@ # input_hash: c37a5ebd9e5b96fd88fd4f70f9850219fb4ff1d23468f3ff179d0188e72b9538 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb @@ -11,28 +11,26 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.ta https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 -https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 +https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2#2dcd1acca05c11410d4494d7fc7dfa2a https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c -https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.6.1-h7f98852_0.tar.bz2#0347ce6a34f8b55b544b141432c6d4c7 https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_0.tar.bz2#ec47e97c8e0b27dcadbebc4d17764548 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 -https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2#3f3258d8f841fbac63b36b75bdac1afd -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 @@ -40,13 +38,14 @@ https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee +https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d @@ -56,57 +55,63 @@ https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f6 https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f -https://conda.anaconda.org/conda-forge/linux-64/libcap-2.51-h166bdaf_1.tar.bz2#875e5931fb2faa6dacb4c13672630ae3 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.64-ha37c62d_0.tar.bz2#5896fbd58d0376df8556a4aba1ce4f71 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 -https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.3-he0ac6c6_0.tar.bz2#8ab9f9c0fc641b53c5f87368e41af18d +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-he0ac6c6_0.tar.bz2#f5759f0c80708fbf9c4836c0cb46d0fe https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.tar.bz2#c01640c8bad562720d6caff0402dbd96 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h57a0ea0_5.tar.bz2#5469312a373f481c05c380897fd7c923 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.3-default_h3a83d3e_0.tar.bz2#1a571eb098b894a66642cd8b638f5f1d +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.5-default_h3a83d3e_0.tar.bz2#493aec1de0f0e09e921eff6206cafff6 https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b -https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2#b9c8f925797a93dbff45e1626b025a6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h166bdaf_0.tar.bz2#0a8e20a8aef954390b9481a527421a8c https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 -https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.3-default_h2e3cab8_0.tar.bz2#2343b7c11c031c5415b28641eb81275d +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_mkl.tar.bz2#1ffa5033a4fa691d679dabca44bb60f4 +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.5-default_h2e3cab8_0.tar.bz2#8b1cd508fcf54a5c8c5766c549272b6e https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13980beea7c55e6b68db1349f25bd454 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-hd77ab85_0.tar.bz2#7024df220bd8680192d4bad4024122d1 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 +https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2#69ba49e445f87aea2cba343a71a35ca2 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 -https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h9a8a25e_0_cpython.tar.bz2#4c6ebd5ba5e606f77a58154b37d96851 +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.5-h582c2e5_0_cpython.tar.bz2#ccbed83043b9b7b5693164591317f327 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h166bdaf_0.tar.bz2#c9b568bd804cb2903c6be6f5f68182e4 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 -https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-hfd4fe87_1001.tar.bz2#a44a1d690250f6bbb01b7e328ea0c719 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_mkl.tar.bz2#27fda2535874f86f52c0fb382208be76 -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_mkl.tar.bz2#a399241e54c43f219e65781995516a1e +https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-h8c3723f_1002.tar.bz2#7b3f287fcb7683f67b3d953b79f412ea +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_mkl.tar.bz2#98a0dc4760b53d7d7ae24e232b4a1e44 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_mkl.tar.bz2#8803915f72ba0742c4f4c86ab02e67d1 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff @@ -117,42 +122,44 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py310hff52083_0.tar.bz2#cfdf8a8dda4e471ecdb196c0f34a85e0 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py310hff52083_0.tar.bz2#a5087d46181f812a662fbe20352961ee https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py310h0fdd8cc_0.tar.bz2#7b7366be82277a5a210e48cc6d25ce26 https://conda.anaconda.org/conda-forge/linux-64/coverage-6.2-py310h6acc77f_0.tar.bz2#3a96cddd907fb4ecb34d0ee8205ee708 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py310h4ef5377_0.tar.bz2#a97b04c2d88d24d4a25fd9c069189281 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py310hbf28c38_0.tar.bz2#93b57192dd2e93b6d5ed00be96e8ae55 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_mkl.tar.bz2#ed59083832eb21f831ad847419a53855 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py310h53a5b5f_0.tar.bz2#16493af3907dbd772904e15bf24948d8 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_0.tar.bz2#0195bd87c50562a09b79ea9a4af8c0f5 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_1.tar.bz2#d7052b5cef119518ca362a2ff633a36d https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 -https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-hb166930_4.tar.bz2#7c165f1b39385b9fee1f279005ee512e +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2#378f2260e871f3ea46c6fa58d9f05277 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py310hff52083_0.tar.bz2#b9c10ed1a8a0e0abc4017f73789e666b +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py310hff52083_0.tar.bz2#7fc5b1d6db9f6a9307330303a3edb04d https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_mkl.tar.bz2#bf390b2b17bf22decf8bd7c1ad905fac https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1004.tar.bz2#6499bb11b7feffb63b26847fc9181319 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py310h597c629_0.tar.bz2#7b40622ed00061cc8f803c5ed3c62707 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py310h769672d_0.tar.bz2#e48c810453df0f03bb8fcdff5e1d9e9d https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py310hff52083_0.tar.bz2#5d44c6ab93d445b6c433914753390e86 -https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py310h7612f91_0.tar.bz2#14a7ea0620e4c0801bee756171f4dc03 https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py310h122e73d_2.tar.bz2#f485cb3efb4c179928a96fb2e02e6f7e -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-mkl.tar.bz2#415a1741a10128d016b685ce5a9b8ac4 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py310hd8f1fbe_0.tar.bz2#b524296ac16718d06c0e3389668c27f6 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py310hd8f1fbe_1.tar.bz2#21ae1ac216cfc85e24dc7c09570ddf31 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py310hd8f1fbe_0.tar.bz2#13c89455637a2f2c66c0bd5624eb6d42 +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.4-ha5833f6_2.tar.bz2#dd3aa6715b9e9efaf842febf18ce4261 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py310h29803b5_1.tar.bz2#d34f0b4c9ad5705d0ffe501d5d8aa26f https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock index b9fbfa708c752..b95b1f2079c5a 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock @@ -3,7 +3,7 @@ # input_hash: 7f42fec6989da8219b1c3ea2edc884a39f31df1acf891ad7307070c2d02e86c0 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb @@ -11,7 +11,7 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-hab24e00_0.ta https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 -https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.0.1-h8d4b97c_803.tar.bz2#8ec10f10b8dd27682e8df201466e7416 +https://conda.anaconda.org/conda-forge/linux-64/mkl-include-2022.1.0-h84fe81f_915.tar.bz2#2dcd1acca05c11410d4494d7fc7dfa2a https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 @@ -23,12 +23,11 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 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/libhiredis-1.0.2-h2cc385e_0.tar.bz2#b34907d3a81a3cd8095ee83d174c074a https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 @@ -37,11 +36,11 @@ https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d @@ -56,11 +55,11 @@ https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h28343ad_4.tar.b https://conda.anaconda.org/conda-forge/linux-64/libllvm13-13.0.1-hf817b99_2.tar.bz2#47da3ce0d8b2e65ccb226c186dd91eba https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.tar.bz2#eb0ab80f8c0e15febcd644c43d1386ba -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 @@ -68,32 +67,32 @@ https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 -https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.0.1-h8d4b97c_803.tar.bz2#11eb515b8a4a00ce88f3bfadbdf93fb3 +https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2#b9c8f925797a93dbff45e1626b025a6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_mkl.tar.bz2#0ba8f265a4569ffaca8afcb8e4e45229 -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-he2d8382_0.tar.bz2#54f2d76854c8fd049560228fcc085a33 +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_mkl.tar.bz2#1ffa5033a4fa691d679dabca44bb60f4 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-he2d8382_0.tar.bz2#73038d5278e922bb655235ee18545ced https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b -https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.0.1-ha770c72_804.tar.bz2#7482474161fad566d2e0ad239ec7d397 +https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2#69ba49e445f87aea2cba343a71a35ca2 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 -https://conda.anaconda.org/conda-forge/linux-64/python-3.10.4-h2660328_0_cpython.tar.bz2#0f72b088a5471e97309031e1636e7b3f +https://conda.anaconda.org/conda-forge/linux-64/python-3.10.5-ha86cf86_0_cpython.tar.bz2#55a9dbd539c8af4e1a0ff5d87c1f3a14 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_mkl.tar.bz2#27fda2535874f86f52c0fb382208be76 -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_mkl.tar.bz2#a399241e54c43f219e65781995516a1e +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_mkl.tar.bz2#98a0dc4760b53d7d7ae24e232b4a1e44 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_mkl.tar.bz2#8803915f72ba0742c4f4c86ab02e67d1 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -102,33 +101,35 @@ https://conda.anaconda.org/conda-forge/noarch/pytz-2022.1-pyhd8ed1ab_0.tar.bz2#b https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5f25f8dbc060e9a8d912e432202afc2 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py310hff52083_0.tar.bz2#cfdf8a8dda4e471ecdb196c0f34a85e0 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py310hff52083_0.tar.bz2#a5087d46181f812a662fbe20352961ee https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py310hbf28c38_1.tar.bz2#bdcb1a21784068970002c284ef8cd2c8 -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_mkl.tar.bz2#7e36a168fdabe3e4f0ba21d5494022bc -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py310h4ef5377_0.tar.bz2#a97b04c2d88d24d4a25fd9c069189281 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py310hbf28c38_0.tar.bz2#93b57192dd2e93b6d5ed00be96e8ae55 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_mkl.tar.bz2#ed59083832eb21f831ad847419a53855 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py310h53a5b5f_0.tar.bz2#16493af3907dbd772904e15bf24948d8 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_0.tar.bz2#0195bd87c50562a09b79ea9a4af8c0f5 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_1.tar.bz2#d7052b5cef119518ca362a2ff633a36d https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py310hff52083_0.tar.bz2#b9c10ed1a8a0e0abc4017f73789e666b +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py310hff52083_0.tar.bz2#7fc5b1d6db9f6a9307330303a3edb04d https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_mkl.tar.bz2#6ee619f3d0f773b12792eeaa7385089c +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_mkl.tar.bz2#bf390b2b17bf22decf8bd7c1ad905fac https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py310h769672d_1.tar.bz2#b25e65d00288c8165ab46d67872a74ec -https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py310h769672d_0.tar.bz2#e48c810453df0f03bb8fcdff5e1d9e9d https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py310hff52083_0.tar.bz2#5d44c6ab93d445b6c433914753390e86 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py310h7612f91_0.tar.bz2#14a7ea0620e4c0801bee756171f4dc03 -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-mkl.tar.bz2#34826522d3e5c36e010b774da7b5e5b4 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-mkl.tar.bz2#415a1741a10128d016b685ce5a9b8ac4 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 +https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/qt-5.12.9-h1304e3e_6.tar.bz2#f2985d160b8c43dd427923c04cd732fe +https://conda.anaconda.org/conda-forge/linux-64/pyqt-impl-5.12.3-py310h1f8e252_8.tar.bz2#248a59258a0a6d4d8c0f66c39a150781 +https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/pyqtchart-5.12-py310hfcd6d55_8.tar.bz2#e7daa09dba0d95a874c3d0a678665e77 https://conda.anaconda.org/conda-forge/linux-64/pyqtwebengine-5.12.1-py310hfcd6d55_8.tar.bz2#f78e8d66e92e73e8fda274664888b2a2 -https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py310hff52083_8.tar.bz2#f75c4f1fe3bd1a15ae0d2e5f33bc75e6 -https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e 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 3765653df6323..c4fb6e56a84eb 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 @@ -3,20 +3,19 @@ # input_hash: 124a7dac0edb63e994220b2ef3792fdff0ef02db5046de94437ca0fb2f0f4bb8 @EXPLICIT https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5 -https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2022.5.18.1-h033912b_0.tar.bz2#8daebfd1f22a51afecb341604b86689c +https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2022.6.15-h033912b_0.tar.bz2#d16674f96e47de0d08af3fc97803134e https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hbcb3906_2.tar.bz2#be8f747c37e4d7e346c133e641966750 -https://conda.anaconda.org/conda-forge/osx-64/jbig-2.1-h0d85af4_2003.tar.bz2#4d76d11d3a256931926099498aa3565b https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-h5eb16cf_1.tar.bz2#9d52137dd3f98b32dee941642901d08f https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-h5eb16cf_7.tar.bz2#898a296a93b36e42a065963bb4504f2b -https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.3-hc203e6f_0.tar.bz2#169cb4aae14ca89851deda1756b2ebf7 -https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.10-h0d85af4_0.tar.bz2#98a4bf0073c56678453dd86845d3bcc9 +https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.5-hce7ea42_1.tar.bz2#563442fea31753e46dd74aca8688abd6 +https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.12-hac89ed1_0.tar.bz2#3e2e03ff8bcdd49315541a80e4e9023d 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-9.3.0-h6c81a4c_23.tar.bz2#d66ac79367c179bf53520066430565e8 https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.16-haf1e3a3_0.tar.bz2#c5fab167412a52e491c8e11453ae016f https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.2-h0d85af4_1.tar.bz2#052369eda6e13f44b308407c99857f84 -https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.11-h6c3fc93_1014.tar.bz2#49f20ed86f7ed34204be74fbb2868c60 -https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-14.0.3-ha654fa7_0.tar.bz2#321df8a58df1427266e9f9c18af3f7f5 -https://conda.anaconda.org/conda-forge/osx-64/mkl-include-2022.0.0-hf224eb6_782.tar.bz2#fbead6cb1217042b0d05717f61f2369d +https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.12-hfe4f2af_1.tar.bz2#f7d43cae08c86f73be8cbda4f8e43373 +https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-14.0.4-ha654fa7_0.tar.bz2#5d5ab9ab83ce21422be84ecfd3142201 +https://conda.anaconda.org/conda-forge/osx-64/mkl-include-2022.1.0-h6bab518_928.tar.bz2#67f8511a5eaf693a202486f74035b3f7 https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.3-h96cf925_1.tar.bz2#76217ebfbb163ff2770a261f955a5861 https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-hc929b4f_1001.tar.bz2#addd19059de62181cd11ae8f4ef26084 https://conda.anaconda.org/conda-forge/noarch/tzdata-2022a-h191b570_0.tar.bz2#84be5301069417a2221187d2f435e0f7 @@ -32,18 +31,18 @@ https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-9.3.0-h6c81a4c_23.tar https://conda.anaconda.org/conda-forge/osx-64/libllvm13-13.0.1-h64f94b2_2.tar.bz2#bac1c6f12f44f40e19274e6e04e9bad5 https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.13-h0d85af4_1004.tar.bz2#eb7860935e14aec936065cbc21a1a962 https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.3-he49afe7_1.tar.bz2#05c08241b66631c00ca4f9e0b75320bc -https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1o-hfe4f2af_0.tar.bz2#655048e118f0b7029e5c216a1d7a6189 -https://conda.anaconda.org/conda-forge/osx-64/readline-8.1-h05e3726_0.tar.bz2#2832e9b6a7caa7cb192fcda6cfcd8871 +https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1p-hfe4f2af_0.tar.bz2#5c2c7facfe400144b608e714bf44bc47 +https://conda.anaconda.org/conda-forge/osx-64/readline-8.1.2-h3899abd_0.tar.bz2#89fa404901fa8fb7d4f4e07083b8d635 https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2#f9ff42ccf809a21ba6f8607f8de36108 https://conda.anaconda.org/conda-forge/osx-64/tbb-2021.5.0-hbb4e6a2_1.tar.bz2#b83feb61bdbc393ba05a1b7626c4fcf0 https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2#8e9480d9c47061db2ed1b4ecce519a7f -https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.11-h6c3fc93_1014.tar.bz2#98b82f6a8de694bc6259f2d1a69bc02b +https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.12-hfe4f2af_1.tar.bz2#12fdf8350ef315e7ad48693346067405 https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-h5eb16cf_7.tar.bz2#6ae0a8419a03d0d9675f319bef66d3aa https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp13-13.0.1-default_he082bbe_0.tar.bz2#88cccadb3e9824f6859e605ad64c526c https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-9_3_0_h6c81a4c_23.tar.bz2#60f48cef2d50674e0428c5579b6c3f66 https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h7cec526_2.tar.bz2#9e52521faba2b53269672628d34e1513 https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-13.0.1-h64f94b2_2.tar.bz2#38b9526e6cc69b7e0a358771ddb02874 -https://conda.anaconda.org/conda-forge/osx-64/mkl-2022.0.0-h89fa619_782.tar.bz2#c66ac5ac447afe4c64b832b72ec6eb88 +https://conda.anaconda.org/conda-forge/osx-64/mkl-2022.1.0-h860c996_928.tar.bz2#98a4d58de0ba6e61ce46620b775c19ce https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h57ddcff_0.tar.bz2#e0dcb354df4ad4f79539d57e4f8ec1bd https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.38.5-hd9f0692_0.tar.bz2#258c39c5e2eff8b8b29d1a027e4e1b5a @@ -52,12 +51,12 @@ https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-h5eb16cf_7.tar.bz2#d3 https://conda.anaconda.org/conda-forge/osx-64/clang-13-13.0.1-default_he082bbe_0.tar.bz2#ffb3d690ddae0b4f601fb937187e38e1 https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-609-h6fbe7a8_10.tar.bz2#576f44dff0debeac8806eecdf0f301a4 -https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-14_osx64_mkl.tar.bz2#c9505f8e11836aac300706d24a0ecc38 +https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-15_osx64_mkl.tar.bz2#c998ae608542192771aadad79ec1a149 https://conda.anaconda.org/conda-forge/osx-64/libhiredis-1.0.2-h2beb688_0.tar.bz2#524282b2c46c9dedf051b3bc2ae05494 -https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.3.0-h17f2ce3_3.tar.bz2#8a2611163920a17b13a1325bb70d7293 -https://conda.anaconda.org/conda-forge/osx-64/mkl-devel-2022.0.0-h694c41f_783.tar.bz2#d2ef72a35e1ac30e817ead1fe5720f03 +https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.4.0-h9847915_1.tar.bz2#18372b55ad60d8f0ed1ca4bca9eb2d0d +https://conda.anaconda.org/conda-forge/osx-64/mkl-devel-2022.1.0-h694c41f_929.tar.bz2#041ceef009fe6d29cbd2555907c23ab3 https://conda.anaconda.org/conda-forge/osx-64/mpc-1.2.1-hbb51d92_0.tar.bz2#9f46d6ad4c460679ee997abc10da3bac -https://conda.anaconda.org/conda-forge/osx-64/python-3.10.4-h8b4d769_0_cpython.tar.bz2#62ebdb09c27c4cd4bcc84c6a283cb6cb +https://conda.anaconda.org/conda-forge/osx-64/python-3.10.5-hdaaf3db_0_cpython.tar.bz2#2c27a532578a3e3b1574e0a50d9b36b9 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/osx-64/ccache-4.6-h8580cb5_0.tar.bz2#fa11b3db27aec2910b317f8c06f5eed0 https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h3eff9a4_10.tar.bz2#a7552b2de2f52bbf8b726d982507b1ef @@ -70,8 +69,8 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b5 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.12-h577c468_0.tar.bz2#abce77b852b73670e85e104746b0ea1b https://conda.anaconda.org/conda-forge/osx-64/ld64-609-ha328185_10.tar.bz2#bb5eb6726c4b1bbad865673edb48ba27 -https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-14_osx64_mkl.tar.bz2#3f6dcac8db8e959489338d3718b39a51 -https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-14_osx64_mkl.tar.bz2#b35a77c4ab5b7af5981a57de2da9ebe0 +https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-15_osx64_mkl.tar.bz2#5688696c64566ea2b138d80fe8c21078 +https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-15_osx64_mkl.tar.bz2#0983e2d3d70eecb92f5be56bbf23091c https://conda.anaconda.org/conda-forge/osx-64/libwebp-1.2.2-h28dabe5_0.tar.bz2#6aa31e81854e3172dae89300ae9a5444 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.4.0-h6e7aa92_1.tar.bz2#c8cbb6d99f6467246ac26a139256e50f @@ -85,46 +84,46 @@ https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.t https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-h351d84c_10.tar.bz2#4c238f9fccbac5beaf219d59a59b7f10 -https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.5.18.1-py310h2ec42d9_0.tar.bz2#7835c0b6bf96eb97567694974c1902c7 +https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.6.15-py310h2ec42d9_0.tar.bz2#7f60b1d9d5844975ca9794ce9bde7999 https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py310hcc37b68_0.tar.bz2#bca69dbd12cea5ae0dc298fc58a3c4ee https://conda.anaconda.org/conda-forge/osx-64/clangxx-13.0.1-default_he082bbe_0.tar.bz2#2c7017821fa3d741405ab4c4da24ff54 https://conda.anaconda.org/conda-forge/osx-64/coverage-6.2-py310he24745e_0.tar.bz2#a715a002d748aa32fe3ce650886061e3 https://conda.anaconda.org/conda-forge/osx-64/cython-0.29.30-py310hd4537e4_0.tar.bz2#1dbaaf42d2bb8289b3b03f4d20a189ba -https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.2-py310h6be76da_1.tar.bz2#ac3944d0ad3b024c448a5b40f0a56acb -https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.9.0-14_osx64_mkl.tar.bz2#1d72bf3f74d97964eed152b28012924a -https://conda.anaconda.org/conda-forge/osx-64/numpy-1.22.4-py310hed37afb_0.tar.bz2#cd4ad16cf8641c1b02c3966945ff00c3 +https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.3-py310habb735a_0.tar.bz2#fc24dd7e892f7d326d83a0cb4af1645c +https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.9.0-15_osx64_mkl.tar.bz2#6af691dd2f3d7a45a84a5ff43c33e9d3 +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.23.0-py310ha3f357c_0.tar.bz2#4b1472cd82d9f5cd29c5703dcd715f06 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.1-py310hb3240ae_0.tar.bz2#104f85cb4c4dc9567ef16f365bd99888 +https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.1-py310hb3240ae_1.tar.bz2#ebc4aed6b99f4f789281dd0b0729391f https://conda.anaconda.org/conda-forge/osx-64/pluggy-1.0.0-py310h2ec42d9_3.tar.bz2#b2349ab9b4c83ae573a6985f728e5f37 https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py310h2ec42d9_5.tar.bz2#8b7a82347d1ed70878126333339f4969 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.3.2-py310h2ec42d9_0.tar.bz2#91b01e2f0e1c2efbf4aebd2009d65d0a +https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.6.0-py310h2ec42d9_0.tar.bz2#e2a5d2590767628cc44864a6be4eba89 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py310h1961e1f_3.tar.bz2#84d43324014a93910f008ada676ca542 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py310h1961e1f_1.tar.bz2#3fe48797c02b3b467efd4d9bc53d1624 -https://conda.anaconda.org/conda-forge/osx-64/blas-devel-3.9.0-14_osx64_mkl.tar.bz2#e0784569bc28feea5a24b9c469001407 +https://conda.anaconda.org/conda-forge/osx-64/blas-devel-3.9.0-15_osx64_mkl.tar.bz2#6b4ce97e5cd12e603ee4e8ec1ac23742 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py310h1961e1f_1004.tar.bz2#e84bd2f66966aa51356dfe14ef887e42 https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-13.0.1-hd3f61c9_0.tar.bz2#d744aae4a8e003c1fd2a1d3d757bd628 https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.2-py310h52c3658_0.tar.bz2#d59b17f2f4c984ae052f05bc45ad7cea https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.33.3-py310h6c45266_0.tar.bz2#71ce94a99d1efe13d3ded06770d07127 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/osx-64/pandas-1.4.2-py310h514ec25_1.tar.bz2#95fc16c001a0cc46c60933b7b3aebd65 +https://conda.anaconda.org/conda-forge/osx-64/pandas-1.4.3-py310h3099161_0.tar.bz2#872f475fc6ccf72790b8c076fade532b https://conda.anaconda.org/conda-forge/osx-64/pytest-7.1.2-py310h2ec42d9_0.tar.bz2#213fafaad4bdda317efc58119135876b https://conda.anaconda.org/conda-forge/osx-64/scipy-1.8.1-py310h1f9c157_0.tar.bz2#9301a094c53ed53bbbc168597c39719e -https://conda.anaconda.org/conda-forge/osx-64/blas-2.114-mkl.tar.bz2#b3c52c1eb378cf480ad1366367078a7f +https://conda.anaconda.org/conda-forge/osx-64/blas-2.115-mkl.tar.bz2#9e39ef5ea0a61aa52e69fb11103839df https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-13.0.1-he01351e_0.tar.bz2#e30fcb14e68727908484468c4fd35ede https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.5.2-py310h4510841_0.tar.bz2#fd973aaf25d1e82d67ce4d87f7aad060 https://conda.anaconda.org/conda-forge/osx-64/pyamg-4.2.3-py310h84c6d00_0.tar.bz2#2e0bb5228d595052b8a67d5baa643c67 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f -https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_1.tar.bz2#fc6ffeee7e43f7dbdd181218b31d5776 +https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_2.tar.bz2#420caff571651bd620a1bae84ee99cdf https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.2-py310h2ec42d9_0.tar.bz2#55c15bc829a216804a0fe2aabe9294e6 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.4.2-had99412_0.tar.bz2#2e89dc235b304e25307378efec943f50 -https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_1.tar.bz2#b220d126b131d9d7ca472d9f0ffac1ca +https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_2.tar.bz2#169caaf4aaab4e07dc697421329b7a73 https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-9.3.0-h18f7dce_15.tar.bz2#48f985e599ff223cd8acea3595d2cbe5 -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.4.2-h1b54a9f_0.tar.bz2#7a72e1003218550251de458140635999 https://conda.anaconda.org/conda-forge/osx-64/gfortran-9.3.0-h768ea0c_15.tar.bz2#de56b2cd45db24c02bcc0463643e03a6 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 d5df6417e8cf1..16b62dcc44199 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 @@ -22,14 +22,14 @@ https://repo.anaconda.com/pkgs/main/osx-64/lz4-c-1.9.3-h23ab428_1.conda#dc70fec3 https://repo.anaconda.com/pkgs/main/osx-64/mkl-2021.4.0-hecd8cb5_637.conda#07d14ece4a852cefa17c1c156db8134e https://repo.anaconda.com/pkgs/main/osx-64/openssl-1.1.1o-hca72f7f_0.conda#2b44a8f7a0051ffbc4814e9f99114222 https://repo.anaconda.com/pkgs/main/osx-64/readline-8.1.2-hca72f7f_1.conda#c54a6153e7ef82f55e7a0ae2f6749592 -https://repo.anaconda.com/pkgs/main/osx-64/tk-8.6.11-h3fd3227_1.conda#30fd8466573613aadae5fe013306b51b +https://repo.anaconda.com/pkgs/main/osx-64/tk-8.6.12-h5d9f67b_0.conda#047f0af5486d19163e37fd7f8ae3d29f https://repo.anaconda.com/pkgs/main/osx-64/freetype-2.11.0-hd8bbffd_0.conda#a06dcb72dc6961d37f280b4b97d74f43 -https://repo.anaconda.com/pkgs/main/osx-64/sqlite-3.38.3-h707629a_0.conda#5d3e2867383881b9227ee3aba91cd52d +https://repo.anaconda.com/pkgs/main/osx-64/sqlite-3.38.5-h707629a_0.conda#658dd68c10414ce5630bc1f274a186a9 https://repo.anaconda.com/pkgs/main/osx-64/zstd-1.5.2-hcb37349_0.conda#d3ba225e3bc4285d8efd8cdfd7aa6112 https://repo.anaconda.com/pkgs/main/osx-64/libtiff-4.2.0-hdb42f99_1.conda#be71b575ef057665407d8a298499a669 -https://repo.anaconda.com/pkgs/main/osx-64/python-3.9.12-hdfd78df_0.conda#cee6193364c53d83006ed4c6398b3a84 +https://repo.anaconda.com/pkgs/main/osx-64/python-3.9.12-hdfd78df_1.conda#744dfacb4aa313dd39a24eacc8d195aa https://repo.anaconda.com/pkgs/main/noarch/attrs-21.4.0-pyhd3eb1b0_0.conda#3bc977a57587a7964921e3e1e2e31f9e -https://repo.anaconda.com/pkgs/main/osx-64/certifi-2022.5.18.1-py39hecd8cb5_0.conda#f837ed0b5b0b47dded0c79a32f9317f0 +https://repo.anaconda.com/pkgs/main/osx-64/certifi-2022.6.15-py39hecd8cb5_0.conda#30db92d8d0532828b651a5bcca55d70d https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/osx-64/coverage-6.2-py39hca72f7f_0.conda#55962a70ebebc8de15c4e1d745b20cdd https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab @@ -47,7 +47,7 @@ https://repo.anaconda.com/pkgs/main/noarch/py-1.11.0-pyhd3eb1b0_0.conda#7205a898 https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda#135a72ff2a31150a3a3ff0b1edd41ca9 https://repo.anaconda.com/pkgs/main/noarch/pyparsing-3.0.4-pyhd3eb1b0_0.conda#6bca2ae9c9aae9ccdebcb8cf2aa87cb3 https://repo.anaconda.com/pkgs/main/osx-64/pysocks-1.7.1-py39hecd8cb5_0.conda#4765ca1a39ea5287cbe170734ac83e37 -https://repo.anaconda.com/pkgs/main/noarch/pytz-2021.3-pyhd3eb1b0_0.conda#76415b791ffd2007687ac5f0665aa7af +https://repo.anaconda.com/pkgs/main/osx-64/pytz-2022.1-py39hecd8cb5_0.conda#a4ca27633e16749c7688884f842053c8 https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a @@ -63,7 +63,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/setuptools-61.2.0-py39hecd8cb5_0.cond https://repo.anaconda.com/pkgs/main/osx-64/brotlipy-0.7.0-py39h9ed2024_1003.conda#a08f6f5f899aff4a07351217b36fae41 https://repo.anaconda.com/pkgs/main/osx-64/cryptography-37.0.1-py39hf6deb26_0.conda#5f4c90fdfd8a45bc7060dbc3b65f025a https://repo.anaconda.com/pkgs/main/osx-64/numpy-base-1.22.3-py39h3b1a694_0.conda#f68019d1d839b40739b64b6feae2b436 -https://repo.anaconda.com/pkgs/main/osx-64/pytest-7.1.1-py39hecd8cb5_0.conda#d1524f1e4a0980eb0dc978438d053db9 +https://repo.anaconda.com/pkgs/main/osx-64/pytest-7.1.2-py39hecd8cb5_0.conda#8239bdb679b675ab8aac1bdc0756d383 https://repo.anaconda.com/pkgs/main/noarch/pyopenssl-22.0.0-pyhd3eb1b0_0.conda#1dbbf9422269cd62c7094960d9b43f36 https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#bbdaac2947f507399816d509107945c2 https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 @@ -77,7 +77,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-base-3.5.1-py39hfb0c5b7_1. https://repo.anaconda.com/pkgs/main/osx-64/mkl_fft-1.3.1-py39h4ab4a9b_0.conda#f947c9a1c65da729963b3035c219ba10 https://repo.anaconda.com/pkgs/main/osx-64/mkl_random-1.2.2-py39hb2f4e1b_0.conda#1bc33de45069ad534182ca92e616ec7e https://repo.anaconda.com/pkgs/main/osx-64/numpy-1.22.3-py39h2e5f0a9_0.conda#16892a18dae1fb1522845e4b6005b436 -https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.1-py39h2e5f0a9_0.conda#d7c50238e03c12077f70591771c4ce68 +https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.1-py39h2e5f0a9_2.conda#3eed95a5b58657f9266c74abb271923e https://repo.anaconda.com/pkgs/main/osx-64/scipy-1.7.3-py39h8c7af03_0.conda#de2900b6122e1417d2f79f0266f700e9 https://repo.anaconda.com/pkgs/main/osx-64/pandas-1.4.2-py39he9d5cce_0.conda#9513b1735fc6feabfb647c545a5be53a https://repo.anaconda.com/pkgs/main/osx-64/pyamg-4.1.0-py39h1341a74_0.conda#9c560e676ee6f9f26b05f94ffda599d8 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 a4fc4e1a9bcaf..34cc69b3f8691 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 @@ -5,11 +5,11 @@ https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_1.conda#57623d10a70e09e1d048c2b2b6f4e2dd https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_1.conda#b372c0eea9b60732fdae4b817a63c8cd https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_1.conda#a87728dabf3151fb9cfa990bd2eb0464 https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc @@ -17,10 +17,10 @@ https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf31 https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 -https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 -https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 -https://repo.anaconda.com/pkgs/main/linux-64/python-3.9.12-h12debd9_0.conda#24e7b6490961f6e3dd7fa3ba24c9302f -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py39h06a4308_0.conda#23cf7855837fec26c2ab8de97b95ef1d +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.12-h1ccaba5_0.conda#fa10ff4aa631fa4aa090a6234d7770b9 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.5-hc218d9a_0.conda#ed2668e84d5e2730827ad737bc5231a3 +https://repo.anaconda.com/pkgs/main/linux-64/python-3.9.12-h12debd9_1.conda#8fdbad0e044d2b7057698d7f14643e21 +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py39h06a4308_0.conda#2f715a68f1be9125f5c8f0425ea6eb30 https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py39h06a4308_0.conda#720869dc83cf20f2167fb12e7a54ebaa https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74bcf27ebb94020ea1c838279382cadf @@ -29,17 +29,17 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None # pip cycler @ https://files.pythonhosted.org/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl#md5=None # pip cython @ https://files.pythonhosted.org/packages/a7/c6/3af0df983ba8500831fdae19a515be6e532da7683ab98e031d803e6a8d03/Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl#md5=None -# pip docutils @ https://files.pythonhosted.org/packages/4c/5e/6003a0d1f37725ec2ebd4046b657abb9372202655f96e76795dca8c0063c/docutils-0.17.1-py2.py3-none-any.whl#md5=None +# pip docutils @ https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl#md5=None # pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None # pip fonttools @ https://files.pythonhosted.org/packages/2f/85/2f6e42fb4b537b9998835410578fb1973175b81691e9a82ab6668cf64b0b/fonttools-4.33.3-py3-none-any.whl#md5=None # pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None # pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None # pip iniconfig @ https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl#md5=None # pip joblib @ https://files.pythonhosted.org/packages/3e/d5/0163eb0cfa0b673aa4fe1cd3ea9d8a81ea0f32e50807b0c295871e4aab2e/joblib-1.1.0-py2.py3-none-any.whl#md5=None -# pip kiwisolver @ https://files.pythonhosted.org/packages/f6/13/2a187e2280251f5c035da46e1706d4c8bd6ccc9f34e88c298cffbc5ba793/kiwisolver-1.4.2-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip kiwisolver @ https://files.pythonhosted.org/packages/9a/83/26180a222333fc90ee931be4ab13a3492d3c3cfce6754e705de973ee1050/kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None # pip markupsafe @ https://files.pythonhosted.org/packages/df/06/c515c5bc43b90462e753bc768e6798193c6520c9c7eb2054c7466779a9db/MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip networkx @ https://files.pythonhosted.org/packages/b3/cd/9856de630a7a7bb298e983c7d6bf5dd7810ae0092976b0da829dd66c42a7/networkx-2.8.2-py3-none-any.whl#md5=None -# pip numpy @ https://files.pythonhosted.org/packages/32/82/0a28e3a04411a1a4c1d099bb94349f97050579f90a0290432f09d9a58148/numpy-1.22.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip networkx @ https://files.pythonhosted.org/packages/34/71/1d6f7aaefa2fb38ea8c13dc47f3e2a32c4dc78f6229086ed90947fc49d3c/networkx-2.8.4-py3-none-any.whl#md5=None +# pip numpy @ https://files.pythonhosted.org/packages/da/0e/496e529f440f528273f6847e14d7b132b0556a824fc2af36e8afd8e6a020/numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pillow @ https://files.pythonhosted.org/packages/59/d0/eb666c55b685419103023f62519dbc968a008e268ec243c56f3214f1da45/Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None # pip py @ https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl#md5=None @@ -56,30 +56,31 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None +# pip typing-extensions @ https://files.pythonhosted.org/packages/75/e1/932e06004039dd670c9d5e1df0cd606bf46e29a28e65d5bb28e894ea29c9/typing_extensions-4.2.0-py3-none-any.whl#md5=None # pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None # pip zipp @ https://files.pythonhosted.org/packages/80/0e/16a7ee38617aab6a624e95948d314097cc2669edae9b02ded53309941cfc/zipp-3.8.0-py3-none-any.whl#md5=None -# pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None +# pip babel @ https://files.pythonhosted.org/packages/2e/57/a4177e24f8ed700c037e1eca7620097fdfbb1c9b358601e40169adf6d364/Babel-2.10.3-py3-none-any.whl#md5=None # pip coverage @ https://files.pythonhosted.org/packages/d2/41/87d1e548a0418b24cff9c60815ea2cc2d0e0cd4891337a24236a30a1d141/coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None -# pip imageio @ https://files.pythonhosted.org/packages/25/41/91f47808e99dd67bfc3aee53d0a7c8d10b01b221ca254bfd36cd51125866/imageio-2.19.2-py3-none-any.whl#md5=None -# pip importlib-metadata @ https://files.pythonhosted.org/packages/ab/b5/1bd220dd470b0b912fc31499e0d9c652007a60caf137995867ccc4b98cb6/importlib_metadata-4.11.4-py3-none-any.whl#md5=None +# pip imageio @ https://files.pythonhosted.org/packages/b6/78/3cf2f60ef319d253d71870c6cb00774bfc5bdccf9e06c319678388f58f41/imageio-2.19.3-py3-none-any.whl#md5=None +# pip importlib-metadata @ https://files.pythonhosted.org/packages/d2/a2/8c239dc898138f208dd14b441b196e7b3032b94d3137d9d8453e186967fc/importlib_metadata-4.12.0-py3-none-any.whl#md5=None # pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None # pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None # pip pywavelets @ https://files.pythonhosted.org/packages/45/fd/1ad6a2c2b9f16d684c8a21e92455885891b38c703b39f13916971e9ee8ff/PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/41/5b/2209eba8133fc081d3ffff02e1f6376e3117e52bb16f674721a83e67e68e/requests-2.28.0-py3-none-any.whl#md5=None # pip scipy @ https://files.pythonhosted.org/packages/25/82/da07cc3bb40554f1f82d7e24bfa7ffbfb05b50c16eb8d738ebb74b68af8f/scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip tifffile @ https://files.pythonhosted.org/packages/19/b7/30d7af4c25985be3852dccd99f15a2003a81bc8f287d57704619fed006ec/tifffile-2022.5.4-py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None -# pip pandas @ https://files.pythonhosted.org/packages/35/ad/616c27cade647c2a1513343c72c095146cf3e7a72ace6582574a334fb525/pandas-1.4.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pandas @ https://files.pythonhosted.org/packages/a5/ac/6c04be2c26e8c839659b7bcdc7a4bcd4e5366867bff8027ffd1cae58b806/pandas-1.4.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pyamg @ https://files.pythonhosted.org/packages/8e/08/d512b6e34d502152723b5a4ad9d962a6141dfe83cd8bcd01af4cb6e84f28/pyamg-4.2.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None # pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None -# pip scikit-image @ https://files.pythonhosted.org/packages/b4/56/eed15f4aa01169db761d60552be8f3ff2d46ce587a2faade03a330afc311/scikit_image-0.19.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip scikit-image @ https://files.pythonhosted.org/packages/0f/29/d157cd648b87212e498189c183a32f0f48e24fe22e9673dacd97594f39fa/scikit_image-0.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip scikit-learn @ https://files.pythonhosted.org/packages/62/cb/49d4c9d3505b0dd062f49c4f573995977876cc556c658caffcfcd9043ea8/scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip setuptools-scm @ https://files.pythonhosted.org/packages/e3/e5/c28b544051340e63e0d507eb893c9513d3a300e5e9183e2990518acbfe36/setuptools_scm-6.4.2-py3-none-any.whl#md5=None -# pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None +# pip setuptools-scm @ https://files.pythonhosted.org/packages/1a/dd/b83708410d912a56e6aa1f78ac1135465eb6a5cfe494628ae24e7dc5922f/setuptools_scm-7.0.2-py3-none-any.whl#md5=None +# pip sphinx @ https://files.pythonhosted.org/packages/fd/a2/3139e82a7caa2fb6954d0e63db206cc60e0ad6c67ae61ef9cf87dc70ade1/Sphinx-5.0.2-py3-none-any.whl#md5=None # pip lightgbm @ https://files.pythonhosted.org/packages/a1/00/84c572ff02b27dd828d6095158f4bda576c124c4c863be7bf14f58101e53/lightgbm-3.3.2-py3-none-manylinux1_x86_64.whl#md5=None # pip matplotlib @ https://files.pythonhosted.org/packages/e1/81/0a73fe71098683a1f73243f18f419464ec109acae16811bf29c5d0dc173e/matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl#md5=None -# pip numpydoc @ https://files.pythonhosted.org/packages/38/66/04aa44cdc48010317f473b47003045078b083201af68b9c5a110e19444e3/numpydoc-1.3.1-py3-none-any.whl#md5=None +# pip numpydoc @ https://files.pythonhosted.org/packages/e7/1a/9e3c2a34aae5bd1ab8988b238aafeb4c8d3ab312b8aa5a8c37be6c6d869d/numpydoc-1.4.0-py3-none-any.whl#md5=None # pip pytest-cov @ https://files.pythonhosted.org/packages/20/49/b3e0edec68d81846f519c602ac38af9db86e1e71275528b3e814ae236063/pytest_cov-3.0.0-py3-none-any.whl#md5=None # pip pytest-forked @ https://files.pythonhosted.org/packages/0c/36/c56ef2aea73912190cdbcc39aaa860db8c07c1a5ce8566994ec9425453db/pytest_forked-1.4.0-py3-none-any.whl#md5=None # pip pytest-xdist @ https://files.pythonhosted.org/packages/21/08/b1945d4b4986eb1aa10cf84efc5293bba39da80a2f95db3573dd90678408/pytest_xdist-2.5.0-py3-none-any.whl#md5=None 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 8c79e267ed01c..20fde1d5b61f0 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 @@ -5,11 +5,11 @@ https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 https://repo.anaconda.com/pkgs/main/linux-64/ld_impl_linux-64-2.38-h1181459_1.conda#68eedfd9c06f2b0e6888d8db345b7f5b -https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_0.conda#ce541c2473bd2d56da84ec8f241a8574 +https://repo.anaconda.com/pkgs/main/linux-64/libstdcxx-ng-11.2.0-h1234567_1.conda#57623d10a70e09e1d048c2b2b6f4e2dd https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 -https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_0.conda#c8acb8d9aff1ead1b273ace299ca12d2 +https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_1.conda#b372c0eea9b60732fdae4b817a63c8cd https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 -https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_0.conda#83c045906d7d785252a34846348d16c6 +https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_1.conda#a87728dabf3151fb9cfa990bd2eb0464 https://repo.anaconda.com/pkgs/main/linux-64/bzip2-1.0.8-h7b6447c_0.conda#9303f4af7c004e069bae22bde8d800ee https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 @@ -19,17 +19,17 @@ https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf31 https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e https://repo.anaconda.com/pkgs/main/linux-64/readline-8.1.2-h7f8727e_1.conda#ea33f478fea12406f394944e7e4f3d20 -https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.11-h1ccaba5_1.conda#5d7d7abe559370a7a8519177929dd338 -https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.3-hc218d9a_0.conda#94e50b233f796aa4e0b7cf38611c0852 +https://repo.anaconda.com/pkgs/main/linux-64/tk-8.6.12-h1ccaba5_0.conda#fa10ff4aa631fa4aa090a6234d7770b9 +https://repo.anaconda.com/pkgs/main/linux-64/sqlite-3.38.5-hc218d9a_0.conda#ed2668e84d5e2730827ad737bc5231a3 https://repo.anaconda.com/pkgs/main/linux-64/python-3.10.4-h12debd9_0.tar.bz2#f931504bb2eeaf18f20388fd0ad44be4 -https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.5.18.1-py310h06a4308_0.conda#8773bfc3338ab0b30f0a93067517fb0e +https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py310h06a4308_0.conda#36486307238f598fbbbd575aeb741752 https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py310h06a4308_0.conda#1f43427d7c045e63786e0bb79084cf70 https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4e2586f845008770fa152082c04b27c # pip alabaster @ https://files.pythonhosted.org/packages/10/ad/00b090d23a222943eb0eda509720a404f531a439e803f6538f35136cae9e/alabaster-0.7.12-py2.py3-none-any.whl#md5=None # pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None # pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None -# pip docutils @ https://files.pythonhosted.org/packages/4c/5e/6003a0d1f37725ec2ebd4046b657abb9372202655f96e76795dca8c0063c/docutils-0.17.1-py2.py3-none-any.whl#md5=None +# pip docutils @ https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl#md5=None # pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None # pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None # pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None @@ -51,16 +51,16 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4 # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None # pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None -# pip babel @ https://files.pythonhosted.org/packages/c5/7b/2c9fc1e18cb97676c7bedaa872447eb720e0c6e0e48190b4fba7eccdc1a8/Babel-2.10.1-py3-none-any.whl#md5=None +# pip babel @ https://files.pythonhosted.org/packages/2e/57/a4177e24f8ed700c037e1eca7620097fdfbb1c9b358601e40169adf6d364/Babel-2.10.3-py3-none-any.whl#md5=None # pip coverage @ https://files.pythonhosted.org/packages/da/64/468ca923e837285bd0b0a60bd9a287945d6b68e325705b66b368c07518b1/coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None # pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None # pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None -# pip requests @ https://files.pythonhosted.org/packages/2d/61/08076519c80041bc0ffa1a8af0cbd3bf3e2b62af10435d269a9d0f40564d/requests-2.27.1-py2.py3-none-any.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/41/5b/2209eba8133fc081d3ffff02e1f6376e3117e52bb16f674721a83e67e68e/requests-2.28.0-py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None # pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None -# pip sphinx @ https://files.pythonhosted.org/packages/91/96/9cbbc7103fb482d5809fe4976ecb9b627058210d02817fcbfeebeaa8f762/Sphinx-4.5.0-py3-none-any.whl#md5=None -# pip numpydoc @ https://files.pythonhosted.org/packages/38/66/04aa44cdc48010317f473b47003045078b083201af68b9c5a110e19444e3/numpydoc-1.3.1-py3-none-any.whl#md5=None +# pip sphinx @ https://files.pythonhosted.org/packages/fd/a2/3139e82a7caa2fb6954d0e63db206cc60e0ad6c67ae61ef9cf87dc70ade1/Sphinx-5.0.2-py3-none-any.whl#md5=None +# pip numpydoc @ https://files.pythonhosted.org/packages/e7/1a/9e3c2a34aae5bd1ab8988b238aafeb4c8d3ab312b8aa5a8c37be6c6d869d/numpydoc-1.4.0-py3-none-any.whl#md5=None # pip pytest-cov @ https://files.pythonhosted.org/packages/20/49/b3e0edec68d81846f519c602ac38af9db86e1e71275528b3e814ae236063/pytest_cov-3.0.0-py3-none-any.whl#md5=None # pip pytest-forked @ https://files.pythonhosted.org/packages/0c/36/c56ef2aea73912190cdbcc39aaa860db8c07c1a5ce8566994ec9425453db/pytest_forked-1.4.0-py3-none-any.whl#md5=None # pip pytest-xdist @ https://files.pythonhosted.org/packages/21/08/b1945d4b4986eb1aa10cf84efc5293bba39da80a2f95db3573dd90678408/pytest_xdist-2.5.0-py3-none-any.whl#md5=None diff --git a/build_tools/azure/pypy3_linux-64_conda.lock b/build_tools/azure/pypy3_linux-64_conda.lock index cce318cca3b0c..85a8c98537cd6 100644 --- a/build_tools/azure/pypy3_linux-64_conda.lock +++ b/build_tools/azure/pypy3_linux-64_conda.lock @@ -3,7 +3,7 @@ # input_hash: cf874320f6e578af129bfb6d9ba92149c20c91291a86dbc35043439181333dc8 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-12.1.0-hdcd56e2_16.tar.bz2#b02605b875559ff99f04351fd5040760 https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-12.1.0-ha89aaad_16.tar.bz2#6f5ba041a41eb102a1027d9e68731be7 https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-12.1.0-h69a702a_16.tar.bz2#6bf15e29a20f614b18ae89368260d0a2 @@ -12,7 +12,6 @@ https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c @@ -21,42 +20,42 @@ https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2# 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.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.3-h166bdaf_0.tar.bz2#f4c4e71d7cf611b513170eaa0852bf1d +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.5-h516909a_1.tar.bz2#33f601066901f3e1a85af3522a8113f9 -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_openblas.tar.bz2#04eb983975a1be3e57d6d667414cd774 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/gdbm-1.18-h0a1914f_2.tar.bz2#b77bc399b07a19c00fe12fdc95ee0297 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h0fcbabc_4.tar.bz2#2cdb3944029c2cb99cbe981b182a2e9a https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/pypy3.7-7.3.7-h24b73cb_3.tar.bz2#b48b2037293953ac936b2a7dd61f111a -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_openblas.tar.bz2#2b5095be485bdb407ff3134358c3ca9c https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.7-2_pypy37_pp73.tar.bz2#768e358541ec4abb2a3f4300e6caf4a9 -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e177657aa07ab306bd1bbcdf80e69 https://conda.anaconda.org/conda-forge/linux-64/python-3.7.12-0_73_pypy.tar.bz2#0718ea16c32e9f500f471713a4b3d5a7 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/linux-64/certifi-2021.10.8-py37h9c2f6ca_1.tar.bz2#c34a43aefed7c093e459890232dbb58b diff --git a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock index df8551fb63105..0830d4e808867 100644 --- a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock +++ b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock @@ -2,7 +2,7 @@ # platform: linux-aarch64 # input_hash: e57a9b17b5add91c70ac3ba0cae1f9da4dcf5bc2b1bb65dbddac08a13e13945a @EXPLICIT -https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2022.5.18.1-h4fd8a4c_0.tar.bz2#8f445510f2354b85b27fb5f4f202c59b +https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2022.6.15-h4fd8a4c_0.tar.bz2#49e3859b4b7fe9d28407e0749f5b4cc2 https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.36.1-h02ad14f_2.tar.bz2#3ca1a8e406eab04ffc3bfa6e8ac0a724 https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-12.1.0-h41d5c85_16.tar.bz2#f053ad62fdac14fb8e73cfed4e8d2676 https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-12.1.0-hd01590b_16.tar.bz2#b64391bb81cc2f914d57c0927ec8a26b @@ -12,51 +12,50 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_kmp_llv https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-12.1.0-h3242a24_16.tar.bz2#70e9f0947c17f3faf1a1974be0c110bf https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.1-hb9de7d4_2.tar.bz2#08575a68724ff44a0cb24c6158511c0a -https://conda.anaconda.org/conda-forge/linux-aarch64/jbig-2.1-hf897c2e_2003.tar.bz2#a3d4206bcecf771e286e39155fe00b24 https://conda.anaconda.org/conda-forge/linux-aarch64/jpeg-9e-h9cdd2b7_1.tar.bz2#584d93de10ab8d47874c5f29c29ba729 https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-3.0-h01db608_0.tar.bz2#13505433bc073878ec237f8ff8ba1ea5 https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.0.9-h4e544f5_7.tar.bz2#6ee071311281942e2fec227751e7efff -https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.10-hf897c2e_0.tar.bz2#cf24cc05d49de7c6a981f2d485cb6fb6 +https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.12-h4e544f5_0.tar.bz2#8867038c37cac9127964fa455585b67a 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/libhiredis-1.0.2-h05efe27_0.tar.bz2#a87f068744fd20334cd41489eb163bee https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-hf897c2e_0.tar.bz2#36fdbc05c9d9145ece86f5a63c3f352e https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.20-pthreads_h6cb6f83_0.tar.bz2#1110034f2f90ca3c7ea35bf0d2eea15e https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.32.1-hf897c2e_1000.tar.bz2#e038da5ef9095b0d79aac14a311394e7 https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.2.2-hf897c2e_1.tar.bz2#833c405d24bf7e52022b61108e78028a -https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.11-h4e544f5_1014.tar.bz2#e829241b520bfd3187d921f82e9b4460 +https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.12-h4e544f5_1.tar.bz2#9362395976f5395370de23ee309553a2 https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.3-h01db608_1.tar.bz2#25b5ec27b49b04a997a87b0f00f5e205 https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.3-headf329_1.tar.bz2#486b68148e121bc8bbadc3cefae4c04f -https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.0.3-h4e544f5_0.tar.bz2#19a1e30ba6680f2ad0795d985628663c +https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.0.4-h4e544f5_1.tar.bz2#ceadcb286b663d23c13f07c75e52ccc9 https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2#d0183ec6ce0b5aaa3486df25fa5f0ded https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.9-h3557bc0_0.tar.bz2#e0c187f5ce240897762bbb89a8a407cc https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2#a6c9016ae1ca5c47a3603ed4cd65fedd https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.5-h6dd45c4_1.tar.bz2#9da6f161d0f47f8a29fa708cda8deda2 -https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-14_linuxaarch64_openblas.tar.bz2#e8a37033814609b27d188b35c134d007 +https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-15_linuxaarch64_openblas.tar.bz2#045400d8613d7c22896082834ea58fb7 https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.0.9-h4e544f5_7.tar.bz2#6839e1d20fce65ff5f0f0bcf32841993 https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.0.9-h4e544f5_7.tar.bz2#353cfe995ca6183994d5eb3e674ab42c https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.13-h3557bc0_1004.tar.bz2#cc973f5f452272c397546eac588cddb3 -https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-14.0.3-hb2805f8_0.tar.bz2#0096034fdd07049c70f40853655ad8b3 +https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-14.0.4-hb2805f8_0.tar.bz2#7d0aa14e0444d2d803591ca1a61d29f4 https://conda.anaconda.org/conda-forge/linux-aarch64/openblas-0.3.20-pthreads_h2d9dd7e_0.tar.bz2#db1b9433e8d04b2591111d75be683d5e -https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.1-h1a49cc3_0.tar.bz2#ccd3c3e1bde615ec934282f3481a1ede +https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.1.2-h38e3740_0.tar.bz2#3cdbfb7d7b63ae2c2d35bb167d257ecd https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.12-hd8af866_0.tar.bz2#7894e82ff743bd96c76585ddebe28e2a -https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.11-h4e544f5_1014.tar.bz2#5d6528db5739f248a7a5749d2dba8a27 +https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.12-h4e544f5_1.tar.bz2#53419804280d04b14a667c5f19fb1bf5 https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-haad177d_1.tar.bz2#13d695d25882b3efad8e0e3ffad89a83 https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.0.9-h4e544f5_7.tar.bz2#4014ebf8c97d8cb219bfc0a12344ceb6 https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.5.1-h637f6b2_0.tar.bz2#0981c793a35b1e72d75d3a40e8dd69a4 -https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-14_linuxaarch64_openblas.tar.bz2#8a1d66921d3e7dacacc8dd3af6d5ec5f -https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-14_linuxaarch64_openblas.tar.bz2#1dcb7e50e399fc73824320b9ea709477 +https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-15_linuxaarch64_openblas.tar.bz2#9baa695b860e4abba076a0ad8fb24627 +https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-15_linuxaarch64_openblas.tar.bz2#f3b79286dda2ca36a05bc6922432903b https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.37-hbd635b3_2.tar.bz2#c95d3cee5815206d562fffa531a60a86 -https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.3.0-hdea21e4_3.tar.bz2#70385b4e904cf3fc9622319532c1a9eb +https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.4.0-hacb60eb_1.tar.bz2#52fbcabda33cbd901267ccd4d9205f9c https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.38.5-hc74f5b8_0.tar.bz2#ac6e9256d71294f14a6aea6e1e537f37 https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.0.9-h4e544f5_7.tar.bz2#4c345a372cf4936c8e959b8d266c4396 https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.10.4-hdf53a3c_1.tar.bz2#c0b393690f63cdfb986b430971f09cc2 https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.12-h012adcb_0.tar.bz2#d112a00b1ba7dda1f79735d2a4661ea3 -https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.9.0-14_linuxaarch64_openblas.tar.bz2#e18b63ca39fc7b5d7602d88440c0d0b1 +https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.9.0-15_linuxaarch64_openblas.tar.bz2#b3919151cfad6ccef7be182ccc295127 https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.2.2-h21830e5_0.tar.bz2#0b0287f266b3c32803830bbf6307c48d https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.4.0-h45037e0_1.tar.bz2#c888c9aa7f6e60f2514f88c070ec6f45 -https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.12-h5016f1d_1_cpython.tar.bz2#09cceb4a3e723338d0fbed7c7d22e2a4 +https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.13-h5016f1d_0_cpython.tar.bz2#55fbf16ae0237bd720c5231734d778dc https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/linux-aarch64/blas-devel-3.9.0-14_linuxaarch64_openblas.tar.bz2#a321d5f472b8b3e9d938540ca7277606 +https://conda.anaconda.org/conda-forge/linux-aarch64/blas-devel-3.9.0-15_linuxaarch64_openblas.tar.bz2#474836f44a3e1721fdf04d2b9e6fc614 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 @@ -68,21 +67,21 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 -https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.114-openblas.tar.bz2#240259abe13902a22c25ad1ff8082d90 -https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2022.5.18.1-py39h4420490_0.tar.bz2#32f70b59cab5617c4ac9e8529631f844 +https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.115-openblas.tar.bz2#53bbf4da5d1548f107e3374bbf466dba +https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2022.6.15-py39h4420490_0.tar.bz2#2f8b8e2cba70a1c78e20d00415f616f0 https://conda.anaconda.org/conda-forge/linux-aarch64/cython-0.29.30-py39h3d8bfb9_0.tar.bz2#1928a6be375c7b0197b8bc7b64a3bf40 -https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.2-py39h110580c_1.tar.bz2#e5136a6aa77ec81ab5c6d3f9ba2ebf1d -https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.22.4-py39h451b137_0.tar.bz2#83b4bb0a5f7095f1551f0f637111f38e +https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.3-py39h110580c_0.tar.bz2#06f1539f2162cfc6bd4c17ccb777bcaf +https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.23.0-py39h7190128_0.tar.bz2#64940d0d6cb4c6297bae012be49a9734 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.1-py39h2a8e185_0.tar.bz2#5e9230ccd6d157f21103359f4a7ada6d +https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.1-py39h2a8e185_1.tar.bz2#8300e677981717d949bd0f5acf8c7677 https://conda.anaconda.org/conda-forge/linux-aarch64/pluggy-1.0.0-py39ha65689a_3.tar.bz2#3ccbd600f5d9921e928da3d69a9720a9 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.3.2-py39ha65689a_0.tar.bz2#a64aaf7753f9f47ca26e8c9f0130172e +https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.6.0-py39ha65689a_0.tar.bz2#76b233d543d873f64292272e7bea81a2 https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.1-py39hb9a1dbb_3.tar.bz2#11dace3e5ebbaeb5069179cfa5b53923 https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-14.0.0-py39h0fd3b05_1.tar.bz2#7182266a1f86f367d88c86a9ab560cca https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.33.3-py39h0fd3b05_0.tar.bz2#0f8d88eb32e53e0756a4bceaa5d85d3e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-7.1.2-py39ha65689a_0.tar.bz2#6de5b49b9d9e7628e0666ccf2b7df40b https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.8.1-py39h43b6dad_0.tar.bz2#372f005c9ca6dc0db0adae0f78dbc4d4 https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.5.2-py39hfed42d8_0.tar.bz2#9f90790067684c9f0ab1b07e6e82070a diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index 0ad634faa86c5..c447aace543fb 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -3,7 +3,7 @@ # input_hash: 1b1e977a1b5dcedea55d0a8b53d501d1c1211b70a4419ec48dafe1b2658b4ef8 @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb @@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/binutils-2.36.1-hdd6e379_2.tar.b https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.36-hf3e587d_10.tar.bz2#9d5cdbfe24b182d4c749b86d500ac9d2 https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_kmp_llvm.tar.bz2#562b26ba2e19059551a811e72ab7f793 https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar.bz2#4f05bc9844f7c101e6e147dab3c88d5c -https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.3.2-h166bdaf_0.tar.bz2#b7607b7b62dce55c194ad84f99464e5f +https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.6.1-h7f98852_0.tar.bz2#0347ce6a34f8b55b544b141432c6d4c7 https://conda.anaconda.org/conda-forge/linux-64/aom-3.3.0-h27087fc_1.tar.bz2#fe863d1e92331e69c8f231df5eaf5e16 https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.1-h166bdaf_0.tar.bz2#ec47e97c8e0b27dcadbebc4d17764548 https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 @@ -35,16 +35,14 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 -https://conda.anaconda.org/conda-forge/linux-64/json-c-0.15-h98cffda_0.tar.bz2#f32d45a88e7462be446824654dbcf4a4 https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-h7f98852_2.tar.bz2#8e787b08fe19986d99d034b839df2961 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libaec-1.0.6-h9c3ff4c_0.tar.bz2#c77f5e4e418fa47d699d6afa54c5d444 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c https://conda.anaconda.org/conda-forge/linux-64/libdb-6.2.32-h9c3ff4c_0.tar.bz2#3f3258d8f841fbac63b36b75bdac1afd -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-h516909a_1.tar.bz2#6f8720dff19e17ce5d48cfe7f3d2f0a3 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/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 @@ -54,14 +52,15 @@ https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-10.3.0-h26c7422_16.tar.bz2#4076c395c7fa53cd708949e4be48154e https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee +https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.9-hbd366e4_1.tar.bz2#418adb239781d9690afc6b1a05514c37 @@ -74,21 +73,22 @@ https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.0.6-h166bdaf_0.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#a340c8ce9e702836e999984fcabd1b6e https://conda.anaconda.org/conda-forge/linux-64/gettext-0.19.8.1-h73d1719_1008.tar.bz2#af49250eca8e139378f8ff0ae9e57251 https://conda.anaconda.org/conda-forge/linux-64/libavif-0.10.1-h166bdaf_0.tar.bz2#eb9a725cb66435aaf81f13ce585a64eb -https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-14_linux64_openblas.tar.bz2#fb31fbbde682414550bbe15e3964420f +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_openblas.tar.bz2#04eb983975a1be3e57d6d667414cd774 https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.0.9-h166bdaf_7.tar.bz2#37a460703214d0d1b421e2a47eb5e6d0 https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.0.9-h166bdaf_7.tar.bz2#785a9296ea478eb78c47593c4da6550f -https://conda.anaconda.org/conda-forge/linux-64/libcap-2.51-h166bdaf_1.tar.bz2#875e5931fb2faa6dacb4c13672630ae3 +https://conda.anaconda.org/conda-forge/linux-64/libcap-2.64-ha37c62d_0.tar.bz2#5896fbd58d0376df8556a4aba1ce4f71 https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.10-h9b69904_4.tar.bz2#390026683aef81db27ff1b8570ca1336 -https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.3-he0ac6c6_0.tar.bz2#8ab9f9c0fc641b53c5f87368e41af18d +https://conda.anaconda.org/conda-forge/linux-64/libllvm14-14.0.6-he0ac6c6_0.tar.bz2#f5759f0c80708fbf9c4836c0cb46d0fe https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2#309dec04b70a3cc0f1e84a4013683bc0 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.tar.bz2#c01640c8bad562720d6caff0402dbd96 https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h57a0ea0_5.tar.bz2#5469312a373f481c05c380897fd7c923 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.1-h83bc5f7_3.tar.bz2#37baca23e60af4130cfc03e8ab9f8e22 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e @@ -98,61 +98,66 @@ https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-10.3.0-hc39de41_10. https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-10.3.0-h73f4979_16.tar.bz2#0407b066da49b4562ce054c06b40558c https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#f825336ce3d4dba77ffd1edc78e7abf9 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-14_linux64_openblas.tar.bz2#1b41ea4c32014d878e84de4e5690df7a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.3-default_h3a83d3e_0.tar.bz2#1a571eb098b894a66642cd8b638f5f1d +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.5-default_h3a83d3e_0.tar.bz2#493aec1de0f0e09e921eff6206cafff6 https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc -https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-14_linux64_openblas.tar.bz2#13367ebd0243a949cee7564b13c3cd42 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h166bdaf_0.tar.bz2#0a8e20a8aef954390b9481a527421a8c https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.4.2-h166bdaf_0.tar.bz2#d3a922efc75c5f2534372eead96d46be https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/gfortran-10.3.0-h18518b4_10.tar.bz2#794676d0d7dd69998cb12654cf37f43d https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-10.3.0-hb09a455_10.tar.bz2#dd9058b625a6edce185db90cf99e3590 -https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.2-hd4edc92_1.tar.bz2#c16a9b2773180a641583f1d3690e3ff6 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 https://conda.anaconda.org/conda-forge/linux-64/gxx-10.3.0-he2824d0_10.tar.bz2#121c9d19ecb6cf6e587c2ab8dfb5c73c https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-10.3.0-h2593f52_10.tar.bz2#075de70ba0493c56ed9e9cda930978ce https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.3-default_h2e3cab8_0.tar.bz2#2343b7c11c031c5415b28641eb81275d +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.5-default_h2e3cab8_0.tar.bz2#8b1cd508fcf54a5c8c5766c549272b6e https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.83.1-h7bff187_0.tar.bz2#d0c278476dba3b29ee13203784672ab1 -https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-14_linux64_openblas.tar.bz2#ccbd24dd22c4e159de6f31ec936ff9fe -https://conda.anaconda.org/conda-forge/linux-64/libpq-14.3-hd77ab85_0.tar.bz2#13980beea7c55e6b68db1349f25bd454 +https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 +https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-hd77ab85_0.tar.bz2#7024df220bd8680192d4bad4024122d1 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 -https://conda.anaconda.org/conda-forge/linux-64/python-3.9.12-h9a8a25e_1_cpython.tar.bz2#06dadf5df9d340439c2aa32e15099d31 +https://conda.anaconda.org/conda-forge/linux-64/python-3.9.13-h9a8a25e_0_cpython.tar.bz2#69bc307cc4d7396c5fccb26bbcc9c379 +https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h166bdaf_0.tar.bz2#c9b568bd804cb2903c6be6f5f68182e4 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-14_linux64_openblas.tar.bz2#fef6dffa4ea2f88b93260eff262d6d06 +https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_openblas.tar.bz2#2b5095be485bdb407ff3134358c3ca9c https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.1.0-hd9d235c_0.tar.bz2#ebc04a148d7204bb428f8633b89fd3dd https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.4.2-h924138e_0.tar.bz2#40b38afc72b4f12be8a2ca29853b03ac https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.4.2-h2a4ca65_0.tar.bz2#a39c981deb5b50e2ea1464ab9d5c0b10 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b -https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b +https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 -https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-hfd4fe87_1001.tar.bz2#a44a1d690250f6bbb01b7e328ea0c719 +https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-h8c3723f_1002.tar.bz2#7b3f287fcb7683f67b3d953b79f412ea https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -172,65 +177,67 @@ https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c -https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 -https://conda.anaconda.org/conda-forge/linux-64/blas-2.114-openblas.tar.bz2#67d004f09ee490c1d02718927955d821 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py39hf3d152e_0.tar.bz2#c6f766c4abf9207215c610187e61381a +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda +https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e177657aa07ab306bd1bbcdf80e69 +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py39hf3d152e_0.tar.bz2#cf0efee4ef53a6d3ea4dce06ac360f14 https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py39h4bc2ebd_0.tar.bz2#f6191bf565dee581e77549d63737751c https://conda.anaconda.org/conda-forge/linux-64/compilers-1.4.2-ha770c72_0.tar.bz2#b353fa1271e1a82d37a7d35f4785de13 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py39h5a03fae_0.tar.bz2#78d64530b059de26a60f979e02c9fa3c https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py39hb9d737c_2.tar.bz2#27e20d4d5b494d2f1f3fa31fa44190ae -https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py39hf3d152e_2.tar.bz2#fea5dea40592ea943aa56f4935308ee4 +https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py39hf3d152e_1.tar.bz2#9851752658704495f8adf28f6d2b3cb3 +https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py39hf3d152e_0.tar.bz2#4c2a0eabf0b8980b2c755646a6f750eb -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py39hf939315_1.tar.bz2#93232e4148e28b2665c16e573747a874 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py39hf939315_0.tar.bz2#d8bdd7cb2f0e571665bbf0ec09c94da9 https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1.tar.bz2#7cda413e43b252044a270c2477031c5c -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.22.4-py39hc58783e_0.tar.bz2#a09094871a38a0abec011ec36e742045 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py39hba7629e_0.tar.bz2#0e48a6f61637735a88644359d90f5f1e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_0.tar.bz2#795b91dbac91f606bd0abc466bdef572 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_1.tar.bz2#9039c6b86ddb65d7e8bf464337ae9053 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef -https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-hb166930_4.tar.bz2#7c165f1b39385b9fee1f279005ee512e +https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2#d34b97a2386932b97c7cb80916a673e7 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py39hb9d737c_4.tar.bz2#dcc47a3b751508507183d17e569805e5 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.3.2-py39hf3d152e_0.tar.bz2#3f81b2509daf345842e7a243f5b86ece +https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py39hf3d152e_0.tar.bz2#ddfb37b6e91b8c41be3976d19af47ade https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39hb9d737c_3.tar.bz2#5e13a2d214ed4184969df363a1aab420 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py39hb9d737c_1.tar.bz2#ef84376736d1e8a814ccb06d1d814e6f https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1004.tar.bz2#05a99367d885ec9990f25e74128a8a08 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a_0.tar.bz2#11780968ae65fdeb1a0bc294d211597d -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8 -https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39h9c0c3a3_5.tar.bz2#e0d91afa9019bca0484bddb1626b7035 -https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c +https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08 +https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39hfcd4fa2_6.tar.bz2#fb284401002dea344eada09798cd07ec +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 -https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.2-py39h1832856_1.tar.bz2#264505bcd299b8d564195cfb3e6038f0 -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py39h1832856_0.tar.bz2#74e00961703972cf33b44a6fca7c3d51 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py39hf3d152e_0.tar.bz2#a6bcf633d12aabdfc4cb32a09ebc0f31 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 -https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.3-hf97cb25_1.tar.bz2#79853477ea006ccccb7a39c2d33f51b9 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py39he49c0e8_0.tar.bz2#b1b4cc4216e555168e88d6a2b1914af1 https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py39he80948d_2.tar.bz2#e93686e0252282dd8ccba5c6cbcd8295 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py39h700656a_0.tar.bz2#ab1bcd0fd24e375f16d662e4cc783cab https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py39hac2352c_0.tar.bz2#9df63dea0e4d2163be63b8e40c17ceaf https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_0.tar.bz2#772c3115b4e857f3fd2051435f04f68d +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_1.tar.bz2#bff0f5f688af0dc337d11517c5a46402 https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f +https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.4-ha5833f6_2.tar.bz2#dd3aa6715b9e9efaf842febf18ce4261 https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.5.4-pyhd8ed1ab_0.tar.bz2#8c8c68b9d466b8804584abe11a75c396 -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h5a03fae_0.tar.bz2#af520e0af4a0772f90f9ec79ca91f603 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h18e9c17_1.tar.bz2#111647767bc84d4795f829bdc07dbb27 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e -https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.2-py39hde0f152_0.tar.bz2#200ceba1a31bf22629232285a550506f +https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py39h1832856_0.tar.bz2#5d638481c48c57fdb986490a4a6983fc https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed -https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hce5d2b2_0.tar.bz2#0d4a4a2f2e52548519a76262839494c9 +https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hd257fcd_0.tar.bz2#bd7cdadf70e34a19333c3aacc40206e8 https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py39hf3d152e_0.tar.bz2#d65d073d186977a2a9a9d5a68b2b77ef -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 -https://conda.anaconda.org/conda-forge/noarch/sphinx-4.5.0-pyh6c4a22f_0.tar.bz2#46b38d88c4270ff9ba78a89c83c66345 -https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.3.1-pyhd8ed1ab_0.tar.bz2#31b43675aa1bb68e049c2f65c15da864 +https://conda.anaconda.org/conda-forge/noarch/sphinx-5.0.2-pyh6c4a22f_0.tar.bz2#d4eaa1f50733a377480ce1d5aac556c7 +https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.4.0-pyhd8ed1ab_0.tar.bz2#d1c1320c63843ca639a638cb4259e346 https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.10.1-pyhd8ed1ab_0.tar.bz2#4918585fe5e5341740f7e63c61743efb https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2#88ee91e8679603f2a5bd036d52919cc2 # pip sphinxext-opengraph @ https://files.pythonhosted.org/packages/58/ed/59df64b8400caf736f38bd3725ab9b1d9e50874f629980973aea090c1a8b/sphinxext_opengraph-0.6.3-py3-none-any.whl#md5=None diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index 3c3a948784955..9e7ff1cc2843c 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -3,7 +3,7 @@ # input_hash: a6aaffac15d19e8ed6fc40eddb398e18e9252fb737bf8c60f99f93e7d41ac5ce @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.5.18.1-ha878542_0.tar.bz2#352e93bbe1d604002b11bbcf425bf866 +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_15.tar.bz2#5dd5127afd710f91f6a75821bac0a4f0 https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.36.1-hea4e1c9_2.tar.bz2#bd4f2e711b39af170e7ff15163fe87ee https://conda.anaconda.org/conda-forge/linux-64/libgcc-devel_linux-64-7.5.0-hda03d7c_20.tar.bz2#2146b25eb2a762a44fab709338a7b6d9 @@ -22,20 +22,19 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-7.5.0-habd7529_20.tar.bz2#42140612518a7ce78f571d64b6a50ba3 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2#8e881214a23508f1541eb7a3135d6fcb -https://conda.anaconda.org/conda-forge/linux-64/jbig-2.1-h7f98852_2003.tar.bz2#1aa0cee79792fa97b7ff4545110b60bf https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e -https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932 -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.11-h166bdaf_1014.tar.bz2#757138ba3ddc6777b82e91d9ff62e7b9 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1o-h166bdaf_0.tar.bz2#6172048796b123e542945d998f5150b7 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 @@ -48,10 +47,10 @@ https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-7.5.0-h56 https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-7.5.0-hd0bb8aa_20.tar.bz2#dbe78fc5fb9c339f8e55426559e12f7b https://conda.anaconda.org/conda-forge/linux-64/libllvm9-9.0.1-default_hc23dcda_7.tar.bz2#9f4686a2c319355fe8636ca13783c3b4 https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz2#b3653fdc58d03face9724f602218a904 -https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.3-he0ac6c6_0.tar.bz2#f3ab3fe1a6e6cef77d4d3e7523b603cb -https://conda.anaconda.org/conda-forge/linux-64/readline-8.1-h46c0cb4_0.tar.bz2#5788de3c8d7a7d64ac56c784c4ef48e6 +https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.11-h166bdaf_1014.tar.bz2#def3b82d1a03aa695bb38ac1dd072ff2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.1.1-h516909a_0.tar.bz2#d98aa4948ec35f52907e2d6152e2b255 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-7.5.0-h78c8a43_33.tar.bz2#b2879010fb369f4012040f7a27657cd8 @@ -59,7 +58,7 @@ https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-7.5.0-h555fc39_33.t https://conda.anaconda.org/conda-forge/linux-64/libclang-9.0.1-default_hb4e5071_5.tar.bz2#9dde69aa2a8ecd575a16e44987bdc9f7 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0 https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 -https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h542a066_3.tar.bz2#1a0efb4dfd880b0376da8e1ba39fa838 +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e @@ -76,7 +75,7 @@ https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.4-pyh9f0ad1d_0.tar.bz2#c08b4c1326b880ed44f3ffb04803332f +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.1.1-0.tar.bz2#1ba267e19dbaf3db9dd0404e6fb9cdb9 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 @@ -89,7 +88,7 @@ https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-20_mkl.tar.bz2#14b25490fdcc44e879ac6c10fe764f68 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.8.0-20_mkl.tar.bz2#52c0ae3606eeae7e1d493f37f336f4f5 https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.2-pyhd8ed1ab_0.tar.bz2#fa13a75da1377a7a5a5df3299aea6893 +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -107,21 +106,21 @@ https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.t https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 -https://conda.anaconda.org/conda-forge/noarch/babel-2.10.1-pyhd8ed1ab_0.tar.bz2#2ec70a4a964b696170d730466c668f60 -https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.5.18.1-py38h578d9bd_0.tar.bz2#429a49d95358a078211aad97c4fc286c +https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda +https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.4-py38ha312104_0.tar.bz2#8f82b87522fbb1d4b24e8b5e2b1d0501 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.24-py38h709712a_1.tar.bz2#9e5fe389471a13ae523ae980de4ad1f4 https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h0a891b7_2.tar.bz2#71f54bf65927270177d66e26664f11ea https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2#4caaca6356992ee545080c7d7193b5a3 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py38h578d9bd_2.tar.bz2#affd6b87adb2b0c98da0e3ad274349be https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2#00084ab2657be5bf0ba0757ccde797ef -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py38h43d8883_1.tar.bz2#34c284cb94bd8c5118ccfe6d6fc3dd3f +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py38h43d8883_0.tar.bz2#0719de23a2c5aa0b4db25ee34394e8f3 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-20_mkl.tar.bz2#8274dc30518af9df1de47f5d9e73165c -https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h497a2fe_3.tar.bz2#d51cdb48d2792a63174c0ee66a602e7e +https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h0a891b7_4.tar.bz2#d182e0c60439427453ed4a7abd28ef0d https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_0.tar.bz2#b2135f7c9f4ba2ef94666946c8238d03 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 @@ -132,15 +131,15 @@ https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.b https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30_0.tar.bz2#bcc387154aae535f8b4f84822621b5f7 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.5.1-pyhd8ed1ab_0.tar.bz2#8aaa4107e044e68c8d8af030b9c171f6 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 -https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.2-pyhcf75d05_0.tar.bz2#91806152074cba0105cf95350581376c -https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_1.tar.bz2#d32c1aa8047d2d11163abbe4a8f852ac +https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 +https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.1.2-py38h250f245_1.tar.bz2#0ae46309d21c964547792bac48162fc8 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.0.5-py38hcb8c335_0.tar.bz2#1e1b4382170fd26cf722ef008ffb651e -https://conda.anaconda.org/conda-forge/noarch/pip-22.1.1-pyhd8ed1ab_0.tar.bz2#6affaf2f490f479c73d819735f80a104 +https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.bz2#cb27e2ded147e5bcc7eafc1c6d343cb3 https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py38h578d9bd_0.tar.bz2#626d2b8f96c8c3d20198e6bd84d1cfb7 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.1.1-py38h5c078b8_3.tar.bz2#dafeef887e68bd18ec84681747ca0fd5 @@ -157,7 +156,7 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.ta https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.2-py38_1.tar.bz2#c2b9671a19c01716c37fe0a0e18b0aec -https://conda.anaconda.org/conda-forge/noarch/requests-2.27.1-pyhd8ed1ab_0.tar.bz2#7c1c427246b057b8fa97200ecdb2ed62 +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 https://conda.anaconda.org/conda-forge/noarch/sphinx-4.0.1-pyh6c4a22f_2.tar.bz2#c203dcc46f262853ecbb9552c50d664e https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#025ad7ca2c7f65007ab6b6f5d93a56eb diff --git a/sklearn/metrics/_ranking.py b/sklearn/metrics/_ranking.py index 9e746f167381f..81e201fe5a349 100644 --- a/sklearn/metrics/_ranking.py +++ b/sklearn/metrics/_ranking.py @@ -1619,19 +1619,19 @@ def ndcg_score(y_true, y_score, *, k=None, sample_weight=None, ignore_ties=False >>> # the normalization takes k into account so a perfect answer >>> # would still get 1.0 >>> ndcg_score(true_relevance, true_relevance, k=4) - 1.0 + 1.0... >>> # now we have some ties in our prediction >>> scores = np.asarray([[1, 0, 0, 0, 1]]) >>> # by default ties are averaged, so here we get the average (normalized) >>> # true relevance of our top predictions: (10 / 10 + 5 / 10) / 2 = .75 >>> ndcg_score(true_relevance, scores, k=1) - 0.75 + 0.75... >>> # we can choose to ignore ties for faster results, but only >>> # if we know there aren't ties in our scores, otherwise we get >>> # wrong results: >>> ndcg_score(true_relevance, ... scores, k=1, ignore_ties=True) - 0.5 + 0.5... """ y_true = check_array(y_true, ensure_2d=False) y_score = check_array(y_score, ensure_2d=False) From d8df4b09ddf345a621de04c6e5887137660acd0f Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 27 Jun 2022 11:04:34 -0400 Subject: [PATCH 140/251] CI Do not post again if CI no longer failing exists (#23768) --- maint_tools/update_tracking_issue.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/maint_tools/update_tracking_issue.py b/maint_tools/update_tracking_issue.py index 010689231d7d2..d943b0676d536 100644 --- a/maint_tools/update_tracking_issue.py +++ b/maint_tools/update_tracking_issue.py @@ -101,11 +101,19 @@ def close_issue_if_opened(): print("Test has no failures!") issue = get_issue() if issue is not None: - comment = ( - f"## CI is no longer failing! ✅\n\n[Successful run]({args.link_to_ci_run})" + # Comment only if the "## CI is no longer failing" comment does not exist + comment_exists = any( + c.body.startswith("## CI is no longer failing") + for c in issue.get_comments() ) - print(f"Commented on issue #{issue.number}") - issue.create_comment(body=comment) + if not comment_exists: + comment = ( + "## CI is no longer failing! ✅\n\n[Successful" + f" run]({args.link_to_ci_run})" + ) + print(f"Commented on issue #{issue.number}") + issue.create_comment(body=comment) + if args.auto_close.lower() == "true": print(f"Closing issue #{issue.number}") issue.edit(state="closed") From e7f39b939c5c940d3d65ca19e1db69e4f987ff61 Mon Sep 17 00:00:00 2001 From: Oyindamola Olatunji <36523905+ikeadeoyin@users.noreply.github.com> Date: Tue, 28 Jun 2022 07:03:09 +0100 Subject: [PATCH 141/251] DOC Added jstor link to linkcheck_ignore (#23764) --- doc/conf.py | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/conf.py b/doc/conf.py index 670bee2781185..9fb5f530f85e1 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -604,6 +604,7 @@ def setup(app): "https://doi.org/10.13140/RG.2.2.35280.02565", "https://www.microsoft.com/en-us/research/uploads/prod/2006/01/" "Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf", + "https://www.jstor.org/stable/2984099", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", From 4f542758eaa508aa71c5f6caaabb796eddbb44ee Mon Sep 17 00:00:00 2001 From: Oyindamola Olatunji <36523905+ikeadeoyin@users.noreply.github.com> Date: Tue, 28 Jun 2022 07:22:53 +0100 Subject: [PATCH 142/251] DOC Added hedonic housing prices to linkcheck_ignore (#23763) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Loïc Estève --- doc/conf.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/conf.py b/doc/conf.py index 9fb5f530f85e1..b4c944a928c3c 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -604,6 +604,8 @@ def setup(app): "https://doi.org/10.13140/RG.2.2.35280.02565", "https://www.microsoft.com/en-us/research/uploads/prod/2006/01/" "Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf", + "https://www.researchgate.net/publication/4974606_" + "Hedonic_housing_prices_and_the_demand_for_clean_air", "https://www.jstor.org/stable/2984099", # Broken links from testimonials "http://www.bestofmedia.com", From 2e8d1f10a5eafc60fb71f5fd8a2bd1b0905233fd Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Wed, 29 Jun 2022 01:43:36 +0530 Subject: [PATCH 143/251] DOC corrected cv_results_ ndarray shape (#23784) --- sklearn/feature_selection/_rfe.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/feature_selection/_rfe.py b/sklearn/feature_selection/_rfe.py index 0f82e1775ee15..262c2757ed426 100644 --- a/sklearn/feature_selection/_rfe.py +++ b/sklearn/feature_selection/_rfe.py @@ -550,13 +550,13 @@ class RFECV(RFE): cv_results_ : dict of ndarrays A dict with keys: - split(k)_test_score : ndarray of shape (n_features,) + split(k)_test_score : ndarray of shape (n_subsets_of_features,) The cross-validation scores across (k)th fold. - mean_test_score : ndarray of shape (n_features,) + mean_test_score : ndarray of shape (n_subsets_of_features,) Mean of scores over the folds. - std_test_score : ndarray of shape (n_features,) + std_test_score : ndarray of shape (n_subsets_of_features,) Standard deviation of scores over the folds. .. versionadded:: 1.0 From 712a231c56e9a6dd33238d6428248e4a343c6af9 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Wed, 29 Jun 2022 21:56:25 +1000 Subject: [PATCH 144/251] DOC Fix typos in metrics and scoring docs (#23785) --- doc/modules/model_evaluation.rst | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index 60ee6989046ef..bea1d67123c2c 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -1976,13 +1976,13 @@ to handle the multioutput case: :func:`mean_squared_error`, and :func:`d2_absolute_error_score`. -These functions have an ``multioutput`` keyword argument which specifies the +These functions have a ``multioutput`` keyword argument which specifies the way the scores or losses for each individual target should be averaged. The default is ``'uniform_average'``, which specifies a uniformly weighted mean over outputs. If an ``ndarray`` of shape ``(n_outputs,)`` is passed, then its entries are interpreted as weights and an according weighted average is -returned. If ``multioutput`` is ``'raw_values'`` is specified, then all -unaltered individual scores or losses will be returned in an array of shape +returned. If ``multioutput`` is ``'raw_values'``, then all unaltered +individual scores or losses will be returned in an array of shape ``(n_outputs,)``. @@ -1991,7 +1991,7 @@ value ``'variance_weighted'`` for the ``multioutput`` parameter. This option leads to a weighting of each individual score by the variance of the corresponding target variable. This setting quantifies the globally captured unscaled variance. If the target variables are of different scale, then this -score puts more importance on well explaining the higher variance variables. +score puts more importance on explaining the higher variance variables. ``multioutput='variance_weighted'`` is the default value for :func:`r2_score` for backward compatibility. This will be changed to ``uniform_average`` in the future. @@ -2003,14 +2003,14 @@ R² score, the coefficient of determination The :func:`r2_score` function computes the `coefficient of determination `_, -usually denoted as R². +usually denoted as :math:`R^2`. It represents the proportion of variance (of y) that has been explained by the independent variables in the model. It provides an indication of goodness of fit and therefore a measure of how well unseen samples are likely to be predicted by the model, through the proportion of explained variance. -As such variance is dataset dependent, R² may not be meaningfully comparable +As such variance is dataset dependent, :math:`R^2` may not be meaningfully comparable across different datasets. Best possible score is 1.0 and it can be negative (because the model can be arbitrarily worse). A constant model that always predicts the expected (average) value of y, disregarding the input features, @@ -2021,7 +2021,7 @@ the :ref:`explained_variance_score` are identical. If :math:`\hat{y}_i` is the predicted value of the :math:`i`-th sample and :math:`y_i` is the corresponding true value for total :math:`n` samples, -the estimated R² is defined as: +the estimated :math:`R^2` is defined as: .. math:: @@ -2029,7 +2029,7 @@ the estimated R² is defined as: where :math:`\bar{y} = \frac{1}{n} \sum_{i=1}^{n} y_i` and :math:`\sum_{i=1}^{n} (y_i - \hat{y}_i)^2 = \sum_{i=1}^{n} \epsilon_i^2`. -Note that :func:`r2_score` calculates unadjusted R² without correcting for +Note that :func:`r2_score` calculates unadjusted :math:`R^2` without correcting for bias in sample variance of y. In the particular case where the true target is constant, the :math:`R^2` score is From e281c47068754d853f65ce77cc411314475f2876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 29 Jun 2022 14:11:33 +0200 Subject: [PATCH 145/251] MAINT make linkcheck run without errors (#23775) Co-authored-by: Olivier Grisel --- doc/about.rst | 2 +- doc/conf.py | 12 ++++++++---- doc/modules/decomposition.rst | 2 +- doc/modules/semi_supervised.rst | 2 +- sklearn/cluster/_spectral.py | 6 +++--- sklearn/cross_decomposition/_pls.py | 2 +- sklearn/decomposition/_kernel_pca.py | 4 ++-- 7 files changed, 17 insertions(+), 13 deletions(-) diff --git a/doc/about.rst b/doc/about.rst index 5018c5baec761..2496c1afa0ed3 100644 --- a/doc/about.rst +++ b/doc/about.rst @@ -423,7 +423,7 @@ time of Joris van den Bossche (2017-2018). .. image:: images/cds-logo.png :width: 100pt :align: center - :target: https://www.datascience-paris-saclay.fr/ + :target: http://www.datascience-paris-saclay.fr/ .. raw:: html diff --git a/doc/conf.py b/doc/conf.py index b4c944a928c3c..799ce4b74dd5c 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -598,15 +598,19 @@ def setup(app): # links falsely flagged as broken "https://www.researchgate.net/publication/" "233096619_A_Dendrite_Method_for_Cluster_Analysis", - "https://www.researchgate.net/publication/" - "221114584_Random_Fourier_Approximations_" + "https://www.researchgate.net/publication/221114584_Random_Fourier_Approximations_" "for_Skewed_Multiplicative_Histogram_Kernels", + "https://www.researchgate.net/publication/4974606_" + "Hedonic_housing_prices_and_the_demand_for_clean_air", + "https://www.researchgate.net/profile/Anh-Huy-Phan/publication/220241471_Fast_" + "Local_Algorithms_for_Large_Scale_Nonnegative_Matrix_and_Tensor_Factorizations", "https://doi.org/10.13140/RG.2.2.35280.02565", "https://www.microsoft.com/en-us/research/uploads/prod/2006/01/" "Bishop-Pattern-Recognition-and-Machine-Learning-2006.pdf", - "https://www.researchgate.net/publication/4974606_" - "Hedonic_housing_prices_and_the_demand_for_clean_air", + "https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-99-87.pdf", + "https://microsoft.com/", "https://www.jstor.org/stable/2984099", + "https://stat.uw.edu/sites/default/files/files/reports/2000/tr371.pdf", # Broken links from testimonials "http://www.bestofmedia.com", "http://www.data-publica.com/", diff --git a/doc/modules/decomposition.rst b/doc/modules/decomposition.rst index 540fb22006dd8..293f31dacd091 100644 --- a/doc/modules/decomposition.rst +++ b/doc/modules/decomposition.rst @@ -956,7 +956,7 @@ is not readily available from the start, or when the data does not fit into memo .. [4] `"SVD based initialization: A head start for nonnegative matrix factorization" - `_ + `_ C. Boutsidis, E. Gallopoulos, 2008 .. [5] `"Fast local algorithms for large scale nonnegative matrix and tensor diff --git a/doc/modules/semi_supervised.rst b/doc/modules/semi_supervised.rst index 249c6f98a7976..47e8bfffdd9a7 100644 --- a/doc/modules/semi_supervised.rst +++ b/doc/modules/semi_supervised.rst @@ -148,4 +148,4 @@ which can drastically reduce running times. [3] Olivier Delalleau, Yoshua Bengio, Nicolas Le Roux. Efficient Non-Parametric Function Induction in Semi-Supervised Learning. AISTAT 2005 - https://research.microsoft.com/en-us/people/nicolasl/efficient_ssl.pdf + https://www.gatsby.ucl.ac.uk/aistats/fullpapers/204.pdf diff --git a/sklearn/cluster/_spectral.py b/sklearn/cluster/_spectral.py index 390b567c0d0bb..22bf204f2094c 100644 --- a/sklearn/cluster/_spectral.py +++ b/sklearn/cluster/_spectral.py @@ -561,11 +561,11 @@ class SpectralClustering(ClusterMixin, BaseEstimator): Stella X. Yu, Jianbo Shi `_ - .. [4] `Toward the Optimal Preconditioned Eigensolver: - Locally Optimal Block Preconditioned Conjugate Gradient Method, 2001. + .. [4] :doi:`Toward the Optimal Preconditioned Eigensolver: + Locally Optimal Block Preconditioned Conjugate Gradient Method, 2001 A. V. Knyazev SIAM Journal on Scientific Computing 23, no. 2, pp. 517-541. - `_ + <10.1137/S1064827500366124>` .. [5] :doi:`Simple, direct, and efficient multi-way spectral clustering, 2019 Anil Damle, Victor Minden, Lexing Ying diff --git a/sklearn/cross_decomposition/_pls.py b/sklearn/cross_decomposition/_pls.py index 8a804142e13bb..bceb0c47c21ba 100644 --- a/sklearn/cross_decomposition/_pls.py +++ b/sklearn/cross_decomposition/_pls.py @@ -170,7 +170,7 @@ class _PLS( Main ref: Wegelin, a survey of Partial Least Squares (PLS) methods, with emphasis on the two-block case - https://www.stat.washington.edu/research/reports/2000/tr371.pdf + https://stat.uw.edu/sites/default/files/files/reports/2000/tr371.pdf """ @abstractmethod diff --git a/sklearn/decomposition/_kernel_pca.py b/sklearn/decomposition/_kernel_pca.py index 9f8f551b6628a..9f598c3eba670 100644 --- a/sklearn/decomposition/_kernel_pca.py +++ b/sklearn/decomposition/_kernel_pca.py @@ -216,7 +216,7 @@ class KernelPCA(_ClassNamePrefixFeaturesOutMixin, TransformerMixin, BaseEstimato .. [2] `Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. "Learning to find pre-images." Advances in neural information processing systems 16 (2004): 449-456. - `_ + `_ .. [3] :arxiv:`Halko, Nathan, Per-Gunnar Martinsson, and Joel A. Tropp. "Finding structure with randomness: Probabilistic algorithms for @@ -532,7 +532,7 @@ def inverse_transform(self, X): `Bakır, Gökhan H., Jason Weston, and Bernhard Schölkopf. "Learning to find pre-images." Advances in neural information processing systems 16 (2004): 449-456. - `_ + `_ """ if not self.fit_inverse_transform: raise NotFittedError( From 65b8ee47abefa838dec4f4d139ab69baedd7aacd Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Wed, 29 Jun 2022 22:53:26 +1000 Subject: [PATCH 146/251] DOC add `score_samples` to glossary (#23575) --- doc/glossary.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/glossary.rst b/doc/glossary.rst index 2042bdc742614..9d2bdbb4c1dc5 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -1385,7 +1385,11 @@ Methods often the likelihood of the data under the model. ``score_samples`` - TODO + A method that returns a score for each given sample. The exact + definition of *score* varies from one class to another. In the case of + density estimation, it can be the log density model on the data, and in + the case of outlier detection, it can be the opposite of the outlier + factor of the data. If the estimator was not already :term:`fitted`, calling this method should raise a :class:`exceptions.NotFittedError`. From f2a355a7ca8f40240504c2e1e41a28057d1e0ca6 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Wed, 29 Jun 2022 14:57:02 +0200 Subject: [PATCH 147/251] DOC Add warning for using `"kmeans++"` init with high-dimensional data (#23572) Co-authored-by: Julien Jerphanion --- sklearn/cluster/_kmeans.py | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/sklearn/cluster/_kmeans.py b/sklearn/cluster/_kmeans.py index f3e72f29579b4..4c37664e1a581 100644 --- a/sklearn/cluster/_kmeans.py +++ b/sklearn/cluster/_kmeans.py @@ -1139,9 +1139,11 @@ class KMeans(_BaseKMeans): (n_clusters, n_features), default='k-means++' Method for initialization: - 'k-means++' : selects initial cluster centers for k-mean - clustering in a smart way to speed up convergence. See section - Notes in k_init for more details. + 'k-means++' : selects initial cluster centroids using sampling based on + an empirical probability distribution of the points' contribution to the + overall inertia. This technique speeds up convergence, and is + theoretically proven to be :math:`\\mathcal{O}(\\log k)`-optimal. + See the description of `n_init` for more details. 'random': choose `n_clusters` observations (rows) at random from data for the initial centroids. @@ -1601,9 +1603,11 @@ class MiniBatchKMeans(_BaseKMeans): (n_clusters, n_features), default='k-means++' Method for initialization: - 'k-means++' : selects initial cluster centers for k-mean - clustering in a smart way to speed up convergence. See section - Notes in k_init for more details. + 'k-means++' : selects initial cluster centroids using sampling based on + an empirical probability distribution of the points' contribution to the + overall inertia. This technique speeds up convergence, and is + theoretically proven to be :math:`\\mathcal{O}(\\log k)`-optimal. + See the description of `n_init` for more details. 'random': choose `n_clusters` observations (rows) at random from data for the initial centroids. @@ -1667,8 +1671,10 @@ class MiniBatchKMeans(_BaseKMeans): n_init : int, default=3 Number of random initializations that are tried. - In contrast to KMeans, the algorithm is only run once, using the - best of the ``n_init`` initializations as measured by inertia. + In contrast to KMeans, the algorithm is only run once, using the best of + the `n_init` initializations as measured by inertia. Several runs are + recommended for sparse high-dimensional problems (see + :ref:`kmeans_sparse_high_dim`). reassignment_ratio : float, default=0.01 Control the fraction of the maximum number of counts for a center to From 63f62de347230868c4db2f8f04321841349742b4 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Wed, 29 Jun 2022 15:56:47 +0200 Subject: [PATCH 148/251] DOC add target_names in LFW fetchers (#23795) --- sklearn/datasets/_lfw.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sklearn/datasets/_lfw.py b/sklearn/datasets/_lfw.py index be01ae6279e27..33c1234f907b7 100644 --- a/sklearn/datasets/_lfw.py +++ b/sklearn/datasets/_lfw.py @@ -308,13 +308,15 @@ def fetch_lfw_people( target : numpy array of shape (13233,) Labels associated to each face image. Those labels range from 0-5748 and correspond to the person IDs. + target_names : numpy array of shape (5749,) + Names of all persons in the dataset. + Position in array corresponds to the person ID in the target array. DESCR : str Description of the Labeled Faces in the Wild (LFW) dataset. (data, target) : tuple if ``return_X_y`` is True .. versionadded:: 0.20 - """ lfw_home, data_folder_path = _check_fetch_lfw( data_home=data_home, funneled=funneled, download_if_missing=download_if_missing @@ -489,6 +491,9 @@ def fetch_lfw_pairs( target : numpy array of shape (2200,). Shape depends on ``subset``. Labels associated to each pair of images. The two label values being different persons or the same person. + target_names : numpy array of shape (2,) + Explains the target values of the target array. + 0 corresponds to "Different person", 1 corresponds to "same person". DESCR : str Description of the Labeled Faces in the Wild (LFW) dataset. """ From 36d08dc3a0d585f86541141ab4fe8579507c3ce2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 29 Jun 2022 17:11:33 +0200 Subject: [PATCH 149/251] CI add issue tracking to Windows builds (#23793) --- build_tools/azure/windows.yml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/build_tools/azure/windows.yml b/build_tools/azure/windows.yml index c11fa617eefcf..ea97b7eb5eaf0 100644 --- a/build_tools/azure/windows.yml +++ b/build_tools/azure/windows.yml @@ -54,3 +54,27 @@ jobs: testRunTitle: ${{ format('{0}-$(Agent.JobName)', parameters.name) }} displayName: 'Publish Test Results' condition: succeededOrFailed() + - bash: | + set -ex + if [[ $(BOT_GITHUB_TOKEN) == "" ]]; then + echo "GitHub Token is not set. Issue tracker will not be updated." + exit + fi + + LINK_TO_RUN="https://dev.azure.com/$BUILD_REPOSITORY_NAME/_build/results?buildId=$BUILD_BUILDID&view=logs&j=$SYSTEM_JOBID" + CI_NAME="$SYSTEM_JOBIDENTIFIER" + ISSUE_REPO="$BUILD_REPOSITORY_NAME" + + $(pyTools.pythonLocation)/bin/pip install defusedxml PyGithub + $(pyTools.pythonLocation)/bin/python maint_tools/update_tracking_issue.py \ + $(BOT_GITHUB_TOKEN) \ + $CI_NAME \ + $ISSUE_REPO \ + $LINK_TO_RUN \ + --junit-file $JUNIT_FILE \ + --auto-close false + displayName: 'Update issue tracker' + env: + JUNIT_FILE: $(TEST_DIR)/$(JUNITXML) + condition: and(succeededOrFailed(), eq(variables['CREATE_ISSUE_ON_TRACKER'], 'true'), + eq(variables['Build.Reason'], 'Schedule')) From 10475dd53e87706ce834c76b1f9e0737a43f48fa Mon Sep 17 00:00:00 2001 From: Maxwell Date: Thu, 30 Jun 2022 05:53:50 +0800 Subject: [PATCH 150/251] DOC Local features and kernels for classification of texture and object categories link (#23778) --- doc/modules/metrics.rst | 2 +- sklearn/metrics/pairwise.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/modules/metrics.rst b/doc/modules/metrics.rst index 0926980aaaf8a..71e914afad192 100644 --- a/doc/modules/metrics.rst +++ b/doc/modules/metrics.rst @@ -228,5 +228,5 @@ The chi squared kernel is most commonly used on histograms (bags) of visual word Local features and kernels for classification of texture and object categories: A comprehensive study International Journal of Computer Vision 2007 - https://research.microsoft.com/en-us/um/people/manik/projects/trade-off/papers/ZhangIJCV06.pdf + https://hal.archives-ouvertes.fr/hal-00171412/document diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 3e3dabbdacde6..d1237b1ba81d9 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1406,7 +1406,7 @@ def additive_chi2_kernel(X, Y=None): Local features and kernels for classification of texture and object categories: A comprehensive study International Journal of Computer Vision 2007 - https://research.microsoft.com/en-us/um/people/manik/projects/trade-off/papers/ZhangIJCV06.pdf + https://hal.archives-ouvertes.fr/hal-00171412/document """ if issparse(X) or issparse(Y): raise ValueError("additive_chi2 does not support sparse matrices.") @@ -1461,7 +1461,7 @@ def chi2_kernel(X, Y=None, gamma=1.0): Local features and kernels for classification of texture and object categories: A comprehensive study International Journal of Computer Vision 2007 - https://research.microsoft.com/en-us/um/people/manik/projects/trade-off/papers/ZhangIJCV06.pdf + https://hal.archives-ouvertes.fr/hal-00171412/document """ K = additive_chi2_kernel(X, Y) K *= gamma From 6a256174d6ced3eb9da535af24c75a31bc013bc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 30 Jun 2022 14:14:45 +0200 Subject: [PATCH 151/251] CI remove lingering scipy-dev failures due to interior-point solver deprecation (#23805) --- sklearn/utils/estimator_checks.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sklearn/utils/estimator_checks.py b/sklearn/utils/estimator_checks.py index 6d7866dc0b85a..3443ffe19a8aa 100644 --- a/sklearn/utils/estimator_checks.py +++ b/sklearn/utils/estimator_checks.py @@ -55,6 +55,8 @@ from ..model_selection._validation import _safe_split from ..metrics.pairwise import rbf_kernel, linear_kernel, pairwise_distances from ..utils.fixes import threadpool_info +from ..utils.fixes import sp_version +from ..utils.fixes import parse_version from ..utils.validation import check_is_fitted from . import shuffle @@ -746,6 +748,11 @@ def _set_checking_parameters(estimator): if name == "OneHotEncoder": estimator.set_params(handle_unknown="ignore") + if name == "QuantileRegressor": + # Avoid warning due to Scipy deprecating interior-point solver + solver = "highs" if sp_version >= parse_version("1.6.0") else "interior-point" + estimator.set_params(solver=solver) + if name in CROSS_DECOMPOSITION: estimator.set_params(n_components=1) From 78f1138357bb2feca0ac7268675dc6ce00919723 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9mie=20du=20Boisberranger?= <34657725+jeremiedbb@users.noreply.github.com> Date: Fri, 1 Jul 2022 20:28:08 +0200 Subject: [PATCH 152/251] DOC Typo in FactorAnalysis docstring (#23815) --- sklearn/decomposition/_factor_analysis.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/decomposition/_factor_analysis.py b/sklearn/decomposition/_factor_analysis.py index 4b8eab3492ca8..303e7ea280b93 100644 --- a/sklearn/decomposition/_factor_analysis.py +++ b/sklearn/decomposition/_factor_analysis.py @@ -45,7 +45,7 @@ class FactorAnalysis(_ClassNamePrefixFeaturesOutMixin, TransformerMixin, BaseEst If we would restrict the model further, by assuming that the Gaussian noise is even isotropic (all diagonal entries are the same) we would obtain - :class:`PPCA`. + :class:`PCA`. FactorAnalysis performs a maximum likelihood estimate of the so-called `loading` matrix, the transformation of the latent variables to the From 12c3664d0ecc9cd8c8a2eed80bf4b715ac92ef61 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Tue, 5 Jul 2022 06:44:23 +1000 Subject: [PATCH 153/251] DOC Fix typos in Visualizations docs (#23827) --- doc/visualizations.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/visualizations.rst b/doc/visualizations.rst index 0f0ec73549355..0c6590335232a 100644 --- a/doc/visualizations.rst +++ b/doc/visualizations.rst @@ -13,7 +13,7 @@ Visualizations Scikit-learn defines a simple API for creating visualizations for machine learning. The key feature of this API is to allow for quick plotting and visual adjustments without recalculation. We provide `Display` classes that -exposes two methods allowing to make the plotting: `from_estimator` and +expose two methods for creating plots: `from_estimator` and `from_predictions`. The `from_estimator` method will take a fitted estimator and some data (`X` and `y`) and create a `Display` object. Sometimes, we would like to only compute the predictions once and one should use `from_predictions` @@ -42,7 +42,7 @@ ROC curve for SVC in future plots. In this case, the `svc_disp` is a :class:`~sklearn.metrics.RocCurveDisplay` that stores the computed values as attributes called `roc_auc`, `fpr`, and `tpr`. Be aware that we could get the predictions from the support vector machine and then use `from_predictions` -instead of `from_estimator` Next, we train a random forest classifier and plot +instead of `from_estimator`. Next, we train a random forest classifier and plot the previously computed roc curve again by using the `plot` method of the `Display` object. From 6d0a268a8a00b3230937bde2d6a4860125ac2213 Mon Sep 17 00:00:00 2001 From: Julien Jerphanion Date: Wed, 6 Jul 2022 12:01:36 +0200 Subject: [PATCH 154/251] DOC Add Meekail Zain to the Contributor Experience Team (#23843) --- doc/contributor_experience_team.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/contributor_experience_team.rst b/doc/contributor_experience_team.rst index 3308d74563350..0461deb762f11 100644 --- a/doc/contributor_experience_team.rst +++ b/doc/contributor_experience_team.rst @@ -37,4 +37,8 @@

    Albert Thomas

    - \ No newline at end of file +
    +
    +

    Meekail Zain

    +
    + From 37860582890c42b0ee3f173f7a7de3ede0e797d5 Mon Sep 17 00:00:00 2001 From: Edoardo Abati <29585319+EdAbati@users.noreply.github.com> Date: Wed, 6 Jul 2022 13:34:10 +0200 Subject: [PATCH 155/251] MNT Updated pre commit hooks (#23822) --- .pre-commit-config.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 75d89a1cecb2d..e5a6018df4473 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v2.3.0 + rev: v4.3.0 hooks: - id: check-yaml - id: end-of-file-fixer @@ -9,8 +9,8 @@ repos: rev: 22.3.0 hooks: - id: black -- repo: https://gitlab.com/pycqa/flake8 - rev: 3.9.2 +- repo: https://github.com/pycqa/flake8 + rev: 4.0.1 hooks: - id: flake8 types: [file, python] From 835d1ce35bb6529239a606e0e2ffdfbdbe6feb05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Wed, 6 Jul 2022 16:42:00 +0200 Subject: [PATCH 156/251] MAINT simplify linting by running flake8 on the whole project (#23846) --- Makefile | 3 - azure-pipelines.yml | 2 +- build_tools/azure/linting.sh | 43 ++++++ build_tools/circle/linting.sh | 179 ------------------------ doc/developers/contributing.rst | 8 +- sklearn/decomposition/tests/test_nmf.py | 1 - 6 files changed, 46 insertions(+), 190 deletions(-) create mode 100755 build_tools/azure/linting.sh delete mode 100755 build_tools/circle/linting.sh diff --git a/Makefile b/Makefile index 112b1e68188a0..5ea64dc0d6cac 100644 --- a/Makefile +++ b/Makefile @@ -63,6 +63,3 @@ doc-noplot: inplace code-analysis: flake8 sklearn | grep -v __init__ | grep -v external pylint -E -i y sklearn/ -d E1103,E0611,E1101 - -flake8-diff: - git diff upstream/main -u -- "*.py" | flake8 --diff diff --git a/azure-pipelines.yml b/azure-pipelines.yml index e303739c5284e..1c9339308a45a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -40,7 +40,7 @@ jobs: black --check --diff . displayName: Run black - bash: | - ./build_tools/circle/linting.sh + ./build_tools/azure/linting.sh displayName: Run linting - bash: | mypy sklearn/ diff --git a/build_tools/azure/linting.sh b/build_tools/azure/linting.sh new file mode 100755 index 0000000000000..21ef53c8012dc --- /dev/null +++ b/build_tools/azure/linting.sh @@ -0,0 +1,43 @@ +#!/bin/bash + +set -e +# pipefail is necessary to propagate exit codes +set -o pipefail + +flake8 --show-source . +echo -e "No problem detected by flake8\n" + +# For docstrings and warnings of deprecated attributes to be rendered +# properly, the property decorator must come before the deprecated decorator +# (else they are treated as functions) + +# do not error when grep -B1 "@property" finds nothing +set +e +bad_deprecation_property_order=`git grep -A 10 "@property" -- "*.py" | awk '/@property/,/def /' | grep -B1 "@deprecated"` + +if [ ! -z "$bad_deprecation_property_order" ] +then + echo "property decorator should come before deprecated decorator" + echo "found the following occurrencies:" + echo $bad_deprecation_property_order + exit 1 +fi + +# Check for default doctest directives ELLIPSIS and NORMALIZE_WHITESPACE + +doctest_directive="$(git grep -nw -E "# doctest\: \+(ELLIPSIS|NORMALIZE_WHITESPACE)")" + +if [ ! -z "$doctest_directive" ] +then + echo "ELLIPSIS and NORMALIZE_WHITESPACE doctest directives are enabled by default, but were found in:" + echo "$doctest_directive" + exit 1 +fi + +joblib_import="$(git grep -l -A 10 -E "joblib import.+delayed" -- "*.py" ":!sklearn/utils/_joblib.py" ":!sklearn/utils/fixes.py")" + +if [ ! -z "$joblib_import" ]; then + echo "Use from sklearn.utils.fixes import delayed instead of joblib delayed. The following files contains imports to joblib.delayed:" + echo "$joblib_import" + exit 1 +fi diff --git a/build_tools/circle/linting.sh b/build_tools/circle/linting.sh deleted file mode 100755 index aebe42dfecc70..0000000000000 --- a/build_tools/circle/linting.sh +++ /dev/null @@ -1,179 +0,0 @@ -#!/bin/bash - -# This script is used in CircleCI to check that PRs do not add obvious -# flake8 violations. It relies on two things: -# - find common ancestor between branch and -# scikit-learn/scikit-learn remote -# - run flake8 --diff on the diff between the branch and the common -# ancestor -# -# Additional features: -# - the line numbers in Travis match the local branch on the PR -# author machine. -# - ./build_tools/circle/flake8_diff.sh can be run locally for quick -# turn-around - -set -e -# pipefail is necessary to propagate exit codes -set -o pipefail - -PROJECT=scikit-learn/scikit-learn -PROJECT_URL=https://github.com/$PROJECT.git - -# Find the remote with the project name (upstream in most cases) -REMOTE=$(git remote -v | grep $PROJECT | cut -f1 | head -1 || echo '') - -# Add a temporary remote if needed. For example this is necessary when -# Travis is configured to run in a fork. In this case 'origin' is the -# fork and not the reference repo we want to diff against. -if [[ -z "$REMOTE" ]]; then - TMP_REMOTE=tmp_reference_upstream - REMOTE=$TMP_REMOTE - git remote add $REMOTE $PROJECT_URL -fi - -echo "Remotes:" -echo '--------------------------------------------------------------------------------' -git remote --verbose - -# Travis does the git clone with a limited depth (50 at the time of -# writing). This may not be enough to find the common ancestor with -# $REMOTE/main so we unshallow the git checkout -if [[ -a .git/shallow ]]; then - echo -e '\nTrying to unshallow the repo:' - echo '--------------------------------------------------------------------------------' - git fetch --unshallow -fi - -if [[ "$TRAVIS" == "true" ]]; then - if [[ "$TRAVIS_PULL_REQUEST" == "false" ]] - then - # In main repo, using TRAVIS_COMMIT_RANGE to test the commits - # that were pushed into a branch - if [[ "$PROJECT" == "$TRAVIS_REPO_SLUG" ]]; then - if [[ -z "$TRAVIS_COMMIT_RANGE" ]]; then - echo "New branch, no commit range from Travis so passing this test by convention" - exit 0 - fi - COMMIT_RANGE=$TRAVIS_COMMIT_RANGE - fi - else - # We want to fetch the code as it is in the PR branch and not - # the result of the merge into main. This way line numbers - # reported by Travis will match with the local code. - LOCAL_BRANCH_REF=travis_pr_$TRAVIS_PULL_REQUEST - # In Travis the PR target is always origin - git fetch origin pull/$TRAVIS_PULL_REQUEST/head:refs/$LOCAL_BRANCH_REF - fi -fi - -# If not using the commit range from Travis we need to find the common -# ancestor between $LOCAL_BRANCH_REF and $REMOTE/main -if [[ -z "$COMMIT_RANGE" ]]; then - if [[ -z "$LOCAL_BRANCH_REF" ]]; then - LOCAL_BRANCH_REF=$(git rev-parse --abbrev-ref HEAD) - fi - echo -e "\nLast 2 commits in $LOCAL_BRANCH_REF:" - echo '--------------------------------------------------------------------------------' - git --no-pager log -2 $LOCAL_BRANCH_REF - - REMOTE_MAIN_REF="$REMOTE/main" - # Make sure that $REMOTE_MAIN_REF is a valid reference - echo -e "\nFetching $REMOTE_MAIN_REF" - echo '--------------------------------------------------------------------------------' - git fetch $REMOTE main:refs/remotes/$REMOTE_MAIN_REF - LOCAL_BRANCH_SHORT_HASH=$(git rev-parse --short $LOCAL_BRANCH_REF) - REMOTE_MAIN_SHORT_HASH=$(git rev-parse --short $REMOTE_MAIN_REF) - - COMMIT=$(git merge-base $LOCAL_BRANCH_REF $REMOTE_MAIN_REF) || \ - echo "No common ancestor found for $(git show $LOCAL_BRANCH_REF -q) and $(git show $REMOTE_MAIN_REF -q)" - - if [ -z "$COMMIT" ]; then - exit 1 - fi - - COMMIT_SHORT_HASH=$(git rev-parse --short $COMMIT) - - echo -e "\nCommon ancestor between $LOCAL_BRANCH_REF ($LOCAL_BRANCH_SHORT_HASH)"\ - "and $REMOTE_MAIN_REF ($REMOTE_MAIN_SHORT_HASH) is $COMMIT_SHORT_HASH:" - echo '--------------------------------------------------------------------------------' - git --no-pager show --no-patch $COMMIT_SHORT_HASH - - COMMIT_RANGE="$COMMIT_SHORT_HASH..$LOCAL_BRANCH_SHORT_HASH" - - if [[ -n "$TMP_REMOTE" ]]; then - git remote remove $TMP_REMOTE - fi - -else - echo "Got the commit range from Travis: $COMMIT_RANGE" -fi - -echo -e '\nRunning flake8 on the diff in the range' "$COMMIT_RANGE" \ - "($(git rev-list $COMMIT_RANGE | wc -l) commit(s)):" -echo '--------------------------------------------------------------------------------' - -# We ignore files from sklearn/externals. Unfortunately there is no -# way to do it with flake8 directly (the --exclude does not seem to -# work with --diff). We could use the exclude magic in the git pathspec -# ':!sklearn/externals' but it is only available on git 1.9 and Travis -# uses git 1.8. -# We need the following command to exit with 0 hence the echo in case -# there is no match -MODIFIED_FILES="$(git diff --name-only $COMMIT_RANGE | grep -v 'sklearn/externals' | \ - grep -v 'doc/sphinxext' || echo "no_match")" - -check_files() { - files="$1" - shift - options="$*" - if [ -n "$files" ]; then - # Conservative approach: diff without context (--unified=0) so that code - # that was not changed does not create failures - git diff --unified=0 $COMMIT_RANGE -- $files | flake8 --diff --show-source $options - fi -} - -if [[ "$MODIFIED_FILES" == "no_match" ]]; then - echo "No file outside sklearn/externals and doc/sphinxext has been modified" -else - check_files "$MODIFIED_FILES" - # check code for unused imports - flake8 --exclude=sklearn/externals/ --select=F401 sklearn/ examples/ -fi -echo -e "No problem detected by flake8\n" - -# For docstrings and warnings of deprecated attributes to be rendered -# properly, the property decorator must come before the deprecated decorator -# (else they are treated as functions) - -# do not error when grep -B1 "@property" finds nothing -set +e -bad_deprecation_property_order=`git grep -A 10 "@property" -- "*.py" | awk '/@property/,/def /' | grep -B1 "@deprecated"` - -if [ ! -z "$bad_deprecation_property_order" ] -then - echo "property decorator should come before deprecated decorator" - echo "found the following occurrencies:" - echo $bad_deprecation_property_order - exit 1 -fi - -# Check for default doctest directives ELLIPSIS and NORMALIZE_WHITESPACE - -doctest_directive="$(git grep -nw -E "# doctest\: \+(ELLIPSIS|NORMALIZE_WHITESPACE)")" - -if [ ! -z "$doctest_directive" ] -then - echo "ELLIPSIS and NORMALIZE_WHITESPACE doctest directives are enabled by default, but were found in:" - echo "$doctest_directive" - exit 1 -fi - -joblib_import="$(git grep -l -A 10 -E "joblib import.+delayed" -- "*.py" ":!sklearn/utils/_joblib.py" ":!sklearn/utils/fixes.py")" - -if [ ! -z "$joblib_import" ]; then - echo "Use from sklearn.utils.fixes import delayed instead of joblib delayed. The following files contains imports to joblib.delayed:" - echo "$joblib_import" - exit 1 -fi diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index c6af69cc703ce..2076b064b28e2 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -435,15 +435,11 @@ complies with the following rules before marking a PR as ``[MRG]``. The `editor integration documentation `_ to configure your editor to run `black`. -6. **Make sure that your PR does not add PEP8 violations**. To check the - code that you changed, you can run the following command (see - :ref:`above ` to set up the ``upstream`` remote): +6. Run `flake8` to make sure you followed the project coding conventions. .. prompt:: bash $ - git diff upstream/main -u -- "*.py" | flake8 --diff - - or `make flake8-diff` which should work on Unix-like systems. + flake8 . 7. Follow the :ref:`coding-guidelines`. diff --git a/sklearn/decomposition/tests/test_nmf.py b/sklearn/decomposition/tests/test_nmf.py index 9f3df5b64a803..c8dae384514d8 100644 --- a/sklearn/decomposition/tests/test_nmf.py +++ b/sklearn/decomposition/tests/test_nmf.py @@ -51,7 +51,6 @@ def test_initialize_nn_output(): ) def test_parameter_checking(): A = np.ones((2, 2)) - name = "spam" with ignore_warnings(category=FutureWarning): # TODO remove in 1.2 From 2235eb2faa3f3927ca765ba80c9ebc8012f0aa61 Mon Sep 17 00:00:00 2001 From: "Christine P. Chai" Date: Wed, 6 Jul 2022 18:26:49 -0700 Subject: [PATCH 157/251] DOC Replace "consequences" with "advantages" (#23850) --- examples/cluster/plot_agglomerative_clustering.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/cluster/plot_agglomerative_clustering.py b/examples/cluster/plot_agglomerative_clustering.py index 9d590f572f121..5bb87a9386bf8 100644 --- a/examples/cluster/plot_agglomerative_clustering.py +++ b/examples/cluster/plot_agglomerative_clustering.py @@ -6,7 +6,7 @@ local structure in the data. The graph is simply the graph of 20 nearest neighbors. -Two consequences of imposing a connectivity can be seen. First, clustering +There are two advantages of imposing a connectivity. First, clustering without a connectivity matrix is much faster. Second, when using a connectivity matrix, single, average and complete From ef29cade6387cfb97a996b6166f66d9446bcb8c4 Mon Sep 17 00:00:00 2001 From: Chiara Marmo Date: Wed, 6 Jul 2022 21:05:19 -1000 Subject: [PATCH 158/251] [MRG] Update gridsearch example for multimetric scoring. (#22279) Co-authored-by: Julien Jerphanion Co-authored-by: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Co-authored-by: Olivier Grisel Co-authored-by: Pratik Chowdhury Co-authored-by: Thomas J. Fan Co-authored-by: Chiara Marmo --- .../plot_grid_search_digits.py | 216 ++++++++++++++---- sklearn/model_selection/_search.py | 4 + 2 files changed, 179 insertions(+), 41 deletions(-) diff --git a/examples/model_selection/plot_grid_search_digits.py b/examples/model_selection/plot_grid_search_digits.py index 2aaa64043749b..7c812f22db743 100644 --- a/examples/model_selection/plot_grid_search_digits.py +++ b/examples/model_selection/plot_grid_search_digits.py @@ -1,6 +1,6 @@ """ ============================================================ -Parameter estimation using grid search with cross-validation +Custom refit strategy of a grid search with cross-validation ============================================================ This examples shows how a classifier is optimized by cross-validation, @@ -13,56 +13,190 @@ More details on tools available for model selection can be found in the sections on :ref:`cross_validation` and :ref:`grid_search`. - """ +# %% +# The dataset +# ----------- +# +# We will work with the `digits` dataset. The goal is to classify handwritten +# digits images. +# We transform the problem into a binary classification for easier +# understanding: the goal is to identify whether a digit is `8` or not. from sklearn import datasets -from sklearn.model_selection import train_test_split -from sklearn.model_selection import GridSearchCV -from sklearn.metrics import classification_report -from sklearn.svm import SVC -# Loading the Digits dataset -X, y = datasets.load_digits(return_X_y=True) +digits = datasets.load_digits() + +# %% +# In order to train a classifier on images, we need to flatten them into vectors. +# Each image of 8 by 8 pixels needs to be transformed to a vector of 64 pixels. +# Thus, we will get a final data array of shape `(n_images, n_pixels)`. +n_samples = len(digits.images) +X = digits.images.reshape((n_samples, -1)) +y = digits.target == 8 +print( + f"The number of images is {X.shape[0]} and each image contains {X.shape[1]} pixels" +) + +# %% +# As presented in the introduction, the data will be split into a training +# and a testing set of equal size. +from sklearn.model_selection import train_test_split -# Split the dataset in two equal parts X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=0) -# Set the parameters by cross-validation +# %% +# Define our grid-search strategy +# ------------------------------- +# +# We will select a classifier by searching the best hyper-parameters on folds +# of the training set. To do this, we need to define +# the scores to select the best candidate. + +scores = ["precision", "recall"] + +# %% +# We can also define a function to be passed to the `refit` parameter of the +# :class:`~sklearn.model_selection.GridSearchCV` instance. It will implement the +# custom strategy to select the best candidate from the `cv_results_` attribute +# of the :class:`~sklearn.model_selection.GridSearchCV`. Once the candidate is +# selected, it is automatically refitted by the +# :class:`~sklearn.model_selection.GridSearchCV` instance. +# +# Here, the strategy is to short-list the models which are the best in terms of +# precision and recall. From the selected models, we finally select the fastest +# model at predicting. Notice that these custom choices are completely +# arbitrary. + +import pandas as pd + + +def print_dataframe(filtered_cv_results): + """Pretty print for filtered dataframe""" + for mean_precision, std_precision, mean_recall, std_recall, params in zip( + filtered_cv_results["mean_test_precision"], + filtered_cv_results["std_test_precision"], + filtered_cv_results["mean_test_recall"], + filtered_cv_results["std_test_recall"], + filtered_cv_results["params"], + ): + print( + f"precision: {mean_precision:0.3f} (±{std_precision:0.03f})," + f" recall: {mean_recall:0.3f} (±{std_recall:0.03f})," + f" for {params}" + ) + + +def refit_strategy(cv_results): + """Define the strategy to select the best estimator. + + The strategy defined here is to filter-out all results below a precision threshold + of 0.98, rank the remaining by recall and keep all models with one standard + deviation of the best by recall. Once these models are selected, we can select the + fastest model to predict. + + Parameters + ---------- + cv_results : dict of numpy (masked) ndarrays + CV results as returned by the `GridSearchCV`. + + Returns + ------- + best_index : int + The index of the best estimator as it appears in `cv_results`. + """ + # print the info about the grid-search for the different scores + precision_threshold = 0.98 + + cv_results_ = pd.DataFrame(cv_results) + print(f"\nModels with a precision higher than {precision_threshold}:") + print_dataframe(cv_results_) + + # Filter-out all results below the threshold + high_precision_cv_results = cv_results_[ + cv_results_["mean_test_precision"] > precision_threshold + ] + + print(f"Models with a precision higher than {precision_threshold}:") + print_dataframe(high_precision_cv_results) + + high_precision_cv_results = high_precision_cv_results[ + [ + "mean_score_time", + "mean_test_recall", + "std_test_recall", + "mean_test_precision", + "std_test_precision", + "rank_test_recall", + "rank_test_precision", + "params", + ] + ] + + # Select the most performant models in terms of recall + # (within 1 sigma from the best) + best_recall_std = high_precision_cv_results["mean_test_recall"].std() + best_recall = high_precision_cv_results["mean_test_recall"].max() + best_recall_threshold = best_recall - best_recall_std + + high_recall_cv_results = high_precision_cv_results[ + high_precision_cv_results["mean_test_recall"] > best_recall_threshold + ] + print( + "Out of the previously selected high precision models, we keep all the\n" + "the models within one standard deviation of the highest recall model:" + ) + print_dataframe(high_recall_cv_results) + + # From the best candidates, select the fastest model to predict + fastest_top_recall_high_precision_index = high_recall_cv_results[ + "mean_score_time" + ].idxmin() + + print( + "\nThe selected final model is the fastest to predict out of the previously\n" + "selected subset of best models based on precision and recall.\n" + "Its scoring time is:\n\n" + f"{high_recall_cv_results.loc[fastest_top_recall_high_precision_index]}" + ) + + return fastest_top_recall_high_precision_index + + +# %% +# Once we defined our strategy to select the best model, we define the values of +# the hyper-parameters and create the +# grid-search instance. Subsequently, we can check the best parameters found. +from sklearn.model_selection import GridSearchCV +from sklearn.svm import SVC + tuned_parameters = [ {"kernel": ["rbf"], "gamma": [1e-3, 1e-4], "C": [1, 10, 100, 1000]}, {"kernel": ["linear"], "C": [1, 10, 100, 1000]}, ] -scores = ["precision", "recall"] +grid_search = GridSearchCV( + SVC(), tuned_parameters, scoring=scores, refit=refit_strategy +) + +# %% +# Tuning hyper-parameters +# ----------------------- + +grid_search.fit(X_train, y_train) +print(f"\nThe best set of parameters found are:\n{grid_search.best_params_}") + +# %% +# Finally, we evaluate the fine-tuned model on the left-out evaluation set. +from sklearn.metrics import classification_report + +y_pred = grid_search.predict(X_test) +print( + "\nOur selected model has the following performance on the " + f"testing set:\n\n {classification_report(y_test, y_pred)}" +) -for score in scores: - print("# Tuning hyper-parameters for %s" % score) - print() - - clf = GridSearchCV(SVC(), tuned_parameters, scoring="%s_macro" % score) - clf.fit(X_train, y_train) - - print("Best parameters set found on development set:") - print() - print(clf.best_params_) - print() - print("Grid scores on development set:") - print() - means = clf.cv_results_["mean_test_score"] - stds = clf.cv_results_["std_test_score"] - for mean, std, params in zip(means, stds, clf.cv_results_["params"]): - print("%0.3f (+/-%0.03f) for %r" % (mean, std * 2, params)) - print() - - print("Detailed classification report:") - print() - print("The model is trained on the full development set.") - print("The scores are computed on the full evaluation set.") - print() - y_true, y_pred = y_test, clf.predict(X_test) - print(classification_report(y_true, y_pred)) - print() - -# Note the problem is too easy: the hyperparameter plateau is too flat and the -# output model is the same for precision and recall with ties in quality. +# %% +# .. note:: +# The problem is too easy: the hyperparameter plateau is too flat and the +# output model is the same for precision and recall with ties in quality. diff --git a/sklearn/model_selection/_search.py b/sklearn/model_selection/_search.py index 5ceb71569b932..4e2a0bd1c5207 100644 --- a/sklearn/model_selection/_search.py +++ b/sklearn/model_selection/_search.py @@ -1101,6 +1101,10 @@ class GridSearchCV(BaseSearchCV): See ``scoring`` parameter to know more about multiple metric evaluation. + See :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py` + to see how to design a custom selection strategy using a callable + via `refit`. + .. versionchanged:: 0.20 Support for callable added. From 5df9579448741bc9ddbe85028b667e3bbe0b6d42 Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Thu, 7 Jul 2022 21:50:51 +0530 Subject: [PATCH 159/251] DOC improve estimator set_params documentation (#23816) --- doc/developers/develop.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/developers/develop.rst b/doc/developers/develop.rst index 5d77dfebb070c..0e4b8258476da 100644 --- a/doc/developers/develop.rst +++ b/doc/developers/develop.rst @@ -370,9 +370,10 @@ While when `deep=False`, the output will be:: my_extra_param -> random subestimator -> LogisticRegression() -The ``set_params`` on the other hand takes as input a dict of the form -``'parameter': value`` and sets the parameter of the estimator using this dict. -Return value must be estimator itself. +On the other hand, ``set_params`` takes the parameters of ``__init__`` +as keyword arguments, unpacks them into a dict of the form +``'parameter': value`` and sets the parameters of the estimator using this dict. +Return value must be the estimator itself. While the ``get_params`` mechanism is not essential (see :ref:`cloning` below), the ``set_params`` function is necessary as it is used to set parameters during From 87d170d81f9ecbd8ee9f58b4cd51bb869d9a4f64 Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Fri, 8 Jul 2022 11:36:13 +1000 Subject: [PATCH 160/251] DOC Fix typos on Feature Extraction page (#23859) --- doc/modules/feature_extraction.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/feature_extraction.rst b/doc/modules/feature_extraction.rst index a07d722defb9b..962784fb236bc 100644 --- a/doc/modules/feature_extraction.rst +++ b/doc/modules/feature_extraction.rst @@ -33,7 +33,7 @@ need not be stored) and storing feature names in addition to values. :class:`DictVectorizer` implements what is called one-of-K or "one-hot" coding for categorical (aka nominal, discrete) features. Categorical features are "attribute-value" pairs where the value is restricted -to a list of discrete of possibilities without ordering (e.g. topic +to a list of discrete possibilities without ordering (e.g. topic identifiers, types of objects, tags, names...). In the following, "city" is a categorical attribute while "temperature" @@ -995,7 +995,7 @@ Patch extraction The :func:`extract_patches_2d` function extracts patches from an image stored as a two-dimensional array, or three-dimensional with color information along the third axis. For rebuilding an image from all its patches, use -:func:`reconstruct_from_patches_2d`. For example let use generate a 4x4 pixel +:func:`reconstruct_from_patches_2d`. For example let us generate a 4x4 pixel picture with 3 color channels (e.g. in RGB format):: >>> import numpy as np From cb03250eedd86722da69b4a690f02ae245d2df6b Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Fri, 8 Jul 2022 19:56:09 +1000 Subject: [PATCH 161/251] DOC Fix typos on plot_all_scalaing page (#23860) --- examples/preprocessing/plot_all_scaling.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/preprocessing/plot_all_scaling.py b/examples/preprocessing/plot_all_scaling.py index 49af744011d12..d8a20ece5c56c 100644 --- a/examples/preprocessing/plot_all_scaling.py +++ b/examples/preprocessing/plot_all_scaling.py @@ -324,7 +324,7 @@ def make_plot(item_idx): # # Unlike the previous scalers, the centering and scaling statistics of # :class:`~sklearn.preprocessing.RobustScaler` -# is based on percentiles and are therefore not influenced by a few +# are based on percentiles and are therefore not influenced by a small # number of very large marginal outliers. Consequently, the resulting range of # the transformed feature values is larger than for the previous scalers and, # more importantly, are approximately similar: for both features most of the From dc39de1e7b4bb15df3334231741fbfbfcbc8f096 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Tue, 12 Jul 2022 03:38:01 -0500 Subject: [PATCH 162/251] CI Include date in issue updater (#23866) --- maint_tools/update_tracking_issue.py | 31 ++++++++++++++++------------ 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/maint_tools/update_tracking_issue.py b/maint_tools/update_tracking_issue.py index d943b0676d536..4ddc9d1bfe8e6 100644 --- a/maint_tools/update_tracking_issue.py +++ b/maint_tools/update_tracking_issue.py @@ -14,6 +14,7 @@ from pathlib import Path import sys import argparse +from datetime import datetime, timezone import defusedxml.ElementTree as ET from github import Github @@ -56,6 +57,8 @@ gh = Github(args.bot_github_token) issue_repo = gh.get_repo(args.issue_repo) +dt_now = datetime.now(tz=timezone.utc) +date_str = dt_now.strftime("%b %d, %Y") title = f"⚠️ CI failed on {args.ci_name} ⚠️" @@ -85,13 +88,13 @@ def create_or_update_issue(body=""): if issue is None: # Create new issue - header = f"**CI failed on {link}**" + header = f"**CI failed on {link}** ({date_str})" issue = issue_repo.create_issue(title=title, body=f"{header}\n{body}") print(f"Created issue in {args.issue_repo}#{issue.number}") sys.exit() else: # Update existing issue - header = f"**CI is still failing on {link}**" + header = f"**CI is still failing on {link}** ({date_str})" issue.edit(body=f"{header}\n{body}") print(f"Commented on issue: {args.issue_repo}#{issue.number}") sys.exit() @@ -101,18 +104,20 @@ def close_issue_if_opened(): print("Test has no failures!") issue = get_issue() if issue is not None: - # Comment only if the "## CI is no longer failing" comment does not exist - comment_exists = any( - c.body.startswith("## CI is no longer failing") - for c in issue.get_comments() + header_str = "## CI is no longer failing!" + comment_str = ( + f"{header_str} ✅\n\n[Successful run]({args.link_to_ci_run}) on {date_str}" ) - if not comment_exists: - comment = ( - "## CI is no longer failing! ✅\n\n[Successful" - f" run]({args.link_to_ci_run})" - ) - print(f"Commented on issue #{issue.number}") - issue.create_comment(body=comment) + + print(f"Commented on issue #{issue.number}") + # New comment if "## CI is no longer failing!" comment does not exist + # If it does exist update the original comment which includes the new date + for comment in issue.get_comments(): + if comment.body.startswith(header_str): + comment.edit(body=comment_str) + break + else: # no break + issue.create_comment(body=comment_str) if args.auto_close.lower() == "true": print(f"Closing issue #{issue.number}") From b049f8fd3e2159a8c589ba1ac14f13991d366c6f Mon Sep 17 00:00:00 2001 From: David Gilbertson Date: Tue, 12 Jul 2022 18:41:31 +1000 Subject: [PATCH 163/251] DOC Fix imputation glossary link (#23879) --- doc/modules/impute.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/modules/impute.rst b/doc/modules/impute.rst index 2df6e0a76bd73..c71d71b7c8ee9 100644 --- a/doc/modules/impute.rst +++ b/doc/modules/impute.rst @@ -14,7 +14,7 @@ use incomplete datasets is to discard entire rows and/or columns containing missing values. However, this comes at the price of losing data which may be valuable (even though incomplete). A better strategy is to impute the missing values, i.e., to infer them from the known part of the data. See the -:ref:`glossary` entry on imputation. +glossary entry on :term:`imputation`. Univariate vs. Multivariate Imputation From f89e08bc706c736ac665acecfad0b61146b4b063 Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 10:51:26 +0100 Subject: [PATCH 164/251] DOC Update sklearn.preprocessing._data.robust_scale docstring to pass numpydoc validation. (#23908) --- sklearn/preprocessing/_data.py | 10 +++++----- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/sklearn/preprocessing/_data.py b/sklearn/preprocessing/_data.py index 8c266e3f12e55..410501dfbcebd 100644 --- a/sklearn/preprocessing/_data.py +++ b/sklearn/preprocessing/_data.py @@ -1659,6 +1659,11 @@ def robust_scale( X_tr : {ndarray, sparse matrix} of shape (n_samples, n_features) The transformed data. + See Also + -------- + RobustScaler : Performs centering and scaling using the Transformer API + (e.g. as part of a preprocessing :class:`~sklearn.pipeline.Pipeline`). + Notes ----- This implementation will refuse to center scipy.sparse matrices @@ -1687,11 +1692,6 @@ def robust_scale( :class:`~sklearn.preprocessing.RobustScaler` within a :ref:`Pipeline ` in order to prevent most risks of data leaking: `pipe = make_pipeline(RobustScaler(), LogisticRegression())`. - - See Also - -------- - RobustScaler : Performs centering and scaling using the Transformer API - (e.g. as part of a preprocessing :class:`~sklearn.pipeline.Pipeline`). """ X = check_array( X, diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 1489dd5c6da72..c02fb0480bea7 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -71,7 +71,6 @@ "sklearn.model_selection._validation.validation_curve", "sklearn.pipeline.make_union", "sklearn.preprocessing._data.maxabs_scale", - "sklearn.preprocessing._data.robust_scale", "sklearn.preprocessing._data.scale", "sklearn.preprocessing._label.label_binarize", "sklearn.random_projection.johnson_lindenstrauss_min_dim", From 7d9ce2f3ae8d958cddc649cf98c50a28a4b3e6b0 Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 11:27:55 +0100 Subject: [PATCH 165/251] DOC numpydoc validation on `learning_curve` (#23911) --- sklearn/tests/test_docstrings.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index c02fb0480bea7..59bf28a40d91b 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -66,7 +66,6 @@ "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", - "sklearn.model_selection._validation.learning_curve", "sklearn.model_selection._validation.permutation_test_score", "sklearn.model_selection._validation.validation_curve", "sklearn.pipeline.make_union", From c69edeb36de027ad605919a2a8f885137313fc1d Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 11:31:23 +0100 Subject: [PATCH 166/251] DOC numpydo validation for `validation_curve` (#23913) --- sklearn/model_selection/_validation.py | 11 +++++------ sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/sklearn/model_selection/_validation.py b/sklearn/model_selection/_validation.py index d83fca63da48c..4b0c2d1a153ad 100644 --- a/sklearn/model_selection/_validation.py +++ b/sklearn/model_selection/_validation.py @@ -1805,11 +1805,6 @@ def validation_curve( verbose : int, default=0 Controls the verbosity: the higher, the more messages. - fit_params : dict, default=None - Parameters to pass to the fit method of the estimator. - - .. versionadded:: 0.24 - error_score : 'raise' or numeric, default=np.nan Value to assign to the score if an error occurs in estimator fitting. If set to 'raise', the error is raised. @@ -1817,6 +1812,11 @@ def validation_curve( .. versionadded:: 0.20 + fit_params : dict, default=None + Parameters to pass to the fit method of the estimator. + + .. versionadded:: 0.24 + Returns ------- train_scores : array of shape (n_ticks, n_cv_folds) @@ -1828,7 +1828,6 @@ def validation_curve( Notes ----- See :ref:`sphx_glr_auto_examples_model_selection_plot_validation_curve.py` - """ X, y, groups = indexable(X, y, groups) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 59bf28a40d91b..cb9566970e8a4 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -67,7 +67,6 @@ "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", "sklearn.model_selection._validation.permutation_test_score", - "sklearn.model_selection._validation.validation_curve", "sklearn.pipeline.make_union", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", From 42b5b6bb5ee21bbe67049f20997dac603a6c05f5 Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 11:34:29 +0100 Subject: [PATCH 167/251] DOC Ensure sklearn.metrics._classification.brier_score_loss passes numpydoc validation. (#23914) --- sklearn/metrics/_classification.py | 10 +++++----- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index 4bf3caf9f41ce..477ca93256731 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -2656,6 +2656,11 @@ def brier_score_loss(y_true, y_prob, *, sample_weight=None, pos_label=None): score : float Brier score loss. + References + ---------- + .. [1] `Wikipedia entry for the Brier score + `_. + Examples -------- >>> import numpy as np @@ -2671,11 +2676,6 @@ def brier_score_loss(y_true, y_prob, *, sample_weight=None, pos_label=None): 0.037... >>> brier_score_loss(y_true, np.array(y_prob) > 0.5) 0.0 - - References - ---------- - .. [1] `Wikipedia entry for the Brier score - `_. """ y_true = column_or_1d(y_true) y_prob = column_or_1d(y_prob) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index cb9566970e8a4..5f5b64067c1fa 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -31,7 +31,6 @@ "sklearn.linear_model._omp.orthogonal_mp_gram", "sklearn.manifold._locally_linear.locally_linear_embedding", "sklearn.manifold._t_sne.trustworthiness", - "sklearn.metrics._classification.brier_score_loss", "sklearn.metrics._classification.cohen_kappa_score", "sklearn.metrics._classification.jaccard_score", "sklearn.metrics._plot.det_curve.plot_det_curve", From 23f43560b5b8db0e67c74ab1465c7aac2bb132b6 Mon Sep 17 00:00:00 2001 From: mathurinm Date: Sat, 16 Jul 2022 12:48:47 +0200 Subject: [PATCH 168/251] DOC add regularization in HuberRegressor docstring (#23907) --- sklearn/linear_model/_huber.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/sklearn/linear_model/_huber.py b/sklearn/linear_model/_huber.py index 3fdf5aa73743f..afadc8c1efc2e 100644 --- a/sklearn/linear_model/_huber.py +++ b/sklearn/linear_model/_huber.py @@ -124,18 +124,19 @@ def _huber_loss_and_gradient(w, X, y, epsilon, alpha, sample_weight=None): class HuberRegressor(LinearModel, RegressorMixin, BaseEstimator): - """Linear regression model that is robust to outliers. + """L2-regularized linear regression model that is robust to outliers. The Huber Regressor optimizes the squared loss for the samples where - ``|(y - X'w) / sigma| < epsilon`` and the absolute loss for the samples - where ``|(y - X'w) / sigma| > epsilon``, where w and sigma are parameters + ``|(y - Xw - c) / sigma| < epsilon`` and the absolute loss for the samples + where ``|(y - Xw - c) / sigma| > epsilon``, where the model coefficients + ``w``, the intercept ``c`` and the scale ``sigma`` are parameters to be optimized. The parameter sigma makes sure that if y is scaled up or down by a certain factor, one does not need to rescale epsilon to achieve the same robustness. Note that this does not take into account the fact that the different features of X may be of different scales. - This makes sure that the loss function is not heavily influenced by the - outliers while not completely ignoring their effect. + The Huber loss function has the advantage of not being heavily influenced + by the outliers while not completely ignoring their effect. Read more in the :ref:`User Guide ` @@ -153,7 +154,9 @@ class HuberRegressor(LinearModel, RegressorMixin, BaseEstimator): ``scipy.optimize.minimize(method="L-BFGS-B")`` should run for. alpha : float, default=0.0001 - Regularization parameter. + Strength of the squared L2 regularization. Note that the penalty is + equal to ``alpha * ||w||^2``. + Must be in the range `[0, inf)`. warm_start : bool, default=False This is useful if the stored attributes of a previously used model @@ -173,13 +176,13 @@ class HuberRegressor(LinearModel, RegressorMixin, BaseEstimator): Attributes ---------- coef_ : array, shape (n_features,) - Features got by optimizing the Huber loss. + Features got by optimizing the L2-regularized Huber loss. intercept_ : float Bias. scale_ : float - The value by which ``|y - X'w - c|`` is scaled down. + The value by which ``|y - Xw - c|`` is scaled down. n_features_in_ : int Number of features seen during :term:`fit`. From 80c3e10a19cabb0994ca136baffe8dd099f993e5 Mon Sep 17 00:00:00 2001 From: htsedebenham <31847376+htsedebenham@users.noreply.github.com> Date: Sat, 16 Jul 2022 12:15:10 +0100 Subject: [PATCH 169/251] DOC numpydoc validation for `resample` function (#23916) --- sklearn/tests/test_docstrings.py | 1 - sklearn/utils/__init__.py | 8 ++++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 5f5b64067c1fa..7300471f42d59 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -98,7 +98,6 @@ "sklearn.utils.multiclass.class_distribution", "sklearn.utils.multiclass.type_of_target", "sklearn.utils.multiclass.unique_labels", - "sklearn.utils.resample", "sklearn.utils.safe_mask", "sklearn.utils.safe_sqr", "sklearn.utils.shuffle", diff --git a/sklearn/utils/__init__.py b/sklearn/utils/__init__.py index aa056e92b3d12..a4857d62f7a38 100644 --- a/sklearn/utils/__init__.py +++ b/sklearn/utils/__init__.py @@ -473,6 +473,10 @@ def resample(*arrays, replace=True, n_samples=None, random_state=None, stratify= Sequence of resampled copies of the collections. The original arrays are not impacted. + See Also + -------- + shuffle : Shuffle arrays or sparse matrices in a consistent way. + Examples -------- It is possible to mix sparse and dense arrays in the same run:: @@ -512,10 +516,6 @@ def resample(*arrays, replace=True, n_samples=None, random_state=None, stratify= >>> resample(y, n_samples=5, replace=False, stratify=y, ... random_state=0) [1, 1, 1, 0, 1] - - See Also - -------- - shuffle """ max_n_samples = n_samples random_state = check_random_state(random_state) From 7499c70cc026cba5a86f4dbcc107ec38aa886d00 Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 12:39:39 +0100 Subject: [PATCH 170/251] DOC Ensure sklearn.model_selection._validation.permutation_test_score passes numpydoc validation (#23912) Co-authored-by: Guillaume Lemaitre --- sklearn/model_selection/_validation.py | 15 +++++++-------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/sklearn/model_selection/_validation.py b/sklearn/model_selection/_validation.py index 4b0c2d1a153ad..94bbf532f5a59 100644 --- a/sklearn/model_selection/_validation.py +++ b/sklearn/model_selection/_validation.py @@ -1180,7 +1180,7 @@ def permutation_test_score( scoring=None, fit_params=None, ): - """Evaluate the significance of a cross-validated score with permutations + """Evaluate the significance of a cross-validated score with permutations. Permutes targets to generate 'randomized data' and compute the empirical p-value against the null hypothesis that features and targets are @@ -1218,12 +1218,6 @@ def permutation_test_score( cross-validator uses them for grouping the samples while splitting the dataset into train/test set. - scoring : str or callable, default=None - A single str (see :ref:`scoring_parameter`) or a callable - (see :ref:`scoring`) to evaluate the predictions on the test set. - - If `None` the estimator's score method is used. - cv : int, cross-validation generator or an iterable, default=None Determines the cross-validation splitting strategy. Possible inputs for cv are: @@ -1261,6 +1255,12 @@ def permutation_test_score( verbose : int, default=0 The verbosity level. + scoring : str or callable, default=None + A single str (see :ref:`scoring_parameter`) or a callable + (see :ref:`scoring`) to evaluate the predictions on the test set. + + If `None` the estimator's score method is used. + fit_params : dict, default=None Parameters to pass to the fit method of the estimator. @@ -1292,7 +1292,6 @@ def permutation_test_score( Performance `_. The Journal of Machine Learning Research (2010) vol. 11 - """ X, y, groups = indexable(X, y, groups) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 7300471f42d59..4b42a76a977dc 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -65,7 +65,6 @@ "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", - "sklearn.model_selection._validation.permutation_test_score", "sklearn.pipeline.make_union", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", From 1ee2a4920c66c4982de3238e6c9ac53fa009d52a Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 12:50:19 +0100 Subject: [PATCH 171/251] DOC numpydoc validation for `cohen_kappa_score` (#23915) Co-authored-by: Guillaume Lemaitre --- sklearn/metrics/_classification.py | 2 +- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index 477ca93256731..265cc20ef7e1e 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -586,7 +586,7 @@ def multilabel_confusion_matrix( def cohen_kappa_score(y1, y2, *, labels=None, weights=None, sample_weight=None): - r"""Cohen's kappa: a statistic that measures inter-annotator agreement. + r"""Compute Cohen's kappa: a statistic that measures inter-annotator agreement. This function computes Cohen's kappa [1]_, a score that expresses the level of agreement between two annotators on a classification problem. It is diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 4b42a76a977dc..c69ddc34b53d8 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -31,7 +31,6 @@ "sklearn.linear_model._omp.orthogonal_mp_gram", "sklearn.manifold._locally_linear.locally_linear_embedding", "sklearn.manifold._t_sne.trustworthiness", - "sklearn.metrics._classification.cohen_kappa_score", "sklearn.metrics._classification.jaccard_score", "sklearn.metrics._plot.det_curve.plot_det_curve", "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", From 227524a576da3f47ff67f849136478d3e50ba362 Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sat, 16 Jul 2022 14:12:13 +0100 Subject: [PATCH 172/251] DOC numpydoc validation for `make_union` (#23909) Co-authored-by: Adrin Jalali Co-authored-by: Guillaume Lemaitre --- sklearn/pipeline.py | 8 +++++--- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/sklearn/pipeline.py b/sklearn/pipeline.py index 74347f250bc83..e276ab0ecd25a 100644 --- a/sklearn/pipeline.py +++ b/sklearn/pipeline.py @@ -1244,8 +1244,7 @@ def _sk_visual_block_(self): def make_union(*transformers, n_jobs=None, verbose=False): - """ - Construct a FeatureUnion from the given transformers. + """Construct a FeatureUnion from the given transformers. This is a shorthand for the FeatureUnion constructor; it does not require, and does not permit, naming the transformers. Instead, they will be given @@ -1254,6 +1253,7 @@ def make_union(*transformers, n_jobs=None, verbose=False): Parameters ---------- *transformers : list of estimators + One or more estimators. n_jobs : int, default=None Number of jobs to run in parallel. @@ -1262,7 +1262,7 @@ def make_union(*transformers, n_jobs=None, verbose=False): for more details. .. versionchanged:: v0.20 - `n_jobs` default changed from 1 to None + `n_jobs` default changed from 1 to None. verbose : bool, default=False If True, the time elapsed while fitting each transformer will be @@ -1271,6 +1271,8 @@ def make_union(*transformers, n_jobs=None, verbose=False): Returns ------- f : FeatureUnion + A :class:`FeatureUnion` object for concatenating the results of multiple + transformer objects. See Also -------- diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index c69ddc34b53d8..adaa97cdd6b10 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -64,7 +64,6 @@ "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", - "sklearn.pipeline.make_union", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", "sklearn.preprocessing._label.label_binarize", From aaffe5a0bbf6eda1d3a0a9acc83fcd3f686f99f4 Mon Sep 17 00:00:00 2001 From: Philipp Jung Date: Sat, 16 Jul 2022 14:23:38 +0100 Subject: [PATCH 173/251] DOC Update `paired_manhattan_distances` and make it pass numpydoc validation (#23900) Co-authored-by: Thomas J. Fan Co-authored-by: Julien Jerphanion --- sklearn/metrics/pairwise.py | 18 +++++++++++++++++- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index d1237b1ba81d9..634c97bb57d7b 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1015,19 +1015,35 @@ def paired_euclidean_distances(X, Y): def paired_manhattan_distances(X, Y): - """Compute the L1 distances between the vectors in X and Y. + """Compute the paired L1 distances between X and Y. + + Distances are calculated between (X[0], Y[0]), (X[1], Y[1]), ..., + (X[n_samples], Y[n_samples]). Read more in the :ref:`User Guide `. Parameters ---------- X : array-like of shape (n_samples, n_features) + An array-like where each row is a sample and each column is a feature. Y : array-like of shape (n_samples, n_features) + An array-like where each row is a sample and each column is a feature. Returns ------- distances : ndarray of shape (n_samples,) + L1 paired distances between the row vectors of `X` + and the row vectors of `Y`. + + Examples + -------- + >>> from sklearn.metrics.pairwise import paired_manhattan_distances + >>> import numpy as np + >>> X = np.array([[1, 1, 0], [0, 1, 0], [0, 0, 1]]) + >>> Y = np.array([[0, 1, 0], [0, 0, 1], [0, 0, 0]]) + >>> paired_manhattan_distances(X, Y) + array([1., 2., 1.]) """ X, Y = check_paired_arrays(X, Y) diff = X - Y diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index adaa97cdd6b10..d6a636d335d28 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -57,7 +57,6 @@ "sklearn.metrics.pairwise.cosine_similarity", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", - "sklearn.metrics.pairwise.paired_manhattan_distances", "sklearn.metrics.pairwise.pairwise_distances_argmin", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", From dd4e1ce1954ccacb34114b546b5aac82f3523674 Mon Sep 17 00:00:00 2001 From: o-holman <109139672+o-holman@users.noreply.github.com> Date: Sat, 16 Jul 2022 16:36:19 +0100 Subject: [PATCH 174/251] DOC Ensures that extract_patches_2d passes numpydoc validation (#23926) Co-authored-by: Olivor Holman --- sklearn/feature_extraction/image.py | 2 +- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/feature_extraction/image.py b/sklearn/feature_extraction/image.py index 031a597591afc..515a7990306b6 100644 --- a/sklearn/feature_extraction/image.py +++ b/sklearn/feature_extraction/image.py @@ -321,7 +321,7 @@ def _extract_patches(arr, patch_shape=8, extraction_step=1): def extract_patches_2d(image, patch_size, *, max_patches=None, random_state=None): - """Reshape a 2D image into a collection of patches + """Reshape a 2D image into a collection of patches. The resulting patches are allocated in a dedicated array. diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index d6a636d335d28..6d646dbd2a565 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -23,7 +23,6 @@ "sklearn.decomposition._dict_learning.dict_learning_online", "sklearn.decomposition._nmf.non_negative_factorization", "sklearn.externals._packaging.version.parse", - "sklearn.feature_extraction.image.extract_patches_2d", "sklearn.feature_extraction.text.strip_accents_unicode", "sklearn.inspection._partial_dependence.partial_dependence", "sklearn.inspection._plot.partial_dependence.plot_partial_dependence", From f4fbd57f0d9b32f3bc01947bd823d487de039a8c Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Sun, 17 Jul 2022 12:57:59 +0100 Subject: [PATCH 175/251] DOC Ensure sklearn.metrics._classification.jaccard_score passes numpydoc validation (#23910) * DOC: Update sklearn.metrics._classification.jaccard_score to pass numpydoc validation. * DOC Incorporate suggested changes to return type Co-authored-by: Guillaume Lemaitre * DOC Incorporate suggested changes to return description. Co-authored-by: Guillaume Lemaitre Co-authored-by: Guillaume Lemaitre --- sklearn/metrics/_classification.py | 10 +++++++--- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/sklearn/metrics/_classification.py b/sklearn/metrics/_classification.py index 265cc20ef7e1e..97f3abe2b884d 100644 --- a/sklearn/metrics/_classification.py +++ b/sklearn/metrics/_classification.py @@ -738,12 +738,16 @@ def jaccard_score( Returns ------- - score : float (if average is not None) or array of floats, shape =\ - [n_unique_labels] + score : float or ndarray of shape (n_unique_labels,), dtype=np.float64 + The Jaccard score. When `average` is not `None`, a single scalar is + returned. See Also -------- - accuracy_score, f1_score, multilabel_confusion_matrix + accuracy_score : Function for calculating the accuracy score. + f1_score : Function for calculating the F1 score. + multilabel_confusion_matrix : Function for computing a confusion matrix\ + for each class or sample. Notes ----- diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 6d646dbd2a565..9c9885e4b3c59 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -30,7 +30,6 @@ "sklearn.linear_model._omp.orthogonal_mp_gram", "sklearn.manifold._locally_linear.locally_linear_embedding", "sklearn.manifold._t_sne.trustworthiness", - "sklearn.metrics._classification.jaccard_score", "sklearn.metrics._plot.det_curve.plot_det_curve", "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", "sklearn.metrics._ranking.coverage_error", From 633c9fa72c9455ddb22ee5a35b71ee6e63845ea9 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 18 Jul 2022 09:30:37 -0500 Subject: [PATCH 176/251] CI Allow documentation building when the fork uses the main branch (#23937) * CI Allow documentation building when the fork uses the main branch * DOC Improve wording --- build_tools/github/trigger_hosting.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/build_tools/github/trigger_hosting.sh b/build_tools/github/trigger_hosting.sh index 7922833f036e7..2a8e28ff164ff 100755 --- a/build_tools/github/trigger_hosting.sh +++ b/build_tools/github/trigger_hosting.sh @@ -12,6 +12,20 @@ then -H "Authorization: token $GITHUB_TOKEN" \ https://api.github.com/repos/$REPO_NAME/commits/$COMMIT_SHA/pulls 2>/dev/null \ | jq '.[0].number') + + if [[ "$PULL_REQUEST_NUMBER" == "null" ]]; then + # The pull request is on the main (default) branch of the fork. The above API + # call is unable to get the PR number associated with the commit: + # https://docs.github.com/en/rest/commits/commits#list-pull-requests-associated-with-a-commit + # We fallback to the search API here. The search API is not used everytime + # because it has a lower rate limit. + PULL_REQUEST_NUMBER=$(curl \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: token $GITHUB_TOKEN" \ + "https://api.github.com/search/issues?q=$COMMIT_SHA+repo:$GITHUB_REPOSITORY" 2>/dev/null \ + | jq '.items[0].number') + fi + BRANCH=pull/$PULL_REQUEST_NUMBER/head else BRANCH=$HEAD_BRANCH From 504f3d84482346e83423ad01bde1d32bf90ea01f Mon Sep 17 00:00:00 2001 From: Valentin Laurent Date: Tue, 19 Jul 2022 12:31:16 +0200 Subject: [PATCH 177/251] DOC Improve doc of Nearest Neighbors metric param (#23806) --- sklearn/neighbors/_binary_tree.pxi | 14 ++-- sklearn/neighbors/_classification.py | 44 ++++++++---- sklearn/neighbors/_graph.py | 92 ++++++++++---------------- sklearn/neighbors/_kde.py | 17 +++-- sklearn/neighbors/_lof.py | 35 ++++------ sklearn/neighbors/_nearest_centroid.py | 15 +++-- sklearn/neighbors/_regression.py | 44 ++++++++---- sklearn/neighbors/_unsupervised.py | 23 ++++--- 8 files changed, 152 insertions(+), 132 deletions(-) diff --git a/sklearn/neighbors/_binary_tree.pxi b/sklearn/neighbors/_binary_tree.pxi index 36781a770906c..ee3adfe3a8027 100644 --- a/sklearn/neighbors/_binary_tree.pxi +++ b/sklearn/neighbors/_binary_tree.pxi @@ -230,12 +230,14 @@ leaf_size : positive int, default=40 satisfy ``leaf_size <= n_points <= 2 * leaf_size``, except in the case that ``n_samples < leaf_size``. -metric : str or DistanceMetric object - The distance metric to use for the tree. Default='minkowski' - with p=2 (that is, a euclidean metric). See the documentation - of the DistanceMetric class for a list of available metrics. - {binary_tree}.valid_metrics gives a list of the metrics which - are valid for {BinaryTree}. +metric : str or DistanceMetric object, default='minkowski' + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. + {binary_tree}.valid_metrics gives a list of the metrics which are valid for + {BinaryTree}. See the documentation of `scipy.spatial.distance + `_ and the + metrics listed in :class:`~sklearn.metrics.pairwise.distance_metrics` for + more information. Additional keywords are passed to the distance metric class. Note: Callable functions in the metric parameter are NOT supported for KDTree diff --git a/sklearn/neighbors/_classification.py b/sklearn/neighbors/_classification.py index bcad8c71aee07..f69ee09ae1983 100644 --- a/sklearn/neighbors/_classification.py +++ b/sklearn/neighbors/_classification.py @@ -65,15 +65,22 @@ class KNeighborsClassifier(KNeighborsMixin, ClassifierMixin, NeighborsBase): (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used. metric : str or callable, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric` and the metrics listed in - `sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS`. Note that the - "cosine" metric uses :func:`~sklearn.metrics.pairwise.cosine_distances`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + If metric is "precomputed", X is assumed to be a distance matrix and - must be square during fit. X may be a :term:`sparse graph`, - in which case only "nonzero" elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less + efficient than passing the metric name as a string. metric_params : dict, default=None Additional keyword arguments for the metric function. @@ -357,13 +364,22 @@ class RadiusNeighborsClassifier(RadiusNeighborsMixin, ClassifierMixin, Neighbors (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used. metric : str or callable, default='minkowski' - Distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + If metric is "precomputed", X is assumed to be a distance matrix and - must be square during fit. X may be a :term:`sparse graph`, - in which case only "nonzero" elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less + efficient than passing the metric name as a string. outlier_label : {manual label, 'most_frequent'}, default=None Label for outlier samples (samples with no neighbors in given radius). diff --git a/sklearn/neighbors/_graph.py b/sklearn/neighbors/_graph.py index 2be70c0638517..310f3667d9fa3 100644 --- a/sklearn/neighbors/_graph.py +++ b/sklearn/neighbors/_graph.py @@ -65,13 +65,13 @@ def kneighbors_graph( between neighbors according to the given metric. metric : str, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. - For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric` and the metrics listed in - `sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS`. Note that the - "cosine" metric uses :func:`~sklearn.metrics.pairwise.cosine_distances`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. p : int, default=2 Power parameter for the Minkowski metric. When p = 1, this is @@ -160,13 +160,13 @@ def radius_neighbors_graph( between neighbors according to the given metric. metric : str, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. - For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric` and the metrics listed in - `sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS`. Note that the - "cosine" metric uses :func:`~sklearn.metrics.pairwise.cosine_distances`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. p : int, default=2 Power parameter for the Minkowski metric. When p = 1, this is @@ -266,31 +266,21 @@ class KNeighborsTransformer( nature of the problem. metric : str or callable, default='minkowski' - Metric to use for distance computation. Any metric from scikit-learn - or scipy.spatial.distance can be used. - - If metric is a callable function, it is called on each - pair of instances (rows) and the resulting value recorded. The callable - should take two arrays as input and return one value indicating the - distance between them. This works for Scipy's metrics, but is less + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less efficient than passing the metric name as a string. Distance matrices are not supported. - Valid values for metric are: - - - from scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', - 'manhattan'] - - - from scipy.spatial.distance: ['braycurtis', 'canberra', 'chebyshev', - 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', - 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', - 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', - 'yule'] - - See the documentation for scipy.spatial.distance for details on these - metrics. - p : int, default=2 Parameter for the Minkowski metric from sklearn.metrics.pairwise.pairwise_distances. When p = 1, this is @@ -493,31 +483,21 @@ class RadiusNeighborsTransformer( nature of the problem. metric : str or callable, default='minkowski' - Metric to use for distance computation. Any metric from scikit-learn - or scipy.spatial.distance can be used. - - If metric is a callable function, it is called on each - pair of instances (rows) and the resulting value recorded. The callable - should take two arrays as input and return one value indicating the - distance between them. This works for Scipy's metrics, but is less + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less efficient than passing the metric name as a string. Distance matrices are not supported. - Valid values for metric are: - - - from scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', - 'manhattan'] - - - from scipy.spatial.distance: ['braycurtis', 'canberra', 'chebyshev', - 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', - 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', - 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', - 'yule'] - - See the documentation for scipy.spatial.distance for details on these - metrics. - p : int, default=2 Parameter for the Minkowski metric from sklearn.metrics.pairwise.pairwise_distances. When p = 1, this is diff --git a/sklearn/neighbors/_kde.py b/sklearn/neighbors/_kde.py index a785fcd86939f..d4dd498ce351d 100644 --- a/sklearn/neighbors/_kde.py +++ b/sklearn/neighbors/_kde.py @@ -47,12 +47,17 @@ class KernelDensity(BaseEstimator): The kernel to use. metric : str, default='euclidean' - The distance metric to use. Note that not all metrics are - valid with all algorithms. Refer to the documentation of - :class:`BallTree` and :class:`KDTree` for a description of - available algorithms. Note that the normalization of the density - output is correct only for the Euclidean distance metric. Default - is 'euclidean'. + Metric to use for distance computation. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + + Not all metrics are valid with all algorithms: refer to the + documentation of :class:`BallTree` and :class:`KDTree`. Note that the + normalization of the density output is correct only for the Euclidean + distance metric. atol : float, default=0 The desired absolute tolerance of the result. A larger tolerance will diff --git a/sklearn/neighbors/_lof.py b/sklearn/neighbors/_lof.py index 025a1c6d80768..b1d2e2a50ce27 100644 --- a/sklearn/neighbors/_lof.py +++ b/sklearn/neighbors/_lof.py @@ -58,34 +58,23 @@ class LocalOutlierFactor(KNeighborsMixin, OutlierMixin, NeighborsBase): nature of the problem. metric : str or callable, default='minkowski' - The metric is used for distance computation. Any metric from scikit-learn - or scipy.spatial.distance can be used. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. If metric is "precomputed", X is assumed to be a distance matrix and - must be square. X may be a sparse matrix, in which case only "nonzero" - elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. - If metric is a callable function, it is called on each - pair of instances (rows) and the resulting value recorded. The callable - should take two arrays as input and return one value indicating the - distance between them. This works for Scipy's metrics, but is less + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less efficient than passing the metric name as a string. - Valid values for metric are: - - - from scikit-learn: ['cityblock', 'cosine', 'euclidean', 'l1', 'l2', - 'manhattan'] - - - from scipy.spatial.distance: ['braycurtis', 'canberra', 'chebyshev', - 'correlation', 'dice', 'hamming', 'jaccard', 'kulsinski', - 'mahalanobis', 'minkowski', 'rogerstanimoto', 'russellrao', - 'seuclidean', 'sokalmichener', 'sokalsneath', 'sqeuclidean', - 'yule'] - - See the documentation for scipy.spatial.distance for details on these - metrics: - https://docs.scipy.org/doc/scipy/reference/spatial.distance.html. - p : int, default=2 Parameter for the Minkowski metric from :func:`sklearn.metrics.pairwise.pairwise_distances`. When p = 1, this diff --git a/sklearn/neighbors/_nearest_centroid.py b/sklearn/neighbors/_nearest_centroid.py index b52d9407333a6..9403623ea8de9 100644 --- a/sklearn/neighbors/_nearest_centroid.py +++ b/sklearn/neighbors/_nearest_centroid.py @@ -30,11 +30,16 @@ class NearestCentroid(ClassifierMixin, BaseEstimator): Parameters ---------- metric : str or callable, default="euclidean" - The metric to use when calculating distance between instances in a - feature array. If metric is a string or callable, it must be one of - the options allowed by - :func:`~sklearn.metrics.pairwise_distances` for its metric - parameter. The centroids for the samples corresponding to each class is + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. Note that "wminkowski", "seuclidean" and "mahalanobis" are not + supported. + + The centroids for the samples corresponding to each class is the point from which the sum of the distances (according to the metric) of all samples that belong to that particular class are minimized. If the `"manhattan"` metric is provided, this centroid is the median diff --git a/sklearn/neighbors/_regression.py b/sklearn/neighbors/_regression.py index 4c995e5062277..aef20b9baa243 100644 --- a/sklearn/neighbors/_regression.py +++ b/sklearn/neighbors/_regression.py @@ -72,15 +72,22 @@ class KNeighborsRegressor(KNeighborsMixin, RegressorMixin, NeighborsBase): (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used. metric : str or callable, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric` and the metrics listed in - `sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS`. Note that the - "cosine" metric uses :func:`~sklearn.metrics.pairwise.cosine_distances`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + If metric is "precomputed", X is assumed to be a distance matrix and - must be square during fit. X may be a :term:`sparse graph`, - in which case only "nonzero" elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less + efficient than passing the metric name as a string. metric_params : dict, default=None Additional keyword arguments for the metric function. @@ -300,13 +307,22 @@ class RadiusNeighborsRegressor(RadiusNeighborsMixin, RegressorMixin, NeighborsBa (l2) for p = 2. For arbitrary p, minkowski_distance (l_p) is used. metric : str or callable, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. See the documentation of :class:`DistanceMetric` for a - list of available metrics. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + If metric is "precomputed", X is assumed to be a distance matrix and - must be square during fit. X may be a :term:`sparse graph`, - in which case only "nonzero" elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less + efficient than passing the metric name as a string. metric_params : dict, default=None Additional keyword arguments for the metric function. diff --git a/sklearn/neighbors/_unsupervised.py b/sklearn/neighbors/_unsupervised.py index 6399363112378..162eff0ac2a63 100644 --- a/sklearn/neighbors/_unsupervised.py +++ b/sklearn/neighbors/_unsupervised.py @@ -39,15 +39,22 @@ class NearestNeighbors(KNeighborsMixin, RadiusNeighborsMixin, NeighborsBase): nature of the problem. metric : str or callable, default='minkowski' - The distance metric to use for the tree. The default metric is - minkowski, and with p=2 is equivalent to the standard Euclidean - metric. For a list of available metrics, see the documentation of - :class:`~sklearn.metrics.DistanceMetric` and the metrics listed in - `sklearn.metrics.pairwise.PAIRWISE_DISTANCE_FUNCTIONS`. Note that the - "cosine" metric uses :func:`~sklearn.metrics.pairwise.cosine_distances`. + Metric to use for distance computation. Default is "minkowski", which + results in the standard Euclidean distance when p = 2. See the + documentation of `scipy.spatial.distance + `_ and + the metrics listed in + :class:`~sklearn.metrics.pairwise.distance_metrics` for valid metric + values. + If metric is "precomputed", X is assumed to be a distance matrix and - must be square during fit. X may be a :term:`sparse graph`, - in which case only "nonzero" elements may be considered neighbors. + must be square during fit. X may be a :term:`sparse graph`, in which + case only "nonzero" elements may be considered neighbors. + + If metric is a callable function, it takes two arrays representing 1D + vectors as inputs and must return one value indicating the distance + between those vectors. This works for Scipy's metrics, but is less + efficient than passing the metric name as a string. p : int, default=2 Parameter for the Minkowski metric from From 19acbd450c11b267e3050a90bf01d21a07dd94cf Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 16:56:10 +0530 Subject: [PATCH 178/251] DOC Ensure homogeneity_completeness_v_measure passes numpydoc validation (#23942) --- sklearn/metrics/cluster/_supervised.py | 16 ++++++++-------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/sklearn/metrics/cluster/_supervised.py b/sklearn/metrics/cluster/_supervised.py index a6a66884b70b2..c5002921dc407 100644 --- a/sklearn/metrics/cluster/_supervised.py +++ b/sklearn/metrics/cluster/_supervised.py @@ -429,10 +429,10 @@ def homogeneity_completeness_v_measure(labels_true, labels_pred, *, beta=1.0): Parameters ---------- labels_true : int array, shape = [n_samples] - ground truth class labels to be used as a reference + Ground truth class labels to be used as a reference. labels_pred : array-like of shape (n_samples,) - cluster labels to evaluate + Gluster labels to evaluate. beta : float, default=1.0 Ratio of weight attributed to ``homogeneity`` vs ``completeness``. @@ -443,19 +443,19 @@ def homogeneity_completeness_v_measure(labels_true, labels_pred, *, beta=1.0): Returns ------- homogeneity : float - score between 0.0 and 1.0. 1.0 stands for perfectly homogeneous labeling + Score between 0.0 and 1.0. 1.0 stands for perfectly homogeneous labeling. completeness : float - score between 0.0 and 1.0. 1.0 stands for perfectly complete labeling + Score between 0.0 and 1.0. 1.0 stands for perfectly complete labeling. v_measure : float - harmonic mean of the first two + Harmonic mean of the first two. See Also -------- - homogeneity_score - completeness_score - v_measure_score + homogeneity_score : Homogeneity metric of cluster labeling. + completeness_score : Completeness metric of cluster labeling. + v_measure_score : V-Measure (NMI with arithmetic mean option). """ labels_true, labels_pred = check_clusterings(labels_true, labels_pred) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 9c9885e4b3c59..52d2bd9f3c221 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -42,7 +42,6 @@ "sklearn.metrics.cluster._supervised.adjusted_rand_score", "sklearn.metrics.cluster._supervised.entropy", "sklearn.metrics.cluster._supervised.fowlkes_mallows_score", - "sklearn.metrics.cluster._supervised.homogeneity_completeness_v_measure", "sklearn.metrics.cluster._supervised.mutual_info_score", "sklearn.metrics.cluster._supervised.normalized_mutual_info_score", "sklearn.metrics.cluster._supervised.pair_confusion_matrix", From c5ba99a36aa971c8948ad271ac84a98b7ce7c9c3 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:03:54 +0530 Subject: [PATCH 179/251] DOC Ensure `cosine_distances` passes numpydoc validation (#23946) --- sklearn/metrics/pairwise.py | 3 ++- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 634c97bb57d7b..e3022225068f5 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -972,10 +972,11 @@ def cosine_distances(X, Y=None): Returns ------- distance matrix : ndarray of shape (n_samples_X, n_samples_Y) + Returns the cosine distance between samples in X and Y. See Also -------- - cosine_similarity + cosine_similarity : Compute cosine similarity between samples in X and Y. scipy.spatial.distance.cosine : Dense matrices only. """ # 1.0 - cosine_similarity(X, Y) without copy diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 52d2bd9f3c221..39b59a258075e 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -50,7 +50,6 @@ "sklearn.metrics.pairwise.additive_chi2_kernel", "sklearn.metrics.pairwise.check_paired_arrays", "sklearn.metrics.pairwise.chi2_kernel", - "sklearn.metrics.pairwise.cosine_distances", "sklearn.metrics.pairwise.cosine_similarity", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", From 1869229ee9172cb2ed14ef4972a5685176efde79 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 17:21:23 +0530 Subject: [PATCH 180/251] DOC Ensure `check_paired_arrays` passes numpydoc validation (#23944) --- sklearn/metrics/pairwise.py | 1 - sklearn/tests/test_docstrings.py | 1 - 2 files changed, 2 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index e3022225068f5..dde749cb82cc6 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -210,7 +210,6 @@ def check_paired_arrays(X, Y): safe_Y : {array-like, sparse matrix} of shape (n_samples_Y, n_features) An array equal to Y if Y was not None, guaranteed to be a numpy array. If Y was None, safe_Y will be a pointer to X. - """ X, Y = check_pairwise_arrays(X, Y) if X.shape != Y.shape: diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 39b59a258075e..af7f2c5089f73 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -48,7 +48,6 @@ "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.additive_chi2_kernel", - "sklearn.metrics.pairwise.check_paired_arrays", "sklearn.metrics.pairwise.chi2_kernel", "sklearn.metrics.pairwise.cosine_similarity", "sklearn.metrics.pairwise.distance_metrics", From 22e2db02ae13128430a4fefbab4fb85e1cb1855f Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 18:16:04 +0530 Subject: [PATCH 181/251] DOC Ensure `cosine_similarity` passes numpydoc validation (#23947) --- sklearn/metrics/pairwise.py | 1 + sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index dde749cb82cc6..15754930d6e24 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1360,6 +1360,7 @@ def cosine_similarity(X, Y=None, dense_output=True): Returns ------- kernel matrix : ndarray of shape (n_samples_X, n_samples_Y) + Returns the cosine similarity between samples in X and Y. """ # to avoid recursive import diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index af7f2c5089f73..b396b6893ac42 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -49,7 +49,6 @@ "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.additive_chi2_kernel", "sklearn.metrics.pairwise.chi2_kernel", - "sklearn.metrics.pairwise.cosine_similarity", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", "sklearn.metrics.pairwise.pairwise_distances_argmin", From 3f6b0a75fd7ba16c1c2835322c2cf52e4d24a91c Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 19:01:19 +0530 Subject: [PATCH 182/251] DOC Ensure `pairwise_distances_argmin` passes numpydoc validation (#23951) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 5 +++-- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 15754930d6e24..fa26530f04770 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -765,8 +765,9 @@ def pairwise_distances_argmin(X, Y, *, axis=1, metric="euclidean", metric_kwargs See Also -------- - sklearn.metrics.pairwise_distances - sklearn.metrics.pairwise_distances_argmin_min + pairwise_distances : Distances between every pair of samples of X and Y. + pairwise_distances_argmin_min : Same as `pairwise_distances_argmin` but also + returns the distances. """ if metric_kwargs is None: metric_kwargs = {} diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index b396b6893ac42..7a94be4a0cb01 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -51,7 +51,6 @@ "sklearn.metrics.pairwise.chi2_kernel", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", - "sklearn.metrics.pairwise.pairwise_distances_argmin", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.metrics.pairwise.polynomial_kernel", From aaf99be077d58fd07c542e895a14fb1c7cb00ea3 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 20:01:59 +0530 Subject: [PATCH 183/251] DOC Ensure `chi2_kernel` passes numpydoc validation (#23945) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 7 +++++-- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index fa26530f04770..94e9450b99085 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1440,7 +1440,7 @@ def additive_chi2_kernel(X, Y=None): def chi2_kernel(X, Y=None, gamma=1.0): - """Computes the exponential chi-squared kernel X and Y. + """Compute the exponential chi-squared kernel between X and Y. The chi-squared kernel is computed between each pair of rows in X and Y. X and Y have to be non-negative. This kernel is most commonly applied to @@ -1457,15 +1457,18 @@ def chi2_kernel(X, Y=None, gamma=1.0): Parameters ---------- X : array-like of shape (n_samples_X, n_features) + A feature array. Y : ndarray of shape (n_samples_Y, n_features), default=None + An optional second feature array. If `None`, uses `Y=X`. - gamma : float, default=1. + gamma : float, default=1 Scaling parameter of the chi2 kernel. Returns ------- kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y) + The kernel matrix. See Also -------- diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 7a94be4a0cb01..81d15f7ba2929 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -48,7 +48,6 @@ "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.additive_chi2_kernel", - "sklearn.metrics.pairwise.chi2_kernel", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", From a56563a93025ba3ffb7979479df9a82705614aea Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:11:41 +0530 Subject: [PATCH 184/251] DOC Ensure `additive_chi2_kernel` passes numpydoc validation (#23943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 18 +++++++++--------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 94e9450b99085..e0726ff575eca 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1379,8 +1379,7 @@ def cosine_similarity(X, Y=None, dense_output=True): def additive_chi2_kernel(X, Y=None): - """Computes the additive chi-squared kernel between observations in X and - Y. + """Compute the additive chi-squared kernel between observations in X and Y. The chi-squared kernel is computed between each pair of rows in X and Y. X and Y have to be non-negative. This kernel is most commonly applied to @@ -1394,22 +1393,18 @@ def additive_chi2_kernel(X, Y=None): Read more in the :ref:`User Guide `. - Notes - ----- - As the negative of a distance, this kernel is only conditionally positive - definite. - - Parameters ---------- X : array-like of shape (n_samples_X, n_features) + A feature array. Y : ndarray of shape (n_samples_Y, n_features), default=None - If `None`, uses `Y=X`. + An optional second feature array. If `None`, uses `Y=X`. Returns ------- kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y) + The kernel matrix. See Also -------- @@ -1418,6 +1413,11 @@ def additive_chi2_kernel(X, Y=None): sklearn.kernel_approximation.AdditiveChi2Sampler : A Fourier approximation to this kernel. + Notes + ----- + As the negative of a distance, this kernel is only conditionally positive + definite. + References ---------- * Zhang, J. and Marszalek, M. and Lazebnik, S. and Schmid, C. diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 81d15f7ba2929..506443e341a16 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -47,7 +47,6 @@ "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", - "sklearn.metrics.pairwise.additive_chi2_kernel", "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", From 2ba4d4399924504426c9329f932908f067fba11a Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 21:15:15 +0530 Subject: [PATCH 185/251] DOC Ensure `distance_metrics` passes numpydoc validation (#23949) --- sklearn/metrics/pairwise.py | 5 +++++ sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index e0726ff575eca..a3e569ead7960 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1528,6 +1528,11 @@ def distance_metrics(): =============== ======================================== Read more in the :ref:`User Guide `. + + Returns + ------- + distance_metrics : dict + Returns valid metrics for pairwise_distances. """ return PAIRWISE_DISTANCE_FUNCTIONS diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 506443e341a16..0b78256aa8dcb 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -47,7 +47,6 @@ "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", - "sklearn.metrics.pairwise.distance_metrics", "sklearn.metrics.pairwise.kernel_metrics", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", From 1660f42e2b142e9ac3de63a8c6dfdb7276c19498 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Tue, 19 Jul 2022 22:37:06 +0530 Subject: [PATCH 186/251] DOC Ensure `kernel_metrics` passes numpydoc validation (#23950) --- sklearn/metrics/pairwise.py | 5 +++++ sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index a3e569ead7960..49a26bb1d485a 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -2065,6 +2065,11 @@ def kernel_metrics(): =============== ======================================== Read more in the :ref:`User Guide `. + + Returns + ------- + kernal_metrics : dict + Returns valid metrics for pairwise_kernels. """ return PAIRWISE_KERNEL_FUNCTIONS diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 0b78256aa8dcb..8597f873e0fa9 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -47,7 +47,6 @@ "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", - "sklearn.metrics.pairwise.kernel_metrics", "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.metrics.pairwise.polynomial_kernel", From a2fbf105477a24e929af685d07b8a45180a346c0 Mon Sep 17 00:00:00 2001 From: Hao Chun Chang Date: Wed, 20 Jul 2022 02:11:47 +0800 Subject: [PATCH 187/251] FIX Add ElasticNet* and LassoCV checks in feature_selection._from_model threshold (#23636) Co-authored-by: Thomas J. Fan --- doc/whats_new/v1.2.rst | 22 +++++++++++++++++++ sklearn/feature_selection/_from_model.py | 10 ++++++--- .../tests/test_from_model.py | 22 ++++++++++++++++--- 3 files changed, 48 insertions(+), 6 deletions(-) diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 025460769e291..71619df7e4ba8 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -63,6 +63,28 @@ Changelog - |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` by avoiding data copies. :pr:`23252` by :user:`Zhehao Liu `. +:mod:`sklearn.decomposition` +............................ + +- |Enhancement| :class:`decomposition.FastICA` now allows the user to select + how whitening is performed through the new `whiten_solver` parameter, which + supports `svd` and `eigh`. `whiten_solver` defaults to `svd` although `eigh` + may be faster and more memory efficient in cases where + `num_features > num_samples`. An additional `sign_flip` parameter is added. + When `sign_flip=True`, then the output of both solvers will be reconciled + during `fit` so that their outputs match. This may change the output of the + default solver, and hence may not be backwards compatible. + :pr:`11860` by :user:`Pierre Ablin `, + :pr:`22527` by :user:`Meekail Zain ` and `Thomas Fan`_. + +:mod:`sklearn.feature_selection` +................................ +- |Fix| :class:`feature_selection.SelectFromModel` defaults to selection + threshold 1e-5 when the estimator is either :class:`linear_model.ElasticNet` + or :class:`linear_model.ElasticNetCV` with `l1_ratio` equals 1 or + :class:`linear_model.LassoCV`. :pr:`23636` by :user:`Hao Chun Chang + ` + :mod:`sklearn.impute` ..................... diff --git a/sklearn/feature_selection/_from_model.py b/sklearn/feature_selection/_from_model.py index 0c41c66fbef1f..f9e5f29395908 100644 --- a/sklearn/feature_selection/_from_model.py +++ b/sklearn/feature_selection/_from_model.py @@ -22,9 +22,13 @@ def _calculate_threshold(estimator, importances, threshold): if threshold is None: # determine default from estimator est_name = estimator.__class__.__name__ - if ( - hasattr(estimator, "penalty") and estimator.penalty == "l1" - ) or "Lasso" in est_name: + is_l1_penalized = hasattr(estimator, "penalty") and estimator.penalty == "l1" + is_lasso = "Lasso" in est_name + is_elasticnet_l1_penalized = "ElasticNet" in est_name and ( + (hasattr(estimator, "l1_ratio_") and np.isclose(estimator.l1_ratio_, 1.0)) + or (hasattr(estimator, "l1_ratio") and np.isclose(estimator.l1_ratio, 1.0)) + ) + if is_l1_penalized or is_lasso or is_elasticnet_l1_penalized: # the natural default threshold is 0 when l1 penalty was used threshold = 1e-5 else: diff --git a/sklearn/feature_selection/tests/test_from_model.py b/sklearn/feature_selection/tests/test_from_model.py index de45d9e0ab6a4..d193df981e4a6 100644 --- a/sklearn/feature_selection/tests/test_from_model.py +++ b/sklearn/feature_selection/tests/test_from_model.py @@ -14,7 +14,14 @@ from sklearn.cross_decomposition import CCA, PLSCanonical, PLSRegression from sklearn.datasets import make_friedman1 from sklearn.exceptions import NotFittedError -from sklearn.linear_model import LogisticRegression, SGDClassifier, Lasso +from sklearn.linear_model import ( + LogisticRegression, + SGDClassifier, + Lasso, + LassoCV, + ElasticNet, + ElasticNetCV, +) from sklearn.svm import LinearSVC from sklearn.feature_selection import SelectFromModel from sklearn.ensemble import RandomForestClassifier, HistGradientBoostingClassifier @@ -318,7 +325,16 @@ def test_sample_weight(): assert np.all(weighted_mask == reweighted_mask) -def test_coef_default_threshold(): +@pytest.mark.parametrize( + "estimator", + [ + Lasso(alpha=0.1, random_state=42), + LassoCV(random_state=42), + ElasticNet(l1_ratio=1, random_state=42), + ElasticNetCV(l1_ratio=[1], random_state=42), + ], +) +def test_coef_default_threshold(estimator): X, y = datasets.make_classification( n_samples=100, n_features=10, @@ -330,7 +346,7 @@ def test_coef_default_threshold(): ) # For the Lasso and related models, the threshold defaults to 1e-5 - transformer = SelectFromModel(estimator=Lasso(alpha=0.1, random_state=42)) + transformer = SelectFromModel(estimator=estimator) transformer.fit(X, y) X_new = transformer.transform(X) mask = np.abs(transformer.estimator_.coef_) > 1e-5 From ac7b054e607189ed3c34f47f66d536b814bfaf28 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Wed, 20 Jul 2022 02:58:48 +0530 Subject: [PATCH 188/251] DOC Ensure `pairwise_distances_argmin_min` passes numpydoc validation (#23952) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> Co-authored-by: Thomas J. Fan --- sklearn/metrics/pairwise.py | 9 +++++---- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 49a26bb1d485a..3483afecc577b 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -652,13 +652,14 @@ def pairwise_distances_argmin_min( Y[argmin[i], :] is the row in Y that is closest to X[i, :]. distances : ndarray - distances[i] is the distance between the i-th row in X and the - argmin[i]-th row in Y. + The array of minimum distances. `distances[i]` is the distance between + the i-th row in X and the argmin[i]-th row in Y. See Also -------- - sklearn.metrics.pairwise_distances - sklearn.metrics.pairwise_distances_argmin + pairwise_distances : Distances between every pair of samples of X and Y. + pairwise_distances_argmin : Same as `pairwise_distances_argmin_min` but only + returns the argmins. """ X, Y = check_pairwise_arrays(X, Y) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 8597f873e0fa9..469e1f396bad8 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -47,7 +47,6 @@ "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", - "sklearn.metrics.pairwise.pairwise_distances_argmin_min", "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.metrics.pairwise.rbf_kernel", From 9324c526dee8ac79f8bf703db6b303134745a7f4 Mon Sep 17 00:00:00 2001 From: "Christine P. Chai" Date: Wed, 20 Jul 2022 01:59:31 -0700 Subject: [PATCH 189/251] DOC Added linestyle into plot_lda example (#23869) Co-authored-by: Thomas J. Fan Co-authored-by: Guillaume Lemaitre --- examples/classification/plot_lda.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/classification/plot_lda.py b/examples/classification/plot_lda.py index 47487fc1f2caf..4213fc614a31a 100644 --- a/examples/classification/plot_lda.py +++ b/examples/classification/plot_lda.py @@ -71,6 +71,7 @@ def generate_data(n_samples, n_features): linewidth=2, label="Linear Discriminant Analysis with Ledoit Wolf", color="navy", + linestyle="dashed", ) plt.plot( features_samples_ratio, @@ -78,6 +79,7 @@ def generate_data(n_samples, n_features): linewidth=2, label="Linear Discriminant Analysis", color="gold", + linestyle="solid", ) plt.plot( features_samples_ratio, @@ -85,6 +87,7 @@ def generate_data(n_samples, n_features): linewidth=2, label="Linear Discriminant Analysis with OAS", color="red", + linestyle="dotted", ) plt.xlabel("n_features / n_samples") From eeaadc9d9bfba48b78a8752307314133ad428a8b Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Wed, 20 Jul 2022 10:48:57 -0400 Subject: [PATCH 190/251] TST Set the random_state in test_linearsvc_parameters (#23960) --- sklearn/svm/tests/test_svm.py | 45 +++++++++++++++-------------------- 1 file changed, 19 insertions(+), 26 deletions(-) diff --git a/sklearn/svm/tests/test_svm.py b/sklearn/svm/tests/test_svm.py index af5f7e8c69f59..ac3defca66d75 100644 --- a/sklearn/svm/tests/test_svm.py +++ b/sklearn/svm/tests/test_svm.py @@ -828,36 +828,29 @@ def test_sparse_fit_support_vectors_empty(): assert not model.dual_coef_.data.size -def test_linearsvc_parameters(): +@pytest.mark.parametrize("loss", ["hinge", "squared_hinge"]) +@pytest.mark.parametrize("penalty", ["l1", "l2"]) +@pytest.mark.parametrize("dual", [True, False]) +def test_linearsvc_parameters(loss, penalty, dual): # Test possible parameter combinations in LinearSVC # Generate list of possible parameter combinations - losses = ["hinge", "squared_hinge", "logistic_regression", "foo"] - penalties, duals = ["l1", "l2", "bar"], [True, False] - - X, y = make_classification(n_samples=5, n_features=5) - - for loss, penalty, dual in itertools.product(losses, penalties, duals): - clf = svm.LinearSVC(penalty=penalty, loss=loss, dual=dual) - if ( - (loss, penalty) == ("hinge", "l1") - or (loss, penalty, dual) == ("hinge", "l2", False) - or (penalty, dual) == ("l1", True) - or loss == "foo" - or penalty == "bar" - ): + X, y = make_classification(n_samples=5, n_features=5, random_state=0) - with pytest.raises( - ValueError, - match="Unsupported set of arguments.*penalty='%s.*loss='%s.*dual=%s" - % (penalty, loss, dual), - ): - clf.fit(X, y) - else: - clf.fit(X, y) + clf = svm.LinearSVC(penalty=penalty, loss=loss, dual=dual, random_state=0) + if ( + (loss, penalty) == ("hinge", "l1") + or (loss, penalty, dual) == ("hinge", "l2", False) + or (penalty, dual) == ("l1", True) + ): - # Incorrect loss value - test if explicit error message is raised - with pytest.raises(ValueError, match=".*loss='l3' is not supported.*"): - svm.LinearSVC(loss="l3").fit(X, y) + with pytest.raises( + ValueError, + match="Unsupported set of arguments.*penalty='%s.*loss='%s.*dual=%s" + % (penalty, loss, dual), + ): + clf.fit(X, y) + else: + clf.fit(X, y) def test_linear_svx_uppercase_loss_penality_raises_error(): From 1fa5854ec21fdc38d05fa441d7b7933c1c6de883 Mon Sep 17 00:00:00 2001 From: Olivier Grisel Date: Wed, 20 Jul 2022 22:33:44 +0200 Subject: [PATCH 191/251] DOC improve examples/model_selection/plot_grid_search_digits.py (#23956) --- .../plot_grid_search_digits.py | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/examples/model_selection/plot_grid_search_digits.py b/examples/model_selection/plot_grid_search_digits.py index 7c812f22db743..ec4360692aaf3 100644 --- a/examples/model_selection/plot_grid_search_digits.py +++ b/examples/model_selection/plot_grid_search_digits.py @@ -85,6 +85,7 @@ def print_dataframe(filtered_cv_results): f" recall: {mean_recall:0.3f} (±{std_recall:0.03f})," f" for {params}" ) + print() def refit_strategy(cv_results): @@ -109,7 +110,7 @@ def refit_strategy(cv_results): precision_threshold = 0.98 cv_results_ = pd.DataFrame(cv_results) - print(f"\nModels with a precision higher than {precision_threshold}:") + print("All grid-search results:") print_dataframe(cv_results_) # Filter-out all results below the threshold @@ -164,9 +165,12 @@ def refit_strategy(cv_results): # %% -# Once we defined our strategy to select the best model, we define the values of -# the hyper-parameters and create the -# grid-search instance. Subsequently, we can check the best parameters found. +# +# Tuning hyper-parameters +# ----------------------- +# +# Once we defined our strategy to select the best model, we define the values +# of the hyper-parameters and create the grid-search instance: from sklearn.model_selection import GridSearchCV from sklearn.svm import SVC @@ -178,23 +182,25 @@ def refit_strategy(cv_results): grid_search = GridSearchCV( SVC(), tuned_parameters, scoring=scores, refit=refit_strategy ) +grid_search.fit(X_train, y_train) # %% -# Tuning hyper-parameters -# ----------------------- - -grid_search.fit(X_train, y_train) -print(f"\nThe best set of parameters found are:\n{grid_search.best_params_}") +# +# The parameters selected by the grid-search with our custom strategy are: +grid_search.best_params_ # %% -# Finally, we evaluate the fine-tuned model on the left-out evaluation set. +# +# Finally, we evaluate the fine-tuned model on the left-out evaluation set: the +# `grid_search` object **has automatically been refit** on the full training +# set with the parameters selected by our custom refit strategy. +# +# We can use the classification report to compute standard classification +# metrics on the left-out set: from sklearn.metrics import classification_report y_pred = grid_search.predict(X_test) -print( - "\nOur selected model has the following performance on the " - f"testing set:\n\n {classification_report(y_test, y_pred)}" -) +print(classification_report(y_test, y_pred)) # %% # .. note:: From 3dcc4e924c3b3e7199bfab43fc015c38dd2fad0c Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Thu, 21 Jul 2022 15:06:03 +0530 Subject: [PATCH 192/251] DOC Ensure `rbf_kernel` passes numpydoc validation (#23954) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 7 ++++--- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index 3483afecc577b..efe0e33e21cf2 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1260,8 +1260,7 @@ def sigmoid_kernel(X, Y=None, gamma=None, coef0=1): def rbf_kernel(X, Y=None, gamma=None): - """ - Compute the rbf (gaussian) kernel between X and Y:: + """Compute the rbf (gaussian) kernel between X and Y. K(x, y) = exp(-gamma ||x-y||^2) @@ -1272,9 +1271,10 @@ def rbf_kernel(X, Y=None, gamma=None): Parameters ---------- X : ndarray of shape (n_samples_X, n_features) + A feature array. Y : ndarray of shape (n_samples_Y, n_features), default=None - If `None`, uses `Y=X`. + An optional second feature array. If `None`, uses `Y=X`. gamma : float, default=None If None, defaults to 1.0 / n_features. @@ -1282,6 +1282,7 @@ def rbf_kernel(X, Y=None, gamma=None): Returns ------- kernel_matrix : ndarray of shape (n_samples_X, n_samples_Y) + The RBF kernel. """ X, Y = check_pairwise_arrays(X, Y) if gamma is None: diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 469e1f396bad8..c23e1b068640e 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -49,7 +49,6 @@ "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.metrics.pairwise.polynomial_kernel", - "sklearn.metrics.pairwise.rbf_kernel", "sklearn.metrics.pairwise.sigmoid_kernel", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", From 121170cbea2e0e2f95f9cdaee1619b2377f273e3 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Thu, 21 Jul 2022 15:47:54 +0530 Subject: [PATCH 193/251] DOC Ensure `sigmoid_kernel` passes numpydoc validation (#23955) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> Co-authored-by: Thomas J. Fan Co-authored-by: Meekail Zain <34613774+Micky774@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 10 ++++++---- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index efe0e33e21cf2..e77afa2e36404 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1225,8 +1225,7 @@ def polynomial_kernel(X, Y=None, degree=3, gamma=None, coef0=1): def sigmoid_kernel(X, Y=None, gamma=None, coef0=1): - """ - Compute the sigmoid kernel between X and Y:: + """Compute the sigmoid kernel between X and Y. K(X, Y) = tanh(gamma + coef0) @@ -1235,18 +1234,21 @@ def sigmoid_kernel(X, Y=None, gamma=None, coef0=1): Parameters ---------- X : ndarray of shape (n_samples_X, n_features) + A feature array. Y : ndarray of shape (n_samples_Y, n_features), default=None - If `None`, uses `Y=X`. + An optional second feature array. If `None`, uses `Y=X`. gamma : float, default=None - If None, defaults to 1.0 / n_features. + Coefficient of the vector inner product. If None, defaults to 1.0 / n_features. coef0 : float, default=1 + Constant offset added to scaled inner product. Returns ------- Gram matrix : ndarray of shape (n_samples_X, n_samples_Y) + Sigmoid kernel between two arrays. """ X, Y = check_pairwise_arrays(X, Y) if gamma is None: diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index c23e1b068640e..a700294a670f6 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -49,7 +49,6 @@ "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.metrics.pairwise.polynomial_kernel", - "sklearn.metrics.pairwise.sigmoid_kernel", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", "sklearn.preprocessing._label.label_binarize", From 63e1377f883c8824998ebae380d5b08cd32f5d72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=20Dupr=C3=A9=20la=20Tour?= Date: Thu, 21 Jul 2022 03:19:12 -0700 Subject: [PATCH 194/251] MNT replace unconventional characters (#23966) --- doc/developers/bug_triaging.rst | 2 +- doc/developers/contributing.rst | 2 +- doc/glossary.rst | 2 +- doc/governance.rst | 8 ++++---- doc/related_projects.rst | 2 +- doc/testimonials/testimonials.rst | 20 +++++++++---------- doc/whats_new/older_versions.rst | 2 +- examples/compose/plot_digits_pipe.py | 2 +- .../decomposition/plot_faces_decomposition.py | 2 +- examples/text/plot_document_clustering.py | 2 +- setup.cfg | 2 +- sklearn/datasets/descr/twenty_newsgroups.rst | 2 +- sklearn/decomposition/_lda.py | 2 +- sklearn/decomposition/_pca.py | 2 +- sklearn/decomposition/_truncated_svd.py | 2 +- 15 files changed, 27 insertions(+), 27 deletions(-) diff --git a/doc/developers/bug_triaging.rst b/doc/developers/bug_triaging.rst index fc84532efeac8..80a0a74c1f3e5 100644 --- a/doc/developers/bug_triaging.rst +++ b/doc/developers/bug_triaging.rst @@ -101,7 +101,7 @@ The following workflow [1]_ is a good way to approach issue triaging: #. Thank the reporter for opening an issue - The issue tracker is many people’s first interaction with the + The issue tracker is many people's first interaction with the scikit-learn project itself, beyond just using the library. As such, we want it to be a welcoming, pleasant experience. diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index 2076b064b28e2..55ff67436a462 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -1303,7 +1303,7 @@ contributor to keep involved in the project. [1]_ - Every PR, good or bad, is an act of generosity. Opening with a positive comment will help the author feel rewarded, and your subsequent remarks may be heard more clearly. You may feel good also. -- Begin if possible with the large issues, so the author knows they’ve been +- Begin if possible with the large issues, so the author knows they've been understood. Resist the temptation to immediately go line by line, or to open with small pervasive issues. - Do not let perfect be the enemy of the good. If you find yourself making diff --git a/doc/glossary.rst b/doc/glossary.rst index 9d2bdbb4c1dc5..32d228c67d562 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -694,7 +694,7 @@ General Concepts decision-making process outlined in :ref:`governance`. For all votes, a proposal must have been made public and discussed before the vote. Such a proposal must be a consolidated document, in the form of a - ‘Scikit-Learn Enhancement Proposal’ (SLEP), rather than a long discussion on an + "Scikit-Learn Enhancement Proposal" (SLEP), rather than a long discussion on an issue. A SLEP must be submitted as a pull-request to `enhancement proposals `_ using the `SLEP template `_. diff --git a/doc/governance.rst b/doc/governance.rst index bdabf82378425..224ad21ce6e6f 100644 --- a/doc/governance.rst +++ b/doc/governance.rst @@ -72,7 +72,7 @@ the continued development of the project through ongoing engagement with the community. They have shown they can be trusted to maintain scikit-learn with care. Being a core developer allows contributors to more easily carry on with their project related activities by giving them direct access to the -project’s repository and is represented as being an organization member on the +project's repository and is represented as being an organization member on the scikit-learn `GitHub organization `_. Core developers are expected to review code contributions, can merge approved pull requests, can cast votes for and against @@ -120,7 +120,7 @@ Decision Making Process ======================= Decisions about the future of the project are made through discussion with all members of the community. All non-sensitive project management discussion takes -place on the project contributors’ `mailing list `_ +place on the project contributors' `mailing list `_ and the `issue tracker `_. Occasionally, sensitive discussion occurs on a private list. @@ -142,7 +142,7 @@ are made according to the following rules: page: Requires +1 by a core developer, no -1 by a core developer (lazy consensus), happens on the issue or pull request page. Core developers are expected to give “reasonable time” to others to give their opinion on the pull - request if they’re not confident others would agree. + request if they're not confident others would agree. * **Code changes and major documentation changes** require +1 by two core developers, no -1 by a core developer (lazy @@ -164,7 +164,7 @@ Enhancement proposals (SLEPs) ============================== For all votes, a proposal must have been made public and discussed before the vote. Such proposal must be a consolidated document, in the form of a -‘Scikit-Learn Enhancement Proposal’ (SLEP), rather than a long discussion on an +"Scikit-Learn Enhancement Proposal" (SLEP), rather than a long discussion on an issue. A SLEP must be submitted as a pull-request to `enhancement proposals `_ using the `SLEP template `_. diff --git a/doc/related_projects.rst b/doc/related_projects.rst index 0f5532bd52357..a1202a6cdd27e 100644 --- a/doc/related_projects.rst +++ b/doc/related_projects.rst @@ -335,7 +335,7 @@ Domain specific packages Translations of scikit-learn documentation ------------------------------------------ -Translation’s purpose is to ease reading and understanding in languages +Translation's purpose is to ease reading and understanding in languages other than English. Its aim is to help people who do not understand English or have doubts about its interpretation. Additionally, some people prefer to read documentation in their native language, but please bear in mind that diff --git a/doc/testimonials/testimonials.rst b/doc/testimonials/testimonials.rst index 88997285e347e..fbf53ae36ef2c 100644 --- a/doc/testimonials/testimonials.rst +++ b/doc/testimonials/testimonials.rst @@ -138,14 +138,14 @@ Gaël Varoquaux, research at Parietal
    Betaworks is a NYC-based startup studio that builds new products, grows -companies, and invests in others. Over the past 8 years we’ve launched a +companies, and invests in others. Over the past 8 years we've launched a handful of social data analytics-driven services, such as Bitly, Chartbeat, digg and Scale Model. Consistently the betaworks data science team uses Scikit-learn for a variety of tasks. From exploratory analysis, to product development, it is an essential part of our toolkit. Recent uses are included -in `digg’s new video recommender system +in `digg's new video recommender system `_, -and Poncho’s `dynamic heuristic subspace clustering +and Poncho's `dynamic heuristic subspace clustering `_. .. raw:: html @@ -609,11 +609,11 @@ Vincent Dubourg, PHIMECA Engineering, PhD Engineer At HowAboutWe, scikit-learn lets us implement a wide array of machine learning techniques in analysis and in production, despite having a small team. We use -scikit-learn’s classification algorithms to predict user behavior, enabling us +scikit-learn's classification algorithms to predict user behavior, enabling us to (for example) estimate the value of leads from a given traffic source early -in the lead’s tenure on our site. Also, our users' profiles consist of +in the lead's tenure on our site. Also, our users' profiles consist of primarily unstructured data (answers to open-ended questions), so we use -scikit-learn’s feature extraction and dimensionality reduction tools to +scikit-learn's feature extraction and dimensionality reduction tools to translate these unstructured data into inputs for our matchmaking system. .. raw:: html @@ -648,7 +648,7 @@ Daniel Weitzenfeld, Senior Data Scientist at HowAboutWe
    At PeerIndex we use scientific methodology to build the Influence Graph - a -unique dataset that allows us to identify who’s really influential and in which +unique dataset that allows us to identify who's really influential and in which context. To do this, we have to tackle a range of machine learning and predictive modeling problems. Scikit-learn has emerged as our primary tool for developing prototypes and making quick progress. From predicting missing data @@ -879,12 +879,12 @@ Rafael Carrascosa, Lead developer
    -Scikit-learn is helping to drive Moore’s Law, via Solido. Solido creates +Scikit-learn is helping to drive Moore's Law, via Solido. Solido creates computer-aided design tools used by the majority of top-20 semiconductor companies and fabs, to design the bleeding-edge chips inside smartphones, -automobiles, and more. Scikit-learn helps to power Solido’s algorithms for +automobiles, and more. Scikit-learn helps to power Solido's algorithms for rare-event estimation, worst-case verification, optimization, and more. At -Solido, we are particularly fond of scikit-learn’s libraries for Gaussian +Solido, we are particularly fond of scikit-learn's libraries for Gaussian Process models, large-scale regularized linear regression, and classification. Scikit-learn has increased our productivity, because for many ML problems we no longer need to “roll our own” code. `This PyData 2014 talk `_ has details. diff --git a/doc/whats_new/older_versions.rst b/doc/whats_new/older_versions.rst index 63b5c6e9ea4cb..221de4cdb7e4c 100644 --- a/doc/whats_new/older_versions.rst +++ b/doc/whats_new/older_versions.rst @@ -1134,7 +1134,7 @@ Changelog example_gaussian_process_plot_gp_probabilistic_classification_after_regression.py for a taste of what can be done. -- It is now possible to use liblinear’s Multi-class SVC (option +- It is now possible to use liblinear's Multi-class SVC (option multi_class in :class:`~svm.LinearSVC`) - New features and performance improvements of text feature diff --git a/examples/compose/plot_digits_pipe.py b/examples/compose/plot_digits_pipe.py index acd3068d991c9..dcedfe0da2beb 100644 --- a/examples/compose/plot_digits_pipe.py +++ b/examples/compose/plot_digits_pipe.py @@ -37,7 +37,7 @@ pipe = Pipeline(steps=[("scaler", scaler), ("pca", pca), ("logistic", logistic)]) X_digits, y_digits = datasets.load_digits(return_X_y=True) -# Parameters of pipelines can be set using ‘__’ separated parameter names: +# Parameters of pipelines can be set using '__' separated parameter names: param_grid = { "pca__n_components": [5, 15, 30, 45, 60], "logistic__C": np.logspace(-4, 4, 4), diff --git a/examples/decomposition/plot_faces_decomposition.py b/examples/decomposition/plot_faces_decomposition.py index 0eb07dc3efb2d..c21ac347c0e06 100644 --- a/examples/decomposition/plot_faces_decomposition.py +++ b/examples/decomposition/plot_faces_decomposition.py @@ -79,7 +79,7 @@ def plot_gallery(title, images, n_col=n_col, n_row=n_row, cmap=plt.cm.gray): # %% -# Let’s take a look at our data. Gray color indicates negative values, +# Let's take a look at our data. Gray color indicates negative values, # white indicates positive values. plot_gallery("Faces from dataset", faces_centered[:n_components]) diff --git a/examples/text/plot_document_clustering.py b/examples/text/plot_document_clustering.py index acca1e34763e4..04446fd82f964 100644 --- a/examples/text/plot_document_clustering.py +++ b/examples/text/plot_document_clustering.py @@ -434,7 +434,7 @@ def fit_and_evaluate(km, X, name=None, n_runs=5): # baseline with regards to random labeling: this means that depending on the # number of samples, clusters and ground truth classes, a completely random # labeling will not always yield the same values. In particular random labeling -# won’t yield zero scores, especially when the number of clusters is large. This +# won't yield zero scores, especially when the number of clusters is large. This # problem can safely be ignored when the number of samples is more than a # thousand and the number of clusters is less than 10, which is the case of the # present example. For smaller sample sizes or larger number of clusters it is diff --git a/setup.cfg b/setup.cfg index 2d59f866547c8..d5c4bba3e5a86 100644 --- a/setup.cfg +++ b/setup.cfg @@ -33,7 +33,7 @@ ignore= E226, # missing whitespace around arithmetic operator E704, # multiple statements on one line (def) E731, # do not assign a lambda expression, use a def - E741, # do not use variables named ‘l’, ‘O’, or ‘I’ + E741, # do not use variables named 'l', 'O', or 'I' W503, # line break before binary operator W504 # line break after binary operator exclude= diff --git a/sklearn/datasets/descr/twenty_newsgroups.rst b/sklearn/datasets/descr/twenty_newsgroups.rst index a7542ea57d529..3a327a4cbc19c 100644 --- a/sklearn/datasets/descr/twenty_newsgroups.rst +++ b/sklearn/datasets/descr/twenty_newsgroups.rst @@ -226,7 +226,7 @@ the ``--filter`` option to compare the results. discussion sparked by the death of George Floyd and a national reckoning over race and colonialism, the Cleveland Indians have decided to change their name." Team owner Paul Dolan "did make it clear that the team will not make - its informal nickname -- the Tribe -- its new team name." "It’s not going to + its informal nickname -- the Tribe -- its new team name." "It's not going to be a half-step away from the Indians," Dolan said."We will not have a Native American-themed name." diff --git a/sklearn/decomposition/_lda.py b/sklearn/decomposition/_lda.py index 6db9d900566eb..0d72f18cce1d1 100644 --- a/sklearn/decomposition/_lda.py +++ b/sklearn/decomposition/_lda.py @@ -292,7 +292,7 @@ class LatentDirichletAllocation( -------- sklearn.discriminant_analysis.LinearDiscriminantAnalysis: A classifier with a linear decision boundary, generated by fitting - class conditional densities to the data and using Bayes’ rule. + class conditional densities to the data and using Bayes' rule. References ---------- diff --git a/sklearn/decomposition/_pca.py b/sklearn/decomposition/_pca.py index 635e119ae445d..07502c5a034cd 100644 --- a/sklearn/decomposition/_pca.py +++ b/sklearn/decomposition/_pca.py @@ -211,7 +211,7 @@ class PCA(_BasePCA): .. versionadded:: 1.1 - power_iteration_normalizer : {‘auto’, ‘QR’, ‘LU’, ‘none’}, default=’auto’ + power_iteration_normalizer : {'auto', 'QR', 'LU', 'none'}, default='auto' Power iteration normalizer for randomized SVD solver. Not used by ARPACK. See :func:`~sklearn.utils.extmath.randomized_svd` for more details. diff --git a/sklearn/decomposition/_truncated_svd.py b/sklearn/decomposition/_truncated_svd.py index b8417543783d4..b5b44c236f46b 100644 --- a/sklearn/decomposition/_truncated_svd.py +++ b/sklearn/decomposition/_truncated_svd.py @@ -67,7 +67,7 @@ class TruncatedSVD(_ClassNamePrefixFeaturesOutMixin, TransformerMixin, BaseEstim .. versionadded:: 1.1 - power_iteration_normalizer : {‘auto’, ‘QR’, ‘LU’, ‘none’}, default=’auto’ + power_iteration_normalizer : {'auto', 'QR', 'LU', 'none'}, default='auto' Power iteration normalizer for randomized SVD solver. Not used by ARPACK. See :func:`~sklearn.utils.extmath.randomized_svd` for more details. From 410eb90b8c2af84fc9d4f9f0ea3903241e3119f3 Mon Sep 17 00:00:00 2001 From: Tom Mathews <9562152+Mathews-Tom@users.noreply.github.com> Date: Thu, 21 Jul 2022 17:07:57 +0530 Subject: [PATCH 195/251] DOC Ensure `polynomial_kernel` passes numpydoc validation (#23953) Co-authored-by: Meekail Zain <34613774+Micky774@users.noreply.github.com> --- sklearn/metrics/pairwise.py | 11 ++++++++--- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/sklearn/metrics/pairwise.py b/sklearn/metrics/pairwise.py index e77afa2e36404..bcf01bc2925a3 100644 --- a/sklearn/metrics/pairwise.py +++ b/sklearn/metrics/pairwise.py @@ -1190,28 +1190,33 @@ def linear_kernel(X, Y=None, dense_output=True): def polynomial_kernel(X, Y=None, degree=3, gamma=None, coef0=1): """ - Compute the polynomial kernel between X and Y:: + Compute the polynomial kernel between X and Y. - K(X, Y) = (gamma + coef0)^degree + :math:`K(X, Y) = (gamma + coef0)^degree` Read more in the :ref:`User Guide `. Parameters ---------- X : ndarray of shape (n_samples_X, n_features) + A feature array. Y : ndarray of shape (n_samples_Y, n_features), default=None + An optional second feature array. If `None`, uses `Y=X`. degree : int, default=3 + Kernel degree. gamma : float, default=None - If None, defaults to 1.0 / n_features. + Coefficient of the vector inner product. If None, defaults to 1.0 / n_features. coef0 : float, default=1 + Constant offset added to scaled inner product. Returns ------- Gram matrix : ndarray of shape (n_samples_X, n_samples_Y) + The polynomial kernel. """ X, Y = check_pairwise_arrays(X, Y) if gamma is None: diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index a700294a670f6..5e29d4b645368 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -48,7 +48,6 @@ "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.pairwise_distances_chunked", - "sklearn.metrics.pairwise.polynomial_kernel", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", "sklearn.preprocessing._label.label_binarize", From a5604d999d3e29204d6fedc2250ef425bc4f3add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 21 Jul 2022 14:40:58 +0200 Subject: [PATCH 196/251] CI unpin coverage where possible and regenerate lock files (#23969) --- build_tools/azure/debian_atlas_32bit_lock.txt | 4 +- ...onda_defaults_openblas_linux-64_conda.lock | 12 +-- .../py38_conda_forge_mkl_environment.yml | 2 +- .../py38_conda_forge_mkl_win-64_conda.lock | 59 ++++++++------- ...e_openblas_ubuntu_1804_linux-64_conda.lock | 36 ++++----- .../azure/py38_pip_openblas_32bit_lock.txt | 4 +- ...latest_conda_forge_mkl_linux-64_conda.lock | 63 ++++++++-------- ...t_conda_forge_mkl_linux-64_environment.yml | 2 +- ..._forge_mkl_no_coverage_linux-64_conda.lock | 36 ++++----- ...pylatest_conda_forge_mkl_osx-64_conda.lock | 42 +++++------ ...est_conda_forge_mkl_osx-64_environment.yml | 2 +- ...test_conda_mkl_no_openmp_osx-64_conda.lock | 18 ++--- ...latest_pip_openblas_pandas_environment.yml | 2 +- ...st_pip_openblas_pandas_linux-64_conda.lock | 36 ++++----- .../pylatest_pip_scipy_dev_environment.yml | 2 +- ...pylatest_pip_scipy_dev_linux-64_conda.lock | 18 ++--- build_tools/azure/pypy3_linux-64_conda.lock | 18 ++--- .../py39_conda_forge_linux-aarch64_conda.lock | 30 ++++---- build_tools/github/doc_linux-64_conda.lock | 75 ++++++++++--------- .../doc_min_dependencies_linux-64_conda.lock | 42 +++++------ .../update_environments_and_lock_files.py | 16 ++-- 21 files changed, 264 insertions(+), 255 deletions(-) diff --git a/build_tools/azure/debian_atlas_32bit_lock.txt b/build_tools/azure/debian_atlas_32bit_lock.txt index be62e45dd4a88..0fca5979d8b06 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 # -atomicwrites==1.4.0 +atomicwrites==1.4.1 # via pytest attrs==21.4.0 # via pytest @@ -30,5 +30,5 @@ threadpoolctl==2.2.0 # via -r build_tools/azure/debian_atlas_32bit_requirements.txt wcwidth==0.2.5 # via pytest -zipp==3.8.0 +zipp==3.8.1 # via importlib-metadata diff --git a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock index dc7e7c7474438..ace701d2b0eb5 100644 --- a/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_defaults_openblas_linux-64_conda.lock @@ -22,8 +22,8 @@ https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c https://repo.anaconda.com/pkgs/main/linux-64/libwebp-base-1.2.2-h7f8727e_0.conda#162451b4884cfc7db8400580c711e83a https://repo.anaconda.com/pkgs/main/linux-64/libxcb-1.15-h7f8727e_0.conda#ada518dcadd6aaee9aae47ba9a671553 https://repo.anaconda.com/pkgs/main/linux-64/lz4-c-1.9.3-h295c915_1.conda#d9bd18f73ff566e08add10a54a3463cf -https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 -https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h5eee18b_3.conda#0c616f387885c1bbb57ec0bd1e779ced +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1q-h7f8727e_0.conda#2ac47797afee2ece8d339c18b095b8d8 https://repo.anaconda.com/pkgs/main/linux-64/pcre-8.45-h295c915_0.conda#b32ccc24d1d9808618c1e898da60f68d https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 @@ -49,14 +49,14 @@ https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py38h06a4308_0.co https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/linux-64/coverage-6.2-py38h7f8727e_0.conda#34a3006ca7d8d286b63593b31b845ace https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab -https://repo.anaconda.com/pkgs/main/linux-64/cython-0.29.28-py38h295c915_0.conda#5c546bcf04d20b8291d5794227de04fa +https://repo.anaconda.com/pkgs/main/linux-64/cython-0.29.30-py38h6a678d5_0.conda#46c524f271afb80dfa5ef984e72c6ff4 https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895937671af67cebb8af617494b3513 https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 https://repo.anaconda.com/pkgs/main/noarch/joblib-1.1.0-pyhd3eb1b0_0.conda#cae25b839f3b24686e683addde01b742 https://repo.anaconda.com/pkgs/main/linux-64/kiwisolver-1.4.2-py38h295c915_0.conda#00e5f5a50b547c8c31d1a559828f3251 https://repo.anaconda.com/pkgs/main/linux-64/numpy-base-1.17.3-py38h2f8d375_0.conda#40edbb76ecacefb1e6ab639b514822b1 -https://repo.anaconda.com/pkgs/main/linux-64/pillow-9.0.1-py38h22f2fdc_0.conda#13c7b8b727dc6af99e9f6d75b3ec18f3 +https://repo.anaconda.com/pkgs/main/linux-64/pillow-9.2.0-py38hace64e9_1.conda#a6b7baf62d6399704dfdeab8c0ec55f6 https://repo.anaconda.com/pkgs/main/linux-64/pluggy-1.0.0-py38h06a4308_1.conda#87bb1d3f6cf3e409a1dac38cee99918e https://repo.anaconda.com/pkgs/main/noarch/py-1.11.0-pyhd3eb1b0_0.conda#7205a898ed2abbf6e9b903dff6abe08e https://repo.anaconda.com/pkgs/main/noarch/pycparser-2.21-pyhd3eb1b0_0.conda#135a72ff2a31150a3a3ff0b1edd41ca9 @@ -68,7 +68,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/sip-4.19.13-py38h295c915_0.conda#20 https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a -https://repo.anaconda.com/pkgs/main/noarch/tomli-1.2.2-pyhd3eb1b0_0.conda#8fa7bbbcaeed916ec190614d21b7a9ce +https://repo.anaconda.com/pkgs/main/linux-64/tomli-2.0.1-py38h06a4308_0.conda#791cce9de9913e9587b0a85cd8419123 https://repo.anaconda.com/pkgs/main/linux-64/tornado-6.1-py38h27cfd23_0.conda#d2d3043f631807af72b0fde504baf625 https://repo.anaconda.com/pkgs/main/linux-64/cffi-1.15.0-py38hd667e15_1.conda#7b12fe728b28de7b8851af1eb1ba1d38 https://repo.anaconda.com/pkgs/main/linux-64/numpy-1.17.3-py38h7e8d029_0.conda#5f2b196b515f8fe6b37e3d224650577d @@ -89,5 +89,5 @@ https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#b https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 https://repo.anaconda.com/pkgs/main/noarch/pytest-xdist-2.5.0-pyhd3eb1b0_0.conda#d15cdc4207bcf8ca920822597f1d138d https://repo.anaconda.com/pkgs/main/linux-64/urllib3-1.26.9-py38h06a4308_0.conda#40c1c6f5e634ec77344a822ab3aa84cc -https://repo.anaconda.com/pkgs/main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda#9b593f86737e69140c47c2107ecf277c +https://repo.anaconda.com/pkgs/main/linux-64/requests-2.28.1-py38h06a4308_0.conda#04d482ea4a1e190d688dee2e4048e49f https://repo.anaconda.com/pkgs/main/noarch/codecov-2.1.11-pyhd3eb1b0_0.conda#83a743cc928162d53d4066c43468b2c7 diff --git a/build_tools/azure/py38_conda_forge_mkl_environment.yml b/build_tools/azure/py38_conda_forge_mkl_environment.yml index e3391ee51ac79..ff6f3479b770c 100644 --- a/build_tools/azure/py38_conda_forge_mkl_environment.yml +++ b/build_tools/azure/py38_conda_forge_mkl_environment.yml @@ -17,6 +17,6 @@ dependencies: - pillow - codecov - pytest-cov - - coverage=6.2 + - coverage - wheel - pip diff --git a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock index 2ee89b6242ae9..f06c1398fdba6 100644 --- a/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_mkl_win-64_conda.lock @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: win-64 -# input_hash: fd41626afa3bcc2a9426dfc064e304c781f514d4aeaa08010d30385c8baa9609 +# input_hash: 058abecb942d0c68bd56879a3f802fea24ccdc77688a02b38c81b110d8d809e7 @EXPLICIT https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2022.6.15-h5b45459_0.tar.bz2#b84069692c33afe59f31c7117c80696e https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2022.1.0-h57928b3_3787.tar.bz2#35dff2b6e944ce136a574c4c006cec28 @@ -14,20 +14,20 @@ https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz https://conda.anaconda.org/conda-forge/win-64/vc-14.2-hb210afc_6.tar.bz2#c2aecbc9b00ba6f352e27d3d61fd31fb https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h8ffe710_4.tar.bz2#7c03c66026944073040cb19a4f3ec3c9 https://conda.anaconda.org/conda-forge/win-64/icu-70.1-h0e60522_0.tar.bz2#64073396a905b6df895ab2489fae3847 -https://conda.anaconda.org/conda-forge/win-64/jpeg-9e-h8ffe710_1.tar.bz2#cda58df0a6d1165a82a0dfd59e9be5b0 +https://conda.anaconda.org/conda-forge/win-64/jpeg-9e-h8ffe710_2.tar.bz2#733066523147548ce368a9bd0c8395af https://conda.anaconda.org/conda-forge/win-64/lerc-3.0-h0e60522_0.tar.bz2#756c8b51a32758df2ed6cddcc7b7ed58 https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.0.9-h8ffe710_7.tar.bz2#e7b12a6cf353395dda7ed36b9041048b https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.12-h8ffe710_0.tar.bz2#81735cd9af2e06a4eef556ed84fb4640 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.16-he774522_0.tar.bz2#bdfeadc9348e4d9fbe4821e81bf8f221 https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.4-h8ffe710_1.tar.bz2#04286d905a0dcb7f7d4a12bdfe02516d -https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.2.2-h8ffe710_1.tar.bz2#24e23990217d3542fb821759a41d6ec2 -https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.12-h8ffe710_1.tar.bz2#8b67614ab0539e803c03db2ed7990c6c +https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.2.3-h8ffe710_0.tar.bz2#41d06387666b77df69d0de7125f820d1 +https://conda.anaconda.org/conda-forge/win-64/libzlib-1.2.12-h8ffe710_2.tar.bz2#74585107cf2f18b31aa84375fcb24215 https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.3-h8ffe710_1.tar.bz2#d12763533276560a931c1bd3df1adf63 https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2#066552ac6b907ec6d72c0ddab29050dc -https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1p-h8ffe710_0.tar.bz2#2c34e13bb68c9ece446b5f96eb55d543 +https://conda.anaconda.org/conda-forge/win-64/openssl-1.1.1q-h8ffe710_0.tar.bz2#2ee16f406ee12fe4dcd08b513e9bd0c6 https://conda.anaconda.org/conda-forge/win-64/pcre-8.45-h0e60522_0.tar.bz2#3cd3948bb5de74ebef93b6be6d8cf0d5 -https://conda.anaconda.org/conda-forge/win-64/sqlite-3.38.5-h8ffe710_0.tar.bz2#9f9c961fc099c7c91a27f38890c42498 +https://conda.anaconda.org/conda-forge/win-64/sqlite-3.39.1-h8ffe710_0.tar.bz2#c78517cc232400e9901399a387b8210c https://conda.anaconda.org/conda-forge/win-64/tbb-2021.5.0-h2d74725_1.tar.bz2#8f00f39dbd7deaba11410b0b6e7b2cb4 https://conda.anaconda.org/conda-forge/win-64/tk-8.6.12-h8ffe710_0.tar.bz2#c69a5047cc9291ae40afd4a1ad6f0c0f https://conda.anaconda.org/conda-forge/win-64/xz-5.2.5-h62dcd97_1.tar.bz2#eabcbfedd14d7c18a514afca09ea0ebb @@ -37,16 +37,16 @@ https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.0.9-h8ffe710_7.tar. https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.0.9-h8ffe710_7.tar.bz2#75c0a84c7f22d57cda6aaf7205b4a27c https://conda.anaconda.org/conda-forge/win-64/libclang13-14.0.6-default_h77d9078_0.tar.bz2#4d9ea47241ea0851081dfe223c76e3b3 https://conda.anaconda.org/conda-forge/win-64/libvorbis-1.3.7-h0e60522_0.tar.bz2#e1a22282de0169c93e4ffe6ce6acc212 -https://conda.anaconda.org/conda-forge/win-64/libwebp-1.2.2-h57928b3_0.tar.bz2#80c0ce63cf8f69c5a5781ab7a9645942 +https://conda.anaconda.org/conda-forge/win-64/libwebp-1.2.3-h8ffe710_0.tar.bz2#c6ea145b03a43940a6d7e4f7dd300ad9 https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2#fe759119b8b3bfa720b8762c6fdc35de https://conda.anaconda.org/conda-forge/win-64/mkl-2022.1.0-h6a75c08_874.tar.bz2#2ff89a7337a9636029b4db9466e9f8e3 https://conda.anaconda.org/conda-forge/win-64/python-3.8.13-h9a09f29_0_cpython.tar.bz2#41de0ad5db009f4f829f9d415a6a4200 -https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.12-h8ffe710_1.tar.bz2#852c4716604f74676b90e62df4b52d36 -https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.2-h6255e5f_1.tar.bz2#90702967af600ea2e2c7f7968c0ce099 -https://conda.anaconda.org/conda-forge/noarch/atomicwrites-1.4.0-pyh9f0ad1d_0.tar.bz2#5e36230ffaf3b7bb599424592684ae53 +https://conda.anaconda.org/conda-forge/win-64/zlib-1.2.12-h8ffe710_2.tar.bz2#d6f4eeb62da2ad90c31082cc7178776a +https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.2-h6255e5f_2.tar.bz2#e1c202295678d31c9feb9afded45c16a +https://conda.anaconda.org/conda-forge/noarch/atomicwrites-1.4.1-pyhd8ed1ab_0.tar.bz2#1714887104aab113bde64001ceb17262 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.0.9-h8ffe710_7.tar.bz2#fd458f76be2068973734834202ac0352 -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 @@ -54,11 +54,12 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b5 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-15_win64_mkl.tar.bz2#661187f959fed1821cdd6921a738336d https://conda.anaconda.org/conda-forge/win-64/libclang-14.0.6-default_h77d9078_0.tar.bz2#39e84500879d1638f1cdca7a289bcf41 -https://conda.anaconda.org/conda-forge/win-64/libglib-2.70.2-h3be07f2_4.tar.bz2#355750a238b15920d75ec3c49554c3e3 -https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.37-h1d00b33_2.tar.bz2#005ddb14b8f876ed6a85b76dfc9892db +https://conda.anaconda.org/conda-forge/win-64/libglib-2.72.1-h3be07f2_0.tar.bz2#b5560fb371f0876122fed12c6669d521 +https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.37-h1d00b33_3.tar.bz2#29258e769c274f48a1d70210a1fc8896 https://conda.anaconda.org/conda-forge/win-64/libtiff-4.4.0-h2ed3b44_1.tar.bz2#2c0c44be2cd4d32b677d311a27130724 https://conda.anaconda.org/conda-forge/win-64/mkl-devel-2022.1.0-h57928b3_875.tar.bz2#6319a06307af296c1dfae93687c283b2 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2#a1f820480193ea83582b13249a7e7bd9 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff @@ -73,12 +74,12 @@ https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.9-hcd874cb_0.tar.b https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2#46878ebb6b9cbd8afcf8088d7ef00ece https://conda.anaconda.org/conda-forge/win-64/brotli-1.0.9-h8ffe710_7.tar.bz2#bdd3236d1f6962e8e6953276d12b7e5b https://conda.anaconda.org/conda-forge/win-64/certifi-2022.6.15-py38haa244fe_0.tar.bz2#88eb5b7ef2bb7238573273a6ff04e461 -https://conda.anaconda.org/conda-forge/win-64/cffi-1.15.0-py38hd8c33c5_0.tar.bz2#b6a0fcd49b88b2fef6892785c8e33092 -https://conda.anaconda.org/conda-forge/win-64/coverage-6.2-py38h294d835_0.tar.bz2#9fcad0bc875eb5cf8b7e45e128cfd886 +https://conda.anaconda.org/conda-forge/win-64/cffi-1.15.1-py38hd8c33c5_0.tar.bz2#6039ace67b5ab57a65d5335e62e14656 +https://conda.anaconda.org/conda-forge/win-64/coverage-6.4.2-py38h294d835_0.tar.bz2#a5660e6122558d387eb6b8a8dadb7441 https://conda.anaconda.org/conda-forge/win-64/cython-0.29.30-py38h885f38d_0.tar.bz2#7cdd65a187c9c04207b394b67c6cf64b https://conda.anaconda.org/conda-forge/win-64/freetype-2.10.4-h546665d_1.tar.bz2#1215a2e49d23da91c28d97cff8de35ea -https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.70.2-h7755175_4.tar.bz2#8ad7cafc2cc5a0e2260ac1ac668e29d3 -https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.3-py38hbd9d945_0.tar.bz2#37c1257ed3394963041816dc1c3b7100 +https://conda.anaconda.org/conda-forge/win-64/glib-tools-2.72.1-h7755175_0.tar.bz2#bd10245a526669540f748c94c94e2808 +https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.4-py38hbd9d945_0.tar.bz2#c53bd7d9390901f396a0473255d3f39f https://conda.anaconda.org/conda-forge/win-64/lcms2-2.12-h2a16943_0.tar.bz2#fee639c27301c4165b4d1f7e442de8a5 https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-15_win64_mkl.tar.bz2#c6012601cd7dde1b4108128fb847de9f https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-15_win64_mkl.tar.bz2#7915daedfea4cc94ffcaa71cde184f50 @@ -87,36 +88,36 @@ https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.4.0-hb211442_1.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/win-64/pluggy-1.0.0-py38haa244fe_3.tar.bz2#bd23d4e34ce9647a448d8048be89b2dd https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/win-64/setuptools-62.6.0-py38haa244fe_0.tar.bz2#a39694c8a0a12b3ca1985628ae532e21 -https://conda.anaconda.org/conda-forge/win-64/tornado-6.1-py38h294d835_3.tar.bz2#f7ac7c9ee9c07ff085df3564b9ea70f2 +https://conda.anaconda.org/conda-forge/win-64/setuptools-63.2.0-py38haa244fe_0.tar.bz2#33e8335b39ea25034dfd3328d5c3f3c5 +https://conda.anaconda.org/conda-forge/win-64/tornado-6.2-py38h294d835_0.tar.bz2#f69edffe253eed9f5f18877a2f93eff8 https://conda.anaconda.org/conda-forge/win-64/unicodedata2-14.0.0-py38h294d835_1.tar.bz2#957e1074c481cbeba55ac1a5e4c07637 https://conda.anaconda.org/conda-forge/win-64/win_inet_pton-1.1.0-py38haa244fe_4.tar.bz2#8adadd81dc9c22710b69628ec6e6d41a https://conda.anaconda.org/conda-forge/win-64/brotlipy-0.7.0-py38h294d835_1004.tar.bz2#f12a527d29a252cef0abbfd752d3ab01 -https://conda.anaconda.org/conda-forge/win-64/cryptography-37.0.2-py38hb7941b4_0.tar.bz2#8eecebc1af1259fbc204f94e47c26e5d -https://conda.anaconda.org/conda-forge/win-64/fonttools-4.33.3-py38h294d835_0.tar.bz2#092c08f5f754280122530958639839d1 -https://conda.anaconda.org/conda-forge/win-64/glib-2.70.2-h7755175_4.tar.bz2#ba2f99a6a8ed567eeae3f09a6e8c018a +https://conda.anaconda.org/conda-forge/win-64/cryptography-37.0.4-py38hb7941b4_0.tar.bz2#9498b6b13423971d96da00e5e98b88d2 +https://conda.anaconda.org/conda-forge/win-64/fonttools-4.34.4-py38h294d835_0.tar.bz2#4fc5caf5ad862f88992406d02d14437c +https://conda.anaconda.org/conda-forge/win-64/glib-2.72.1-h7755175_0.tar.bz2#eabbf16f405ae95d123e4ec90ee552b3 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/win-64/liblapacke-3.9.0-15_win64_mkl.tar.bz2#383596ab975e586b0964b5fd959bea78 -https://conda.anaconda.org/conda-forge/win-64/numpy-1.23.0-py38h223ccf5_0.tar.bz2#a66d0214533f264a5e8fb233b6defd8c -https://conda.anaconda.org/conda-forge/win-64/pillow-9.1.1-py38hd8e0db4_1.tar.bz2#49027d99307bd22d7646be63e6537555 +https://conda.anaconda.org/conda-forge/win-64/numpy-1.23.1-py38h223ccf5_0.tar.bz2#cc2580ede01216335dece5e24e7382fe +https://conda.anaconda.org/conda-forge/win-64/pillow-9.2.0-py38hd8e0db4_0.tar.bz2#f2be20ed3bc095db50c05fe3bba50166 https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/win-64/pysocks-1.7.1-py38haa244fe_5.tar.bz2#81fd9157802c3d99efc4a24563cfe885 https://conda.anaconda.org/conda-forge/win-64/pytest-7.1.2-py38haa244fe_0.tar.bz2#523814dad1e91a414e8e449aae2202ec -https://conda.anaconda.org/conda-forge/win-64/sip-6.5.1-py38h885f38d_2.tar.bz2#61080bcdb3a9c61ef47d8afc7eae5232 +https://conda.anaconda.org/conda-forge/win-64/sip-6.6.2-py38h885f38d_0.tar.bz2#e7ded925411fbd38c929e869adc341b6 https://conda.anaconda.org/conda-forge/win-64/blas-devel-3.9.0-15_win64_mkl.tar.bz2#9504c3464d7df789d8bcb98cba64bd33 https://conda.anaconda.org/conda-forge/win-64/gstreamer-1.20.3-hdff456e_0.tar.bz2#e0d08ff2d3539aec413c14ad00f95c05 https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.5.2-py38he529843_0.tar.bz2#437b6a636997b284e69d33360d88e634 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.9.0-py38h885f38d_1.tar.bz2#a609231d3e43680d8f134b4386ea9499 +https://conda.anaconda.org/conda-forge/win-64/pyqt5-sip-12.11.0-py38h885f38d_0.tar.bz2#fcee1a2fdbb5a879fc7f80be5dd9351c https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/win-64/scipy-1.8.1-py38h9bf8e03_0.tar.bz2#cd06e46ce3f0140becc4c0aed56938d0 https://conda.anaconda.org/conda-forge/win-64/blas-2.115-mkl.tar.bz2#7a7efb718a4da3f8f4e4268c5828efe1 https://conda.anaconda.org/conda-forge/win-64/gst-plugins-base-1.20.3-he07aa86_0.tar.bz2#85bce748dddf6ecc690f8d29f464b1cf https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.10-pyhd8ed1ab_0.tar.bz2#14f22c5b9cfd0d93c2806faaa3fe6dec https://conda.anaconda.org/conda-forge/win-64/qt-main-5.15.4-h467ea89_2.tar.bz2#2471d740deef9ff39f309a872ad1e2bd -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 -https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.4-py38h75e37d8_1.tar.bz2#92d208d34845e0605e0b429e16f2f028 +https://conda.anaconda.org/conda-forge/win-64/pyqt-5.15.7-py38h75e37d8_0.tar.bz2#f0e72b93887a28d4c406c2ac393b924d https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.5.2-py38haa244fe_0.tar.bz2#3f67b7e43451da103b28f5fab2fe8feb diff --git a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock index 64a508e88c0f6..bfb506b345f64 100644 --- a/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock +++ b/build_tools/azure/py38_conda_forge_openblas_ubuntu_1804_linux-64_conda.lock @@ -21,7 +21,7 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c @@ -34,12 +34,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.5-h166bdaf_0.tar.bz2#f158304d1e469c37e9ffdbe796305571 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 @@ -59,28 +59,28 @@ https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.t https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.72.1-h2d90d5f_0.tar.bz2#ebeadbb5fbc44052eeb6f96a2136e3c2 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.72.1-h6239696_0.tar.bz2#a3a99cc33279091262bbc4f5ee7c4571 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-he2d8382_0.tar.bz2#73038d5278e922bb655235ee18545ced -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_0.tar.bz2#96e218d06394a4e4d77028cf70162a09 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 @@ -90,7 +90,7 @@ https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_open https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.72.1-h6239696_0.tar.bz2#1698b7684d3c6a4d1de2ab946f5b0fb5 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 @@ -104,17 +104,17 @@ https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py38hfa26641_0.tar.bz2#189de973189a5550f34a6c1131dcd15d https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py38h43d8883_0.tar.bz2#0719de23a2c5aa0b4db25ee34394e8f3 -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py38h3a7f9d9_0.tar.bz2#bde7c584b811ef5aec0dd2204e502334 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py38h43d8883_0.tar.bz2#ae54c61918e1cbd280b8587ed6219258 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py38h3a7f9d9_0.tar.bz2#90cf44c14b2bfe19ce7b875979b90cb9 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_0.tar.bz2#7ef61f9084bda76b2f7a668ec5d1499a https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py38h709712a_8.tar.bz2#11b72f5b1cc15427c89232321172a0bc https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py38h578d9bd_0.tar.bz2#4dbffb6d975f26cd71fb27aa20fc4761 -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-63.2.0-py38h578d9bd_0.tar.bz2#e69405e267e41bb8409e5ec307a6cd3d +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py38h0a891b7_0.tar.bz2#acd276486a0067bee3098590f0952a0f https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py38h0a891b7_1.tar.bz2#83df0e9e3faffc295f12607438691465 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py38h0a891b7_0.tar.bz2#fd11badf5b3f7d738cc983cb2c75946e +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.34.4-py38h0a891b7_0.tar.bz2#7ac14fa19454e00f50d9a39506bcc3c6 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py38h47df419_0.tar.bz2#91c5ac3f8f0e55a946be7b9ce489abfe diff --git a/build_tools/azure/py38_pip_openblas_32bit_lock.txt b/build_tools/azure/py38_pip_openblas_32bit_lock.txt index 94b51d5d0f70c..17742a9720212 100644 --- a/build_tools/azure/py38_pip_openblas_32bit_lock.txt +++ b/build_tools/azure/py38_pip_openblas_32bit_lock.txt @@ -14,13 +14,13 @@ iniconfig==1.1.1 # via pytest joblib==1.1.0 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt -numpy==1.23.0 +numpy==1.23.1 # via # -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt # scipy packaging==21.3 # via pytest -pillow==9.1.1 +pillow==9.2.0 # via -r build_tools/azure/py38_pip_openblas_32bit_requirements.txt pluggy==1.0.0 # via pytest 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 219cc35fecf5f..e5a12a826209a 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 @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: c37a5ebd9e5b96fd88fd4f70f9850219fb4ff1d23468f3ff179d0188e72b9538 +# input_hash: cb096f7f420f09924e2a2d782533eefe4fbfbca3f94fe41424ac460dc2740aba @EXPLICIT https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2022.6.15-ha878542_0.tar.bz2#c320890f77fd1d617fa876e0982002c2 @@ -25,7 +25,7 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c @@ -40,12 +40,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1q-h166bdaf_0.tar.bz2#07acc367c7fc8b716770cd5b36d31717 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d @@ -66,20 +66,20 @@ https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-haf5c9bc_1.t https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h57a0ea0_5.tar.bz2#5469312a373f481c05c380897fd7c923 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 -https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.5-default_h3a83d3e_0.tar.bz2#493aec1de0f0e09e921eff6206cafff6 +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.6-default_h3a83d3e_0.tar.bz2#cdbd49e0ab5c5a6c522acb8271977d4c https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.72.1-h2d90d5f_0.tar.bz2#ebeadbb5fbc44052eeb6f96a2136e3c2 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_3.tar.bz2#b6f4a0850ba620030a48b88c25497aaa https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2#b9c8f925797a93dbff45e1626b025a6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 @@ -87,14 +87,14 @@ https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.1-h166bdaf_0.tar https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.72.1-h6239696_0.tar.bz2#a3a99cc33279091262bbc4f5ee7c4571 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_mkl.tar.bz2#1ffa5033a4fa691d679dabca44bb60f4 -https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.5-default_h2e3cab8_0.tar.bz2#8b1cd508fcf54a5c8c5766c549272b6e +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.6-default_h2e3cab8_0.tar.bz2#eb70548da697e50cefa7ba939d57d001 https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-hd77ab85_0.tar.bz2#7024df220bd8680192d4bad4024122d1 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_0.tar.bz2#96e218d06394a4e4d77028cf70162a09 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2#69ba49e445f87aea2cba343a71a35ca2 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc @@ -102,17 +102,18 @@ https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz https://conda.anaconda.org/conda-forge/linux-64/python-3.10.5-h582c2e5_0_cpython.tar.bz2#ccbed83043b9b7b5693164591317f327 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-h166bdaf_0.tar.bz2#c9b568bd804cb2903c6be6f5f68182e4 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.72.1-h6239696_0.tar.bz2#1698b7684d3c6a4d1de2ab946f5b0fb5 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-h8c3723f_1002.tar.bz2#7b3f287fcb7683f67b3d953b79f412ea https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_mkl.tar.bz2#98a0dc4760b53d7d7ae24e232b4a1e44 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_mkl.tar.bz2#8803915f72ba0742c4f4c86ab02e67d1 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -123,43 +124,43 @@ https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.t https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py310hff52083_0.tar.bz2#a5087d46181f812a662fbe20352961ee -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py310h0fdd8cc_0.tar.bz2#7b7366be82277a5a210e48cc6d25ce26 -https://conda.anaconda.org/conda-forge/linux-64/coverage-6.2-py310h6acc77f_0.tar.bz2#3a96cddd907fb4ecb34d0ee8205ee708 +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py310h255011f_0.tar.bz2#3e4b55b02998782f8ca9ceaaa4f5ada9 +https://conda.anaconda.org/conda-forge/linux-64/coverage-6.4.2-py310h5764c6d_0.tar.bz2#5f94ce84b98c6eb37a0207de551fbb39 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py310hbf28c38_0.tar.bz2#93b57192dd2e93b6d5ed00be96e8ae55 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py310hbf28c38_0.tar.bz2#8dc3e2dce8fa122f8df4f3739d1f771b https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_mkl.tar.bz2#ed59083832eb21f831ad847419a53855 -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py310h53a5b5f_0.tar.bz2#16493af3907dbd772904e15bf24948d8 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py310h53a5b5f_0.tar.bz2#9b86a46d908354fe7f91da24f5ea3f36 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_1.tar.bz2#d7052b5cef119518ca362a2ff633a36d +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py310he619898_0.tar.bz2#5808b13c720854aaa3307c6e04cc1505 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py310hff52083_5.tar.bz2#378f2260e871f3ea46c6fa58d9f05277 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py310hff52083_0.tar.bz2#7fc5b1d6db9f6a9307330303a3edb04d -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-63.2.0-py310hff52083_0.tar.bz2#9a7c1d5f93e2b153d5b0b4930f8b6b66 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py310h5764c6d_0.tar.bz2#c42dcb37acd84b3ca197f03f57ef927d https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_mkl.tar.bz2#bf390b2b17bf22decf8bd7c1ad905fac https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py310h5764c6d_1004.tar.bz2#6499bb11b7feffb63b26847fc9181319 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py310h597c629_0.tar.bz2#7b40622ed00061cc8f803c5ed3c62707 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.4-py310h597c629_0.tar.bz2#f285746449d16d92884f4ce0cfe26679 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.34.4-py310h5764c6d_0.tar.bz2#c965e9e47e42b19d26994e848d2a40e6 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py310h769672d_0.tar.bz2#e48c810453df0f03bb8fcdff5e1d9e9d https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py310hff52083_0.tar.bz2#5d44c6ab93d445b6c433914753390e86 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py310h7612f91_0.tar.bz2#14a7ea0620e4c0801bee756171f4dc03 -https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py310h122e73d_2.tar.bz2#f485cb3efb4c179928a96fb2e02e6f7e +https://conda.anaconda.org/conda-forge/linux-64/sip-6.6.2-py310hd8f1fbe_0.tar.bz2#3d311837eadeb8137fca02bdb5a9751f https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-mkl.tar.bz2#415a1741a10128d016b685ce5a9b8ac4 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py310h5701ce4_0.tar.bz2#b038b2e97ae14fea11159dcb2c5abf0a https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py310hc4a4660_0.tar.bz2#4fa45d2d66864888df6f1ca29f516156 https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py310hd8f1fbe_1.tar.bz2#21ae1ac216cfc85e24dc7c09570ddf31 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.11.0-py310hd8f1fbe_0.tar.bz2#9e3db99607d6f9285b7348c2af28a095 https://conda.anaconda.org/conda-forge/noarch/pytest-cov-3.0.0-pyhd8ed1ab_0.tar.bz2#0f7cac11bb696b62d378bde725bfc3eb https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.4-ha5833f6_2.tar.bz2#dd3aa6715b9e9efaf842febf18ce4261 -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py310h29803b5_1.tar.bz2#d34f0b4c9ad5705d0ffe501d5d8aa26f +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.7-py310h29803b5_0.tar.bz2#b5fb5328cae86d0b1591fc4894e68238 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.10-pyhd8ed1ab_0.tar.bz2#14f22c5b9cfd0d93c2806faaa3fe6dec https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py310hff52083_0.tar.bz2#0b90a9f77544f943264d47677d63ac9e -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml index 3dd084529b31e..99fc3ad9e8f2a 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_linux-64_environment.yml @@ -19,5 +19,5 @@ dependencies: - pillow - codecov - pytest-cov - - coverage=6.2 + - coverage - ccache diff --git a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock index b95b1f2079c5a..b104b7ab02a16 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock +++ b/build_tools/azure/pylatest_conda_forge_mkl_no_coverage_linux-64_conda.lock @@ -23,7 +23,7 @@ https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-69.1-h9c3ff4c_0.tar.bz2#e0773c9556d588b062a4e1424a6a02fa -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c @@ -35,12 +35,12 @@ https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.0-h7f98852_0.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.4-h7f98852_1.tar.bz2#6e8cc2173440d77708196c5b93771680 https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2#15345e56d527b330e1cacbdf58676e8f https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.5-h166bdaf_0.tar.bz2#f158304d1e469c37e9ffdbe796305571 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/tbb-2021.5.0-h924138e_1.tar.bz2#6d0aabe2be9d714b1f4ce57514d05b4d @@ -59,27 +59,27 @@ https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.ta https://conda.anaconda.org/conda-forge/linux-64/mysql-common-8.0.29-h26416b9_1.tar.bz2#eb0ab80f8c0e15febcd644c43d1386ba https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h08a2579_0.tar.bz2#d25e05e7ee0e302b52d24491db4891eb https://conda.anaconda.org/conda-forge/linux-64/libclang-13.0.1-default_hc23dcda_0.tar.bz2#8cebb0736cba83485b13dc10d242d96d -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.72.1-h2d90d5f_0.tar.bz2#ebeadbb5fbc44052eeb6f96a2136e3c2 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.12-h885dcf4_1.tar.bz2#d1355eaa48f465782f228275a0a69771 https://conda.anaconda.org/conda-forge/linux-64/mkl-2022.1.0-h84fe81f_915.tar.bz2#b9c8f925797a93dbff45e1626b025a6b https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-hbc51c84_1.tar.bz2#823fca0470a61bb35c89c605adc96af5 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#ecfff944ba3960ecb334b9a2663d708d https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.72.1-h6239696_0.tar.bz2#a3a99cc33279091262bbc4f5ee7c4571 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-15_linux64_mkl.tar.bz2#1ffa5033a4fa691d679dabca44bb60f4 https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-he2d8382_0.tar.bz2#73038d5278e922bb655235ee18545ced -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_0.tar.bz2#96e218d06394a4e4d77028cf70162a09 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/mkl-devel-2022.1.0-ha770c72_916.tar.bz2#69ba49e445f87aea2cba343a71a35ca2 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc @@ -89,7 +89,7 @@ https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.72.1-h6239696_0.tar.bz2#1698b7684d3c6a4d1de2ab946f5b0fb5 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_mkl.tar.bz2#98a0dc4760b53d7d7ae24e232b4a1e44 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_mkl.tar.bz2#8803915f72ba0742c4f4c86ab02e67d1 @@ -104,19 +104,19 @@ https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5 https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py310hff52083_0.tar.bz2#a5087d46181f812a662fbe20352961ee https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py310hd8f1fbe_0.tar.bz2#1b9afbc3fabae40f4664d5390681da0a https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py310hbf28c38_0.tar.bz2#93b57192dd2e93b6d5ed00be96e8ae55 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py310hbf28c38_0.tar.bz2#8dc3e2dce8fa122f8df4f3739d1f771b https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_mkl.tar.bz2#ed59083832eb21f831ad847419a53855 -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py310h53a5b5f_0.tar.bz2#16493af3907dbd772904e15bf24948d8 +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py310h53a5b5f_0.tar.bz2#9b86a46d908354fe7f91da24f5ea3f36 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py310he619898_1.tar.bz2#d7052b5cef119518ca362a2ff633a36d +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py310he619898_0.tar.bz2#5808b13c720854aaa3307c6e04cc1505 https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py310hff52083_3.tar.bz2#97f9a22577338f91a94dfac5c1a65a50 https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-4.19.18-py310h122e73d_8.tar.bz2#376d9895377aca761cdcded975211d39 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py310hff52083_0.tar.bz2#7fc5b1d6db9f6a9307330303a3edb04d -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py310h5764c6d_3.tar.bz2#8a5770e6392d29d99c9bc9c3635bba60 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-63.2.0-py310hff52083_0.tar.bz2#9a7c1d5f93e2b153d5b0b4930f8b6b66 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py310h5764c6d_0.tar.bz2#c42dcb37acd84b3ca197f03f57ef927d https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py310h5764c6d_1.tar.bz2#791689ce9e578e2e83b635974af61743 https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_mkl.tar.bz2#bf390b2b17bf22decf8bd7c1ad905fac -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py310h5764c6d_0.tar.bz2#b2171665e9cd3ba4114d90b8da6815c8 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.34.4-py310h5764c6d_0.tar.bz2#c965e9e47e42b19d26994e848d2a40e6 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.2-hcf0ee16_0.tar.bz2#79d7fca692d224dc29a72bda90f78a7b https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py310h769672d_0.tar.bz2#e48c810453df0f03bb8fcdff5e1d9e9d 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 c4fb6e56a84eb..94ad3f57a74fc 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 @@ -1,19 +1,19 @@ # Generated by conda-lock. # platform: osx-64 -# input_hash: 124a7dac0edb63e994220b2ef3792fdff0ef02db5046de94437ca0fb2f0f4bb8 +# input_hash: d828c3b0c630cc7d9041a8cd41cfe47a33914b1928ecdd4e440ee35fbc286c94 @EXPLICIT https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h0d85af4_4.tar.bz2#37edc4e6304ca87316e160f5ca0bd1b5 https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2022.6.15-h033912b_0.tar.bz2#d16674f96e47de0d08af3fc97803134e https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.1-hbcb3906_2.tar.bz2#be8f747c37e4d7e346c133e641966750 -https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-h5eb16cf_1.tar.bz2#9d52137dd3f98b32dee941642901d08f +https://conda.anaconda.org/conda-forge/osx-64/jpeg-9e-hac89ed1_2.tar.bz2#60d90a3f5803660c5c2a2e9d883df0a6 https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.0.9-h5eb16cf_7.tar.bz2#898a296a93b36e42a065963bb4504f2b -https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.5-hce7ea42_1.tar.bz2#563442fea31753e46dd74aca8688abd6 +https://conda.anaconda.org/conda-forge/osx-64/libcxx-14.0.6-hce7ea42_0.tar.bz2#ac504a8074ae8add8b837a93d7bc33ca https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.12-hac89ed1_0.tar.bz2#3e2e03ff8bcdd49315541a80e4e9023d 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-9.3.0-h6c81a4c_23.tar.bz2#d66ac79367c179bf53520066430565e8 https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.16-haf1e3a3_0.tar.bz2#c5fab167412a52e491c8e11453ae016f https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.2.2-h0d85af4_1.tar.bz2#052369eda6e13f44b308407c99857f84 -https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.12-hfe4f2af_1.tar.bz2#f7d43cae08c86f73be8cbda4f8e43373 +https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.2.12-hfe4f2af_2.tar.bz2#1d676bbaa2599f22121dd5bbea455c2e https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-14.0.4-ha654fa7_0.tar.bz2#5d5ab9ab83ce21422be84ecfd3142201 https://conda.anaconda.org/conda-forge/osx-64/mkl-include-2022.1.0-h6bab518_928.tar.bz2#67f8511a5eaf693a202486f74035b3f7 https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.3-h96cf925_1.tar.bz2#76217ebfbb163ff2770a261f955a5861 @@ -31,22 +31,22 @@ https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-9.3.0-h6c81a4c_23.tar https://conda.anaconda.org/conda-forge/osx-64/libllvm13-13.0.1-h64f94b2_2.tar.bz2#bac1c6f12f44f40e19274e6e04e9bad5 https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.13-h0d85af4_1004.tar.bz2#eb7860935e14aec936065cbc21a1a962 https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.3-he49afe7_1.tar.bz2#05c08241b66631c00ca4f9e0b75320bc -https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1p-hfe4f2af_0.tar.bz2#5c2c7facfe400144b608e714bf44bc47 +https://conda.anaconda.org/conda-forge/osx-64/openssl-1.1.1q-hfe4f2af_0.tar.bz2#ce822517fb00e8bafea6fe77d07f20bd https://conda.anaconda.org/conda-forge/osx-64/readline-8.1.2-h3899abd_0.tar.bz2#89fa404901fa8fb7d4f4e07083b8d635 https://conda.anaconda.org/conda-forge/osx-64/tapi-1100.0.11-h9ce4665_0.tar.bz2#f9ff42ccf809a21ba6f8607f8de36108 https://conda.anaconda.org/conda-forge/osx-64/tbb-2021.5.0-hbb4e6a2_1.tar.bz2#b83feb61bdbc393ba05a1b7626c4fcf0 https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.12-h5dbffcc_0.tar.bz2#8e9480d9c47061db2ed1b4ecce519a7f -https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.12-hfe4f2af_1.tar.bz2#12fdf8350ef315e7ad48693346067405 +https://conda.anaconda.org/conda-forge/osx-64/zlib-1.2.12-hfe4f2af_2.tar.bz2#fe7ebd3b35b8f26f6a7d0af481a21721 https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.0.9-h5eb16cf_7.tar.bz2#6ae0a8419a03d0d9675f319bef66d3aa https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp13-13.0.1-default_he082bbe_0.tar.bz2#88cccadb3e9824f6859e605ad64c526c https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-9_3_0_h6c81a4c_23.tar.bz2#60f48cef2d50674e0428c5579b6c3f66 -https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h7cec526_2.tar.bz2#9e52521faba2b53269672628d34e1513 +https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.37-h5a3d3bf_3.tar.bz2#bb43320880baa655d8837477fd18807b https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-13.0.1-h64f94b2_2.tar.bz2#38b9526e6cc69b7e0a358771ddb02874 https://conda.anaconda.org/conda-forge/osx-64/mkl-2022.1.0-h860c996_928.tar.bz2#98a4d58de0ba6e61ce46620b775c19ce https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.1.0-h0f52abe_1.tar.bz2#afe26b08c2d2265b4d663d199000e5da https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h57ddcff_0.tar.bz2#e0dcb354df4ad4f79539d57e4f8ec1bd -https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.38.5-hd9f0692_0.tar.bz2#258c39c5e2eff8b8b29d1a027e4e1b5a -https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-ha9df2e0_1.tar.bz2#8817fcb007cba0011181150378f6baf0 +https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.39.1-hd9f0692_0.tar.bz2#add14b880512697bba36cb71a3d26c8b +https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.2-ha9df2e0_2.tar.bz2#6e5b0ab35f8e4c407c3d2f25b51bc274 https://conda.anaconda.org/conda-forge/osx-64/brotli-1.0.9-h5eb16cf_7.tar.bz2#d3320319f06d6adb52ed01e1839475a1 https://conda.anaconda.org/conda-forge/osx-64/clang-13-13.0.1-default_he082bbe_0.tar.bz2#ffb3d690ddae0b4f601fb937187e38e1 https://conda.anaconda.org/conda-forge/osx-64/freetype-2.10.4-h4cff582_1.tar.bz2#5a136a432c6062362cd7990c514bd8d6 @@ -60,7 +60,7 @@ https://conda.anaconda.org/conda-forge/osx-64/python-3.10.5-hdaaf3db_0_cpython.t https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d https://conda.anaconda.org/conda-forge/osx-64/ccache-4.6-h8580cb5_0.tar.bz2#fa11b3db27aec2910b317f8c06f5eed0 https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-973.0.1-h3eff9a4_10.tar.bz2#a7552b2de2f52bbf8b726d982507b1ef -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/osx-64/clang-13.0.1-h694c41f_0.tar.bz2#d11f9dc9b90ae4b55f501bdf2784d3c0 https://conda.anaconda.org/conda-forge/noarch/cycler-0.11.0-pyhd8ed1ab_0.tar.bz2#a50559fad0affdbb33729a68669ca1cb https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2#0e521f7a5e60d508b121d38b04874fb2 @@ -85,26 +85,26 @@ https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/osx-64/cctools-973.0.1-h351d84c_10.tar.bz2#4c238f9fccbac5beaf219d59a59b7f10 https://conda.anaconda.org/conda-forge/osx-64/certifi-2022.6.15-py310h2ec42d9_0.tar.bz2#7f60b1d9d5844975ca9794ce9bde7999 -https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.0-py310hcc37b68_0.tar.bz2#bca69dbd12cea5ae0dc298fc58a3c4ee +https://conda.anaconda.org/conda-forge/osx-64/cffi-1.15.1-py310h96bbf6e_0.tar.bz2#7247d0e5dc3dc1adb94de8353478a015 https://conda.anaconda.org/conda-forge/osx-64/clangxx-13.0.1-default_he082bbe_0.tar.bz2#2c7017821fa3d741405ab4c4da24ff54 -https://conda.anaconda.org/conda-forge/osx-64/coverage-6.2-py310he24745e_0.tar.bz2#a715a002d748aa32fe3ce650886061e3 +https://conda.anaconda.org/conda-forge/osx-64/coverage-6.4.2-py310h6c45266_0.tar.bz2#7d837797dea29c9e6a479a98d81e9543 https://conda.anaconda.org/conda-forge/osx-64/cython-0.29.30-py310hd4537e4_0.tar.bz2#1dbaaf42d2bb8289b3b03f4d20a189ba -https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.3-py310habb735a_0.tar.bz2#fc24dd7e892f7d326d83a0cb4af1645c +https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.4-py310habb735a_0.tar.bz2#33747e51e7dd3a9423b66c2a4012fe7c https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.9.0-15_osx64_mkl.tar.bz2#6af691dd2f3d7a45a84a5ff43c33e9d3 -https://conda.anaconda.org/conda-forge/osx-64/numpy-1.23.0-py310ha3f357c_0.tar.bz2#4b1472cd82d9f5cd29c5703dcd715f06 +https://conda.anaconda.org/conda-forge/osx-64/numpy-1.23.1-py310ha3f357c_0.tar.bz2#68fbd55712a1abb9cb416d38db848df6 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/osx-64/pillow-9.1.1-py310hb3240ae_1.tar.bz2#ebc4aed6b99f4f789281dd0b0729391f +https://conda.anaconda.org/conda-forge/osx-64/pillow-9.2.0-py310hb3240ae_0.tar.bz2#19342596ed0e3d4d6d604e8819e9392e https://conda.anaconda.org/conda-forge/osx-64/pluggy-1.0.0-py310h2ec42d9_3.tar.bz2#b2349ab9b4c83ae573a6985f728e5f37 https://conda.anaconda.org/conda-forge/osx-64/pysocks-1.7.1-py310h2ec42d9_5.tar.bz2#8b7a82347d1ed70878126333339f4969 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/osx-64/setuptools-62.6.0-py310h2ec42d9_0.tar.bz2#e2a5d2590767628cc44864a6be4eba89 -https://conda.anaconda.org/conda-forge/osx-64/tornado-6.1-py310h1961e1f_3.tar.bz2#84d43324014a93910f008ada676ca542 +https://conda.anaconda.org/conda-forge/osx-64/setuptools-63.2.0-py310h2ec42d9_0.tar.bz2#bd56557297d0dc79853846eed9a69117 +https://conda.anaconda.org/conda-forge/osx-64/tornado-6.2-py310h6c45266_0.tar.bz2#854dc3c0c268f571429b0ca93d318880 https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-14.0.0-py310h1961e1f_1.tar.bz2#3fe48797c02b3b467efd4d9bc53d1624 https://conda.anaconda.org/conda-forge/osx-64/blas-devel-3.9.0-15_osx64_mkl.tar.bz2#6b4ce97e5cd12e603ee4e8ec1ac23742 https://conda.anaconda.org/conda-forge/osx-64/brotlipy-0.7.0-py310h1961e1f_1004.tar.bz2#e84bd2f66966aa51356dfe14ef887e42 https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-13.0.1-hd3f61c9_0.tar.bz2#d744aae4a8e003c1fd2a1d3d757bd628 -https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.2-py310h52c3658_0.tar.bz2#d59b17f2f4c984ae052f05bc45ad7cea -https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.33.3-py310h6c45266_0.tar.bz2#71ce94a99d1efe13d3ded06770d07127 +https://conda.anaconda.org/conda-forge/osx-64/cryptography-37.0.4-py310h52c3658_0.tar.bz2#0dbc94ce0eedf8eae3aded71c5761ad3 +https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.34.4-py310h6c45266_0.tar.bz2#f7a44f9ec53d42a5d1f185d7e0522357 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/osx-64/pandas-1.4.3-py310h3099161_0.tar.bz2#872f475fc6ccf72790b8c076fade532b https://conda.anaconda.org/conda-forge/osx-64/pytest-7.1.2-py310h2ec42d9_0.tar.bz2#213fafaad4bdda317efc58119135876b @@ -119,11 +119,11 @@ https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.t https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-13.0.1-h71a8856_2.tar.bz2#420caff571651bd620a1bae84ee99cdf https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.5.2-py310h2ec42d9_0.tar.bz2#55c15bc829a216804a0fe2aabe9294e6 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.10-pyhd8ed1ab_0.tar.bz2#14f22c5b9cfd0d93c2806faaa3fe6dec https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.4.2-had99412_0.tar.bz2#2e89dc235b304e25307378efec943f50 https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-13.0.1-heae0f87_2.tar.bz2#169caaf4aaab4e07dc697421329b7a73 https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-9.3.0-h18f7dce_15.tar.bz2#48f985e599ff223cd8acea3595d2cbe5 -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a https://conda.anaconda.org/conda-forge/noarch/codecov-2.1.11-pyhd3deb0d_0.tar.bz2#9c661c2c14b4667827218402e6624ad5 https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.4.2-h1b54a9f_0.tar.bz2#7a72e1003218550251de458140635999 https://conda.anaconda.org/conda-forge/osx-64/gfortran-9.3.0-h768ea0c_15.tar.bz2#de56b2cd45db24c02bcc0463643e03a6 diff --git a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml index 95dbb89e5825c..07f09e1e8e5cf 100644 --- a/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml +++ b/build_tools/azure/pylatest_conda_forge_mkl_osx-64_environment.yml @@ -19,7 +19,7 @@ dependencies: - pillow - codecov - pytest-cov - - coverage=6.2 + - coverage - ccache - compilers - llvm-openmp 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 16b62dcc44199..35e4321bb6f4d 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 @@ -10,7 +10,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/jpeg-9e-hca72f7f_0.conda#99b7d820514a https://repo.anaconda.com/pkgs/main/osx-64/libcxx-12.0.0-h2f01273_0.conda#fa697ecaca74bdf72bd0a10e42a2287a https://repo.anaconda.com/pkgs/main/osx-64/libgfortran-3.0.1-h93005f0_2.conda#2f6d6d3c7a46ff214a5a1a8991af9bef https://repo.anaconda.com/pkgs/main/osx-64/libwebp-base-1.2.2-hca72f7f_0.conda#029b8fce196d53c93af17512f6f606d8 -https://repo.anaconda.com/pkgs/main/osx-64/ncurses-6.3-hca72f7f_2.conda#32896581ee96215797b753884720e581 +https://repo.anaconda.com/pkgs/main/osx-64/ncurses-6.3-hca72f7f_3.conda#dba236b91a8c0ef6ddecc56e387e92d2 https://repo.anaconda.com/pkgs/main/noarch/tzdata-2022a-hda174b7_0.conda#e8fd073330b1083fcd3bc2634722f1a6 https://repo.anaconda.com/pkgs/main/osx-64/xz-5.2.5-hca72f7f_1.conda#bb093b4af8f53670468795e5f12676e5 https://repo.anaconda.com/pkgs/main/osx-64/zlib-1.2.12-h4dc903c_2.conda#4264c14bdd0bd302b0232cb65f3ee275 @@ -20,7 +20,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/libffi-3.3-hb1e8313_2.conda#0c959d444 https://repo.anaconda.com/pkgs/main/osx-64/libpng-1.6.37-ha441bb4_0.conda#d69245a20ec59d8dc534c65308607129 https://repo.anaconda.com/pkgs/main/osx-64/lz4-c-1.9.3-h23ab428_1.conda#dc70fec3978d3189741886cc05fcb145 https://repo.anaconda.com/pkgs/main/osx-64/mkl-2021.4.0-hecd8cb5_637.conda#07d14ece4a852cefa17c1c156db8134e -https://repo.anaconda.com/pkgs/main/osx-64/openssl-1.1.1o-hca72f7f_0.conda#2b44a8f7a0051ffbc4814e9f99114222 +https://repo.anaconda.com/pkgs/main/osx-64/openssl-1.1.1q-hca72f7f_0.conda#7103facc03bce257ae92b9c0981906fd https://repo.anaconda.com/pkgs/main/osx-64/readline-8.1.2-hca72f7f_1.conda#c54a6153e7ef82f55e7a0ae2f6749592 https://repo.anaconda.com/pkgs/main/osx-64/tk-8.6.12-h5d9f67b_0.conda#047f0af5486d19163e37fd7f8ae3d29f https://repo.anaconda.com/pkgs/main/osx-64/freetype-2.11.0-hd8bbffd_0.conda#a06dcb72dc6961d37f280b4b97d74f43 @@ -33,7 +33,7 @@ https://repo.anaconda.com/pkgs/main/osx-64/certifi-2022.6.15-py39hecd8cb5_0.cond https://repo.anaconda.com/pkgs/main/noarch/charset-normalizer-2.0.4-pyhd3eb1b0_0.conda#e7a441d94234b2b5fafee06e25dbf076 https://repo.anaconda.com/pkgs/main/osx-64/coverage-6.2-py39hca72f7f_0.conda#55962a70ebebc8de15c4e1d745b20cdd https://repo.anaconda.com/pkgs/main/noarch/cycler-0.11.0-pyhd3eb1b0_0.conda#f5e365d2cdb66d547eb8c3ab93843aab -https://repo.anaconda.com/pkgs/main/osx-64/cython-0.29.28-py39he9d5cce_0.conda#ebbe0186b64db68fa2625b75ebd825b1 +https://repo.anaconda.com/pkgs/main/osx-64/cython-0.29.30-py39he9d5cce_0.conda#86142f3909fa8984ade817f086d45493 https://repo.anaconda.com/pkgs/main/noarch/execnet-1.9.0-pyhd3eb1b0_0.conda#f895937671af67cebb8af617494b3513 https://repo.anaconda.com/pkgs/main/noarch/idna-3.3-pyhd3eb1b0_0.conda#8f43a528cf83b43af38a4d142fa38b8a https://repo.anaconda.com/pkgs/main/noarch/iniconfig-1.1.1-pyhd3eb1b0_0.tar.bz2#e40edff2c5708f342cef43c7f280c507 @@ -51,13 +51,13 @@ https://repo.anaconda.com/pkgs/main/osx-64/pytz-2022.1-py39hecd8cb5_0.conda#a4ca https://repo.anaconda.com/pkgs/main/noarch/six-1.16.0-pyhd3eb1b0_1.conda#34586824d411d36af2fa40e799c172d0 https://repo.anaconda.com/pkgs/main/noarch/threadpoolctl-2.2.0-pyh0d69192_0.conda#bbfdbae4934150b902f97daaf287efe2 https://repo.anaconda.com/pkgs/main/noarch/toml-0.10.2-pyhd3eb1b0_0.conda#cda05f5f6d8509529d1a2743288d197a -https://repo.anaconda.com/pkgs/main/noarch/tomli-1.2.2-pyhd3eb1b0_0.conda#8fa7bbbcaeed916ec190614d21b7a9ce +https://repo.anaconda.com/pkgs/main/osx-64/tomli-2.0.1-py39hecd8cb5_0.conda#49318006e63c8628ce0a1e2e1433d30d https://repo.anaconda.com/pkgs/main/osx-64/tornado-6.1-py39h9ed2024_0.conda#3d060362ebceec33851e3b9369d5d502 https://repo.anaconda.com/pkgs/main/osx-64/cffi-1.15.0-py39hc55c11b_1.conda#eecfc04a444eaefdf128199499b2c2e0 https://repo.anaconda.com/pkgs/main/noarch/fonttools-4.25.0-pyhd3eb1b0_0.conda#bb9c5b5a6d892fca5efe4bf0203b6a48 https://repo.anaconda.com/pkgs/main/osx-64/mkl-service-2.4.0-py39h9ed2024_0.conda#68ed4da109042256b78f9c46537bd2a3 https://repo.anaconda.com/pkgs/main/noarch/packaging-21.3-pyhd3eb1b0_0.conda#07bbfbb961db7fa329cc42716943ea62 -https://repo.anaconda.com/pkgs/main/osx-64/pillow-9.0.1-py39hde71d04_0.conda#f7246dddf696bc3fb0c953f62425c3d5 +https://repo.anaconda.com/pkgs/main/osx-64/pillow-9.2.0-py39hde71d04_1.conda#ecd1fdbc77659c3bf4c056e0f8e703c7 https://repo.anaconda.com/pkgs/main/noarch/python-dateutil-2.8.2-pyhd3eb1b0_0.conda#211ee00320b08a1ac9fea6677649f6c9 https://repo.anaconda.com/pkgs/main/osx-64/setuptools-61.2.0-py39hecd8cb5_0.conda#e262d518e990f236ada779f23d58ed18 https://repo.anaconda.com/pkgs/main/osx-64/brotlipy-0.7.0-py39h9ed2024_1003.conda#a08f6f5f899aff4a07351217b36fae41 @@ -69,15 +69,15 @@ https://repo.anaconda.com/pkgs/main/noarch/pytest-cov-3.0.0-pyhd3eb1b0_0.conda#b https://repo.anaconda.com/pkgs/main/noarch/pytest-forked-1.3.0-pyhd3eb1b0_0.tar.bz2#07970bffdc78f417d7f8f1c7e620f5c4 https://repo.anaconda.com/pkgs/main/noarch/pytest-xdist-2.5.0-pyhd3eb1b0_0.conda#d15cdc4207bcf8ca920822597f1d138d https://repo.anaconda.com/pkgs/main/osx-64/urllib3-1.26.9-py39hecd8cb5_0.conda#7dab8b6edc90f7dc6e83e0c3d9c69432 -https://repo.anaconda.com/pkgs/main/noarch/requests-2.27.1-pyhd3eb1b0_0.conda#9b593f86737e69140c47c2107ecf277c +https://repo.anaconda.com/pkgs/main/osx-64/requests-2.28.1-py39hecd8cb5_0.conda#c2a59bb72db0abd039ce447be18c139d https://repo.anaconda.com/pkgs/main/noarch/codecov-2.1.11-pyhd3eb1b0_0.conda#83a743cc928162d53d4066c43468b2c7 -https://repo.anaconda.com/pkgs/main/osx-64/bottleneck-1.3.4-py39h67323c0_0.conda#8da674eeda1069663e69f0b112232ffb +https://repo.anaconda.com/pkgs/main/osx-64/bottleneck-1.3.5-py39h67323c0_0.conda#312133560b81ec1a2aaf95835e90b5e9 https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-3.5.1-py39hecd8cb5_1.conda#7a58b76a491c78d0be87c83f63a36d02 https://repo.anaconda.com/pkgs/main/osx-64/matplotlib-base-3.5.1-py39hfb0c5b7_1.conda#999c6f2f8542a0dd322f97c94de45a63 https://repo.anaconda.com/pkgs/main/osx-64/mkl_fft-1.3.1-py39h4ab4a9b_0.conda#f947c9a1c65da729963b3035c219ba10 https://repo.anaconda.com/pkgs/main/osx-64/mkl_random-1.2.2-py39hb2f4e1b_0.conda#1bc33de45069ad534182ca92e616ec7e https://repo.anaconda.com/pkgs/main/osx-64/numpy-1.22.3-py39h2e5f0a9_0.conda#16892a18dae1fb1522845e4b6005b436 -https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.1-py39h2e5f0a9_2.conda#3eed95a5b58657f9266c74abb271923e +https://repo.anaconda.com/pkgs/main/osx-64/numexpr-2.8.3-py39h2e5f0a9_0.conda#db012a622b75c38fe4c5c5bd54cc7f40 https://repo.anaconda.com/pkgs/main/osx-64/scipy-1.7.3-py39h8c7af03_0.conda#de2900b6122e1417d2f79f0266f700e9 -https://repo.anaconda.com/pkgs/main/osx-64/pandas-1.4.2-py39he9d5cce_0.conda#9513b1735fc6feabfb647c545a5be53a +https://repo.anaconda.com/pkgs/main/osx-64/pandas-1.4.3-py39he9d5cce_0.conda#ac483cb22652d8a5f49b6c071fdc1105 https://repo.anaconda.com/pkgs/main/osx-64/pyamg-4.1.0-py39h1341a74_0.conda#9c560e676ee6f9f26b05f94ffda599d8 diff --git a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml index 593ff851c1522..6f60df122f055 100644 --- a/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml +++ b/build_tools/azure/pylatest_pip_openblas_pandas_environment.yml @@ -21,7 +21,7 @@ dependencies: - pillow - codecov - pytest-cov - - coverage==6.2 + - coverage - sphinx - numpydoc - lightgbm 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 34cc69b3f8691..71faa90614e0b 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 @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 34a05f84990bb8f6bb5f1c16cac38217a072270d62250a1ad739e32a6c006aef +# input_hash: 80859cd05957ccd2ad01ce780429934030ee920cb6fbea7c58d2aecd044682c7 @EXPLICIT https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 @@ -11,8 +11,8 @@ https://repo.anaconda.com/pkgs/main/linux-64/libgomp-11.2.0-h1234567_1.conda#b37 https://repo.anaconda.com/pkgs/main/linux-64/_openmp_mutex-5.1-1_gnu.conda#71d281e9c2192cb3fa425655a8defb85 https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_1.conda#a87728dabf3151fb9cfa990bd2eb0464 https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c -https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 -https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h5eee18b_3.conda#0c616f387885c1bbb57ec0bd1e779ced +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1q-h7f8727e_0.conda#2ac47797afee2ece8d339c18b095b8d8 https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e @@ -23,24 +23,24 @@ https://repo.anaconda.com/pkgs/main/linux-64/python-3.9.12-h12debd9_1.conda#8fdb https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py39h06a4308_0.conda#2f715a68f1be9125f5c8f0425ea6eb30 https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py39h06a4308_0.conda#720869dc83cf20f2167fb12e7a54ebaa -https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74bcf27ebb94020ea1c838279382cadf +https://repo.anaconda.com/pkgs/main/linux-64/pip-22.1.2-py39h06a4308_0.conda#4485e29fb8b9be5ca1a7690c1dcec9e3 # pip alabaster @ https://files.pythonhosted.org/packages/10/ad/00b090d23a222943eb0eda509720a404f531a439e803f6538f35136cae9e/alabaster-0.7.12-py2.py3-none-any.whl#md5=None # pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None -# pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None +# pip charset-normalizer @ https://files.pythonhosted.org/packages/94/69/64b11e8c2fb21f08634468caef885112e682b0ebe2908e74d3616eb1c113/charset_normalizer-2.1.0-py3-none-any.whl#md5=None # pip cycler @ https://files.pythonhosted.org/packages/5c/f9/695d6bedebd747e5eb0fe8fad57b72fdf25411273a39791cde838d5a8f51/cycler-0.11.0-py3-none-any.whl#md5=None # pip cython @ https://files.pythonhosted.org/packages/a7/c6/3af0df983ba8500831fdae19a515be6e532da7683ab98e031d803e6a8d03/Cython-0.29.30-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl#md5=None # pip docutils @ https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl#md5=None # pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None -# pip fonttools @ https://files.pythonhosted.org/packages/2f/85/2f6e42fb4b537b9998835410578fb1973175b81691e9a82ab6668cf64b0b/fonttools-4.33.3-py3-none-any.whl#md5=None +# pip fonttools @ https://files.pythonhosted.org/packages/ad/27/094dd5d09d3a57f7a5f27414ae5c1405bae1164922f1bb61fd8a748e8f65/fonttools-4.34.4-py3-none-any.whl#md5=None # pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None -# pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None +# pip imagesize @ https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl#md5=None # pip iniconfig @ https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl#md5=None # pip joblib @ https://files.pythonhosted.org/packages/3e/d5/0163eb0cfa0b673aa4fe1cd3ea9d8a81ea0f32e50807b0c295871e4aab2e/joblib-1.1.0-py2.py3-none-any.whl#md5=None -# pip kiwisolver @ https://files.pythonhosted.org/packages/9a/83/26180a222333fc90ee931be4ab13a3492d3c3cfce6754e705de973ee1050/kiwisolver-1.4.3-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip kiwisolver @ https://files.pythonhosted.org/packages/a4/36/c414d75be311ce97ef7248edcc4fc05afae2998641bf6b592d43a9dee581/kiwisolver-1.4.4-cp39-cp39-manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None # pip markupsafe @ https://files.pythonhosted.org/packages/df/06/c515c5bc43b90462e753bc768e6798193c6520c9c7eb2054c7466779a9db/MarkupSafe-2.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip networkx @ https://files.pythonhosted.org/packages/34/71/1d6f7aaefa2fb38ea8c13dc47f3e2a32c4dc78f6229086ed90947fc49d3c/networkx-2.8.4-py3-none-any.whl#md5=None -# pip numpy @ https://files.pythonhosted.org/packages/da/0e/496e529f440f528273f6847e14d7b132b0556a824fc2af36e8afd8e6a020/numpy-1.23.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip pillow @ https://files.pythonhosted.org/packages/59/d0/eb666c55b685419103023f62519dbc968a008e268ec243c56f3214f1da45/Pillow-9.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip networkx @ https://files.pythonhosted.org/packages/95/1b/14b5b17c52f7329b875e4ad2dcad23c808778b42ef6d250a7223d4dc378a/networkx-2.8.5-py3-none-any.whl#md5=None +# pip numpy @ https://files.pythonhosted.org/packages/8d/d6/cc2330e512936a904a4db1629b71d697fb309115f6d2ede94d183cdfe185/numpy-1.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip pillow @ https://files.pythonhosted.org/packages/c1/d2/169e77ffa99a04f6837ff860b022fa1ea925e698e1c544c58268c8fd2afe/Pillow-9.2.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None # pip py @ https://files.pythonhosted.org/packages/f6/f0/10642828a8dfb741e5f3fbaac830550a518a775c7fff6f04a007259b0548/py-1.11.0-py2.py3-none-any.whl#md5=None # pip pygments @ https://files.pythonhosted.org/packages/5c/8e/1d9017950034297fffa336c72e693a5b51bbf85141b24a763882cf1977b5/Pygments-2.12.0-py3-none-any.whl#md5=None @@ -56,18 +56,18 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None -# pip typing-extensions @ https://files.pythonhosted.org/packages/75/e1/932e06004039dd670c9d5e1df0cd606bf46e29a28e65d5bb28e894ea29c9/typing_extensions-4.2.0-py3-none-any.whl#md5=None -# pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None -# pip zipp @ https://files.pythonhosted.org/packages/80/0e/16a7ee38617aab6a624e95948d314097cc2669edae9b02ded53309941cfc/zipp-3.8.0-py3-none-any.whl#md5=None +# pip typing-extensions @ https://files.pythonhosted.org/packages/ed/d6/2afc375a8d55b8be879d6b4986d4f69f01115e795e36827fd3a40166028b/typing_extensions-4.3.0-py3-none-any.whl#md5=None +# pip urllib3 @ https://files.pythonhosted.org/packages/68/47/93d3d28e97c7577f563903907912f4b3804054e4877a5ba6651f7182c53b/urllib3-1.26.10-py2.py3-none-any.whl#md5=None +# pip zipp @ https://files.pythonhosted.org/packages/f0/36/639d6742bcc3ffdce8b85c31d79fcfae7bb04b95f0e5c4c6f8b206a038cc/zipp-3.8.1-py3-none-any.whl#md5=None # pip babel @ https://files.pythonhosted.org/packages/2e/57/a4177e24f8ed700c037e1eca7620097fdfbb1c9b358601e40169adf6d364/Babel-2.10.3-py3-none-any.whl#md5=None -# pip coverage @ https://files.pythonhosted.org/packages/d2/41/87d1e548a0418b24cff9c60815ea2cc2d0e0cd4891337a24236a30a1d141/coverage-6.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None -# pip imageio @ https://files.pythonhosted.org/packages/b6/78/3cf2f60ef319d253d71870c6cb00774bfc5bdccf9e06c319678388f58f41/imageio-2.19.3-py3-none-any.whl#md5=None +# pip coverage @ https://files.pythonhosted.org/packages/f6/73/cb9a3c2d8de315bb9f5fbbcaecd1cea2cacaf530885159159ec2d9c7757e/coverage-6.4.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None +# pip imageio @ https://files.pythonhosted.org/packages/9a/65/e566d02fffd9dec9a111cc0fb5c74e9a29bc50029db57b88b82fbd900d3a/imageio-2.19.5-py3-none-any.whl#md5=None # pip importlib-metadata @ https://files.pythonhosted.org/packages/d2/a2/8c239dc898138f208dd14b441b196e7b3032b94d3137d9d8453e186967fc/importlib_metadata-4.12.0-py3-none-any.whl#md5=None # pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None # pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None # pip pywavelets @ https://files.pythonhosted.org/packages/45/fd/1ad6a2c2b9f16d684c8a21e92455885891b38c703b39f13916971e9ee8ff/PyWavelets-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip requests @ https://files.pythonhosted.org/packages/41/5b/2209eba8133fc081d3ffff02e1f6376e3117e52bb16f674721a83e67e68e/requests-2.28.0-py3-none-any.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/ca/91/6d9b8ccacd0412c08820f72cebaa4f0c0441b5cda699c90f618b6f8a1b42/requests-2.28.1-py3-none-any.whl#md5=None # pip scipy @ https://files.pythonhosted.org/packages/25/82/da07cc3bb40554f1f82d7e24bfa7ffbfb05b50c16eb8d738ebb74b68af8f/scipy-1.8.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip tifffile @ https://files.pythonhosted.org/packages/19/b7/30d7af4c25985be3852dccd99f15a2003a81bc8f287d57704619fed006ec/tifffile-2022.5.4-py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None @@ -76,7 +76,7 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py39h06a4308_0.conda#74b # pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None # pip scikit-image @ https://files.pythonhosted.org/packages/0f/29/d157cd648b87212e498189c183a32f0f48e24fe22e9673dacd97594f39fa/scikit_image-0.19.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip scikit-learn @ https://files.pythonhosted.org/packages/62/cb/49d4c9d3505b0dd062f49c4f573995977876cc556c658caffcfcd9043ea8/scikit_learn-1.1.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None -# pip setuptools-scm @ https://files.pythonhosted.org/packages/1a/dd/b83708410d912a56e6aa1f78ac1135465eb6a5cfe494628ae24e7dc5922f/setuptools_scm-7.0.2-py3-none-any.whl#md5=None +# pip setuptools-scm @ https://files.pythonhosted.org/packages/01/ed/75a20e7b075e8ecb1f84e8debf833917905d8790b78008915bd68dddd5c4/setuptools_scm-7.0.5-py3-none-any.whl#md5=None # pip sphinx @ https://files.pythonhosted.org/packages/fd/a2/3139e82a7caa2fb6954d0e63db206cc60e0ad6c67ae61ef9cf87dc70ade1/Sphinx-5.0.2-py3-none-any.whl#md5=None # pip lightgbm @ https://files.pythonhosted.org/packages/a1/00/84c572ff02b27dd828d6095158f4bda576c124c4c863be7bf14f58101e53/lightgbm-3.3.2-py3-none-manylinux1_x86_64.whl#md5=None # pip matplotlib @ https://files.pythonhosted.org/packages/e1/81/0a73fe71098683a1f73243f18f419464ec109acae16811bf29c5d0dc173e/matplotlib-3.5.2-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl#md5=None diff --git a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml index 9545ce7e7fc32..ea0f11980471b 100644 --- a/build_tools/azure/pylatest_pip_scipy_dev_environment.yml +++ b/build_tools/azure/pylatest_pip_scipy_dev_environment.yml @@ -13,7 +13,7 @@ dependencies: - pytest-xdist - codecov - pytest-cov - - coverage==6.2 + - coverage - sphinx - numpydoc - python-dateutil 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 20fde1d5b61f0..b3186df55b542 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 @@ -1,6 +1,6 @@ # Generated by conda-lock. # platform: linux-64 -# input_hash: 485bb690e2fd8f11d2d70b00c47154e8374d37b6f3c3cb9cd84f5ec52deeabd5 +# input_hash: db3913f3589e63f4d927051206e496fa0d3ee21746928b690876fb60eeef8b64 @EXPLICIT https://repo.anaconda.com/pkgs/main/linux-64/_libgcc_mutex-0.1-main.conda#c3473ff8bdb3d124ed5ff11ec380d6f9 https://repo.anaconda.com/pkgs/main/linux-64/ca-certificates-2022.4.26-h06a4308_0.conda#fc9c0bf2e7893f5407ff74289dbcf295 @@ -13,8 +13,8 @@ https://repo.anaconda.com/pkgs/main/linux-64/libgcc-ng-11.2.0-h1234567_1.conda#a https://repo.anaconda.com/pkgs/main/linux-64/bzip2-1.0.8-h7b6447c_0.conda#9303f4af7c004e069bae22bde8d800ee https://repo.anaconda.com/pkgs/main/linux-64/libffi-3.3-he6710b0_2.conda#88a54b8f50e351c650e16f4ee781440c https://repo.anaconda.com/pkgs/main/linux-64/libuuid-1.0.3-h7f8727e_2.conda#6c4c9e96bfa4744d4839b9ed128e1114 -https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h7f8727e_2.conda#4edf660a09cc7adcb21120464b2a1783 -https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1o-h7f8727e_0.conda#dff07c1e2347fed6e5a3afbbcd5bddcc +https://repo.anaconda.com/pkgs/main/linux-64/ncurses-6.3-h5eee18b_3.conda#0c616f387885c1bbb57ec0bd1e779ced +https://repo.anaconda.com/pkgs/main/linux-64/openssl-1.1.1q-h7f8727e_0.conda#2ac47797afee2ece8d339c18b095b8d8 https://repo.anaconda.com/pkgs/main/linux-64/xz-5.2.5-h7f8727e_1.conda#5d01fcf310bf465237f6b95a019d73bc https://repo.anaconda.com/pkgs/main/linux-64/zlib-1.2.12-h7f8727e_2.conda#4f4080e9939f082332cd8be7fedad087 https://repo.anaconda.com/pkgs/main/linux-64/ccache-3.7.9-hfe4627d_0.conda#bef6fc681c273bb7bd0c67d1a591365e @@ -25,14 +25,14 @@ https://repo.anaconda.com/pkgs/main/linux-64/python-3.10.4-h12debd9_0.tar.bz2#f9 https://repo.anaconda.com/pkgs/main/linux-64/certifi-2022.6.15-py310h06a4308_0.conda#36486307238f598fbbbd575aeb741752 https://repo.anaconda.com/pkgs/main/noarch/wheel-0.37.1-pyhd3eb1b0_0.conda#ab85e96e26da8d5797c2458232338b86 https://repo.anaconda.com/pkgs/main/linux-64/setuptools-61.2.0-py310h06a4308_0.conda#1f43427d7c045e63786e0bb79084cf70 -https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4e2586f845008770fa152082c04b27c +https://repo.anaconda.com/pkgs/main/linux-64/pip-22.1.2-py310h06a4308_0.conda#44c964a18eaff5bd61d2ddd0a7a89a80 # pip alabaster @ https://files.pythonhosted.org/packages/10/ad/00b090d23a222943eb0eda509720a404f531a439e803f6538f35136cae9e/alabaster-0.7.12-py2.py3-none-any.whl#md5=None # pip attrs @ https://files.pythonhosted.org/packages/be/be/7abce643bfdf8ca01c48afa2ddf8308c2308b0c3b239a44e57d020afa0ef/attrs-21.4.0-py2.py3-none-any.whl#md5=None -# pip charset-normalizer @ https://files.pythonhosted.org/packages/06/b3/24afc8868eba069a7f03650ac750a778862dc34941a4bebeb58706715726/charset_normalizer-2.0.12-py3-none-any.whl#md5=None +# pip charset-normalizer @ https://files.pythonhosted.org/packages/94/69/64b11e8c2fb21f08634468caef885112e682b0ebe2908e74d3616eb1c113/charset_normalizer-2.1.0-py3-none-any.whl#md5=None # pip docutils @ https://files.pythonhosted.org/packages/8d/14/69b4bad34e3f250afe29a854da03acb6747711f3df06c359fa053fae4e76/docutils-0.18.1-py2.py3-none-any.whl#md5=None # pip execnet @ https://files.pythonhosted.org/packages/81/c0/3072ecc23f4c5e0a1af35e3a222855cfd9c80a1a105ca67be3b6172637dd/execnet-1.9.0-py2.py3-none-any.whl#md5=None # pip idna @ https://files.pythonhosted.org/packages/04/a2/d918dcd22354d8958fe113e1a3630137e0fc8b44859ade3063982eacd2a4/idna-3.3-py3-none-any.whl#md5=None -# pip imagesize @ https://files.pythonhosted.org/packages/60/d6/5e803b17f4d42e085c365b44fda34deb0d8675a1a910635930b831c43f07/imagesize-1.3.0-py2.py3-none-any.whl#md5=None +# pip imagesize @ https://files.pythonhosted.org/packages/ff/62/85c4c919272577931d407be5ba5d71c20f0b616d31a0befe0ae45bb79abd/imagesize-1.4.1-py2.py3-none-any.whl#md5=None # pip iniconfig @ https://files.pythonhosted.org/packages/9b/dd/b3c12c6d707058fa947864b67f0c4e0c39ef8610988d7baea9578f3c48f3/iniconfig-1.1.1-py2.py3-none-any.whl#md5=None # pip markupsafe @ https://files.pythonhosted.org/packages/9e/82/2e089c6f34e77c073aa5a67040d368aac0dfb9b8ccbb46d381452c26fc33/MarkupSafe-2.1.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip pluggy @ https://files.pythonhosted.org/packages/9e/01/f38e2ff29715251cf25532b9082a1589ab7e4f571ced434f98d0139336dc/pluggy-1.0.0-py2.py3-none-any.whl#md5=None @@ -50,13 +50,13 @@ https://repo.anaconda.com/pkgs/main/linux-64/pip-21.2.4-py310h06a4308_0.conda#e4 # pip sphinxcontrib-serializinghtml @ https://files.pythonhosted.org/packages/c6/77/5464ec50dd0f1c1037e3c93249b040c8fc8078fdda97530eeb02424b6eea/sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl#md5=None # pip threadpoolctl @ https://files.pythonhosted.org/packages/61/cf/6e354304bcb9c6413c4e02a747b600061c21d38ba51e7e544ac7bc66aecc/threadpoolctl-3.1.0-py3-none-any.whl#md5=None # pip tomli @ https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#md5=None -# pip urllib3 @ https://files.pythonhosted.org/packages/ec/03/062e6444ce4baf1eac17a6a0ebfe36bb1ad05e1df0e20b110de59c278498/urllib3-1.26.9-py2.py3-none-any.whl#md5=None +# pip urllib3 @ https://files.pythonhosted.org/packages/68/47/93d3d28e97c7577f563903907912f4b3804054e4877a5ba6651f7182c53b/urllib3-1.26.10-py2.py3-none-any.whl#md5=None # pip babel @ https://files.pythonhosted.org/packages/2e/57/a4177e24f8ed700c037e1eca7620097fdfbb1c9b358601e40169adf6d364/Babel-2.10.3-py3-none-any.whl#md5=None -# pip coverage @ https://files.pythonhosted.org/packages/da/64/468ca923e837285bd0b0a60bd9a287945d6b68e325705b66b368c07518b1/coverage-6.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl#md5=None +# pip coverage @ https://files.pythonhosted.org/packages/96/1d/0b615e00ab0f78474112b9ef63605d7b0053900746a5c2592f011e850b93/coverage-6.4.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl#md5=None # pip jinja2 @ https://files.pythonhosted.org/packages/bc/c3/f068337a370801f372f2f8f6bad74a5c140f6fda3d9de154052708dd3c65/Jinja2-3.1.2-py3-none-any.whl#md5=None # pip packaging @ https://files.pythonhosted.org/packages/05/8e/8de486cbd03baba4deef4142bd643a3e7bbe954a784dc1bb17142572d127/packaging-21.3-py3-none-any.whl#md5=None # pip python-dateutil @ https://files.pythonhosted.org/packages/36/7a/87837f39d0296e723bb9b62bbb257d0355c7f6128853c78955f57342a56d/python_dateutil-2.8.2-py2.py3-none-any.whl#md5=None -# pip requests @ https://files.pythonhosted.org/packages/41/5b/2209eba8133fc081d3ffff02e1f6376e3117e52bb16f674721a83e67e68e/requests-2.28.0-py3-none-any.whl#md5=None +# pip requests @ https://files.pythonhosted.org/packages/ca/91/6d9b8ccacd0412c08820f72cebaa4f0c0441b5cda699c90f618b6f8a1b42/requests-2.28.1-py3-none-any.whl#md5=None # pip codecov @ https://files.pythonhosted.org/packages/dc/e2/964d0881eff5a67bf5ddaea79a13c7b34a74bc4efe917b368830b475a0b9/codecov-2.1.12-py2.py3-none-any.whl#md5=None # pip pytest @ https://files.pythonhosted.org/packages/fb/d0/bae533985f2338c5d02184b4a7083b819f6b3fc101da792e0d96e6e5299d/pytest-7.1.2-py3-none-any.whl#md5=None # pip sphinx @ https://files.pythonhosted.org/packages/fd/a2/3139e82a7caa2fb6954d0e63db206cc60e0ad6c67ae61ef9cf87dc70ade1/Sphinx-5.0.2-py3-none-any.whl#md5=None diff --git a/build_tools/azure/pypy3_linux-64_conda.lock b/build_tools/azure/pypy3_linux-64_conda.lock index 85a8c98537cd6..2d40a0c057536 100644 --- a/build_tools/azure/pypy3_linux-64_conda.lock +++ b/build_tools/azure/pypy3_linux-64_conda.lock @@ -12,7 +12,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-12.1.0-h8d9b700_16.tar https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h7f98852_4.tar.bz2#a1fd65c7ccbf10880423d82bca54eb54 https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e1b07832504eeba765d648389cc387a9 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.0.9-h166bdaf_7.tar.bz2#f82dc1c78bcf73583f2656433ce2933c https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.10-h7f98852_0.tar.bz2#ffa3a757a97e851293909b49f49f28fb @@ -20,10 +20,10 @@ https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2# 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.20-pthreads_h78a6416_0.tar.bz2#9b6d0781953c9e353faee494336cc229 https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.4-h166bdaf_1.tar.bz2#10af091e99352e6ac25ec0ed11e7ef1f +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.0.5-h166bdaf_0.tar.bz2#f158304d1e469c37e9ffdbe796305571 https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 @@ -36,16 +36,16 @@ https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.ta https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e8_0.tar.bz2#4cc467036ee23a4e7dac2d2c53cc7c21 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e https://conda.anaconda.org/conda-forge/linux-64/ccache-4.5.1-haef5404_0.tar.bz2#8458e509920a0bb14bb6fedd248bed57 https://conda.anaconda.org/conda-forge/linux-64/gdbm-1.18-h0a1914f_2.tar.bz2#b77bc399b07a19c00fe12fdc95ee0297 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.3.0-h0fcbabc_4.tar.bz2#2cdb3944029c2cb99cbe981b182a2e9a -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/brotli-1.0.9-h166bdaf_7.tar.bz2#3889dec08a472eb0f423e5609c76bde1 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f @@ -74,7 +74,7 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2#e5 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py37h6b43d8f_2.tar.bz2#2027d768b9cd13e9738e0856aba431ca -https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.2.0-pyha770c72_1.tar.bz2#f0f7e024f94e23d3bfee0ab777bf335a +https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.3.0-pyha770c72_0.tar.bz2#a9d85960bc62d53cc4ea0d1d27f73c98 https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py37h6b43d8f_0.tar.bz2#0abe97867cd8e0bd2ca5092f5d7ada85 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.31.2-py37h0313132_0.tar.bz2#97ce82afb9d0ccfcad3bd775ce9b8eac @@ -83,7 +83,7 @@ https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.7.3-py37ha768fb6_0.tar.bz2#02658efbe18de3c92c6a18e568fae544 -https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.2.0-hd8ed1ab_1.tar.bz2#6d9d7480c5780514779967be2ee8b963 +https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.3.0-hd8ed1ab_0.tar.bz2#f3e98e944832fb271a0dbda7b7771dc6 https://conda.anaconda.org/conda-forge/noarch/importlib_metadata-4.11.3-hd8ed1ab_1.tar.bz2#bd6b6ae37c03e68061574d5e32fe5bd1 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.2-py37h506a98e_0.tar.bz2#6e29b82c7ac67717d9e6c834e0760efe https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py37h1903001_0.tar.bz2#fa07775fa3ba272a9edaf38bca8581b8 diff --git a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock index 0830d4e808867..95171f79f9cad 100644 --- a/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock +++ b/build_tools/circle/py39_conda_forge_linux-aarch64_conda.lock @@ -12,7 +12,7 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_kmp_llv https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-12.1.0-h3242a24_16.tar.bz2#70e9f0947c17f3faf1a1974be0c110bf https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-hf897c2e_4.tar.bz2#2d787570a729e273a4e75775ddf3348a https://conda.anaconda.org/conda-forge/linux-aarch64/giflib-5.2.1-hb9de7d4_2.tar.bz2#08575a68724ff44a0cb24c6158511c0a -https://conda.anaconda.org/conda-forge/linux-aarch64/jpeg-9e-h9cdd2b7_1.tar.bz2#584d93de10ab8d47874c5f29c29ba729 +https://conda.anaconda.org/conda-forge/linux-aarch64/jpeg-9e-h9cdd2b7_2.tar.bz2#8fd15daa7515a0fea9b3b68495118238 https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-3.0-h01db608_0.tar.bz2#13505433bc073878ec237f8ff8ba1ea5 https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.0.9-h4e544f5_7.tar.bz2#6ee071311281942e2fec227751e7efff https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.12-h4e544f5_0.tar.bz2#8867038c37cac9127964fa455585b67a @@ -21,11 +21,11 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.0.2-h05efe27_0 https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.0-hf897c2e_0.tar.bz2#36fdbc05c9d9145ece86f5a63c3f352e https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.20-pthreads_h6cb6f83_0.tar.bz2#1110034f2f90ca3c7ea35bf0d2eea15e https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.32.1-hf897c2e_1000.tar.bz2#e038da5ef9095b0d79aac14a311394e7 -https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.2.2-hf897c2e_1.tar.bz2#833c405d24bf7e52022b61108e78028a -https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.12-h4e544f5_1.tar.bz2#9362395976f5395370de23ee309553a2 +https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.2.3-h4e544f5_0.tar.bz2#2fc8598982720195d976cb435c2dd778 +https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.2.12-h4e544f5_2.tar.bz2#72a5a5f407e894d738b0542adacc7d9a https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.3-h01db608_1.tar.bz2#25b5ec27b49b04a997a87b0f00f5e205 https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.3-headf329_1.tar.bz2#486b68148e121bc8bbadc3cefae4c04f -https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.0.4-h4e544f5_1.tar.bz2#ceadcb286b663d23c13f07c75e52ccc9 +https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.0.5-h4e544f5_0.tar.bz2#4d3667d957345ac403c68803885a0f9a https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-hb9de7d4_1001.tar.bz2#d0183ec6ce0b5aaa3486df25fa5f0ded https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.9-h3557bc0_0.tar.bz2#e0c187f5ce240897762bbb89a8a407cc https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.3-h3557bc0_0.tar.bz2#a6c9016ae1ca5c47a3603ed4cd65fedd @@ -38,20 +38,20 @@ https://conda.anaconda.org/conda-forge/linux-aarch64/llvm-openmp-14.0.4-hb2805f8 https://conda.anaconda.org/conda-forge/linux-aarch64/openblas-0.3.20-pthreads_h2d9dd7e_0.tar.bz2#db1b9433e8d04b2591111d75be683d5e https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.1.2-h38e3740_0.tar.bz2#3cdbfb7d7b63ae2c2d35bb167d257ecd https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.12-hd8af866_0.tar.bz2#7894e82ff743bd96c76585ddebe28e2a -https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.12-h4e544f5_1.tar.bz2#53419804280d04b14a667c5f19fb1bf5 -https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-haad177d_1.tar.bz2#13d695d25882b3efad8e0e3ffad89a83 +https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.2.12-h4e544f5_2.tar.bz2#cddc4fb1dc1e3ee8d7d8bb078543d656 +https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.2-haad177d_2.tar.bz2#16fa59d4390a66da86eaee91317212bb https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.0.9-h4e544f5_7.tar.bz2#4014ebf8c97d8cb219bfc0a12344ceb6 https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.5.1-h637f6b2_0.tar.bz2#0981c793a35b1e72d75d3a40e8dd69a4 https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-15_linuxaarch64_openblas.tar.bz2#9baa695b860e4abba076a0ad8fb24627 https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-15_linuxaarch64_openblas.tar.bz2#f3b79286dda2ca36a05bc6922432903b -https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.37-hbd635b3_2.tar.bz2#c95d3cee5815206d562fffa531a60a86 +https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.37-hf9034f9_3.tar.bz2#421c814654877cdc1004c097253cd68a https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.4.0-hacb60eb_1.tar.bz2#52fbcabda33cbd901267ccd4d9205f9c -https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.38.5-hc74f5b8_0.tar.bz2#ac6e9256d71294f14a6aea6e1e537f37 +https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.39.1-hc74f5b8_0.tar.bz2#2a5b4045b4cfd715a853d486297a4d4b https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.0.9-h4e544f5_7.tar.bz2#4c345a372cf4936c8e959b8d266c4396 https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.10.4-hdf53a3c_1.tar.bz2#c0b393690f63cdfb986b430971f09cc2 https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.12-h012adcb_0.tar.bz2#d112a00b1ba7dda1f79735d2a4661ea3 https://conda.anaconda.org/conda-forge/linux-aarch64/liblapacke-3.9.0-15_linuxaarch64_openblas.tar.bz2#b3919151cfad6ccef7be182ccc295127 -https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.2.2-h21830e5_0.tar.bz2#0b0287f266b3c32803830bbf6307c48d +https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-1.2.3-hef792ef_0.tar.bz2#f75e25750873d0b1098480269b2427f8 https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.4.0-h45037e0_1.tar.bz2#c888c9aa7f6e60f2514f88c070ec6f45 https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.9.13-h5016f1d_0_cpython.tar.bz2#55fbf16ae0237bd720c5231734d778dc https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d @@ -70,16 +70,16 @@ https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/linux-aarch64/blas-2.115-openblas.tar.bz2#53bbf4da5d1548f107e3374bbf466dba https://conda.anaconda.org/conda-forge/linux-aarch64/certifi-2022.6.15-py39h4420490_0.tar.bz2#2f8b8e2cba70a1c78e20d00415f616f0 https://conda.anaconda.org/conda-forge/linux-aarch64/cython-0.29.30-py39h3d8bfb9_0.tar.bz2#1928a6be375c7b0197b8bc7b64a3bf40 -https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.3-py39h110580c_0.tar.bz2#06f1539f2162cfc6bd4c17ccb777bcaf -https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.23.0-py39h7190128_0.tar.bz2#64940d0d6cb4c6297bae012be49a9734 +https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.4-py39h110580c_0.tar.bz2#208abbe5753c4dc2124bc9e9991fe68c +https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-1.23.1-py39h7190128_0.tar.bz2#736b2e925faecaaf22467b3ada0307e4 https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 -https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.1.1-py39h2a8e185_1.tar.bz2#8300e677981717d949bd0f5acf8c7677 +https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-9.2.0-py39h2a8e185_0.tar.bz2#7fb3b17c124d60e6a931dce32d194fef https://conda.anaconda.org/conda-forge/linux-aarch64/pluggy-1.0.0-py39ha65689a_3.tar.bz2#3ccbd600f5d9921e928da3d69a9720a9 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 -https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-62.6.0-py39ha65689a_0.tar.bz2#76b233d543d873f64292272e7bea81a2 -https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.1-py39hb9a1dbb_3.tar.bz2#11dace3e5ebbaeb5069179cfa5b53923 +https://conda.anaconda.org/conda-forge/linux-aarch64/setuptools-63.2.0-py39ha65689a_0.tar.bz2#50c735fb7e05c4615bb4455082c5325c +https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.2-py39hb9a1dbb_0.tar.bz2#70f97b74fb9ce68addca4652dc54c170 https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-14.0.0-py39h0fd3b05_1.tar.bz2#7182266a1f86f367d88c86a9ab560cca -https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.33.3-py39h0fd3b05_0.tar.bz2#0f8d88eb32e53e0756a4bceaa5d85d3e +https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.34.4-py39h0fd3b05_0.tar.bz2#48ddbfe19fc8630c73cdadff02792a87 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/pip-22.1.2-pyhd8ed1ab_0.tar.bz2#d29185c662a424f8bea1103270b85c96 https://conda.anaconda.org/conda-forge/linux-aarch64/pytest-7.1.2-py39ha65689a_0.tar.bz2#6de5b49b9d9e7628e0666ccf2b7df40b diff --git a/build_tools/github/doc_linux-64_conda.lock b/build_tools/github/doc_linux-64_conda.lock index c447aace543fb..c1ccf6437f624 100644 --- a/build_tools/github/doc_linux-64_conda.lock +++ b/build_tools/github/doc_linux-64_conda.lock @@ -35,7 +35,7 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/fftw-3.3.10-nompi_h77c792f_102.tar.bz2#208f18b1d596b50c6a92a12b30ebe31f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-70.1-h27087fc_0.tar.bz2#87473a15119779e021c314249d4b4aed -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-h7f98852_2.tar.bz2#8e787b08fe19986d99d034b839df2961 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/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e @@ -54,13 +54,13 @@ https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-10.3.0-h26c7422_16. https://conda.anaconda.org/conda-forge/linux-64/libtool-2.4.6-h9c3ff4c_1008.tar.bz2#16e143a1ed4b4fd169536373957f6fee https://conda.anaconda.org/conda-forge/linux-64/libudev1-249-h166bdaf_4.tar.bz2#dc075ff6fcb46b3d3c7652e543d5f334 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/libzopfli-1.0.3-h9c3ff4c_0.tar.bz2#c66fe2d123249af7651ebde8984c51c2 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1q-h166bdaf_0.tar.bz2#07acc367c7fc8b716770cd5b36d31717 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.1.9-hbd366e4_1.tar.bz2#418adb239781d9690afc6b1a05514c37 @@ -88,28 +88,28 @@ https://conda.anaconda.org/conda-forge/linux-64/openblas-0.3.20-pthreads_h320a7e https://conda.anaconda.org/conda-forge/linux-64/portaudio-19.6.0-h57a0ea0_5.tar.bz2#5469312a373f481c05c380897fd7c923 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.1-h83bc5f7_3.tar.bz2#37baca23e60af4130cfc03e8ab9f8e22 https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.0.9-h166bdaf_7.tar.bz2#1699c1211d56a23c66047524cd76796e -https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.1.1-h7a311fb_2.tar.bz2#b8fd04387e09835347b6177d023c534b +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.2.0-h7a311fb_0.tar.bz2#5bdd579ae21231f8971eab74bfb18f07 https://conda.anaconda.org/conda-forge/linux-64/gcc-10.3.0-he2824d0_10.tar.bz2#b1f092f4fdbfff91e1df27aa46efa2bb https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-10.3.0-hc39de41_10.tar.bz2#6e52c54509389c06f88ea74c137f75be https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-10.3.0-h73f4979_16.tar.bz2#0407b066da49b4562ce054c06b40558c https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-10.3.0-hf2f2afa_16.tar.bz2#f825336ce3d4dba77ffd1edc78e7abf9 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.19.3-h3790be6_0.tar.bz2#7d862b05445123144bec92cb1acc8ef8 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-15_linux64_openblas.tar.bz2#f45968428e445fd0c6472b561145812a -https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.5-default_h3a83d3e_0.tar.bz2#493aec1de0f0e09e921eff6206cafff6 +https://conda.anaconda.org/conda-forge/linux-64/libclang13-14.0.6-default_h3a83d3e_0.tar.bz2#cdbd49e0ab5c5a6c522acb8271977d4c https://conda.anaconda.org/conda-forge/linux-64/libflac-1.3.4-h27087fc_0.tar.bz2#620e52e160fd09eb8772dedd46bb19ef -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.70.2-h174f98d_4.tar.bz2#d44314ffae96b17657fbf3f8e47b04fc +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.72.1-h2d90d5f_0.tar.bz2#ebeadbb5fbc44052eeb6f96a2136e3c2 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-15_linux64_openblas.tar.bz2#b7078220384b8bf8db1a45e66412ac4f https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.47.0-h727a467_0.tar.bz2#a22567abfea169ff8048506b1ca9b230 -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.10.0-ha56f1ee_2.tar.bz2#6ab4eaa11ff01801cffca0a27489dc04 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d -https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_0.tar.bz2#7d623237b73d93dd856b5dd0f5fedd6b +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.14-h22db469_3.tar.bz2#b6f4a0850ba620030a48b88c25497aaa https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-8.0.29-h28c427c_1.tar.bz2#36dbdbf505b131c7e79a3857f3537185 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.0-h166bdaf_0.tar.bz2#384e7fcb3cd162ba3e4aed4b687df566 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.0-h166bdaf_0.tar.bz2#637054603bb7594302e3bf83f0a99879 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.9-h166bdaf_0.tar.bz2#732e22f1741bccea861f5668cf7342a7 @@ -120,17 +120,17 @@ https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/gfortran-10.3.0-h18518b4_10.tar.bz2#794676d0d7dd69998cb12654cf37f43d https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-10.3.0-hb09a455_10.tar.bz2#dd9058b625a6edce185db90cf99e3590 -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.70.2-h780b84a_4.tar.bz2#c66c6df8ef582a3b78702201b1eb8e94 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.72.1-h6239696_0.tar.bz2#a3a99cc33279091262bbc4f5ee7c4571 https://conda.anaconda.org/conda-forge/linux-64/gxx-10.3.0-he2824d0_10.tar.bz2#121c9d19ecb6cf6e587c2ab8dfb5c73c https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-10.3.0-h2593f52_10.tar.bz2#075de70ba0493c56ed9e9cda930978ce https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f -https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.5-default_h2e3cab8_0.tar.bz2#8b1cd508fcf54a5c8c5766c549272b6e +https://conda.anaconda.org/conda-forge/linux-64/libclang-14.0.6-default_h2e3cab8_0.tar.bz2#eb70548da697e50cefa7ba939d57d001 https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hf5a7f15_1.tar.bz2#005557d6df00af70e438bcd532ce2304 https://conda.anaconda.org/conda-forge/linux-64/libcurl-7.83.1-h7bff187_0.tar.bz2#d0c278476dba3b29ee13203784672ab1 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.9.0-15_linux64_openblas.tar.bz2#31f21773a784f59962ea542a3d71ad87 https://conda.anaconda.org/conda-forge/linux-64/libpq-14.4-hd77ab85_0.tar.bz2#7024df220bd8680192d4bad4024122d1 https://conda.anaconda.org/conda-forge/linux-64/libsndfile-1.0.31-h9c3ff4c_1.tar.bz2#fc4b6d93da04731db7601f2a1b1dc96a -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_0.tar.bz2#96e218d06394a4e4d77028cf70162a09 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.0.3-he3ba5ed_0.tar.bz2#f9dbabc7e01c459ed7a1d1d64b206e9b https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 @@ -141,7 +141,7 @@ https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2# https://conda.anaconda.org/conda-forge/linux-64/blas-devel-3.9.0-15_linux64_openblas.tar.bz2#2b5095be485bdb407ff3134358c3ca9c https://conda.anaconda.org/conda-forge/linux-64/brunsli-0.1-h9c3ff4c_0.tar.bz2#c1ac6229d0bfd14f8354ff9ad2a26cad https://conda.anaconda.org/conda-forge/linux-64/cfitsio-4.1.0-hd9d235c_0.tar.bz2#ebc04a148d7204bb428f8633b89fd3dd -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.4.2-h924138e_0.tar.bz2#40b38afc72b4f12be8a2ca29853b03ac @@ -150,14 +150,15 @@ https://conda.anaconda.org/conda-forge/noarch/execnet-1.9.0-pyhd8ed1ab_0.tar.bz2 https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar.bz2#f314f79031fec74adc9bff50fbaffd89 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.4.2-h2a4ca65_0.tar.bz2#a39c981deb5b50e2ea1464ab9d5c0b10 https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b -https://conda.anaconda.org/conda-forge/linux-64/glib-2.70.2-h780b84a_4.tar.bz2#977c857d773389a51442ad3a716c0480 +https://conda.anaconda.org/conda-forge/linux-64/glib-2.72.1-h6239696_0.tar.bz2#1698b7684d3c6a4d1de2ab946f5b0fb5 https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd -https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/linux-64/jack-1.9.18-h8c3723f_1002.tar.bz2#7b3f287fcb7683f67b3d953b79f412ea https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2#2ba8498c1018c1e9c61eb99b973dfe19 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.5-pyhd8ed1ab_0.tar.bz2#4359cc8df0609a2b88aec55d6d2fedaf +https://conda.anaconda.org/conda-forge/noarch/ply-3.11-py_1.tar.bz2#7205635cd71531943440fbfe3b6b5727 https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -174,42 +175,42 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1. https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/zipp-3.8.0-pyhd8ed1ab_0.tar.bz2#050b94cf4a8c760656e51d2d44e4632c https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda https://conda.anaconda.org/conda-forge/linux-64/blas-2.115-openblas.tar.bz2#ca9e177657aa07ab306bd1bbcdf80e69 https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py39hf3d152e_0.tar.bz2#cf0efee4ef53a6d3ea4dce06ac360f14 -https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.0-py39h4bc2ebd_0.tar.bz2#f6191bf565dee581e77549d63737751c +https://conda.anaconda.org/conda-forge/linux-64/cffi-1.15.1-py39he91dace_0.tar.bz2#61e961a94c8fd535e4496b17e7452dfe https://conda.anaconda.org/conda-forge/linux-64/compilers-1.4.2-ha770c72_0.tar.bz2#b353fa1271e1a82d37a7d35f4785de13 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.30-py39h5a03fae_0.tar.bz2#78d64530b059de26a60f979e02c9fa3c -https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py39hb9d737c_2.tar.bz2#27e20d4d5b494d2f1f3fa31fa44190ae +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.0-py39hb9d737c_0.tar.bz2#26740ffa0bfc09bfee7dbe9d226577c9 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.18.1-py39hf3d152e_1.tar.bz2#9851752658704495f8adf28f6d2b3cb3 https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.20.3-hd4edc92_0.tar.bz2#94cb81ffdce328f80c87ac9b01244632 https://conda.anaconda.org/conda-forge/linux-64/importlib-metadata-4.11.4-py39hf3d152e_0.tar.bz2#4c2a0eabf0b8980b2c755646a6f750eb -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py39hf939315_0.tar.bz2#d8bdd7cb2f0e571665bbf0ec09c94da9 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py39hf939315_0.tar.bz2#e8d1310648c189d6d11a2e13f73da1fe https://conda.anaconda.org/conda-forge/linux-64/markupsafe-2.1.1-py39hb9d737c_1.tar.bz2#7cda413e43b252044a270c2477031c5c -https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.0-py39hba7629e_0.tar.bz2#0e48a6f61637735a88644359d90f5f1e +https://conda.anaconda.org/conda-forge/linux-64/numpy-1.23.1-py39hba7629e_0.tar.bz2#ee8dff1fb28e0e2c458e845aae9d915a https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py39hae2aec6_1.tar.bz2#9039c6b86ddb65d7e8bf464337ae9053 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py39hae2aec6_0.tar.bz2#ea9760ab3700e63809de6ae71a11664b https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py39hf3d152e_3.tar.bz2#c375c89340e563053f3656c7f134d265 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py39hb9d737c_0.tar.bz2#5852c69cad74811dc3c95f9ab6a184ef https://conda.anaconda.org/conda-forge/linux-64/pulseaudio-14.0-h7f54b18_8.tar.bz2#f9dbcfbb942ec9a3c0249cb71da5c7d1 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py39hf3d152e_5.tar.bz2#d34b97a2386932b97c7cb80916a673e7 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py39hb9d737c_4.tar.bz2#dcc47a3b751508507183d17e569805e5 -https://conda.anaconda.org/conda-forge/linux-64/setuptools-62.6.0-py39hf3d152e_0.tar.bz2#ddfb37b6e91b8c41be3976d19af47ade -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py39hb9d737c_3.tar.bz2#5e13a2d214ed4184969df363a1aab420 +https://conda.anaconda.org/conda-forge/linux-64/setuptools-63.2.0-py39hf3d152e_0.tar.bz2#0a487a44f996e39d13cdf2899855c406 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py39hb9d737c_0.tar.bz2#a3c57360af28c0d9956622af99a521cd https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-14.0.0-py39hb9d737c_1.tar.bz2#ef84376736d1e8a814ccb06d1d814e6f https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py39hb9d737c_1004.tar.bz2#05a99367d885ec9990f25e74128a8a08 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py39hd97740a_0.tar.bz2#11780968ae65fdeb1a0bc294d211597d -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 -https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.33.3-py39hb9d737c_0.tar.bz2#43f3c538bbcf6ed0da225891e11bf0a8 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.4-py39hd97740a_0.tar.bz2#edc3668e7b71657237f94cf25e286478 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.7.0-pyhd8ed1ab_0.tar.bz2#3b533fc35efb54900c9e4ab06242f8b5 +https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.34.4-py39hb9d737c_0.tar.bz2#7980ace37ccb3399672c3a9840e039ed https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.20.3-hf6a322e_0.tar.bz2#6ea2ce6265c3207876ef2369b7479f08 https://conda.anaconda.org/conda-forge/linux-64/imagecodecs-2022.2.22-py39hfcd4fa2_6.tar.bz2#fb284401002dea344eada09798cd07ec https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 -https://conda.anaconda.org/conda-forge/noarch/jinja2-3.0.3-pyhd8ed1ab_0.tar.bz2#036d872c653780cb26e797e2e2f61b4c +https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.2-pyhd8ed1ab_1.tar.bz2#c8490ed5c70966d232fdd389d0dbed37 https://conda.anaconda.org/conda-forge/noarch/joblib-1.1.0-pyhd8ed1ab_0.tar.bz2#07d1b5c8cde14d95998fd4767e1e62d2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.60.0-pyhd8ed1ab_0.tar.bz2#f769ad93cd67c6eb7e932c255ed7d642 https://conda.anaconda.org/conda-forge/linux-64/pandas-1.4.3-py39h1832856_0.tar.bz2#74e00961703972cf33b44a6fca7c3d51 @@ -218,26 +219,26 @@ https://conda.anaconda.org/conda-forge/noarch/pygments-2.12.0-pyhd8ed1ab_0.tar.b https://conda.anaconda.org/conda-forge/linux-64/pytest-7.1.2-py39hf3d152e_0.tar.bz2#a6bcf633d12aabdfc4cb32a09ebc0f31 https://conda.anaconda.org/conda-forge/linux-64/pywavelets-1.3.0-py39hd257fcd_1.tar.bz2#c4b698994b2d8d2e659ae02202e6abe4 https://conda.anaconda.org/conda-forge/linux-64/scipy-1.8.1-py39he49c0e8_0.tar.bz2#b1b4cc4216e555168e88d6a2b1914af1 -https://conda.anaconda.org/conda-forge/linux-64/sip-6.5.1-py39he80948d_2.tar.bz2#e93686e0252282dd8ccba5c6cbcd8295 +https://conda.anaconda.org/conda-forge/linux-64/sip-6.6.2-py39h5a03fae_0.tar.bz2#e37704c6be07b8b14ffc1ce912802ce0 https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.5.2-py39h700656a_0.tar.bz2#ab1bcd0fd24e375f16d662e4cc783cab https://conda.anaconda.org/conda-forge/noarch/patsy-0.5.2-pyhd8ed1ab_0.tar.bz2#2e4e8be763551f60bbfcc22b650e5d49 https://conda.anaconda.org/conda-forge/linux-64/pyamg-4.2.3-py39hac2352c_0.tar.bz2#9df63dea0e4d2163be63b8e40c17ceaf https://conda.anaconda.org/conda-forge/noarch/pyopenssl-22.0.0-pyhd8ed1ab_0.tar.bz2#1d7e241dfaf5475e893d4b824bb71b44 -https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.9.0-py39h5a03fae_1.tar.bz2#bff0f5f688af0dc337d11517c5a46402 +https://conda.anaconda.org/conda-forge/linux-64/pyqt5-sip-12.11.0-py39h5a03fae_0.tar.bz2#1fd9112714d50ee5be3dbf4fd23964dc https://conda.anaconda.org/conda-forge/noarch/pytest-forked-1.4.0-pyhd8ed1ab_0.tar.bz2#95286e05a617de9ebfe3246cecbfb72f https://conda.anaconda.org/conda-forge/linux-64/qt-main-5.15.4-ha5833f6_2.tar.bz2#dd3aa6715b9e9efaf842febf18ce4261 https://conda.anaconda.org/conda-forge/noarch/tifffile-2022.5.4-pyhd8ed1ab_0.tar.bz2#8c8c68b9d466b8804584abe11a75c396 -https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.4-py39h18e9c17_1.tar.bz2#111647767bc84d4795f829bdc07dbb27 +https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.15.7-py39h18e9c17_0.tar.bz2#5ed8f83afff3b64fa91f7a6af8d7ff04 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/scikit-image-0.19.3-py39h1832856_0.tar.bz2#5d638481c48c57fdb986490a4a6983fc https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.tar.bz2#fe2303dc8f1febeb82d927ce8ad153ed https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.13.2-py39hd257fcd_0.tar.bz2#bd7cdadf70e34a19333c3aacc40206e8 -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.10-pyhd8ed1ab_0.tar.bz2#14f22c5b9cfd0d93c2806faaa3fe6dec https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.5.2-py39hf3d152e_0.tar.bz2#d65d073d186977a2a9a9d5a68b2b77ef -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 https://conda.anaconda.org/conda-forge/noarch/sphinx-5.0.2-pyh6c4a22f_0.tar.bz2#d4eaa1f50733a377480ce1d5aac556c7 -https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.4.0-pyhd8ed1ab_0.tar.bz2#d1c1320c63843ca639a638cb4259e346 +https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.4.0-pyhd8ed1ab_1.tar.bz2#0aac89c61a466b0f9c4fd0ec44d81f1d https://conda.anaconda.org/conda-forge/noarch/sphinx-gallery-0.10.1-pyhd8ed1ab_0.tar.bz2#4918585fe5e5341740f7e63c61743efb https://conda.anaconda.org/conda-forge/noarch/sphinx-prompt-1.4.0-pyhd8ed1ab_0.tar.bz2#88ee91e8679603f2a5bd036d52919cc2 # pip sphinxext-opengraph @ https://files.pythonhosted.org/packages/58/ed/59df64b8400caf736f38bd3725ab9b1d9e50874f629980973aea090c1a8b/sphinxext_opengraph-0.6.3-py3-none-any.whl#md5=None diff --git a/build_tools/github/doc_min_dependencies_linux-64_conda.lock b/build_tools/github/doc_min_dependencies_linux-64_conda.lock index 9e7ff1cc2843c..10d531bc9005d 100644 --- a/build_tools/github/doc_min_dependencies_linux-64_conda.lock +++ b/build_tools/github/doc_min_dependencies_linux-64_conda.lock @@ -22,19 +22,19 @@ https://conda.anaconda.org/conda-forge/linux-64/expat-2.4.8-h27087fc_0.tar.bz2#e https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-7.5.0-habd7529_20.tar.bz2#42140612518a7ce78f571d64b6a50ba3 https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.1-h36c2ea0_2.tar.bz2#626e68ae9cc5912d6adb79d318cf962d https://conda.anaconda.org/conda-forge/linux-64/icu-64.2-he1b5a44_1.tar.bz2#8e881214a23508f1541eb7a3135d6fcb -https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_1.tar.bz2#4828c7f7208321cfbede4880463f4930 +https://conda.anaconda.org/conda-forge/linux-64/jpeg-9e-h166bdaf_2.tar.bz2#ee8b844357a0946870901c7c6f418268 https://conda.anaconda.org/conda-forge/linux-64/lerc-3.0-h9c3ff4c_0.tar.bz2#7fcefde484980d23f0ec24c11e314d2e https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.12-h166bdaf_0.tar.bz2#d56e3db8fa642fb383f18f5be35eeef2 https://conda.anaconda.org/conda-forge/linux-64/libffi-3.2.1-he1b5a44_1007.tar.bz2#11389072d7d6036fd811c3d9460475cd https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.16-h516909a_0.tar.bz2#5c0f338a513a2943c659ae619fca9211 https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.32.1-h7f98852_1000.tar.bz2#772d69f030955d9646d3d0eaf21d859d -https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.2-h7f98852_1.tar.bz2#46cf26ecc8775a0aab300ea1821aaa3c +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.2.3-h166bdaf_0.tar.bz2#3d6168ac3560d473e52a7cb836400135 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-0.10.0-he1b5a44_0.tar.bz2#78ccac2098edcd3673af2ceb3e95f932 -https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_1.tar.bz2#58eaff4f91891978af3625e7bbf958af +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.12-h166bdaf_2.tar.bz2#8302381297332ea50532cf2c67961080 https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.3-h9c3ff4c_1.tar.bz2#fbe97e8fa6f275d7c76a09e795adc3e6 https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.3-h27087fc_1.tar.bz2#4acfc691e64342b9dae57cf2adc63238 https://conda.anaconda.org/conda-forge/linux-64/nspr-4.32-h9c3ff4c_1.tar.bz2#29ded371806431b0499aaee146abfc3e -https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1p-h166bdaf_0.tar.bz2#995e819f901ee0c4411e4f50d9b31a82 +https://conda.anaconda.org/conda-forge/linux-64/openssl-1.1.1q-h166bdaf_0.tar.bz2#07acc367c7fc8b716770cd5b36d31717 https://conda.anaconda.org/conda-forge/linux-64/pcre-8.45-h9c3ff4c_0.tar.bz2#c05d1820a6d34ff07aaaab7a9b7eddaa https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.9-h7f98852_0.tar.bz2#bf6f803a544f26ebbdc3bfff272eb179 @@ -50,30 +50,30 @@ https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.13-h7f98852_1004.tar.bz https://conda.anaconda.org/conda-forge/linux-64/llvm-openmp-14.0.4-he0ac6c6_0.tar.bz2#cecc6e3cb66570ffcfb820c637890f54 https://conda.anaconda.org/conda-forge/linux-64/readline-8.1.2-h0f457ee_0.tar.bz2#db2ebbe2943aae81ed051a6a9af8e0fa https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.12-h27826a3_0.tar.bz2#5b8c42eb62e9fc961af70bdd6a26e168 -https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_1.tar.bz2#e4b67f2b4096807cd7d836227c026a43 -https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_1.tar.bz2#3db63b53bb194dbaa7dc3d8833e98da2 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.12-h166bdaf_2.tar.bz2#4533821485cde83ab12ff3d8bda83768 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.2-h8a70e8d_2.tar.bz2#78c26dbb6e07d95ccc0eab8d4540aa0c https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.1.1-h516909a_0.tar.bz2#d98aa4948ec35f52907e2d6152e2b255 https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-7.5.0-h78c8a43_33.tar.bz2#b2879010fb369f4012040f7a27657cd8 https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-7.5.0-h555fc39_33.tar.bz2#5cf979793d2c5130a012cb6480867adc https://conda.anaconda.org/conda-forge/linux-64/libclang-9.0.1-default_hb4e5071_5.tar.bz2#9dde69aa2a8ecd575a16e44987bdc9f7 https://conda.anaconda.org/conda-forge/linux-64/libglib-2.66.3-hbe7bbb4_0.tar.bz2#d5a09a9e981849b751cb75656b7302a0 -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h21135ba_2.tar.bz2#b6acf807307d033d4b7e758b4f44b036 +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.37-h753d276_3.tar.bz2#3e868978a04de8bf65a97bb86760f47a https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.4.0-hc85c160_1.tar.bz2#151f9fae3ab50f039c8735e47770aa2d https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.9.10-hee79883_0.tar.bz2#0217b0926808b1adf93247bba489d733 https://conda.anaconda.org/conda-forge/linux-64/mkl-2020.4-h726a3e6_304.tar.bz2#b9b35a50e5377b19da6ec0709ae77fc3 -https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.38.5-h4ff8645_0.tar.bz2#a1448f0c31baec3946d2dcf09f905c9e +https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.39.1-h4ff8645_0.tar.bz2#6acda9d2a3ea84b58637b8f880bbf29b https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.1.1-hc9558a2_0.tar.bz2#1eb7c67eb11eab0c98a87f84174fdde1 https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.1.1-he991be0_0.tar.bz2#e38ac82cc517b9e245c1ae99f9f140da https://conda.anaconda.org/conda-forge/linux-64/freetype-2.10.4-h0708190_1.tar.bz2#4a06f2ac2e5bfae7b6b245171c3f07aa https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.12-hddcbb42_0.tar.bz2#797117394a4aa588de6d741b06fad80f https://conda.anaconda.org/conda-forge/linux-64/libblas-3.8.0-20_mkl.tar.bz2#8fbce60932c01d0e193a1a814f2002be -https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.2-h3452ae3_0.tar.bz2#c363665b4aabe56aae4f8981cff5b153 +https://conda.anaconda.org/conda-forge/linux-64/libwebp-1.2.3-h522a892_0.tar.bz2#96e218d06394a4e4d77028cf70162a09 https://conda.anaconda.org/conda-forge/linux-64/nss-3.78-h2350873_0.tar.bz2#ab3df39f96742e6f1a9878b09274c1dc https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.4.0-hb52868f_1.tar.bz2#b7ad78ad2e9ee155f59e6428406ee824 https://conda.anaconda.org/conda-forge/linux-64/python-3.8.6-h852b56e_0_cpython.tar.bz2#dd65401dfb61ac030edc0dc4d15c2c51 https://conda.anaconda.org/conda-forge/noarch/alabaster-0.7.12-py_0.tar.bz2#2489a97287f90176ecdc3ca982b4b0a0 https://conda.anaconda.org/conda-forge/noarch/attrs-21.4.0-pyhd8ed1ab_0.tar.bz2#f70280205d7044c8b8358c8de3190e5d -https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.0.12-pyhd8ed1ab_0.tar.bz2#1f5b32dabae0f1893ae3283dac7f799e +https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-2.1.0-pyhd8ed1ab_0.tar.bz2#abc0453b6e7bfbb87d275d58e333fc98 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-2.1.0-pyhd8ed1ab_0.tar.bz2#f7551a8a008dfad2b7ac9662dd124614 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.5-pyhd8ed1ab_0.tar.bz2#c267da48ce208905d7d976d49dfd9433 https://conda.anaconda.org/conda-forge/linux-64/compilers-1.1.1-0.tar.bz2#1ba267e19dbaf3db9dd0404e6fb9cdb9 @@ -83,12 +83,12 @@ https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.0-h8e229c2_0.tar https://conda.anaconda.org/conda-forge/noarch/fsspec-2022.5.0-pyhd8ed1ab_0.tar.bz2#db4ffc615663c66a9cc0869ce4d1092b https://conda.anaconda.org/conda-forge/linux-64/glib-2.66.3-h58526e2_0.tar.bz2#62c2e5c84f6cdc7ded2307ef9c30dc8c https://conda.anaconda.org/conda-forge/noarch/idna-3.3-pyhd8ed1ab_0.tar.bz2#40b50b8b030f5f2f22085c062ed013dd -https://conda.anaconda.org/conda-forge/noarch/imagesize-1.3.0-pyhd8ed1ab_0.tar.bz2#be807e7606fff9436e5e700f6bffb7c6 +https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2#7de5386c8fea29e76b303f37dde4c352 https://conda.anaconda.org/conda-forge/noarch/iniconfig-1.1.1-pyh9f0ad1d_0.tar.bz2#39161f81cc5e5ca45b8226fbb06c6905 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.8.0-20_mkl.tar.bz2#14b25490fdcc44e879ac6c10fe764f68 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.8.0-20_mkl.tar.bz2#52c0ae3606eeae7e1d493f37f336f4f5 https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 -https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.4-pyhd8ed1ab_0.tar.bz2#d5ee17f3f60079d79fbd027f9944d18e +https://conda.anaconda.org/conda-forge/noarch/networkx-2.8.5-pyhd8ed1ab_0.tar.bz2#4359cc8df0609a2b88aec55d6d2fedaf https://conda.anaconda.org/conda-forge/noarch/py-1.11.0-pyh6c4a22f_0.tar.bz2#b4613d7e7a493916d867842a6a148054 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.21-pyhd8ed1ab_0.tar.bz2#076becd9e05608f8dc72757d5f3a91ff https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.0.9-pyhd8ed1ab_0.tar.bz2#e8fbc1b54b25f4b08281467bc13b70cc @@ -104,34 +104,34 @@ https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-qthelp-1.0.3-py_0.ta https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.5-pyhd8ed1ab_2.tar.bz2#9ff55a0901cf952f05c654394de76bf7 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.1.0-pyh8a188c0_0.tar.bz2#a2995ee828f65687ac5b1e71a2ab1e0c https://conda.anaconda.org/conda-forge/noarch/tomli-2.0.1-pyhd8ed1ab_0.tar.bz2#5844808ffab9ebdb694585b50ba02a96 -https://conda.anaconda.org/conda-forge/noarch/toolz-0.11.2-pyhd8ed1ab_0.tar.bz2#f348d1590550371edfac5ed3c1d44f7e +https://conda.anaconda.org/conda-forge/noarch/toolz-0.12.0-pyhd8ed1ab_0.tar.bz2#92facfec94bc02d6ccf42e7173831a36 https://conda.anaconda.org/conda-forge/noarch/wheel-0.37.1-pyhd8ed1ab_0.tar.bz2#1ca02aaf78d9c70d9a81a3bed5752022 https://conda.anaconda.org/conda-forge/noarch/babel-2.10.3-pyhd8ed1ab_0.tar.bz2#72f1c6d03109d7a70087bc1d029a8eda https://conda.anaconda.org/conda-forge/linux-64/certifi-2022.6.15-py38h578d9bd_0.tar.bz2#1f4339b25d1030cfbf4ee0b06690bbce https://conda.anaconda.org/conda-forge/linux-64/cffi-1.14.4-py38ha312104_0.tar.bz2#8f82b87522fbb1d4b24e8b5e2b1d0501 https://conda.anaconda.org/conda-forge/linux-64/cython-0.29.24-py38h709712a_1.tar.bz2#9e5fe389471a13ae523ae980de4ad1f4 -https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.11.2-py38h0a891b7_2.tar.bz2#71f54bf65927270177d66e26664f11ea +https://conda.anaconda.org/conda-forge/linux-64/cytoolz-0.12.0-py38h0a891b7_0.tar.bz2#37285e493f65bd5dbde90d6dbfe39bee https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-hfdff14a_1.tar.bz2#4caaca6356992ee545080c7d7193b5a3 https://conda.anaconda.org/conda-forge/linux-64/docutils-0.17.1-py38h578d9bd_2.tar.bz2#affd6b87adb2b0c98da0e3ad274349be https://conda.anaconda.org/conda-forge/linux-64/gstreamer-1.14.5-h36ae1b5_2.tar.bz2#00084ab2657be5bf0ba0757ccde797ef -https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.3-py38h43d8883_0.tar.bz2#0719de23a2c5aa0b4db25ee34394e8f3 +https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.4-py38h43d8883_0.tar.bz2#ae54c61918e1cbd280b8587ed6219258 https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.8.0-20_mkl.tar.bz2#8274dc30518af9df1de47f5d9e73165c https://conda.anaconda.org/conda-forge/linux-64/markupsafe-1.1.1-py38h0a891b7_4.tar.bz2#d182e0c60439427453ed4a7abd28ef0d https://conda.anaconda.org/conda-forge/linux-64/numpy-1.17.3-py38h95a1406_0.tar.bz2#bc0cbf611fe2f86eab29b98e51404f5e https://conda.anaconda.org/conda-forge/noarch/packaging-21.3-pyhd8ed1ab_0.tar.bz2#71f1ab2de48613876becddd496371c85 https://conda.anaconda.org/conda-forge/noarch/partd-1.2.0-pyhd8ed1ab_0.tar.bz2#0c32f563d7f22e3a34c95cad8cc95651 -https://conda.anaconda.org/conda-forge/linux-64/pillow-9.1.1-py38h0ee0e06_1.tar.bz2#cd653a4a951ca80adb96ff6cd3b36883 +https://conda.anaconda.org/conda-forge/linux-64/pillow-9.2.0-py38h0ee0e06_0.tar.bz2#7ef61f9084bda76b2f7a668ec5d1499a https://conda.anaconda.org/conda-forge/linux-64/pluggy-1.0.0-py38h578d9bd_3.tar.bz2#6ce4ce3d4490a56eb33b52c179609193 https://conda.anaconda.org/conda-forge/linux-64/psutil-5.9.1-py38h0a891b7_0.tar.bz2#e3908bd184030e7f4a3d837959ebf6d7 https://conda.anaconda.org/conda-forge/linux-64/pysocks-1.7.1-py38h578d9bd_5.tar.bz2#11113c7e50bb81f30762fe8325f305e1 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.8.2-pyhd8ed1ab_0.tar.bz2#dd999d1cc9f79e67dbb855c8924c7984 https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0-py38h0a891b7_4.tar.bz2#ba24ff01bb38c5cd5be54b45ef685db3 https://conda.anaconda.org/conda-forge/linux-64/setuptools-59.8.0-py38h578d9bd_1.tar.bz2#da023e4a9c777abc28434d7a6473dcc2 -https://conda.anaconda.org/conda-forge/linux-64/tornado-6.1-py38h0a891b7_3.tar.bz2#d9e2836a4a46935f84b858462d54a7c3 +https://conda.anaconda.org/conda-forge/linux-64/tornado-6.2-py38h0a891b7_0.tar.bz2#acd276486a0067bee3098590f0952a0f https://conda.anaconda.org/conda-forge/linux-64/blas-2.20-mkl.tar.bz2#e7d09a07f5413e53dca5282b8fa50bed https://conda.anaconda.org/conda-forge/linux-64/brotlipy-0.7.0-py38h0a891b7_1004.tar.bz2#9fcaaca218dcfeb8da806d4fd4824aa0 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.2-py38h2b5fc30_0.tar.bz2#bcc387154aae535f8b4f84822621b5f7 -https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.6.1-pyhd8ed1ab_0.tar.bz2#69655c7e78034d4293130f5a5ecf7421 +https://conda.anaconda.org/conda-forge/linux-64/cryptography-37.0.4-py38h2b5fc30_0.tar.bz2#28e9acd6f13ed29f27d5550a1cf0554b +https://conda.anaconda.org/conda-forge/noarch/dask-core-2022.7.0-pyhd8ed1ab_0.tar.bz2#3b533fc35efb54900c9e4ab06242f8b5 https://conda.anaconda.org/conda-forge/linux-64/gst-plugins-base-1.14.5-h0935bb2_2.tar.bz2#eb125ee86480e00a4a1ed45a577c3311 https://conda.anaconda.org/conda-forge/noarch/imageio-2.19.3-pyhcf75d05_0.tar.bz2#9a5e536d761271c400310ec5dff8c5e1 https://conda.anaconda.org/conda-forge/noarch/jinja2-2.11.3-pyhd8ed1ab_2.tar.bz2#bdedf6199eec03402a0c5db1f25e891e @@ -154,9 +154,9 @@ https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.11.2-pyhd8ed1ab_0.t https://conda.anaconda.org/conda-forge/linux-64/pyqt-5.12.3-py38ha8c2ead_3.tar.bz2#242c206b0c30fdc4c18aea16f04c4262 https://conda.anaconda.org/conda-forge/noarch/pytest-xdist-2.5.0-pyhd8ed1ab_0.tar.bz2#1fdd1f3baccf0deb647385c677a1a48e https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.12.2-py38h5c078b8_0.tar.bz2#33787719ad03d33cffc4e2e3ea82bc9e -https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.9-pyhd8ed1ab_0.tar.bz2#0ea179ee251aa7100807c35bc0252693 +https://conda.anaconda.org/conda-forge/noarch/urllib3-1.26.10-pyhd8ed1ab_0.tar.bz2#14f22c5b9cfd0d93c2806faaa3fe6dec https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.1.2-py38_1.tar.bz2#c2b9671a19c01716c37fe0a0e18b0aec -https://conda.anaconda.org/conda-forge/noarch/requests-2.28.0-pyhd8ed1ab_1.tar.bz2#5db4d14905f98da161e2153b1c9d2bce +https://conda.anaconda.org/conda-forge/noarch/requests-2.28.1-pyhd8ed1ab_0.tar.bz2#70d6e72856de9551f83ae0f2de689a7a https://conda.anaconda.org/conda-forge/noarch/seaborn-0.11.2-hd8ed1ab_0.tar.bz2#e56b6a19f4b717eca7c68ad78196b075 https://conda.anaconda.org/conda-forge/noarch/sphinx-4.0.1-pyh6c4a22f_2.tar.bz2#c203dcc46f262853ecbb9552c50d664e https://conda.anaconda.org/conda-forge/noarch/numpydoc-1.2-pyhd8ed1ab_0.tar.bz2#025ad7ca2c7f65007ab6b6f5d93a56eb diff --git a/build_tools/update_environments_and_lock_files.py b/build_tools/update_environments_and_lock_files.py index a06fded6c3469..be44ac6983309 100644 --- a/build_tools/update_environments_and_lock_files.py +++ b/build_tools/update_environments_and_lock_files.py @@ -71,11 +71,7 @@ docstring_test_dependencies = ["sphinx", "numpydoc"] -default_package_constraints = { - # XXX: coverage is temporary pinned to 6.2 because 6.3 is not fork-safe - # cf. https://github.com/nedbat/coveragepy/issues/1310 - "coverage": "6.2", -} +default_package_constraints = {} def remove_from(alist, to_remove): @@ -112,6 +108,11 @@ def remove_from(alist, to_remove): "conda_dependencies": common_dependencies + ["ccache"], "package_constraints": { "blas": "[build=mkl]", + # XXX: coverage is temporary pinned to 6.2 because 6.3 is not + # fork-safe and 6.4 is not available yet (July 2022) in conda + # defaults channel. For more details, see: + # https://github.com/nedbat/coveragepy/issues/1310 + "coverage": "6.2", }, }, { @@ -137,6 +138,11 @@ def remove_from(alist, to_remove): "scipy": "min", "matplotlib": "min", "threadpoolctl": "2.2.0", + # XXX: coverage is temporary pinned to 6.2 because 6.3 is not + # fork-safe and 6.4 is not available yet (July 2022) in conda + # defaults channel. For more details, see: + # https://github.com/nedbat/coveragepy/issues/1310 + "coverage": "6.2", }, }, { From 569611e2189d4ac0babc1ba5ebcbe7374b33dcda Mon Sep 17 00:00:00 2001 From: Charles Zablit Date: Thu, 21 Jul 2022 14:43:14 +0200 Subject: [PATCH 197/251] DOC Adjusts grammar in `v_measure_score`'s documentation (#23961) --- sklearn/metrics/cluster/_supervised.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/metrics/cluster/_supervised.py b/sklearn/metrics/cluster/_supervised.py index c5002921dc407..2f2f55fcd2156 100644 --- a/sklearn/metrics/cluster/_supervised.py +++ b/sklearn/metrics/cluster/_supervised.py @@ -689,7 +689,7 @@ def v_measure_score(labels_true, labels_pred, *, beta=1.0): 1.0 Labelings that assign all classes members to the same clusters - are complete be not homogeneous, hence penalized:: + are complete but not homogeneous, hence penalized:: >>> print("%.6f" % v_measure_score([0, 0, 1, 2], [0, 0, 1, 1])) 0.8... @@ -697,7 +697,7 @@ def v_measure_score(labels_true, labels_pred, *, beta=1.0): 0.66... Labelings that have pure clusters with members coming from the same - classes are homogeneous but un-necessary splits harms completeness + classes are homogeneous but un-necessary splits harm completeness and thus penalize V-measure as well:: >>> print("%.6f" % v_measure_score([0, 0, 1, 1], [0, 0, 1, 2])) From 7f5ee1076ef969575d181fe40877bedc72da7a89 Mon Sep 17 00:00:00 2001 From: Dhanshree Arora Date: Thu, 21 Jul 2022 14:34:16 +0100 Subject: [PATCH 198/251] DOC fix numpydoc validation for fetch_kddcup99 (#23929) Co-authored-by: Adrin Jalali Co-authored-by: jeremiedbb --- sklearn/datasets/_kddcup99.py | 5 ++++- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sklearn/datasets/_kddcup99.py b/sklearn/datasets/_kddcup99.py index b698d299b7c8d..f9d609d362c04 100644 --- a/sklearn/datasets/_kddcup99.py +++ b/sklearn/datasets/_kddcup99.py @@ -133,6 +133,10 @@ def fetch_kddcup99( The names of the target columns (data, target) : tuple if ``return_X_y`` is True + A tuple of two ndarray. The first containing a 2D array of + shape (n_samples, n_features) with each row representing one + sample and each column representing the features. The second + ndarray of shape (n_samples,) containing the target samples. .. versionadded:: 0.20 """ @@ -225,7 +229,6 @@ def fetch_kddcup99( def _fetch_brute_kddcup99(data_home=None, download_if_missing=True, percent10=True): - """Load the kddcup99 dataset, downloading it if necessary. Parameters diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 5e29d4b645368..4920a180f2b84 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -12,7 +12,6 @@ numpydoc_validation = pytest.importorskip("numpydoc.validate") FUNCTION_DOCSTRING_IGNORE_LIST = [ - "sklearn.datasets._kddcup99.fetch_kddcup99", "sklearn.datasets._lfw.fetch_lfw_people", "sklearn.datasets._samples_generator.make_gaussian_quantiles", "sklearn.datasets._samples_generator.make_spd_matrix", From 67919090f7bd1e1efdab4af497bbd763e52bebc7 Mon Sep 17 00:00:00 2001 From: stellalin7 Date: Thu, 21 Jul 2022 18:12:43 -0500 Subject: [PATCH 199/251] DOC Ensures that make_spd_matrix passes numpydoc validation (#23974) Co-authored-by: Stella Lin --- sklearn/datasets/_samples_generator.py | 2 +- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/datasets/_samples_generator.py b/sklearn/datasets/_samples_generator.py index 7108ebc401382..cd4768f08c63d 100644 --- a/sklearn/datasets/_samples_generator.py +++ b/sklearn/datasets/_samples_generator.py @@ -1405,7 +1405,7 @@ def make_spd_matrix(n_dim, *, random_state=None): See Also -------- - make_sparse_spd_matrix + make_sparse_spd_matrix: Generate a sparse symmetric definite positive matrix. """ generator = check_random_state(random_state) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 4920a180f2b84..115713a5c8ec2 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -14,7 +14,6 @@ FUNCTION_DOCSTRING_IGNORE_LIST = [ "sklearn.datasets._lfw.fetch_lfw_people", "sklearn.datasets._samples_generator.make_gaussian_quantiles", - "sklearn.datasets._samples_generator.make_spd_matrix", "sklearn.datasets._species_distributions.fetch_species_distributions", "sklearn.datasets._svmlight_format_io.load_svmlight_file", "sklearn.datasets._svmlight_format_io.load_svmlight_files", From dd133fe4ab296e7386b6910ae330224c6f411153 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 22 Jul 2022 07:57:57 -0400 Subject: [PATCH 200/251] DOC Update links in user guide (#23972) Co-authored-by: Julien Jerphanion --- doc/computing/computational_performance.rst | 2 +- doc/datasets/loading_other_datasets.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/computing/computational_performance.rst b/doc/computing/computational_performance.rst index ceb0a0af2e66c..a7fc692fbaaa7 100644 --- a/doc/computing/computational_performance.rst +++ b/doc/computing/computational_performance.rst @@ -290,7 +290,7 @@ Optimized BLAS / LAPACK implementations include: - MKL - Apple Accelerate and vecLib frameworks (OSX only) -More information can be found on the `Scipy install page `_ +More information can be found on the `NumPy install page `_ and in this `blog post `_ from Daniel Nouri which has some nice step by step install instructions for diff --git a/doc/datasets/loading_other_datasets.rst b/doc/datasets/loading_other_datasets.rst index 832f1b4810a4f..50997f7b44cd3 100644 --- a/doc/datasets/loading_other_datasets.rst +++ b/doc/datasets/loading_other_datasets.rst @@ -260,7 +260,7 @@ refer to: `Imageio `_ for loading images and videos into numpy arrays * `scipy.io.wavfile.read - `_ + `_ for reading WAV files into a numpy array Categorical (or nominal) features stored as strings (common in pandas DataFrames) From 50eecbc860f9b14617e73f1b10b0cb6d24633400 Mon Sep 17 00:00:00 2001 From: Arturo Amor <86408019+ArturoAmorQ@users.noreply.github.com> Date: Fri, 22 Jul 2022 17:57:20 +0200 Subject: [PATCH 201/251] DOC Improve general organization of text classification example (#23796) --- doc/modules/feature_selection.rst | 4 +- doc/modules/model_evaluation.rst | 8 --- ...ot_document_classification_20newsgroups.py | 52 ++++++++++++++----- .../text/plot_hashing_vs_dict_vectorizer.py | 2 +- 4 files changed, 40 insertions(+), 26 deletions(-) diff --git a/doc/modules/feature_selection.rst b/doc/modules/feature_selection.rst index 1368f04335f18..baa24d86a25b8 100644 --- a/doc/modules/feature_selection.rst +++ b/doc/modules/feature_selection.rst @@ -196,9 +196,7 @@ alpha parameter, the fewer features selected. .. topic:: Examples: - * :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py`: Comparison - of different algorithms for document classification including L1-based - feature selection. + * :ref:`sphx_glr_auto_examples_linear_model_plot_lasso_dense_vs_sparse_data.py`. .. _compressive_sensing: diff --git a/doc/modules/model_evaluation.rst b/doc/modules/model_evaluation.rst index bea1d67123c2c..8a9c28fb96304 100644 --- a/doc/modules/model_evaluation.rst +++ b/doc/modules/model_evaluation.rst @@ -693,10 +693,6 @@ and inferred labels:: for an example of classification report usage for hand-written digits. - * See :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` - for an example of classification report usage for text - documents. - * See :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py` for an example of classification report usage for grid search with nested cross-validation. @@ -813,10 +809,6 @@ precision-recall curve as follows. .. topic:: Examples: - * See :ref:`sphx_glr_auto_examples_text_plot_document_classification_20newsgroups.py` - for an example of :func:`f1_score` usage to classify text - documents. - * See :ref:`sphx_glr_auto_examples_model_selection_plot_grid_search_digits.py` for an example of :func:`precision_score` and :func:`recall_score` usage to estimate parameters using grid search with nested cross-validation. diff --git a/examples/text/plot_document_classification_20newsgroups.py b/examples/text/plot_document_classification_20newsgroups.py index b53920178aa86..7eb14a94a724f 100644 --- a/examples/text/plot_document_classification_20newsgroups.py +++ b/examples/text/plot_document_classification_20newsgroups.py @@ -4,9 +4,13 @@ ====================================================== This is an example showing how scikit-learn can be used to classify documents by -topics using a bag-of-words approach. This example uses a Tf-idf-weighted -document-term sparse matrix to encode the features and demonstrates various -classifiers that can efficiently handle sparse matrices. +topics using a `Bag of Words approach +`_. This example uses a +Tf-idf-weighted document-term sparse matrix to encode the features and +demonstrates various classifiers that can efficiently handle sparse matrices. + +For document analysis via an unsupervised learning approach, see the example +script :ref:`sphx_glr_auto_examples_text_plot_document_clustering.py`. """ @@ -19,11 +23,12 @@ # %% -# Load data -# --------- +# Loading and vectorizing the 20 newsgroups text dataset +# ====================================================== +# # We define a function to load data from :ref:`20newsgroups_dataset`, which -# comprises around 18000 newsgroups posts on 20 topics split in two subsets: one -# for training (or development) and the other one for testing (or for +# comprises around 18,000 newsgroups posts on 20 topics split in two subsets: +# one for training (or development) and the other one for testing (or for # performance evaluation). Note that, by default, the text samples contain some # message metadata such as `'headers'`, `'footers'` (signatures) and `'quotes'` # to other posts. The `fetch_20newsgroups` function therefore accepts a @@ -114,10 +119,20 @@ def load_dataset(verbose=False, remove=()): # %% -# Compare feature effects -# ----------------------- -# We train a first classification model without attempting to strip the metadata -# of the dataset. +# Analysis of a bag-of-words document classifier +# ============================================== +# +# We will now train a classifier twice, once on the text samples including +# metadata and once after stripping the metadata. For both cases we will analyze +# the classification errors on a test set using a confusion matrix and inspect +# the coefficients that define the classification function of the trained +# models. +# +# Model without metadata stripping +# -------------------------------- +# +# We start by using the custom function `load_dataset` to load the data without +# metadata stripping. X_train, X_test, y_train, y_test, feature_names, target_names = load_dataset( verbose=True @@ -247,6 +262,9 @@ def plot_feature_effects(): # classifier to only learn from the "main content" of each text document instead # of relying on the leaked identity of the writers. # +# Model with metadata stripping +# ----------------------------- +# # The `remove` option of the 20 newsgroups dataset loader in scikit-learn allows # to heuristically attempt to filter out some of this unwanted metadata that # makes the classification problem artificially easier. Be aware that such @@ -289,9 +307,14 @@ def plot_feature_effects(): # %% # Benchmarking classifiers -# ------------------------ +# ======================== # -# First we define small benchmarking utilities +# Scikit-learn provides many different kinds of classification algorithms. In +# this section we will train a selection of those classifiers on the same text +# classification problem and measure both their generalization performance +# (accuracy on the test set) and their computation performance (speed), both at +# training time and testing time. For such purpose we define the following +# benchmarking utilities: from sklearn.utils.extmath import density from sklearn import metrics @@ -371,7 +394,8 @@ def benchmark(clf, custom_name=False): # %% # Plot accuracy, training and test time of each classifier -# -------------------------------------------------------- +# ======================================================== +# # The scatter plots show the trade-off between the test accuracy and the # training and testing time of each classifier. diff --git a/examples/text/plot_hashing_vs_dict_vectorizer.py b/examples/text/plot_hashing_vs_dict_vectorizer.py index 44faa35ff6b86..8200c646f69ee 100644 --- a/examples/text/plot_hashing_vs_dict_vectorizer.py +++ b/examples/text/plot_hashing_vs_dict_vectorizer.py @@ -315,7 +315,7 @@ def n_nonzero_columns(X): # %% # We can observe that this is the fastest text tokenization strategy so far, -# assuming the that the downstream machine learning task can tolerate a few +# assuming that the downstream machine learning task can tolerate a few # collisions. # # TfidfVectorizer From 26d4af1b8e5c5d6a6a60c2f8d409105868f39460 Mon Sep 17 00:00:00 2001 From: Brett Cannon Date: Fri, 22 Jul 2022 14:43:44 -0700 Subject: [PATCH 202/251] DOC Clarify the docs for `sklearn.pipeline.Pipeline`'s `steps` parameter (#23973) Co-authored-by: Meekail Zain <34613774+Micky774@users.noreply.github.com> Co-authored-by: Thomas J. Fan --- sklearn/pipeline.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/pipeline.py b/sklearn/pipeline.py index e276ab0ecd25a..086bc4e1f0557 100644 --- a/sklearn/pipeline.py +++ b/sklearn/pipeline.py @@ -75,8 +75,8 @@ class Pipeline(_BaseComposition): ---------- steps : list of tuple List of (name, transform) tuples (implementing `fit`/`transform`) that - are chained, in the order in which they are chained, with the last - object an estimator. + are chained in sequential order. The last transform must be an + estimator. memory : str or object with the joblib.Memory interface, default=None Used to cache the fitted transformers of the pipeline. By default, From 63e376f00b566ad44bbb88072310bf60e8111af6 Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Mon, 25 Jul 2022 17:43:57 +1000 Subject: [PATCH 203/251] DOC Fix typo in `RegressorChain` (#23989) --- sklearn/multioutput.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/multioutput.py b/sklearn/multioutput.py index 24e4cc8dda7e8..095b700e3e5f7 100644 --- a/sklearn/multioutput.py +++ b/sklearn/multioutput.py @@ -853,7 +853,7 @@ class RegressorChain(MetaEstimatorMixin, RegressorMixin, _BaseChain): Parameters ---------- base_estimator : estimator - The base estimator from which the classifier chain is built. + The base estimator from which the regressor chain is built. order : array-like of shape (n_outputs,) or 'random', default=None If `None`, the order will be determined by the order of columns in From 622c08b1ac550a48b6d47b91c3133f8ab5d6f83d Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Mon, 25 Jul 2022 13:20:12 +0530 Subject: [PATCH 204/251] DOC corrected wording in preprocessing.rst (#23980) --- doc/modules/preprocessing.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/modules/preprocessing.rst b/doc/modules/preprocessing.rst index 7e2ee3defec17..9953b95257a19 100644 --- a/doc/modules/preprocessing.rst +++ b/doc/modules/preprocessing.rst @@ -34,8 +34,8 @@ standard deviation. For instance, many elements used in the objective function of a learning algorithm (such as the RBF kernel of Support Vector -Machines or the l1 and l2 regularizers of linear models) assume that -all features are centered around zero and have variance in the same +Machines or the l1 and l2 regularizers of linear models) may assume that +all features are centered around zero or have variance in the same order. If a feature has a variance that is orders of magnitude larger than others, it might dominate the objective function and make the estimator unable to learn from other features correctly as expected. From c15f052a486730b4d124159d669e83f495af537f Mon Sep 17 00:00:00 2001 From: ceh Date: Mon, 25 Jul 2022 09:52:26 +0200 Subject: [PATCH 205/251] [MRG] DOC Fix minor typo in BisectingKMeans docstring (#23986) --- sklearn/cluster/_bisect_k_means.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bisect_k_means.py b/sklearn/cluster/_bisect_k_means.py index c7dc2c5a772e5..90ca5107f67b4 100644 --- a/sklearn/cluster/_bisect_k_means.py +++ b/sklearn/cluster/_bisect_k_means.py @@ -183,7 +183,7 @@ class BisectingKMeans(_BaseKMeans): Notes ----- - It might be inefficient when n_cluster is less than 3, due to unnecassary + It might be inefficient when n_cluster is less than 3, due to unnecessary calculations for that case. Examples From f603a39e20496d15fafd66236ef85b4bf526b285 Mon Sep 17 00:00:00 2001 From: ceh Date: Mon, 25 Jul 2022 18:02:55 +0200 Subject: [PATCH 206/251] DOC Fix typo in PLSSVD method docstrings (#23995) --- sklearn/cross_decomposition/_pls.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/cross_decomposition/_pls.py b/sklearn/cross_decomposition/_pls.py index bceb0c47c21ba..905e0d108d40b 100644 --- a/sklearn/cross_decomposition/_pls.py +++ b/sklearn/cross_decomposition/_pls.py @@ -1038,7 +1038,7 @@ def transform(self, X, Y=None): Returns ------- x_scores : array-like or tuple of array-like - The transformed data `X_tranformed` if `Y is not None`, + The transformed data `X_transformed` if `Y is not None`, `(X_transformed, Y_transformed)` otherwise. """ check_is_fitted(self) @@ -1069,7 +1069,7 @@ def fit_transform(self, X, y=None): Returns ------- out : array-like or tuple of array-like - The transformed data `X_tranformed` if `Y is not None`, + The transformed data `X_transformed` if `Y is not None`, `(X_transformed, Y_transformed)` otherwise. """ return self.fit(X, y).transform(X, y) From 6e05c8e5a542b461d18fc91556b24118b0d80e74 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 16:29:14 +0200 Subject: [PATCH 207/251] CI Error on numpy.VisibleDeprecationWarning in CI (#23971) Co-authored-by: Julien Jerphanion --- build_tools/azure/test_script.sh | 2 +- build_tools/travis/test_script.sh | 2 +- sklearn/metrics/tests/test_pairwise_distances_reduction.py | 3 --- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/build_tools/azure/test_script.sh b/build_tools/azure/test_script.sh index 03e12e8ab4702..3749434b1eb4a 100755 --- a/build_tools/azure/test_script.sh +++ b/build_tools/azure/test_script.sh @@ -51,7 +51,7 @@ if [[ "$COVERAGE" == "true" ]]; then fi if [[ -n "$CHECK_WARNINGS" ]]; then - TEST_CMD="$TEST_CMD -Werror::DeprecationWarning -Werror::FutureWarning" + TEST_CMD="$TEST_CMD -Werror::DeprecationWarning -Werror::FutureWarning -Werror::numpy.VisibleDeprecationWarning" # numpy's 1.19.0's tostring() deprecation is ignored until scipy and joblib # removes its usage diff --git a/build_tools/travis/test_script.sh b/build_tools/travis/test_script.sh index cb5a3dbfeed33..1551ed858d1a1 100755 --- a/build_tools/travis/test_script.sh +++ b/build_tools/travis/test_script.sh @@ -33,7 +33,7 @@ if [[ $TRAVIS_CPU_ARCH == arm64 ]]; then fi if [[ -n $CHECK_WARNINGS ]]; then - TEST_CMD="$TEST_CMD -Werror::DeprecationWarning -Werror::FutureWarning" + TEST_CMD="$TEST_CMD -Werror::DeprecationWarning -Werror::FutureWarning -Werror::numpy.VisibleDeprecationWarning" fi $TEST_CMD sklearn diff --git a/sklearn/metrics/tests/test_pairwise_distances_reduction.py b/sklearn/metrics/tests/test_pairwise_distances_reduction.py index 192f7ef43a6c6..a7d59f6324550 100644 --- a/sklearn/metrics/tests/test_pairwise_distances_reduction.py +++ b/sklearn/metrics/tests/test_pairwise_distances_reduction.py @@ -510,9 +510,6 @@ def test_pairwise_distances_radius_neighbors( neigh_indices_ref.append(ind) neigh_distances_ref.append(dist) - neigh_indices_ref = np.array(neigh_indices_ref) - neigh_distances_ref = np.array(neigh_distances_ref) - neigh_distances, neigh_indices = PairwiseDistancesRadiusNeighborhood.compute( X, Y, From 0813f7588257fd012616b14493c2b33bcec24b61 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Mon, 25 Jul 2022 13:24:57 -0400 Subject: [PATCH 208/251] DOC Fixes docstring for max_features in trees (#23982) --- sklearn/ensemble/_bagging.py | 4 ++-- sklearn/ensemble/_forest.py | 8 ++++---- sklearn/ensemble/_gb.py | 4 ++-- sklearn/ensemble/_iforest.py | 2 +- sklearn/tree/_classes.py | 12 ++++++------ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/sklearn/ensemble/_bagging.py b/sklearn/ensemble/_bagging.py index adac7e063191f..6db09c3996406 100644 --- a/sklearn/ensemble/_bagging.py +++ b/sklearn/ensemble/_bagging.py @@ -561,7 +561,7 @@ class BaggingClassifier(ClassifierMixin, BaseBagging): details). - If int, then draw `max_features` features. - - If float, then draw `max_features * X.shape[1]` features. + - If float, then draw `max(1, int(max_features * n_features_in_))` features. bootstrap : bool, default=True Whether samples are drawn with replacement. If False, sampling @@ -993,7 +993,7 @@ class BaggingRegressor(RegressorMixin, BaseBagging): details). - If int, then draw `max_features` features. - - If float, then draw `max_features * X.shape[1]` features. + - If float, then draw `max(1, int(max_features * n_features_in_))` features. bootstrap : bool, default=True Whether samples are drawn with replacement. If False, sampling diff --git a/sklearn/ensemble/_forest.py b/sklearn/ensemble/_forest.py index 919586001c58e..3212d6bb59457 100644 --- a/sklearn/ensemble/_forest.py +++ b/sklearn/ensemble/_forest.py @@ -1157,7 +1157,7 @@ class RandomForestClassifier(ForestClassifier): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `round(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=sqrt(n_features)`. - If "sqrt", then `max_features=sqrt(n_features)`. @@ -1518,7 +1518,7 @@ class RandomForestRegressor(ForestRegressor): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `round(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=n_features`. - If "sqrt", then `max_features=sqrt(n_features)`. @@ -1829,7 +1829,7 @@ class ExtraTreesClassifier(ForestClassifier): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `round(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=sqrt(n_features)`. - If "sqrt", then `max_features=sqrt(n_features)`. @@ -2177,7 +2177,7 @@ class ExtraTreesRegressor(ForestRegressor): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `round(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=n_features`. - If "sqrt", then `max_features=sqrt(n_features)`. diff --git a/sklearn/ensemble/_gb.py b/sklearn/ensemble/_gb.py index 7151c26cdd203..316a30699b4be 100644 --- a/sklearn/ensemble/_gb.py +++ b/sklearn/ensemble/_gb.py @@ -1125,7 +1125,7 @@ class GradientBoostingClassifier(ClassifierMixin, BaseGradientBoosting): - If int, values must be in the range `[1, inf)`. - If float, values must be in the range `(0.0, 1.0]` and the features - considered at each split will be `int(max_features * n_features)`. + considered at each split will be `max(1, int(max_features * n_features_in_))`. - If 'auto', then `max_features=sqrt(n_features)`. - If 'sqrt', then `max_features=sqrt(n_features)`. - If 'log2', then `max_features=log2(n_features)`. @@ -1701,7 +1701,7 @@ class GradientBoostingRegressor(RegressorMixin, BaseGradientBoosting): - If int, values must be in the range `[1, inf)`. - If float, values must be in the range `(0.0, 1.0]` and the features - considered at each split will be `int(max_features * n_features)`. + considered at each split will be `max(1, int(max_features * n_features_in_))`. - If "auto", then `max_features=n_features`. - If "sqrt", then `max_features=sqrt(n_features)`. - If "log2", then `max_features=log2(n_features)`. diff --git a/sklearn/ensemble/_iforest.py b/sklearn/ensemble/_iforest.py index 4be74d2873b9e..a80cd31294b1c 100644 --- a/sklearn/ensemble/_iforest.py +++ b/sklearn/ensemble/_iforest.py @@ -78,7 +78,7 @@ class IsolationForest(OutlierMixin, BaseBagging): The number of features to draw from X to train each base estimator. - If int, then draw `max_features` features. - - If float, then draw `max_features * X.shape[1]` features. + - If float, then draw `max(1, int(max_features * n_features_in_))` features. bootstrap : bool, default=False If True, individual trees are fit on random subsets of the training diff --git a/sklearn/tree/_classes.py b/sklearn/tree/_classes.py index 79257355a4150..c6e528c4f50f6 100644 --- a/sklearn/tree/_classes.py +++ b/sklearn/tree/_classes.py @@ -729,8 +729,8 @@ class DecisionTreeClassifier(ClassifierMixin, BaseDecisionTree): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `int(max_features * n_features)` features are considered at each - split. + `max(1, int(max_features * n_features_in_))` features are considered at + each split. - If "auto", then `max_features=sqrt(n_features)`. - If "sqrt", then `max_features=sqrt(n_features)`. - If "log2", then `max_features=log2(n_features)`. @@ -1140,7 +1140,7 @@ class DecisionTreeRegressor(RegressorMixin, BaseDecisionTree): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `int(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=n_features`. - If "sqrt", then `max_features=sqrt(n_features)`. @@ -1450,8 +1450,8 @@ class ExtraTreeClassifier(DecisionTreeClassifier): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `int(max_features * n_features)` features are considered at each - split. + `max(1, int(max_features * n_features_in_))` features are considered at + each split. - If "auto", then `max_features=sqrt(n_features)`. - If "sqrt", then `max_features=sqrt(n_features)`. - If "log2", then `max_features=log2(n_features)`. @@ -1730,7 +1730,7 @@ class ExtraTreeRegressor(DecisionTreeRegressor): - If int, then consider `max_features` features at each split. - If float, then `max_features` is a fraction and - `int(max_features * n_features)` features are considered at each + `max(1, int(max_features * n_features_in_))` features are considered at each split. - If "auto", then `max_features=n_features`. - If "sqrt", then `max_features=sqrt(n_features)`. From 2b7d4edae92923f37e0c6060f1da951538cc6e0a Mon Sep 17 00:00:00 2001 From: Sabri Monaf Sabri Date: Mon, 25 Jul 2022 13:40:06 -0400 Subject: [PATCH 209/251] DOC Ensures that `make_gaussian_quantiles` passes numpydoc validation (#23996) --- sklearn/datasets/_samples_generator.py | 3 +-- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/sklearn/datasets/_samples_generator.py b/sklearn/datasets/_samples_generator.py index cd4768f08c63d..c144f9b255a06 100644 --- a/sklearn/datasets/_samples_generator.py +++ b/sklearn/datasets/_samples_generator.py @@ -1637,7 +1637,7 @@ def make_gaussian_quantiles( The number of features for each sample. n_classes : int, default=3 - The number of classes + The number of classes. shuffle : bool, default=True Shuffle the samples. @@ -1662,7 +1662,6 @@ def make_gaussian_quantiles( References ---------- .. [1] J. Zhu, H. Zou, S. Rosset, T. Hastie, "Multi-class AdaBoost", 2009. - """ if n_samples < n_classes: raise ValueError("n_samples must be at least n_classes") diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 115713a5c8ec2..2de2bb998343f 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -13,7 +13,6 @@ FUNCTION_DOCSTRING_IGNORE_LIST = [ "sklearn.datasets._lfw.fetch_lfw_people", - "sklearn.datasets._samples_generator.make_gaussian_quantiles", "sklearn.datasets._species_distributions.fetch_species_distributions", "sklearn.datasets._svmlight_format_io.load_svmlight_file", "sklearn.datasets._svmlight_format_io.load_svmlight_files", From b91b7caecc0dd8cc7b9a33ae298fc7f560d54462 Mon Sep 17 00:00:00 2001 From: Sabri Monaf Sabri Date: Tue, 26 Jul 2022 03:20:37 -0400 Subject: [PATCH 210/251] DOC Fixed sklearn.random_projection.johnson_lindenstrauss_min_dim docstring (#24003) --- sklearn/random_projection.py | 19 +++++++++---------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/sklearn/random_projection.py b/sklearn/random_projection.py index 568a50de695d1..7bda89bfec3b2 100644 --- a/sklearn/random_projection.py +++ b/sklearn/random_projection.py @@ -94,6 +94,15 @@ def johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1): The minimal number of components to guarantee with good probability an eps-embedding with n_samples. + References + ---------- + + .. [1] https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma + + .. [2] Sanjoy Dasgupta and Anupam Gupta, 1999, + "An elementary proof of the Johnson-Lindenstrauss Lemma." + http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.3654 + Examples -------- >>> from sklearn.random_projection import johnson_lindenstrauss_min_dim @@ -105,16 +114,6 @@ def johnson_lindenstrauss_min_dim(n_samples, *, eps=0.1): >>> johnson_lindenstrauss_min_dim([1e4, 1e5, 1e6], eps=0.1) array([ 7894, 9868, 11841]) - - References - ---------- - - .. [1] https://en.wikipedia.org/wiki/Johnson%E2%80%93Lindenstrauss_lemma - - .. [2] Sanjoy Dasgupta and Anupam Gupta, 1999, - "An elementary proof of the Johnson-Lindenstrauss Lemma." - http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.3654 - """ eps = np.asarray(eps) n_samples = np.asarray(n_samples) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 2de2bb998343f..e9445db209d31 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -48,7 +48,6 @@ "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", "sklearn.preprocessing._label.label_binarize", - "sklearn.random_projection.johnson_lindenstrauss_min_dim", "sklearn.svm._bounds.l1_min_c", "sklearn.tree._export.plot_tree", "sklearn.utils.axis0_safe_slice", From 3717739b63f451e0df3f90d028cd608466a1ba0a Mon Sep 17 00:00:00 2001 From: Sabri Monaf Sabri Date: Tue, 26 Jul 2022 03:21:43 -0400 Subject: [PATCH 211/251] DOC Fixed sklearn.preprocessing._label.label_binarize docstring (#24002) Co-authored-by: Guillaume Lemaitre --- sklearn/preprocessing/_label.py | 10 +++++----- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/sklearn/preprocessing/_label.py b/sklearn/preprocessing/_label.py index e7f4a5e337208..caf887e2bb648 100644 --- a/sklearn/preprocessing/_label.py +++ b/sklearn/preprocessing/_label.py @@ -447,6 +447,11 @@ def label_binarize(y, *, classes, neg_label=0, pos_label=1, sparse_output=False) Shape will be (n_samples, 1) for binary problems. Sparse matrix will be of CSR format. + See Also + -------- + LabelBinarizer : Class used to wrap the functionality of label_binarize and + allow for fitting to classes independently of the transform operation. + Examples -------- >>> from sklearn.preprocessing import label_binarize @@ -467,11 +472,6 @@ def label_binarize(y, *, classes, neg_label=0, pos_label=1, sparse_output=False) [0], [0], [1]]) - - See Also - -------- - LabelBinarizer : Class used to wrap the functionality of label_binarize and - allow for fitting to classes independently of the transform operation. """ if not isinstance(y, list): # XXX Workaround that will be removed when list of list format is diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index e9445db209d31..da45dbb9eca8e 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -47,7 +47,6 @@ "sklearn.metrics.pairwise.pairwise_distances_chunked", "sklearn.preprocessing._data.maxabs_scale", "sklearn.preprocessing._data.scale", - "sklearn.preprocessing._label.label_binarize", "sklearn.svm._bounds.l1_min_c", "sklearn.tree._export.plot_tree", "sklearn.utils.axis0_safe_slice", From 0c65e9677b82fa17d407d292af56b2002d5d1fc8 Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Tue, 26 Jul 2022 20:06:14 +1000 Subject: [PATCH 212/251] DOC Improve group based CV splitter docs (#23861) --- doc/modules/cross_validation.rst | 22 ++++++++++++++++------ sklearn/model_selection/_split.py | 16 +++++++++++++++- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/doc/modules/cross_validation.rst b/doc/modules/cross_validation.rst index 3ecab9bd8eb04..2f2c28eef6cea 100644 --- a/doc/modules/cross_validation.rst +++ b/doc/modules/cross_validation.rst @@ -592,8 +592,8 @@ Here is a visualization of the cross-validation behavior. .. _group_cv: -Cross-validation iterators for grouped data. --------------------------------------------- +Cross-validation iterators for grouped data +------------------------------------------- The i.i.d. assumption is broken if the underlying generative process yield groups of dependent samples. @@ -641,7 +641,8 @@ Imagine you have three subjects, each with an associated number from 1 to 3:: Each subject is in a different testing fold, and the same subject is never in both testing and training. Notice that the folds do not have exactly the same -size due to the imbalance in the data. +size due to the imbalance in the data. If class proportions must be balanced +across folds, :class:`StratifiedGroupKFold` is a better option. Here is a visualization of the cross-validation behavior. @@ -650,6 +651,11 @@ Here is a visualization of the cross-validation behavior. :align: center :scale: 75% +Similar to :class:`KFold`, the test sets from :class:`GroupKFold` will form a +complete partition of all the data. Unlike :class:`KFold`, :class:`GroupKFold` +is not randomized at all, whereas :class:`KFold` is randomized when +``shuffle=True``. + .. _stratified_group_k_fold: StratifiedGroupKFold @@ -713,7 +719,8 @@ group information can be used to encode arbitrary domain specific pre-defined cross-validation folds. Each training set is thus constituted by all the samples except the ones -related to a specific group. +related to a specific group. This is basically the same as +:class:`LeavePGroupsOut` with ``n_groups=1``. For example, in the cases of multiple experiments, :class:`LeaveOneGroupOut` can be used to create a cross-validation based on the different experiments: @@ -741,7 +748,9 @@ Leave P Groups Out ^^^^^^^^^^^^^^^^^^ :class:`LeavePGroupsOut` is similar as :class:`LeaveOneGroupOut`, but removes -samples related to :math:`P` groups for each training/test set. +samples related to :math:`P` groups for each training/test set. All possible +combinations of :math:`P` groups are left out, meaning test sets will overlap +for :math:`P>1`. Example of Leave-2-Group Out:: @@ -765,7 +774,8 @@ Group Shuffle Split The :class:`GroupShuffleSplit` iterator behaves as a combination of :class:`ShuffleSplit` and :class:`LeavePGroupsOut`, and generates a sequence of randomized partitions in which a subset of groups are held -out for each split. +out for each split. Each train/test split is performed independently meaning +there is no guaranteed relationship between successive test sets. Here is a usage example:: diff --git a/sklearn/model_selection/_split.py b/sklearn/model_selection/_split.py index d2a0b5e1fc329..203f2362b8665 100644 --- a/sklearn/model_selection/_split.py +++ b/sklearn/model_selection/_split.py @@ -422,7 +422,7 @@ class KFold(_BaseKFold): See Also -------- - StratifiedKFold : Takes group information into account to avoid building + StratifiedKFold : Takes class information into account to avoid building folds with imbalanced class distributions (for binary or multiclass classification tasks). @@ -504,6 +504,10 @@ class GroupKFold(_BaseKFold): -------- LeaveOneGroupOut : For splitting the data according to explicit domain-specific stratification of the dataset. + + StratifiedKFold : Takes class information into account to avoid building + folds with imbalanced class proportions (for binary or multiclass + classification tasks). """ def __init__(self, n_splits=5): @@ -1147,6 +1151,10 @@ class LeaveOneGroupOut(BaseCrossValidator): [[1 2] [3 4]] [[5 6] [7 8]] [1 2] [1 2] + + See also + -------- + GroupKFold: K-fold iterator variant with non-overlapping groups. """ def _iter_test_masks(self, X, y, groups): @@ -1799,6 +1807,12 @@ class GroupShuffleSplit(ShuffleSplit): ... print("TRAIN:", train_idx, "TEST:", test_idx) TRAIN: [2 3 4 5 6 7] TEST: [0 1] TRAIN: [0 1 5 6 7] TEST: [2 3 4] + + See Also + -------- + ShuffleSplit : Shuffles samples to create independent test/train sets. + + LeavePGroupsOut : Train set leaves out all possible subsets of `p` groups. """ def __init__( From 0baf0cba5f24c277a1dad54918b70f96c56f5559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Tue, 26 Jul 2022 16:38:01 +0200 Subject: [PATCH 213/251] TST Make sure memmap are aligned when OpenBLAS detects Prescott architecture (#23994) --- sklearn/utils/_testing.py | 61 +++++++++++++++++++++++------ sklearn/utils/estimator_checks.py | 21 +--------- sklearn/utils/tests/test_testing.py | 23 ++++++----- 3 files changed, 65 insertions(+), 40 deletions(-) diff --git a/sklearn/utils/_testing.py b/sklearn/utils/_testing.py index a3ff844083998..4851322197d7b 100644 --- a/sklearn/utils/_testing.py +++ b/sklearn/utils/_testing.py @@ -22,6 +22,7 @@ import re import contextlib from collections.abc import Iterable +from collections.abc import Sequence import scipy as sp from functools import wraps @@ -60,6 +61,7 @@ check_is_fitted, check_X_y, ) +from sklearn.utils.fixes import threadpool_info __all__ = [ @@ -602,6 +604,38 @@ def __exit__(self, exc_type, exc_val, exc_tb): _delete_folder(self.temp_folder) +def _create_memmap_backed_array(array, filename, mmap_mode): + # https://numpy.org/doc/stable/reference/generated/numpy.memmap.html + fp = np.memmap(filename, dtype=array.dtype, mode="w+", shape=array.shape) + fp[:] = array[:] # write array to memmap array + fp.flush() + memmap_backed_array = np.memmap( + filename, dtype=array.dtype, mode=mmap_mode, shape=array.shape + ) + return memmap_backed_array + + +def _create_aligned_memmap_backed_arrays(data, mmap_mode, folder): + if isinstance(data, np.ndarray): + filename = op.join(folder, "data.dat") + return _create_memmap_backed_array(data, filename, mmap_mode) + + if isinstance(data, Sequence) and all( + isinstance(each, np.ndarray) for each in data + ): + return [ + _create_memmap_backed_array( + array, op.join(folder, f"data{index}.dat"), mmap_mode + ) + for index, array in enumerate(data) + ] + + raise ValueError( + "When creating aligned memmap-backed arrays, input must be a single array or a" + " sequence of arrays" + ) + + def create_memmap_backed_data(data, mmap_mode="r", return_folder=False, aligned=False): """ Parameters @@ -616,18 +650,23 @@ def create_memmap_backed_data(data, mmap_mode="r", return_folder=False, aligned= """ temp_folder = tempfile.mkdtemp(prefix="sklearn_testing_") atexit.register(functools.partial(_delete_folder, temp_folder, warn=True)) + # OpenBLAS is known to segfault with unaligned data on the Prescott + # architecture so force aligned=True on Prescott. For more details, see: + # https://github.com/scipy/scipy/issues/14886 + has_prescott_openblas = any( + True + for info in threadpool_info() + if info["internal_api"] == "openblas" + # Prudently assume Prescott might be the architecture if it is unknown. + and info.get("architecture", "prescott").lower() == "prescott" + ) + if has_prescott_openblas: + aligned = True + if aligned: - if isinstance(data, np.ndarray) and data.flags.aligned: - # https://numpy.org/doc/stable/reference/generated/numpy.memmap.html - filename = op.join(temp_folder, "data.dat") - fp = np.memmap(filename, dtype=data.dtype, mode="w+", shape=data.shape) - fp[:] = data[:] # write data to memmap array - fp.flush() - memmap_backed_data = np.memmap( - filename, dtype=data.dtype, mode=mmap_mode, shape=data.shape - ) - else: - raise ValueError("If aligned=True, input must be a single numpy array.") + memmap_backed_data = _create_aligned_memmap_backed_arrays( + data, mmap_mode, temp_folder + ) else: filename = op.join(temp_folder, "data.pkl") joblib.dump(data, filename) diff --git a/sklearn/utils/estimator_checks.py b/sklearn/utils/estimator_checks.py index 3443ffe19a8aa..979053d4a61e2 100644 --- a/sklearn/utils/estimator_checks.py +++ b/sklearn/utils/estimator_checks.py @@ -54,7 +54,6 @@ from ..model_selection import ShuffleSplit from ..model_selection._validation import _safe_split from ..metrics.pairwise import rbf_kernel, linear_kernel, pairwise_distances -from ..utils.fixes import threadpool_info from ..utils.fixes import sp_version from ..utils.fixes import parse_version from ..utils.validation import check_is_fitted @@ -2118,22 +2117,6 @@ def check_classifiers_one_label(name, classifier_orig): assert_array_equal(classifier.predict(X_test), y, err_msg=error_string_predict) -def _create_memmap_backed_data(numpy_arrays): - # OpenBLAS is known to segfault with unaligned data on the Prescott architecture - # See: https://github.com/scipy/scipy/issues/14886 - has_prescott_openblas = any( - True - for info in threadpool_info() - if info["internal_api"] == "openblas" - # Prudently assume Prescott might be the architecture if it is unknown. - and info.get("architecture", "prescott").lower() == "prescott" - ) - return [ - create_memmap_backed_data(array, aligned=has_prescott_openblas) - for array in numpy_arrays - ] - - @ignore_warnings # Warnings are raised by decision function def check_classifiers_train( name, classifier_orig, readonly_memmap=False, X_dtype="float64" @@ -2151,7 +2134,7 @@ def check_classifiers_train( X_b -= X_b.min() if readonly_memmap: - X_m, y_m, X_b, y_b = _create_memmap_backed_data([X_m, y_m, X_b, y_b]) + X_m, y_m, X_b, y_b = create_memmap_backed_data([X_m, y_m, X_b, y_b]) problems = [(X_b, y_b)] tags = _safe_tags(classifier_orig) @@ -2819,7 +2802,7 @@ def check_regressors_train( y_ = y if readonly_memmap: - X, y, y_ = _create_memmap_backed_data([X, y, y_]) + X, y, y_ = create_memmap_backed_data([X, y, y_]) if not hasattr(regressor, "alphas") and hasattr(regressor, "alpha"): # linear regressors need to set alpha, but not generalized CV ones diff --git a/sklearn/utils/tests/test_testing.py b/sklearn/utils/tests/test_testing.py index fca7a07b14c19..75f35a3dea83c 100644 --- a/sklearn/utils/tests/test_testing.py +++ b/sklearn/utils/tests/test_testing.py @@ -702,16 +702,19 @@ def test_create_memmap_backed_data(monkeypatch, aligned): assert registration_counter.nb_calls == 3 input_list = [input_array, input_array + 1, input_array + 2] - if aligned: - with pytest.raises( - ValueError, match="If aligned=True, input must be a single numpy array." - ): - create_memmap_backed_data(input_list, aligned=True) - else: - mmap_data_list = create_memmap_backed_data(input_list, aligned=False) - for input_array, data in zip(input_list, mmap_data_list): - check_memmap(input_array, data) - assert registration_counter.nb_calls == 4 + mmap_data_list = create_memmap_backed_data(input_list, aligned=aligned) + for input_array, data in zip(input_list, mmap_data_list): + check_memmap(input_array, data) + assert registration_counter.nb_calls == 4 + + with pytest.raises( + ValueError, + match=( + "When creating aligned memmap-backed arrays, input must be a single array" + " or a sequence of arrays" + ), + ): + create_memmap_backed_data([input_array, "not-an-array"], aligned=True) @pytest.mark.parametrize("dtype", [np.float32, np.float64, np.int32, np.int64]) From 00b2e2d48110a0dad76ff4278280a37fe818ea48 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Wed, 27 Jul 2022 08:00:53 -0400 Subject: [PATCH 214/251] FIX Show a HTML repr for meta-estimatosr with invalid parameters (#24015) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jérémie du Boisberranger <34657725+jeremiedbb@users.noreply.github.com> --- doc/whats_new/v1.1.rst | 3 +++ sklearn/utils/_estimator_html_repr.py | 13 ++++++++++--- sklearn/utils/tests/test_estimator_html_repr.py | 11 +++++++++++ 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index ab75b78b45758..8bb394b91d837 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -12,6 +12,9 @@ Version 1.1.2 Changelog --------- +- |Fix| A default HTML representation is shown for meta-estimators with invalid + parameters. :pr:`24015` by `Thomas Fan`_. + :mod:`sklearn.cluster` ...................... diff --git a/sklearn/utils/_estimator_html_repr.py b/sklearn/utils/_estimator_html_repr.py index f8911b5c38b08..e5291b6de3701 100644 --- a/sklearn/utils/_estimator_html_repr.py +++ b/sklearn/utils/_estimator_html_repr.py @@ -1,5 +1,4 @@ from contextlib import closing -from contextlib import suppress from io import StringIO from string import Template import html @@ -103,8 +102,16 @@ def _write_label_html( def _get_visual_block(estimator): """Generate information about how to display an estimator.""" - with suppress(AttributeError): - return estimator._sk_visual_block_() + if hasattr(estimator, "_sk_visual_block_"): + try: + return estimator._sk_visual_block_() + except Exception: + return _VisualBlock( + "single", + estimator, + names=estimator.__class__.__name__, + name_details=str(estimator), + ) if isinstance(estimator, str): return _VisualBlock( diff --git a/sklearn/utils/tests/test_estimator_html_repr.py b/sklearn/utils/tests/test_estimator_html_repr.py index 91644819864eb..4624896abd307 100644 --- a/sklearn/utils/tests/test_estimator_html_repr.py +++ b/sklearn/utils/tests/test_estimator_html_repr.py @@ -309,3 +309,14 @@ def test_show_arrow_pipeline(): 'class="sk-toggleable__label sk-toggleable__label-arrow">Pipeline' in html_output ) + + +def test_invalid_parameters_in_stacking(): + """Invalidate stacking configuration uses default repr. + + Non-regression test for #24009. + """ + stacker = StackingClassifier(estimators=[]) + + html_output = estimator_html_repr(stacker) + assert html.escape(str(stacker)) in html_output From f6fc92bae48ff1d4611f11644b23c96a6f693dc4 Mon Sep 17 00:00:00 2001 From: Alexandre Perez-Lebel <33580936+aperezlebel@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:17:05 +0200 Subject: [PATCH 215/251] DOC Give local recommendations about IterativeImputer in docstrings (#23701) Co-authored-by: Guillaume Lemaitre --- sklearn/impute/_iterative.py | 15 ++++++++++++++- sklearn/impute/_knn.py | 6 +++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/sklearn/impute/_iterative.py b/sklearn/impute/_iterative.py index f6c32a6818455..12032c89d949d 100644 --- a/sklearn/impute/_iterative.py +++ b/sklearn/impute/_iterative.py @@ -183,7 +183,10 @@ class IterativeImputer(_BaseImputer): See Also -------- - SimpleImputer : Univariate imputation of missing values. + SimpleImputer : Univariate imputer for completing missing values + with simple strategies. + KNNImputer : Multivariate imputer that estimates missing features using + nearest samples. Notes ----- @@ -194,6 +197,16 @@ class IterativeImputer(_BaseImputer): Features which contain all missing values at :meth:`fit` are discarded upon :meth:`transform`. + Using defaults, the imputer scales in :math:`\\mathcal{O}(knp^3\\min(n,p))` + where :math:`k` = `max_iter`, :math:`n` the number of samples and + :math:`p` the number of features. It thus becomes prohibitively costly when + the number of features increases. Setting + `n_nearest_features << n_features`, `skip_complete=True` or increasing `tol` + can help to reduce its computational cost. + + Depending on the nature of missing values, simple imputers can be + preferable in a prediction context. + References ---------- .. [1] `Stef van Buuren, Karin Groothuis-Oudshoorn (2011). "mice: diff --git a/sklearn/impute/_knn.py b/sklearn/impute/_knn.py index 497bcfafb074a..cac960e9a3436 100644 --- a/sklearn/impute/_knn.py +++ b/sklearn/impute/_knn.py @@ -90,10 +90,10 @@ class KNNImputer(_BaseImputer): See Also -------- - SimpleImputer : Imputation transformer for completing missing values + SimpleImputer : Univariate imputer for completing missing values with simple strategies. - IterativeImputer : Multivariate imputer that estimates each feature - from all the others. + IterativeImputer : Multivariate imputer that estimates values to impute for + each feature with missing values from all the others. References ---------- From 08f7e105220fce2baae051b00b37890b19d4f7b5 Mon Sep 17 00:00:00 2001 From: Alexandre Perez-Lebel <33580936+aperezlebel@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:22:17 +0200 Subject: [PATCH 216/251] DOC Give local recommendations about SimpleImputer in docstring (#23714) Co-authored-by: Guillaume Lemaitre --- sklearn/impute/_base.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/sklearn/impute/_base.py b/sklearn/impute/_base.py index bb4bfed8098bf..4a000d0f11573 100644 --- a/sklearn/impute/_base.py +++ b/sklearn/impute/_base.py @@ -130,7 +130,10 @@ def _more_tags(self): class SimpleImputer(_BaseImputer): - """Imputation transformer for completing missing values. + """Univariate imputer for completing missing values with simple strategies. + + Replace missing values using a descriptive statistic (e.g. mean, median, or + most frequent) along each column, or using a constant value. Read more in the :ref:`User Guide `. @@ -218,13 +221,21 @@ class SimpleImputer(_BaseImputer): See Also -------- - IterativeImputer : Multivariate imputation of missing values. + IterativeImputer : Multivariate imputer that estimates values to impute for + each feature with missing values from all the others. + KNNImputer : Multivariate imputer that estimates missing features using + nearest samples. Notes ----- Columns which only contained missing values at :meth:`fit` are discarded upon :meth:`transform` if strategy is not `"constant"`. + In a prediction context, simple imputation usually performs poorly when + associated with a weak learner. However, with a powerful learner, it can + lead to as good or better performance than complex imputation such as + :class:`~sklearn.impute.IterativeImputer` or :class:`~sklearn.impute.KNNImputer`. + Examples -------- >>> import numpy as np From 7b9d8053760c06cfe45da8cbe103f1c7114cea59 Mon Sep 17 00:00:00 2001 From: Timofei Kornev Date: Wed, 27 Jul 2022 16:28:59 +0200 Subject: [PATCH 217/251] DOC Improve doc for GroupKFold and StratifiedGroupKFold (#23948) Co-authored-by: Julien Jerphanion --- sklearn/model_selection/_split.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/sklearn/model_selection/_split.py b/sklearn/model_selection/_split.py index 203f2362b8665..3be828b4c6114 100644 --- a/sklearn/model_selection/_split.py +++ b/sklearn/model_selection/_split.py @@ -453,8 +453,8 @@ def _iter_test_indices(self, X, y=None, groups=None): class GroupKFold(_BaseKFold): """K-fold iterator variant with non-overlapping groups. - The same group will not appear in two different folds (the number of - distinct groups has to be at least equal to the number of folds). + Each group will appear exactly once in the test set across all folds (the + number of distinct groups has to be at least equal to the number of folds). The folds are approximately balanced in the sense that the number of distinct groups is approximately the same in each fold. @@ -763,10 +763,11 @@ class StratifiedGroupKFold(_BaseKFold): return stratified folds with non-overlapping groups. The folds are made by preserving the percentage of samples for each class. - The same group will not appear in two different folds (the number of - distinct groups has to be at least equal to the number of folds). + Each group will appear exactly once in the test set across all folds (the + number of distinct groups has to be at least equal to the number of folds). - The difference between GroupKFold and StratifiedGroupKFold is that + The difference between :class:`~sklearn.model_selection.GroupKFold` + and :class:`~sklearn.model_selection.StratifiedGroupKFold` is that the former attempts to create balanced folds such that the number of distinct groups is approximately the same in each fold, whereas StratifiedGroupKFold attempts to create folds which preserve the From d5527a840568c6782f62446175f4fc82799d9f0b Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Thu, 28 Jul 2022 18:58:40 +1000 Subject: [PATCH 218/251] DOC Add glossary entry 'density estimator' (#23979) Co-authored-by: Thomas J. Fan --- doc/glossary.rst | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/glossary.rst b/doc/glossary.rst index 32d228c67d562..ff3a3da0cbfb7 100644 --- a/doc/glossary.rst +++ b/doc/glossary.rst @@ -835,7 +835,13 @@ Class APIs and Estimator Types * :term:`predict` if :term:`inductive` density estimator - TODO + An :term:`unsupervised` estimation of input probability density + function. Commonly used techniques are: + + * :ref:`kernel_density` - uses a kernel function, controlled by the + bandwidth parameter to represent density; + * :ref:`Gaussian mixture ` - uses mixture of Gaussian models + to represent density. estimator estimators From db6e8b52e66ae51e76e87dacafa535076f2b77fa Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Thu, 28 Jul 2022 05:26:29 -0400 Subject: [PATCH 219/251] DOC Adds example on how to use column transformer with vectorizer (#24018) Co-authored-by: Guillaume Lemaitre --- sklearn/compose/_column_transformer.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sklearn/compose/_column_transformer.py b/sklearn/compose/_column_transformer.py index 15f1424498856..84e122fab3cc8 100644 --- a/sklearn/compose/_column_transformer.py +++ b/sklearn/compose/_column_transformer.py @@ -190,6 +190,23 @@ class ColumnTransformer(TransformerMixin, _BaseComposition): >>> ct.fit_transform(X) array([[0. , 1. , 0.5, 0.5], [0.5, 0.5, 0. , 1. ]]) + + :class:`ColumnTransformer` can be configured with a transformer that requires + a 1d array by setting the column to a string: + + >>> from sklearn.feature_extraction import FeatureHasher + >>> from sklearn.preprocessing import MinMaxScaler + >>> import pandas as pd # doctest: +SKIP + >>> X = pd.DataFrame({ + ... "documents": ["First item", "second one here", "Is this the last?"], + ... "width": [3, 4, 5], + ... }) # doctest: +SKIP + >>> # "documents" is a string which configures ColumnTransformer to + >>> # pass the documents column as a 1d array to the FeatureHasher + >>> ct = ColumnTransformer( + ... [("text_preprocess", FeatureHasher(input_type="string"), "documents"), + ... ("num_preprocess", MinMaxScaler(), ["width"])]) + >>> X_trans = ct.fit_transform(X) # doctest: +SKIP """ _required_parameters = ["transformers"] From 23c569a1d21626edb06fd02f0b940553429263ff Mon Sep 17 00:00:00 2001 From: Kirandevraj Date: Thu, 28 Jul 2022 15:00:19 +0530 Subject: [PATCH 220/251] DOC add information about 0 dissimilarity values in `smacof` (#23999) Co-authored-by: Guillaume Lemaitre --- sklearn/manifold/_mds.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sklearn/manifold/_mds.py b/sklearn/manifold/_mds.py index 930f8d19b7b5e..9acbe8f363a70 100644 --- a/sklearn/manifold/_mds.py +++ b/sklearn/manifold/_mds.py @@ -36,6 +36,8 @@ def _smacof_single( metric : bool, default=True Compute metric or nonmetric SMACOF algorithm. + When ``False`` (i.e. non-metric MDS), dissimilarities with 0 are considered as + missing values. n_components : int, default=2 Number of dimensions in which to immerse the dissimilarities. If an @@ -180,6 +182,8 @@ def smacof( metric : bool, default=True Compute metric or nonmetric SMACOF algorithm. + When ``False`` (i.e. non-metric MDS), dissimilarities with 0 are considered as + missing values. n_components : int, default=2 Number of dimensions in which to immerse the dissimilarities. If an @@ -318,6 +322,8 @@ class MDS(BaseEstimator): metric : bool, default=True If ``True``, perform metric MDS; otherwise, perform nonmetric MDS. + When ``False`` (i.e. non-metric MDS), dissimilarities with 0 are considered as + missing values. n_init : int, default=4 Number of times the SMACOF algorithm will be run with different From b634e46df9a947b6a7fc9227a2691b55a7684a74 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 28 Jul 2022 18:02:29 +0200 Subject: [PATCH 221/251] DOC correct equation in BernoulliNB (#24038) --- doc/modules/naive_bayes.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/modules/naive_bayes.rst b/doc/modules/naive_bayes.rst index b2dd4cf5a7cd3..3b566465f65cc 100644 --- a/doc/modules/naive_bayes.rst +++ b/doc/modules/naive_bayes.rst @@ -197,7 +197,7 @@ The decision rule for Bernoulli naive Bayes is based on .. math:: - P(x_i \mid y) = P(i \mid y) x_i + (1 - P(i \mid y)) (1 - x_i) + P(x_i \mid y) = P(x_i = 1 \mid y) x_i + (1 - P(x_i = 1 \mid y)) (1 - x_i) which differs from multinomial NB's rule in that it explicitly penalizes the non-occurrence of a feature :math:`i` @@ -229,10 +229,10 @@ It is advisable to evaluate both models, if time permits. Categorical Naive Bayes ----------------------- -:class:`CategoricalNB` implements the categorical naive Bayes -algorithm for categorically distributed data. It assumes that each feature, -which is described by the index :math:`i`, has its own categorical -distribution. +:class:`CategoricalNB` implements the categorical naive Bayes +algorithm for categorically distributed data. It assumes that each feature, +which is described by the index :math:`i`, has its own categorical +distribution. For each feature :math:`i` in the training set :math:`X`, :class:`CategoricalNB` estimates a categorical distribution for each feature i From d462ae23784603059f8199b0bceaef8d44f28d38 Mon Sep 17 00:00:00 2001 From: Sean Atukorala Date: Thu, 28 Jul 2022 13:13:13 -0400 Subject: [PATCH 222/251] DOC Added extra documentation in MiniBatchKMean for reassignment_ratio (#23975) Co-authored-by: Thomas J. Fan --- sklearn/cluster/_kmeans.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/sklearn/cluster/_kmeans.py b/sklearn/cluster/_kmeans.py index 4c37664e1a581..70a595936b41c 100644 --- a/sklearn/cluster/_kmeans.py +++ b/sklearn/cluster/_kmeans.py @@ -1730,6 +1730,12 @@ class MiniBatchKMeans(_BaseKMeans): ----- See https://www.eecs.tufts.edu/~dsculley/papers/fastkmeans.pdf + When there are too few points in the dataset, some centers may be + duplicated, which means that a proper clustering in terms of the number + of requesting clusters and the number of returned clusters will not + always match. One solution is to set `reassignment_ratio=0`, which + prevents reassignments of clusters that are too small. + Examples -------- >>> from sklearn.cluster import MiniBatchKMeans From 864c6b177570429faa2b20080fe8b8fa5b4c7d64 Mon Sep 17 00:00:00 2001 From: Maxi Marufo <31772558+maxi-marufo@users.noreply.github.com> Date: Fri, 29 Jul 2022 05:21:53 -0300 Subject: [PATCH 223/251] DOC Adds 'scoring' to plot_learning_curve example (#16900) Co-authored-by: Maximiliano Marufo Co-authored-by: Julien Jerphanion --- examples/model_selection/plot_learning_curve.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/examples/model_selection/plot_learning_curve.py b/examples/model_selection/plot_learning_curve.py index 25f43d8b8a3e4..5430f673d76a5 100644 --- a/examples/model_selection/plot_learning_curve.py +++ b/examples/model_selection/plot_learning_curve.py @@ -35,6 +35,7 @@ def plot_learning_curve( ylim=None, cv=None, n_jobs=None, + scoring=None, train_sizes=np.linspace(0.1, 1.0, 5), ): """ @@ -86,6 +87,11 @@ def plot_learning_curve( ``-1`` means using all processors. See :term:`Glossary ` for more details. + scoring : str or callable, default=None + A str (see model evaluation documentation) or + a scorer callable object / function with signature + ``scorer(estimator, X, y)``. + train_sizes : array-like of shape (n_ticks,) Relative or absolute numbers of training examples that will be used to generate the learning curve. If the ``dtype`` is float, it is regarded @@ -109,6 +115,7 @@ def plot_learning_curve( estimator, X, y, + scoring=scoring, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes, @@ -189,7 +196,15 @@ def plot_learning_curve( estimator = GaussianNB() plot_learning_curve( - estimator, title, X, y, axes=axes[:, 0], ylim=(0.7, 1.01), cv=cv, n_jobs=4 + estimator, + title, + X, + y, + axes=axes[:, 0], + ylim=(0.7, 1.01), + cv=cv, + n_jobs=4, + scoring="accuracy", ) title = r"Learning Curves (SVM, RBF kernel, $\gamma=0.001$)" From 86583cde4f0a69a92b08fb4aaa2abbf79d8bf955 Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Fri, 29 Jul 2022 18:36:47 +1000 Subject: [PATCH 224/251] DOC Clarify threshold param in SelectFromModel (#24039) --- sklearn/feature_selection/_from_model.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sklearn/feature_selection/_from_model.py b/sklearn/feature_selection/_from_model.py index f9e5f29395908..7c78902fcb172 100644 --- a/sklearn/feature_selection/_from_model.py +++ b/sklearn/feature_selection/_from_model.py @@ -97,9 +97,9 @@ class SelectFromModel(MetaEstimatorMixin, SelectorMixin, BaseEstimator): threshold : str or float, default=None The threshold value to use for feature selection. Features whose - importance is greater or equal are kept while the others are - discarded. If "median" (resp. "mean"), then the ``threshold`` value is - the median (resp. the mean) of the feature importances. A scaling + absolute importance value is greater or equal are kept while the others + are discarded. If "median" (resp. "mean"), then the ``threshold`` value + is the median (resp. the mean) of the feature importances. A scaling factor (e.g., "1.25*mean") may also be used. If None and if the estimator has a parameter penalty set to l1, either explicitly or implicitly (e.g, Lasso), the threshold used is 1e-5. From 632a7d57d110767a2cd928efe50abf0230db6cdb Mon Sep 17 00:00:00 2001 From: Henry Sorsky <36887638+hsorsky@users.noreply.github.com> Date: Fri, 29 Jul 2022 05:11:32 -0400 Subject: [PATCH 225/251] FIX Allow `BaseEstimator.get_params` to handle `type` type params (#24017) Co-authored-by: Guillaume Lemaitre Co-authored-by: Thomas J. Fan --- doc/whats_new/v1.1.rst | 7 +++++++ sklearn/base.py | 2 +- sklearn/tests/test_base.py | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 8bb394b91d837..30e0519570161 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -15,6 +15,13 @@ Changelog - |Fix| A default HTML representation is shown for meta-estimators with invalid parameters. :pr:`24015` by `Thomas Fan`_. +:mod:`sklearn.base` +...................... + +- |Fix| The `get_params` method of the :class:`BaseEstimator` class now supports + estimators with `type`-type params that have the `get_params` method. + :pr:`24017` by :user:`Henry Sorsky `. + :mod:`sklearn.cluster` ...................... diff --git a/sklearn/base.py b/sklearn/base.py index 3bf19fb96f0c3..8e64ab3ac4156 100644 --- a/sklearn/base.py +++ b/sklearn/base.py @@ -209,7 +209,7 @@ def get_params(self, deep=True): out = dict() for key in self._get_param_names(): value = getattr(self, key) - if deep and hasattr(value, "get_params"): + if deep and hasattr(value, "get_params") and not isinstance(value, type): deep_items = value.get_params().items() out.update((key + "__" + k, val) for k, val in deep_items) out[key] = value diff --git a/sklearn/tests/test_base.py b/sklearn/tests/test_base.py index 31d4263824ae0..3e1915c10af79 100644 --- a/sklearn/tests/test_base.py +++ b/sklearn/tests/test_base.py @@ -229,7 +229,7 @@ def test_str(): def test_get_params(): - test = T(K(), K()) + test = T(K(), K) assert "a__d" in test.get_params(deep=True) assert "a__d" not in test.get_params(deep=False) From a712267bbcb5afb0982bb099d0818ed3223ce01d Mon Sep 17 00:00:00 2001 From: Stefanie Molin <24376333+stefmolin@users.noreply.github.com> Date: Mon, 1 Aug 2022 02:40:07 -0400 Subject: [PATCH 226/251] DOC Add note about deactivating and reactivating the conda env after installing compilers. (#24062) Co-authored-by: Guillaume Lemaitre --- doc/developers/advanced_installation.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/doc/developers/advanced_installation.rst b/doc/developers/advanced_installation.rst index 061034c72f925..658c1ff4c945d 100644 --- a/doc/developers/advanced_installation.rst +++ b/doc/developers/advanced_installation.rst @@ -296,6 +296,12 @@ forge using the following command: which should include ``compilers`` and ``llvm-openmp``. +.. note:: + + If you installed these packages after creating and activating a new conda + environment, you will need to first deactivate and then reactivate the + environment for these changes to take effect. + The compilers meta-package will automatically set custom environment variables: From 42e56720ce0f3516ea6ce827cb3e54065bfad7bc Mon Sep 17 00:00:00 2001 From: Julien Jerphanion Date: Mon, 1 Aug 2022 13:27:57 +0200 Subject: [PATCH 227/251] FIX Support F-contiguous arrays for `PairwiseDistancesReductions`-backed estimators (#23990) --- doc/whats_new/v1.1.rst | 4 ++++ sklearn/metrics/tests/test_pairwise.py | 8 ++++++++ .../tests/test_pairwise_distances_reduction.py | 3 +++ sklearn/tests/test_common.py | 18 ++++++++++++++++++ 4 files changed, 33 insertions(+) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 30e0519570161..7e846571fd206 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -15,6 +15,10 @@ Changelog - |Fix| A default HTML representation is shown for meta-estimators with invalid parameters. :pr:`24015` by `Thomas Fan`_. +- |Fix| Add support for F-contiguous arrays for estimators and functions whose back-end + have been changed in 1.1. + :pr:`23990` by :user:`Julien Jerphanion `. + :mod:`sklearn.base` ...................... diff --git a/sklearn/metrics/tests/test_pairwise.py b/sklearn/metrics/tests/test_pairwise.py index f14c558d5a3c1..31964e2d182dd 100644 --- a/sklearn/metrics/tests/test_pairwise.py +++ b/sklearn/metrics/tests/test_pairwise.py @@ -534,6 +534,14 @@ def test_pairwise_distances_argmin_min(dtype): assert_array_equal(argmin_0, argmin_1) + # F-contiguous arrays must be supported and must return identical results. + argmin_C_contiguous = pairwise_distances_argmin(X, Y) + argmin_F_contiguous = pairwise_distances_argmin( + np.asfortranarray(X), np.asfortranarray(Y) + ) + + assert_array_equal(argmin_C_contiguous, argmin_F_contiguous) + def _reduce_func(dist, start): return dist[:, :100] diff --git a/sklearn/metrics/tests/test_pairwise_distances_reduction.py b/sklearn/metrics/tests/test_pairwise_distances_reduction.py index a7d59f6324550..c6a71596e3472 100644 --- a/sklearn/metrics/tests/test_pairwise_distances_reduction.py +++ b/sklearn/metrics/tests/test_pairwise_distances_reduction.py @@ -121,6 +121,9 @@ def test_pairwise_distances_reduction_is_usable_for(): assert not PairwiseDistancesReduction.is_usable_for(csr_matrix(X), Y, metric) assert not PairwiseDistancesReduction.is_usable_for(X, csr_matrix(Y), metric) + # F-ordered arrays are not supported + assert not PairwiseDistancesReduction.is_usable_for(np.asfortranarray(X), Y, metric) + def test_argkmin_factory_method_wrong_usages(): rng = np.random.RandomState(1) diff --git a/sklearn/tests/test_common.py b/sklearn/tests/test_common.py index b5fc83d1028b3..92cd60a6ddb36 100644 --- a/sklearn/tests/test_common.py +++ b/sklearn/tests/test_common.py @@ -18,6 +18,24 @@ import pytest import numpy as np +from sklearn.cluster import ( + AffinityPropagation, + Birch, + MeanShift, + OPTICS, + SpectralClustering, +) +from sklearn.datasets import make_blobs +from sklearn.manifold import Isomap, TSNE, LocallyLinearEmbedding +from sklearn.neighbors import ( + LocalOutlierFactor, + KNeighborsClassifier, + KNeighborsRegressor, + RadiusNeighborsClassifier, + RadiusNeighborsRegressor, +) +from sklearn.semi_supervised import LabelPropagation, LabelSpreading + from sklearn.utils import all_estimators from sklearn.utils._testing import ignore_warnings from sklearn.exceptions import ConvergenceWarning From de6bb2a0282b5344dd4e7240a04c2f2845d8fe34 Mon Sep 17 00:00:00 2001 From: Lucy Liu Date: Mon, 1 Aug 2022 21:29:18 +1000 Subject: [PATCH 228/251] DOC Update viewing docs in CI `contributing.rst` (#24040) --- doc/developers/contributing.rst | 13 ++++++++----- doc/images/generated-doc-ci.png | Bin 0 -> 89394 bytes 2 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 doc/images/generated-doc-ci.png diff --git a/doc/developers/contributing.rst b/doc/developers/contributing.rst index 55ff67436a462..c0598c60683cc 100644 --- a/doc/developers/contributing.rst +++ b/doc/developers/contributing.rst @@ -854,12 +854,15 @@ Finally, follow the formatting rules below to make it consistently good: .. _generated_doc_CI: -Generated documentation on CircleCI ------------------------------------ +Generated documentation on GitHub Actions +----------------------------------------- -When you change the documentation in a pull request, CircleCI automatically -builds it. To view the documentation generated by CircleCI, simply go at the -bottom of your PR page and look for the "ci/circleci: doc artifact" link. +When you change the documentation in a pull request, GitHub Actions automatically +builds it. To view the documentation generated by GitHub Actions, simply go at the +bottom of your PR page and look for the "Check the rendered docs here!" link: + +.. image:: ../images/generated-doc-ci.png + :align: center .. _testing_coverage: diff --git a/doc/images/generated-doc-ci.png b/doc/images/generated-doc-ci.png new file mode 100644 index 0000000000000000000000000000000000000000..3e980bdf352934a3ff40b6ecc9cb4cf885f1a2d4 GIT binary patch literal 89394 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 KpC_XI?SBEbovX0` literal 0 HcmV?d00001 From d22d6ec6db082932e84e72a63c34d96a957ceeaa Mon Sep 17 00:00:00 2001 From: Rahil Parikh <75483881+rprkh@users.noreply.github.com> Date: Mon, 1 Aug 2022 19:18:16 +0530 Subject: [PATCH 229/251] DOC Corrects init ndarray shape in MDS (#24067) --- sklearn/manifold/_mds.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/manifold/_mds.py b/sklearn/manifold/_mds.py index 9acbe8f363a70..a848b5d63c5a8 100644 --- a/sklearn/manifold/_mds.py +++ b/sklearn/manifold/_mds.py @@ -497,7 +497,7 @@ def fit_transform(self, X, y=None, init=None): y : Ignored Not used, present for API consistency by convention. - init : ndarray of shape (n_samples,), default=None + init : ndarray of shape (n_samples, n_components), default=None Starting configuration of the embedding to initialize the SMACOF algorithm. By default, the algorithm is initialized with a randomly chosen array. From f70bd52d6915ef21b258810db954217e38e127f6 Mon Sep 17 00:00:00 2001 From: Julien Jerphanion Date: Tue, 2 Aug 2022 11:50:07 +0200 Subject: [PATCH 230/251] MAINT Do not version *.pyc* via .gitignore (#24081) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index d6ae51ec333f2..cea651cfda314 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -*.pyc +*.pyc* *.so *.pyd *~ From bdac39a88bceed1f6e7501fc808e619433e563ac Mon Sep 17 00:00:00 2001 From: Maren Westermann Date: Tue, 2 Aug 2022 18:36:17 +0200 Subject: [PATCH 231/251] FIX Convergence Warnings in Gaussian process examples (#18019) Co-authored-by: Maren Westermann Co-authored-by: Thomas J. Fan --- examples/gaussian_process/plot_gpc_xor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/gaussian_process/plot_gpc_xor.py b/examples/gaussian_process/plot_gpc_xor.py index 6eebbcf80098e..6e6217dba8b9e 100644 --- a/examples/gaussian_process/plot_gpc_xor.py +++ b/examples/gaussian_process/plot_gpc_xor.py @@ -29,7 +29,7 @@ # fit the model plt.figure(figsize=(10, 5)) -kernels = [1.0 * RBF(length_scale=1.0), 1.0 * DotProduct(sigma_0=1.0) ** 2] +kernels = [1.0 * RBF(length_scale=1.15), 1.0 * DotProduct(sigma_0=1.0) ** 2] for i, kernel in enumerate(kernels): clf = GaussianProcessClassifier(kernel=kernel, warm_start=True).fit(X, Y) From ca94a213acf2bebb22c8020a6de968098c98b5d9 Mon Sep 17 00:00:00 2001 From: Vincent M Date: Wed, 3 Aug 2022 13:51:52 +0200 Subject: [PATCH 232/251] DOC Ensures that mutual_info_score passes numpydoc validation (#24091) --- sklearn/metrics/cluster/_supervised.py | 8 ++++---- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/sklearn/metrics/cluster/_supervised.py b/sklearn/metrics/cluster/_supervised.py index 2f2f55fcd2156..4012795d7b0c5 100644 --- a/sklearn/metrics/cluster/_supervised.py +++ b/sklearn/metrics/cluster/_supervised.py @@ -768,14 +768,14 @@ def mutual_info_score(labels_true, labels_pred, *, contingency=None): Mutual information, a non-negative value, measured in nats using the natural logarithm. - Notes - ----- - The logarithm used is the natural logarithm (base-e). - See Also -------- adjusted_mutual_info_score : Adjusted against chance Mutual Information. normalized_mutual_info_score : Normalized Mutual Information. + + Notes + ----- + The logarithm used is the natural logarithm (base-e). """ if contingency is None: labels_true, labels_pred = check_clusterings(labels_true, labels_pred) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index da45dbb9eca8e..d8194a520540b 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -39,7 +39,6 @@ "sklearn.metrics.cluster._supervised.adjusted_rand_score", "sklearn.metrics.cluster._supervised.entropy", "sklearn.metrics.cluster._supervised.fowlkes_mallows_score", - "sklearn.metrics.cluster._supervised.mutual_info_score", "sklearn.metrics.cluster._supervised.normalized_mutual_info_score", "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", From 9aa0fa8c3b5577f14cf7bc263e4215436f4bc886 Mon Sep 17 00:00:00 2001 From: Vincent M Date: Wed, 3 Aug 2022 13:53:07 +0200 Subject: [PATCH 233/251] DOC Ensures that normalized_mutual_info_score passes numpydoc validation(#24093) Co-authored-by: Guillaume Lemaitre --- sklearn/tests/test_docstrings.py | 1 - 1 file changed, 1 deletion(-) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index d8194a520540b..6365309513939 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -39,7 +39,6 @@ "sklearn.metrics.cluster._supervised.adjusted_rand_score", "sklearn.metrics.cluster._supervised.entropy", "sklearn.metrics.cluster._supervised.fowlkes_mallows_score", - "sklearn.metrics.cluster._supervised.normalized_mutual_info_score", "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", From d226ece8d6f6728955ade9fe795eb8e53e43e4fe Mon Sep 17 00:00:00 2001 From: Maascha <63260880+Maascha@users.noreply.github.com> Date: Wed, 3 Aug 2022 16:06:28 +0200 Subject: [PATCH 234/251] DOC spectral biclustering: corrected contradiction of warning and documentation for parameter method (#24098) --- sklearn/cluster/_bicluster.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/cluster/_bicluster.py b/sklearn/cluster/_bicluster.py index a360802009f2c..c8b46fa38c6d1 100644 --- a/sklearn/cluster/_bicluster.py +++ b/sklearn/cluster/_bicluster.py @@ -385,7 +385,7 @@ class SpectralBiclustering(BaseSpectral): default is 'bistochastic'. .. warning:: - if `method='log'`, the data must be sparse. + if `method='log'`, the data must not be sparse. n_components : int, default=6 Number of singular vectors to check. From b26dbd85d47715deae56fcda8e448cba20f0261c Mon Sep 17 00:00:00 2001 From: Vincent M Date: Wed, 3 Aug 2022 16:23:33 +0200 Subject: [PATCH 235/251] DOC Ensures that `pair_confusion_matrix` passes numpydoc validation (#24094) Co-authored-by: Guillaume Lemaitre --- sklearn/metrics/cluster/_supervised.py | 20 ++++++++++---------- sklearn/tests/test_docstrings.py | 1 - 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/sklearn/metrics/cluster/_supervised.py b/sklearn/metrics/cluster/_supervised.py index 4012795d7b0c5..3add417716089 100644 --- a/sklearn/metrics/cluster/_supervised.py +++ b/sklearn/metrics/cluster/_supervised.py @@ -159,7 +159,7 @@ def contingency_matrix( def pair_confusion_matrix(labels_true, labels_pred): - """Pair confusion matrix arising from two clusterings. + """Pair confusion matrix arising from two clusterings [1]_. The pair confusion matrix :math:`C` computes a 2 by 2 similarity matrix between two clusterings by considering all pairs of samples and counting @@ -188,9 +188,15 @@ def pair_confusion_matrix(labels_true, labels_pred): See Also -------- - rand_score: Rand Score - adjusted_rand_score: Adjusted Rand Score - adjusted_mutual_info_score: Adjusted Mutual Information + rand_score: Rand Score. + adjusted_rand_score: Adjusted Rand Score. + adjusted_mutual_info_score: Adjusted Mutual Information. + + References + ---------- + .. [1] :doi:`Hubert, L., Arabie, P. "Comparing partitions." + Journal of Classification 2, 193–218 (1985). + <10.1007/BF01908075>` Examples -------- @@ -211,12 +217,6 @@ def pair_confusion_matrix(labels_true, labels_pred): [0, 2]]... Note that the matrix is not symmetric. - - References - ---------- - .. L. Hubert and P. Arabie, Comparing Partitions, Journal of - Classification 1985 - https://link.springer.com/article/10.1007%2FBF01908075 """ labels_true, labels_pred = check_clusterings(labels_true, labels_pred) n_samples = np.int64(labels_true.shape[0]) diff --git a/sklearn/tests/test_docstrings.py b/sklearn/tests/test_docstrings.py index 6365309513939..88d37ef7b232d 100644 --- a/sklearn/tests/test_docstrings.py +++ b/sklearn/tests/test_docstrings.py @@ -39,7 +39,6 @@ "sklearn.metrics.cluster._supervised.adjusted_rand_score", "sklearn.metrics.cluster._supervised.entropy", "sklearn.metrics.cluster._supervised.fowlkes_mallows_score", - "sklearn.metrics.cluster._supervised.pair_confusion_matrix", "sklearn.metrics.cluster._supervised.rand_score", "sklearn.metrics.cluster._supervised.v_measure_score", "sklearn.metrics.pairwise.pairwise_distances_chunked", From 727488c1380f44b88ec1c68ef1ea222214b71dba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Est=C3=A8ve?= Date: Thu, 4 Aug 2022 11:27:22 +0200 Subject: [PATCH 236/251] FIX utils.multiclass.type_of_target with numpy 1.24 dev (#24044) Co-authored-by: Julien Jerphanion --- sklearn/utils/multiclass.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/utils/multiclass.py b/sklearn/utils/multiclass.py index 5311076e64eb8..c72846f9aa323 100644 --- a/sklearn/utils/multiclass.py +++ b/sklearn/utils/multiclass.py @@ -150,7 +150,7 @@ def is_multilabel(y): warnings.simplefilter("error", np.VisibleDeprecationWarning) try: y = np.asarray(y) - except np.VisibleDeprecationWarning: + except (np.VisibleDeprecationWarning, ValueError): # dtype=object should be provided explicitly for ragged arrays, # see NEP 34 y = np.array(y, dtype=object) @@ -292,7 +292,7 @@ def type_of_target(y, input_name=""): warnings.simplefilter("error", np.VisibleDeprecationWarning) try: y = np.asarray(y) - except np.VisibleDeprecationWarning: + except (np.VisibleDeprecationWarning, ValueError): # dtype=object should be provided explicitly for ragged arrays, # see NEP 34 y = np.asarray(y, dtype=object) From 4d39f246dff18740f3fb65755347672d74363f8d Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Mon, 1 Aug 2022 00:15:52 +0200 Subject: [PATCH 237/251] MAINT solve long line reported by flake8 (#24065) --- sklearn/datasets/_base.py | 2 +- sklearn/feature_selection/_rfe.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sklearn/datasets/_base.py b/sklearn/datasets/_base.py index 367816fa4a467..a9a5f3b39c3ec 100644 --- a/sklearn/datasets/_base.py +++ b/sklearn/datasets/_base.py @@ -346,7 +346,7 @@ def load_gzip_compressed_csv_data( encoding="utf-8", **kwargs, ): - """Loads gzip-compressed `data_file_name` from `data_module` with `importlib.resources`. + """Loads gzip-compressed with `importlib.resources`. 1) Open resource file with `importlib.resources.open_binary` 2) Decompress file obj with `gzip.open` diff --git a/sklearn/feature_selection/_rfe.py b/sklearn/feature_selection/_rfe.py index 262c2757ed426..877b3bed1558a 100644 --- a/sklearn/feature_selection/_rfe.py +++ b/sklearn/feature_selection/_rfe.py @@ -333,7 +333,7 @@ def _fit(self, X, y, step_score=None, **fit_params): @available_if(_estimator_has("predict")) def predict(self, X): - """Reduce X to the selected features and then predict using the underlying estimator. + """Reduce X to the selected features and predict using the estimator. Parameters ---------- @@ -350,7 +350,7 @@ def predict(self, X): @available_if(_estimator_has("score")) def score(self, X, y, **fit_params): - """Reduce X to the selected features and return the score of the underlying estimator. + """Reduce X to the selected features and return the score of the estimator. Parameters ---------- @@ -448,7 +448,7 @@ def _more_tags(self): class RFECV(RFE): - """Recursive feature elimination with cross-validation to select the number of features. + """Recursive feature elimination with cross-validation to select features. See glossary entry for :term:`cross-validation estimator`. From bf10d2e10bfab3908372b49d6aa7fef8f0eb1c6f Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 16:55:27 +0200 Subject: [PATCH 238/251] solve test_svm merge conflict --- sklearn/svm/tests/test_svm.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/sklearn/svm/tests/test_svm.py b/sklearn/svm/tests/test_svm.py index ac3defca66d75..dccd18217e710 100644 --- a/sklearn/svm/tests/test_svm.py +++ b/sklearn/svm/tests/test_svm.py @@ -4,7 +4,6 @@ TODO: remove hard coded numerical results when possible """ import numpy as np -import itertools import pytest import re @@ -1391,7 +1390,7 @@ def test_linearsvm_liblinear_sample_weight(SVM, params): assert_allclose(X_est_no_weight, X_est_with_weight) -@pytest.mark.parametrize("Klass", (OneClassSVM, SVR, NuSVR)) +@pytest.mark.parametrize("Klass", (svm.OneClassSVM, svm.SVR, svm.NuSVR)) def test_n_support(Klass): # Make n_support is correct for oneclass and SVR (used to be # non-initialized) From 55e515df8f43a46365d0d0be8b2a6aba8dc74dac Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 17:00:43 +0200 Subject: [PATCH 239/251] other merge conflicts --- sklearn/cluster/tests/test_birch.py | 1 + sklearn/decomposition/tests/test_nmf.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/sklearn/cluster/tests/test_birch.py b/sklearn/cluster/tests/test_birch.py index cccd99a8846bb..79690e65d00bb 100644 --- a/sklearn/cluster/tests/test_birch.py +++ b/sklearn/cluster/tests/test_birch.py @@ -14,6 +14,7 @@ from sklearn.linear_model import ElasticNet from sklearn.metrics import pairwise_distances_argmin, v_measure_score +from sklearn.utils._testing import assert_allclose from sklearn.utils._testing import assert_almost_equal from sklearn.utils._testing import assert_array_equal from sklearn.utils._testing import assert_array_almost_equal diff --git a/sklearn/decomposition/tests/test_nmf.py b/sklearn/decomposition/tests/test_nmf.py index c8dae384514d8..930483eaa438e 100644 --- a/sklearn/decomposition/tests/test_nmf.py +++ b/sklearn/decomposition/tests/test_nmf.py @@ -56,7 +56,7 @@ def test_parameter_checking(): # TODO remove in 1.2 msg = "Invalid regularization parameter: got 'spam' instead of one of" with pytest.raises(ValueError, match=msg): - NMF(regularization=name).fit(A) + NMF(regularization="spam").fit(A) msg = "Invalid beta_loss parameter: solver 'cd' does not handle beta_loss = 1.0" with pytest.raises(ValueError, match=msg): From 6472f06480a2ff2ea78cc08c30cab3b4ae6de32e Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 17:09:30 +0200 Subject: [PATCH 240/251] f-contiguous fix on old code base --- sklearn/metrics/_pairwise_distances_reduction.pyx | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/sklearn/metrics/_pairwise_distances_reduction.pyx b/sklearn/metrics/_pairwise_distances_reduction.pyx index a37bdb7ab0e8d..ff0d9947dfab8 100644 --- a/sklearn/metrics/_pairwise_distances_reduction.pyx +++ b/sklearn/metrics/_pairwise_distances_reduction.pyx @@ -245,9 +245,16 @@ cdef class PairwiseDistancesReduction: True if the PairwiseDistancesReduction can be used, else False. """ # TODO: support sparse arrays and 32 bits + c_contiguity = ( + hasattr(X, "flags") + and X.flags.c_contiguous + and hasattr(Y, "flags") + and Y.flags.c_contiguous + ) return (get_config().get("enable_cython_pairwise_dist", True) and not issparse(X) and X.dtype == np.float64 and not issparse(Y) and Y.dtype == np.float64 and + c_contiguity and metric in cls.valid_metrics()) def __init__( From f23f21b6ceba1826967e9b2acd3ca6348c67da05 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 17:12:48 +0200 Subject: [PATCH 241/251] add test --- sklearn/tests/test_common.py | 41 ++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/sklearn/tests/test_common.py b/sklearn/tests/test_common.py index 92cd60a6ddb36..922573f7e3fc8 100644 --- a/sklearn/tests/test_common.py +++ b/sklearn/tests/test_common.py @@ -460,3 +460,44 @@ def test_estimators_do_not_raise_errors_in_init_or_set_params(Estimator): # Also do does not raise est.set_params(**new_params) + + +# TODO: remove this filter in 1.2 +@pytest.mark.filterwarnings("ignore::FutureWarning:sklearn") +@pytest.mark.parametrize( + "Estimator", + [ + AffinityPropagation, + Birch, + MeanShift, + KNeighborsClassifier, + KNeighborsRegressor, + RadiusNeighborsClassifier, + RadiusNeighborsRegressor, + LabelPropagation, + LabelSpreading, + OPTICS, + SpectralClustering, + LocalOutlierFactor, + LocallyLinearEmbedding, + Isomap, + TSNE, + ], +) +def test_f_contiguous_array_estimator(Estimator): + # Non-regression test for: + # https://github.com/scikit-learn/scikit-learn/issues/23988 + # https://github.com/scikit-learn/scikit-learn/issues/24013 + + X, _ = make_blobs(n_samples=80, n_features=4, random_state=0) + X = np.asfortranarray(X) + y = np.round(X[:, 0]) + + est = Estimator() + est.fit(X, y) + + if hasattr(est, "transform"): + est.transform(X) + + if hasattr(est, "predict"): + est.predict(X) From 487c211ba3d5d3da30657c4b841b0c0791fd1ab2 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Thu, 4 Aug 2022 17:22:03 +0200 Subject: [PATCH 242/251] Revert a feature tagged as DOC --- sklearn/feature_extraction/text.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sklearn/feature_extraction/text.py b/sklearn/feature_extraction/text.py index 73623f36bca55..6f033d9b8b6d6 100644 --- a/sklearn/feature_extraction/text.py +++ b/sklearn/feature_extraction/text.py @@ -1511,7 +1511,7 @@ class TfidfTransformer(_OneToOneFeatureMixin, TransformerMixin, BaseEstimator): Parameters ---------- - norm : {'l1', 'l2'} or None, default='l2' + norm : {'l1', 'l2'}, default='l2' Each output row will have unit norm, either: - 'l2': Sum of squares of vector elements is 1. The cosine @@ -1685,7 +1685,7 @@ def transform(self, X, copy=True): # *= doesn't work X = X * self._idf_diag - if self.norm is not None: + if self.norm: X = normalize(X, norm=self.norm, copy=False) return X From a413ee6ec4ca38f5ed48157f2b82d1c12702ddf6 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Thu, 4 Aug 2022 12:01:44 -0400 Subject: [PATCH 243/251] FIX Remove test for unreleased feature --- sklearn/cluster/tests/test_birch.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/sklearn/cluster/tests/test_birch.py b/sklearn/cluster/tests/test_birch.py index 79690e65d00bb..a42f421c8f248 100644 --- a/sklearn/cluster/tests/test_birch.py +++ b/sklearn/cluster/tests/test_birch.py @@ -14,7 +14,6 @@ from sklearn.linear_model import ElasticNet from sklearn.metrics import pairwise_distances_argmin, v_measure_score -from sklearn.utils._testing import assert_allclose from sklearn.utils._testing import assert_almost_equal from sklearn.utils._testing import assert_array_equal from sklearn.utils._testing import assert_array_almost_equal @@ -231,23 +230,6 @@ def test_feature_names_out(): assert_array_equal([f"birch{i}" for i in range(n_clusters)], names_out) -def test_transform_match_across_dtypes(): - X, _ = make_blobs(n_samples=80, n_features=4, random_state=0) - brc = Birch(n_clusters=4) - Y_64 = brc.fit_transform(X) - Y_32 = brc.fit_transform(X.astype(np.float32)) - - assert_allclose(Y_64, Y_32, atol=1e-6) - - -def test_subcluster_dtype(global_dtype): - X = make_blobs(n_samples=80, n_features=4, random_state=0)[0].astype( - global_dtype, copy=False - ) - brc = Birch(n_clusters=4) - assert brc.fit(X).subcluster_centers_.dtype == global_dtype - - def test_both_subclusters_updated(): """Check that both subclusters are updated when a node a split, even when there are duplicated data points. Non-regression test for #23269. From 7dd9f578a37764ee8a534b540554875caaefc893 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 09:09:39 +0200 Subject: [PATCH 244/251] MAINT fix the way to call stats.mode (#23633) Co-authored-by: Olivier Grisel Co-authored-by: Meekail Zain <34613774+Micky774@users.noreply.github.com> Co-authored-by: Thomas J. Fan --- sklearn/impute/_base.py | 4 ++-- sklearn/neighbors/_classification.py | 4 ++-- sklearn/utils/fixes.py | 7 +++++++ sklearn/utils/tests/test_extmath.py | 4 ++-- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/sklearn/impute/_base.py b/sklearn/impute/_base.py index 4a000d0f11573..73e20c2cd5101 100644 --- a/sklearn/impute/_base.py +++ b/sklearn/impute/_base.py @@ -9,9 +9,9 @@ import numpy as np import numpy.ma as ma from scipy import sparse as sp -from scipy import stats from ..base import BaseEstimator, TransformerMixin +from ..utils.fixes import _mode from ..utils.sparsefuncs import _get_median from ..utils.validation import check_is_fitted from ..utils.validation import FLOAT_DTYPES @@ -51,7 +51,7 @@ def _most_frequent(array, extra_value, n_repeat): if count == most_frequent_count ) else: - mode = stats.mode(array) + mode = _mode(array) most_frequent_value = mode[0][0] most_frequent_count = mode[1][0] else: diff --git a/sklearn/neighbors/_classification.py b/sklearn/neighbors/_classification.py index f69ee09ae1983..254ec1af67543 100644 --- a/sklearn/neighbors/_classification.py +++ b/sklearn/neighbors/_classification.py @@ -9,7 +9,7 @@ # License: BSD 3 clause (C) INRIA, University of Amsterdam import numpy as np -from scipy import stats +from ..utils.fixes import _mode from ..utils.extmath import weighted_mode from ..utils.validation import _is_arraylike, _num_samples @@ -241,7 +241,7 @@ def predict(self, X): y_pred = np.empty((n_queries, n_outputs), dtype=classes_[0].dtype) for k, classes_k in enumerate(classes_): if weights is None: - mode, _ = stats.mode(_y[neigh_ind, k], axis=1) + mode, _ = _mode(_y[neigh_ind, k], axis=1) else: mode, _ = weighted_mode(_y[neigh_ind, k], weights, axis=1) diff --git a/sklearn/utils/fixes.py b/sklearn/utils/fixes.py index b0074ae7e3a18..cdd63e00cd381 100644 --- a/sklearn/utils/fixes.py +++ b/sklearn/utils/fixes.py @@ -163,3 +163,10 @@ def threadpool_info(): threadpool_info.__doc__ = threadpoolctl.threadpool_info.__doc__ + + +# TODO: Remove when SciPy 1.9 is the minimum supported version +def _mode(a, axis=0): + if sp_version >= parse_version("1.9.0"): + return scipy.stats.mode(a, axis=axis, keepdims=True) + return scipy.stats.mode(a, axis=axis) diff --git a/sklearn/utils/tests/test_extmath.py b/sklearn/utils/tests/test_extmath.py index ece7c180300a1..a9ba7a96685d6 100644 --- a/sklearn/utils/tests/test_extmath.py +++ b/sklearn/utils/tests/test_extmath.py @@ -7,7 +7,6 @@ import numpy as np from scipy import sparse from scipy import linalg -from scipy import stats from scipy.sparse.linalg import eigsh from scipy.special import expit @@ -20,6 +19,7 @@ from sklearn.utils._testing import assert_array_equal from sklearn.utils._testing import assert_array_almost_equal from sklearn.utils._testing import skip_if_32bit +from sklearn.utils.fixes import _mode from sklearn.utils.extmath import density, _safe_accumulator_op from sklearn.utils.extmath import randomized_svd, _randomized_eigsh @@ -57,7 +57,7 @@ def test_uniform_weights(): weights = np.ones(x.shape) for axis in (None, 0, 1): - mode, score = stats.mode(x, axis) + mode, score = _mode(x, axis) mode2, score2 = weighted_mode(x, weights, axis=axis) assert_array_equal(mode, mode2) From 6b557e869c4b64c16e0d8db8721463d09769c13b Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 5 Aug 2022 03:10:37 -0400 Subject: [PATCH 245/251] CI Set MACOSX_DEPLOYMENT_TARGET=10.9 (#23833) --- build_tools/github/build_wheels.sh | 4 +--- doc/whats_new/v1.1.rst | 3 +++ 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build_tools/github/build_wheels.sh b/build_tools/github/build_wheels.sh index 5d379bf155146..647b47492774b 100755 --- a/build_tools/github/build_wheels.sh +++ b/build_tools/github/build_wheels.sh @@ -18,9 +18,7 @@ if [[ "$RUNNER_OS" == "macOS" ]]; then export MACOSX_DEPLOYMENT_TARGET=12.0 OPENMP_URL="https://anaconda.org/conda-forge/llvm-openmp/11.1.0/download/osx-arm64/llvm-openmp-11.1.0-hf3c4609_1.tar.bz2" else - # Currently, the oldest supported macos version is: High Sierra / 10.13. - # Note that Darwin_17 == High Sierra / 10.13. - export MACOSX_DEPLOYMENT_TARGET=10.13 + export MACOSX_DEPLOYMENT_TARGET=10.9 OPENMP_URL="https://anaconda.org/conda-forge/llvm-openmp/11.1.0/download/osx-64/llvm-openmp-11.1.0-hda6cdc1_1.tar.bz2" fi diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 7e846571fd206..2e443d12f64f4 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -19,6 +19,9 @@ Changelog have been changed in 1.1. :pr:`23990` by :user:`Julien Jerphanion `. +- |Fix| Wheels are now available for MacOS 10.9 and greater. :pr:`23833` by + `Thomas Fan`_. + :mod:`sklearn.base` ...................... From ca5e2541589d9ab516ddd0f6904a77343c6f3cd5 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 5 Aug 2022 03:11:39 -0400 Subject: [PATCH 246/251] FIX Fixes OrdinalEncoder.inverse_tranform nan encoded values (#24087) --- doc/whats_new/v1.1.rst | 7 +++ sklearn/preprocessing/_encoders.py | 14 +++-- sklearn/preprocessing/tests/test_encoders.py | 61 ++++++++++++++++++++ 3 files changed, 77 insertions(+), 5 deletions(-) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 2e443d12f64f4..873405704277d 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -36,6 +36,13 @@ Changelog a node if there are duplicates in the dataset. :pr:`23395` by :user:`Jérémie du Boisberranger `. +:mod:`sklearn.preprocessing` +............................ + +- |Fix| :meth:`preprocessing.OrdinalEncoder.inverse_transform` correctly handles + use cases where `unknown_value` or `encoded_missing_value` is `nan`. :pr:`24087` + by `Thomas Fan`_. + .. _changes_1_1_1: Version 1.1.1 diff --git a/sklearn/preprocessing/_encoders.py b/sklearn/preprocessing/_encoders.py index e0b8fa271ac89..0aad790d8b098 100644 --- a/sklearn/preprocessing/_encoders.py +++ b/sklearn/preprocessing/_encoders.py @@ -1408,19 +1408,23 @@ def inverse_transform(self, X): found_unknown = {} for i in range(n_features): - labels = X[:, i].astype("int64", copy=False) + labels = X[:, i] # replace values of X[:, i] that were nan with actual indices if i in self._missing_indices: - X_i_mask = _get_mask(X[:, i], self.encoded_missing_value) + X_i_mask = _get_mask(labels, self.encoded_missing_value) labels[X_i_mask] = self._missing_indices[i] if self.handle_unknown == "use_encoded_value": - unknown_labels = labels == self.unknown_value - X_tr[:, i] = self.categories_[i][np.where(unknown_labels, 0, labels)] + unknown_labels = _get_mask(labels, self.unknown_value) + + known_labels = ~unknown_labels + X_tr[known_labels, i] = self.categories_[i][ + labels[known_labels].astype("int64", copy=False) + ] found_unknown[i] = unknown_labels else: - X_tr[:, i] = self.categories_[i][labels] + X_tr[:, i] = self.categories_[i][labels.astype("int64", copy=False)] # insert None values for unknown values if found_unknown: diff --git a/sklearn/preprocessing/tests/test_encoders.py b/sklearn/preprocessing/tests/test_encoders.py index ea32de22cd2f0..2a90f9894f073 100644 --- a/sklearn/preprocessing/tests/test_encoders.py +++ b/sklearn/preprocessing/tests/test_encoders.py @@ -1928,6 +1928,15 @@ def test_ordinal_encoder_unknown_missing_interaction(): X_test_trans = oe.transform(X_test) assert_allclose(X_test_trans, [[np.nan], [-3]]) + # Non-regression test for #24082 + X_roundtrip = oe.inverse_transform(X_test_trans) + + # np.nan is unknown so it maps to None + assert X_roundtrip[0][0] is None + + # -3 is the encoded missing value so it maps back to nan + assert np.isnan(X_roundtrip[1][0]) + @pytest.mark.parametrize("with_pandas", [True, False]) def test_ordinal_encoder_encoded_missing_value_error(with_pandas): @@ -1953,3 +1962,55 @@ def test_ordinal_encoder_encoded_missing_value_error(with_pandas): with pytest.raises(ValueError, match=error_msg): oe.fit(X) + + +@pytest.mark.parametrize( + "X_train, X_test_trans_expected, X_roundtrip_expected", + [ + ( + # missing value is not in training set + # inverse transform will considering encoded nan as unknown + np.array([["a"], ["1"]], dtype=object), + [[0], [np.nan], [np.nan]], + np.asarray([["1"], [None], [None]], dtype=object), + ), + ( + # missing value in training set, + # inverse transform will considering encoded nan as missing + np.array([[np.nan], ["1"], ["a"]], dtype=object), + [[0], [np.nan], [np.nan]], + np.asarray([["1"], [np.nan], [np.nan]], dtype=object), + ), + ], +) +def test_ordinal_encoder_unknown_missing_interaction_both_nan( + X_train, X_test_trans_expected, X_roundtrip_expected +): + """Check transform when unknown_value and encoded_missing_value is nan. + + Non-regression test for #24082. + """ + oe = OrdinalEncoder( + handle_unknown="use_encoded_value", + unknown_value=np.nan, + encoded_missing_value=np.nan, + ).fit(X_train) + + X_test = np.array([["1"], [np.nan], ["b"]]) + X_test_trans = oe.transform(X_test) + + # both nan and unknown are encoded as nan + assert_allclose(X_test_trans, X_test_trans_expected) + X_roundtrip = oe.inverse_transform(X_test_trans) + + n_samples = X_roundtrip_expected.shape[0] + for i in range(n_samples): + expected_val = X_roundtrip_expected[i, 0] + val = X_roundtrip[i, 0] + + if expected_val is None: + assert val is None + elif is_scalar_nan(expected_val): + assert np.isnan(val) + else: + assert val == expected_val From a64ac4bb08f28a2cf79ffe440667a7b93c35cf36 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 09:17:07 +0200 Subject: [PATCH 247/251] [cd build] From afccd4a529557f0cdc9e15b0e8f8a0b1138197d7 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 14:44:22 +0200 Subject: [PATCH 248/251] move some issues from 1.2 to 1.1 --- doc/whats_new/v1.1.rst | 61 +++++++++++++++++++++- doc/whats_new/v1.2.rst | 114 +++++++++++++++++++++++++++++------------ 2 files changed, 142 insertions(+), 33 deletions(-) diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 873405704277d..12809e8d8d4bc 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -9,6 +9,19 @@ Version 1.1.2 **In Development** +Changed models +-------------- + +The following estimators and functions, when fit with the same data and +parameters, may produce different models from the previous version. This often +occurs due to changes in the modelling logic (bug fixes or enhancements), or in +random sampling procedures. + +- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with + `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. + :pr:`10805` by :user:`Mathias Andersen ` and + :pr:`23471` by :user:`Meekail Zain `. + Changelog --------- @@ -23,7 +36,7 @@ Changelog `Thomas Fan`_. :mod:`sklearn.base` -...................... +................... - |Fix| The `get_params` method of the :class:`BaseEstimator` class now supports estimators with `type`-type params that have the `get_params` method. @@ -36,6 +49,45 @@ Changelog a node if there are duplicates in the dataset. :pr:`23395` by :user:`Jérémie du Boisberranger `. +:mod:`sklearn.feature_selection` +................................ + +- |Fix| :class:`feature_selection.SelectFromModel` defaults to selection + threshold 1e-5 when the estimator is either :class:`linear_model.ElasticNet` + or :class:`linear_model.ElasticNetCV` with `l1_ratio` equals 1 or + :class:`linear_model.LassoCV`. + :pr:`23636` by :user:`Hao Chun Chang `. + +:mod:`sklearn.impute` +..................... + +- |Fix| :class:`impute.SimpleImputer` uses the dtype seen in `fit` for + `transform` when the dtype is object. :pr:`22063` by `Thomas Fan`_. + +:mod:`sklearn.linear_model` +........................... + +- |Fix| Use dtype-aware tolerances for the validation of gram matrices (passed by users + or precomputed). :pr:`22059` by :user:`Malte S. Kurz `. + +- |Fix| Fixed an error in :class:`linear_model.LogisticRegression` with + `solver="newton-cg"`, `fit_intercept=True`, and a single feature. :pr:`23608` + by `Tom Dupre la Tour`_. + +:mod:`sklearn.manifold` +....................... + +- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with + `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. + :pr:`10805` by :user:`Mathias Andersen ` and + :pr:`23471` by :user:`Meekail Zain `. + +:mod:`sklearn.metrics` +...................... + +- |Fix| Fixed error message of :class:`metrics.coverage_error` for 1D array input. + :pr:`23548` by :user:`Hao Chun Chang `. + :mod:`sklearn.preprocessing` ............................ @@ -43,6 +95,13 @@ Changelog use cases where `unknown_value` or `encoded_missing_value` is `nan`. :pr:`24087` by `Thomas Fan`_. +:mod:`sklearn.tree` +................... + +- |Fix| Fixed invalid memory access bug during fit in + :class:`tree.DecisionTreeRegressor` and :class:`tree.DecisionTreeClassifier`. + :pr:`23273` by `Thomas Fan`_. + .. _changes_1_1_1: Version 1.1.1 diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst index 71619df7e4ba8..c37e3ab2e3043 100644 --- a/doc/whats_new/v1.2.rst +++ b/doc/whats_new/v1.2.rst @@ -19,10 +19,24 @@ parameters, may produce different models from the previous version. This often occurs due to changes in the modelling logic (bug fixes or enhancements), or in random sampling procedures. -- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with - `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. - :pr:`10805` by :user:`Mathias Andersen ` and - :pr:`23471` by :user:`Meekail Zain ` +- |Enhancement| The default `eigen_tol` for :class:`cluster.SpectralClustering`, + :class:`manifold.SpectralEmbedding`, :func:`cluster.spectral_clustering`, + and :func:`manifold.spectral_embedding` is now `None` when using the `'amg'` + or `'lobpcg'` solvers. This change improves numerical stability of the + solver, but may result in a different model. + +- |Enhancement| :class:`linear_model.GammaRegressor`, + :class:`linear_model.PoissonRegressor` and :class:`linear_model.TweedieRegressor` + can reach higher precision with the lbfgs solver, in particular when `tol` is set + to a tiny value. Moreover, `verbose` is now properly propagated to L-BFGS-B. + :pr:`23619` by :user:`Christian Lorentzen `. + +- |Fix| Make sign of `components_` deterministic in :class:`decomposition.SparsePCA`. + :pr:`23935` by :user:`Guillaume Lemaitre `. + +- |Fix| The `components_` signs in :class:`decomposition.FastICA` might differ. + It is now consistent and deterministic with all SVD solvers. + :pr:`22527` by :user:`Meekail Zain ` and `Thomas Fan`_. Changes impacting all modules ----------------------------- @@ -77,29 +91,23 @@ Changelog :pr:`11860` by :user:`Pierre Ablin `, :pr:`22527` by :user:`Meekail Zain ` and `Thomas Fan`_. -:mod:`sklearn.feature_selection` -................................ -- |Fix| :class:`feature_selection.SelectFromModel` defaults to selection - threshold 1e-5 when the estimator is either :class:`linear_model.ElasticNet` - or :class:`linear_model.ElasticNetCV` with `l1_ratio` equals 1 or - :class:`linear_model.LassoCV`. :pr:`23636` by :user:`Hao Chun Chang - ` - -:mod:`sklearn.impute` -..................... - -- |Fix| :class:`impute.SimpleImputer` uses the dtype seen in `fit` for - `transform` when the dtype is object. :pr:`22063` by `Thomas Fan`_. - :mod:`sklearn.linear_model` ........................... -- |Fix| Use dtype-aware tolerances for the validation of gram matrices (passed by users - or precomputed). :pr:`22059` by :user:`Malte S. Kurz `. +- |Enhancement| :class:`linear_model.GammaRegressor`, + :class:`linear_model.PoissonRegressor` and :class:`linear_model.TweedieRegressor` + can reach higher precision with the lbfgs solver, in particular when `tol` is set + to a tiny value. Moreover, `verbose` is now properly propagated to L-BFGS-B. + :pr:`23619` by :user:`Christian Lorentzen `. -- |Fix| Fixed an error in :class:`linear_model.LogisticRegression` with - `solver="newton-cg"`, `fit_intercept=True`, and a single feature. :pr:`23608` - by `Tom Dupre la Tour`_. +- |API| The default value for the `solver` parameter in + :class:`linear_model.QuantileRegressor` will change from `"interior-point"` + to `"highs"` in version 1.4. + :pr:`23637` by :user:`Guillaume Lemaitre `. + +- |API| String option `"none"` is deprecated for `penalty` argument + in :class:`linear_model.LogisticRegression`, and will be removed in version 1.4. + Use `None` instead. :pr:`23877` by :user:`Zhehao Liu `. :mod:`sklearn.metrics` ...................... @@ -109,8 +117,28 @@ Changelog of a binary classification problem. :pr:`22518` by :user:`Arturo Amor `. -- |Fix| Fixed error message of :class:`metrics.coverage_error` for 1D array input. - :pr:`23548` by :user:`Hao Chun Chang `. +- |Fix| :func:`metrics.ndcg_score` will now trigger a warning when the `y_true` + value contains a negative value. Users may still use negative values, but the + result may not be between 0 and 1. Starting in v1.4, passing in negative + values for `y_true` will raise an error. + :pr:`22710` by :user:`Conroy Trinh ` and + :pr:`23461` by :user:`Meekail Zain `. + +:mod:`sklearn.multioutput` +.......................... + +- |Feature| Added boolean `verbose` flag to classes: + :class:`multioutput.ClassifierChain` and :class:`multioutput.RegressorChain`. + :pr:`23977` by :user:`Eric Fiegel `, + :user:`Chiara Marmo `, + :user:`Lucy Liu `, and + :user:`Guillaume Lemaitre `. + +:mod:`sklearn.naive_bayes` +.......................... + +- |Feature| Add methods `predict_joint_log_proba` to all naive Bayes classifiers. + :pr:`23683` by :user:`Andrey Melnik `. :mod:`sklearn.neighbors` ........................ @@ -130,9 +158,8 @@ Changelog :mod:`sklearn.tree` ................... -- |Fix| Fixed invalid memory access bug during fit in - :class:`tree.DecisionTreeRegressor` and :class:`tree.DecisionTreeClassifier`. - :pr:`23273` by `Thomas Fan`_. +- |Enhancement| :func:`tree.plot_tree`, :func:`tree.export_graphviz` now uses + a lower case `x[i]` to represent feature `i`. :pr:`23480` by `Thomas Fan`_. :mod:`sklearn.utils` .................... @@ -145,10 +172,33 @@ Changelog :mod:`sklearn.manifold` ....................... -- |Fix| :class:`manifold.TSNE` now throws a `ValueError` when fit with - `perplexity>=n_samples` to ensure mathematical correctness of the algorithm. - :pr:`10805` by :user:`Mathias Andersen ` and - :pr:`23471` by :user:`Meekail Zain ` +- |Feature| Adds option to use the normalized stress in `manifold.MDS`. This is + enabled by setting the new `normalize` parameter to `True`. + :pr:`10168` by :user:`Łukasz Borchmann `, + :pr:`12285` by :user:`Matthias Miltenberger `, + :pr:`13042` by :user:`Matthieu Parizy `, + :pr:`18094` by :user:`Roth E Conrad ` and + :pr:`22562` by :user:`Meekail Zain `. + +- |Enhancement| Adds `eigen_tol` parameter to + :class:`manifold.SpectralEmbedding`. Both :func:`manifold.spectral_embedding` + and :class:`manifold.SpectralEmbedding` now propogate `eigen_tol` to all + choices of `eigen_solver`. Includes a new option `eigen_tol="auto"` + and begins deprecation to change the default from `eigen_tol=0` to + `eigen_tol="auto"` in version 1.3. + :pr:`23210` by :user:`Meekail Zain `. + +:mod:`sklearn.naive_bayes` +.......................... + +- |Enhancement| A new parameter `force_alpha` was added to + :class:`naive_bayes.BernoulliNB`, :class:`naive_bayes.ComplementNB`, + :class:`naive_bayes.CategoricalNB`, and :class:`naive_bayes.MultinomialNB`, + allowing user to set parameter alpha to a very small number, greater or equal + 0, which was earlier automatically changed to `1e-10` instead. + :pr:`16747` by :user:`arka204`, + :pr:`18805` by :user:`hongshaoyang`, + :pr:`22269` by :user:`Meekail Zain `. Code and Documentation Contributors ----------------------------------- From 4d4186a3b6a5c3d640e1758f9d7c2e870f3e3462 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 14:50:05 +0200 Subject: [PATCH 249/251] DOC remove the 1.2 created from merge conflict --- doc/whats_new/v1.2.rst | 209 ----------------------------------------- 1 file changed, 209 deletions(-) delete mode 100644 doc/whats_new/v1.2.rst diff --git a/doc/whats_new/v1.2.rst b/doc/whats_new/v1.2.rst deleted file mode 100644 index c37e3ab2e3043..0000000000000 --- a/doc/whats_new/v1.2.rst +++ /dev/null @@ -1,209 +0,0 @@ -.. include:: _contributors.rst - -.. currentmodule:: sklearn - -.. _changes_1_2: - -Version 1.2.0 -============= - -**In Development** - -.. include:: changelog_legend.inc - -Changed models --------------- - -The following estimators and functions, when fit with the same data and -parameters, may produce different models from the previous version. This often -occurs due to changes in the modelling logic (bug fixes or enhancements), or in -random sampling procedures. - -- |Enhancement| The default `eigen_tol` for :class:`cluster.SpectralClustering`, - :class:`manifold.SpectralEmbedding`, :func:`cluster.spectral_clustering`, - and :func:`manifold.spectral_embedding` is now `None` when using the `'amg'` - or `'lobpcg'` solvers. This change improves numerical stability of the - solver, but may result in a different model. - -- |Enhancement| :class:`linear_model.GammaRegressor`, - :class:`linear_model.PoissonRegressor` and :class:`linear_model.TweedieRegressor` - can reach higher precision with the lbfgs solver, in particular when `tol` is set - to a tiny value. Moreover, `verbose` is now properly propagated to L-BFGS-B. - :pr:`23619` by :user:`Christian Lorentzen `. - -- |Fix| Make sign of `components_` deterministic in :class:`decomposition.SparsePCA`. - :pr:`23935` by :user:`Guillaume Lemaitre `. - -- |Fix| The `components_` signs in :class:`decomposition.FastICA` might differ. - It is now consistent and deterministic with all SVD solvers. - :pr:`22527` by :user:`Meekail Zain ` and `Thomas Fan`_. - -Changes impacting all modules ------------------------------ - -- |Enhancement| Finiteness checks (detection of NaN and infinite values) in all - estimators are now significantly more efficient for float32 data by leveraging - NumPy's SIMD optimized primitives. - :pr:`23446` by :user:`Meekail Zain ` - -Changelog ---------- - -.. - Entries should be grouped by module (in alphabetic order) and prefixed with - one of the labels: |MajorFeature|, |Feature|, |Efficiency|, |Enhancement|, - |Fix| or |API| (see whats_new.rst for descriptions). - Entries should be ordered by those labels (e.g. |Fix| after |Efficiency|). - Changes not specific to a module should be listed under *Multiple Modules* - or *Miscellaneous*. - Entries should end with: - :pr:`123456` by :user:`Joe Bloggs `. - where 123456 is the *pull request* number, not the issue number. - -:mod:`sklearn.cluster` -...................... - -- |Enhancement| The `predict` and `fit_predict` methods of :class:`cluster.OPTICS` now - accept sparse data type for input data. :pr:`14736` by :user:`Hunt Zhan `, - :pr:`20802` by :user:`Brandon Pokorny `, - and :pr:`22965` by :user:`Meekail Zain `. - -- |Enhancement| :class:`cluster.Birch` now preserves dtype for `numpy.float32` - inputs. :pr:`22968` by `Meekail Zain `. - -:mod:`sklearn.ensemble` -....................... - -- |Efficiency| Improve runtime performance of :class:`ensemble.IsolationForest` - by avoiding data copies. :pr:`23252` by :user:`Zhehao Liu `. - -:mod:`sklearn.decomposition` -............................ - -- |Enhancement| :class:`decomposition.FastICA` now allows the user to select - how whitening is performed through the new `whiten_solver` parameter, which - supports `svd` and `eigh`. `whiten_solver` defaults to `svd` although `eigh` - may be faster and more memory efficient in cases where - `num_features > num_samples`. An additional `sign_flip` parameter is added. - When `sign_flip=True`, then the output of both solvers will be reconciled - during `fit` so that their outputs match. This may change the output of the - default solver, and hence may not be backwards compatible. - :pr:`11860` by :user:`Pierre Ablin `, - :pr:`22527` by :user:`Meekail Zain ` and `Thomas Fan`_. - -:mod:`sklearn.linear_model` -........................... - -- |Enhancement| :class:`linear_model.GammaRegressor`, - :class:`linear_model.PoissonRegressor` and :class:`linear_model.TweedieRegressor` - can reach higher precision with the lbfgs solver, in particular when `tol` is set - to a tiny value. Moreover, `verbose` is now properly propagated to L-BFGS-B. - :pr:`23619` by :user:`Christian Lorentzen `. - -- |API| The default value for the `solver` parameter in - :class:`linear_model.QuantileRegressor` will change from `"interior-point"` - to `"highs"` in version 1.4. - :pr:`23637` by :user:`Guillaume Lemaitre `. - -- |API| String option `"none"` is deprecated for `penalty` argument - in :class:`linear_model.LogisticRegression`, and will be removed in version 1.4. - Use `None` instead. :pr:`23877` by :user:`Zhehao Liu `. - -:mod:`sklearn.metrics` -...................... - -- |Feature| :func:`class_likelihood_ratios` is added to compute the positive and - negative likelihood ratios derived from the confusion matrix - of a binary classification problem. :pr:`22518` by - :user:`Arturo Amor `. - -- |Fix| :func:`metrics.ndcg_score` will now trigger a warning when the `y_true` - value contains a negative value. Users may still use negative values, but the - result may not be between 0 and 1. Starting in v1.4, passing in negative - values for `y_true` will raise an error. - :pr:`22710` by :user:`Conroy Trinh ` and - :pr:`23461` by :user:`Meekail Zain `. - -:mod:`sklearn.multioutput` -.......................... - -- |Feature| Added boolean `verbose` flag to classes: - :class:`multioutput.ClassifierChain` and :class:`multioutput.RegressorChain`. - :pr:`23977` by :user:`Eric Fiegel `, - :user:`Chiara Marmo `, - :user:`Lucy Liu `, and - :user:`Guillaume Lemaitre `. - -:mod:`sklearn.naive_bayes` -.......................... - -- |Feature| Add methods `predict_joint_log_proba` to all naive Bayes classifiers. - :pr:`23683` by :user:`Andrey Melnik `. - -:mod:`sklearn.neighbors` -........................ - -- |Enhancement| :class:`neighbors.KernelDensity` bandwidth parameter now accepts - definition using Scott's and Silvermann's estimation methods. - :pr:`10468` by :user:`Ruben ` and :pr:`22993` by - :user:`Jovan Stojanovic `. - -:mod:`sklearn.feature_selection` -................................ - -- |Fix| The `partial_fit` method of :class:`feature_selection.SelectFromModel` - now conducts validation for `max_features` and `feature_names_in` parameters. - :pr:`23299` by :user:`Long Bao `. - -:mod:`sklearn.tree` -................... - -- |Enhancement| :func:`tree.plot_tree`, :func:`tree.export_graphviz` now uses - a lower case `x[i]` to represent feature `i`. :pr:`23480` by `Thomas Fan`_. - -:mod:`sklearn.utils` -.................... - -- |Enhancement| :func:`utils.extmath.randomized_svd` now accepts an argument, - `lapack_svd_driver`, to specify the lapack driver used in the internal - deterministic SVD used by the randomized SVD algorithm. - :pr:`20617` by :user:`Srinath Kailasa ` - -:mod:`sklearn.manifold` -....................... - -- |Feature| Adds option to use the normalized stress in `manifold.MDS`. This is - enabled by setting the new `normalize` parameter to `True`. - :pr:`10168` by :user:`Łukasz Borchmann `, - :pr:`12285` by :user:`Matthias Miltenberger `, - :pr:`13042` by :user:`Matthieu Parizy `, - :pr:`18094` by :user:`Roth E Conrad ` and - :pr:`22562` by :user:`Meekail Zain `. - -- |Enhancement| Adds `eigen_tol` parameter to - :class:`manifold.SpectralEmbedding`. Both :func:`manifold.spectral_embedding` - and :class:`manifold.SpectralEmbedding` now propogate `eigen_tol` to all - choices of `eigen_solver`. Includes a new option `eigen_tol="auto"` - and begins deprecation to change the default from `eigen_tol=0` to - `eigen_tol="auto"` in version 1.3. - :pr:`23210` by :user:`Meekail Zain `. - -:mod:`sklearn.naive_bayes` -.......................... - -- |Enhancement| A new parameter `force_alpha` was added to - :class:`naive_bayes.BernoulliNB`, :class:`naive_bayes.ComplementNB`, - :class:`naive_bayes.CategoricalNB`, and :class:`naive_bayes.MultinomialNB`, - allowing user to set parameter alpha to a very small number, greater or equal - 0, which was earlier automatically changed to `1e-10` instead. - :pr:`16747` by :user:`arka204`, - :pr:`18805` by :user:`hongshaoyang`, - :pr:`22269` by :user:`Meekail Zain `. - -Code and Documentation Contributors ------------------------------------ - -Thanks to everyone who has contributed to the maintenance and improvement of -the project since version 1.1, including: - -TODO: update at the time of the release. From 9cf4037ec0cac1304f7a494dcb53e3492faf8373 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 14:55:07 +0200 Subject: [PATCH 250/251] DOC add date for release 1.1.2 --- doc/templates/index.html | 2 ++ doc/whats_new/v1.1.rst | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/templates/index.html b/doc/templates/index.html index d2bd879958a3b..755ff52821938 100644 --- a/doc/templates/index.html +++ b/doc/templates/index.html @@ -166,6 +166,8 @@

    News

  • On-going development: What's new (Changelog)
  • +
  • August 2022. scikit-learn 1.1.2 is available for download (Changelog). +
  • May 2022. scikit-learn 1.1.1 is available for download (Changelog).
  • May 2022. scikit-learn 1.1.0 is available for download (Changelog). diff --git a/doc/whats_new/v1.1.rst b/doc/whats_new/v1.1.rst index 12809e8d8d4bc..27fa545901dd0 100644 --- a/doc/whats_new/v1.1.rst +++ b/doc/whats_new/v1.1.rst @@ -7,7 +7,7 @@ Version 1.1.2 ============= -**In Development** +**August 2022** Changed models -------------- From c44bcf177d86a3a28a8221ec97b6691f45e6b506 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Fri, 5 Aug 2022 14:56:00 +0200 Subject: [PATCH 251/251] bumpversion 1.1.2 --- sklearn/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sklearn/__init__.py b/sklearn/__init__.py index c11158380d3c3..4e335ed928904 100644 --- a/sklearn/__init__.py +++ b/sklearn/__init__.py @@ -39,7 +39,7 @@ # Dev branch marker is: 'X.Y.dev' or 'X.Y.devN' where N is an integer. # 'X.Y.dev0' is the canonical version of 'X.Y.dev' # -__version__ = "1.1.1" +__version__ = "1.1.2" # On OSX, we can get a runtime error due to multiple OpenMP libraries loaded