MediaRouter / _smoke_app.py
basyx's picture
Upload 794 files
1b2323a verified
Raw
History Blame Contribute Delete
2.24 kB
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)