| |
| """Decorators that don't go anywhere else. |
| |
| This module contains misc. decorators that don't really go with another module |
| in :mod:`IPython.utils`. Before putting something here please see if it should |
| go into another topical module in :mod:`IPython.utils`. |
| """ |
|
|
| |
| |
| |
| |
| |
| |
|
|
| |
| |
| |
| from collections.abc import Sequence |
|
|
| from IPython.utils.docs import GENERATING_DOCUMENTATION |
|
|
|
|
| |
| |
| |
|
|
| def flag_calls(func): |
| """Wrap a function to detect and flag when it gets called. |
| |
| This is a decorator which takes a function and wraps it in a function with |
| a 'called' attribute. wrapper.called is initialized to False. |
| |
| The wrapper.called attribute is set to False right before each call to the |
| wrapped function, so if the call fails it remains False. After the call |
| completes, wrapper.called is set to True and the output is returned. |
| |
| Testing for truth in wrapper.called allows you to determine if a call to |
| func() was attempted and succeeded.""" |
| |
| |
| if hasattr(func, 'called'): |
| return func |
|
|
| def wrapper(*args,**kw): |
| wrapper.called = False |
| out = func(*args,**kw) |
| wrapper.called = True |
| return out |
|
|
| wrapper.called = False |
| wrapper.__doc__ = func.__doc__ |
| return wrapper |
|
|
|
|
| def undoc(func): |
| """Mark a function or class as undocumented. |
| |
| This is found by inspecting the AST, so for now it must be used directly |
| as @undoc, not as e.g. @decorators.undoc |
| """ |
| return func |
|
|
|
|
| def sphinx_options( |
| show_inheritance: bool = True, |
| show_inherited_members: bool = False, |
| exclude_inherited_from: Sequence[str] = tuple(), |
| ): |
| """Set sphinx options""" |
|
|
| def wrapper(func): |
| if not GENERATING_DOCUMENTATION: |
| return func |
|
|
| func._sphinx_options = dict( |
| show_inheritance=show_inheritance, |
| show_inherited_members=show_inherited_members, |
| exclude_inherited_from=exclude_inherited_from, |
| ) |
| return func |
|
|
| return wrapper |
|
|