@@ -201,26 +201,6 @@ def _similar_names(
201201 return sorted (picked )
202202
203203
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-
224204MSGS : dict [str , MessageDefinitionTuple ] = {
225205 "E1101" : (
226206 "%s %r has no %r member%s" ,
@@ -988,10 +968,6 @@ def open(self) -> None:
988968 self ._py310_plus = py_version >= (3 , 10 )
989969 self ._mixin_class_rgx = self .linter .config .mixin_class_rgx
990970
991- @cached_property
992- def _suggestion_mode (self ) -> bool :
993- return self .linter .config .suggestion_mode # type: ignore[no-any-return]
994-
995971 @cached_property
996972 def _compiled_generated_members (self ) -> tuple [Pattern [str ], ...]:
997973 # do this lazily since config not fully initialized in __init__
@@ -1202,24 +1178,24 @@ def _get_nomember_msgid_hint(
12021178 node : nodes .Attribute | nodes .AssignAttr | nodes .DelAttr ,
12031179 owner : SuccessfulInferenceResult ,
12041180 ) -> 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 ,
12071190 )
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 )
12111196 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 } ?"
12231199
12241200 @only_required_for_messages (
12251201 "assignment-from-no-return" ,
0 commit comments