python / python/mypy

Split `import-untyped` into two different error codes depending on whether stubs are available to install

Offen
#18,661 2 Kommentare 1 Reaktion 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
PR-Merge-Kennzahlen
PR-Kennzahlen ausstehend

Beschreibung

Feature

Implement separate error codes for (1) untyped imports without stubs available and (2) untyped imports with stubs available.

Pitch

As explained under Missing imports in the docs, there are two different categories of untyped imports. Currently, both of these categories are grouped under the import-untyped error code. For example:

  1. No stubs available (documented here):

    error: Skipping analyzing "boto3": module is installed, but missing library stubs or py.typed marker  [import-untyped]
    
  2. Stubs available (documented here):

    error: Library stubs not installed for "requests"  [import-untyped]
    note: Hint: "python3 -m pip install types-requests"
    

I propose that these categories should fall under different error codes, either by changing the error code for both of these categories (and removing the import-untyped error code) or by changing the error code for only one of the categories, and leaving the other as import-untyped. For example, the second category could fall under a new import-untyped-stubs-available code.

This would allow configuring mypy to handle these two categories differently. For example, I would like to always ignore errors for untyped third-party libraries without stubs available, but always show errors for libraries with stubs available, so that I know which stub packages I should add to my project dependencies. The available solutions for achieving this all have drawbacks:

  • Using disable_error_code = import-untyped ignores both of the above categories, so you won't be notified about libraries with available stubs.
  • Using the --install-types option as part of CICD workflows is brittle and not recommended (see https://github.com/python/mypy/issues/17852), so doesn't scale well when maintaining many different repositories where running --install-types locally for every project on a regular basis is not feasible.
  • Ignoring the import-untyped error code for individual imports is again inconvenient when managing many different projects with many third-party dependencies. Also, if you ignore the import-untyped error code for a particular import and then the library later adds type stubs, mypy won't notify you that there is a stub package available to install.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne mit der verlinkten Dokumentation „Missing imports“ und verfolge, wo die beiden gezeigten import-untyped-Diagnosen und ihre Fehlercodes erzeugt werden. Prüfe die bestehende Fehlercode-Konfiguration und die zugehörigen Tests und definiere anschließend separate Codes, deren Verhalten nicht verfügbare Stubs von installierbaren Stubs unterscheidet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.