Передается ли флаг, когда iPython выполняет завершение кода? - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь реализовать оболочку для синглов / слотов для проекта, над которым я работаю. Все с оболочкой работает за исключением того, что когда iPython выполняет завершение кода, он запускает функции, хранящиеся в оболочке, которые должны запускаться до и после выполнения метода.

Это ожидается, поскольку, насколько я понимаю, iPython выполняет завершение кода, выполняя код. Мой вопрос, есть ли способ проверить, выполняется ли код пользователем или средством завершения кода iPython?

Я пытался изучить метод get_ipython и PyDevTerminalInteractiveShell. Кажется, должен быть способ собрать это воедино, но я просто не могу это понять.

def add_hooks(func):

    _pre = _Signal()
    _post = _Signal()

    @wraps(func)
    def wrapper(*args, **kwargs):
        _pre(*args, **kwargs)

        return_val = func(*args, **kwargs)

        _post(*args, **kwargs, func_return_val=return_val)

        return return_val

    wrapper.pre = _pre
    wrapper.post = _post

    return wrapper

Если есть способ сделать это, я мог бы просто добавить проверку времени выполнения в классе Signals.

...