Utfasningar

Väntar på borttagning i Python 3.15

  • Importsystemet:

    • Att ställa in __cached__ på en modul samtidigt som man misslyckas med att ställa in __spec__.cached är föråldrat. I Python 3.15 kommer __cached__ inte längre att anges eller tas i beaktande av importsystemet eller standardbiblioteket. (gh-97879)

    • Att ställa in __package__ på en modul utan att ställa in __spec__.parent är föråldrat. I Python 3.15 kommer __package__ inte längre att anges eller tas i beaktande av importsystemet eller standardbiblioteket. (gh-97879)

  • ctypes:

    • Den odokumenterade ctypes.SetPointerType()-funktionen är föråldrad sedan Python 3.13.

  • http.server:

    • Den föråldrade och sällan använda CGIHTTPRequestHandler har utgått sedan Python 3.13. Ingen direkt ersättare finns. Anything är bättre än CGI för att koppla en webbserver till en request-hanterare.

    • Flaggan --cgi till kommandoradsgränssnittet python -m http.server har utgått sedan Python 3.13.

  • importlib:

    • load_module() metod: använd exec_module() istället.

  • locale:

  • pathlib:

  • plattform:

    • java_ver() har utgått sedan Python 3.13. Denna funktion är endast användbar för Jython-stöd, har ett förvirrande API och är i stort sett otestad.

  • sysconfig:

  • threading:

    • RLock() kommer inte att ta några argument i Python 3.15. Att skicka några argument har varit föråldrat sedan Python 3.14, eftersom Python-versionen inte tillåter några argument, men C-versionen tillåter valfritt antal positionella eller nyckelordsargument och ignorerar varje argument.

  • types:

  • typning:

    • Den odokumenterade syntaxen för nyckelordsargument för att skapa NamedTuple-klasser (till exempel Point = NamedTuple("Point", x=int, y=int)) har utgått sedan Python 3.13. Använd den klassbaserade syntaxen eller den funktionella syntaxen istället.

    • När man använder den funktionella syntaxen för TypedDicts, att inte skicka ett värde till parametern fields (TD = TypedDict("TD")) eller att skicka None (TD = TypedDict("TD", None)) har varit föråldrat sedan Python 3.13. Använd class TD(TypedDict): pass eller TD = TypedDict("TD", {}) för att skapa en TypedDict med noll fält.

    • Dekoratorfunktionen typing.no_type_check_decorator() har varit föråldrad sedan Python 3.13. Efter åtta år i modulen typing har den ännu inte fått stöd av någon större typkontroll.

  • våg:

  • zipimport:

Väntar på borttagning i Python 3.16

Väntar på borttagning i Python 3.17

  • typning:

    • Före Python 3.14 implementerades gamla tiders unioner med hjälp av den privata klassen typing._UnionGenericAlias. Denna klass behövs inte längre för implementationen, men den har behållits för bakåtkompatibilitet, med borttagning planerad till Python 3.17. Användare bör använda dokumenterade introspektionshjälpmedel som typing.get_origin() och typing.get_args() istället för att förlita sig på privata implementationsdetaljer.

Väntar på borttagning i Python 3.19

  • ctypes:

    • Implicit byte till MSVC-kompatibel struct-layout genom att ställa in _pack_ men inte _layout_ på icke-Windows-plattformar.

Avser att tas bort i framtida versioner

