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

[project]
name = "rail-game-backend"
version = "0.1.0"
description = "Backend service for the Rail Game project"
readme = "README.md"
requires-python = ">=3.10"
license = "MIT"
authors = [{name = "Rail Game Team"}]
dependencies = [
    "fastapi>=0.111.0,<1.0.0",
    "uvicorn[standard]>=0.24.0,<1.0.0",
    "pydantic-settings>=2.0.0,<3.0.0",
    "python-jose[cryptography]>=3.3.0,<4.0.0",
    "passlib[bcrypt]>=1.7.4,<2.0.0",
    "SQLAlchemy>=2.0.31,<3.0.0",
    "alembic>=1.13.1,<2.0.0",
    "geoalchemy2>=0.15.2,<0.16.0",
    "psycopg[binary]>=3.1.19,<4.0.0",
    "shapely>=2.0.4,<3.0.0"
]

[project.optional-dependencies]
dev = [
    "httpx>=0.27.0,<0.28.0",
    "pytest>=8.0.0,<9.0.0",
    "black>=24.0.0,<25.0.0",
    "isort>=5.13.0,<6.0.0"
]

[tool.black]
line-length = 88
target-version = ["py310"]
include = "backend/.+\\.py$"

[tool.isort]
profile = "black"
line_length = 88
src_paths = ["backend"]
known_first_party = ["backend"]

[tool.setuptools.packages.find]
where = ["."]
include = ["backend*"]
exclude = ["frontend*", "infra*", "data*", "docs*", "tests*"]

[tool.pytest.ini_options]
testpaths = [
    "backend/tests"
]
pythonpath = [
    "backend"
]
