aiofiles>=23.0.0
aiohttp
aioresponses
aiosqlite
apscheduler>=3.10.0
tzlocal>=3.0
argon2-cffi>=23.0.0
asyncpg
psycopg[binary]>=3.1
cachetools>=5.0.0
click>=8.0.0
click-completion>=0.5.2
typer>=0.12.0
defusedxml>=0.7.0
email-validator>=2.0.0
fastapi<0.137.0,>=0.136.3
httpx>=0.24.0
hypothesis
loguru>=0.7.0
lxml>=4.9.0
numpy>=1.24.0
icalendar>=5.0.0
openpyxl>=3.1.2
pandas>=2.0.0
passlib>=1.7.0
pathspec>=0.12.1
prometheus-client
psutil>=5.9.0
pydantic>=2.0.0
pydantic-core>=2.0.0
pydantic-settings>=2.2.1
python-dotenv>=1.0.0
python-dateutil>=2.9.0
python-magic>=0.4.0
python-multipart>=0.0.27
jsonschema>=4.22.0
markdown>=3.6
pyspellchecker>=0.7.2
PyYAML>=6.0.0
redis>=4.5.0
rich>=13.0.0
scikit-learn>=1.3.0
scipy>=1.10.0
sqlglot>=25.0.0
slowapi>=0.1.0
starlette>=1.0.1
tabulate>=0.9.0
toml>=0.10.0
tomli>=2.0.0
tqdm>=4.65.0
uvicorn[standard]>=0.23.0
cryptography>=41.0.0
regex>=2024.0.0
keyring>=24.0.0
puremagic>=1.15
pycryptodomex>=3.18.0
PyJWT>=2.8.0
python-jose[cryptography]>=3.3.0
yara-python>=4.3.0
pyotp
faster-whisper>=1.2.1
av>=11.0.0
PyAudio>=0.2.0
sounddevice>=0.4.0
soundfile>=0.12.0
yt-dlp>=2023.12.0
chardet>=5.0.0
fugashi>=1.2.0
jieba>=0.42.0
langdetect>=1.0.9
nltk>=3.8.0
tiktoken>=0.5.0
beautifulsoup4>=4.12.0
docling>=1.0.0
docx2txt>=0.8
EbookLib>=0.18
html2text>=2020.1.0
lxml-html-clean>=0.1.0
mwparserfromhell>=0.6.0
mwxml>=0.3.0
pymupdf>=1.23.0
pymupdf4llm>=0.0.5
pypandoc>=1.11
pypandoc-binary>=1.11
trafilatura>=1.6.0
flashrank>=0.2.0
onnx-asr[hub]>=0.11.0
onnxruntime>=1.14.0
openai>=1.0.0
optimum>=1.13.0
torch>=2.11.0
transformers>=5.5.3
sentence-transformers>=5.4.0
arxiv>=2.0.0
playwright>=1.40.0
playwright-stealth>=1.0.0
requests>=2.31.0
tenacity>=8.2.0
urllib3>=2.0.0
chromadb>=0.4.0
SQLAlchemy>=2.0.29
matplotlib
bleach>=6.1.0
Jinja2>=3.1.0
Pillow>=10.0.0

[LLM_MLX]

[LLM_MLX:platform_system == "Darwin" and platform_machine == "arm64"]
mlx-lm>=0.28.0
mlx>=0.30.0

[STT_All]
nemo-toolkit[asr]>=1.20.0
cython>=0.29.0
webrtcvad>=2.0.10

[STT_Parakeet]
nemo-toolkit[asr]>=1.20.0
cython>=0.29.0

[STT_Parakeet_MLX]
librosa
parakeet-mlx

[STT_Parakeet_MLX:platform_system == "Darwin" and platform_machine == "arm64"]
numpy<2.4
mlx>=0.30.0

[TTS_All]
pydub>=0.25.0

[TTS_chatterbox_lang]
pykakasi>=2.2.1
dicta-onnx>=0.2.0
spacy-pkuseg>=0.0.33
russian_text_stresser>=1.0.5

[TTS_echo_tts]
torch>=2.11.0
torchaudio>=2.11.0
torchcodec>=0.11.0
huggingface_hub>=0.23.0
safetensors>=0.4.2
einops>=0.8.0

[TTS_higgs]
torch>=2.11.0
torchaudio>=2.11.0
transformers>=5.5.3
accelerate>=0.20.0

[TTS_kitten_tts]
onnxruntime>=1.16.0
phonemizer-fork~=3.3.2
espeakng_loader
huggingface_hub>=0.23.0

[TTS_kokoro]
pydub>=0.25.0
phonemizer>=3.2.0
scipy>=1.10.0
munch>=4.0.0
kokoro>=0.1.0

