[autodoc] Fix subclassing a MockObject together with typing.Generic
#13862
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
When subclassing a MockObject and typing.Generic the mock object will be detected as a
TypeVar
bytyping
https://github.com/python/cpython/blob/31d3836f26096f9503ca68f4e89d927bc1e060cd/Lib/typing.py#L1175
Especially this line should not be True:
elif hasattr(t, '__typing_subst__'):
, but as it is a mock object it currently is True which will raise an error on Python 3.11/12. (3.10 is fine). I did not test 3.13 or 3.14.https://github.com/python/cpython/blob/31d3836f26096f9503ca68f4e89d927bc1e060cd/Lib/typing.py#L297C1-L297C45
References
Fixes #12797
Continues PR #12850 by @IkorJefocur with a slight reinterpretation and added tests.