# Pending removal in future versions

Las siguientes APIs serán eliminadas en el futuro, aunque no hay fecha de planificación exacta para ello.

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

  - 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__()` e `__int__()` que retornan un tipo que no es int: estos métodos serán necesarios para retornar una instancia de una subclase estricta de `int`.

  - Compatibilidad con el método `__float__()` que retorna una subclase estricta de `float`: será necesario que estos métodos retornen una instancia de `float`.

  - Compatibilidad con el método `__complex__()` que retorna una subclase estricta de `complex`: será necesario que estos métodos retornen una instancia de `complex`.

  - 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. (Contribución de 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`. (Contribución de Prince Roshan en gh-103636.)

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

- `codeobject.co_lnotab`: use the `codeobject.co_lines()` method instead.

- `datetime`:

  - `utcnow()`: use `datetime.datetime.now(tz=datetime.UTC)`.

  - `utcfromtimestamp()`: use `datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)`.

- `gettext`: El valor plural tiene que ser un entero.

- `importlib`:

  - El parámetro debug_override de `cache_from_source()` queda obsoleto: use el parámetro optimization en su lugar.

- `importlib.metadata`:

  - Interfaz de tupla `EntryPoints`.

  - `None` implícito en valores retornados.

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

- `mailbox`: El uso del modo de entrada y texto StringIO está obsoleto, use BytesIO y el modo binario en su lugar.

- `os`: Calling `os.register_at_fork()` in a multi-threaded process.

- `os.path`: `os.path.commonprefix()` is deprecated, use `os.path.commonpath()` for path prefixes. The `os.path.commonprefix()` function is being deprecated due to having a misleading name and module. The function is not safe to use for path prefixes despite being included in a module about path manipulation, meaning it is easy to accidentally introduce path traversal vulnerabilities into Python programs by using this function.

- `pydoc.ErrorDuringImport`: El valor de tupla para el parámetro exc_info queda obsoleto, use una excepción en su lugar.

- `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. (Contribución de Serhiy Storchaka en gh-91760.)

- `shutil`: el parámetro onerror de `rmtree()` queda obsoleto en Python 3.12; use el parámetro onexc en su lugar.

- Opciones y protocolos de `ssl`:

  - `ssl.SSLContext` sin argumento de protocolo queda obsoleto.

  - `ssl.SSLContext`: `set_npn_protocols()` y `selected_npn_protocol()` quedan obsoletas: use ALPN en su lugar.

  - Opciones `ssl.OP_NO_SSL*`

  - Opciones `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 de `threading`:

  - `threading.Condition.notifyAll()`: use `notify_all()`.

  - `threading.Event.isSet()`: use `is_set()`.

  - `threading.Thread.isDaemon()`, `threading.Thread.setDaemon()`: use el atributo `threading.Thread.daemon`.

  - `threading.Thread.getName()`, `threading.Thread.setName()`: use el atributo `threading.Thread.name`.

  - `threading.currentThread()`: use `threading.current_thread()`.

  - `threading.activeCount()`: use `threading.active_count()`.

- `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`: queda deprecado retornar un valor que no sea `None` en un caso de prueba.

- Funciones deprecadas de `urllib.parse`: use `urlparse()` en su lugar

  - `splitattr()`

  - `splithost()`

  - `splitnport()`

  - `splitpasswd()`

  - `splitport()`

  - `splitquery()`

  - `splittag()`

  - `splittype()`

  - `splituser()`

  - `splitvalue()`

  - `to_bytes()`

- `wsgiref`: `SimpleHandler.stdout.write()` no debería hacer escrituras parciales.

- `xml.etree.ElementTree`: La prueba del valor de verdad de un `Element` está obsoleta. En una versión futura, siempre retornará `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.