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)