[TTS_kokoro_onnx]
pydub>=0.25.0
onnxruntime>=1.16.0
kokoro-onnx>=0.1.0

[TTS_neutts]
librosa>=0.10.0
phonemizer>=3.2.1
transformers>=5.5.3
torch>=2.11.0
neucodec>=0.0.4
resemble-perth>=1.0.0
onnxruntime>=1.16.0
llama-cpp-python>=0.2.0

[TTS_pocket_tts]
onnxruntime>=1.16.0
soundfile>=0.12.1
sentencepiece>=0.1.99
scipy>=1.10.0
huggingface_hub>=0.21.0

[TTS_sovits]
pydub>=0.25.0

[TTS_vibevoice]
torch>=2.11.0
torchaudio>=2.11.0
transformers>=5.5.3
accelerate>=0.20.0
librosa>=0.10.0

[TTS_vibevoice:platform_system == "Linux" and platform_machine == "x86_64"]
flash-attn>=2.5.8
sageattention>=1.0.0

[acp]
asyncssh>=2.14.0

[all]
tldw-server[STT_All,TTS_All,TTS_higgs,TTS_vibevoice,backend_onnx,chunking_multilingual,data-tools,db_postgres,dev,evaluation,gpu_monitoring,gradio,ingestion_email,media_wiki,ocr_points_sglang,web_research]

[audio_recording_windows]
PyAudioWPatch>=0.2.12

[backend_llama]
llama-cpp-python>=0.2.0

[backend_onnx]
onnxruntime>=1.16.0

[backend_vllm]
vllm>=0.2.0

[chunking_multilingual]
pysbd>=0.3.4
pythainlp>=4.0.0
konlpy>=0.6.0
spacy>=3.7.0

[codegraph]
tree-sitter<0.26,>=0.25
tree-sitter-python<0.26,>=0.25
tree-sitter-javascript<0.26,>=0.25
tree-sitter-typescript<0.24,>=0.23
tree-sitter-java<0.24,>=0.23
tree-sitter-kotlin<1.2,>=1.1
tree-sitter-c-sharp<0.24,>=0.23
tree-sitter-c<0.25,>=0.24
tree-sitter-cpp<0.24,>=0.23

[data-tools]
datasets>=2.14.0
fire>=0.5.0
genanki>=0.13.0
joblib>=1.3.0
python-json-logger>=2.0.0

[db_opensearch]
opensearch-py>=2.3.0
elasticsearch>=8.0.0

[db_postgres]
psycopg[binary]>=3.1
psycopg-pool>=3.1
psycopg2-binary>=2.9.9

[dev]
pytest>=9.0.3
pytest-asyncio>=1.3.0
pytest-cov>=7.1.0
pytest-xdist>=3.8.0
pytest-split>=0.9.0
pytest-mock>=3.15.1
pytest-timeout>=2.4.0
pytest-benchmark>=5.2.3
black>=26.3.1
mypy>=1.20.1
ruff>=0.15.10
pre-commit>=4.5.1
websockets>=12.0
locust>=2.20.0

[diarization]
speechbrain>=0.5.15
torch>=2.11.0
torchaudio>=2.11.0
scikit-learn>=1.3.0
pyannote.audio>=3.0.0

[evaluation]
bert-score>=0.3.0
rouge-score>=0.1.0
sentence-transformers>=5.4.0
textstat>=0.7.0

[gpu_monitoring]

[gpu_monitoring:platform_system == "Linux"]
pynvml>=11.5.0

[gradio]
gradio>=4.0.0

[ingestion_email]
pypff>=0.6.3

[media_wiki]
mwparserfromhell>=0.6.0
mwxml>=0.3.0

[multiplayer]
pyotp
psycopg
qrcode

[ocr_points_sglang]
requests>=2.31.0

[otel]
opentelemetry-distro>=0.62b0
opentelemetry-exporter-otlp>=1.24.0
opentelemetry-exporter-prometheus>=0.49b0
opentelemetry-instrumentation-fastapi>=0.48b0
opentelemetry-instrumentation-httpx>=0.48b0
opentelemetry-instrumentation-sqlalchemy>=0.48b0
opentelemetry-instrumentation-psycopg2>=0.48b0
opentelemetry-instrumentation-aiohttp-client>=0.48b0

[scrape-analyzers]
playwright>=1.40.0
curl-cffi>=0.5.0

[scrape-analyzers-waf]
wafw00f>=2.2.0

[sentry]
sentry-sdk[fastapi]>=2.0.0

[tooling]
requests>=2.31.0
websockets>=12.0

[web_research]
arxiv>=2.0.0
genanki>=0.13.0
playwright>=1.40.0
trafilatura>=1.6.0
