| [project] |
| name = "modpilot-engine" |
| version = "0.0.1" |
| description = "ModPilot Investigation Engine — Strategy Selector, Orchestrator, Tools, Reasoner, Calibrator" |
| readme = "README.md" |
| requires-python = ">=3.11" |
| license = { text = "MIT" } |
| dependencies = [ |
| "fastapi>=0.115", |
| "uvicorn[standard]>=0.32", |
| "pydantic>=2.9", |
| "pydantic-settings>=2.6", |
| "google-genai>=0.3", |
| "asyncpg>=0.30", |
| "sqlalchemy[asyncio]>=2.0", |
| "alembic>=1.13", |
| "redis[hiredis]>=5.2", |
| "httpx>=0.28", |
| "structlog>=24.4", |
| "python-dotenv>=1.0", |
| "tenacity>=9.0", |
| "psycopg[binary]>=3.3.4", |
| ] |
|
|
| [project.optional-dependencies] |
| dev = [ |
| "pytest>=8.3", |
| "pytest-asyncio>=0.24", |
| "pytest-cov>=6.0", |
| "ruff>=0.8", |
| "mypy>=1.13", |
| "types-redis", |
| "respx>=0.21", |
| "httpx[cli]>=0.28", |
| ] |
|
|
| [build-system] |
| requires = ["hatchling"] |
| build-backend = "hatchling.build" |
|
|
| [tool.hatch.build.targets.wheel] |
| packages = ["api", "orchestrator", "tools", "llm", "memory", "store", "observability"] |
|
|
| [tool.pytest.ini_options] |
| asyncio_mode = "auto" |
| testpaths = ["."] |
| python_files = ["test_*.py"] |
| addopts = "-ra --strict-markers --tb=short" |
|
|
| [tool.coverage.run] |
| branch = true |
| source = ["api", "orchestrator", "tools", "llm", "memory", "store"] |
|
|
| [tool.coverage.report] |
| exclude_lines = ["pragma: no cover", "if TYPE_CHECKING:", "raise NotImplementedError"] |
|
|
| [tool.mypy] |
| python_version = "3.11" |
| strict = true |
| warn_return_any = true |
| warn_unused_configs = true |
| disallow_untyped_defs = true |
| no_implicit_optional = true |
| warn_redundant_casts = true |
| warn_unused_ignores = true |
| plugins = ["pydantic.mypy"] |
|
|
| [[tool.mypy.overrides]] |
| module = "google.genai.*" |
| ignore_missing_imports = true |
|
|