LINUX.ORG.RU

История изменений

Исправление 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 или что-то иное)