MogensR commited on
Commit
b39df64
·
1 Parent(s): fdc7135

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -24
app.py CHANGED
@@ -57,33 +57,35 @@ def _patch_relative_imports(project_root: str):
57
  # --- END ABSOLUTE-IMPORT & ENV HOTFIX ---
58
 
59
 
60
- # --- BEGIN runtime compatibility: ensure "utilities" maps to "utils" ----------
61
- # Some modules still do `import utilities`. If the utilities package/file
62
- # wasn't created or found, map the runtime name "utilities" to the real
63
- # top-level utils module so legacy imports succeed.
64
  import importlib
65
- import types
66
 
67
  if "utilities" not in sys.modules:
68
- try:
69
- _utils_mod = importlib.import_module("utils")
70
- sys.modules["utilities"] = _utils_mod
71
- # optional log: print("Mapped 'utilities' ->", getattr(_utils_mod, "__name__", "<utils?>"))
72
- except Exception:
73
- # fallback lazy proxy: import utils on first attribute access
74
- class _LazyUtilities(types.ModuleType):
75
- def __getattr__(self, name):
76
- mod = importlib.import_module("utils")
77
- sys.modules["utilities"] = mod
78
- return getattr(mod, name)
79
- def __dir__(self):
80
- try:
81
- mod = importlib.import_module("utils")
82
- return dir(mod)
83
- except Exception:
84
- return list(super().__dir__())
85
-
86
- sys.modules["utilities"] = _LazyUtilities("utilities")
 
 
87
  # --- END runtime compatibility ---------------------------------------------
88
 
89
 
 
57
  # --- END ABSOLUTE-IMPORT & ENV HOTFIX ---
58
 
59
 
60
+ # --- BEGIN runtime compatibility: lazy proxy for "utilities" -> "utils" -------
61
+ # Some modules still do `import utilities`. Create a lazy proxy that will import
62
+ # the real `utils` only when attributes are accessed, avoiding recursive
63
+ # import-time interactions with any lazy `utils` implementation.
64
  import importlib
65
+ from types import ModuleType
66
 
67
  if "utilities" not in sys.modules:
68
+ class _LazyUtilities(ModuleType):
69
+ def __getattr__(self, name):
70
+ # Import the real utils once on first attribute access and replace
71
+ # the 'utilities' entry in sys.modules with it so subsequent
72
+ # imports refer to the real module.
73
+ real = importlib.import_module("utils")
74
+ sys.modules["utilities"] = real
75
+ # Alias already-imported utils submodules as utilities.<submodule>
76
+ for modname, module in list(sys.modules.items()):
77
+ if modname.startswith("utils.") and isinstance(module, ModuleType):
78
+ suffix = modname.partition(".")[2]
79
+ sys.modules[f"utilities.{suffix}"] = module
80
+ return getattr(real, name)
81
+ def __dir__(self):
82
+ try:
83
+ real = importlib.import_module("utils")
84
+ return dir(real)
85
+ except Exception:
86
+ return list(super().__dir__())
87
+
88
+ sys.modules["utilities"] = _LazyUtilities("utilities")
89
  # --- END runtime compatibility ---------------------------------------------
90
 
91