diff --git a/astroid/raw_building.py b/astroid/raw_building.py index 156cbea1c1..764c790cb8 100644 --- a/astroid/raw_building.py +++ b/astroid/raw_building.py @@ -267,7 +267,9 @@ def object_build_class( ) -> nodes.ClassDef: """create astroid for a living class object""" basenames = [base.__name__ for base in member.__bases__] - return _base_class_object_build(node, member, basenames, localname=localname) + # N.B. ↓ why do we need to override the localname? + name = getattr(member, "__name__", localname) + return _base_class_object_build(node, member, basenames, name) def _get_args_info_from_callable( @@ -317,7 +319,7 @@ def object_build_function( ) = _get_args_info_from_callable(member) build_function( - getattr(member, "__name__", None) or localname, + localname, node, args, posonlyargs, @@ -342,9 +344,7 @@ def object_build_methoddescriptor( ) -> None: """create astroid for a living method descriptor object""" # FIXME get arguments ? - func = build_function( - getattr(member, "__name__", None) or localname, node, doc=member.__doc__ - ) + func = build_function(localname, node, doc=member.__doc__) _add_dunder_class(func, node, member) @@ -352,16 +352,13 @@ def _base_class_object_build( node: nodes.Module | nodes.ClassDef, member: type, basenames: list[str], - name: str | None = None, - localname: str | None = None, + name: str, ) -> nodes.ClassDef: """create astroid for a living class object, with a given set of base names (e.g. ancestors) """ - class_name = name or getattr(member, "__name__", None) or localname - assert isinstance(class_name, str) doc = member.__doc__ if isinstance(member.__doc__, str) else None - klass = build_class(class_name, node, basenames, doc) + klass = build_class(name, node, basenames, doc) klass._newstyle = isinstance(member, type) try: # limit the instantiation trick since it's too dangerous