[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "x-financial-server"
version = "0.1.0"
description = "Backend service for X-Financial reimbursement and approval platform."
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
  "fastapi>=0.115.0,<1.0.0",
  "uvicorn[standard]>=0.30.0,<1.0.0",
  "sqlalchemy>=2.0.36,<3.0.0",
  "alembic>=1.14.0,<2.0.0",
  "psycopg[binary]>=3.2.0,<4.0.0",
  "PyJWT>=2.9.0,<3.0.0",
  "pydantic-settings>=2.6.0,<3.0.0",
  "python-dotenv>=1.0.1,<2.0.0",
  "email-validator>=2.2.0,<3.0.0",
]

[project.optional-dependencies]
dev = [
  "pytest>=8.3.0,<9.0.0",
  "httpx>=0.28.0,<1.0.0",
  "ruff>=0.8.0,<1.0.0",
]
redis = [
  "redis>=5.2.0,<6.0.0",
]

[tool.setuptools]
package-dir = {"" = "src"}

[tool.setuptools.packages.find]
where = ["src"]

[tool.pytest.ini_options]
pythonpath = ["src"]
testpaths = ["tests"]

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

[tool.ruff.lint]
select = ["E", "F", "I", "B", "UP"]