Följande API:er kommer att tas bort i framtiden, även om det för närvarande inte finns något datum för när de ska tas bort.

  • argparse:

    • Nesting av argumentgrupper och nesting av ömsesidigt uteslutande grupper är avförda.

    • Att skicka det odokumenterade nyckelordsargumentet prefix_chars till add_argument_group() är nu föråldrat.

    • Typomvandlaren argparse.FileType är föråldrad.

  • builtins:

    • bool(NotImplemented).

    • Generatorer: throw(type, exc, tb) och athrow(type, exc, tb) signaturen är föråldrad: använd throw(exc) och athrow(exc) istället, signaturen med ett enda argument.

    • För närvarande accepterar Python numeriska literaler omedelbart följt av nyckelord, till exempel 0in x, 1or x, 0if 1else 2. Det tillåter förvirrande och tvetydiga uttryck som [0x1for x in y] (som kan tolkas som [0x1 for x in y] eller [0x1f or x in y]). En syntaxvarning visas om den numeriska litteralen omedelbart följs av något av nyckelorden and, else, for, if, in, is och or. I en framtida version kommer det att ändras till ett syntaxfel. (gh-87999)

    • Stöd för metoderna __index__() och __int__() som returnerar icke-int-typer: dessa metoder kommer att behöva returnera en instans av en strikt underklass av int.

    • Stöd för metoden __float__() som returnerar en strikt underklass av float: dessa metoder måste returnera en instans av float.

    • Stöd för metoden __complex__() som returnerar en strikt underklass av complex: dessa metoder måste returnera en instans av complex.

    • Delegering av int() till metoden __trunc__().

    • Att skicka ett komplext tal som real eller imag argument i complex()-konstruktorn är nu föråldrat; det bör endast skickas som ett enda positionellt argument. (Bidrag från Serhiy Storchaka i gh-109218.)

  • calendar: Konstanterna calendar.January och calendar.February är föråldrade och ersätts av calendar.JANUARY och calendar.FEBRUARY. (Bidrag från Prince Roshan i gh-103636.)

  • codecs: använd open() istället för codecs.open(). (gh-133038)

  • codeobject.co_lnotab: använd istället metoden codeobject.co_lines().

  • datetime:

    • utcnow(): använd datetime.datetime.now(tz=datetime.UTC).

    • utcfromtimestamp(): använd datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).

  • gettext: Pluralvärdet måste vara ett heltal.

  • importlib:

    • cache_from_source() Parametern debug_override är föråldrad: använd parametern optimization istället.

  • importlib.metadata:

    • EntryPoints tuple-gränssnitt.

    • Implicit None på returvärden.

  • logging: metoden warn() har utgått sedan Python 3.3, använd warning() istället.

  • mailbox: Användning av StringIO-ingång och textläge är föråldrad, använd BytesIO och binärt läge istället.

  • os: Anropar os.register_at_fork() i flertrådad process.

  • pydoc.ErrorDuringImport: Ett tupelvärde för parametern exc_info är föråldrat, använd en undantagsinstans.

  • re: Strängare regler tillämpas nu för numeriska gruppreferenser och gruppnamn i reguljära uttryck. Endast sekvenser av ASCII-siffror accepteras nu som numeriska referenser. Gruppnamnet i bytesmönster och ersättningssträngar kan nu endast innehålla ASCII-bokstäver och siffror samt understreck. (Bidrag från Serhiy Storchaka i gh-91760.)

  • modulerna sre_compile, sre_constants och sre_parse.

  • shutil: rmtree():s parameter onerror är föråldrad i Python 3.12; använd istället parametern onexc.

  • ssl alternativ och protokoll:

    • ssl.SSLContext utan protokollargument är föråldrad.

    • ssl.SSLContext: set_npn_protocols() and selected_npn_protocol() are deprecated: use ALPN instead.

    • ssl.OP_NO_SSL* alternativ

    • ssl.OP_NO_TLS* alternativ

    • ssl.PROTOCOL_SSLv3

    • ssl.PROTOCOL_TLS

    • ssl.PROTOCOL_TLSv1

    • ssl.PROTOCOL_TLSv1_1

    • ssl.PROTOCOL_TLSv1_2

    • ssl.TLSVersion.SSLv3

    • ssl.TLSVersion.TLSv1

    • ssl.TLSVersion.TLSv1_1

  • threading metoder:

  • typing.Text (gh-92332).

  • Den interna klassen typing._UnionGenericAlias används inte längre för att implementera typing.Union. För att bevara kompatibiliteten med användare som använder denna privata klass, kommer en kompatibilitets-shim att tillhandahållas åtminstone fram till Python 3.17. (Bidrag från Jelle Zijlstra i gh-105499.)

  • unittest.IsolatedAsyncioTestCase: det är förkastligt att returnera ett värde som inte är None från ett testfall.

  • urllib.parse föråldrade funktioner: urlparse() istället

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • wsgiref: SimpleHandler.stdout.write() bör inte göra partiella skrivningar.

  • xml.etree.ElementTree: Att testa sanningsvärdet för en Element är föråldrat. I en framtida version kommer det alltid att returnera True. Föredra istället explicita len(elem) eller elem is not None tester.

  • sys._clear_type_cache() är föråldrad: använd sys._clear_internal_caches() istället.

C API-utfasningar

Väntar på borttagning i Python 3.15

Väntar på borttagning i Python 3.18

Avser att tas bort i framtida versioner

Följande API:er är föråldrade och kommer att tas bort, även om det för närvarande inte finns något datum för när de ska tas bort.