# Web Framework
fastapi>=0.115.0
uvicorn[standard]>=0.27.0
websockets>=12.0
python-multipart>=0.0.6

# Datenbank
sqlalchemy>=2.0.25
asyncpg>=0.29.0
alembic>=1.13.1

# Redis & Task Queue
redis>=5.0.1
async-timeout>=4.0.3  # Required by redis on Python <3.12
celery>=5.3.6

# LLM & AI
ollama>=0.4.0                 # Ollama Python client (async support)
openai>=1.55.0                # OpenAI-compatible client for llama-server / vLLM endpoints

# RAG & Document Processing
docling>=2.0.0                # IBM Docling for document parsing (includes docling-ibm-models)
docling-core>=2.0.0           # Docling core functionality
easyocr>=1.7.0                # EasyOCR for force_full_page_ocr on German/English PDFs
transformers>=4.47.0          # Required for rt_detr_v2 model support
pgvector>=0.2.4               # PostgreSQL vector extension for SQLAlchemy
aiofiles>=23.2.0              # Async file operations

# Speech-to-Text (faster-whisper via CTranslate2)
# Older comment claimed PyAV build issues; faster-whisper 1.x ships manylinux
# wheels for amd64 + aarch64 and pulls PyAV via wheel only — no source build.
# CTranslate2 backend gets ~4x speedup on GPU vs openai-whisper and supports
# device=cuda + compute_type=float16 cleanly.
faster-whisper>=1.0.0

# Text-to-Speech (Piper, in-process Python bindings)
# Replaces the per-request `subprocess.Popen('piper', ...)` cold-start in
# piper_service.py. Voice models still loaded from /usr/share/piper/voices/
# (downloaded by Dockerfile). The CLI binary stays in the image as a fallback
# until the in-process path is verified stable in production.
piper-tts>=1.2.0

# Audio Preprocessing (for better STT quality)
noisereduce>=3.0.0      # Spectral noise reduction
librosa>=0.10.0         # Audio loading/resampling (handles WebM, MP3, etc.)
soundfile>=0.12.0       # Audio file I/O

# Speaker Recognition (ECAPA-TDNN)
speechbrain>=1.0.0      # Speaker embedding extraction
torchaudio>=2.0.0       # Audio processing for SpeechBrain

# Wake Word Detection (Optional - Server-Side Fallback)
# Uncomment to enable server-side wake word detection
# openwakeword>=0.5.0

# Integrationen
requests>=2.31.0
httpx>=0.27.0
paho-mqtt>=1.6.1

# Service Discovery
zeroconf>=0.131.0

# Kamera / Computer Vision
opencv-python-headless>=4.9.0.80
pillow>=10.2.0

# Rate Limiting
slowapi>=0.1.9                # Rate limiting for FastAPI

# Utilities
python-dotenv>=1.0.0
pydantic>=2.9.0
pydantic-settings>=2.1.0
email-validator>=2.1.0
python-jose[cryptography]>=3.3.0
passlib[bcrypt]>=1.7.4
bcrypt==4.0.1  # Pin to avoid compatibility issues with passlib
python-dateutil>=2.8.2
rapidfuzz>=3.9.0              # Fuzzy string matching (Paperless taxonomy resolution)

# MCP Client (Model Context Protocol)
mcp>=1.26.0
jsonschema>=4.21.0            # JSON Schema validation for MCP tool inputs

# MCP Servers (standalone packages)
renfield-mcp-weather @ https://github.com/ebongard/renfield_mcp_weather/archive/refs/heads/main.tar.gz
renfield-mcp-paperless @ https://github.com/ebongard/renfield-mcp-paperless/archive/refs/tags/v1.4.0.tar.gz
renfield-mcp-mail @ https://github.com/ebongard/renfield-mcp-mail/archive/refs/heads/main.tar.gz
aiosmtplib>=3.0                  # Required by renfield-mcp-mail (not auto-resolved from archive installs)
renfield-mcp-jellyfin @ https://github.com/ebongard/renfield-mcp-jellyfin/archive/refs/heads/main.tar.gz
renfield-mcp-tunein @ https://github.com/ebongard/renfield-mcp-tunein/archive/refs/heads/main.tar.gz
renfield-mcp-calendar @ https://github.com/ebongard/renfield-mcp-calendar/archive/refs/heads/main.tar.gz
renfield-mcp-dlna @ https://github.com/ebongard/renfield-mcp-dlna/archive/refs/heads/main.tar.gz
async-upnp-client>=0.40.0               # Required by renfield-mcp-dlna (UPnP device control)
python-didl-lite>=1.4.0                  # Required by renfield-mcp-dlna (DIDL-Lite metadata)
exchangelib>=5.4                     # Required by renfield-mcp-calendar (EWS backend)
caldav>=1.4                          # Required by renfield-mcp-calendar (CalDAV backend)

# Monitoring & Logging
loguru==0.7.2
prometheus-client>=0.21.0     # Optional: Prometheus metrics (METRICS_ENABLED=true)
