Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use autodoc-process-bases to substitute TypeVars for their bounds in base classes in docs #734

Open
tp832944 opened this issue Aug 14, 2024 · 0 comments · May be fixed by #1012
Open

Use autodoc-process-bases to substitute TypeVars for their bounds in base classes in docs #734

tp832944 opened this issue Aug 14, 2024 · 0 comments · May be fixed by #1012
Labels
wontfix This will not be worked on

Comments

@tp832944
Copy link
Contributor

What's the new feature?

Use autodoc-process-bases to substitute TypeVars for their bounds in base classes in docs. This is similar to the existing function to do it in function annotations.

See documentation/source/conf.py and https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#event-autodoc-process-bases.

What value does this add?

Show inheritance with Intersphinx links without needing to include TypeVars in the compiled documentation. Currently these links are broken.

Is there an alternative you've considered?

No response

Additional context

No response

@tp832944 tp832944 added enhancement New feature or request new Something yet to be discussed by development team and removed new Something yet to be discussed by development team labels Aug 14, 2024
tm91236 added a commit that referenced this issue Mar 31, 2025
By removing the `typehints_formatter` we are able to resolve
issues #570 and #734. The former issue is resolved by removing
the non-picklable function, which enables build caching, and the
second is solved by removing the `TypeVar` bound replacement.

While the `TypeVar` replacement does provide more concise
documentation, it removes a key piece of information, which the
reader must be aware of. For example, in:
```python
T = TypeVar("T", bound=Data)

def typevar(a: T, b: T) -> None: ...
def bound(a: Data, b: Data): ...

def valid(a: SupervisedData, b: SupervisedData): ...
def invalid(a: Data, b: SupervisedData): ...
```
the `typevar` function is the actual specification, `bound` is the
documented specification, `valid` is a valid specification, and
`invalid` is an invalid specification which is presented as valid
in the documentation (if we replace the `TypeVar` with the bound).

As an additional comment, we do now lose the functionality of the
`autodoc_custom_types` -- it should be noted that the `ArrayLike`
custom type (the only listed custom type) doesn't appear to be
used anywhere in the codebase.
tm91236 added a commit that referenced this issue Mar 31, 2025
By removing the `typehints_formatter` we are able to resolve
issues #570 and #734. The former issue is resolved by removing
the non-picklable function, which enables build caching, and the
second is solved by removing the `TypeVar` bound replacement.

While the `TypeVar` replacement does provide more concise
documentation, it removes a key piece of information, which the
reader must be aware of. For example, in:
```python
T = TypeVar("T", bound=Data)

def typevar(a: T, b: T) -> None: ...
def bound(a: Data, b: Data): ...

def valid(a: SupervisedData, b: SupervisedData): ...
def invalid(a: Data, b: SupervisedData): ...
```
the `typevar` function is the actual specification, `bound` is the
documented specification, `valid` is a valid specification, and
`invalid` is an invalid specification which is presented as valid
in the documentation (if we replace the `TypeVar` with the bound).

As an additional comment, we do now lose the functionality of the
`autodoc_custom_types` -- it should be noted that the `ArrayLike`
custom type (the only listed custom type) doesn't appear to be
used anywhere in the codebase.

Refs: #570, #734
@tm91236 tm91236 linked a pull request Mar 31, 2025 that will close this issue
9 tasks
tm91236 added a commit that referenced this issue Mar 31, 2025
By removing the `typehints_formatter` we are able to resolve
issues #570 and #734. The former issue is resolved by removing
the non-picklable function, which enables build caching, and the
second is solved by removing the `TypeVar` bound replacement.

While the `TypeVar` replacement does provide more concise
documentation, it removes a key piece of information, which the
reader must be aware of. For example, in:
```python
T = TypeVar("T", bound=Data)

def typevar(a: T, b: T) -> None: ...
def bound(a: Data, b: Data): ...

def valid(a: SupervisedData, b: SupervisedData): ...
def invalid(a: Data, b: SupervisedData): ...
```
the `typevar` function is the actual specification, `bound` is the
documented specification, `valid` is a valid specification, and
`invalid` is an invalid specification which is presented as valid
in the documentation (if we replace the `TypeVar` with the bound).

As an additional comment, we do now lose the functionality of the
`autodoc_custom_types` -- it should be noted that the `ArrayLike`
custom type (the only listed custom type) doesn't appear to be
used anywhere in the codebase.

Refs: #570, #734
@tm91236 tm91236 linked a pull request Mar 31, 2025 that will close this issue
9 tasks
@tm91236 tm91236 added wontfix This will not be worked on and removed enhancement New feature or request labels Apr 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
wontfix This will not be worked on
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants