diff --git a/catalog/snippets/configs/vscode-tasks-python.json b/catalog/snippets/configs/vscode-tasks-python.json index 15e59013..d3d97656 100644 --- a/catalog/snippets/configs/vscode-tasks-python.json +++ b/catalog/snippets/configs/vscode-tasks-python.json @@ -55,8 +55,9 @@ } }, { - // The clean-compile aggregator: format, then lint, then types - in order, no shell chaining. - "label": "Python Verify", + // The clean-compile aggregator - formats in place, then lints, then type-checks, in order (no shell + // chaining). Named "Format" (it mutates, like the sibling ".NET Format" task), not "Verify". + "label": "Python Format", "dependsOrder": "sequence", "dependsOn": [ "Ruff Format", diff --git a/spec/files.json b/spec/files.json index 5655fe29..a587e3b5 100644 --- a/spec/files.json +++ b/spec/files.json @@ -17,7 +17,8 @@ { "path": "repo-config/develop.json", "intentRef": "repo-config/README.md", "appliesTo": "*" }, { "path": "repo-config/main.json", "intentRef": "repo-config/README.md", "appliesTo": "*" }, { "path": ".github/dependabot.yml", "appliesTo": "*" }, - { "path": ".vscode/tasks.json", "sections": ["clean-compile task group"], "reference": "catalog/snippets/configs/vscode-tasks.json", "appliesTo": ["csharp", "python"] }, + { "path": ".vscode/tasks.json", "sections": ["clean-compile task group"], "reference": "catalog/snippets/configs/vscode-tasks.json", "appliesTo": ["csharp"] }, + { "path": ".vscode/tasks.json", "sections": ["clean-compile task group"], "reference": "catalog/snippets/configs/vscode-tasks-python.json", "appliesTo": ["python"] }, { "path": "codecov.yml", "reference": "catalog/snippets/configs/codecov.yml", "intentRef": "WORKFLOW.md", "appliesTo": ["csharp", "python"] }, { "path": ".dockerignore", "appliesTo": ["docker"] }, { "path": "Docker/README.md", "reference": "catalog/snippets/configs/docker-hub-readme.md", "appliesTo": ["docker"] } diff --git a/spec/project-types.json b/spec/project-types.json index 06598cbc..bca02029 100644 --- a/spec/project-types.json +++ b/spec/project-types.json @@ -36,7 +36,8 @@ { "id": "python.pyright.config", "verdict": "intent", "assert": "pyright is configured and runs strict on first-party code (src or the integration package) - the strong typing baseline; third-party strictness is relaxed only where a dependency has no usable types.", "intentRef": "CODESTYLE.md" }, { "id": "python.config.placement", "verdict": "letter", "assert": "ruff and pyright config live in pyproject.toml (canonical); standalone .ruff.toml / pyrightconfig.json is a drift finding. A Home Assistant integration is the exception - it follows home-assistant/core standalone-config conventions and is scored by ha.python.conventions instead.", "intentRef": "CODESTYLE.md" }, { "id": "python.mypy.allowed", "verdict": "intent", "assert": "mypy is permitted as an additional type checker (not banned); required for a Home Assistant integration (platinum strict-typing). When used it runs in CI and the editor.", "intentRef": "CODESTYLE.md" }, - { "id": "python.coverage.codecov", "verdict": "letter", "assert": "The test job collects coverage (pytest --cov-report=xml) and uploads it to Codecov via codecov/codecov-action, best-effort (continue-on-error and fail_ci_if_error: false); CODECOV_TOKEN is stored in the repo actions secrets. Required for every Python repo with tests.", "intentRef": "WORKFLOW.md" } + { "id": "python.coverage.codecov", "verdict": "letter", "assert": "The test job collects coverage (pytest --cov-report=xml) and uploads it to Codecov via codecov/codecov-action, best-effort (continue-on-error and fail_ci_if_error: false); CODECOV_TOKEN is stored in the repo actions secrets. Required for every Python repo with tests.", "intentRef": "WORKFLOW.md" }, + { "id": "python.uvlock.pinned", "verdict": "letter", "assert": "If the project uses uv (a committed uv.lock), the lockfile is pinned to LF in both .editorconfig ([uv.lock]) and .gitattributes (uv.lock text eol=lf); uv regenerates it LF on every platform, so a CRLF-default repo otherwise reds editorconfig-checker on every uv lock/sync. N/A for a non-uv Python repo (e.g. a Home Assistant integration on pip/requirements).", "intentRef": "AGENTS.md#line-endings" } ] }, "console": {