Spaces:
Running
Running
File size: 2,244 Bytes
1b2323a | 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 | from __future__ import annotations
import sys, types
from pathlib import Path
from unittest.mock import MagicMock
MODULES = {
'fastapi': 'FastAPI, HTTPException, Request, RequestValidationError, responses',
'fastapi.exceptions': 'RequestValidationError',
'fastapi.responses': 'JSONResponse, ORJSONResponse',
'starlette': 'middleware, routing, responses',
'starlette.middleware': 'base, cors',
'starlette.middleware.base': 'RequestResponseEndpoint, BaseHTTPMiddleware',
'starlette.middleware.cors': 'CORSMiddleware',
'starlette.routing': 'Mount, Router',
'starlette.responses': 'Response, JSONResponse',
'pydantic': 'BaseModel, Field, ValidationError, field_validator, model_validator',
'pydantic_settings': 'BaseSettings, SettingsConfigDict',
'pydantic_core': None,
'sqlalchemy': 'create_engine, text, select, insert, update, delete, inspect, event',
'sqlalchemy.orm': 'DeclarativeBase, Mapped, mapped_column, relationship, Session, sessionmaker, selectinload',
'sqlalchemy.pool': 'NullPool, QueuePool',
'aiosqlite': None,
'asyncpg': None,
'cryptography': None,
'yt_dlp': None,
'faster_whisper': None,
'mcp': None,
'mcp.server': 'fastmcp',
'mcp.server.fastmcp': 'FastMCP',
'aiofiles': None,
'httpx': None,
'orjson': None,
'psutil': None,
'yaml': None,
'PIL': None,
'PIL.Image': None,
}
for name, attrs in MODULES.items():
mod = types.ModuleType(name)
mod.__package__ = name.rpartition('.')[0]
if attrs:
for attr in attrs.split(','):
attr = attr.strip()
setattr(mod, attr, MagicMock(name=f'{name}.{attr}'))
sys.modules[name] = mod
sys.path.insert(0, str(Path('.').resolve()))
from app.core.config import Settings
from main import create_app
settings = Settings(_env_file=None, temp_dir=Path('/tmp/media-api/temp'), output_dir=Path('/tmp/media-api/out'), max_upload_size=1024, cleanup_minutes=1, cleanup_interval_seconds=3600, whisper_model='tiny', max_workers=1, allow_private_urls=True, auth_enabled=False, database_url='sqlite+aiosqlite:////tmp/media-api/security.db', security_database_role='security')
app = create_app(settings)
print('APP_OK', app.title, app.version)
|