Files
openstack-api-simulator/pyproject.toml
T

86 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 = "openstack-api-simulator"
version = "0.1.0"
description = "Stateful asynchronous OpenStack API laboratory simulator"
readme = "README.md"
requires-python = ">=3.13,<3.14"
license = { text = "Apache-2.0" }
authors = [{ name = "openstack-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]
openstack-api-contract = "app.contracts.cli:main"
[tool.hatch.build.targets.wheel]
packages = ["app"]
[tool.hatch.build.targets.wheel.force-include]
"contracts/openstack" = "contracts/openstack"
[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"]
"tools/os_api_inventory/request_body_catalog.py" = ["E501"]
"tools/os_api_inventory/import_openapi_bodies.py" = ["S310"]
[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",
]
[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