Почему бы просто не добавить исходную функцию в качестве атрибута упакованной функции?Фактически это именно то, что functools.wraps
делает в Python 3.2, он сохраняет исходную функцию в атрибуте __wrapped__
.
Что касается вашего вопроса, я думаю, что ваша проблема в том, что вы добавляете функцию вглобальное пространство имен модуля, содержащего декоратор, а не пространство декорированной функции.Вы можете использовать f.__globals__
, чтобы получить правильное глобальное пространство имен.