← Back to issue list

Remove mypy and pyright

View original Github issue

Metadata

Project
craft-providers
Number
#901
Type
issue
State
open
Author
mr-cal
Labels
Type: Enhancement
Created
Updated
Closed
—

Current evaluation

Drop mypy/pyright in favour of ty. Makefile, CI and pyproject already use ty only; common.mk still defines lint-mypy, lint-pyright, install-pyright, and stale .gitignore/type: ignore entries remain. Mirrors snapcraft#6007 and craft-cli#420, both completed.

Suggested action: keep open

Reason: Maintainer-filed (mr-cal) and already carries the 'Type: Enhancement' label, so it is triaged and valid; it is a toolchain-hygiene task, not a user-facing defect. The active config is largely migrated — Makefile:38 runs only 'lint-ruff lint-ty lint-codespell ...', no workflow references mypy/pyright, and pyproject.toml has no [tool.mypy]/[tool.pyright] — but common.mk still ships dead 'lint-mypy', 'lint-pyright' and 'install-pyright' targets (the latter doing 'sudo snap install --classic pyright') with _setup-lint still depending on install-pyright, plus .gitignore:130-133 mypy cache entries and a stale '# type: ignore[return-value]' at multipass.py:144. Both cited precedents are already closed (snapcraft#6007 via PR #6247, craft-cli#420 via PR #479), giving a clear template; the residual uncertainty is only whether common.mk edits must be upstreamed to the shared craft-apps template first.

Evaluated by: mr-cal-bot

Impact: 35 Quick Win: 23 Complexity: 25 Confidence: 87 Actionability: 88

Issue body

### What needs to get done Remove pyright and mypy. Similar to https://github.com/canonical/snapcraft/issues/6007 ### Why it needs to get done To migrate to ty without needing to ignore unused type-checker warnings.

Evaluation history

Date Model Scores Action Summary
stealth/space-bunny-alpha
Impact: 35
Quick Win: 23
Complexity: 25
Confidence: 87
Actionability: 88
keep open Drop mypy/pyright in favour of ty. Makefile, CI and pyproject already use ty only; common.mk still defines lint-mypy, lint-pyright, install-pyright, and stale .gitignore/type: ignore entries remain. Mirrors snapcraft#6007 and craft-cli#420, both completed.
stealth/space-bunny-alpha
Impact: 32
Quick Win: 21
Complexity: 28
Confidence: 92
Actionability: 91
keep open Maintainer-filed enhancement to remove mypy and pyright before adopting ty, avoiding obsolete unused-ignore warnings; modeled on two completed migrations and still awaiting implementation.
qwen3.6-35b-a3b-mtp-q6
Impact: 50
Quick Win: 35
Staleness: 60
Complexity: 30
Confidence: 75
Support Request: 0
keep open Enhancement to remove mypy and pyright type checkers in favor of ty, following similar work in snapcraft#6007. Issue created by maintainer but has had no maintainer response or comments in 136 days.
qwen/qwen3.6-35b-a3b
Staleness: 55
Complexity: 45
Confidence: 80
Support Request: 0
needs triage Enhancement to remove mypy and pyright type checkers in favor of migrating to the ty tool. Open for 165 days with no maintainer comments or assignee.
qwen3.6-35b-a3b-mtp-q6
Staleness: 65
Complexity: 15
Confidence: 90
Support Request: 0
needs triage Enhancement to remove mypy and pyright in favor of migrating to the ty type checker. Open for 156 days with no maintainer comments or assignee, awaiting triage.

Update history

No update history recorded yet.

Related work

  • Related To: snapcraft#6007 (confidence 95%)

    Explicitly cited in the issue body as the model to follow; closed and resolved by merged PR #6247 (commit 534d7dce7), adopting ty and dropping the unused-ignore suppression.

  • Related To: craft-cli#420 (confidence 92%)

    Second instance of the same cross-repo initiative; closed and resolved by merged PR #479.

  • Related To: craft-application#1084 (confidence 80%)

    Merged PR 'style: replace mypy and pyright with ty' applying the identical change in a sibling craft repo.

  • Related To: craft-platforms#207 (confidence 78%)

    Merged PR 'style: disable pyright in favour of ty' updating lint configuration and CI checks in another sibling repo.

Related issues

Issue Project State Summary Similarity
#1084 style: replace mypy and pyright with ty craft-application merged Merged PR #1084 as squash commit 345bd5d9, replacing mypy and pyright with ty and updating lint configuration for craft-app 7.
79%
#420 Remove mypy and pyright craft-cli closed Removed mypy and pyright in favor of ty through merged PR #479 (commit 0e49c01).
79%
#6007 Remove mypy and pyright snapcraft closed Request to drop mypy and pyright for ty was resolved by merged PR #6247 ("style: go all-in on ty", commit 534d7dce7), which replaced both checkers with ty and removed the unused-ignore-comment suppression.
77%
#421 style: ty craft-cli merged Merged PR #421 as 5c6d127, updating ty to unblock snapcraft#5673; it opened #420 to remove mypy and pyright, later resolved by #479.
75%
#223 style: switch from mypy+pyright to ty craft-platforms merged Merged PR #223 by lengau replaced mypy and pyright with the ty type checker in craft-platforms, dropping ~274 lines across 3 files; approved by 2 reviewers with all lint/test CI green.
74%
#152 style: remove mypy and pyright to go all-in on ty debcraft merged Merged canonical/debcraft#152, removing mypy and pyright and standardizing type checking on Astral ty after approval by two reviewers.
74%
#215 style: drop mypy, pyright craft-grammar merged Merged #215 in commit 19a38b7, dropping mypy and pyright in favor of ty across six files (+4/-481).
72%
#253 style: drop mypy, pyright craft-archives merged Merged PR #253 (commit 1949f53) drops mypy and pyright in favor of ty; lint and test CI checks passed.
72%
#1007 style: drop mypy, pyright craft-providers merged Merged into main as commit 232143d, replacing mypy and pyright with ty and removing obsolete type-checker tooling.
72%
#1207 style: replace mypy and pyright with ty rockcraft merged Merged PR #1207 (commit 5d9356c1), replacing mypy and pyright type checking with Astral ty and updating lint configuration across 43 files.
72%