[New-bugs-announce] [issue46935] import of submodule polutes global namespace
Max Bachmann
report at bugs.python.org
Sat Mar 5 17:26:32 EST 2022
New submission from Max Bachmann <kontakt at maxbachmann.de>:
In my environment I installed the following two libraries:
```
pip install rapidfuzz
pip install python-Levenshtein
```
Those two libraries have the following structures:
rapidfuzz
|-distance
|- __init__.py (from . import Levenshtein)
|- Levenshtein.*.so
|-__init__.py (from rapidfuzz import distance)
Levenshtein
|-__init__.py
When importing Levenshtein first everything behaves as expected:
```
>>> import Levenshtein
>>> Levenshtein.
Levenshtein.apply_edit( Levenshtein.jaro_winkler( Levenshtein.ratio(
Levenshtein.distance( Levenshtein.matching_blocks( Levenshtein.seqratio(
Levenshtein.editops( Levenshtein.median( Levenshtein.setmedian(
Levenshtein.hamming( Levenshtein.median_improve( Levenshtein.setratio(
Levenshtein.inverse( Levenshtein.opcodes( Levenshtein.subtract_edit(
Levenshtein.jaro( Levenshtein.quickmedian(
>>> import rapidfuzz
>>> Levenshtein.
Levenshtein.apply_edit( Levenshtein.jaro_winkler( Levenshtein.ratio(
Levenshtein.distance( Levenshtein.matching_blocks( Levenshtein.seqratio(
Levenshtein.editops( Levenshtein.median( Levenshtein.setmedian(
Levenshtein.hamming( Levenshtein.median_improve( Levenshtein.setratio(
Levenshtein.inverse( Levenshtein.opcodes( Levenshtein.subtract_edit(
Levenshtein.jaro( Levenshtein.quickmedian(
```
However when importing rapidfuzz first it import `rapidfuzz.distance.Levenshtein` when running `import Levenshtein`
```
>>> import rapidfuzz
>>> Levenshtein
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Levenshtein' is not defined
>>> import Levenshtein
>>> Levenshtein.
Levenshtein.array( Levenshtein.normalized_distance( Levenshtein.similarity(
Levenshtein.distance( Levenshtein.normalized_similarity(
Levenshtein.editops( Levenshtein.opcodes(
```
My expectation was that in both cases `import Levenshtein` should import the `Levenshtein` module. I could reproduce this behavior on all Python versions I had available (Python3.8 - Python3.10) on Ubuntu and Fedora.
----------
components: Interpreter Core
messages: 414599
nosy: maxbachmann
priority: normal
severity: normal
status: open
title: import of submodule polutes global namespace
type: behavior
versions: Python 3.10, Python 3.8, Python 3.9
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue46935>
_______________________________________
More information about the New-bugs-announce
mailing list