You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix incremental issue with namespace packages (option 1) (#18907)
Fixes#12664
A root cause is there is this stateful `_update_ns_ancestors` thing in
`modulefinder`, so if things get called in the wrong order, you can get
incorrect results.
See also the logic in `all_imported_modules_in_file` where we've fixed
several bugs like this previously, like #13124 and #10937
As a result of (seemingly accidentally) reusing imports across modules,
we can end up in a situation where the namespace gets added as a
dependency to all other modules and so on the cached run we attempt to
find namespace before package, which does not work
I am not sure this `imports` code path is even needed, so I will open an
alternate PR, see #18908.
Relevant history:
- #6582
- #6179
I can't write a good test for this because it requires something in
site_packages, but here's a minimal repro:
```
set -eux
rm -rf repro
mkdir repro
cd repro
SITEPACK=env/site-packages
mkdir -p $SITEPACK
mkdir $SITEPACK/ruamel
mkdir $SITEPACK/ruamel/yaml
printf 'from ruamel.yaml.main import *' > $SITEPACK/ruamel/yaml/__init__.py
printf 'import ruamel.yaml' > $SITEPACK/ruamel/yaml/main.py
printf '' > $SITEPACK/ruamel/yaml/py.typed
printf 'import ruamel.yaml' > a.py
printf 'import a' > main.py
rm -rf .mypy_cache
PYTHONPATH=$SITEPACK mypy main.py
PYTHONPATH=$SITEPACK mypy main.py
```
0 commit comments