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
|
Bugs fixed
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
* #7886: autodoc: TypeError is raised on mocking generic-typed classes
|
||||||
* #7839: autosummary: cannot handle umlauts in function names
|
* #7839: autosummary: cannot handle umlauts in function names
|
||||||
* #7865: autosummary: Failed to extract summary line when abbreviations found
|
* #7865: autosummary: Failed to extract summary line when abbreviations found
|
||||||
* #7866: autosummary: Failed to extract correct summary line when docstring
|
* #7866: autosummary: Failed to extract correct summary line when docstring
|
||||||
|
@ -52,8 +52,8 @@ class _MockObject:
|
|||||||
def __mro_entries__(self, bases: Tuple) -> Tuple:
|
def __mro_entries__(self, bases: Tuple) -> Tuple:
|
||||||
return (self.__class__,)
|
return (self.__class__,)
|
||||||
|
|
||||||
def __getitem__(self, key: str) -> "_MockObject":
|
def __getitem__(self, key: Any) -> "_MockObject":
|
||||||
return _make_subclass(key, self.__display_name__, self.__class__)()
|
return _make_subclass(str(key), self.__display_name__, self.__class__)()
|
||||||
|
|
||||||
def __getattr__(self, key: str) -> "_MockObject":
|
def __getattr__(self, key: str) -> "_MockObject":
|
||||||
return _make_subclass(key, self.__display_name__, self.__class__)()
|
return _make_subclass(key, self.__display_name__, self.__class__)()
|
||||||
|
@ -11,6 +11,7 @@
|
|||||||
import abc
|
import abc
|
||||||
import sys
|
import sys
|
||||||
from importlib import import_module
|
from importlib import import_module
|
||||||
|
from typing import TypeVar
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ def test_MockObject():
|
|||||||
assert isinstance(mock.attr1.attr2, _MockObject)
|
assert isinstance(mock.attr1.attr2, _MockObject)
|
||||||
assert isinstance(mock.attr1.attr2.meth(), _MockObject)
|
assert isinstance(mock.attr1.attr2.meth(), _MockObject)
|
||||||
|
|
||||||
|
# subclassing
|
||||||
class SubClass(mock.SomeClass):
|
class SubClass(mock.SomeClass):
|
||||||
"""docstring of SubClass"""
|
"""docstring of SubClass"""
|
||||||
|
|
||||||
@ -51,6 +53,16 @@ def test_MockObject():
|
|||||||
assert obj.method() == "string"
|
assert obj.method() == "string"
|
||||||
assert isinstance(obj.other_method(), SubClass)
|
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():
|
def test_mock():
|
||||||
modname = 'sphinx.unknown'
|
modname = 'sphinx.unknown'
|
||||||
|
Loading…
Reference in New Issue
Block a user