mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Fix #8917: autodoc: Raises a warning if function has wrong __globals__ value
`sphinx.util.inspect:signature()` crashes with AttributeError when subject has wrong `__globals__` value. This ignores the error on building.
This commit is contained in:
parent
4392557943
commit
4f072ee5c2
1
CHANGES
1
CHANGES
@ -69,6 +69,7 @@ Features added
|
|||||||
Bugs fixed
|
Bugs fixed
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
* #8917: autodoc: Raises a warning if function has wrong __globals__ value
|
||||||
* #8380: html search: Paragraphs in search results are not identified as ``<p>``
|
* #8380: html search: Paragraphs in search results are not identified as ``<p>``
|
||||||
* #8915: html theme: The translation of sphinx_rtd_theme does not work
|
* #8915: html theme: The translation of sphinx_rtd_theme does not work
|
||||||
* #8342: Emit a warning if a unknown domain is given for directive or role (ex.
|
* #8342: Emit a warning if a unknown domain is given for directive or role (ex.
|
||||||
|
@ -166,6 +166,15 @@ def getannotations(obj: Any) -> Mapping[str, Any]:
|
|||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
|
||||||
|
def getglobals(obj: Any) -> Mapping[str, Any]:
|
||||||
|
"""Get __globals__ from given *obj* safely."""
|
||||||
|
__globals__ = safe_getattr(obj, '__globals__', None)
|
||||||
|
if isinstance(__globals__, Mapping):
|
||||||
|
return __globals__
|
||||||
|
else:
|
||||||
|
return {}
|
||||||
|
|
||||||
|
|
||||||
def getmro(obj: Any) -> Tuple["Type", ...]:
|
def getmro(obj: Any) -> Tuple["Type", ...]:
|
||||||
"""Get __mro__ from given *obj* safely."""
|
"""Get __mro__ from given *obj* safely."""
|
||||||
__mro__ = safe_getattr(obj, '__mro__', None)
|
__mro__ = safe_getattr(obj, '__mro__', None)
|
||||||
@ -484,9 +493,9 @@ class DefaultValue:
|
|||||||
|
|
||||||
def _should_unwrap(subject: Callable) -> bool:
|
def _should_unwrap(subject: Callable) -> bool:
|
||||||
"""Check the function should be unwrapped on getting signature."""
|
"""Check the function should be unwrapped on getting signature."""
|
||||||
if (safe_getattr(subject, '__globals__', None) and
|
__globals__ = getglobals(subject)
|
||||||
subject.__globals__.get('__name__') == 'contextlib' and # type: ignore
|
if (__globals__.get('__name__') == 'contextlib' and
|
||||||
subject.__globals__.get('__file__') == contextlib.__file__): # type: ignore
|
__globals__.get('__file__') == contextlib.__file__):
|
||||||
# contextmanger should be unwrapped
|
# contextmanger should be unwrapped
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user