Spaces:
Sleeping
Sleeping
File size: 5,847 Bytes
05892df 2cb3489 05892df 68861e8 05892df 21b1198 05892df 68861e8 55fa0a8 05892df 2cb3489 e9b8ae5 8e8ad2d 21b1198 2cb3489 21b1198 e9b8ae5 2cb3489 e9b8ae5 2cb3489 e9b8ae5 2cb3489 8e8ad2d 2cb3489 8e8ad2d 2cb3489 8e8ad2d 2cb3489 b22bb2a 2cb3489 21b1198 b22bb2a 55fa0a8 b22bb2a e9b8ae5 55fa0a8 b22bb2a 55fa0a8 2cb3489 21b1198 e9b8ae5 21b1198 8e8ad2d e9b8ae5 21b1198 55fa0a8 8e8ad2d 55fa0a8 68861e8 21b1198 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
#!/usr/bin/env python3
"""Hugging Face Spaces - intelligent module loading"""
import os
import sys
import importlib.util
from pathlib import Path
from types import ModuleType
app_dir = Path("/app")
sys.path.insert(0, str(app_dir))
print("Loading application...\n")
# Create src package
src_package = ModuleType("src")
src_package.__path__ = [str(app_dir / "src")]
sys.modules["src"] = src_package
# Read all src files and fix their imports
src_files_content = {}
print("Reading src files:")
for item in sorted(app_dir.iterdir()):
name = item.name
if name.startswith("src\\") and name.endswith(".py") and name != "src\\__init__.py":
module_name = name.split("\\")[-1].replace(".py", "")
try:
with open(str(item), 'r', encoding='utf-8', errors='ignore') as f:
content = f.read()
# Fix imports: convert backslash paths to forward slash
content = content.replace("from src\\", "from src.")
content = content.replace("import src\\", "import src.")
# Also handle cases where backslash is in string
src_files_content[module_name] = content
print(f" Read {module_name}")
except Exception as e:
print(f" {module_name}: {e}")
# Execute modules in order (simple modules first)
load_order = [
"models",
"parser",
"indexing",
"intent",
"retrieval",
"reasoning",
"dependencies",
"groq_integration",
"evaluation",
"notebook_downloader",
]
print("\nExecuting src modules:")
executed_modules = {}
for module_name in load_order:
if module_name not in src_files_content:
continue
try:
# Create module
full_name = f"src.{module_name}"
module = ModuleType(full_name)
module.__file__ = str(app_dir / f"src\\{module_name}.py")
module.__loader__ = None
# Create namespace with all previously loaded modules
namespace = {
"__name__": full_name,
"__file__": module.__file__,
"__package__": "src",
"src": src_package,
}
# Add all already-loaded src modules
for loaded_name, loaded_module in executed_modules.items():
namespace[loaded_name] = loaded_module
setattr(src_package, loaded_name, loaded_module)
# Execute the code
code = src_files_content[module_name]
exec(compile(code, module.__file__, "exec"), namespace)
# Update module with namespace
for key, value in namespace.items():
if not key.startswith("_"):
setattr(module, key, value)
# Register
sys.modules[full_name] = module
sys.modules[module_name] = module
setattr(src_package, module_name, module)
executed_modules[module_name] = module
print(f" Loaded {full_name}")
except Exception as e:
print(f" {module_name}: {str(e)[:60]}")
import traceback
traceback.print_exc()
# Load remaining modules not in load_order
print("\nLoading remaining modules:")
for module_name in src_files_content:
if module_name not in executed_modules:
try:
full_name = f"src.{module_name}"
module = ModuleType(full_name)
module.__file__ = str(app_dir / f"src\\{module_name}.py")
namespace = {
"__name__": full_name,
"__file__": module.__file__,
"__package__": "src",
"src": src_package,
}
for loaded_name, loaded_module in executed_modules.items():
namespace[loaded_name] = loaded_module
setattr(src_package, loaded_name, loaded_module)
code = src_files_content[module_name]
exec(compile(code, module.__file__, "exec"), namespace)
for key, value in namespace.items():
if not key.startswith("_"):
setattr(module, key, value)
sys.modules[full_name] = module
sys.modules[module_name] = module
setattr(src_package, module_name, module)
executed_modules[module_name] = module
print(f" Loaded {full_name}")
except Exception as e:
print(f" {module_name}: {str(e)[:60]}")
# Now load ui/app.py
print("\nLoading ui/app.py:")
ui_app_path = None
for item in app_dir.iterdir():
if item.name == "ui\\app.py":
ui_app_path = item
break
if ui_app_path and ui_app_path.exists():
try:
with open(str(ui_app_path), 'r', encoding='utf-8', errors='ignore') as f:
code = f.read()
exec_globals = {
"__name__": "__main__",
"__file__": str(ui_app_path),
"src": src_package,
}
# Add all src modules
for module_name, module in executed_modules.items():
exec_globals[module_name] = module
print(" Executing ui/app.py...")
exec(compile(code, str(ui_app_path), "exec"), exec_globals)
create_gradio_app = exec_globals.get("create_gradio_app")
if create_gradio_app and callable(create_gradio_app):
print(" Launching Gradio app...\n")
demo = create_gradio_app()
demo.launch(
server_name="0.0.0.0",
server_port=int(os.environ.get("PORT", 7860)),
show_error=True
)
else:
print(" create_gradio_app not found")
except Exception as e:
print(f" Error: {e}\n")
import traceback
traceback.print_exc()
else:
print(" ui\\app.py not found")
|