Following system colour scheme Selected dark colour scheme Selected light colour scheme

Python Enhancement Proposals

PEP 291 – Abwärtskompatibilität für die Python 2 Standardbibliothek

Autor:
Neal Norwitz <nnorwitz at gmail.com>
Status:
Abgelöst
Typ:
Informational
Erstellt:
06-Jun-2002
Python-Version:
2.3
Post-History:

Ersetzt-Durch:
387

Inhaltsverzeichnis

Zusammenfassung

Dieser PEP beschreibt die Pakete und Module in der Python 2 Standardbibliothek, die abwärtskompatibel zu früheren Versionen von Python bleiben sollten. Wenn ein Paket hier nicht aufgeführt ist, muss es nur mit der Version von Python kompatibel bleiben, mit der es verteilt wird.

Dieser PEP hat keinen Einfluss auf die Python 3 Standardbibliothek.

Begründung

Autoren haben verschiedene Gründe, warum Pakete und Module weiterhin mit früheren Versionen von Python funktionieren sollten. Um die Abwärtskompatibilität dieser Module zu gewährleisten, während der Rest der Standardbibliothek weiterentwickelt wird, ist es notwendig zu wissen, welche Module geändert werden können und welche alte und möglicherweise veraltete Funktionen verwenden sollten.

Generell sollten Autoren versuchen, Änderungen abwärtskompatibel zur vorherigen veröffentlichten Version von Python zu halten, um Fehlerkorrekturen leichter zurückportieren zu können.

Zusätzlich zur Auflistung eines Pakets oder Moduls in diesem PEP müssen Autoren am Anfang jeder Datei einen Kommentar hinzufügen, der die Kompatibilitätsanforderung dokumentiert.

Wenn eine Hauptversion von Python veröffentlicht wird, wird ein Subversion-Zweig für kontinuierliche Wartung und Fehlerkorrektur-Releases erstellt. Eine Paketversion auf einem Branch kann eine andere Kompatibilitätsanforderung haben als dasselbe Paket auf dem Trunk (d. h. die aktuelle Bleeding-Edge-Entwicklung). Wo angemessen, werden diese Branch-Kompatibilitäten unten aufgeführt.

Zu vermeidende Features

Die folgende Liste enthält gängige Features, die zur Aufrechterhaltung der Abwärtskompatibilität mit jeder Python-Version vermieden werden sollten. Diese Liste ist nicht vollständig! Sie dient nur als allgemeine Richtlinie.

Beachten Sie, dass die unten aufgeführten Funktionen in der Version nach der aufgeführten implementiert wurden. Zum Beispiel wurden die neben 1.5.2 aufgeführten Funktionen in 2.0 implementiert.

Version Zu vermeidende Features
1.5.2 String-Methoden, Unicode, List Comprehensions, erweiterte Zuweisungen (z. B. +=), zip(), import x as y, dict.setdefault(), print >> f, Aufruf von f(*args, **kw), plus alle unten aufgeführten Funktionen
2.0 verschachtelte Geltungsbereiche, Rich Comparisons, Funktionsattribute, plus alle unten aufgeführten Funktionen
2.1 Verwendung von Objekt- oder neuen Klassen, Iteratoren, Generatoren, verschachtelte Geltungsbereiche oder // ohne from __future__ import … Anweisung, isinstance(X, TYP), wobei TYP ein Tupel von Typen ist, plus alle unten aufgeführten Funktionen
2.2 bool, True, False, basestring, enumerate(), {}.pop(), PendingDeprecationWarning, Universal Newlines, plus alle unten aufgeführten Funktionen plus alle unten aufgeführten Funktionen
2.3 Generatorausdrücke, Multi-Line-Imports, Decorators, Int/Long-Vereinigung, set/frozenset, reversed(), sorted(), „“.rsplit(), plus alle unten aufgeführten Funktionen
2.4 with-Anweisung, bedingte Ausdrücke, kombinierte try/except/finally, relative Imports, yield-Ausdrücke oder generator.throw/send/close(), plus alle unten aufgeführten Funktionen
2.5 with-Anweisung ohne from __future__ import, io-Modul, str.format(), except as, bytes, b’’ Literale, property.setter/deleter

Abwärtskompatible Pakete, Module und Werkzeuge

Paket/Modul Betreuer Python-Version Anmerkungen
2to3 Benjamin Peterson 2.5
bsddb
  • Greg Smith
  • Barry Warsaw
2.1
compiler Jeremy Hylton 2.1
decimal Raymond Hettinger 2.3 [2]
distutils Tarek Ziade 2.3
email Barry Warsaw 2.1 / 2.3 [1]
pkgutil Phillip Eby 2.3
platform Marc-Andre Lemburg 1.5.2
pybench Marc-Andre Lemburg 1.5.2 [3]
sre Fredrik Lundh 2.1
subprocess Peter Astrand 2.2
wsgiref Phillip J. Eby 2.1
xml (PyXML) Martin v. Loewis 2.0
xmlrpclib Fredrik Lundh 2.1
Werkzeug Betreuer Python-Version
Keine

Anmerkungen

  1. Die E-Mail-Paketversion 2 wurde mit Python bis Python 2.3 verteilt, und diese muss mit Python 2.1 kompatibel bleiben. Die E-Mail-Paketversion 3 wird mit Python 2.4 verteilt und muss nur mit Python 2.3 kompatibel bleiben.
  2. Spezifikationsaktualisierungen werden als Fehlerkorrekturen behandelt und zurückportiert. Die Kompatibilität mit Python 2.3 wird mindestens für Python 2.4 beibehalten. Die Entscheidung wird für Python 2.5 überprüft und nicht geändert, es sei denn, es ergeben sich zwingende Vorteile.
  3. pybench befindet sich im Verzeichnis Tools/. Die Kompatibilität mit älteren Python-Versionen ist erforderlich, um die Leistung zwischen Python-Versionen vergleichen zu können. Neue Funktionen können immer noch in neuen Tests verwendet werden, die dann so konfiguriert werden können, dass sie bei der Installation in älteren Python-Versionen ordnungsgemäß fehlschlagen.

Quelle: https://github.com/python/peps/blob/main/peps/pep-0291.rst

Zuletzt geändert: 2024-10-10 20:00:57 GMT