Import of submodule shadowing parent module attribute fails under lazy_imports mode
Offen
Dieses Issue hat noch niemand übernommen.
interpreter-core
topic-lazy-imports
type-bug
- Vorherrschende Sprache
- Python
- Sterne
- 77.2k
- Forks
- 35.9k
- PR-Merge-Kennzahlen
- PR-Kennzahlen ausstehend
Beschreibung
Bug report
Bug description:
For this module structure:
└─ a/
├─ __init__.py # Contains a function foo()
└─ foo.py
This script passes on 3.14...
from a import foo
import a.foo
import types
assert isinstance(a.foo, types.ModuleType), type(a.foo)
And fails on 3.15 with lazy imports (python3.15 -X lazy_imports=all script.py):
Traceback (most recent call last):
File "/Users/jwalls/script.py", line 4, in <module>
assert isinstance(a.foo, types.ModuleType), type(a.foo)
~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: <class 'function'>
CPython versions tested on:
3.15
Operating systems tested on:
macOS
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Führen Sie zunächst das bereitgestellte module-layout-Skript mit Python 3.15 und -X lazy_imports=all aus und untersuchen Sie anschließend die Behandlung von Lazy-Imports, die an der Auflösung eines Submoduls beteiligt ist, das ein Parent-Attribut überschattet. Als erledigt gilt die Aufgabe, wenn die Assertion für a.foo ein ModuleType sieht, entsprechend dem Verhalten unter Python 3.14.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- python
- Bereich
- backend
- Issue-Typ
- Bug
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Aktivitätsstatus
- Ruhig
- Klarheit
- Größtenteils klar
- Anfängerfreundlichkeit
- 55/100