PEP 42 – Feature Requests
- Autor:
- Jeremy Hylton <jeremy at alum.mit.edu>
- Status:
- Zurückgezogen
- Typ:
- Prozess
- Erstellt:
- 12. Sep. 2000
- Post-History:
Einleitung
Diese PEP enthält eine Liste von Feature-Anfragen, die für zukünftige Versionen von Python in Betracht gezogen werden können. Große Feature-Anfragen sollten hier nicht enthalten sein, sondern in separaten PEPs beschrieben werden; eine große Feature-Anfrage, die keine eigene PEP hat, kann hier aufgeführt werden, bis ihre eigene PEP erstellt ist. Details finden Sie in PEP 0.
Diese PEP wurde erstellt, um uns zu ermöglichen, Bug-Reports zu schließen, die eigentlich Feature-Anfragen sind. Als "Offen" markiert, lenken sie von der Liste der echten Fehler ab (die idealerweise weniger als eine Seite lang sein sollte). Als "Geschlossen" markiert, werden sie tendenziell vergessen. Das Verfahren ist jetzt: Wenn ein Bug-Report wirklich eine Feature-Anfrage ist, fügen Sie die Feature-Anfrage dieser PEP hinzu; markieren Sie den Bug als „Feature-Anfrage“, „später“ und „geschlossen“; und fügen Sie einen Kommentar zum Bug hinzu, der dies besagt (unter expliziter Nennung der PEP). Es ist auch akzeptabel, große Feature-Anfragen direkt aus der Bug-Datenbank in eine separate PEP zu verschieben.
Diese PEP sollte eigentlich in vier verschiedene Kategorien aufgeteilt werden (Kategorien nach Laura Creighton)
- BDFL lehnt als schlechte Idee ab. Kommen Sie nicht wieder damit an.
- BDFL wird es implementieren, wenn jemand den Code schreibt. (Oder zumindest wird BDFL sagen: „Ändern Sie das und ich werde es einfügen“, wenn Sie mit Code auftauchen.)
möglicherweise unterteilt in
- BDFL würde gerne etwas Code sehen!
- BDFL wird davon nie begeistert sein, aber es wird eingebaut, wenn es einfach ist.
- Wenn Sie mit Code auftauchen, wird BDFL ein Urteil fällen. Es könnte ICK sein.
- Das ist zu vage. Dies wird abgelehnt, aber nur aus Gründen der Vagheit. Wenn Ihnen diese Erweiterung gefällt, erstellen Sie eine neue PEP.
Core Language / Builtins
- Der Parser sollte tiefere verschachtelte Parse-Bäume verarbeiten.
Das Folgende schlägt fehl –
eval("["*50+"]"*50)– da der Parser ein fest codiertes Limit für die Stapelgröße hat. Dieses Limit sollte erhöht oder entfernt werden. Entfernung wäre schwierig, da der aktuelle Compiler den C-Stapel überlaufen kann, wenn die Verschachtelung zu tief ist. - Nicht-zufällige IEEE-754-Unterstützung (Infs, NaNs, einstellbare Fallen usw.). Großes Projekt.
- Windows: Der Versuch, Dateien mit bestimmten magischen Namen zu erstellen (oder sogar darauf zuzugreifen), kann Windows-Systeme zum Hängen oder Abstürzen bringen. Dies ist eigentlich ein Bug im Betriebssystem, aber einige Apps versuchen, Benutzer davor zu schützen. Wenn dies geschieht, sind die Symptome sehr verwirrend.
Hängen bei Dateien namens prn.txt usw. https://bugs.python.org/issue481171
- eval und freie Variablen: Es könnte nützlich sein, wenn es eine Möglichkeit gäbe, Bindungen für freie Variablen an eval zu übergeben, wenn ein Code-Objekt mit freien Variablen übergeben wird. https://bugs.python.org/issue443866
Standardbibliothek
- Das urllib-Modul sollte Proxys unterstützen, die Authentifizierung erfordern. Siehe SourceForge-Bug #210619 für Informationen
- os.rename() sollte modifiziert werden, um EXDEV-Fehler auf Plattformen zu behandeln, die rename() nicht über Dateisystemgrenzen hinweg zulassen, indem die Datei kopiert und das Original entfernt wird. Linux ist ein System, das diese Behandlung erfordert.
- Signalbehandlung funktioniert nicht immer wie erwartet. Z. B. wenn sys.stdin.readline() durch einen (zurückkehrenden) Signal-Handler unterbrochen wird, gibt es „“. Es wäre besser, eine Ausnahme auszulösen (entsprechend EINTR) oder neu zu starten. Aber diese Änderungen müssten auf alle Stellen angewendet werden, die blockierende unterbrechbare E/A durchführen können. Es ist also ein großes Projekt.
- Erweitern Sie Windows utime, um Verzeichnispfade zu akzeptieren.
- Erweitern Sie copy.py auf Modul- und Funktionstypen.
- Bessere Überprüfung auf ungültige Eingaben für
marshal.load*(). - rfc822.py sollte beim Parsen der Arten von Adressfeldern nachsichtiger sein als die Spezifikation. Insbesondere sollte eine ungültige Adresse der Form „From: Amazon.com <delivers-news2@amazon.com>“ korrekt geparst werden.
- Die FieldStorage-Klasse von cgi.py sollte im Hinblick auf große Binärdatei-Uploads sparsamer mit dem Speicher umgehen.
https://bugs.python.org/issue210674
Hier gibt es zwei Probleme: Erstens, da read_lines_to_outerboundary() readline() verwendet, ist es möglich, dass beim Hochladen einer Binärdatei eine große Datenmenge in den Speicher gelesen wird. Hier sollte wahrscheinlich der Content-Type-Header des Abschnitts betrachtet und ein Chunked-Read für Binärtypen durchgeführt werden.
Das zweite Problem bezog sich auf das self.lines-Attribut, das in Revision 1.56 von cgi.py entfernt wurde (siehe auch)
- urllib sollte Proxy-Definitionen unterstützen, die nur Host und Port enthalten
- urlparse sollte aktualisiert werden, um RFC 2396 zu entsprechen, die optionale Parameter für jedes Segment des Pfades definiert.
- Die von pickle und cPickle ausgelösten Ausnahmen sind derzeit unterschiedlich; diese sollten vereinheitlicht werden (wahrscheinlich sollten die Ausnahmen in einem Hilfsmodul definiert werden, das von beiden importiert wird). [Kein Bug-Report; ich habe mir das gerade ausgedacht.]
- Mehr Routinen der Standardbibliothek sollten Unicode unterstützen. Zum Beispiel könnte urllib.quote() Unicode-Strings in UTF-8 konvertieren und dann die übliche %HH-Konvertierung durchführen. Aber das ist nicht die einzige!
- Es sollte eine Möglichkeit geben zu sagen, dass es einem nichts ausmacht, wenn
str()oder__str__()einen Unicode-String-Objekt zurückgeben. Oder eine andere Funktion –ustr()wurde vorgeschlagen. Oder etwas ...http://sf.net/patch/?func=detailpatch&patch_id=101527&group_id=5470
- Einen Thread von einem anderen Thread töten. Oder vielleicht ein Signal senden. Oder vielleicht eine asynchrone Ausnahme auslösen.
- Der Debugger (pdb) sollte Pakete verstehen.
- Jim Fulton schlug Folgendes vor
I wonder if it would be a good idea to have a new kind of temporary file that stored data in memory unless: - The data exceeds some size, or - Somebody asks for a fileno. Then the cgi module (and other apps) could use this thing in a uniform way.
- Jim Fulton wies darauf hin, dass die Funktion b2a_base64() von binascii Situationen aufweist, in denen es sinnvoll ist, keinen Zeilenumbruch anzuhängen oder etwas anderes als einen Zeilenumbruch anzuhängen.
Vorschlag
- fügen Sie ein optionales Argument hinzu, das die als Trennzeichen zu verwendende Zeichenkette angibt, standardmäßig „\n“
- möglicherweise Sonderfall None als Trennzeichen, um auch die Padding-Bytes zu vermeiden???
- pydoc sollte in die HTML-Dokumentation integriert werden oder zumindest Links dazu ermöglichen.
- Distutils sollte Abhängigkeiten für .c- und .h-Dateien ableiten.
- asynchat ist im Angesicht von Multithreading fehlerhaft.
- Es wäre schön, wenn die höherwertigen Module (httplib, smtplib, nntplib usw.) Optionen zum Einstellen von Socket-Timeouts hätten.
- Der curses-Bibliothek fehlen zwei wichtige Aufrufe: newterm() und delscreen()
https://bugs.python.org/issue665572, http://bugs.debian.org/175590
- Es wäre schön, wenn der eingebaute SSL-Socket-Typ für non-blocking SSL-I/O verwendet werden könnte. Derzeit müssen Pakete wie Twisted, die asynchrone Server mit SSL implementieren, Drittanbieterpakete wie pyopenssl benötigen.
- reST als Modul der Standardbibliothek
- Der Import-Lock könnte eine Neugestaltung vertragen.
- Eine schönere API zum Öffnen von Textdateien, die die hässliche (in den Augen mancher Leute) „U“-Modus-Flagge ersetzt. Es gibt einen Vorschlag für einen neuen eingebauten Typ textfile(filename, mode, encoding). (Sollte er nicht auch ein bufsize-Argument haben?)
- Unterstützung für neue Widgets und/oder Parameter für Tkinter
- Für eine Klasse, die innerhalb einer anderen Klasse definiert ist, sollte __name__ „outer.inner“ sein, und das Pickling sollte funktionieren. (GvR ist sich nicht mehr sicher, ob das einfach oder überhaupt richtig ist.)
- Entscheiden Sie sich für eine klarere Deprecation-Richtlinie (insbesondere für Module) und setzen Sie sie um.
https://mail.python.org/pipermail/python-dev/2002-April/023165.html
- Stellen Sie Alternativen für gängige Verwendungen des types-Moduls bereit; Skip Montanaro hat einen Proto-PEP für diese Idee gepostet
https://mail.python.org/pipermail/python-dev/2002-May/024346.html
- Verwenden Sie „pending deprecation“ für die Module types und string. Dies erfordert die Bereitstellung von Alternativen für die Teile, die noch nicht abgedeckt sind (z. B. string.whitespace und types.TracebackType). Es scheint, dass wir uns hier nicht einigen können.
- Lazy Tracking von Tupeln?
https://mail.python.org/pipermail/python-dev/2002-May/023926.html https://bugs.python.org/issue558745
- Machen Sie 'as' zu einem Schlüsselwort. Es ist lange genug ein Pseudo-Schlüsselwort gewesen. (Es wird in 2.5 als veraltet markiert und wird in 2.6 ein Schlüsselwort werden.)
C API Wünsche
- Fügen Sie C API-Funktionen hinzu, um Windows-Benutzern zu helfen, die eingebettete Anwendungen erstellen, bei denen die FILE *-Struktur nicht mit der FILE * übereinstimmt, mit der der Interpreter kompiliert wurde.
https://bugs.python.org/issue210821
Siehe diesen Bug-Report für einen spezifischen Vorschlag, der es einer Borland C++ Builder-Anwendung ermöglicht, mit einer mit MSVC kompilierten python.dll zu interagieren.
Werkzeuge
- Python könnte einen GUI-Builder gebrauchen.
Erstellung und Installation
- Modules/makesetup sollte sicherstellen, dass die Datei „config.c“, die es aus den verschiedenen Setup-Dateien generiert, gültiges C ist. Es akzeptiert derzeit Modulnamen mit Zeichen, die in Python- oder C-Bezeichnern nicht zulässig sind.
- Die Erstellung aus dem Quellcode sollte nicht versuchen, die Dateien Include/graminit.h und Parser/graminit.c zu überschreiben, zumindest nicht für Leute, die eine Quellcode-Version herunterladen, anstatt mit Subversion oder Snapshots zu arbeiten. Manche Leute finden das in ungewöhnlichen Build-Umgebungen ein Problem.
- Das Konfigurationsskript ist mit der Zeit wahrscheinlich etwas veraltet und erfasst möglicherweise nicht mehr die neueren Funktionen von autoconf. Es sollte überprüft und möglicherweise bereinigt werden.
https://mail.python.org/pipermail/python-dev/2004-January/041790.html
- Machen Sie Python konform mit dem FHS (dem Filesystem Hierarchy Standard)
Quelle: https://github.com/python/peps/blob/main/peps/pep-0042.rst
Zuletzt geändert: 2024-04-14 20:08:31 GMT