Skip to content

Incorrect documentation when a method and its return type share the same name #809

@maozguttman

Description

@maozguttman

Problem Description

Encountering incorrect documentation when a method and its return type share the same name. For example, consider the following code:

def Dog(self) -> Dog:

The generated documentation displays:
Dog: <property object at 0x7ffff63607c0>

Steps to reproduce the behavior:

  1. Python code in dog.py to be used with pdoc
from __future__ import annotations

class Factory:
    def __init__(self) -> None:
        self._dog: Dog = Dog("my_dog")

    @property
    def Dog(self) -> Dog:
        return self._dog

class Dog:
    def __init__(self, name: str) -> None:
        self._name: str = name

    @property
    def Name(self) -> str:
        return self._name


def main() -> None:
    factory: Factory = Factory()
    dog: Dog = factory.Dog
    print(dog.Name)
    
main()
  1. Run: pdoc ./dog.py -o doc
  2. Examine the issue in the pdoc output
dog

class Factory:
    Dog: <property object at 0x7ffff6367d10>

class Dog:
    Dog(name: str)
    Name: str

def main() -> None:

System Information

% pdoc --version

pdoc: 15.0.3
Python: 3.9.6
Platform: Linux-4.12.14-122.201-default-x86_64-with-glibc2.22

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions