Created
November 10, 2021 15:11
-
-
Save thomasjpfan/41c6d949a691674fed71c92999bdbbca to your computer and use it in GitHub Desktop.
Update issue with PRs script
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| from collections import defaultdict | |
| from github import Github | |
| import os | |
| token = os.environ["GITHUB_TOKEN"] | |
| gh = Github(token) | |
| sk_repo = gh.get_repo("scikit-learn/scikit-learn") | |
| global_issue = sk_repo.get_issue(21350) | |
| all_functions = [ | |
| "sklearn._config.config_context", | |
| "sklearn._config.get_config", | |
| "sklearn.base.clone", | |
| "sklearn.cluster._affinity_propagation.affinity_propagation", | |
| "sklearn.cluster._agglomerative.linkage_tree", | |
| "sklearn.cluster._kmeans.k_means", | |
| "sklearn.cluster._kmeans.kmeans_plusplus", | |
| "sklearn.cluster._mean_shift.estimate_bandwidth", | |
| "sklearn.cluster._mean_shift.get_bin_seeds", | |
| "sklearn.cluster._mean_shift.mean_shift", | |
| "sklearn.cluster._optics.cluster_optics_dbscan", | |
| "sklearn.cluster._optics.cluster_optics_xi", | |
| "sklearn.cluster._optics.compute_optics_graph", | |
| "sklearn.cluster._spectral.spectral_clustering", | |
| "sklearn.compose._column_transformer.make_column_transformer", | |
| "sklearn.covariance._empirical_covariance.empirical_covariance", | |
| "sklearn.covariance._empirical_covariance.log_likelihood", | |
| "sklearn.covariance._graph_lasso.graphical_lasso", | |
| "sklearn.covariance._robust_covariance.fast_mcd", | |
| "sklearn.covariance._shrunk_covariance.ledoit_wolf", | |
| "sklearn.covariance._shrunk_covariance.ledoit_wolf_shrinkage", | |
| "sklearn.covariance._shrunk_covariance.shrunk_covariance", | |
| "sklearn.datasets._base.get_data_home", | |
| "sklearn.datasets._base.load_boston", | |
| "sklearn.datasets._base.load_breast_cancer", | |
| "sklearn.datasets._base.load_diabetes", | |
| "sklearn.datasets._base.load_digits", | |
| "sklearn.datasets._base.load_files", | |
| "sklearn.datasets._base.load_iris", | |
| "sklearn.datasets._base.load_linnerud", | |
| "sklearn.datasets._base.load_sample_image", | |
| "sklearn.datasets._base.load_wine", | |
| "sklearn.datasets._california_housing.fetch_california_housing", | |
| "sklearn.datasets._covtype.fetch_covtype", | |
| "sklearn.datasets._kddcup99.fetch_kddcup99", | |
| "sklearn.datasets._lfw.fetch_lfw_pairs", | |
| "sklearn.datasets._lfw.fetch_lfw_people", | |
| "sklearn.datasets._olivetti_faces.fetch_olivetti_faces", | |
| "sklearn.datasets._openml.fetch_openml", | |
| "sklearn.datasets._rcv1.fetch_rcv1", | |
| "sklearn.datasets._samples_generator.make_biclusters", | |
| "sklearn.datasets._samples_generator.make_blobs", | |
| "sklearn.datasets._samples_generator.make_checkerboard", | |
| "sklearn.datasets._samples_generator.make_classification", | |
| "sklearn.datasets._samples_generator.make_gaussian_quantiles", | |
| "sklearn.datasets._samples_generator.make_hastie_10_2", | |
| "sklearn.datasets._samples_generator.make_multilabel_classification", | |
| "sklearn.datasets._samples_generator.make_regression", | |
| "sklearn.datasets._samples_generator.make_sparse_coded_signal", | |
| "sklearn.datasets._samples_generator.make_sparse_spd_matrix", | |
| "sklearn.datasets._samples_generator.make_spd_matrix", | |
| "sklearn.datasets._species_distributions.fetch_species_distributions", | |
| "sklearn.datasets._svmlight_format_io.dump_svmlight_file", | |
| "sklearn.datasets._svmlight_format_io.load_svmlight_file", | |
| "sklearn.datasets._svmlight_format_io.load_svmlight_files", | |
| "sklearn.datasets._twenty_newsgroups.fetch_20newsgroups", | |
| "sklearn.decomposition._dict_learning.dict_learning", | |
| "sklearn.decomposition._dict_learning.dict_learning_online", | |
| "sklearn.decomposition._dict_learning.sparse_encode", | |
| "sklearn.decomposition._fastica.fastica", | |
| "sklearn.decomposition._nmf.non_negative_factorization", | |
| "sklearn.externals._packaging.version.parse", | |
| "sklearn.feature_extraction.image.extract_patches_2d", | |
| "sklearn.feature_extraction.image.grid_to_graph", | |
| "sklearn.feature_extraction.image.img_to_graph", | |
| "sklearn.feature_extraction.text.strip_accents_ascii", | |
| "sklearn.feature_extraction.text.strip_accents_unicode", | |
| "sklearn.feature_extraction.text.strip_tags", | |
| "sklearn.feature_selection._univariate_selection.chi2", | |
| "sklearn.feature_selection._univariate_selection.f_oneway", | |
| "sklearn.feature_selection._univariate_selection.r_regression", | |
| "sklearn.inspection._partial_dependence.partial_dependence", | |
| "sklearn.inspection._plot.partial_dependence.plot_partial_dependence", | |
| "sklearn.isotonic.isotonic_regression", | |
| "sklearn.linear_model._least_angle.lars_path", | |
| "sklearn.linear_model._least_angle.lars_path_gram", | |
| "sklearn.linear_model._omp.orthogonal_mp", | |
| "sklearn.linear_model._omp.orthogonal_mp_gram", | |
| "sklearn.linear_model._ridge.ridge_regression", | |
| "sklearn.manifold._locally_linear.locally_linear_embedding", | |
| "sklearn.manifold._t_sne.trustworthiness", | |
| "sklearn.metrics._classification.accuracy_score", | |
| "sklearn.metrics._classification.balanced_accuracy_score", | |
| "sklearn.metrics._classification.brier_score_loss", | |
| "sklearn.metrics._classification.classification_report", | |
| "sklearn.metrics._classification.cohen_kappa_score", | |
| "sklearn.metrics._classification.confusion_matrix ", | |
| "sklearn.metrics._classification.f1_score", | |
| "sklearn.metrics._classification.fbeta_score", | |
| "sklearn.metrics._classification.hamming_loss", | |
| "sklearn.metrics._classification.hinge_loss", | |
| "sklearn.metrics._classification.jaccard_score", | |
| "sklearn.metrics._classification.log_loss", | |
| "sklearn.metrics._classification.precision_recall_fscore_support", | |
| "sklearn.metrics._classification.precision_score", | |
| "sklearn.metrics._classification.recall_score", | |
| "sklearn.metrics._classification.zero_one_loss", | |
| "sklearn.metrics._plot.confusion_matrix.plot_confusion_matrix", | |
| "sklearn.metrics._plot.det_curve.plot_det_curve", | |
| "sklearn.metrics._plot.precision_recall_curve.plot_precision_recall_curve", | |
| "sklearn.metrics._plot.roc_curve.plot_roc_curve", | |
| "sklearn.metrics._ranking.auc", | |
| "sklearn.metrics._ranking.average_precision_score", | |
| "sklearn.metrics._ranking.coverage_error", | |
| "sklearn.metrics._ranking.dcg_score", | |
| "sklearn.metrics._ranking.label_ranking_average_precision_score", | |
| "sklearn.metrics._ranking.label_ranking_loss", | |
| "sklearn.metrics._ranking.ndcg_score", | |
| "sklearn.metrics._ranking.precision_recall_curve", | |
| "sklearn.metrics._ranking.roc_auc_score", | |
| "sklearn.metrics._ranking.roc_curve", | |
| "sklearn.metrics._ranking.top_k_accuracy_score", | |
| "sklearn.metrics._regression.max_error", | |
| "sklearn.metrics._regression.mean_absolute_error", | |
| "sklearn.metrics._regression.mean_pinball_loss", | |
| "sklearn.metrics._scorer.make_scorer", | |
| "sklearn.metrics.cluster._bicluster.consensus_score", | |
| "sklearn.metrics.cluster._supervised.adjusted_mutual_info_score", | |
| "sklearn.metrics.cluster._supervised.adjusted_rand_score", | |
| "sklearn.metrics.cluster._supervised.completeness_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.homogeneity_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", | |
| "sklearn.metrics.cluster._supervised.v_measure_score", | |
| "sklearn.metrics.cluster._unsupervised.davies_bouldin_score", | |
| "sklearn.metrics.cluster._unsupervised.silhouette_samples", | |
| "sklearn.metrics.cluster._unsupervised.silhouette_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", | |
| "sklearn.metrics.pairwise.distance_metrics", | |
| "sklearn.metrics.pairwise.euclidean_distances", | |
| "sklearn.metrics.pairwise.haversine_distances", | |
| "sklearn.metrics.pairwise.kernel_metrics", | |
| "sklearn.metrics.pairwise.laplacian_kernel", | |
| "sklearn.metrics.pairwise.linear_kernel", | |
| "sklearn.metrics.pairwise.manhattan_distances", | |
| "sklearn.metrics.pairwise.nan_euclidean_distances", | |
| "sklearn.metrics.pairwise.paired_cosine_distances", | |
| "sklearn.metrics.pairwise.paired_distances", | |
| "sklearn.metrics.pairwise.paired_euclidean_distances", | |
| "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", | |
| "sklearn.metrics.pairwise.pairwise_kernels", | |
| "sklearn.metrics.pairwise.polynomial_kernel", | |
| "sklearn.metrics.pairwise.rbf_kernel", | |
| "sklearn.metrics.pairwise.sigmoid_kernel", | |
| "sklearn.model_selection._split.check_cv", | |
| "sklearn.model_selection._split.train_test_split", | |
| "sklearn.model_selection._validation.cross_val_predict", | |
| "sklearn.model_selection._validation.cross_val_score", | |
| "sklearn.model_selection._validation.cross_validate", | |
| "sklearn.model_selection._validation.learning_curve", | |
| "sklearn.model_selection._validation.permutation_test_score", | |
| "sklearn.model_selection._validation.validation_curve", | |
| "sklearn.neighbors._graph.kneighbors_graph", | |
| "sklearn.neighbors._graph.radius_neighbors_graph", | |
| "sklearn.pipeline.make_union", | |
| "sklearn.preprocessing._data.binarize", | |
| "sklearn.preprocessing._data.maxabs_scale", | |
| "sklearn.preprocessing._data.normalize", | |
| "sklearn.preprocessing._data.power_transform", | |
| "sklearn.preprocessing._data.quantile_transform", | |
| "sklearn.preprocessing._data.robust_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", | |
| "sklearn.utils.check_pandas_support", | |
| "sklearn.utils.extmath.cartesian", | |
| "sklearn.utils.extmath.density", | |
| "sklearn.utils.extmath.fast_logdet", | |
| "sklearn.utils.extmath.randomized_range_finder", | |
| "sklearn.utils.extmath.randomized_svd", | |
| "sklearn.utils.extmath.safe_sparse_dot", | |
| "sklearn.utils.extmath.squared_norm", | |
| "sklearn.utils.extmath.stable_cumsum", | |
| "sklearn.utils.extmath.svd_flip", | |
| "sklearn.utils.extmath.weighted_mode", | |
| "sklearn.utils.fixes.delayed", | |
| "sklearn.utils.fixes.linspace", | |
| "sklearn.utils.fixes.threadpool_info", | |
| "sklearn.utils.fixes.threadpool_limits", | |
| "sklearn.utils.gen_batches", | |
| "sklearn.utils.gen_even_slices", | |
| "sklearn.utils.get_chunk_n_rows", | |
| "sklearn.utils.graph.graph_shortest_path", | |
| "sklearn.utils.graph.single_source_shortest_path_length", | |
| "sklearn.utils.is_scalar_nan", | |
| "sklearn.utils.metaestimators.available_if", | |
| "sklearn.utils.metaestimators.if_delegate_has_method", | |
| "sklearn.utils.multiclass.check_classification_targets", | |
| "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", | |
| "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", | |
| "sklearn.utils.sparsefuncs.mean_variance_axis", | |
| "sklearn.utils.sparsefuncs.min_max_axis", | |
| "sklearn.utils.tosequence", | |
| "sklearn.utils.validation.as_float_array", | |
| "sklearn.utils.validation.assert_all_finite", | |
| "sklearn.utils.validation.check_is_fitted", | |
| "sklearn.utils.validation.check_memory", | |
| "sklearn.utils.validation.check_random_state", | |
| "sklearn.utils.validation.column_or_1d", | |
| "sklearn.utils.validation.has_fit_parameter", | |
| "sklearn.utils.validation.indexable", | |
| ] | |
| print("Searching for pulls") | |
| issues = gh.search_issues("repo:scikit-learn/scikit-learn 21350 in:body is:pr") | |
| all_pulls = [sk_repo.get_pull(issue.number) for issue in issues] | |
| pull_infos = [ | |
| (pull.title, pull.number, pull.state == "open", pull.merged) for pull in all_pulls | |
| ] | |
| function_with_pulls = defaultdict(list) | |
| print("Connecting pulls to functions") | |
| for title, number, open, merged in pull_infos: | |
| if not open and not merged: | |
| continue | |
| for func in all_functions: | |
| if func.split(".")[-1] in title: | |
| function_with_pulls[func].append((f"#{number}", merged)) | |
| updated_functions = ["### Functions to Update", ""] | |
| for func in all_functions: | |
| if func not in function_with_pulls: | |
| updated_functions.append(f"- [ ] {func}") | |
| continue | |
| pulls = function_with_pulls[func] | |
| list_str = "- [ ] " | |
| if any(pull[1] for pull in pulls): | |
| list_str = "- [x] " | |
| issue_numbers = " ".join([pull[0] for pull in pulls]) | |
| if issue_numbers: | |
| issue_numbers = f" {issue_numbers}" | |
| updated_functions.append(f"{list_str}{func}{issue_numbers}") | |
| function_idx = global_issue.body.index("### Functions to Update") | |
| header = global_issue.body[:function_idx] | |
| updated_list_str = "\n".join(updated_functions) | |
| updated_body = f"{header}\n{updated_list_str}" | |
| global_issue.edit(body=updated_body) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment