[project] name = "backend" version = "0.1.0" description = "Add your description here" requires-python = ">=3.11" dependencies = [ "alembic>=1.18.4", "fastapi>=0.136.3", "httpx>=0.28.1", "pydantic-settings>=2.14.1", "python-dotenv>=1.2.2", "sqlmodel>=0.0.38", "uvicorn[standard]>=0.49.0", ] [dependency-groups] dev = [ "black>=26.5.1", "pytest>=9.1.0", "ruff>=0.15.17", ] [tool.ruff] line-length = 100 target-version = "py311" # alembic 자동생성 마이그레이션은 lint 대상에서 제외 extend-exclude = ["migrations/versions"] [tool.ruff.lint] select = ["E", "F", "I", "UP", "B"] # UP042: str+Enum 은 CONTRACT 의도(값 명시) — StrEnum 강제 안 함 # UP045/UP007: Optional[X]/Union 스타일 유지(SQLModel 자기참조 forward-ref 안전) ignore = ["UP042", "UP045", "UP007"] [tool.ruff.lint.flake8-bugbear] # FastAPI 의존성 주입 관용구: 기본 인자의 Depends/Query 호출 허용 extend-immutable-calls = ["fastapi.Depends", "fastapi.Query"] [tool.ruff.lint.per-file-ignores] # 시드/테스트의 긴 한국어 문자열은 줄길이 제한 면제 "app/seed.py" = ["E501"] "tests/*" = ["E501"] [tool.black] line-length = 100 [tool.pytest.ini_options] testpaths = ["tests"] addopts = "-q"