Skip to content

Commit b4d52e1

Browse files
authored
Remove all nested imports from default plugin (#19388)
It looks like these nested imports are not needed anymore.
1 parent 1fde143 commit b4d52e1

File tree

1 file changed

+86
-87
lines changed

1 file changed

+86
-87
lines changed

mypy/plugins/default.py

Lines changed: 86 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,51 @@
1515
MethodSigContext,
1616
Plugin,
1717
)
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+
)
1928
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+
)
2063
from mypy.subtypes import is_subtype
2164
from mypy.typeops import is_literal_type_like, make_simplified_union
2265
from mypy.types import (
@@ -53,39 +96,24 @@ class DefaultPlugin(Plugin):
5396

5497
def get_function_hook(self, fullname: str) -> Callable[[FunctionContext], Type] | None:
5598
if fullname == "_ctypes.Array":
56-
from mypy.plugins import ctypes
57-
58-
return ctypes.array_constructor_callback
99+
return array_constructor_callback
59100
elif fullname == "functools.singledispatch":
60-
from mypy.plugins import singledispatch
61-
62-
return singledispatch.create_singledispatch_function_callback
101+
return create_singledispatch_function_callback
63102
elif fullname == "functools.partial":
64-
import mypy.plugins.functools
65-
66-
return mypy.plugins.functools.partial_new_callback
103+
return partial_new_callback
67104
elif fullname == "enum.member":
68-
from mypy.plugins import enums
69-
70-
return enums.enum_member_callback
71-
105+
return enum_member_callback
72106
return None
73107

74108
def get_function_signature_hook(
75109
self, fullname: str
76110
) -> Callable[[FunctionSigContext], FunctionLike] | None:
77111
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
81113
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
85115
elif fullname == "dataclasses.replace":
86-
from mypy.plugins import dataclasses
87-
88-
return dataclasses.replace_function_sig_callback
116+
return replace_function_sig_callback
89117
return None
90118

91119
def get_method_signature_hook(
@@ -98,13 +126,9 @@ def get_method_signature_hook(
98126
elif fullname in TD_POP_NAMES:
99127
return typed_dict_pop_signature_callback
100128
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
108132
elif fullname in TD_UPDATE_METHOD_NAMES:
109133
return typed_dict_update_signature_callback
110134
return None
@@ -127,88 +151,63 @@ def get_method_hook(self, fullname: str) -> Callable[[MethodContext], Type] | No
127151
elif fullname in {n + ".__delitem__" for n in TPDICT_FB_NAMES}:
128152
return typed_dict_delitem_callback
129153
elif fullname == "_ctypes.Array.__getitem__":
130-
from mypy.plugins import ctypes
131-
132-
return ctypes.array_getitem_callback
154+
return array_getitem_callback
133155
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
145161
elif fullname == "functools.partial.__call__":
146-
import mypy.plugins.functools
147-
148-
return mypy.plugins.functools.partial_call_callback
162+
return partial_call_callback
149163
return None
150164

151165
def get_attribute_hook(self, fullname: str) -> Callable[[AttributeContext], Type] | None:
152166
if fullname == "_ctypes.Array.value":
153-
from mypy.plugins import ctypes
154-
155-
return ctypes.array_value_callback
167+
return array_value_callback
156168
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
168174
return None
169175

170176
def get_class_decorator_hook(self, fullname: str) -> Callable[[ClassDefContext], None] | None:
171-
from mypy.plugins import attrs, dataclasses
172-
173177
# These dataclass and attrs hooks run in the main semantic analysis pass
174178
# and only tag known dataclasses/attrs classes, so that the second
175179
# hooks (in get_class_decorator_hook_2) can detect dataclasses/attrs classes
176180
# 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
179183
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
184188
):
185-
return attrs.attr_tag_callback
186-
189+
return attr_tag_callback
187190
return None
188191

189192
def get_class_decorator_hook_2(
190193
self, fullname: str
191194
) -> 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:
204204
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
206206
)
207-
elif fullname in attrs.attr_define_makers:
207+
elif fullname in attr_define_makers:
208208
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
210210
)
211-
212211
return None
213212

214213

0 commit comments

Comments
 (0)