[mypyc] fix name generation for modules with similar full names #18001
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 mypyc/mypyc#1071
Adds a test to cover this case
Building certain package layouts now succeeds instead of failing. The behavior for all package layouts not affected by the error is unchanged.
In
namegen.make_module_translation_map(names)
, if argumentnames
have"foo"
and"foo.foo"
, all suffixes found for"foo"
are also found for"foo.foo"
. This means that modulefoo
has no unique suffixes, which currently causes anAssertionError
.The fix forces a module to take the last, fullest suffix if none are unique. It is guaranteed that no other module will also take the same suffix because they either will have a unique suffix to take, or they will take the fullest suffix for their name which is always going to be different.
P.S. 'suffix' or 'prefix'?