[project]
name = "nyahome"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.13"
dependencies = [
    "aiofiles>=25.1.0",
    "aiosmtplib>=5.1.0",
    "alembic>=1.18.4",
    "argon2-cffi>=25.1.0",
    "fastapi>=0.136.1",
    "httpx>=0.28.1",
    "jinja2>=3.1.6",
    "openai>=2.38.0",
    "passlib[bcrypt]>=1.7.4",
    "psycopg[binary]>=3.3.4",
    "pydantic>=2.13.4",
    "python-dotenv>=1.2.2",
    "python-jose[cryptography]>=3.5.0",
    "python-multipart>=0.0.29",
    "pyyaml>=6.0.3",
    "rich>=15.0.0",
    "sqlalchemy>=2.0.49",
    "sqlmodel>=0.0.38",
    "typer>=0.25.1",
    "uvicorn>=0.47.0",
]

[dependency-groups]
dev = [
    "docstring-parser>=0.18.0",
    "mypy>=2.1.0",
    "ruff>=0.15.14",
    "taskipy>=1.14.1",
    "types-aiofiles>=25.1.0.20260518",
    "types-passlib>=1.7.7.20260211",
    "types-python-jose>=3.5.0.20260408",
]

[project.scripts]
nyahome = "nyahome.manage:app"

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

[tool.hatch.build.targets.sdist]
artifacts = ["src/nyahome/static/**"]

[tool.hatch.build.targets.wheel]
packages = ["src/nyahome"]
artifacts = ["src/nyahome/static/**"]

[tool.ruff]
preview = true
line-length = 120
target-version = "py313"

[tool.ruff.lint]
select = [
    "A",
    "B",
    "C",
    "E",
    "F",
    "E",
    "Q",
    "I",
    "N",
    "W",
    "DOC",
    "RSE",
    "RET",
    "FAST",
    "YTT",
    "ANN",
    "ASYNC",
    "COM",
    "T20",
    "SIM",
    "PTH",
    "FLY",
    "RUF",
]

ignore = [
    "PTH123",
    "RUF001",
    "RUF002",
    "RUF003",
    "RUF029",
    "C90",
    "COM812",
    "E501",
]

fixable = ["ALL"]

[tool.mypy]
files = ["src"]
strict = true
warn_return_any = true

disable_error_code = ["list-item", "attr-defined", "type-arg"]

[tool.taskipy.tasks]
# 生成迁移
makemigrations = "alembic revision --autogenerate -m 'auto'"
# 执行迁移
migrate = "alembic upgrade head"
# 回滚
rollback = "alembic downgrade -1"
# 查看数据库版本
current = "alembic current"
# 为 docs 文档生成最新 openapi.json
openapi-docs = "nyahome openapi docs/.vitepress/theme/openapi.json"
