[project] name = "gogotelefon" version = "0.1.0" description = "Gogo Telefon — voice-first AI receptionist for small service businesses in BiH" requires-python = ">=3.12" dependencies = [ "fastapi>=0.115", "uvicorn[standard]>=0.30", "sqlalchemy>=2.0", "alembic>=1.13", "psycopg[binary]>=3.2", "pydantic>=2.8", "pydantic-settings>=2.4", "jinja2>=3.1", "python-multipart>=0.0.9", "itsdangerous>=2.2", "cryptography>=43.0", "bcrypt>=4.2", "httpx>=0.27", "aiosmtplib>=3.0", "icalendar>=5.0", "apscheduler>=3.10", "anthropic>=0.40", "google-auth>=2.34", "google-auth-oauthlib>=1.2", "qrcode[pil]>=7.4", "websockets>=13.0", ] [project.optional-dependencies] dev = [ "pytest>=8.3", "pytest-asyncio>=0.24", "pytest-httpx>=0.32", "pytest-timeout>=2.3", "ruff>=0.6", "aiosqlite>=0.20", "greenlet>=3.0", ] voice = [ "pipecat-ai>=0.0.40", "faster-whisper>=1.0", ] [build-system] requires = ["hatchling"] build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["gogo"] [tool.pytest.ini_options] asyncio_mode = "auto" testpaths = ["tests"] [tool.ruff] line-length = 100 target-version = "py312" [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] ignore = ["E501", "B008"] # B008: Depends(...) in defaults is FastAPI idiom