Pytype

Pytype ist ein statisches Analysewerkzeug, das Typen aus eurem Python-Code ableitet ohne dass Typanmerkungen notwendig sind. Es kann jedoch auch im Code stehende Type Annotations erzwingen. Obwohl Annotationen für Pytype optional sind, werden sie geprüft und angewendet, sofern sie vorhanden sind. Die von Pytype erzeugten Typ-Annotationen werden in eigenständigen .pyi-Dateien gespeichert, die mit merge-pyi wieder in den Python-Code eingebunden werden können. Schließlich markiert es häufige Fehler wie falsch geschriebene Attributnamen oder Funktionsaufrufe und vieles mehr, auch über Dateigrenzen hinweg.

Anforderungen

  • Alle gängigen Linux-Distributionen werden unterstützt

  • macOS ≥ 10.7 und Xcode ≥ 8

  • Windows mit WSL. Zusätzlich müssen folgende Bibliotheken installiert werden:

    $ sudo apt install build-essential python3-dev libpython3-dev
    

Installation

Pytype kann einfach installiert werden mit

$ uv add pytype

Anschließend kann die Installation überprüft werden mit

$ uv run pytype file_or_directory

Konfiguration

Für ein Python-Paket könnt ihr Pytype einrichten indem ihr eine pytype.cfg-Datei anlegt mit

$ uv run pytype --generate-config pytype.cfg

Diese beginnt dann z.B. mit

# NOTE: All relative paths are relative to the location of this file.

[pytype]

# Space-separated list of files or directories to exclude.
exclude =
    **/*_test.py
    **/test_*.py

# Space-separated list of files or directories to process.
inputs =
    .

Nun könnt ihr die Konfigurationsdatei euren Anforderungen entsprechend ampassen.

Zusätzliche Skripte

annotate-ast

in-progress Type-Annotator für ASTs

merge-pyi

Zusammenführen von Typinformationen aus einer .pyi- in eine Python-Datei

pytd-tool

Parser für .pyi-Dateien

pytype-single

Debugging-Tool für Pytype-Entwickler, das eine einzelne Python-Datei unter der Annahme analysiert, dass für alle Abhängigkeiten bereits .pyi-Dateien generiert wurden

pyxref

cross-References-Generator