python / python/mypy

Incorrect diagnostic on missing submodule

Aperta
#17,846 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

bug
Lingua principale
Python
Stelle
20.6k
Fork
3.3k
Metriche di merge delle PR
Metriche PR in attesa

Descrizione

Bug Report

When untyped module exists but submodule does not, mypy reports that submodule is installed.

To Reproduce

$ pip install fabric
import fabric
from fabric.not_exists import something
$ python3 test.py
Traceback (most recent call last):
  File "/media/sf_d/WWPass/git/spm/test.py", line 2, in <module>
    from fabric.not_exists import something
ModuleNotFoundError: No module named 'fabric.not_exists'

$ mypy test.py
test.py:1:1: error: Skipping analyzing "fabric": module is installed, but missing library stubs or py.typed marker  [import-untyped]
    import fabric
    ^
test.py:2:1: error: Skipping analyzing "fabric.not_exists": module is installed, but missing library stubs or py.typed marker  [import-untyped]
    from fabric.not_exists import something
    ^
test.py:2:1: note: See https://mypy.readthedocs.io/en/stable/running_mypy.html#missing-imports
Found 2 errors in 1 file (checked 1 source file)

Expected Behavior
Error in line 2 should be saying that fabric.not_exists does not exist.

Actual Behavior
Error in line 2 says that fabric.not_exists is installed, which it not true and misleading.

Your Environment

$ mypy --version
mypy 1.11.2 (compiled: yes)

$ python3 --version
Python 3.12.3

$ pip list | grep fabric
fabric 3.2.2

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Riproduci il report con il test.py mostrato, un pacchetto fabric installato e non tipizzato e l’importazione di fabric.not_exists. Inizia tracciando la risoluzione degli import di mypy e la diagnostica relativa agli stub mancanti per i moduli annidati; il lavoro è completato quando il pacchetto esistente continua a segnalare l’avviso attuale, mentre il sottomodulo mancante riceve un errore chiaro che indica che non esiste.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
python
Ambito
devtools
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.