[project] name = "reflector" version = "0.1.0" description = "" authors = [{ name = "Monadical team", email = "ops@monadical.com" }] requires-python = ">=3.11, <3.13" readme = "README.md" dependencies = [ "aiohttp>=3.9.0", "aiohttp-cors>=0.7.0", "av>=10.0.0", "requests>=2.31.0", "aiortc>=1.5.0", "sortedcontainers>=2.4.0", "pydantic-settings>=2.0.2", "structlog>=23.1.0", "uvicorn[standard]>=0.23.1", "fastapi[standard]>=0.100.1", "sentry-sdk[fastapi]>=1.29.2", "httpx>=0.24.1", "fastapi-pagination>=0.12.6", "databases[aiosqlite, asyncpg]>=0.7.0", "sqlalchemy<1.5", "alembic>=1.11.3", "nltk>=3.8.1", "prometheus-fastapi-instrumentator>=6.1.0", "sentencepiece>=0.1.99", "protobuf>=4.24.3", "celery>=5.3.4", "redis>=5.0.1", "python-jose[cryptography]>=3.3.0", "python-multipart>=0.0.6", "transformers>=4.36.2", "jsonschema>=4.23.0", "openai>=1.59.7", "psycopg2-binary>=2.9.10", "llama-index>=0.12.52", "llama-index-llms-openai-like>=0.4.0", "pytest-env>=1.1.5", "webvtt-py>=0.5.0", "icalendar>=6.0.0", ] [dependency-groups] dev = [ "black>=24.1.1", "stamina>=23.1.0", "pyinstrument>=4.6.1", ] tests = [ "pytest-cov>=4.1.0", "pytest-aiohttp>=1.0.4", "pytest-asyncio>=0.21.1", "pytest>=7.4.0", "httpx-ws>=0.4.1", "pytest-httpx>=0.23.1", "pytest-celery>=0.0.0", "pytest-recording>=0.13.4", "pytest-docker>=3.2.3", "asgi-lifespan>=2.1.0", ] aws = ["aioboto3>=11.2.0"] evaluation = [ "jiwer>=3.0.2", "levenshtein>=0.21.1", "tqdm>=4.66.0", "pydantic>=2.1.1", ] local = [ "pyannote-audio>=3.3.2", "faster-whisper>=0.10.0", ] silero-vad = [ "silero-vad>=5.1.2", "torch>=2.8.0", "torchaudio>=2.8.0", ] [tool.uv] default-groups = [ "dev", "tests", "aws", "evaluation", "local", "silero-vad" ] [[tool.uv.index]] name = "pytorch-cpu" url = "https://download.pytorch.org/whl/cpu" explicit = true [tool.uv.sources] torch = [ { index = "pytorch-cpu" }, ] torchaudio = [ { index = "pytorch-cpu" }, ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["reflector"] [tool.coverage.run] source = ["reflector"] [tool.pytest_env] ENVIRONMENT = "pytest" DATABASE_URL = "postgresql://test_user:test_password@localhost:15432/reflector_test" [tool.pytest.ini_options] addopts = "-ra -q --disable-pytest-warnings --cov --cov-report html -v" testpaths = ["tests"] asyncio_mode = "auto" markers = [ "model_api: tests for the unified model-serving HTTP API (backend- and hardware-agnostic)", ] [tool.ruff.lint] select = [ "I", # isort - import sorting "F401", # unused imports "PLC0415", # import-outside-top-level - detect inline imports ] [tool.ruff.lint.per-file-ignores] "reflector/processors/summary/summary_builder.py" = ["E501"] "gpu/modal_deployments/**.py" = ["PLC0415"] "reflector/tools/**.py" = ["PLC0415"] "migrations/versions/**.py" = ["PLC0415"] "tests/**.py" = ["PLC0415"]