mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #7886: autodoc: TypeError is raised on mocking generic-typed classes
This commit is contained in:
parent
ec9af606c6
commit
d6ca2f97be
1
CHANGES
1
CHANGES
@ -19,6 +19,7 @@ Features added
|
||||
Bugs fixed
|
||||
----------
|
||||
|
||||
* #7886: autodoc: TypeError is raised on mocking generic-typed classes
|
||||
* #7839: autosummary: cannot handle umlauts in function names
|
||||
* #7865: autosummary: Failed to extract summary line when abbreviations found
|
||||
* #7866: autosummary: Failed to extract correct summary line when docstring
|
||||
|
@ -52,8 +52,8 @@ class _MockObject:
|
||||
def __mro_entries__(self, bases: Tuple) -> Tuple:
|
||||
return (self.__class__,)
|
||||
|
||||
def __getitem__(self, key: str) -> "_MockObject":
|
||||
return _make_subclass(key, self.__display_name__, self.__class__)()
|
||||
def __getitem__(self, key: Any) -> "_MockObject":
|
||||
return _make_subclass(str(key), self.__display_name__, self.__class__)()
|
||||
|
||||
def __getattr__(self, key: str) -> "_MockObject":
|
||||
return _make_subclass(key, self.__display_name__, self.__class__)()
|
||||
|
@ -11,6 +11,7 @@
|
||||
import abc
|
||||
import sys
|
||||
from importlib import import_module
|
||||
from typing import TypeVar
|
||||
|
||||
import pytest
|
||||
|
||||
@ -39,6 +40,7 @@ def test_MockObject():
|
||||
assert isinstance(mock.attr1.attr2, _MockObject)
|
||||
assert isinstance(mock.attr1.attr2.meth(), _MockObject)
|
||||
|
||||
# subclassing
|
||||
class SubClass(mock.SomeClass):
|
||||
"""docstring of SubClass"""
|
||||
|
||||
@ -51,6 +53,16 @@ def test_MockObject():
|
||||
assert obj.method() == "string"
|
||||
assert isinstance(obj.other_method(), SubClass)
|
||||
|
||||
# parametrized type
|
||||
T = TypeVar('T')
|
||||
|
||||
class SubClass2(mock.SomeClass[T]):
|
||||
"""docstring of SubClass"""
|
||||
|
||||
obj2 = SubClass2()
|
||||
assert SubClass2.__doc__ == "docstring of SubClass"
|
||||
assert isinstance(obj2, SubClass2)
|
||||
|
||||
|
||||
def test_mock():
|
||||
modname = 'sphinx.unknown'
|
||||
|
Loading…
Reference in New Issue
Block a user