PEP 729 – Prozess für die Governance von Typen
- Autor:
- Jelle Zijlstra <jelle.zijlstra at gmail.com>, Shantanu Jain <hauntsaninja at gmail.com>
- Discussions-To:
- Discourse thread
- Status:
- Aktiv
- Typ:
- Prozess
- Thema:
- Governance, Typisierung
- Erstellt:
- 19. Sep 2023
- Post-History:
- 04. Okt 2023, 20. Sep 2023
- Resolution:
- 20. Nov 2023
Inhaltsverzeichnis
Zusammenfassung
Dieses PEP schlägt eine neue Methode zur Steuerung des Python-Typsystems vor: ein Rat, der für die Wartung und Weiterentwicklung des Python-Typsystems verantwortlich ist. Der Rat wird eine Spezifikation und eine Konformitäts-Testsuite pflegen und wird zunächst vom Python Steering Council ernannt.
Motivation
Das Python-Typsystem wurde vor fast zehn Jahren durch PEP 484 geschaffen. Das Typsystem wird inzwischen weithin genutzt, und Typisierung ist zu einem wichtigen Werkzeug für das Schreiben von gut wartbarem Python-Code geworden. Viele Änderungen wurden am Typsystem vorgenommen, um mehr Anwendungsfälle abzudecken und die Benutzerfreundlichkeit zu verbessern. Es wurden mehrere Typ-Checker erstellt, jeder mit seinen eigenen Stärken. Die Syntax für Typannotationen hat mehrere bedeutende Innovationen im Python-Ökosystem vorangetrieben, wie das beliebte dataclasses-Modul, Laufzeit-Typüberprüfung und Validierung durch Pakete wie Pydantic und statische Kompilierung durch Tools wie mypyc.
Mit dem Wachstum des Typsystems sind jedoch mehrere miteinander verbundene Probleme mit der aktuellen Verwaltung des Typsystems offensichtlich geworden.
PEPs sind die einzige Spezifikation
Das Python-Typsystem wurde ursprünglich durch ein PEP (PEP 484) geschaffen, und Änderungen am Typsystem werden immer noch durch PEPs vorgenommen. Die Spezifikation für das Python-Typsystem, soweit eine existiert, besteht aus dieser Reihe von PEPs. Aber Standards Track PEPs sind nicht als lebende Dokumente oder Spezifikationen gedacht; sie sind Änderungsvorschläge.
Ein Beispiel kann das Problem hier verdeutlichen. Etwa zur gleichen Zeit wie die Einführung des typing-Moduls durch PEP 484 führte PEP 3156 das asyncio-Modul ein, eine weitere bedeutende Neuerung, die maßgeblich zum Erfolg von Python 3 beigetragen hat. Beide Module haben sich seit ihrer Einführung stark weiterentwickelt und Änderungen am Kern der Sprache inspiriert.
Jedoch unterscheiden sich asyncio und typing in einem wesentlichen Punkt: ein Benutzer, der asyncio verwendet, interagiert nur mit der Standardbibliothek selbst, während ein Benutzer von typing auch ein externes Werkzeug, den Typ-Checker, berücksichtigen muss. Die Python-Sprachreferenz behandelt die Symbole im Typing-Modul, aber sie geht nicht (und sollte nicht) ins Detail darauf eingehen, wie das vollständige Typsystem von Typ-Checkern interpretiert werden soll. Dieses Material existiert derzeit nur in den PEPs.
Dieses Problem teilt sich das Packaging-Ökosystem, das versucht, es durch die Pflege einer separaten Reihe von PyPA-Spezifikationen zu lösen.
Es ist schwierig, die Spezifikation weiterzuentwickeln
Da die PEPs die einzige Spezifikation sind, die wir haben, würde alles, was als Änderung der Spezifikation angesehen werden könnte, theoretisch eine neue PEP erfordern. Aber das ist oft ein zu umständlicher Prozess für eine kleine Änderung. Manchmal werden Änderungen direkt an alten PEPs vorgenommen, aber das widerspricht der Idee, dass akzeptierte und implementierte PEPs historische Dokumente werden, die nicht mehr geändert werden sollten.
Einige konkrete Beispiele sind
- PEP 484 besagt ausdrücklich, dass
typing.NoReturnnicht in Argumentannotationen verwendet werden kann. Nichtsdestotrotz haben Typ-Checker die Verwendung schon lange akzeptiert. - Eine Diskussion von 2023 stellte fest, dass die Beschreibung von partiellen Stubs in PEP 561 unklar ist und große Typ-Checker sie nicht genau wie spezifiziert implementiert haben.
- Das weit verbreitete Drittanbieterpaket
typing_extensionsbietet Backports neuer Typsystem-Funktionen. Typ-Checker sollen Symbole in diesem Modul genauso behandeln wie Symbole intyping, aber dies ist in keiner der PEPs ausdrücklich spezifiziert.
Das Typsystem ist unterdefiniert
Während die PEPs eine Spezifikation bieten, sind sie oft nicht ausreichend präzise (manchmal absichtlich). Dies gilt insbesondere, da die kombinatorische Komplexität des Typsystems zugenommen hat.
Es liegt an einzelnen Typ-Checkern, zu entscheiden, wie mit unterdefinierten Bereichen umgegangen wird. Wenn Typ-Checker informell koordinieren, entstehen De-facto-Standards, die nirgendwo klar aufgezeichnet sind, was das Typsystem für neue Benutzer weniger zugänglich macht. Zum Beispiel:
- Wie die `@overload`-Abstimmung funktioniert
- Wie
ParamSpecmit Methoden funktionieren soll mit Methoden - Das Konzept von rekursiven Aliassen
- Semantik der Variableninitialisierung
- Erreichbarkeitssemantik von Annotationen für
__exit__ - Symbol-Sichtbarkeit
- Verwendung von NoReturn zur Exhaustivitätsprüfung
Der Steering Council ist nicht gut positioniert, um die oben genannten Probleme zu lösen
Der SC hat die gesamte Sprache in seinem Zuständigkeitsbereich und ist nicht gut positioniert, um Entscheidungen zu treffen, die sich ausschließlich auf das Typsystem beziehen – allein schon, weil sie neben ihren anderen Aufgaben keine Zeit haben, sich mit Typsystem-Arkana zu befassen. Dies ähnelt im Geiste den Gründen, warum der Steering Council manchmal PEP-Delegationen nutzt.
Zustimmungen
Dieses PEP wurde von den Maintainern aller großen Typ-Checker unterstützt, darunter Rebecca Chen (pytype), Eric Traut (Pyright) und privat von den Maintainern von mypy und Pyre.
Spezifikation
Wir schlagen die Einrichtung einer neuen Gruppe vor, des Typing Council. Diese Gruppe wird für die Entwicklung und Wartung des Python-Typsystems und für die Lösung der oben genannten Probleme zuständig sein.
Der Abschnitt „Betrieb und Prozess“ beschreibt, wie diese Gruppe arbeiten und verwaltet werden würde.
Der interessantere Abschnitt „Projekte“ beschreibt Lösungen für die oben genannten Probleme, die der Typing Council betreuen könnte.
Mandat
Das Mandat des Typing Council ist es, sicherzustellen, dass das Python-Typsystem
- Nützlich: Das Typsystem sollte gängige Anwendungsfälle bedienen. Wie in PEP 484 identifiziert, ist der primäre Anwendungsfall die statische Analyse, aber es gibt andere, wie Laufzeit-Typüberprüfung, statische Kompilierung, IDE-Unterstützung und Dokumentation. Der Typing Council sollte all diese Anwendungsfälle bei Entscheidungen berücksichtigen und offen dafür sein, zusätzliche Anwendungsfälle zu unterstützen, wenn sie auftreten.
- Benutzbar: Das Typsystem sollte für Python-Entwickler einfach zu verwenden sein. Es sollte ergonomisch sein, gut typisierten Python-Code zu schreiben, der von Typ-Checkern akzeptiert wird. Es sollte eine gute Dokumentation für das Typsystem geben.
- Stabil: Mit zunehmender Reife des Typsystems sollten Benutzer darauf vertrauen können, dass ihr typisierter Code weiterhin funktioniert und sie ihr mentales Modell für das Typsystem vertrauen können. Änderungen sollten sorgfältig und so vorgenommen werden, dass Störungen minimiert werden. Dennoch sollte sich das Typsystem weiterentwickeln können, und es ist nicht sinnvoll, dieselben Kompatibilitätsrichtlinien für das Verhalten von Typ-Checkern wie für Python selbst zu verwenden. Selbstverständlich folgt die Existenz und das Laufzeitverhalten von Objekten im
typing-Modul der Standard-Kompatibilitätsrichtlinie von Python in PEP 387.
Betrieb und Prozess
Der Rat würde aus drei bis fünf Mitgliedern bestehen, die sich aus prominenten Community-Mitgliedern zusammensetzen, wie z. B. Python-Kernentwicklern und Maintainern von wichtigen Typ-Checkern. Die Mitglieder sollten Personen umfassen, die mit einer Vielzahl von Projekten im Zusammenhang mit Typüberprüfung verbunden sind, was Typ-Checker, CPython, typeshed oder andere Projekte einschließen kann.
Die anfänglichen Mitglieder des Rates sind
- Eric Traut (Pyright; Autor von PEP 647, PEP 681 und PEP 695)
- Guido van Rossum (Kernentwickler; Autor von PEP 484 und PEP 526)
- Jelle Zijlstra (Kernentwickler; typeshed; pyanalyze; Autor von PEP 688 und PEP 702)
- Rebecca Chen (pytype)
- Shantanu Jain (Kernentwickler; typeshed; mypy)
Die aktuelle Mitgliedschaft des Rates ist im Repository python/typing-council verzeichnet.
Es gibt keine Amtszeitbegrenzung für Ratsmitglieder. Ratsmitglieder können ihre Position jederzeit niederlegen. Es wird erwartet, dass jedes Mitglied höchstens fünf aufeinanderfolgende Jahre im Amt ist, bevor es zurücktritt.
Wenn eine Stelle frei wird und noch drei oder mehr Mitglieder übrig sind, entscheidet der Rat selbst, ob er ein neues Mitglied ernennen möchte. Zur Bestimmung von Nachfolgern werden Nominierungen aus der Typisierungs-Community gesammelt. Selbstnominierungen sind erlaubt. Der bestehende Typing Council entscheidet dann über das/die Nachfolgemitglied(er) aus den Nominierten. Es wird erwartet, dass dies per Dekret geschieht, aber der Typing Council kann einen Ersatz auf jede gewünschte Weise wählen, einschließlich einer Abstimmung.
Der Typing Council bleibt dem Steering Council gegenüber rechenschaftspflichtig. Zu jeder Zeit und aus jedem Grund könnte der Steering Council (öffentlich oder privat) eine spezifische Änderung vornehmen oder eine nicht-spezifische Änderung an der Zusammensetzung des Typing Council verlangen.
Wir erkennen an, dass dies keine besonders demokratische Struktur ist und dem Typing Council viel Vertrauen entgegenbringt. Die Python-Community hat jedoch eine lange Erfolgsgeschichte mit nicht besonders demokratischen Strukturen! Wir glauben, dass Selbstverwaltung, wechselnde Mitgliedschaft und Rechenschaftspflicht gegenüber dem Steering Council ausreichen werden, um sicherzustellen, dass der Typing Council die Bedürfnisse der Community erfüllt.
Der Rat würde hauptsächlich durch die Überprüfung von GitHub PRs arbeiten. Regelmäßige Treffen sind wahrscheinlich nicht notwendig, aber der Rat kann Videokonferenzen, einen privaten Chat oder welche anderen Mechanismen auch immer intern festlegen.
Der Rat sollte Transparenz anstreben und alle Entscheidungen öffentlich auf discuss.python.org veröffentlichen, nach Möglichkeit mit Begründung. Vor einer Entscheidung sollte der Rat allen interessierten Community-Mitgliedern die Möglichkeit geben, sich zu äußern. Zwischen dem Beginn einer Diskussion und der Entscheidung des Rates sollten mindestens eine Woche vergehen.
Mitglieder des Rates sind berechtigt, PEPs zu sponsern. Wenn dieses PEP angenommen wird, sollte PEP 1 geändert werden, um diese Tatsache zu vermerken.
Beziehung zum Steering Council
Wie bisher wäre der Python Steering Council für die Gesamtrichtung der Python-Sprache verantwortlich und würde weiterhin über typisierungsbezogene PEPs entscheiden. Der Typing Council würde schriftliche Meinungen und Empfehlungen an den Steering Council zu typisierungsbezogenen PEPs abgeben.
Kleinere Änderungen am Typsystem könnten jedoch direkt vom Typing Council vorgenommen werden. Der Steering Council könnte auch entscheiden, Entscheidungen über einige PEPs an den Typing Council zu delegieren (genau wie jede andere PEP-Delegation).
Einige Beispiele, wie vergangene und aktuelle Probleme unter diesem Modell gehandhabt worden wären
- Ein PEP wie PEP 695 (Typ-Parameter-Syntax), das die Sprachsyntax ändert, müsste vom Steering Council entschieden werden; der Typing Council würde lediglich Meinung oder Unterstützung abgeben. Ähnlich würden PEPs wie PEP 702 (Deprecations) vom Steering Council entschieden werden, da sie das Laufzeitverhalten über reine Typisierung hinaus betreffen. Andere Beispiele, die vom SC entschieden werden müssten, sind PEP 718 (subskriptionsfähige Funktionen) und PEP 727 (Dokumentation in annotierten Metadaten).
- Ein PEP wie PEP 698 (`@override`), das nur Benutzer von Typ-Checkern betrifft und die Gesamtsprache nicht ändert, würde standardmäßig auch vom Steering Council entschieden werden. Solche PEPs könnten jedoch zur Entscheidung an den Typing Council delegiert werden (wie jede andere PEP-Delegation). Andere Beispiele für PEPs, die potenziell delegiert werden könnten, sind PEP 647 (Typ-Guards), PEP 655 (einzelne erforderliche `TypedDict`-Elemente), PEP 673 (`Self`) und PEP 675 (`Literal`).
- Das Hinzufügen einer kleineren Funktion, wie
typing.Neverals Alias fürtyping.NoReturn, würde durch einen PR an die Spezifikation und die Konformitäts-Testsuite erfolgen. Der Typing Council würde dann entscheiden, ob er den PR zusammenführt oder nicht. Sie können eine Spezifikation und Diskussion der Funktion in einem PEP anfordern, wenn sie der Meinung sind, dass dies gerechtfertigt ist. - Wenn es Unklarheiten bei der Interpretation eines Teils der Spezifikation gibt, wie kürzlich bei partiellen Stubs in PEP 561, würde jemand einen PR zur Typisierungs-Spezifikation erstellen, um die Spezifikation zu klären, und dann würde der Typing Council über die Spezifikationsänderung entscheiden.
Das Laufzeitmodul typing wird weiterhin vom CPython Core Developer Team gepflegt. Änderungen am Laufzeitmodul, die das Verhalten von Typ-Checkern beeinflussen, sollten jedoch in Abstimmung mit einer Änderung der Spezifikation (siehe unten) vorgenommen und vom Typing Council genehmigt werden. Zum Beispiel fügten die Core-Entwickler in Python 3.11 die neue Funktion typing.assert_type() hinzu. Wäre der Typing Council vorhanden gewesen, hätte diese Änderung eine entsprechende Änderung der Spezifikation und die Genehmigung durch den Typing Council erfordert. Auf der anderen Seite fügte Python 3.11 auch den Introspektionshelfer typing.get_overloads() hinzu. Da diese Funktion das Verhalten von Typ-Checkern nicht beeinflusst, wäre keine Genehmigung durch den Typing Council erforderlich. Da die Unterstützung für Laufzeit-Typ-Checker jedoch im Zuständigkeitsbereich des Rates liegt, sollten sie solche Änderungen überwachen und gegebenenfalls Feedback geben.
Beziehung zu Typ-Checkern
Der Typing Council hat keine direkte Autorität über Typ-Checker; er kann sie nicht zwingen, bestimmte Funktionen zu implementieren oder Verhaltensänderungen vorzunehmen. Typ-Checker sind dazu angehalten, der vom Rat festgelegten Spezifikation zu folgen, da sie dadurch von gemeinsamen Ressourcen profitieren können, wie z. B. Bibliotheken, die Typisierungsinformationen bereitstellen, die der Spezifikation entsprechen, den Stub-Dateien in typeshed, dem Standardbibliotheksmodul typing und Benutzerdokumentation, die das Standard-Typsystem abdeckt. Typ-Checker können das Typsystem erweitern oder von der Spezifikation abweichen, sollten aber solche Unterschiede klar dokumentieren.
Die Tatsache, dass Typ-Checker Entscheidungen des Typing Council implementieren müssen, wirkt als nützliche Bremse für den Council und stellt sicher, dass seine Entscheidungen konservativ und gut durchdacht sind. Einzelne Typ-Checker können weiterhin nach Belieben innovativ sein, und erfolgreiche Innovationen können in das Standard-Typsystem integriert werden.
Projekte
Hier sind einige Bemühungen, für die ein Typing Council verantwortlich wäre.
Konformitäts-Testsuite
Eine Konformitäts-Testsuite würde maschinell prüfbare Dokumentation dafür liefern, wie Typ-Checker Python-Code überprüfen sollten, begleitet von den Ergebnissen der wichtigsten Implementierungen von Typ-Checkern für die Testsuite. Ein grober Entwurf, wie dies aussehen könnte, wurde von Shantanu erstellt.
Dies würde präskriptive Tests für das Verhalten, das durch frühere PEPs vorgeschrieben wurde, und deskriptive Tests enthalten, die es uns ermöglichen, das Verhalten bestehender Implementierungen in Bereichen zu dokumentieren, die durch keinen Standard vorgeschrieben sind. Diese Beschreibungen wären nützlich, um die nachstehenden Bemühungen zu informieren und Schwerpunkte für die Standardisierung zu identifizieren.
Spezifikation für das Typsystem
Eine Spezifikation würde zunächst durch Zusammenfügen der Spezifikationsabschnitte aus den bestehenden PEPs erstellt und dann schrittweise verbessert, um Verwirrungspunkte zu klären und mehr Bereiche abzudecken. Ein Entwurf einer solchen zusammengefügten Spezifikation wurde von Jelle erstellt.
Die Spezifikation hat einige Zielgruppen
- Für Typ-Checker liefert sie eine Beschreibung, wie ein idealisierter Typ-Checker funktionieren sollte. Einzelne Typ-Checker haben unterschiedliche Ziele und technische Einschränkungen und können von der Spezifikation abweichen, wenn sie nicht die Ressourcen haben, sie vollständig zu implementieren, oder wenn sie glauben, dass ein anderes Verhalten ihren Benutzern besser dient. Sie sollten jedoch solche Abweichungen von der Spezifikation dokumentieren.
- Für Projekte wie typeshed oder Bibliotheken, die mit mehreren Typ-Checkern kompatibel sein wollen, bietet sie eine Reihe von Regeln, denen sie folgen können, um ihren Code von Typ-Checkern verstanden zu machen.
- Für Personen, die Änderungen am Typsystem vorschlagen möchten, bietet sie eine Grundlage für neue Vorschläge.
Bemerkenswert ist, dass die Spezifikation nicht auf Anwendungsentwickler abzielt, die Typisierung verwenden. Solche Benutzer müssen sich in der Regel keine Gedanken über Kompatibilität zwischen Typ-Checkern machen. Sie werden besser durch eine informellere, benutzerspezifische Referenz bedient, die im nächsten Abschnitt behandelt wird.
Es gibt unterschiedliche Meinungen innerhalb der Community darüber, wie formal eine solche Spezifikation sein soll. Während dieses Dokument einen inkrementellen Ansatz empfiehlt, der auf bestehenden Spezifikationen aufbaut, zielt es nicht darauf ab, einen Endzustand vorzuschreiben. Der Typing Council würde einen Mechanismus bereitstellen, der es der Spezifikation ermöglicht, sich zu entwickeln, um das von der Community gewünschte Formalitätsniveau zu erreichen, beispielsweise durch die Integration von Teilen von Kevin Millikins Dokument über „Python Static Types“ zur Erzielung einer besseren Formalisierung der Spezifikation.
Vorgeschlagene Änderungen an der Spezifikation, einschließlich PEPs, sollten im Allgemeinen Folgendes beinhalten
- Zustimmung der Maintainer von Typ-Checkern, um zu bestätigen, dass die Änderung in ihren Typ-Checkern implementiert und gepflegt werden kann.
- Für Änderungen an bestehenden Funktionen eine Umfrage über das Verhalten bestehender Typ-Checker. Wenn bestehende Typ-Checker sich grob ähnlich verhalten, ist dies ein Beleg dafür, dass ihr gemeinsames Verhalten Teil der Spezifikation werden sollte.
- Änderungen an der Konformitäts-Testsuite, die das spezifizierte Verhalten demonstrieren.
Benutzerfreundlicher Verweis auf das Typsystem
Dokumentation ist für den Erfolg des Python-Typsystems wichtig, daher sollte der Typing Council sicherstellen, dass es eine gute Dokumentation für das Typsystem gibt.
Wie bereits erwähnt, sind PEPs zeitgebundene Änderungsvorschläge, die sich an mehrere Zielgruppen richten und schwer zu klären sind. Das macht sie als Benutzerdokumentation ungeeignet. Die im vorherigen Abschnitt diskutierte Spezifikation wäre ein lebendes Dokument, wäre aber wahrscheinlich zu technisch, um als Dokumentation für den normalen Gebrauch zu dienen.
Daher wäre eine separate benutzerspezifische Referenz für das Typsystem nützlich. Eine solche Bemühung könnte die Dokumentation auf typing.python.org erweitern und Material aus den Dokumentationsabschnitten einzelner Typ-Checker und der CPython-Dokumentation wiederverwenden.
Änderungen
Dieses PEP dient als Charta für den Typing Council. Änderungen an seiner Funktionsweise können entweder durch ein neues PEP oder durch eine Änderung dieses PEPs vorgenommen werden. In beiden Fällen würde die Änderung vom Steering Council nach Diskussion in der Community beschlossen.
Abgelehnte Ideen
Erstellung der Spezifikation von Grund auf
Dieses PEP schlägt vor, die Typisierungs-Spezifikation zu erstellen, indem man von den bestehenden PEPs ausgeht und dann die Spezifikation nach Bedarf klärt und verbessert. Einige Mitglieder der Community bevorzugen es, von Grund auf neu zu beginnen und eine neue, formalere Spezifikation zu schreiben, die das gesamte Typsystem abdeckt. Dies könnte eine solidere Grundlage für die Spezifikation bieten.
Dies wäre jedoch ein viel größeres Unterfangen. Die bestehende Formalisierungsbemühung von Kevin Millikin ist ein guter Anfang, aber deckt bisher nur einen Teil von PEP 484 ab. Die Abdeckung des restlichen Typsystems würde wahrscheinlich ein Vielfaches an Aufwand erfordern, wenn wir bedenken, dass wichtige Typsystem-Funktionen wie typing.Protocol, `typing.Literal` und typing.TypedDict erst nach PEP 484 eingeführt wurden. Es ist nicht klar, ob es überhaupt Energie in der Community für ein solch gewaltiges Unterfangen gibt. Selbst wenn sich jemand bereit erklärt, die gesamte Arbeit an der Zusammenstellung einer Spezifikation zu leisten, wäre viel Aufwand von Community-Mitgliedern und Typ-Checker-Maintainern erforderlich, um zu prüfen, ob die Spezifikation das aktuelle Verhalten korrekt widerspiegelt und ob, falls nicht, die Spezifikation oder die Typ-Checker geändert werden sollten.
Das Ausgehen von den bestehenden PEPs führt zu einer Spezifikation von geringerer Qualität, bedeutet aber, dass der Typing Council sofort beginnen kann, überall im Typsystem durch die Verbesserung und Klärung der Spezifikation einen Unterschied zu machen. Eine Formalisierungsbemühung kann immer noch durch schrittweises Ersetzen von Spezifikationsabschnitten fortgesetzt werden.
Alternative Governance-Mechanismen
Ein früherer Entwurf dieses PEPs schlug vor, dass der Steering Council jedes Jahr Mitglieder des Typing Council ernennen sollte. Der aktuelle Steering Council schlug vor, dass es besser wäre, wenn sich der Typing Council selbst organisiert und der Steering Council nicht ständig den Typing Council beaufsichtigen muss.
Alternative Governance-Mechanismen sind möglich, einschließlich demokratischerer, aber diese werfen typischerweise mehrere knifflige Fragen auf, erfordern viel mehr Prozess und sind potenziell spaltender. Siehe zum Beispiel die PEP 8000-Serie oder aktuelle Diskussionen über alternative Governance in anderen Python-Subgemeinschaften. Letztendlich existiert der Typing Council unter der Autorität des Steering Council und kann sich daher auf ihn stützen, um die Governance zu bootstrappen und als Rechenschaftsmechanismus zu dienen.
Nichts tun
Wir hoffen, dass substanzielle Fortschritte bei Projekten erzielt werden, die das Typsystem verbessern, unabhängig davon, ob dieses PEP angenommen wird oder nicht. Wir erwarten, dass Projekte wie die Spezifikation oder die Möglichkeit der PEP-Delegation von einem Typing Council mehr profitieren würden, und Projekte wie die Endbenutzerdokumentation weniger. Sicherlich wird der Engpass wahrscheinlich die Beitragenden-Arbeit sein, nicht die Governance.
Derzeit sind die Werkzeuge, die der Community zur Verfügung stehen, um potenzielle Streitigkeiten zu lösen, entweder die Schaffung eines ungefähren Konsenses oder die Ausübung von Macht durch einzelne Projekte oder Mitwirkende. Letzteres ist zwar sehr wertvoll, aber ein langsamer Prozess, der oft in Untätigkeit endet. Letzteres kann zu einem inkonsistenteren Ökosystem führen. Schließlich machen leicht lesbare Governance-Strukturen die Community zugänglicher und gerechter.
Kontakt
Um den Typing Council um eine Entscheidung zu bitten, können Community-Mitglieder ein Issue im Repository python/typing-council eröffnen.
Urheberrecht
Dieses Dokument wird in die Public Domain oder unter die CC0-1.0-Universal-Lizenz gestellt, je nachdem, welche Lizenz permissiver ist.
Quelle: https://github.com/python/peps/blob/main/peps/pep-0729.rst
Zuletzt geändert: 2025-03-05 16:28:34 GMT