Desusos

Pending removal in Python 3.15

  • The import system:

    • Setting __cached__ on a module while failing to set __spec__.cached is deprecated. In Python 3.15, __cached__ will cease to be set or take into consideration by the import system or standard library. (gh-97879)

    • Setting __package__ on a module while failing to set __spec__.parent is deprecated. In Python 3.15, __package__ will cease to be set or take into consideration by the import system or standard library. (gh-97879)

  • ctypes:

    • La función ctypes.SetPointerType() no documentada ha quedado obsoleta desde Python 3.13.

  • http.server:

    • El obsoleto y poco utilizado CGIHTTPRequestHandler ha quedado obsoleto desde Python 3.13. No existe un reemplazo directo. Anything es mejor que CGI para interconectar un servidor web con un controlador de solicitudes.

    • La bandera --cgi de la interfaz de línea de comandos python -m http.server ha quedado obsoleta desde Python 3.13.

  • importlib:

    • Método load_module(): utilice exec_module() en su lugar.

  • locale:

  • pathlib:

  • platform:

    • java_ver() ha quedado obsoleto desde Python 3.13. Esta función solo es útil para la compatibilidad con Jython, tiene una API confusa y, en gran medida, no se ha probado.

  • sysconfig:

  • threading:

    • RLock() no acepta argumentos en Python 3.15. El paso de cualquier argumento ha quedado obsoleto desde Python 3.14, ya que la versión de Python no permite ningún argumento, pero la versión de C permite cualquier cantidad de argumentos posicionales o de palabras clave, ignorando todos los argumentos.

  • types:

  • typing:

    • The undocumented keyword argument syntax for creating NamedTuple classes (for example, Point = NamedTuple("Point", x=int, y=int)) has been deprecated since Python 3.13. Use the class-based syntax or the functional syntax instead.

    • When using the functional syntax of TypedDicts, failing to pass a value to the fields parameter (TD = TypedDict("TD")) or passing None (TD = TypedDict("TD", None)) has been deprecated since Python 3.13. Use class TD(TypedDict): pass or TD = TypedDict("TD", {}) to create a TypedDict with zero field.

    • La función decoradora typing.no_type_check_decorator() ha quedado obsoleta desde Python 3.13. Después de ocho años en el módulo typing, todavía no ha sido compatible con ningún verificador de tipos importante.

  • wave:

  • zipimport:

Pending removal in Python 3.16

Pending removal in Python 3.17

  • typing:

    • Before Python 3.14, old-style unions were implemented using the private class typing._UnionGenericAlias. This class is no longer needed for the implementation, but it has been retained for backward compatibility, with removal scheduled for Python 3.17. Users should use documented introspection helpers like typing.get_origin() and typing.get_args() instead of relying on private implementation details.

Pending removal in Python 3.19

  • ctypes:

    • Implicitly switching to the MSVC-compatible struct layout by setting _pack_ but not _layout_ on non-Windows platforms.

Pending removal in future versions

