Python 3.15a7 führt faule Importe (lazy imports) gemäß PEP 810 ein, um die Startzeiten von CLI-Anwendungen und speicherintensiven Bibliotheken zu beschleunigen. Da bestehende Bibliotheken angepasst werden müssen, entwickelte der Autor das Tool flake8-lazy, welches mithilfe von KI-Assistenten wie GitHub Copilot in Rekordzeit erstellt wurde. Das Tool automatisiert das Auffinden und Verwalten nicht direkt benötigter Importe, was zu Geschwindigkeitssteigerungen von bis zu 3x bei Befehlen wie --help führt.
Wichtigste Punkte
Lazy Imports in Python 3.15: Ermöglicht durch PEP 810; Importe werden erst beim tatsächlichen Zugriff ausgeführt, wodurch ungenutzte Module (z. B. bei --help-Aufrufen) nicht geladen werden.
Syntax-Optionen: Unterstützt neue Schlüsselwörter (lazy import) sowie abwärtskompatible Deklarationen über __lazy_modules__.
Das Tool flake8-lazy: Ein CLI-Tool und Flake8-Plugin (aktuell Version 0.6.0), das Fehlercodes (1xx bis 4xx) zur Erkennung fehlender oder fehlerhafter fauler Importe bereitstellt.
Leistungssteigerungen: Messungen mit hyperfine ergaben Geschwindigkeitsvorteile von 2x bei flake8-lazy selbst und 3x bei cibuildwheel und repo-review.
KI-gestützte Entwicklung: Über 95 % des Codes von flake8-lazy wurden durch KI (GPT-5.3-codex und Claude Sonnet 4.6) generiert, was die Entwicklungszeit um das 5- bis 7-fache verkürzte.
Diskussions-Highlights
Speicherbedarf von Bibliotheken: Diskutanten loben faule Importe besonders für speicherintensive Bibliotheken wie SciPy, da bisher oft kleinere Hilfsfunktionen separat vendorisiert werden mussten.
Umgang mit optionalen Abhängigkeiten: Es entbrannte eine Diskussion über das Abfangen von ModuleNotFoundError (z. B. bei optionalen Modulen wie Numba). Einige Kommentatoren argumentieren, dass das Programm bei fehlenden Abhängigkeiten direkt abstürzen sollte, während andere nach Best Practices für optionale Pakete fragen.
Semantische Bedeutung von Laxheit: Ein Teilnehmer merkt an, dass das Erzwingen von Laxheit für zirkuläre Importe kritisch gesehen wird, da zirkuläre Importe meist ein Zeichen für eine schlechte Code-Architektur sind.
Kritik an neuer Syntax: Ein Nutzer kritisiert die Einführung eines komplett neuen Schlüsselworts für eine vergleichsweise minoritäre Änderung an einem bestehenden Konzept als unnötig.
Glossar
PEP 810: Python Enhancement Proposal 810, das den offiziellen Standard für faule Importe in CPython spezifiziert.
CLI (Command Line Interface): Befehlszeilenschnittstelle zur Interaktion mit Programmen über Textbefehle.
Bytecode: Zwischencode, in den Python-Quelltext vor der Ausführung kompiliert wird.
Flake8: Ein populäres statisches Analyse-Tool (Linter) für Python-Quellcode zur Prüfung auf Stil- und Syntaxfehler.
Ruff: Ein extrem schneller, in Rust geschriebener Linter und Code-Formatter für Python.
Hyperfine: Ein in Rust geschriebenes Kommandozeilen-Werkzeug zum präzisen Benchmarking von Befehlen.
Vendorisieren (Vendoring): Das Kopieren von externem Quellcode direkt in das eigene Repository, um Abhängigkeiten zu kontrollieren.
Cibuildwheel: Ein Tool zum Bauen von Python-Binary-Wheels für verschiedene Plattformen und Architekturen in CI/CD-Pipelines.