It seems that the issue was not importing directly the function, but rather importing the module.
What Iβm currently doing is the following:
import inspect
import os
import streamlit as st
from streamlit import session_state as st_session
from mypackage.module import foo, bar
def monitor_func(*args):
if 'monitor' not in st_session:
st_session['monitor'] = set()
for func in args:
path = inspect.getsourcefile(func)
st_session['monitor'].add(os.path.dirname(path))
os.environ['PYTHONPATH'] = ':'.join(list(st_session['monitor']))
monitor_func(foo, bar)
foo()
bar()
Then changes in foo and bar are detected in the main app.
But if I do:
import inspect
import os
import streamlit as st
from streamlit import session_state as st_session
from mypackage import module
def monitor_func(*args):
if 'monitor' not in st_session:
st_session['monitor'] = set()
for func in args:
path = inspect.getsourcefile(func)
st_session['monitor'].add(os.path.dirname(path))
os.environ['PYTHONPATH'] = ':'.join(list(st_session['monitor']))
monitor_func(module.foo, module.bar)
module.foo()
module.bar()
Then changes are not detected