From 7bb26d62a702688607f540858add90229534c840 Mon Sep 17 00:00:00 2001 From: "Thomas J. Fan" Date: Fri, 11 Dec 2020 12:53:54 -0500 Subject: [PATCH 1/3] MNT Adds black config and fixs formatting before black --- benchmarks/bench_plot_fastkmeans.py | 2 +- benchmarks/bench_plot_lasso_path.py | 4 +-- benchmarks/bench_plot_randomized_svd.py | 2 +- benchmarks/bench_plot_svd.py | 2 +- benchmarks/bench_rcv1_logreg_convergence.py | 6 ++-- pyproject.toml | 25 +++++++++++++++ setup.cfg | 14 ++++++++- setup.py | 2 +- sklearn/calibration.py | 2 +- sklearn/cluster/_affinity_propagation.py | 5 +-- sklearn/cluster/_kmeans.py | 19 +++++++----- sklearn/cluster/_spectral.py | 5 +-- sklearn/decomposition/_dict_learning.py | 7 +++-- sklearn/decomposition/_kernel_pca.py | 5 +-- sklearn/ensemble/_gb.py | 5 +-- sklearn/ensemble/_iforest.py | 2 +- sklearn/kernel_approximation.py | 2 +- sklearn/kernel_ridge.py | 5 +-- sklearn/linear_model/_logistic.py | 2 +- sklearn/linear_model/_ransac.py | 2 +- sklearn/linear_model/_ridge.py | 2 +- sklearn/linear_model/_stochastic_gradient.py | 19 +++++++----- sklearn/manifold/_mds.py | 5 +-- sklearn/manifold/_spectral_embedding.py | 5 +-- sklearn/metrics/tests/test_common.py | 13 +++----- sklearn/model_selection/_search.py | 5 +-- sklearn/model_selection/_validation.py | 2 +- sklearn/multiclass.py | 32 +++++++++++--------- sklearn/naive_bayes.py | 10 +++--- sklearn/neighbors/_base.py | 5 +-- sklearn/neighbors/_kde.py | 2 +- sklearn/neighbors/_regression.py | 5 +-- sklearn/neural_network/_rbm.py | 4 +-- sklearn/pipeline.py | 5 +-- sklearn/preprocessing/_data.py | 5 +-- sklearn/svm/_base.py | 5 +-- sklearn/svm/_classes.py | 18 +++++------ sklearn/tests/test_docstring_parameters.py | 5 +-- sklearn/tests/test_random_projection.py | 12 ++++---- sklearn/utils/tests/test_validation.py | 1 - 40 files changed, 169 insertions(+), 109 deletions(-) diff --git a/benchmarks/bench_plot_fastkmeans.py b/benchmarks/bench_plot_fastkmeans.py index dd37f159a5c91..9abceaa67a938 100644 --- a/benchmarks/bench_plot_fastkmeans.py +++ b/benchmarks/bench_plot_fastkmeans.py @@ -90,7 +90,7 @@ def compute_bench_2(chunks): if __name__ == '__main__': - from mpl_toolkits.mplot3d import axes3d # register the 3d projection + from mpl_toolkits.mplot3d import axes3d # noqa register the 3d projection import matplotlib.pyplot as plt samples_range = np.linspace(50, 150, 5).astype(int) diff --git a/benchmarks/bench_plot_lasso_path.py b/benchmarks/bench_plot_lasso_path.py index a1530bb5c06c4..0952969f88844 100644 --- a/benchmarks/bench_plot_lasso_path.py +++ b/benchmarks/bench_plot_lasso_path.py @@ -32,7 +32,7 @@ def compute_bench(samples_range, features_range): 'n_features': n_features, 'n_informative': n_features // 10, 'effective_rank': min(n_samples, n_features) / 10, - #'effective_rank': None, + # 'effective_rank': None, 'bias': 0.0, } print("n_samples: %d" % n_samples) @@ -81,7 +81,7 @@ def compute_bench(samples_range, features_range): if __name__ == '__main__': - from mpl_toolkits.mplot3d import axes3d # register the 3d projection + from mpl_toolkits.mplot3d import axes3d # noqa register the 3d projection import matplotlib.pyplot as plt samples_range = np.linspace(10, 2000, 5).astype(int) diff --git a/benchmarks/bench_plot_randomized_svd.py b/benchmarks/bench_plot_randomized_svd.py index f752eeb5e863b..cc372070fe378 100644 --- a/benchmarks/bench_plot_randomized_svd.py +++ b/benchmarks/bench_plot_randomized_svd.py @@ -239,7 +239,7 @@ def svd_timing(X, n_comps, n_iter, n_oversamples, Measure time for decomposition """ print("... running SVD ...") - if method is not 'fbpca': + if method != 'fbpca': gc.collect() t0 = time() U, mu, V = randomized_svd(X, n_comps, n_oversamples, n_iter, diff --git a/benchmarks/bench_plot_svd.py b/benchmarks/bench_plot_svd.py index e58fb48c3051c..877fd4c125cb9 100644 --- a/benchmarks/bench_plot_svd.py +++ b/benchmarks/bench_plot_svd.py @@ -54,7 +54,7 @@ def compute_bench(samples_range, features_range, n_iter=3, rank=50): if __name__ == '__main__': - from mpl_toolkits.mplot3d import axes3d # register the 3d projection + from mpl_toolkits.mplot3d import axes3d # noqa register the 3d projection import matplotlib.pyplot as plt samples_range = np.linspace(2, 1000, 4).astype(int) diff --git a/benchmarks/bench_rcv1_logreg_convergence.py b/benchmarks/bench_rcv1_logreg_convergence.py index 051496c4483a2..eb8e6096756ec 100644 --- a/benchmarks/bench_rcv1_logreg_convergence.py +++ b/benchmarks/bench_rcv1_logreg_convergence.py @@ -39,7 +39,7 @@ def bench_one(name, clf_type, clf_params, n_iter): clf = clf_type(**clf_params) try: clf.set_params(max_iter=n_iter, random_state=42) - except: + except Exception: clf.set_params(n_iter=n_iter, random_state=42) st = time.time() @@ -48,12 +48,12 @@ def bench_one(name, clf_type, clf_params, n_iter): try: C = 1.0 / clf.alpha / n_samples - except: + except Exception: C = clf.C try: intercept = clf.intercept_ - except: + except Exception: intercept = 0. train_loss = get_loss(clf.coef_, intercept, X, y, C) diff --git a/pyproject.toml b/pyproject.toml index dd5279d19cbd2..ee757af6fe76f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,3 +28,28 @@ requires = [ "scipy>=0.19.1", ] + +[tool.black] +line-length = 88 +exclude = ''' + +( + /( + \.eggs # exclude a few common directories in the + | \.git # root of the project + | \.mypy_cache + | examples + | build + | dist + | doc + | sklearn/externals + )/ +) +''' +include = ''' +( + /( + doc/conf.py + )/ +) +''' diff --git a/setup.cfg b/setup.cfg index 1296273f721c4..f185d64b11c65 100644 --- a/setup.cfg +++ b/setup.cfg @@ -26,8 +26,20 @@ artifact_indexes= https://pypi.anaconda.org/scikit-learn-wheels-staging/simple/scikit-learn/ [flake8] +# max line length for black +max-line-length = 88 +target-version = ['py36'] # Default flake8 3.5 ignored flags -ignore=E121,E123,E126,E226,E24,E704,W503,W504 +ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203,E731,E741 +exclude= + .git, + __pycache__, + dist, + sklearn/externals, + doc/_build, + doc/auto_examples, + doc/tutorial + # It's fine not to put the import at the top of the file in the examples # folder. per-file-ignores = diff --git a/setup.py b/setup.py index f2d832a459d89..9c6fe4bb2eb85 100755 --- a/setup.py +++ b/setup.py @@ -49,7 +49,7 @@ # We can actually import a restricted version of sklearn that # does not need the compiled code -import sklearn +import sklearn # noqa import sklearn._min_dependencies as min_deps # noqa diff --git a/sklearn/calibration.py b/sklearn/calibration.py index 46faf680923f5..cd459af750e35 100644 --- a/sklearn/calibration.py +++ b/sklearn/calibration.py @@ -388,7 +388,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/cluster/_affinity_propagation.py b/sklearn/cluster/_affinity_propagation.py index 9937962095895..077af9bf5d2af 100644 --- a/sklearn/cluster/_affinity_propagation.py +++ b/sklearn/cluster/_affinity_propagation.py @@ -377,8 +377,9 @@ def __init__(self, *, damping=.5, max_iter=200, convergence_iter=15, # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.affinity == "precomputed" diff --git a/sklearn/cluster/_kmeans.py b/sklearn/cluster/_kmeans.py index f23df27dc8ad5..dc2ffd61a4f6a 100644 --- a/sklearn/cluster/_kmeans.py +++ b/sklearn/cluster/_kmeans.py @@ -1193,7 +1193,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), }, } @@ -1576,20 +1576,23 @@ def __init__(self, n_clusters=8, *, init='k-means++', max_iter=100, self.init_size = init_size self.reassignment_ratio = reassignment_ratio - @deprecated("The attribute 'counts_' is deprecated in 0.24" # type: ignore - " and will be removed in 0.26.") + @deprecated( # type: ignore + "The attribute 'counts_' is deprecated in 0.24" + " and will be removed in 0.26.") @property def counts_(self): return self._counts - @deprecated("The attribute 'init_size_' is deprecated in " # type: ignore - "0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "The attribute 'init_size_' is deprecated in " + "0.24 and will be removed in 0.26.") @property def init_size_(self): return self._init_size - @deprecated("The attribute 'random_state_' is deprecated " # type: ignore - "in 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "The attribute 'random_state_' is deprecated " + "in 0.24 and will be removed in 0.26.") @property def random_state_(self): return getattr(self, "_random_state", None) @@ -1918,7 +1921,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/cluster/_spectral.py b/sklearn/cluster/_spectral.py index f9a01dc2c00da..e46f6831ea9b0 100644 --- a/sklearn/cluster/_spectral.py +++ b/sklearn/cluster/_spectral.py @@ -573,8 +573,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.affinity in ["precomputed", diff --git a/sklearn/decomposition/_dict_learning.py b/sklearn/decomposition/_dict_learning.py index 74a4d4f4d17a4..66646743d59a9 100644 --- a/sklearn/decomposition/_dict_learning.py +++ b/sklearn/decomposition/_dict_learning.py @@ -1088,9 +1088,10 @@ def fit(self, X, y=None): """ return self - @deprecated("The attribute 'components_' is deprecated " # type: ignore - "in 0.24 and will be removed in 0.26. Use the " - "'dictionary' instead.") + @deprecated( # type: ignore + "The attribute 'components_' is deprecated " + "in 0.24 and will be removed in 0.26. Use the " + "'dictionary' instead.") @property def components_(self): return self.dictionary diff --git a/sklearn/decomposition/_kernel_pca.py b/sklearn/decomposition/_kernel_pca.py index ff1d2d869834f..5d27c15bceb41 100644 --- a/sklearn/decomposition/_kernel_pca.py +++ b/sklearn/decomposition/_kernel_pca.py @@ -169,8 +169,9 @@ def __init__(self, n_components=None, *, kernel="linear", # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.kernel == "precomputed" diff --git a/sklearn/ensemble/_gb.py b/sklearn/ensemble/_gb.py index a25b716edc22b..8a565031092d5 100644 --- a/sklearn/ensemble/_gb.py +++ b/sklearn/ensemble/_gb.py @@ -1694,8 +1694,9 @@ def apply(self, X): # FIXME: to be removed in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute n_classes_ was deprecated " # type: ignore - "in version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute n_classes_ was deprecated " + "in version 0.24 and will be removed in 0.26.") @property def n_classes_(self): try: diff --git a/sklearn/ensemble/_iforest.py b/sklearn/ensemble/_iforest.py index ce7f77edb1de4..4510575d47fde 100644 --- a/sklearn/ensemble/_iforest.py +++ b/sklearn/ensemble/_iforest.py @@ -458,7 +458,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/kernel_approximation.py b/sklearn/kernel_approximation.py index ca02aac3e982c..2feaaa4b67a11 100644 --- a/sklearn/kernel_approximation.py +++ b/sklearn/kernel_approximation.py @@ -834,7 +834,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_transformer_preserve_dtypes': - 'dtypes are preserved but not at a close enough precision', + ('dtypes are preserved but not at a close enough precision') }, 'preserves_dtype': [np.float64, np.float32] } diff --git a/sklearn/kernel_ridge.py b/sklearn/kernel_ridge.py index 119b27e9084ae..344358141e4dc 100644 --- a/sklearn/kernel_ridge.py +++ b/sklearn/kernel_ridge.py @@ -138,8 +138,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.kernel == "precomputed" diff --git a/sklearn/linear_model/_logistic.py b/sklearn/linear_model/_logistic.py index 1afa06637b04a..a077729219f4d 100644 --- a/sklearn/linear_model/_logistic.py +++ b/sklearn/linear_model/_logistic.py @@ -2091,6 +2091,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/linear_model/_ransac.py b/sklearn/linear_model/_ransac.py index c9246c121c387..d79a13b766a0c 100644 --- a/sklearn/linear_model/_ransac.py +++ b/sklearn/linear_model/_ransac.py @@ -507,6 +507,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/linear_model/_ridge.py b/sklearn/linear_model/_ridge.py index f3f1074312f60..6a02b1e545e92 100644 --- a/sklearn/linear_model/_ridge.py +++ b/sklearn/linear_model/_ridge.py @@ -1966,6 +1966,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/linear_model/_stochastic_gradient.py b/sklearn/linear_model/_stochastic_gradient.py index e99116ca4f3e3..0a98cbccf60c1 100644 --- a/sklearn/linear_model/_stochastic_gradient.py +++ b/sklearn/linear_model/_stochastic_gradient.py @@ -290,8 +290,9 @@ def _make_validation_score_cb(self, validation_mask, X, y, sample_weight, sample_weight[validation_mask], classes=classes) # mypy error: Decorated property not supported - @deprecated("Attribute standard_coef_ was deprecated " # type: ignore - "in version 0.23 and will be removed in 0.25.") + @deprecated( # type: ignore + "Attribute standard_coef_ was deprecated " + "in version 0.23 and will be removed in 0.25.") @property def standard_coef_(self): return self._standard_coef @@ -306,15 +307,17 @@ def standard_intercept_(self): return self._standard_intercept # mypy error: Decorated property not supported - @deprecated("Attribute average_coef_ was deprecated " # type: ignore - "in version 0.23 and will be removed in 0.25.") + @deprecated( # type: ignore + "Attribute average_coef_ was deprecated " + "in version 0.23 and will be removed in 0.25.") @property def average_coef_(self): return self._average_coef # mypy error: Decorated property not supported - @deprecated("Attribute average_intercept_ was deprecated " # type: ignore - "in version 0.23 and will be removed in 0.25.") + @deprecated( # type: ignore + "Attribute average_intercept_ was deprecated " + "in version 0.23 and will be removed in 0.25.") @property def average_intercept_(self): return self._average_intercept @@ -1100,7 +1103,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -1590,6 +1593,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/manifold/_mds.py b/sklearn/manifold/_mds.py index ac749d737c762..ceffa74836301 100644 --- a/sklearn/manifold/_mds.py +++ b/sklearn/manifold/_mds.py @@ -391,8 +391,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.dissimilarity == "precomputed" diff --git a/sklearn/manifold/_spectral_embedding.py b/sklearn/manifold/_spectral_embedding.py index b77da83ecad30..508c568a8bf72 100644 --- a/sklearn/manifold/_spectral_embedding.py +++ b/sklearn/manifold/_spectral_embedding.py @@ -474,8 +474,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return self.affinity in ["precomputed", diff --git a/sklearn/metrics/tests/test_common.py b/sklearn/metrics/tests/test_common.py index 767228d460789..ca85baf644cab 100644 --- a/sklearn/metrics/tests/test_common.py +++ b/sklearn/metrics/tests/test_common.py @@ -515,14 +515,11 @@ def _require_positive_targets(y1, y2): def test_symmetry_consistency(): # We shouldn't forget any metrics - assert (SYMMETRIC_METRICS.union( - NOT_SYMMETRIC_METRICS, set(THRESHOLDED_METRICS), - METRIC_UNDEFINED_BINARY_MULTICLASS) == - set(ALL_METRICS)) - - assert ( - SYMMETRIC_METRICS.intersection(NOT_SYMMETRIC_METRICS) == - set()) + assert ((SYMMETRIC_METRICS | NOT_SYMMETRIC_METRICS | + set(THRESHOLDED_METRICS) | METRIC_UNDEFINED_BINARY_MULTICLASS) == + set(ALL_METRICS)) + + assert (SYMMETRIC_METRICS & NOT_SYMMETRIC_METRICS) == set() @pytest.mark.parametrize("name", sorted(SYMMETRIC_METRICS)) diff --git a/sklearn/model_selection/_search.py b/sklearn/model_selection/_search.py index 51f43debf78ed..b34207f397412 100644 --- a/sklearn/model_selection/_search.py +++ b/sklearn/model_selection/_search.py @@ -442,8 +442,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): # allows cross-validation to see 'precomputed' metrics diff --git a/sklearn/model_selection/_validation.py b/sklearn/model_selection/_validation.py index 63f68a8e30738..faa4340942411 100644 --- a/sklearn/model_selection/_validation.py +++ b/sklearn/model_selection/_validation.py @@ -592,7 +592,7 @@ def _fit_and_score(estimator, X, y, scorer, train, test, verbose, else: estimator.fit(X_train, y_train, **fit_params) - except Exception as e: + except Exception: # Note fit time as time until error fit_time = time.time() - start_time score_time = 0.0 diff --git a/sklearn/multiclass.py b/sklearn/multiclass.py index 182a412f8313f..e2d1ba7b2aa33 100644 --- a/sklearn/multiclass.py +++ b/sklearn/multiclass.py @@ -458,11 +458,12 @@ def n_classes_(self): # TODO: Remove coef_ attribute in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute coef_ was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26. " - "If you observe this warning while using RFE " - "or SelectFromModel, use the importance_getter " - "parameter instead.") + @deprecated( # type: ignore + "Attribute coef_ was deprecated in " + "version 0.24 and will be removed in 0.26. " + "If you observe this warning while using RFE " + "or SelectFromModel, use the importance_getter " + "parameter instead.") @property def coef_(self): check_is_fitted(self) @@ -476,11 +477,12 @@ def coef_(self): # TODO: Remove intercept_ attribute in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute intercept_ was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26. " - "If you observe this warning while using RFE " - "or SelectFromModel, use the importance_getter " - "parameter instead.") + @deprecated( # type: ignore + "Attribute intercept_ was deprecated in " + "version 0.24 and will be removed in 0.26. " + "If you observe this warning while using RFE " + "or SelectFromModel, use the importance_getter " + "parameter instead.") @property def intercept_(self): check_is_fitted(self) @@ -491,8 +493,9 @@ def intercept_(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): """Indicate if wrapped estimator is using a precomputed Gram matrix""" @@ -771,8 +774,9 @@ def n_classes_(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): """Indicate if wrapped estimator is using a precomputed Gram matrix""" diff --git a/sklearn/naive_bayes.py b/sklearn/naive_bayes.py index 93a2da00549de..8d4cc65b7d952 100644 --- a/sklearn/naive_bayes.py +++ b/sklearn/naive_bayes.py @@ -647,16 +647,18 @@ def _init_counters(self, n_effective_classes, n_features): dtype=np.float64) # mypy error: Decorated property not supported - @deprecated("Attribute coef_ was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute coef_ was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def coef_(self): return (self.feature_log_prob_[1:] if len(self.classes_) == 2 else self.feature_log_prob_) # mypy error: Decorated property not supported - @deprecated("Attribute intercept_ was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute intercept_ was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def intercept_(self): return (self.class_log_prior_[1:] diff --git a/sklearn/neighbors/_base.py b/sklearn/neighbors/_base.py index 1e666043347cf..a365a8f672fb5 100644 --- a/sklearn/neighbors/_base.py +++ b/sklearn/neighbors/_base.py @@ -530,8 +530,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): # For cross-validation routines to split data correctly diff --git a/sklearn/neighbors/_kde.py b/sklearn/neighbors/_kde.py index 70e6ce7d91a25..30aa2e037b69c 100644 --- a/sklearn/neighbors/_kde.py +++ b/sklearn/neighbors/_kde.py @@ -286,6 +286,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'sample_weight must have positive values', + ('sample_weight must have positive values'), } } diff --git a/sklearn/neighbors/_regression.py b/sklearn/neighbors/_regression.py index 49bc199a86ec6..ef3133fb87642 100644 --- a/sklearn/neighbors/_regression.py +++ b/sklearn/neighbors/_regression.py @@ -162,8 +162,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): # For cross-validation routines to split data correctly diff --git a/sklearn/neural_network/_rbm.py b/sklearn/neural_network/_rbm.py index 7aa64c503bb21..bf75f98c8a4de 100644 --- a/sklearn/neural_network/_rbm.py +++ b/sklearn/neural_network/_rbm.py @@ -385,8 +385,8 @@ def _more_tags(self): return { '_xfail_checks': { 'check_methods_subset_invariance': - 'fails for the decision_function method', + ('fails for the decision_function method'), 'check_methods_sample_order_invariance': - 'fails for the score_samples method', + ('fails for the score_samples method'), } } diff --git a/sklearn/pipeline.py b/sklearn/pipeline.py index 6df8cddc476c4..59f18661a1e70 100644 --- a/sklearn/pipeline.py +++ b/sklearn/pipeline.py @@ -631,8 +631,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): # check if first estimator expects pairwise input diff --git a/sklearn/preprocessing/_data.py b/sklearn/preprocessing/_data.py index 3f6cbb7546439..7bef712be1ea5 100644 --- a/sklearn/preprocessing/_data.py +++ b/sklearn/preprocessing/_data.py @@ -2314,8 +2314,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): return True diff --git a/sklearn/svm/_base.py b/sklearn/svm/_base.py index c5196a5801607..f328b9827d003 100644 --- a/sklearn/svm/_base.py +++ b/sklearn/svm/_base.py @@ -109,8 +109,9 @@ def _more_tags(self): # TODO: Remove in 0.26 # mypy error: Decorated property not supported - @deprecated("Attribute _pairwise was deprecated in " # type: ignore - "version 0.24 and will be removed in 0.26.") + @deprecated( # type: ignore + "Attribute _pairwise was deprecated in " + "version 0.24 and will be removed in 0.26.") @property def _pairwise(self): # Used by cross_val_score. diff --git a/sklearn/svm/_classes.py b/sklearn/svm/_classes.py index 295ff577b642e..28feff52c5c3f 100644 --- a/sklearn/svm/_classes.py +++ b/sklearn/svm/_classes.py @@ -249,7 +249,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -435,7 +435,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -667,7 +667,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -887,10 +887,10 @@ def _more_tags(self): return { '_xfail_checks': { 'check_methods_subset_invariance': - 'fails for the decision_function method', - 'check_class_weight_classifiers': 'class_weight is ignored.', + ('fails for the decision_function method'), + 'check_class_weight_classifiers': ('class_weight is ignored.'), 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -1065,7 +1065,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -1218,7 +1218,7 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } @@ -1451,6 +1451,6 @@ def _more_tags(self): return { '_xfail_checks': { 'check_sample_weights_invariance': - 'zero sample_weight is not equivalent to removing samples', + ('zero sample_weight is not equivalent to removing samples'), } } diff --git a/sklearn/tests/test_docstring_parameters.py b/sklearn/tests/test_docstring_parameters.py index 8d8399f0cf4da..05aec4d328d6e 100644 --- a/sklearn/tests/test_docstring_parameters.py +++ b/sklearn/tests/test_docstring_parameters.py @@ -32,11 +32,12 @@ # FutureWarnings with warnings.catch_warnings(): warnings.simplefilter('ignore', FutureWarning) + # mypy error: Module has no attribute "__path__" + sklearn_path = sklearn.__path__ # type: ignore # mypy issue #1422 PUBLIC_MODULES = set([ pckg[1] for pckg in walk_packages( prefix='sklearn.', - # mypy error: Module has no attribute "__path__" - path=sklearn.__path__) # type: ignore # mypy issue #1422 + path=sklearn_path) if not ("._" in pckg[1] or ".tests." in pckg[1]) ]) diff --git a/sklearn/tests/test_random_projection.py b/sklearn/tests/test_random_projection.py index 829f7cccc4ba9..00b67a767b36b 100644 --- a/sklearn/tests/test_random_projection.py +++ b/sklearn/tests/test_random_projection.py @@ -265,12 +265,12 @@ def test_random_projection_embedding_quality(): assert 1 - eps < distances_ratio.min() -def test_SparseRandomProjection_output_representation(): - for SparseRandomProjection in all_SparseRandomProjection: +def test_SparseRandomProj_output_representation(): + for SparseRandomProj in all_SparseRandomProjection: # when using sparse input, the projected data can be forced to be a # dense numpy array - rp = SparseRandomProjection(n_components=10, dense_output=True, - random_state=0) + rp = SparseRandomProj(n_components=10, dense_output=True, + random_state=0) rp.fit(data) assert isinstance(rp.transform(data), np.ndarray) @@ -278,8 +278,8 @@ def test_SparseRandomProjection_output_representation(): assert isinstance(rp.transform(sparse_data), np.ndarray) # the output can be left to a sparse matrix instead - rp = SparseRandomProjection(n_components=10, dense_output=False, - random_state=0) + rp = SparseRandomProj(n_components=10, dense_output=False, + random_state=0) rp = rp.fit(data) # output for dense input will stay dense: assert isinstance(rp.transform(data), np.ndarray) diff --git a/sklearn/utils/tests/test_validation.py b/sklearn/utils/tests/test_validation.py index 5f147aaa15b0a..3c26d9940f5ed 100644 --- a/sklearn/utils/tests/test_validation.py +++ b/sklearn/utils/tests/test_validation.py @@ -46,7 +46,6 @@ _allclose_dense_sparse, FLOAT_DTYPES) from sklearn.utils.validation import _check_fit_params -from sklearn.utils.fixes import parse_version import sklearn From 9acb497e6565db1462e7fcc1219967f37a48bae2 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Sat, 12 Jun 2021 15:01:45 +0200 Subject: [PATCH 2/3] Target Python 3.7+ --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index f185d64b11c65..b4c0a675aac45 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,7 +28,7 @@ artifact_indexes= [flake8] # max line length for black max-line-length = 88 -target-version = ['py36'] +target-version = ['py37'] # Default flake8 3.5 ignored flags ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203,E731,E741 exclude= From 543bc0949ba6835c9be141a233d5819e932389b6 Mon Sep 17 00:00:00 2001 From: Roman Yurchak Date: Sat, 12 Jun 2021 16:19:19 +0200 Subject: [PATCH 3/3] Document ignored flake8 flags Co-authored-by: Christian Lorentzen --- setup.cfg | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index b4c0a675aac45..fe4139d8d0067 100644 --- a/setup.cfg +++ b/setup.cfg @@ -30,7 +30,18 @@ artifact_indexes= max-line-length = 88 target-version = ['py37'] # Default flake8 3.5 ignored flags -ignore=E121,E123,E126,E226,E24,E704,W503,W504,E203,E731,E741 +ignore= + E24, # check ignored by default in flake8. Meaning unclear. + E121, # continuation line under-indented + E123, # closing bracket does not match indentation + E126, # continuation line over-indented for hanging indent + E203, # space before : (needed for how black formats slicing) + 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’ + W503, # line break before binary operator + W504 # line break after binary operator exclude= .git, __pycache__,