dmypy's `--use-fine-grained-cache` crashes with `KeyError` on namespace packages
Open
Nobody has claimed this yet.
crash
topic-daemon
- Dominant language
- Python
- Stars
- 20.6k
- Forks
- 3.3k
- PR merge metrics
- PR metrics pending
Description
This is possibly related to #10735.
To Reproduce & Traceback
Create a minimal project as follows:
project/
mypy.ini
[mypy]
files = src/
src/
pkg/
__init__.py
nspkg/
mod.py
a: int = ""
Reproduce with these steps:
- Navigate to
project/ -
$ mypy --cache-fine-grained src/pkg/nspkg/mod.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "int") [assignment] -
(I don't think this should say$ dmypy run -- --use-fine-grained-cache Daemon started Success: no issues found in 2 source filesSuccessgiven the errors from Step 2., but that's a separate issue.) - Change
mod.py, e.g. modify the sole line toa: int = "a" - Run the daemon twice:
-
$ dmypy run -- --use-fine-grained-cache src/pkg/nspkg/mod.py:1: error: Incompatible types in assignment (expression has type "str", variable has type "int") [assignment] -
$ dmypy run -- --use-fine-grained-cache Daemon crashed! Traceback (most recent call last): File ".../mypy/dmypy_server.py", line 237, in serve ... File ".../mypy/dmypy_server.py", line 768, in find_reachable_changed_modules worklist.append(BuildSource(graph[dep].path, graph[dep].id, followed=True)) ~~~~~^^^^^ KeyError: 'pkg.nspkg'
-
Your Environment
- Mypy version used: 1.19.1
- Python version used: Python 3.13
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the namespace-package case with dmypy and --use-fine-grained-cache, then inspect dmypy_server.py around find_reachable_changed_modules and line 768, where the traceback looks up pkg.nspkg in graph. Use the listed commands to verify the daemon no longer crashes on the second run and still reports the assignment error.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100