Respect sys.platform platform check assertion inside functions

Offen
#9,025 5 Kommentare 3 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
38/100
Issue-Typ
Feature
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
python
Bereich
devtools

Rechercherichtung

Beginne damit, das Beispiel auf einer Nicht-Windows-Plattform zu reproduzieren, und lies die verlinkte mypy-Dokumentation zu sys.platform-Prüfungen. Verfolge die bestehende Behandlung von Assertions auf oberster Ebene und füge dann eine Regressionstestabdeckung für eine Assertion innerhalb einer Funktion hinzu. Überprüfe, dass der reine Windows-Aufruf unter macOS oder Linux typgeprüft wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

feature priority-1-normal

This is a feature request

From the docs
https://mypy.readthedocs.io/en/stable/common_issues.html#python-version-and-system-platform-checks

More specifically, mypy will understand the use of sys.version_info and sys.platform checks
within if/elif/else statements.

and

As a special case, you can also use one of these checks in a top-level (unindented) assert; this makes mypy skip the rest of the file.

It would be nice if this kind of code would also typecheck on mac/linux.
Currently the option is to refactor such that you can define the entire function within an if sys.platform == "win32"

class A:
   def func_on_win_only() -> str:
      assert sys.platform == "win32"
      return sys.getwindowsversion()
Vorherrschende Sprache
Python
Sterne
20.6k
Forks
3.3k
Ø Merge
1 T. 18 Std.
Gemergte PRs (30 T.)
54

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus python/mypy

Alle Issues in python/mypy

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

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