fork download
  1. import sys
  2. import builtins
  3. from importlib.abc import Loader
  4. from importlib.util import spec_from_loader
  5.  
  6. class EmbeddedModule:
  7. def __init__(self, code):
  8. self.code = code
  9.  
  10. class EmbeddedModuleLoader(Loader):
  11. def __init__(self, code):
  12. self.code = code
  13.  
  14. def exec_module(self, module):
  15. exec(self.code, vars(module))
  16.  
  17. class EmbeddedModuleFinder:
  18. def find_spec(self, fullname, path=None, target=None):
  19. frame = sys._getframe(1)
  20. while frame.f_code.co_filename.startswith('<'):
  21. frame = frame.f_back
  22. if isinstance((obj := frame.f_globals.get(fullname)), EmbeddedModule):
  23. return spec_from_loader(fullname, EmbeddedModuleLoader(obj.code))
  24.  
  25. sys.meta_path.append(EmbeddedModuleFinder())
  26.  
  27. def build_class(func, name, *bases, metaclass=type, **kwargs):
  28. if EmbeddedModule in bases:
  29. return EmbeddedModule(func.__code__)
  30. return orig_build_class(func, name, *bases, metaclass=metaclass, **kwargs)
  31.  
  32. orig_build_class = builtins.__build_class__
  33. builtins.__build_class__ = build_class
  34.  
  35. class any_re(EmbeddedModule):
  36. try:
  37. import regex as re
  38. except ImportError:
  39. import re
  40.  
  41. from any_re import re
  42. print(re)
Success #stdin #stdout 0.37s 21228KB
stdin
Standard input is empty
stdout
<module 're' from '/usr/lib/python3.12/re/__init__.py'>