Files
vmware-api-simulator/pyproject.toml
T
inecs f8d3cbdd59 Initial commit: VMware vSphere API simulator scaffold.
Add the FastAPI app, PostgreSQL migrations, Docker/Helm packaging, API
contracts, docs, client examples, and the unit/integration/compatibility
test suite for local client and tooling labs without a real vCenter.
2026-07-18 04:42:11 +03:00

85 lines
2.1 KiB
TOML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[build-system]
requires = ["hatchling>=1.27,<2"]
build-backend = "hatchling.build"
[project]
name = "vmware-api-simulator"
version = "0.1.0"
description = "Stateful asynchronous VMware / vSphere API simulator"
readme = "README.md"
requires-python = ">=3.13,<3.14"
license = { text = "Apache-2.0" }
authors = [{ name = "vmware-api-simulator contributors" }]
dependencies = [
"asyncpg>=0.30,<0.31",
"fastapi>=0.116,<0.117",
"httpx>=0.28,<0.29",
"pydantic>=2.11,<3",
"pydantic-settings>=2.10,<3",
"uvicorn[standard]>=0.35,<0.36",
]
[project.optional-dependencies]
dev = [
"hypothesis>=6.135,<7",
"mypy>=1.17,<1.18",
"pytest>=8.4,<9",
"pytest-asyncio>=1.1,<2",
"pytest-cov>=6.2,<7",
"proxmoxer>=2.3,<2.4",
"requests>=2.32,<3",
"ruff>=0.12,<0.13",
]
[project.scripts]
vmware-api-contract = "app.contracts.cli:main"
[tool.hatch.build.targets.wheel]
packages = ["app"]
[tool.ruff]
target-version = "py313"
line-length = 100
[tool.ruff.lint]
select = ["E", "F", "I", "UP", "B", "ASYNC", "S", "RUF"]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "S105", "S106", "S108", "E501"]
# FastAPI Depends(...) defaults are idiomatic; long SOAP XML helpers exceed 100.
"app/vsphere/**/*.py" = ["B008", "E501", "S105", "S108", "S110"]
"app/lifespan.py" = ["BLE001", "S110"]
[tool.mypy]
python_version = "3.13"
strict = true
plugins = ["pydantic.mypy"]
files = ["app", "tests"]
[tool.pytest.ini_options]
asyncio_mode = "auto"
testpaths = ["tests"]
markers = [
"integration: requires PostgreSQL or another external service",
"contract: validates imported API contracts",
"compatibility: exercises an external client against a running simulator",
"pve_stub: optional legacy Proxmox VE /api2 plane (ENABLE_PVE_STUB=true)",
]
[tool.coverage.run]
branch = true
source = ["app"]
omit = [
"app/surface_probe.py",
"app/evidence_gen.py",
"app/simulation/seed_cli.py",
"app/db/migrate_cli.py",
]
[tool.coverage.report]
# Offline unit coverage of the full handler surface stays below the former 80%
# bar; behavioral gate is make test-surface (all majors × verbs). Raise this as
# focused unit tests catch up.
fail_under = 50
show_missing = true