Skip to content

Commit ee6d039

Browse files
authored
[sklearn] Make BaseEstimator inherit from _MetadataRequester (#387)
1 parent d1b4fb3 commit ee6d039

File tree

4 files changed

+8
-52
lines changed

4 files changed

+8
-52
lines changed

stubs/sklearn/_config.pyi

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ def set_config(
1616
enable_cython_pairwise_dist: None | bool = None,
1717
array_api_dispatch: None | bool = None,
1818
transform_output: None | str = None,
19+
enable_metadata_routing: None | bool = None,
20+
skip_parameter_validation: None | bool = None,
1921
) -> None: ...
2022
def config_context(
2123
*,
@@ -27,4 +29,6 @@ def config_context(
2729
enable_cython_pairwise_dist: None | bool = None,
2830
array_api_dispatch: None | bool = None,
2931
transform_output: None | str = None,
32+
enable_metadata_routing: None | bool = None,
33+
skip_parameter_validation: None | bool = None,
3034
) -> Iterator[None]: ...

stubs/sklearn/base.pyi

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ from ._config import get_config as get_config
1515
from ._typing import ArrayLike, Float, Int, MatrixLike
1616
from .metrics import accuracy_score as accuracy_score, r2_score as r2_score
1717
from .utils._estimator_html_repr import estimator_html_repr as estimator_html_repr
18+
from .utils._metadata_requests import _MetadataRequester
1819
from .utils._param_validation import validate_parameter_constraints as validate_parameter_constraints
1920
from .utils._set_output import _SetOutputMixin
2021
from .utils.validation import check_array as check_array, check_is_fitted as check_is_fitted, check_X_y as check_X_y
@@ -24,7 +25,7 @@ from .utils.validation import check_array as check_array, check_is_fitted as che
2425

2526
def clone(estimator: BaseEstimator | Iterable[BaseEstimator], *, safe: bool = True) -> Any: ...
2627

27-
class BaseEstimator:
28+
class BaseEstimator(_MetadataRequester):
2829
def get_params(self, deep: bool = True) -> dict: ...
2930
def set_params(self, **params) -> Self: ...
3031
def __repr__(self, N_CHAR_MAX: int = 700) -> str: ...

stubs/sklearn/stubtest_allowlist.txt

Lines changed: 0 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,6 @@ sklearn.base._UnstableArchMixin.__sklearn_tags__
7878
sklearn.base.is_clusterer
7979
sklearn.calibration
8080
sklearn.calibration.CalibratedClassifierCV.__sklearn_tags__
81-
sklearn.calibration.CalibratedClassifierCV.get_metadata_routing
8281
sklearn.calibration.CalibratedClassifierCV.set_fit_request
8382
sklearn.calibration.CalibratedClassifierCV.set_score_request
8483
sklearn.calibration.LabelEncoder.__sklearn_tags__
@@ -147,15 +146,11 @@ sklearn.cluster.tests.test_spectral
147146
sklearn.compose
148147
sklearn.compose.ColumnTransformer.__getitem__
149148
sklearn.compose.ColumnTransformer.__sklearn_tags__
150-
sklearn.compose.ColumnTransformer.get_metadata_routing
151149
sklearn.compose.TransformedTargetRegressor.__sklearn_tags__
152-
sklearn.compose.TransformedTargetRegressor.get_metadata_routing
153150
sklearn.compose.TransformedTargetRegressor.set_score_request
154151
sklearn.compose._column_transformer.ColumnTransformer.__getitem__
155152
sklearn.compose._column_transformer.ColumnTransformer.__sklearn_tags__
156-
sklearn.compose._column_transformer.ColumnTransformer.get_metadata_routing
157153
sklearn.compose._target.TransformedTargetRegressor.__sklearn_tags__
158-
sklearn.compose._target.TransformedTargetRegressor.get_metadata_routing
159154
sklearn.compose._target.TransformedTargetRegressor.set_score_request
160155
sklearn.compose.tests
161156
sklearn.compose.tests.test_column_transformer
@@ -170,8 +165,6 @@ sklearn.conftest.raccoon_face_fxt
170165
sklearn.conftest.raccoon_face_or_skip
171166
sklearn.conftest.scipy_datasets_require_network
172167
sklearn.covariance
173-
sklearn.covariance.GraphicalLassoCV.get_metadata_routing
174-
sklearn.covariance._graph_lasso.GraphicalLassoCV.get_metadata_routing
175168
sklearn.covariance.tests
176169
sklearn.covariance.tests.test_covariance
177170
sklearn.covariance.tests.test_elliptic_envelope
@@ -343,7 +336,6 @@ sklearn.ensemble._bagging.BaggingClassifier.set_score_request
343336
sklearn.ensemble._bagging.BaggingRegressor.set_fit_request
344337
sklearn.ensemble._bagging.BaggingRegressor.set_score_request
345338
sklearn.ensemble._bagging.BaseBagging.__sklearn_tags__
346-
sklearn.ensemble._bagging.BaseBagging.get_metadata_routing
347339
sklearn.ensemble._bagging.BaseBagging.set_fit_request
348340
sklearn.ensemble._base._BaseHeterogeneousEnsemble.__sklearn_tags__
349341
sklearn.ensemble._forest.BaseForest.__sklearn_tags__
@@ -420,13 +412,11 @@ sklearn.ensemble._stacking.StackingClassifier.set_fit_request
420412
sklearn.ensemble._stacking.StackingClassifier.set_score_request
421413
sklearn.ensemble._stacking.StackingRegressor.set_fit_request
422414
sklearn.ensemble._stacking.StackingRegressor.set_score_request
423-
sklearn.ensemble._stacking._BaseStacking.get_metadata_routing
424415
sklearn.ensemble._voting.VotingClassifier.__sklearn_tags__
425416
sklearn.ensemble._voting.VotingClassifier.set_fit_request
426417
sklearn.ensemble._voting.VotingClassifier.set_score_request
427418
sklearn.ensemble._voting.VotingRegressor.set_fit_request
428419
sklearn.ensemble._voting.VotingRegressor.set_score_request
429-
sklearn.ensemble._voting._BaseVoting.get_metadata_routing
430420
sklearn.ensemble._weight_boosting.AdaBoostClassifier.set_fit_request
431421
sklearn.ensemble._weight_boosting.AdaBoostClassifier.set_score_request
432422
sklearn.ensemble._weight_boosting.AdaBoostRegressor.set_fit_request
@@ -448,7 +438,6 @@ sklearn.exceptions.EstimatorCheckFailedWarning
448438
sklearn.exceptions.UnsetMetadataPassedError
449439
sklearn.exceptions.__all__
450440
sklearn.experimental
451-
sklearn.experimental.enable_iterative_imputer.IterativeImputer.get_metadata_routing
452441
sklearn.experimental.tests
453442
sklearn.experimental.tests.test_enable_hist_gradient_boosting
454443
sklearn.experimental.tests.test_enable_iterative_imputer
@@ -478,22 +467,14 @@ sklearn.feature_extraction.text.TfidfVectorizer.__sklearn_tags__
478467
sklearn.feature_selection
479468
sklearn.feature_selection.GenericUnivariateSelect.__sklearn_tags__
480469
sklearn.feature_selection.RFE.__sklearn_tags__
481-
sklearn.feature_selection.RFE.get_metadata_routing
482-
sklearn.feature_selection.RFECV.get_metadata_routing
483470
sklearn.feature_selection.SelectFromModel.__sklearn_tags__
484-
sklearn.feature_selection.SelectFromModel.get_metadata_routing
485471
sklearn.feature_selection.SelectKBest.__sklearn_tags__
486472
sklearn.feature_selection.SelectPercentile.__sklearn_tags__
487473
sklearn.feature_selection.SequentialFeatureSelector.__sklearn_tags__
488-
sklearn.feature_selection.SequentialFeatureSelector.get_metadata_routing
489474
sklearn.feature_selection.VarianceThreshold.__sklearn_tags__
490475
sklearn.feature_selection._from_model.SelectFromModel.__sklearn_tags__
491-
sklearn.feature_selection._from_model.SelectFromModel.get_metadata_routing
492476
sklearn.feature_selection._rfe.RFE.__sklearn_tags__
493-
sklearn.feature_selection._rfe.RFE.get_metadata_routing
494-
sklearn.feature_selection._rfe.RFECV.get_metadata_routing
495477
sklearn.feature_selection._sequential.SequentialFeatureSelector.__sklearn_tags__
496-
sklearn.feature_selection._sequential.SequentialFeatureSelector.get_metadata_routing
497478
sklearn.feature_selection._univariate_selection.GenericUnivariateSelect.__sklearn_tags__
498479
sklearn.feature_selection._univariate_selection.SelectKBest.__sklearn_tags__
499480
sklearn.feature_selection._univariate_selection.SelectPercentile.__sklearn_tags__
@@ -525,14 +506,12 @@ sklearn.gaussian_process.tests.test_gpc
525506
sklearn.gaussian_process.tests.test_gpr
526507
sklearn.gaussian_process.tests.test_kernels
527508
sklearn.impute
528-
sklearn.impute.IterativeImputer.get_metadata_routing
529509
sklearn.impute.MissingIndicator.__sklearn_tags__
530510
sklearn.impute.SimpleImputer.__sklearn_tags__
531511
sklearn.impute.__all__
532512
sklearn.impute._base.MissingIndicator.__sklearn_tags__
533513
sklearn.impute._base.SimpleImputer.__sklearn_tags__
534514
sklearn.impute._base._BaseImputer.__sklearn_tags__
535-
sklearn.impute._iterative.IterativeImputer.get_metadata_routing
536515
sklearn.impute.tests
537516
sklearn.impute.tests.test_base
538517
sklearn.impute.tests.test_common
@@ -579,7 +558,6 @@ sklearn.linear_model.HuberRegressor.set_score_request
579558
sklearn.linear_model.Lars.set_fit_request
580559
sklearn.linear_model.Lars.set_score_request
581560
sklearn.linear_model.LarsCV.__sklearn_tags__
582-
sklearn.linear_model.LarsCV.get_metadata_routing
583561
sklearn.linear_model.LarsCV.parameter
584562
sklearn.linear_model.LarsCV.set_score_request
585563
sklearn.linear_model.Lasso.set_fit_request
@@ -600,7 +578,6 @@ sklearn.linear_model.LogisticRegression.__sklearn_tags__
600578
sklearn.linear_model.LogisticRegression.set_fit_request
601579
sklearn.linear_model.LogisticRegression.set_score_request
602580
sklearn.linear_model.LogisticRegressionCV.__sklearn_tags__
603-
sklearn.linear_model.LogisticRegressionCV.get_metadata_routing
604581
sklearn.linear_model.LogisticRegressionCV.param
605582
sklearn.linear_model.LogisticRegressionCV.set_fit_request
606583
sklearn.linear_model.LogisticRegressionCV.set_score_request
@@ -611,7 +588,6 @@ sklearn.linear_model.MultiTaskElasticNetCV.set_score_request
611588
sklearn.linear_model.MultiTaskLassoCV.__sklearn_tags__
612589
sklearn.linear_model.MultiTaskLassoCV.set_score_request
613590
sklearn.linear_model.OrthogonalMatchingPursuit.set_score_request
614-
sklearn.linear_model.OrthogonalMatchingPursuitCV.get_metadata_routing
615591
sklearn.linear_model.OrthogonalMatchingPursuitCV.set_score_request
616592
sklearn.linear_model.PassiveAggressiveClassifier.set_fit_request
617593
sklearn.linear_model.PassiveAggressiveClassifier.set_partial_fit_request
@@ -627,7 +603,6 @@ sklearn.linear_model.QuantileRegressor.__sklearn_tags__
627603
sklearn.linear_model.QuantileRegressor.set_fit_request
628604
sklearn.linear_model.QuantileRegressor.set_score_request
629605
sklearn.linear_model.RANSACRegressor.__sklearn_tags__
630-
sklearn.linear_model.RANSACRegressor.get_metadata_routing
631606
sklearn.linear_model.RANSACRegressor.set_fit_request
632607
sklearn.linear_model.Ridge.__sklearn_tags__
633608
sklearn.linear_model.Ridge.set_fit_request
@@ -673,7 +648,6 @@ sklearn.linear_model._coordinate_descent.Lasso.set_score_request
673648
sklearn.linear_model._coordinate_descent.LassoCV.set_fit_request
674649
sklearn.linear_model._coordinate_descent.LassoCV.set_score_request
675650
sklearn.linear_model._coordinate_descent.LinearModelCV.__sklearn_tags__
676-
sklearn.linear_model._coordinate_descent.LinearModelCV.get_metadata_routing
677651
sklearn.linear_model._coordinate_descent.LinearModelCV.set_fit_request
678652
sklearn.linear_model._coordinate_descent.MultiTaskElasticNet.__sklearn_tags__
679653
sklearn.linear_model._coordinate_descent.MultiTaskElasticNet.param
@@ -707,7 +681,6 @@ sklearn.linear_model._huber.HuberRegressor.set_score_request
707681
sklearn.linear_model._least_angle.Lars.set_fit_request
708682
sklearn.linear_model._least_angle.Lars.set_score_request
709683
sklearn.linear_model._least_angle.LarsCV.__sklearn_tags__
710-
sklearn.linear_model._least_angle.LarsCV.get_metadata_routing
711684
sklearn.linear_model._least_angle.LarsCV.parameter
712685
sklearn.linear_model._least_angle.LarsCV.set_score_request
713686
sklearn.linear_model._least_angle.LassoLars.set_fit_request
@@ -722,12 +695,10 @@ sklearn.linear_model._logistic.LogisticRegression.__sklearn_tags__
722695
sklearn.linear_model._logistic.LogisticRegression.set_fit_request
723696
sklearn.linear_model._logistic.LogisticRegression.set_score_request
724697
sklearn.linear_model._logistic.LogisticRegressionCV.__sklearn_tags__
725-
sklearn.linear_model._logistic.LogisticRegressionCV.get_metadata_routing
726698
sklearn.linear_model._logistic.LogisticRegressionCV.param
727699
sklearn.linear_model._logistic.LogisticRegressionCV.set_fit_request
728700
sklearn.linear_model._logistic.LogisticRegressionCV.set_score_request
729701
sklearn.linear_model._omp.OrthogonalMatchingPursuit.set_score_request
730-
sklearn.linear_model._omp.OrthogonalMatchingPursuitCV.get_metadata_routing
731702
sklearn.linear_model._omp.OrthogonalMatchingPursuitCV.set_score_request
732703
sklearn.linear_model._passive_aggressive.PassiveAggressiveClassifier.set_fit_request
733704
sklearn.linear_model._passive_aggressive.PassiveAggressiveClassifier.set_partial_fit_request
@@ -741,7 +712,6 @@ sklearn.linear_model._quantile.QuantileRegressor.__sklearn_tags__
741712
sklearn.linear_model._quantile.QuantileRegressor.set_fit_request
742713
sklearn.linear_model._quantile.QuantileRegressor.set_score_request
743714
sklearn.linear_model._ransac.RANSACRegressor.__sklearn_tags__
744-
sklearn.linear_model._ransac.RANSACRegressor.get_metadata_routing
745715
sklearn.linear_model._ransac.RANSACRegressor.set_fit_request
746716
sklearn.linear_model._ridge.Ridge.__sklearn_tags__
747717
sklearn.linear_model._ridge.Ridge.set_fit_request
@@ -757,7 +727,6 @@ sklearn.linear_model._ridge.RidgeClassifierCV.set_score_request
757727
sklearn.linear_model._ridge._BaseRidge.set_fit_request
758728
sklearn.linear_model._ridge._BaseRidgeCV.__sklearn_tags__
759729
sklearn.linear_model._ridge._BaseRidgeCV.cv_values_
760-
sklearn.linear_model._ridge._BaseRidgeCV.get_metadata_routing
761730
sklearn.linear_model._ridge._BaseRidgeCV.set_fit_request
762731
sklearn.linear_model._ridge._IdentityClassifier.set_decision_function_request
763732
sklearn.linear_model._ridge._IdentityClassifier.set_score_request
@@ -929,7 +898,6 @@ sklearn.model_selection._classification_threshold.FixedThresholdClassifier.set_s
929898
sklearn.model_selection._classification_threshold.TunedThresholdClassifierCV.set_score_request
930899
sklearn.model_selection._plot.LearningCurveDisplay.from_estimator
931900
sklearn.model_selection._search.BaseSearchCV.__sklearn_tags__
932-
sklearn.model_selection._search.BaseSearchCV.get_metadata_routing
933901
sklearn.model_selection._split.GroupKFold.set_split_request
934902
sklearn.model_selection._split.GroupShuffleSplit.set_split_request
935903
sklearn.model_selection._split.LeaveOneGroupOut.set_split_request
@@ -947,19 +915,15 @@ sklearn.model_selection.tests.test_successive_halving
947915
sklearn.model_selection.tests.test_validation
948916
sklearn.multiclass
949917
sklearn.multiclass.OneVsOneClassifier.__sklearn_tags__
950-
sklearn.multiclass.OneVsOneClassifier.get_metadata_routing
951918
sklearn.multiclass.OneVsOneClassifier.set_partial_fit_request
952919
sklearn.multiclass.OneVsOneClassifier.set_score_request
953920
sklearn.multiclass.OneVsRestClassifier.__sklearn_tags__
954-
sklearn.multiclass.OneVsRestClassifier.get_metadata_routing
955921
sklearn.multiclass.OneVsRestClassifier.set_partial_fit_request
956922
sklearn.multiclass.OneVsRestClassifier.set_score_request
957923
sklearn.multiclass.OutputCodeClassifier.__sklearn_tags__
958-
sklearn.multiclass.OutputCodeClassifier.get_metadata_routing
959924
sklearn.multiclass.OutputCodeClassifier.set_score_request
960925
sklearn.multioutput
961926
sklearn.multioutput.ClassifierChain.__sklearn_tags__
962-
sklearn.multioutput.ClassifierChain.get_metadata_routing
963927
sklearn.multioutput.ClassifierChain.predict_log_proba
964928
sklearn.multioutput.ClassifierChain.set_score_request
965929
sklearn.multioutput.MultiOutputClassifier.__sklearn_tags__
@@ -969,11 +933,9 @@ sklearn.multioutput.MultiOutputRegressor.set_fit_request
969933
sklearn.multioutput.MultiOutputRegressor.set_partial_fit_request
970934
sklearn.multioutput.MultiOutputRegressor.set_score_request
971935
sklearn.multioutput.RegressorChain.__sklearn_tags__
972-
sklearn.multioutput.RegressorChain.get_metadata_routing
973936
sklearn.multioutput.RegressorChain.set_score_request
974937
sklearn.multioutput._BaseChain.__sklearn_tags__
975938
sklearn.multioutput._MultiOutputEstimator.__sklearn_tags__
976-
sklearn.multioutput._MultiOutputEstimator.get_metadata_routing
977939
sklearn.multioutput._MultiOutputEstimator.set_fit_request
978940
sklearn.multioutput._MultiOutputEstimator.set_partial_fit_request
979941
sklearn.naive_bayes
@@ -1073,10 +1035,8 @@ sklearn.pipeline
10731035
sklearn.pipeline.FeatureUnion.__getitem__
10741036
sklearn.pipeline.FeatureUnion.__sklearn_tags__
10751037
sklearn.pipeline.FeatureUnion.feature_names_in_
1076-
sklearn.pipeline.FeatureUnion.get_metadata_routing
10771038
sklearn.pipeline.FunctionTransformer.__sklearn_tags__
10781039
sklearn.pipeline.Pipeline.__sklearn_tags__
1079-
sklearn.pipeline.Pipeline.get_metadata_routing
10801040
sklearn.pipeline.Pipeline.set_score_request
10811041
sklearn.preprocessing
10821042
sklearn.preprocessing.Binarizer.__sklearn_tags__
@@ -1144,13 +1104,11 @@ sklearn.semi_supervised
11441104
sklearn.semi_supervised.LabelPropagation.set_score_request
11451105
sklearn.semi_supervised.LabelSpreading.set_score_request
11461106
sklearn.semi_supervised.SelfTrainingClassifier.__sklearn_tags__
1147-
sklearn.semi_supervised.SelfTrainingClassifier.get_metadata_routing
11481107
sklearn.semi_supervised._label_propagation.BaseLabelPropagation.__sklearn_tags__
11491108
sklearn.semi_supervised._label_propagation.BaseLabelPropagation.set_score_request
11501109
sklearn.semi_supervised._label_propagation.LabelPropagation.set_score_request
11511110
sklearn.semi_supervised._label_propagation.LabelSpreading.set_score_request
11521111
sklearn.semi_supervised._self_training.SelfTrainingClassifier.__sklearn_tags__
1153-
sklearn.semi_supervised._self_training.SelfTrainingClassifier.get_metadata_routing
11541112
sklearn.semi_supervised.tests
11551113
sklearn.semi_supervised.tests.test_label_propagation
11561114
sklearn.semi_supervised.tests.test_self_training
@@ -1447,8 +1405,6 @@ sklearn._build_utils.openmp_helpers
14471405
sklearn._build_utils.parse
14481406
sklearn._build_utils.pre_build_helpers
14491407
sklearn._config._threadlocal
1450-
sklearn._config.config_context
1451-
sklearn._config.set_config
14521408
sklearn._loss._loss.CyAbsoluteError.cy_grad_hess
14531409
sklearn._loss._loss.CyAbsoluteError.cy_gradient
14541410
sklearn._loss._loss.CyAbsoluteError.cy_loss
@@ -1528,7 +1484,6 @@ sklearn.compose.ColumnTransformer.__init__
15281484
sklearn.compose._column_transformer.ColumnTransformer.__init__
15291485
sklearn.compose._column_transformer.make_column_transformer
15301486
sklearn.compose.make_column_transformer
1531-
sklearn.config_context
15321487
sklearn.conftest._SKIP32_MARK
15331488
sklearn.conftest.fetch_20newsgroups
15341489
sklearn.conftest.fetch_20newsgroups_fxt
@@ -2045,7 +2000,6 @@ sklearn.metrics.mean_squared_log_error
20452000
sklearn.metrics.pairwise.DistanceMetric
20462001
sklearn.metrics.pairwise.check_array
20472002
sklearn.metrics.pairwise.check_pairwise_arrays
2048-
sklearn.metrics.pairwise.config_context
20492003
sklearn.metrics.pairwise.manhattan_distances
20502004
sklearn.metrics.pairwise.pairwise_distances
20512005
sklearn.metrics.pairwise_distances
@@ -2126,7 +2080,6 @@ sklearn.random_projection.check_array
21262080
sklearn.random_projection.sample_without_replacement
21272081
sklearn.semi_supervised.SelfTrainingClassifier.__init__
21282082
sklearn.semi_supervised._self_training.SelfTrainingClassifier.__init__
2129-
sklearn.set_config
21302083
sklearn.svm.LinearSVC.__init__
21312084
sklearn.svm.LinearSVR.__init__
21322085
sklearn.svm.NuSVC.coef_
@@ -2275,7 +2228,6 @@ sklearn.utils.estimator_checks.check_estimators_pickle
22752228
sklearn.utils.estimator_checks.check_global_ouptut_transform_pandas
22762229
sklearn.utils.estimator_checks.check_parameters_default_constructible
22772230
sklearn.utils.estimator_checks.check_sample_weights_invariance
2278-
sklearn.utils.estimator_checks.config_context
22792231
sklearn.utils.estimator_checks.create_memmap_backed_data
22802232
sklearn.utils.estimator_checks.generate_invalid_param_val
22812233
sklearn.utils.estimator_checks.ignore_warnings
@@ -2312,7 +2264,6 @@ sklearn.utils.multiclass.dok_matrix
23122264
sklearn.utils.multiclass.get_namespace
23132265
sklearn.utils.multiclass.lil_matrix
23142266
sklearn.utils.multiclass.type_of_target
2315-
sklearn.utils.parallel.config_context
23162267
sklearn.utils.parallel_backend
23172268
sklearn.utils.random.sample_without_replacement
23182269
sklearn.utils.register_parallel_backend

stubs/sklearn/utils/_metadata_requests.pyi

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,8 @@ class RequestMethod:
7070
def __get__(self, instance, owner): ...
7171

7272
class _MetadataRequester:
73-
def __init_subclass__(cls, **kwargs): ...
74-
def get_metadata_routing(self): ...
73+
def __init_subclass__(cls, **kwargs) -> None: ...
74+
def get_metadata_routing(self) -> MetadataRequest: ...
7575
# This code is never run in runtime, but it's here for type checking.
7676
# Type checkers fail to understand that the `set_{method}_request`
7777
# methods are dynamically generated, and they complain that they are

0 commit comments

Comments
 (0)