RSS Planet Python Notiz

RSS Planet Python

Die Webseite Planet Python ist eine Planet-Website, die Python-bezogene Inhalte von verschiedenen Quellen sammelt, darunter Blogs, Nachrichtenseiten und andere Online-Publikationen. Die Webseite bietet ein zentrales Portal für Einzelpersonen, um sich auf dem neuesten Stand zu halten mit den neuesten Entwicklungen in der Python-Programmierwelt. Der Inhalt auf der Seite umfasst Tutorials, Nachrichten, Projektankündigungen und Diskussionen zu verschiedenen Python-bezogenen Themen. Benutzer können die Seite besuchen, um sich über die Python-Gemeinschaft, neue Veröffentlichungen, Konferenzen und Best Practices im Umgang mit der Python-Programmiersprache auf dem neuesten Stand zu halten. Der Zweck der Webseite ist es, Python-bezogene Inhalte zu fördern und zu verbreiten, um so zum Wachstum und zur Entwicklung der Python-Gemeinschaft beizutragen.

Notizfaden

Die Reise zur Etablierung eines standardisierten Python-Lockfile-Formats, pylock.toml, erstreckte sich über vier Jahre und beinhaltete umfangreiche Diskussionen und Iterationen. Eine Lockdatei zielt darauf ab, alle Abhängigkeiten und ihre spezifischen Installationsmethoden präzise zu erfassen, wobei verschiedene Paketformate wie Wheels und Quellcode-Distributionen berücksichtigt werden. Die Definition, welche Abhängigkeiten benötigt werden und wann sie gelten, insbesondere bei optionalen Abhängigkeiten und Versionsspezifikationen, erwies sich als komplex. Diese Komplexität ergibt sich daraus, dass die Abhängigkeitsauflösung ein NP-vollständiges Problem ist, das durch den Wunsch nach einem menschenlesbaren, sicheren und effizienten Format noch verstärkt wird.Der Prozess begann 2019 mit informellen Diskussionen und entwickelte sich 2021 zu formelleren Vorschlägen wie PEP 665, der jedoch aufgrund seiner ausschließlichen Beschränkung auf Wheels scheiterte. Nachfolgende Einzelinitiativen im Jahr 2023 führten zur Entwicklung notwendiger Werkzeuge und eines Proof-of-Concept. Das Aufkommen von Tools wie uv im Jahr 2024 stellte neue Herausforderungen und Anforderungen dar, die weitere Überarbeitungen des Entwurfs von PEP 751 erforderlich machten.Uneinigkeiten über Multi-Use- versus Single-Use-Lockfiles und spezifische Funktionen führten zu erheblichen Verzögerungen und erforderten eine strikte Einhaltung von Feedback-Zeitplänen. Nach zahlreichen Diskussionen und Kompromissen zwischen Schlüsselprojekten wie uv, Poetry und PDM wurde PEP 751 schließlich am 31. März 2025 angenommen. Diese Errungenschaft markiert den Höhepunkt jahrelanger intensiver Debatten, wobei die frühe Übernahme durch PDM, uv und pip die Lebensfähigkeit des Formats demonstriert. Der Autor äußert den Wunsch, sich nach bedeutenden Beiträgen zu Packaging-Standards anderen Bereichen der Python-Entwicklung zuzuwenden.
CdXz5zHNQW_zjIPgB1naX.png
Der Malcolm Tredinnick Memorial Prize 2025 wurde an Tim Schilling verliehen, einen unermüdlichen Gemeindeführer, der die Werte der Django-Community verkörpert. Tim ist Mitbegründer von Djangonaut Space, wo er viele Menschen ermutigt hat, ihre ersten Schritte als Mitwirkende zu tun. Er ist Mitglied des Django Steering Council, einer der Gründer von Django Commons und ein aktives Mitglied von DEFNA, das DjangoCon US unterstützt. Tim ist bekannt für sein durchdachtes Feedback, die Hervorhebung der Arbeit anderer und die Ermutigung von Menschen, Führungsrollen zu übernehmen. Er hat von Community-Mitgliedern Lob für seine unterstützende und respektvolle Art erhalten und dafür, Räume zu schaffen, in denen Neulinge gedeihen können. Zitate von Community-Mitgliedern, darunter Felipe Villegas, Raffaella, Abe Hanoka und Lilian, unterstreichen Tims Engagement, Respekt und Unterstützung für andere. Tims Arbeit in der Community hat einen bedeutenden Einfluss gehabt, und er wird weithin als natürliche Führungspersönlichkeit angesehen, die die Werte der Django-Community verkörpert. Der Malcolm Tredinnick Memorial Prize wird jährlich verliehen, um Einzelpersonen zu würdigen, die bedeutende Beiträge zur Django-Community geleistet haben. Der Preis ist ein Zeugnis für das Erbe von Malcolm Tredinnick, der ein Gemeinschaftsgefühl und Großzügigkeit im Django-Projekt gefördert hat. Die Django-Community freut sich, Tims Leistungen anzuerkennen und ist dankbar für seine Beiträge zur Community.
CdXz5zHNQW_oGBXealCqC.jpeg
David Guillots Vortrag auf der DjangoCon Europe hob die Fähigkeit von HTMX hervor, dynamische Webanwendungen mit deutlich reduziertem Code zu erstellen. Diese Beobachtung löste einen Trend aus, bei dem Teams feststellten, dass die Umstellung von Single-Page-Apps auf Multi-Page-Hypermedia-Apps die Größe der Codebasis drastisch reduzierte und die Benutzererfahrung verbesserte. Der Autor erlebte ähnliche Vorteile, nachdem er von HTMX und AlpineJS zu Datastar wechselte. Ein wichtiger Knackpunkt, mit dem der Autor konfrontiert war, war die Verwaltung der Synchronisierung separater Bibliotheken wie HTMX und AlpineJS, was zu komplexem Debugging und erhöhtem Code führte. Datastar bot eine einheitliche Lösung, die die Komponentensynchronisierung mit geringerem Platzbedarf und leichter verständlichem Code handhabt. Der Autor schätzt die leichtere API von Datastar, die im Vergleich zu HTMX weniger Attribute für die gewünschten Ergebnisse benötigt. Datastar ist eine serverseitig gesteuerte Bibliothek, die darauf abzielt, Webanwendungen live zu aktualisieren, indem sie den Server Änderungen diktieren lässt, im Gegensatz zu HTMX, das Front-End-Logik in HTML-Attribute einbettet. Dieser serverzentrierte Ansatz hält die Aktualisierungslogik konsolidiert und verbessert die Wartbarkeit. Datastar ermöglicht gleichzeitige Aktualisierungen mehrerer Komponenten, selbst innerhalb einer synchronen Funktion, wodurch komplexe UI-Interaktionen vereinfacht werden. Die Bibliothek setzt auf webnative Funktionen wie Server-Sent Events (SSE) für Echtzeit-Updates, die auf Push-Basis erfolgen, wodurch komplexe WebSockets oder Polling überflüssig werden. Die Philosophie von Datastar betont die Reduzierung der Komplexität und die Nutzung von Tools wie Webkomponenten für lokalisiertes Verhalten. Der Autor ist begeistert von dem Potenzial von Datastar für ehrgeizige Projekte und nennt Beispiele für Hochleistungs-Echtzeit-Anwendungen, die damit erstellt wurden. Obwohl sich der Autor noch in der Entdeckungsphase befindet, findet er Datastar leistungsstark für Echtzeit-Updates und hat das Gefühl, seit dem Wechsel von HTMX erheblich profitiert zu haben.
Python 3.14 wurde veröffentlicht und bringt bedeutende neue Funktionen und Verbesserungen mit sich. Die Abwärtskompatibilität wird weitgehend beibehalten, obwohl einige Komponenten der Standardbibliothek entfernt oder veraltet sind. Ein wichtiges Highlight ist der offiziell unterstützte, aber optionale, freigewindete Build von Python, der in 3.13 experimentell war. Zusätzlich ist ein experimenteller Just-in-Time (JIT)-Compiler jetzt für MacOS- und Windows-Binärdateien verfügbar, obwohl er noch nicht für die Produktion empfohlen wird und nicht mit freigewindeten Builds funktioniert. GPG-Signaturen werden nicht mehr bereitgestellt; Benutzer sollten jetzt Sigstore-Verifizierungsmaterialien verwenden.Der Interpreter selbst erfährt Verbesserungen wie die verzögerte Auswertung von Annotationen, was eine bessere Leistung und Benutzerfreundlichkeit für Typ-Hinweise ermöglicht. Mehrere Interpreter können jetzt über das Modul concurrent.interpreters der Standardbibliothek verwendet werden, was ein menschenfreundliches Nebenläufigkeitsmodell und echtes Multi-Core-Parallelismus bietet. Vorlagen-Zeichenkettenliterale, oder t-strings, wurden für die benutzerdefinierte Zeichenkettenverarbeitung eingeführt und geben Objekte zurück, die statische und interpolierte Teile darstellen.Die Standardbibliothek enthält jetzt Zstandard-Komprimierungsunterstützung, zusätzlich zu den vorhandenen Zip- und Tar-Archivierungsfunktionen. Asyncio-Introspektion ist jetzt durch neue Befehlszeilen-Tools möglich, was bei der Fehlersuche in asynchronen Programmen hilft. Die standardmäßige interaktive Shell bietet Syntaxhervorhebung und verbesserte Import-Autovervollständigung. Insgesamt verspricht Python 3.14 Leistungssteigerungen und bietet einen Rahmen für zukünftige Geschwindigkeitsverbesserungen.
CdXz5zHNQW_vg9N64QZvD.jpeg
Nintendo Classics bietet Zugriff auf Hunderte von Retro-Spielen von verschiedenen Nintendo- und Sega-Konsolen. Diese Sammlung ist im Nintendo Switch Online-Abonnement enthalten. Das Preis-Leistungs-Verhältnis ist erheblich, insbesondere im Vergleich zu den Kosten für den Erwerb physischer Kopien dieser Spiele.Ein Datensatz wurde aus Wikipedia zusammengestellt und mit Pricecharting verknüpft, um den Marktwert dieser Retro-Titel in physischer Form zu schätzen. Diese Daten liefern aggregierte Preisinformationen und nicht individuelle Spielpreise und werden aktualisiert, wenn neue Spiele hinzugefügt werden. In Nintendo Classics sind acht verschiedene Plattformen vertreten, jede mit ihrer eigenen Spielsammlung und ihrem Gesamtwert. Über alle Plattformen hinweg übersteigt der geschätzte Wert der Spiele in Nintendo Classics fünfzehntausend Dollar.Es gibt verschiedene Stufen von Nintendo Classics mit unterschiedlichen Hardware- und Nintendo Switch Online-Abonnementanforderungen. Einige Sammlungen erfordern zusätzliche Hardware wie ein Virtual Boy-Headset oder eine Switch 2-Konsole. Spiele werden im Allgemeinen in Stapeln zu Nintendo Classics hinzugefügt, wobei nach einer anfänglich großen Veröffentlichung für eine Plattform eine langsamere schrittweise Hinzufügung im Laufe der Zeit erfolgt. Eine beträchtliche Anzahl wertvoller und seltener Spiele ist in der Sammlung verfügbar. Publisher außerhalb von Nintendo und Sega tragen Spiele zu Nintendo Classics bei und geben Hinweise auf mögliche zukünftige Ergänzungen. Bisher wurde nur ein Spiel aus der Sammlung entfernt, aber in Zukunft könnten weitere Entfernungen erfolgen.
Die Softwarequalitätswerkzeuge von Python entwickeln sich sowohl mit schneller Konsolidierung als auch mit tiefer Spezialisierung weiter. Ruff hat erfolgreich viele Linter und Formatierer vereinheitlicht und einen Hochleistungsstandard für den Code-Stil geschaffen. Andere wichtige Werkzeuge bleiben jedoch in isolierten Silos und konzentrieren sich auf Architektur- und Strukturmetriken. Diese spezialisierten Werkzeuge wie import-linter, tach und Komplexitätsrechner befassen sich mit der Wartbarkeit des Codes und technischen Schulden, die über einfaches Linting hinausgehen. Der Erfolg von Ruff ermöglicht nun eine breitere Diskussion über die Code-Struktur, nicht nur über die Syntax. Spezialisierte Werkzeuge sind entscheidend für die Identifizierung und Minderung technischer Risiken, die Verhinderung von Verfall und die Reduzierung von Wartungskosten. Metriken von Komplexitäts- und Kohäsionswerkzeugen dienen als Frühwarnsysteme für technische Schulden. Die Kombination von Daten aus diesen Werkzeugen kann mehrdimensionale Risikobewertungen erstellen, die problematische Codekomponenten hervorheben. Diese prädiktive Risikobewertung, validiert anhand historischer Daten, kann Refactoring-Bemühungen priorisieren. Die Vernetzung der Maintainer dieser verschiedenen Werkzeuge kann deren Sichtbarkeit und Nachhaltigkeit erhöhen. Eine gemeinsame Diskussion kann eine breitere Akzeptanz fördern und neue Mitwirkende anziehen, um die Langlebigkeit dieser wertvollen Projekte zu gewährleisten.
CdXz5zHNQW_NqUVTOcpDB.png
Der Autor testete "beweisbar korrekte" Implementierungen der leftpad-Funktion mit verschiedenen Eingaben, darunter Unicode-Zeichen und Zeichen mit Diakritika. Ziel war es zu sehen, ob diese formal verifizierten Implementierungen den vom Autor erwarteten Ausgaben entsprechen würden. Die Methodik umfasste die Auswahl zufälliger Eingaben und die manuelle Bestimmung der gewünschten Ausgabe.Zu den getesteten Implementierungen gehörten Liquid Haskell, Java, Lean4 und Rust. Zum Vergleich wurde auch eine von ChatGPT generierte "vibe-coded" Swift-Implementierung aufgenommen. Die Einrichtung und Ausführung einiger dieser Implementierungen erwies sich aufgrund von Unterschieden in der Handhabung von String-Eingaben als schwierig.Die Ergebnisse zeigten erhebliche Abweichungen zwischen den Implementierungen und den Erwartungen des Autors, wobei Rust besonders schlecht abschnitt. Mehrere Implementierungen konnten Eingaben mit komplexen Unicode-Zeichen oder Zeichen, die aus mehreren Code-Punkten bestehen, nicht korrekt auffüllen. Der Autor stellt fest, dass selbst unter den "beweisbar korrekten" Implementierungen nur eine Eingabe (résumé) von allen außer Rust korrekt behandelt wurde.Der Kern des Problems liegt in der Definition eines "Zeichens" und der Art und Weise, wie Programmiersprachen Strings handhaben. Unicode definiert Code-Punkte, aber diese entsprechen nicht immer direkt dem, was ein Benutzer als einzelnes Zeichen wahrnimmt. Konzepte wie kombinierende Zeichen und verschiedene Unicode-Darstellungen (vorkomponiert vs. zerlegt) erhöhen die Komplexität.Darüber hinaus verwenden verschiedene Programmiersprachen unterschiedliche interne String-Darstellungen und Abstraktionen. Sprachen wie Java und Javascript verwenden UTF-16, was zu Problemen führen kann, wenn Code-Punkte außerhalb der Basic Multilingual Plane auftreten. Haskell, Lean und Python behandeln Strings im Allgemeinen als Sequenzen von Code-Punkten.Rust-Strings sind UTF-8-kodierte Code-Punkte, und Swift abstrahiert Strings zu vom Benutzer wahrgenommenen Zeichen. Diese Unterschiede in der Handhabung von Unicode und internen Darstellungen erklären, warum die leftpad-Implementierungen unterschiedliche Ausgaben lieferten. Der Autor kommt zu dem Schluss, dass die Komplexität aus der Mehrdeutigkeit der "Zeichenlänge" und den vielfältigen Möglichkeiten, wie Programmiersprachen die String-Handhabung implementieren, resultiert.