autotrain-fixed / app.py.backup
Wynn Watson
Fix AutoTrain errors: handle _TemplateResponse issue and add missing logo.png
52c45d8
#!/usr/bin/env python3
"""
Working AutoTrain solution - bypasses user permission issues
"""
import os
import pwd
import getpass
import sys
# Fix environment variables FIRST
os.environ["OMP_NUM_THREADS"] = "1"
os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["OPENBLAS_NUM_THREADS"] = "1"
os.environ["HF_HOME"] = "/tmp/huggingface_cache"
# Disable authentication checks
os.environ["DISABLE_OAUTH"] = "1"
os.environ["IS_RUNNING_IN_SPACE"] = "false"
print("πŸ”§ Environment variables fixed!")
print(f"βœ… OMP_NUM_THREADS = {os.environ.get('OMP_NUM_THREADS')}")
# Create cache and working directories
os.makedirs("/tmp/huggingface_cache", exist_ok=True)
os.makedirs("/tmp/autotrain", exist_ok=True)
# Set working directory for database
os.chdir("/tmp/autotrain")
# Monkey patch the getuser function to fix the permission error
def mock_getuser():
return "user"
getpass.getuser = mock_getuser
# Also patch pwd.getpwuid for the same issue
original_getpwuid = pwd.getpwuid
def mock_getpwuid(uid):
class MockPwdEntry:
def __init__(self):
self.pw_name = "user"
self.pw_uid = uid
self.pw_gid = uid
self.pw_dir = "/app"
self.pw_shell = "/bin/bash"
def __getitem__(self, index):
if index == 0:
return self.pw_name
elif index == 1:
return "x" # password placeholder
elif index == 2:
return self.pw_uid
elif index == 3:
return self.pw_gid
elif index == 4:
return "User" # gecos
elif index == 5:
return self.pw_dir
elif index == 6:
return self.pw_shell
else:
raise IndexError("list index out of range")
return MockPwdEntry()
pwd.getpwuid = mock_getpwuid
print("πŸ”§ User permission patches applied!")
# Patch authentication to bypass login
def mock_user_authentication():
return {
"username": "user",
"orgs": [],
"token": "fake_token"
}
if __name__ == "__main__":
print("πŸš€ Starting AutoTrain...")
try:
import uvicorn
from fastapi import FastAPI
from starlette.middleware.sessions import SessionMiddleware
# Import after our patches
import autotrain.app.ui_routes as ui_routes
# Patch the user authentication function
ui_routes.user_authentication = lambda request: mock_user_authentication()
from autotrain.app.ui_routes import ui_router
app = FastAPI(title="AutoTrain Advanced")
# Add session middleware
app.add_middleware(SessionMiddleware, secret_key="autotrain-secret-key")
app.include_router(ui_router)
print("βœ… AutoTrain app created successfully!")
uvicorn.run(app, host="0.0.0.0", port=7860, log_level="info")
except Exception as e:
print(f"❌ Error: {e}")
import traceback
traceback.print_exc()