Las siguientes API se eliminarán en el futuro, aunque actualmente no hay una fecha programada para su eliminación.

  • argparse:

    • Nesting argument groups and nesting mutually exclusive groups are deprecated.

    • Passing the undocumented keyword argument prefix_chars to add_argument_group() is now deprecated.

    • The argparse.FileType type converter is deprecated.

  • builtins:

    • bool(NotImplemented).

    • Generadores: las firmas throw(type, exc, tb) y athrow(type, exc, tb) están obsoletas: utilice throw(exc) y athrow(exc) en su lugar, la firma de argumento único.

    • Actualmente, Python acepta literales numéricos seguidos inmediatamente de palabras clave, por ejemplo, 0in x, 1or x, 0if 1else 2. Permite expresiones confusas y ambiguas como [0x1for x in y] (que se puede interpretar como [0x1 for x in y] o [0x1f or x in y]). Se genera una advertencia de sintaxis si el literal numérico va seguido inmediatamente de una de las palabras clave and, else, for, if, in, is y or. En una versión futura, se cambiará a un error de sintaxis. (gh-87999)

    • Compatibilidad con los métodos __index__() y __int__() que devuelven un tipo que no es int: estos métodos serán necesarios para devolver una instancia de una subclase estricta de int.

    • Compatibilidad con el método __float__() que devuelve una subclase estricta de float: estos métodos serán necesarios para devolver una instancia de float.

    • Compatibilidad con el método __complex__() que devuelve una subclase estricta de complex: estos métodos serán necesarios para devolver una instancia de complex.

    • Delegación del método int() al __trunc__().

    • Ahora está obsoleto el paso de un número complejo como argumento real o imag en el constructor complex(); solo debe pasarse como un único argumento posicional. (Contribuido por Serhiy Storchaka en gh-109218.)

  • calendar: Las constantes calendar.January y calendar.February han quedado obsoletas y han sido reemplazadas por calendar.JANUARY y calendar.FEBRUARY. (Contribuido por Prince Roshan en gh-103636.)

  • codecs: use open() instead of codecs.open(). (gh-133038)

  • codeobject.co_lnotab: utilice el método codeobject.co_lines() en su lugar.

  • datetime:

    • utcnow(): utilice datetime.datetime.now(tz=datetime.UTC).

    • utcfromtimestamp(): utilice datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).

  • gettext: El valor plural debe ser un número entero.

  • importlib:

    • cache_from_source() El parámetro debug_override está obsoleto: utilice el parámetro optimization en su lugar.

  • importlib.metadata:

    • Interfaz de tupla EntryPoints.

    • None implícito en los valores de retorno.

  • logging: el método warn() ha quedado obsoleto desde Python 3.3, utilice warning() en su lugar.

  • mailbox: El uso del modo de entrada y texto StringIO está obsoleto; en su lugar, utilice BytesIO y el modo binario.

  • os: Llamada a os.register_at_fork() en un proceso multiproceso.

  • pydoc.ErrorDuringImport: Un valor de tupla para el parámetro exc_info está obsoleto, utilice una instancia de excepción.

  • re: Ahora se aplican reglas más estrictas para las referencias numéricas de grupos y los nombres de grupos en expresiones regulares. Ahora solo se aceptan secuencias de dígitos ASCII como referencia numérica. El nombre de grupo en patrones de bytes y cadenas de reemplazo ahora solo puede contener letras y dígitos ASCII y guiones bajos. (Contribuido por Serhiy Storchaka en gh-91760.)

  • Módulos sre_compile, sre_constants y sre_parse.

  • shutil: El parámetro onerror de rmtree() está obsoleto en Python 3.12; utilice el parámetro onexc en su lugar.

  • Opciones y protocolos ssl:

    • ssl.SSLContext sin argumento de protocolo está obsoleto.

    • ssl.SSLContext: set_npn_protocols() y selected_npn_protocol() están obsoletos: utilice ALPN en su lugar.

    • Opciones de ssl.OP_NO_SSL*

    • Opciones de ssl.OP_NO_TLS*

    • 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

  • Métodos threading:

  • typing.Text (gh-92332).

  • The internal class typing._UnionGenericAlias is no longer used to implement typing.Union. To preserve compatibility with users using this private class, a compatibility shim will be provided until at least Python 3.17. (Contributed by Jelle Zijlstra in gh-105499.)

  • unittest.IsolatedAsyncioTestCase: está obsoleto devolver un valor que no sea None de un caso de prueba.

  • Funciones obsoletas de urllib.parse: urlparse() en su lugar

    • splitattr()

    • splithost()

    • splitnport()

    • splitpasswd()

    • splitport()

    • splitquery()

    • splittag()

    • splittype()

    • splituser()

    • splitvalue()

    • to_bytes()

  • wsgiref: SimpleHandler.stdout.write() no debería realizar escrituras parciales.

  • xml.etree.ElementTree: La prueba del valor de verdad de un Element está obsoleta. En una versión futura, siempre devolverá True. En su lugar, es preferible realizar pruebas explícitas len(elem) o elem is not None.

  • sys._clear_type_cache() is deprecated: use sys._clear_internal_caches() instead.

C API deprecations

Pending removal in Python 3.15

Pending removal in Python 3.18

Pending removal in future versions

Las siguientes API están obsoletas y se eliminarán, aunque actualmente no hay una fecha programada para su eliminación.