Fix incremental issue with namespace packages (option 1) #18907
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #12664
A root cause is there is this stateful
_update_ns_ancestors
thing inmodulefinder
, 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 #10937As 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:
I can't write a good test for this because it requires something in site_packages, but here's a minimal repro: