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

[project]
name = "govoplan-core"
version = "0.1.14"
description = "Reusable GovOPlaN platform core, access, tenancy, and RBAC components."
readme = "README.md"
requires-python = ">=3.12"
license = { file = "LICENSE" }
authors = [{ name = "GovOPlaN" }]
dependencies = [
  "SQLAlchemy>=2.0,<3",
  "fastapi>=0.139,<1",
  "pydantic>=2,<3",
  "pydantic-settings>=2,<3",
  "cryptography>=48.0.1,<50",
  "celery>=5,<6",
  "redis>=5,<6",
  "alembic>=1,<2",
]

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

[tool.setuptools.package-data]
govoplan_core = ["py.typed"]

[tool.setuptools.data-files]
"govoplan_core_runtime" = ["alembic.ini"]
"govoplan_core_runtime/alembic" = ["alembic/env.py", "alembic/script.py.mako"]
"govoplan_core_runtime/alembic/versions" = ["alembic/versions/*.py"]
"govoplan_core_runtime/alembic/dev_versions" = ["alembic/dev_versions/*.py"]

[project.scripts]
govoplan-config = "govoplan_core.commands.config:main"
govoplan-devserver = "govoplan_core.devserver:main"
govoplan-module-install-plan = "govoplan_core.commands.module_install_plan:main"
govoplan-module-installer = "govoplan_core.commands.module_installer:main"

[project.optional-dependencies]
server = [
  "psycopg[binary]>=3.2,<4",
  "uvicorn[standard]>=0.32,<1",
]
dev = [
  "httpx==0.28.1",
  "httpx2>=2.5,<3",
]

[tool.ruff.lint.per-file-ignores]
"tests/test_api_smoke.py" = ["E402"]
"tests/test_module_system.py" = ["E402"]
