@@ -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" ,
@@ -984,10 +964,6 @@ def open(self) -> None:
984964 self ._py310_plus = py_version >= (3 , 10 )
985965 self ._mixin_class_rgx = self .linter .config .mixin_class_rgx
986966
987- @cached_property
988- def _suggestion_mode (self ) -> bool :
989- return self .linter .config .suggestion_mode # type: ignore[no-any-return]
990-
991967 @cached_property
992968 def _compiled_generated_members (self ) -> tuple [Pattern [str ], ...]:
993969 # do this lazily since config not fully initialized in __init__
@@ -1198,24 +1174,24 @@ def _get_nomember_msgid_hint(
11981174 node : nodes .Attribute | nodes .AssignAttr | nodes .DelAttr ,
11991175 owner : SuccessfulInferenceResult ,
12001176 ) -> 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 ,
12031186 )
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 )
12071192 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 } ?"
12191195
12201196 @only_required_for_messages (
12211197 "assignment-from-no-return" ,
0 commit comments