[tool.poetry] name = "gt2-resource-cluster" version = "1.0.0" description = "GT 2.0 Resource Cluster - Centralized AI resource management with HA support" authors = ["GT Edge AI"] readme = "README.md" [tool.poetry.dependencies] python = "^3.11" [build-system] requires = ["poetry-core"] build-backend = "poetry.core.masonry.api" [tool.pydocstyle] convention = "google" add-ignore = ["D100", "D104"] # Allow missing docstrings in __init__.py match = "(?!test_).*\\.py" # Exclude test files [tool.pytest.ini_options] minversion = "7.0" testpaths = ["tests"] python_files = ["test_*.py", "*_test.py"] python_classes = ["Test*"] python_functions = ["test_*"] addopts = [ "--cov=app", "--cov-report=html", "--cov-report=term-missing", "--cov-fail-under=80", "--strict-markers", "-v", ] markers = [ "unit: Fast isolated tests (<100ms)", "integration: Cross-service tests", "slow: Long-running tests (>1s)", "security: Security-focused tests", ] asyncio_mode = "auto" [tool.black] line-length = 100 target-version = ['py311'] [tool.mypy] python_version = "3.11" ignore_missing_imports = true strict_optional = true [tool.coverage.run] source = ["app"] omit = [ "*/tests/*", "*/migrations/*", "*/venv/*", "*/env/*", ] [tool.coverage.report] exclude_lines = [ "pragma: no cover", "def __repr__", "raise AssertionError", "raise NotImplementedError", "if __name__ == .__main__.:", "if TYPE_CHECKING:", ] [tool.bandit] exclude_dirs = ["tests", "migrations", "venv", ".venv"] skips = ["B101", "B601"] # B101=assert_used, B601=shell_injection (for subprocess)