aston
Joined 19 years ago
Karma
6,573
Submissions
1,725
Member since
Apr 2
Joined 19 years ago
def encapsulate(mod):
import types
out = types.SimpleNamespace()
def replace_global_scope(f):
# via https://stackoverflow.com/a/1144561, but tweaked for py3
return types.FunctionType(
f.__code__,
out.__dict__,
f.__name__,
f.__defaults__,
f.__closure__,
)
for name in dir(mod):
val = getattr(mod, name)
if callable(val):
val = replace_global_scope(val)
setattr(out, name, val)
return out
[ my public key: https://keybase.io/aston; my proof: https://keybase.io/aston/sigs/-Wfz_5UlE591PWUmtc4fNLY0OYxOW-QiyEvnOMRMstI ]