From 3c76d8f413b7f9d16fe32de760b4211e5837edbf Mon Sep 17 00:00:00 2001 From: Max Muoto Date: Thu, 25 Dec 2025 14:14:40 -0600 Subject: [PATCH 1/2] Add codecs.open deprecation --- stdlib/codecs.pyi | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/stdlib/codecs.pyi b/stdlib/codecs.pyi index fa4d4fd4ba92..ae0027acc99f 100644 --- a/stdlib/codecs.pyi +++ b/stdlib/codecs.pyi @@ -5,7 +5,7 @@ from _typeshed import ReadableBuffer from abc import abstractmethod from collections.abc import Callable, Generator, Iterable from typing import Any, BinaryIO, ClassVar, Final, Literal, Protocol, TextIO, overload, type_check_only -from typing_extensions import Self, TypeAlias, disjoint_base +from typing_extensions import Self, TypeAlias, deprecated, disjoint_base __all__ = [ "register", @@ -191,9 +191,17 @@ def getincrementaldecoder(encoding: _BufferedEncoding) -> _BufferedIncrementalDe def getincrementaldecoder(encoding: str) -> _IncrementalDecoder: ... def getreader(encoding: str) -> _StreamReader: ... def getwriter(encoding: str) -> _StreamWriter: ... -def open( - filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 -) -> StreamReaderWriter: ... + +if sys.version_info >= (3, 14): + @deprecated("codecs.open() is deprecated since Python 3.14. Use open() instead.") + def open( + filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 + ) -> StreamReaderWriter: ... +else: + def open( + filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 + ) -> StreamReaderWriter: ... + def EncodedFile(file: _Stream, data_encoding: str, file_encoding: str | None = None, errors: str = "strict") -> StreamRecoder: ... def iterencode(iterator: Iterable[str], encoding: str, errors: str = "strict") -> Generator[bytes, None, None]: ... def iterdecode(iterator: Iterable[bytes], encoding: str, errors: str = "strict") -> Generator[str, None, None]: ... From e683b037a224e89b6fe49005ae80674165d86d98 Mon Sep 17 00:00:00 2001 From: Max Muoto Date: Thu, 25 Dec 2025 14:16:14 -0600 Subject: [PATCH 2/2] Deprecate always --- stdlib/codecs.pyi | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/stdlib/codecs.pyi b/stdlib/codecs.pyi index ae0027acc99f..d2fd3565a5b2 100644 --- a/stdlib/codecs.pyi +++ b/stdlib/codecs.pyi @@ -191,17 +191,10 @@ def getincrementaldecoder(encoding: _BufferedEncoding) -> _BufferedIncrementalDe def getincrementaldecoder(encoding: str) -> _IncrementalDecoder: ... def getreader(encoding: str) -> _StreamReader: ... def getwriter(encoding: str) -> _StreamWriter: ... - -if sys.version_info >= (3, 14): - @deprecated("codecs.open() is deprecated since Python 3.14. Use open() instead.") - def open( - filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 - ) -> StreamReaderWriter: ... -else: - def open( - filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 - ) -> StreamReaderWriter: ... - +@deprecated("codecs.open() is deprecated. Use open() instead.") +def open( + filename: str, mode: str = "r", encoding: str | None = None, errors: str = "strict", buffering: int = -1 +) -> StreamReaderWriter: ... def EncodedFile(file: _Stream, data_encoding: str, file_encoding: str | None = None, errors: str = "strict") -> StreamRecoder: ... def iterencode(iterator: Iterable[str], encoding: str, errors: str = "strict") -> Generator[bytes, None, None]: ... def iterdecode(iterator: Iterable[bytes], encoding: str, errors: str = "strict") -> Generator[str, None, None]: ...