dodil/erp-platform

pyproject.toml

[project]
license = "Apache-2.0"
license-files = ["LICENSE", "NOTICE"]
name = "erp-platform"
version = "0.9.13"
description = "The substrate every DODIL brick depends on: seams, the DataK3 engine, migrations, identity, the public-link door, the scenario harness."
requires-python = ">=3.10"
dependencies = [
    "fastapi>=0.115",
    "httpx>=0.27,<1",
    "sqlalchemy>=2.0,<3",
    "psycopg[binary]>=3.2,<4",
    "pydantic>=2.10,<3",
    "python-dotenv>=1.0",
    # 2.x renamed FastMCP to MCPServer; bricks.py is written against 2.x, so pin the major.
    "mcp>=2.3,<3",
    "anyio>=4",
    "pyyaml>=6",          # compose.yaml
    # work.py's IANA zones. zoneinfo reads the OS database first and falls back to this package — and
    # python:3.12-slim, the composition's base image, has no /usr/share/zoneinfo.
    "tzdata>=2024.1",
]

[project.optional-dependencies]
test = ["pytest>=8", "uvicorn>=0.34", "xmlschema>=3"]

[project.scripts]
erp-migrate = "erp_platform.migrate:main"
erp-compose = "erp_platform.compose:main"
erp-scenarios = "erp_platform.scenarios.cli:main"
erp-lint = "erp_platform.lint:main"
erp-card = "erp_platform.card:main"

[build-system]
requires = ["setuptools>=77"]
build-backend = "setuptools.build_meta"

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

[tool.setuptools.package-data]
# The capability contract travels with the code that enforces it; the repo-root file is a symlink to this one.
erp_platform = ["capabilities.yaml", "platform.sql", "LICENSE.apache-2.0"]   # the LICENSE a scaffolded brick ships

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