with self.subTest(block=block):
self.expect_failure(block, err)
+ def test_fulldisplayname_class(self):
+ dataset = (
+ ("T", """
+ class T "void *" ""
+ T.__init__
+ """),
+ ("m.T", """
+ module m
+ class m.T "void *" ""
+ @classmethod
+ m.T.__new__
+ """),
+ ("m.T.C", """
+ module m
+ class m.T "void *" ""
+ class m.T.C "void *" ""
+ m.T.C.__init__
+ """),
+ )
+ for name, code in dataset:
+ with self.subTest(name=name, code=code):
+ block = self.parse(code)
+ func = block.signatures[-1]
+ self.assertEqual(func.fulldisplayname, name)
+
+ def test_fulldisplayname_meth(self):
+ dataset = (
+ ("func", "func"),
+ ("m.func", """
+ module m
+ m.func
+ """),
+ ("T.meth", """
+ class T "void *" ""
+ T.meth
+ """),
+ ("m.T.meth", """
+ module m
+ class m.T "void *" ""
+ m.T.meth
+ """),
+ ("m.T.C.meth", """
+ module m
+ class m.T "void *" ""
+ class m.T.C "void *" ""
+ m.T.C.meth
+ """),
+ )
+ for name, code in dataset:
+ with self.subTest(name=name, code=code):
+ block = self.parse(code)
+ func = block.signatures[-1]
+ self.assertEqual(func.fulldisplayname, name)
+
def test_depr_star_invalid_format_1(self):
block = """
module foo
@functools.cached_property
def fulldisplayname(self) -> str:
- if isinstance(self.module, Module):
- return f"{self.module.name}.{self.displayname}"
- return self.displayname
+ parent: Class | Module | Clinic | None
+ if self.kind.new_or_init:
+ parent = getattr(self.cls, "parent", None)
+ else:
+ parent = self.parent
+ name = self.displayname
+ while isinstance(parent, (Module, Class)):
+ name = f"{parent.name}.{name}"
+ parent = parent.parent
+ return name
@property
def render_parameters(self) -> list[Parameter]: