История изменений
Исправление omegatype, (текущая версия) :
Строчку «from foo import bar» явно использовать второй раз нельзя. Есть информация о том, что поменялся foo, но нет явной информации о том, что было из него импортировано (если такая информация нужна, то она должна получаться как-то программно).
Задачу можно переформулировать так:
import foo
from foo import bar
bar() # выполняется функция версии 1
# вносим изменения в foo.py
reload_module_and_all_related_imports('foo')
bar() # тут теперь должна выполнятся версия 2
при этом:
def reload_module_and_all_related_imports(module_name):
# внутри этой функции есть информация только об имени модуля,
# в который были внесены изменения, но нет информации о том,
# что из него было импортировано (bar или что-то иное)
Фактический аналог: autoreload из jupyter https://ipython.org/ipython-doc/3/config/extensions/autoreload.html
Оттуда:
Functions and classes imported via ‘from xxx import foo’ are upgraded to new versions when ‘xxx’ is reloaded
Исходная версия omegatype, :
Строчку «from foo import bar» явно использовать второй раз нельзя. Есть информация о том, что поменялся foo, но нет явной информации о том, что было из него импортировано (если такая информация нужна, то она должна получаться как-то программно).
Задачу можно переформулировать так:
import foo
from foo import bar
bar() # выполняется функция версии 1
# вносим изменения в foo.py
reload_module_and_all_related_imports('foo')
bar() # тут теперь должна выполнятся версия 2
при этом:
def reload_module_and_all_related_imports(module_name):
# внутри этой функции есть информация только об имени модуля,
# в который были внесены изменения, но нет информации о том,
# что из него было импортировано (bar или что-то иное)