[mypyc] fix name generation for modules with similar full names by aatle · Pull Request #18001 · python/mypy (original) (raw)

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 argument names have "foo" and "foo.foo", all suffixes found for "foo" are also found for "foo.foo". This means that module foo has no unique suffixes, which currently causes an AssertionError.
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'?