@@ -201,26 +201,6 @@ def _similar_names(
201
201
return sorted (picked )
202
202
203
203
204
- def _missing_member_hint (
205
- owner : SuccessfulInferenceResult ,
206
- attrname : str | None ,
207
- distance_threshold : int ,
208
- max_choices : int ,
209
- ) -> str :
210
- names = _similar_names (owner , attrname , distance_threshold , max_choices )
211
- if not names :
212
- # No similar name.
213
- return ""
214
-
215
- names = [repr (name ) for name in names ]
216
- if len (names ) == 1 :
217
- names_hint = ", " .join (names )
218
- else :
219
- names_hint = f"one of { ', ' .join (names [:- 1 ])} or { names [- 1 ]} "
220
-
221
- return f"; maybe { names_hint } ?"
222
-
223
-
224
204
MSGS : dict [str , MessageDefinitionTuple ] = {
225
205
"E1101" : (
226
206
"%s %r has no %r member%s" ,
@@ -988,10 +968,6 @@ def open(self) -> None:
988
968
self ._py310_plus = py_version >= (3 , 10 )
989
969
self ._mixin_class_rgx = self .linter .config .mixin_class_rgx
990
970
991
- @cached_property
992
- def _suggestion_mode (self ) -> bool :
993
- return self .linter .config .suggestion_mode # type: ignore[no-any-return]
994
-
995
971
@cached_property
996
972
def _compiled_generated_members (self ) -> tuple [Pattern [str ], ...]:
997
973
# do this lazily since config not fully initialized in __init__
@@ -1202,24 +1178,24 @@ def _get_nomember_msgid_hint(
1202
1178
node : nodes .Attribute | nodes .AssignAttr | nodes .DelAttr ,
1203
1179
owner : SuccessfulInferenceResult ,
1204
1180
) -> tuple [Literal ["c-extension-no-member" , "no-member" ], str ]:
1205
- suggestions_are_possible = self ._suggestion_mode and isinstance (
1206
- owner , nodes .Module
1181
+ if isinstance (owner , nodes .Module ) and _is_c_extension (owner ):
1182
+ return "c-extension-no-member" , ""
1183
+ if not self .linter .config .missing_member_hint :
1184
+ return "no-member" , ""
1185
+ names = _similar_names (
1186
+ owner ,
1187
+ node .attrname ,
1188
+ self .linter .config .missing_member_hint_distance ,
1189
+ self .linter .config .missing_member_max_choices ,
1207
1190
)
1208
- if suggestions_are_possible and _is_c_extension (owner ):
1209
- msg = "c-extension-no-member"
1210
- hint = ""
1191
+ if not names :
1192
+ return "no-member" , ""
1193
+ names = [repr (name ) for name in names ]
1194
+ if len (names ) == 1 :
1195
+ names_hint = ", " .join (names )
1211
1196
else :
1212
- msg = "no-member"
1213
- if self .linter .config .missing_member_hint :
1214
- hint = _missing_member_hint (
1215
- owner ,
1216
- node .attrname ,
1217
- self .linter .config .missing_member_hint_distance ,
1218
- self .linter .config .missing_member_max_choices ,
1219
- )
1220
- else :
1221
- hint = ""
1222
- return msg , hint # type: ignore[return-value]
1197
+ names_hint = f"one of { ', ' .join (names [:- 1 ])} or { names [- 1 ]} "
1198
+ return "no-member" , f"; maybe { names_hint } ?"
1223
1199
1224
1200
@only_required_for_messages (
1225
1201
"assignment-from-no-return" ,
0 commit comments