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.

  • 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.

  • 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.

    • 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:

Pending removal in Python 3.16

  • The import system:

    • Setting __loader__ on a module while failing to set __spec__.loader is deprecated. In Python 3.16, __loader__ will cease to be set or taken into consideration by the import system or the standard library.

  • array:

    • El código de formato 'u' (wchar_t) ha quedado obsoleto en la documentación desde Python 3.3 y en el entorno de ejecución desde Python 3.13. Utilice el código de formato 'w' (Py_UCS4) para caracteres Unicode.

  • asyncio:

  • builtins:

    • La inversión bit a bit en tipos booleanos, ~True o ~False, ha quedado obsoleta desde Python 3.12, ya que produce resultados sorprendentes y poco intuitivos (-2 y -1). En su lugar, utilice not x para la negación lógica de un valor booleano. En el caso poco frecuente de que necesite la inversión bit a bit del entero subyacente, convierta a int explícitamente (~int(x)).

  • shutil:

    • La excepción ExecError ha quedado obsoleta desde Python 3.14. No ha sido utilizada por ninguna función en shutil desde Python 3.4 y ahora es un alias de RuntimeError.

  • symtable:

  • sys:

  • tarfile:

    • El atributo TarFile.tarfile, no documentado ni utilizado, ha quedado obsoleto desde Python 3.13.

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.

  • Código de formato array de 'u' (gh-57281)

  • 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.)

  • 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:

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

    • 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

  • sysconfig.is_python_build() El parámetro check_home está obsoleto y se ignora.

  • Métodos threading:

  • typing.Text (gh-92332).

  • 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.

  • zipimport.zipimporter.load_module() está obsoleto: utilice exec_module() en su lugar.

C API deprecations

Pending removal in Python 3.15

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.