Если я правильно понял вопрос, вам необходимо добавить некое глобальное хранилище, где вы сможете сохранять результаты выполнения декоратора
register. В простом случае выглядеть это может так:
создаете рядом с main.py новый файл, допустим
api_routing.py со следующим содержимым:
# здесь может быть структура и посложнее, все зависит от потребностей
# если планируется использование тредов, то возможно лучшим вариантом будет threading.local
# или это может быть объект с методом add например
API_ROUTING_TABLE = {}
Далее в файле
\api\module1\function1.py:
# в PYTHONPATH должна быть добавлена директория где лежит api_routing.py
# это можно сделать разными способами,
# подробнее здесь https://docs.python.org/2/tutorial/modules.html#the-module-search-path
from api_routing import API_ROUTING_TABLE
# использовать изменяемые структуры данных в параметрах по умолчанию - плохой тон и поле для ошибок
def register(path,
method="GET",
content_type="application/json",
parameters=(),
responseMessages=(),
nickname=None,
notes=None,
bp=None):
def inner_func(f):
# сохраняем информацию об API-вызове в глобальную переменную
API_ROUTING_TABLE[path] = {'method': method, 'content_type': content_type, ...}
print (path, f, method, content_type, parameters,
responseMessages, nickname, notes, bp)
return inner_func
теперь в main.py вы можете написать:
# эти импорты обязательны в начале, если их не будет то API_ROUTING_TABLE не заполнится
from api.module.function1 import Class1
from api_routing import API_ROUTING_TABLE
print API_ROUTING_TABLE
Таким образом переменную API_ROUTING_TABLE можно импортировать в любом месте вашего кода, главное чтобы до этого импорта где-нибудь раньше обязательно были заимпорчены модули, в которых применяется декоратор register.