@@ -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" ,
@@ -984,10 +964,6 @@ def open(self) -> None:
984
964
self ._py310_plus = py_version >= (3 , 10 )
985
965
self ._mixin_class_rgx = self .linter .config .mixin_class_rgx
986
966
987
- @cached_property
988
- def _suggestion_mode (self ) -> bool :
989
- return self .linter .config .suggestion_mode # type: ignore[no-any-return]
990
-
991
967
@cached_property
992
968
def _compiled_generated_members (self ) -> tuple [Pattern [str ], ...]:
993
969
# do this lazily since config not fully initialized in __init__
@@ -1198,24 +1174,24 @@ def _get_nomember_msgid_hint(
1198
1174
node : nodes .Attribute | nodes .AssignAttr | nodes .DelAttr ,
1199
1175
owner : SuccessfulInferenceResult ,
1200
1176
) -> tuple [Literal ["c-extension-no-member" , "no-member" ], str ]:
1201
- suggestions_are_possible = self ._suggestion_mode and isinstance (
1202
- owner , nodes .Module
1177
+ if isinstance (owner , nodes .Module ) and _is_c_extension (owner ):
1178
+ return "c-extension-no-member" , ""
1179
+ if not self .linter .config .missing_member_hint :
1180
+ return "no-member" , ""
1181
+ names = _similar_names (
1182
+ owner ,
1183
+ node .attrname ,
1184
+ self .linter .config .missing_member_hint_distance ,
1185
+ self .linter .config .missing_member_max_choices ,
1203
1186
)
1204
- if suggestions_are_possible and _is_c_extension (owner ):
1205
- msg = "c-extension-no-member"
1206
- hint = ""
1187
+ if not names :
1188
+ return "no-member" , ""
1189
+ names = [repr (name ) for name in names ]
1190
+ if len (names ) == 1 :
1191
+ names_hint = ", " .join (names )
1207
1192
else :
1208
- msg = "no-member"
1209
- if self .linter .config .missing_member_hint :
1210
- hint = _missing_member_hint (
1211
- owner ,
1212
- node .attrname ,
1213
- self .linter .config .missing_member_hint_distance ,
1214
- self .linter .config .missing_member_max_choices ,
1215
- )
1216
- else :
1217
- hint = ""
1218
- return msg , hint # type: ignore[return-value]
1193
+ names_hint = f"one of { ', ' .join (names [:- 1 ])} or { names [- 1 ]} "
1194
+ return "no-member" , f"; maybe { names_hint } ?"
1219
1195
1220
1196
@only_required_for_messages (
1221
1197
"assignment-from-no-return" ,
0 commit comments