[project]
name = "hr-ai-backend"
version = "0.1.0"
description = "HR AI Backend with FastAPI"
requires-python = ">=3.11"
dependencies = [
    "fastapi[standard]>=0.104.0",
    "uvicorn[standard]>=0.24.0",
    "sqlmodel>=0.0.14",
    "asyncpg>=0.29.0",
    "alembic>=1.13.0",
    "python-multipart>=0.0.6",
    "boto3>=1.34.0",
    "python-dotenv>=1.0.0",
    "pydantic-settings>=2.1.0",
    "langchain>=0.1.0",
    "langchain-core>=0.1.0",
    "langchain-community>=0.0.10",
    "redis>=5.0.0",
    "langchain-openai>=0.3.32",
    "langchain-milvus>=0.2.1",
    "celery>=5.3.0",
    "pdfplumber>=0.10.0",
    "psycopg2-binary>=2.9.0",
    "python-docx>=1.2.0",
    "docx2txt>=0.9",
    "livekit>=1.0.12",
    "livekit-api>=1.0.5",
    "livekit-agents[cartesia,deepgram,openai,silero,resemble,turn-detector]~=1.2",
    "textract>=1.5.0",
    "comtypes>=1.4.12",
    "reportlab>=4.4.3",
    "yandex-speechkit>=1.5.0",
    "pdfkit>=1.0.0",
    "jinja2>=3.1.6",
    "greenlet>=3.2.4",
    "requests>=2.31.0",
]

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[tool.hatch.build.targets.wheel]
packages = ["app"]

[tool.uv]
dev-dependencies = [
    "pytest>=7.4.0",
    "pytest-asyncio>=0.21.0",
    "httpx>=0.25.0",
    "mypy>=1.7.0",
    "ruff>=0.12.12",
]

[tool.ruff]
line-length = 88
target-version = "py311"

[tool.ruff.lint]
# Enable equivalent of flake8 rules
select = [
    "E",   # pycodestyle errors
    "W",   # pycodestyle warnings  
    "F",   # Pyflakes
    "I",   # isort
    "B",   # flake8-bugbear
    "C4",  # flake8-comprehensions
    "UP",  # pyupgrade
]
ignore = [
    "E501",  # line too long, handled by formatter
]

[tool.ruff.format]
# Equivalent to black configuration
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"

[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
