Desusos¶
Eliminación pendiente en Python 3.14¶
argparse: Los parámetros type, choices y metavar deargparse.BooleanOptionalActionestán obsoletos y se eliminarán en la versión 3.14. (Contribuido por Nikita Sobolev en gh-92248.)ast: Las siguientes funciones han quedado obsoletas en la documentación desde Python 3.8, ahora hacen que se emita unDeprecationWarningen tiempo de ejecución cuando se accede a ellas o se las utiliza, y se eliminarán en Python 3.14:ast.Numast.Strast.Bytesast.NameConstantast.Ellipsis
Utilice
ast.Constanten su lugar. (Contribuido por Serhiy Storchaka en gh-90953.)-
Las clases de supervisión secundaria
MultiLoopChildWatcher,FastChildWatcher,AbstractChildWatcherySafeChildWatcherestán obsoletas y se eliminarán en Python 3.14. (Contribuido por Kumar Aditya en gh-94597.)asyncio.set_child_watcher(),asyncio.get_child_watcher(),asyncio.AbstractEventLoopPolicy.set_child_watcher()yasyncio.AbstractEventLoopPolicy.get_child_watcher()están obsoletos y se eliminarán en Python 3.14. (Contribuido por Kumar Aditya en gh-94597.)El método
get_event_loop()de la política de bucle de eventos predeterminada ahora emite unDeprecationWarningsi no hay ningún bucle de eventos definido actualmente y decide crear uno. (Contribuido por Serhiy Storchaka y Guido van Rossum en gh-100160.)
collections.abc:ByteStringobsoleto. Se prefiereSequenceoBuffer. Para uso en tipificación, se prefiere una unión, comobytes | bytearrayocollections.abc.Buffer. (Contribuido por Shantanu Jain en gh-91896.)email: Se ha descontinuado el parámetro isdst enemail.utils.localtime(). (Contribuido por Alan Williams en gh-72346.)Clases obsoletas de
importlib.abc:importlib.abc.ResourceReaderimportlib.abc.Traversableimportlib.abc.TraversableResources
Utilice clases
importlib.resources.abcen su lugar:(Contribuido por Jason R. Coombs y Hugo van Kemenade en gh-93963.)
itertoolstenía un soporte indocumentado, ineficiente, históricamente lleno de errores e inconsistente para operaciones de copia, copia profunda y pickle. Esto se eliminará en la versión 3.14 para lograr una reducción significativa en el volumen de código y la carga de mantenimiento. (Contribuido por Raymond Hettinger en gh-101588.)multiprocessing: El método de inicio predeterminado cambiará a uno más seguro en Linux, BSD y otras plataformas POSIX que no sean macOS donde'fork'es actualmente el predeterminado (gh-84559). Agregar una advertencia de tiempo de ejecución sobre esto se consideró demasiado disruptivo ya que no se espera que la mayoría del código tenga en cuenta esto. Use las APIget_context()oset_start_method()para especificar explícitamente cuándo su código requires'fork'. Consulte Contextos y métodos de inicio.pathlib:is_relative_to()yrelative_to(): pasar argumentos adicionales está obsoleto.pkgutil:find_loader()yget_loader()ahora generanDeprecationWarning; utiliceimportlib.util.find_spec()en su lugar. (Contribuido por Nikita Sobolev en gh-97850.)pty:master_open(): utilicepty.openpty().slave_open(): utilicepty.openpty().
-
execute()yexecutemany()si se utilizan named placeholders y parameters es una secuencia en lugar dedict.
typing:ByteString, obsoleto desde Python 3.9, ahora hace que se emita unDeprecationWarningcuando se utiliza.urllib:urllib.parse.Quoterestá obsoleto: no estaba previsto que fuera una API pública. (Contribuido por Gregory P. Smith en gh-88168.)
Eliminación pendiente en Python 3.15¶
The import system:
Setting
__cached__on a module while failing to set__spec__.cachedis 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__.parentis deprecated. In Python 3.15,__package__will cease to be set or take into consideration by the import system or standard library. (gh-97879)
-
La función
ctypes.SetPointerType()no documentada ha quedado obsoleta desde Python 3.13.
-
El obsoleto y poco utilizado
CGIHTTPRequestHandlerha 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
--cgide la interfaz de línea de comandos python -m http.server ha quedado obsoleta desde Python 3.13.
-
Método
load_module(): utiliceexec_module()en su lugar.
-
La función
getdefaultlocale()ha quedado obsoleta desde Python 3.11. Su eliminación se había planeado originalmente para Python 3.13 (gh-90817), pero se pospuso hasta Python 3.15. Utilicegetlocale(),setlocale()ygetencoding()en su lugar. (Contribuido por Hugo van Kemenade en gh-111187.)
-
PurePath.is_reserved()ha quedado obsoleto desde Python 3.13. Utiliceos.path.isreserved()para detectar rutas reservadas en Windows.
-
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.
-
The check_home argument of
sysconfig.is_python_build()has been deprecated since Python 3.12.
-
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.CodeType: Accessingco_lnotabwas deprecated in PEP 626 since 3.10 and was planned to be removed in 3.12, but it only got a properDeprecationWarningin 3.12. May be removed in 3.15. (Contributed by Nikita Sobolev in gh-101866.)
-
La sintaxis de argumentos de palabras clave no documentada para crear clases
NamedTuple(p. ej.,Point = NamedTuple("Point", x=int, y=int)) ha quedado obsoleta desde Python 3.13. En su lugar, utilice la sintaxis basada en clases o la sintaxis funcional.When using the functional syntax of
TypedDicts, failing to pass a value to the fields parameter (TD = TypedDict("TD")) or passingNone(TD = TypedDict("TD", None)) has been deprecated since Python 3.13. Useclass TD(TypedDict): passorTD = 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ódulotyping, todavía no ha sido compatible con ningún verificador de tipos importante.
wave:Los métodos
getmark(),setmark()ygetmarkers()de las clasesWave_readyWave_writehan quedado obsoletos desde Python 3.13.
Pending removal in Python 3.16¶
The import system:
Setting
__loader__on a module while failing to set__spec__.loaderis deprecated. In Python 3.16,__loader__will cease to be set or taken into consideration by the import system or the standard library.
-
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.iscoroutinefunction()is deprecated and will be removed in Python 3.16, useinspect.iscoroutinefunction()instead. (Contributed by Jiahao Li and Kumar Aditya in gh-122875.)
-
La inversión bit a bit en tipos booleanos,
~Trueo~False, ha quedado obsoleta desde Python 3.12, ya que produce resultados sorprendentes y poco intuitivos (-2y-1). En su lugar, utilicenot xpara 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 aintexplícitamente (~int(x)).
-
La excepción
ExecErrorha quedado obsoleta desde Python 3.14. No ha sido utilizada por ninguna función enshutildesde Python 3.4 y ahora es un alias deRuntimeError.
-
El método
Class.get_methodsha quedado obsoleto desde Python 3.14.
sys:La función
_enablelegacywindowsfsencoding()ha quedado obsoleta desde Python 3.13. En su lugar, utilice la variable de entornoPYTHONLEGACYWINDOWSFSENCODING.
-
El atributo
TarFile.tarfile, no documentado ni utilizado, ha quedado obsoleto desde Python 3.13.
Pendiente de eliminación en futuras versiones¶
Las siguientes API se eliminarán en el futuro, aunque actualmente no hay una fecha programada para su eliminación.
argparse: Los grupos de argumentos anidados y los grupos mutuamente excluyentes anidados están obsoletos.-
bool(NotImplemented).Generadores: las firmas
throw(type, exc, tb)yathrow(type, exc, tb)están obsoletas: utilicethrow(exc)yathrow(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 claveand,else,for,if,in,isyor. 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 deint.Compatibilidad con el método
__float__()que devuelve una subclase estricta defloat: estos métodos serán necesarios para devolver una instancia defloat.Compatibilidad con el método
__complex__()que devuelve una subclase estricta decomplex: estos métodos serán necesarios para devolver una instancia decomplex.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 constantescalendar.Januaryycalendar.Februaryhan quedado obsoletas y han sido reemplazadas porcalendar.JANUARYycalendar.FEBRUARY. (Contribuido por Prince Roshan en gh-103636.)codeobject.co_lnotab: utilice el métodocodeobject.co_lines()en su lugar.-
utcnow(): utilicedatetime.datetime.now(tz=datetime.UTC).utcfromtimestamp(): utilicedatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC).
gettext: El valor plural debe ser un número entero.-
cache_from_source()El parámetro debug_override está obsoleto: utilice el parámetro optimization en su lugar.
-
Interfaz de tupla
EntryPoints.Noneimplícito en los valores de retorno.
logging: el métodowarn()ha quedado obsoleto desde Python 3.3, utilicewarning()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 aos.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_constantsysre_parse.shutil: El parámetro onerror dermtree()está obsoleto en Python 3.12; utilice el parámetro onexc en su lugar.Opciones y protocolos
ssl:ssl.SSLContextsin argumento de protocolo está obsoleto.ssl.SSLContext:set_npn_protocols()yselected_npn_protocol()están obsoletos: utilice ALPN en su lugar.Opciones de
ssl.OP_NO_SSL*Opciones de
ssl.OP_NO_TLS*ssl.PROTOCOL_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.TLSVersion.TLSv1_1
Métodos
threading:threading.Condition.notifyAll(): utilicenotify_all().threading.Event.isSet(): utiliceis_set().threading.Thread.isDaemon(),threading.Thread.setDaemon(): utilice el atributothreading.Thread.daemon.threading.Thread.getName(),threading.Thread.setName(): utilice el atributothreading.Thread.name.threading.currentThread(): utilicethreading.current_thread().threading.activeCount(): utilicethreading.active_count().
unittest.IsolatedAsyncioTestCase: está obsoleto devolver un valor que no seaNonede un caso de prueba.Funciones obsoletas de
urllib.parse:urlparse()en su lugarsplitattr()splithost()splitnport()splitpasswd()splitport()splitquery()splittag()splittype()splituser()splitvalue()to_bytes()
urllib.request: el estiloURLopeneryFancyURLopenerde invocar solicitudes está obsoleto. Utilice las funciones y métodosurlopen()más nuevos.wsgiref:SimpleHandler.stdout.write()no debería realizar escrituras parciales.xml.etree.ElementTree: La prueba del valor de verdad de unElementestá obsoleta. En una versión futura, siempre devolveráTrue. En su lugar, es preferible realizar pruebas explícitaslen(elem)oelem is not None.zipimport.zipimporter.load_module()está obsoleto: utiliceexec_module()en su lugar.
Desuso de la API C¶
Eliminación pendiente en Python 3.14¶
El campo
ma_version_tagenPyDictObjectpara módulos de extensión (PEP 699; gh-101193).Creando
immutable typescon bases mutables (gh-95388).Funciones para configurar la inicialización de Python, obsoletas en Python 3.11:
PySys_SetArgvEx(): EstablezcaPyConfig.argven su lugar.PySys_SetArgv(): EstablezcaPyConfig.argven su lugar.Py_SetProgramName(): EstablezcaPyConfig.program_nameen su lugar.Py_SetPythonHome(): EstablezcaPyConfig.homeen su lugar.
La API
Py_InitializeFromConfig()debe utilizarse conPyConfig.Variables de configuración global:
Py_DebugFlag: UtilicePyConfig.parser_debugen su lugar.Py_VerboseFlag: UtilicePyConfig.verboseen su lugar.Py_QuietFlag: UtilicePyConfig.quieten su lugar.Py_InteractiveFlag: UtilicePyConfig.interactiveen su lugar.Py_InspectFlag: UtilicePyConfig.inspecten su lugar.Py_OptimizeFlag: UtilicePyConfig.optimization_levelen su lugar.Py_NoSiteFlag: UtilicePyConfig.site_importen su lugar.Py_BytesWarningFlag: UtilicePyConfig.bytes_warningen su lugar.Py_FrozenFlag: UtilicePyConfig.pathconfig_warningsen su lugar.Py_IgnoreEnvironmentFlag: UtilicePyConfig.use_environmenten su lugar.Py_DontWriteBytecodeFlag: UtilicePyConfig.write_bytecodeen su lugar.Py_NoUserSiteDirectory: UtilicePyConfig.user_site_directoryen su lugar.Py_UnbufferedStdioFlag: UtilicePyConfig.buffered_stdioen su lugar.Py_HashRandomizationFlag: UtilicePyConfig.use_hash_seedyPyConfig.hash_seeden su lugar.Py_IsolatedFlag: UtilicePyConfig.isolateden su lugar.Py_LegacyWindowsFSEncodingFlag: UtilicePyPreConfig.legacy_windows_fs_encodingen su lugar.Py_LegacyWindowsStdioFlag: UtilicePyConfig.legacy_windows_stdioen su lugar.Py_FileSystemDefaultEncoding: UtilicePyConfig.filesystem_encodingen su lugar.Py_HasFileSystemDefaultEncoding: UtilicePyConfig.filesystem_encodingen su lugar.Py_FileSystemDefaultEncodeErrors: UtilicePyConfig.filesystem_errorsen su lugar.Py_UTF8Mode: UtilicePyPreConfig.utf8_modeen su lugar. (verPy_PreInitialize())
La API
Py_InitializeFromConfig()debe utilizarse conPyConfig.
Eliminación pendiente en Python 3.15¶
La copia incluida de
libmpdecimal.PyImport_ImportModuleNoBlock(): utilicePyImport_ImportModule()en su lugar.PyWeakref_GetObject()yPyWeakref_GET_OBJECT(): utilicePyWeakref_GetRef()en su lugar.Tipo
Py_UNICODEy macroPy_UNICODE_WIDE: utilicewchar_ten su lugar.Funciones de inicialización de Python:
PySys_ResetWarnOptions(): borresys.warnoptionsywarnings.filtersen su lugar.Py_GetExecPrefix(): Getsys.base_exec_prefixandsys.exec_prefixinstead.Py_GetPath(): Obtengasys.pathen su lugar.Py_GetPrefix(): Getsys.base_prefixandsys.prefixinstead.Py_GetProgramFullPath(): Obtengasys.executableen su lugar.Py_GetProgramName(): Obtengasys.executableen su lugar.Py_GetPythonHome(): Obtenga la variable de entornoPyConfig.homeoPYTHONHOMEen su lugar.
Pendiente de eliminación en futuras versiones¶
Las siguientes API están obsoletas y se eliminarán, aunque actualmente no hay una fecha programada para su eliminación.
Py_TPFLAGS_HAVE_FINALIZE: Innecesario desde Python 3.8.PyErr_Fetch(): UtilicePyErr_GetRaisedException()en su lugar.PyErr_NormalizeException(): UtilicePyErr_GetRaisedException()en su lugar.PyErr_Restore(): UtilicePyErr_SetRaisedException()en su lugar.PyModule_GetFilename(): UtilicePyModule_GetFilenameObject()en su lugar.PyOS_AfterFork(): UtilicePyOS_AfterFork_Child()en su lugar.PySlice_GetIndicesEx(): UtilicePySlice_Unpack()yPySlice_AdjustIndices()en su lugar.PyUnicode_AsDecodedObject(): UtilicePyCodec_Decode()en su lugar.PyUnicode_AsDecodedUnicode(): UtilicePyCodec_Decode()en su lugar.PyUnicode_AsEncodedObject(): UtilicePyCodec_Encode()en su lugar.PyUnicode_AsEncodedUnicode(): UtilicePyCodec_Encode()en su lugar.PyUnicode_READY(): Innecesario desde Python 3.12PyErr_Display(): UtilicePyErr_DisplayException()en su lugar._PyErr_ChainExceptions(): Utilice_PyErr_ChainExceptions1()en su lugar.Miembro de
PyBytesObject.ob_shash: llame aPyObject_Hash()en su lugar.Miembro de
PyDictObject.ma_version_tag.API de almacenamiento local de subprocesos (TLS):
PyThread_create_key(): UtilicePyThread_tss_alloc()en su lugar.PyThread_delete_key(): UtilicePyThread_tss_free()en su lugar.PyThread_set_key_value(): UtilicePyThread_tss_set()en su lugar.PyThread_get_key_value(): UtilicePyThread_tss_get()en su lugar.PyThread_delete_key_value(): UtilicePyThread_tss_delete()en su lugar.PyThread_ReInitTLS(): Innecesario desde Python 3.7.