У меня есть модуль, который украшает некоторые ключевые функции с помощью специальных декораторов.Есть ли способ войти в декорированные функции, пропуская код декоратора
Отладка этих функций с помощью pdb часто является немного болью, потому что каждый раз, когда я вхожу в оформленную функцию, мне сначала нужно пройти через код декоратора.
Я мог бы, конечно, просто отлаживать отладчик в рамках функции, которая мне интересна, но в качестве ключевых функций они вызываются много раз из многих мест, поэтому я обычно предпочитаю начинать отладку вне функции.
Я попытался проиллюстрировать его с кодом, но я не знаю, если это помогает:
def i_dont_care_about_this(fn):
@functiontools.wraps(fn)
def wrapper(*args, **kwargs):
return fn(*args, **kwargs)
return wrapper
@i_dont_care_about_this
def i_only_care_about_this():
# no use to set pdb here
def i_am_here():
import pdb; pdb.set_trace()
i_only_care_about_this()
Итак, есть ли способ для меня, чтобы войти в i_only_care_about_this
из i_am_here
, не проходя через i_dont_care_about_this
?
По сути, я хочу, чтобы пропустить весь код декоратора при использовании s к (сек) теп в данной украшенной функции.
Как PDB должен знать, что функция оформлена и в что указывает на то, что исходная функция д? Вам нужно будет адаптировать как ваши декораторы, так и PDB, чтобы сделать что-то подобное. –
Я думал, что может быть так, как мои знания о том, как Python обрабатывает декораторов внутри, несколько ограничены. –