Desusos¶
Eliminación pendiente en Python 3.14¶
argparse
: Los parámetros type, choices y metavar deargparse.BooleanOptionalAction
está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 unDeprecationWarning
en tiempo de ejecución cuando se accede a ellas o se las utiliza, y se eliminarán en Python 3.14:ast.Num
ast.Str
ast.Bytes
ast.NameConstant
ast.Ellipsis
Utilice
ast.Constant
en su lugar. (Contribuido por Serhiy Storchaka en gh-90953.)-
Las clases de supervisión secundaria
MultiLoopChildWatcher
,FastChildWatcher
,AbstractChildWatcher
ySafeChildWatcher
está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 unDeprecationWarning
si 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
:ByteString
obsoleto. Se prefiereSequence
oBuffer
. Para uso en tipificación, se prefiere una unión, comobytes | bytearray
ocollections.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.ResourceReader
importlib.abc.Traversable
importlib.abc.TraversableResources
Utilice clases
importlib.resources.abc
en su lugar:(Contribuido por Jason R. Coombs y Hugo van Kemenade en gh-93963.)
itertools
tení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 unDeprecationWarning
cuando se utiliza.urllib
:urllib.parse.Quoter
está 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__.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)
-
La función
ctypes.SetPointerType()
no documentada ha quedado obsoleta desde Python 3.13.
-
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.
-
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.
-
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_lnotab
was deprecated in PEP 626 since 3.10 and was planned to be removed in 3.12, but it only got a properDeprecationWarning
in 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.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_read
yWave_write
han 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__.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.
-
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,
~True
o~False
, ha quedado obsoleta desde Python 3.12, ya que produce resultados sorprendentes y poco intuitivos (-2
y-1
). En su lugar, utilicenot 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 aint
explícitamente (~int(x)
).
-
La excepción
ExecError
ha quedado obsoleta desde Python 3.14. No ha sido utilizada por ninguna función enshutil
desde Python 3.4 y ahora es un alias deRuntimeError
.
-
El método
Class.get_methods
ha 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
,is
yor
. 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.January
ycalendar.February
han quedado obsoletas y han sido reemplazadas porcalendar.JANUARY
ycalendar.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.-
Método
load_module()
: utiliceexec_module()
en su lugar.cache_from_source()
El parámetro debug_override está obsoleto: utilice el parámetro optimization en su lugar.
-
Interfaz de tupla
EntryPoints
.None
implí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_constants
ysre_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.SSLContext
sin 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_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
: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 seaNone
de 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 estiloURLopener
yFancyURLopener
de 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 unElement
está 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_tag
enPyDictObject
para módulos de extensión (PEP 699; gh-101193).Creando
immutable types
con bases mutables (gh-95388).Funciones para configurar la inicialización de Python, obsoletas en Python 3.11:
PySys_SetArgvEx()
: EstablezcaPyConfig.argv
en su lugar.PySys_SetArgv()
: EstablezcaPyConfig.argv
en su lugar.Py_SetProgramName()
: EstablezcaPyConfig.program_name
en su lugar.Py_SetPythonHome()
: EstablezcaPyConfig.home
en su lugar.
La API
Py_InitializeFromConfig()
debe utilizarse conPyConfig
.Variables de configuración global:
Py_DebugFlag
: UtilicePyConfig.parser_debug
en su lugar.Py_VerboseFlag
: UtilicePyConfig.verbose
en su lugar.Py_QuietFlag
: UtilicePyConfig.quiet
en su lugar.Py_InteractiveFlag
: UtilicePyConfig.interactive
en su lugar.Py_InspectFlag
: UtilicePyConfig.inspect
en su lugar.Py_OptimizeFlag
: UtilicePyConfig.optimization_level
en su lugar.Py_NoSiteFlag
: UtilicePyConfig.site_import
en su lugar.Py_BytesWarningFlag
: UtilicePyConfig.bytes_warning
en su lugar.Py_FrozenFlag
: UtilicePyConfig.pathconfig_warnings
en su lugar.Py_IgnoreEnvironmentFlag
: UtilicePyConfig.use_environment
en su lugar.Py_DontWriteBytecodeFlag
: UtilicePyConfig.write_bytecode
en su lugar.Py_NoUserSiteDirectory
: UtilicePyConfig.user_site_directory
en su lugar.Py_UnbufferedStdioFlag
: UtilicePyConfig.buffered_stdio
en su lugar.Py_HashRandomizationFlag
: UtilicePyConfig.use_hash_seed
yPyConfig.hash_seed
en su lugar.Py_IsolatedFlag
: UtilicePyConfig.isolated
en su lugar.Py_LegacyWindowsFSEncodingFlag
: UtilicePyPreConfig.legacy_windows_fs_encoding
en su lugar.Py_LegacyWindowsStdioFlag
: UtilicePyConfig.legacy_windows_stdio
en su lugar.Py_FileSystemDefaultEncoding
: UtilicePyConfig.filesystem_encoding
en su lugar.Py_HasFileSystemDefaultEncoding
: UtilicePyConfig.filesystem_encoding
en su lugar.Py_FileSystemDefaultEncodeErrors
: UtilicePyConfig.filesystem_errors
en su lugar.Py_UTF8Mode
: UtilicePyPreConfig.utf8_mode
en 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_UNICODE
y macroPy_UNICODE_WIDE
: utilicewchar_t
en su lugar.Funciones de inicialización de Python:
PySys_ResetWarnOptions()
: borresys.warnoptions
ywarnings.filters
en su lugar.Py_GetExecPrefix()
: Getsys.base_exec_prefix
andsys.exec_prefix
instead.Py_GetPath()
: Obtengasys.path
en su lugar.Py_GetPrefix()
: Getsys.base_prefix
andsys.prefix
instead.Py_GetProgramFullPath()
: Obtengasys.executable
en su lugar.Py_GetProgramName()
: Obtengasys.executable
en su lugar.Py_GetPythonHome()
: Obtenga la variable de entornoPyConfig.home
oPYTHONHOME
en 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.