15
15
MethodSigContext ,
16
16
Plugin ,
17
17
)
18
- from mypy .plugins import constants
18
+ from mypy .plugins .attrs import (
19
+ attr_class_maker_callback ,
20
+ attr_class_makers ,
21
+ attr_dataclass_makers ,
22
+ attr_define_makers ,
23
+ attr_frozen_makers ,
24
+ attr_tag_callback ,
25
+ evolve_function_sig_callback ,
26
+ fields_function_sig_callback ,
27
+ )
19
28
from mypy .plugins .common import try_getting_str_literals
29
+ from mypy .plugins .constants import (
30
+ ENUM_NAME_ACCESS ,
31
+ ENUM_VALUE_ACCESS ,
32
+ SINGLEDISPATCH_CALLABLE_CALL_METHOD ,
33
+ SINGLEDISPATCH_REGISTER_CALLABLE_CALL_METHOD ,
34
+ SINGLEDISPATCH_REGISTER_METHOD ,
35
+ )
36
+ from mypy .plugins .ctypes import (
37
+ array_constructor_callback ,
38
+ array_getitem_callback ,
39
+ array_iter_callback ,
40
+ array_raw_callback ,
41
+ array_setitem_callback ,
42
+ array_value_callback ,
43
+ )
44
+ from mypy .plugins .dataclasses import (
45
+ dataclass_class_maker_callback ,
46
+ dataclass_makers ,
47
+ dataclass_tag_callback ,
48
+ replace_function_sig_callback ,
49
+ )
50
+ from mypy .plugins .enums import enum_member_callback , enum_name_callback , enum_value_callback
51
+ from mypy .plugins .functools import (
52
+ functools_total_ordering_maker_callback ,
53
+ functools_total_ordering_makers ,
54
+ partial_call_callback ,
55
+ partial_new_callback ,
56
+ )
57
+ from mypy .plugins .singledispatch import (
58
+ call_singledispatch_function_after_register_argument ,
59
+ call_singledispatch_function_callback ,
60
+ create_singledispatch_function_callback ,
61
+ singledispatch_register_callback ,
62
+ )
20
63
from mypy .subtypes import is_subtype
21
64
from mypy .typeops import is_literal_type_like , make_simplified_union
22
65
from mypy .types import (
@@ -53,39 +96,24 @@ class DefaultPlugin(Plugin):
53
96
54
97
def get_function_hook (self , fullname : str ) -> Callable [[FunctionContext ], Type ] | None :
55
98
if fullname == "_ctypes.Array" :
56
- from mypy .plugins import ctypes
57
-
58
- return ctypes .array_constructor_callback
99
+ return array_constructor_callback
59
100
elif fullname == "functools.singledispatch" :
60
- from mypy .plugins import singledispatch
61
-
62
- return singledispatch .create_singledispatch_function_callback
101
+ return create_singledispatch_function_callback
63
102
elif fullname == "functools.partial" :
64
- import mypy .plugins .functools
65
-
66
- return mypy .plugins .functools .partial_new_callback
103
+ return partial_new_callback
67
104
elif fullname == "enum.member" :
68
- from mypy .plugins import enums
69
-
70
- return enums .enum_member_callback
71
-
105
+ return enum_member_callback
72
106
return None
73
107
74
108
def get_function_signature_hook (
75
109
self , fullname : str
76
110
) -> Callable [[FunctionSigContext ], FunctionLike ] | None :
77
111
if fullname in ("attr.evolve" , "attrs.evolve" , "attr.assoc" , "attrs.assoc" ):
78
- from mypy .plugins import attrs
79
-
80
- return attrs .evolve_function_sig_callback
112
+ return evolve_function_sig_callback
81
113
elif fullname in ("attr.fields" , "attrs.fields" ):
82
- from mypy .plugins import attrs
83
-
84
- return attrs .fields_function_sig_callback
114
+ return fields_function_sig_callback
85
115
elif fullname == "dataclasses.replace" :
86
- from mypy .plugins import dataclasses
87
-
88
- return dataclasses .replace_function_sig_callback
116
+ return replace_function_sig_callback
89
117
return None
90
118
91
119
def get_method_signature_hook (
@@ -98,13 +126,9 @@ def get_method_signature_hook(
98
126
elif fullname in TD_POP_NAMES :
99
127
return typed_dict_pop_signature_callback
100
128
elif fullname == "_ctypes.Array.__setitem__" :
101
- from mypy .plugins import ctypes
102
-
103
- return ctypes .array_setitem_callback
104
- elif fullname == constants .SINGLEDISPATCH_CALLABLE_CALL_METHOD :
105
- from mypy .plugins import singledispatch
106
-
107
- return singledispatch .call_singledispatch_function_callback
129
+ return array_setitem_callback
130
+ elif fullname == SINGLEDISPATCH_CALLABLE_CALL_METHOD :
131
+ return call_singledispatch_function_callback
108
132
elif fullname in TD_UPDATE_METHOD_NAMES :
109
133
return typed_dict_update_signature_callback
110
134
return None
@@ -127,88 +151,63 @@ def get_method_hook(self, fullname: str) -> Callable[[MethodContext], Type] | No
127
151
elif fullname in {n + ".__delitem__" for n in TPDICT_FB_NAMES }:
128
152
return typed_dict_delitem_callback
129
153
elif fullname == "_ctypes.Array.__getitem__" :
130
- from mypy .plugins import ctypes
131
-
132
- return ctypes .array_getitem_callback
154
+ return array_getitem_callback
133
155
elif fullname == "_ctypes.Array.__iter__" :
134
- from mypy .plugins import ctypes
135
-
136
- return ctypes .array_iter_callback
137
- elif fullname == constants .SINGLEDISPATCH_REGISTER_METHOD :
138
- from mypy .plugins import singledispatch
139
-
140
- return singledispatch .singledispatch_register_callback
141
- elif fullname == constants .SINGLEDISPATCH_REGISTER_CALLABLE_CALL_METHOD :
142
- from mypy .plugins import singledispatch
143
-
144
- return singledispatch .call_singledispatch_function_after_register_argument
156
+ return array_iter_callback
157
+ elif fullname == SINGLEDISPATCH_REGISTER_METHOD :
158
+ return singledispatch_register_callback
159
+ elif fullname == SINGLEDISPATCH_REGISTER_CALLABLE_CALL_METHOD :
160
+ return call_singledispatch_function_after_register_argument
145
161
elif fullname == "functools.partial.__call__" :
146
- import mypy .plugins .functools
147
-
148
- return mypy .plugins .functools .partial_call_callback
162
+ return partial_call_callback
149
163
return None
150
164
151
165
def get_attribute_hook (self , fullname : str ) -> Callable [[AttributeContext ], Type ] | None :
152
166
if fullname == "_ctypes.Array.value" :
153
- from mypy .plugins import ctypes
154
-
155
- return ctypes .array_value_callback
167
+ return array_value_callback
156
168
elif fullname == "_ctypes.Array.raw" :
157
- from mypy .plugins import ctypes
158
-
159
- return ctypes .array_raw_callback
160
- elif fullname in constants .ENUM_NAME_ACCESS :
161
- from mypy .plugins import enums
162
-
163
- return enums .enum_name_callback
164
- elif fullname in constants .ENUM_VALUE_ACCESS :
165
- from mypy .plugins import enums
166
-
167
- return enums .enum_value_callback
169
+ return array_raw_callback
170
+ elif fullname in ENUM_NAME_ACCESS :
171
+ return enum_name_callback
172
+ elif fullname in ENUM_VALUE_ACCESS :
173
+ return enum_value_callback
168
174
return None
169
175
170
176
def get_class_decorator_hook (self , fullname : str ) -> Callable [[ClassDefContext ], None ] | None :
171
- from mypy .plugins import attrs , dataclasses
172
-
173
177
# These dataclass and attrs hooks run in the main semantic analysis pass
174
178
# and only tag known dataclasses/attrs classes, so that the second
175
179
# hooks (in get_class_decorator_hook_2) can detect dataclasses/attrs classes
176
180
# in the MRO.
177
- if fullname in dataclasses . dataclass_makers :
178
- return dataclasses . dataclass_tag_callback
181
+ if fullname in dataclass_makers :
182
+ return dataclass_tag_callback
179
183
if (
180
- fullname in attrs . attr_class_makers
181
- or fullname in attrs . attr_dataclass_makers
182
- or fullname in attrs . attr_frozen_makers
183
- or fullname in attrs . attr_define_makers
184
+ fullname in attr_class_makers
185
+ or fullname in attr_dataclass_makers
186
+ or fullname in attr_frozen_makers
187
+ or fullname in attr_define_makers
184
188
):
185
- return attrs .attr_tag_callback
186
-
189
+ return attr_tag_callback
187
190
return None
188
191
189
192
def get_class_decorator_hook_2 (
190
193
self , fullname : str
191
194
) -> Callable [[ClassDefContext ], bool ] | None :
192
- import mypy .plugins .functools
193
- from mypy .plugins import attrs , dataclasses
194
-
195
- if fullname in dataclasses .dataclass_makers :
196
- return dataclasses .dataclass_class_maker_callback
197
- elif fullname in mypy .plugins .functools .functools_total_ordering_makers :
198
- return mypy .plugins .functools .functools_total_ordering_maker_callback
199
- elif fullname in attrs .attr_class_makers :
200
- return attrs .attr_class_maker_callback
201
- elif fullname in attrs .attr_dataclass_makers :
202
- return partial (attrs .attr_class_maker_callback , auto_attribs_default = True )
203
- elif fullname in attrs .attr_frozen_makers :
195
+ if fullname in dataclass_makers :
196
+ return dataclass_class_maker_callback
197
+ elif fullname in functools_total_ordering_makers :
198
+ return functools_total_ordering_maker_callback
199
+ elif fullname in attr_class_makers :
200
+ return attr_class_maker_callback
201
+ elif fullname in attr_dataclass_makers :
202
+ return partial (attr_class_maker_callback , auto_attribs_default = True )
203
+ elif fullname in attr_frozen_makers :
204
204
return partial (
205
- attrs . attr_class_maker_callback , auto_attribs_default = None , frozen_default = True
205
+ attr_class_maker_callback , auto_attribs_default = None , frozen_default = True
206
206
)
207
- elif fullname in attrs . attr_define_makers :
207
+ elif fullname in attr_define_makers :
208
208
return partial (
209
- attrs . attr_class_maker_callback , auto_attribs_default = None , slots_default = True
209
+ attr_class_maker_callback , auto_attribs_default = None , slots_default = True
210
210
)
211
-
212
211
return None
213
212
214
213
0 commit comments