python / python/mypy

`type: ignore` comments on imports of external package lead to `[unused-ignore]` error codes every other run

Ouverte
#20,105 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

bug topic-configuration topic-incremental
Langage dominant
Python
Étoiles
20.6k
Forks
3.3k
Métriques de merge des PR
Métriques de PR en attente

Description

Bug Report

When running mypy with --warn-unused-ignore --no-namespace-packages --warn-unused-ignores --ignore-missing-imports, putting a type: ignore[attr-defined] on an import will have mypy report an Unused "type: ignore" comment [unused-ignore] every other run, unless the cache is being cleared between runs.

To Reproduce

from opentelemetry.instrumentation.asgi import (  # type: ignore[attr-defined]
    OpenTelemetryMiddleware,
)

(Since this only seems to work with external packages, some setup is required)

  1. Run pip install opentelemetry-instrumentation-asgi opentelemetry-distro
  2. Add the code snippet below to file.py
  3. Run mypy --warn-unused-ignore --no-namespace-packages --warn-unused-ignores --ignore-missing-imports file.py: Observer no error
  4. Run mypy --warn-unused-ignore --no-namespace-packages --warn-unused-ignores --ignore-missing-imports file.py: Observe an [unused-ignore] error
  5. Run mypy --warn-unused-ignore --no-namespace-packages --warn-unused-ignores --ignore-missing-imports file.py: Observer no error
  6. Repeat the cycle as many times as you like :)

When removing the cache between runs, all works well, so I suspect it has something to do with caching.

Your Environment

  • Mypy version used: 1.18.2, main
  • Mypy command-line flags: --warn-unused-ignore --no-namespace-packages --warn-unused-ignores --ignore-missing-imports
  • Mypy configuration options from mypy.ini (and other config files): -
  • Python version used: 3.13.7

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Reproduisez le résultat alterné avec file.py en utilisant la commande mypy indiquée et l’importation de opentelemetry, puis suivez le traitement lié au cache de l’état de unused-ignore. Ajoutez un test de régression pour les exécutions répétées depuis le cache ; le travail est terminé lorsque la commande ne signale systématiquement aucune erreur [unused-ignore] parasite.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
python
Domaine
devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
45/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.