Descontinuações¶
Remoção pendente no Python 3.15¶
O sistema de importação:
A definição de
__cached__
em um módulo enquanto falha na definição de__spec__.loader
está descontinuado. No Python 3.15,__cached__
deixará de ser definido ou levado em consideração pelo sistema de importação ou pela biblioteca padrão. (gh-97879)A definição de
__package__
em um módulo enquanto falha na definição de__spec__.parent
está descontinuado. No Python 3.15,__package__
deixará de ser definido ou levado em consideração pelo sistema de importação ou pela biblioteca padrão. (gh-97879)
-
A função não documentada
ctypes.SetPointerType()
foi descontinuada desde o Python 3.13.
-
The obsolete and rarely used
CGIHTTPRequestHandler
has been deprecated since Python 3.13. No direct replacement exists. Anything is better than CGI to interface a web server with a request handler.O sinalizador
--cgi
para a interface de linha de comando python -m http.server foi descontinuado desde o Python 3.13.
-
Método
load_module()
: useexec_module()
em vez disso.
-
A função
getdefaultlocale()
foi descontinuada desde o Python 3.11. Sua remoção foi planejada originalmente para o Python 3.13 (gh-90817), mas foi adiada para o Python 3.15. Em vez disso, usegetlocale()
,setlocale()
egetencoding()
. (Contribuição de Hugo van Kemenade em gh-111187.)
-
.PurePath.is_reserved()
has been deprecated since Python 3.13. Useos.path.isreserved()
to detect reserved paths on Windows.
-
platform.java_ver()
has been deprecated since Python 3.13. This function is only useful for Jython support, has a confusing API, and is largely untested.
-
O argumento check_home de
sysconfig.is_python_build()
foi descontinuado desde o Python 3.12.
-
RLock()
não aceitará argumentos no Python 3.15. A passagem quaisquer argumentos foi descontinuada desde o Python 3.14, pois a versão Python não permite nenhum argumento, mas a versão C permite qualquer número de argumentos posicionais ou nomeados, ignorando todos os argumentos.
-
types.CodeType
: o acesso aco_lnotab
foi descontinuado na PEP 626 desde 3.10 e foi planejado para ser removido em 3.12, mas só recebeu umaDeprecationWarning
adequada em 3.12. Pode ser removido em 3.15. (Contribuição de Nikita Sobolev em gh-101866.)
-
A não-documentada sintaxe de argumento nomeado para criar classes
NamedTuple
(por exemplo,Point = NamedTuple("Point", x=int, y=int)
) foi descontinuada desde o Python 3.13. Em vez disso, use as sintaxes baseada em classe ou funcional.Ao usar a sintaxe funcional de
TypedDict
s, não passar um valor para o parâmetro fields (TD = TypedDict("TD")
) ou passarNone
(TD = TypedDict("TD", None)
) foi está descontinuado desde o Python 3.13. Useclass TD(TypedDict): pass
ouTD = TypedDict("TD", {})
para criar uma classe TypedDict com nenhum campo.A função decoradora
typing.no_type_check_decorator()
foi descontinuada desde o Python 3.13. Após oito anos no módulotyping
, ela ainda não foi suportada por nenhum verificador de tipo importante.
Módulos
sre_compile
,sre_constants
esre_parse
.wave
:The
getmark()
,setmark()
andgetmarkers()
methods of theWave_read
andWave_write
classes have been deprecated since Python 3.13.
-
zipimport.zipimporter.load_module()
has been deprecated since Python 3.10. Useexec_module()
instead. (gh-125746.)
Remoção pendente no Python 3.16¶
O sistema de importação:
A definição de
__loader__
em um módulo enquanto falha na definição de__spec__.loader
está descontinuado. No Python 3.16,__loader__
deixará de ser definido ou levado em consideração pelo sistema de importação ou pela biblioteca padrão.
-
O código de formato
'u'
(wchar_t
) foi descontinuado na documentação desde o Python 3.3 e em tempo de execução desde o Python 3.13. Use o código de formato'w'
(Py_UCS4
) para caracteres Unicode.
-
asyncio.iscoroutinefunction()
foi descontinuado e será removido no Python 3.16, useinspect.iscoroutinefunction()
em vez disso. (Contribuição de Jiahao Li e Kumar Aditya em gh-122875.)O sistema de políticas
asyncio
está descontinuado e será removido no Python 3.16. Em particular, as seguintes classes e funções estão descontinuadas:Os usuários devem usar
asyncio.run()
ouasyncio.Runner
com loop_factory para usar a implementação de loop de eventos desejada.por exemplo, para usar
asyncio.SelectorEventLoop
no Windows:import asyncio async def main(): ... asyncio.run(main(), loop_factory=asyncio.SelectorEventLoop)
(Contribuição de Kumar Aditya em gh-127949.)
-
A inversão bit a bit em tipos booleanos,
~True
ou~False
foi descontinuada desde o Python 3.12, pois produz resultados surpreendentes e não intuitivos (-2
e-1
). Usenot x
em vez disso para a negação lógica de um Booleano. No caso raro de você precisar da inversão bit a bit do inteiro subjacente, converta paraint
explicitamente (~int(x)
).
-
A chamada da implementação Python de
functools.reduce()
com function ou sequence como argumentos nomeados foi descontinuada desde o Python 3.14.
-
O suporte para manipuladores de registro personalizados com o argumento strm foi descontinuado e está programado para ser removido no Python 3.16. Em vez disso, defina manipuladores com o argumento stream. (Contribuição de Mariusz Felisiak em gh-115032.)
-
Extensões válidas começam com um ‘.’ ou estão vazias para
mimetypes.MimeTypes.add_type()
. Extensões sem ponto estão descontinuadas e levantarão uma exceçãoValueError
no Python 3.16. (Contribuição de Hugo van Kemenade em gh-75223.)
-
A exceção
ExecError
foi descontinuada desde o Python 3.14. Ela não foi usada por nenhuma função emshutil
desde o Python 3.4, e agora é um alias deRuntimeError
.
-
O método
Class.get_methods
foi descontinuado desde o Python 3.14.
sys
:A função
_enablelegacywindowsfsencoding()
foi descontinuada desde o Python 3.13. Use a variável de ambientePYTHONLEGACYWINDOWSFSENCODING
.
-
A função
sysconfig.expand_makefile_vars()
está descontinuada desde o Python 3.14. Em vez disso, use o argumentovars
desysconfig.get_paths()
.
-
O atributo não documentado e não utilizado
TarFile.tarfile
foi descontinuado desde o Python 3.13.
Remoção pendente no Python 3.17¶
-
collections.abc.ByteString
está agendado para remoção no Python 3.17.Use
isinstance(obj, collections.abc.Buffer)
para testar seobj
implementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, useBuffer
ou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo,bytes | bytearray | memoryview
).ByteString
foi originalmente concebido para ser uma classe abstrata que serviria como um supertipo debytes
ebytearray
. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância deByteString
nunca lhe dizia nada de útil sobre o objeto. Outros tipos comuns de buffer, comomemoryview
, também nunca foram entendidos como subtipos deByteString
(seja em tempo de execução ou por verificadores de tipo estáticos).Veja PEP 688 para mais detalhes. (Contribuição de Shantanu Jain em gh-91896.)
-
Antes do Python 3.14, as uniões antigas eram implementadas usando a classe privada
typing._UnionGenericAlias
. Essa classe não é mais necessária para a implementação, mas foi mantida para compatibilidade com versões anteriores, com remoção prevista para o Python 3.17. Os usuários devem usar auxiliares de introspecção documentados, comotyping.get_origin()
etyping.get_args()
, em vez de depender de detalhes de implementação privada.typing.ByteString
, obsoleto desde o Python 3.9, está programado para ser removido no Python 3.17.Use
isinstance(obj, collections.abc.Buffer)
para testar seobj
implementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, useBuffer
ou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo,bytes | bytearray | memoryview
).ByteString
foi originalmente concebido para ser uma classe abstrata que serviria como um supertipo debytes
ebytearray
. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância deByteString
nunca lhe dizia nada de útil sobre o objeto. Outros tipos comuns de buffer, comomemoryview
, também nunca foram entendidos como subtipos deByteString
(seja em tempo de execução ou por verificadores de tipo estáticos).Veja PEP 688 para mais detalhes. (Contribuição de Shantanu Jain em gh-91896.)
Remoção pendente no Python 3.19¶
-
In hash function constructors such as
new()
or the direct hash-named constructors such asmd5()
andsha256()
, their optional initial data parameter could also be passed a keyword argument nameddata=
orstring=
in varioushashlib
implementations.Support for the
string
keyword argument name is now deprecated and slated for removal in Python 3.19.Before Python 3.13, the
string
keyword parameter was not correctly supported depending on the backend implementation of hash functions. Prefer passing the initial data as a positional argument for maximum backwards compatibility.
Remoção pendente em versões futuras¶
As APIs a seguir serão removidas no futuro, embora atualmente não haja uma data agendada para sua remoção.
-
O aninhamento de grupos de argumentos e o aninhamento de grupos mutuamente exclusivos estão descontinuado.
A passagem do argumento nomeado não documentado prefix_chars para
add_argument_group()
agora está descontinuado.O conversor de tipo
argparse.FileType
está descontinuado.
-
bool(NotImplemented)
.Geradores: a assinatura
throw(type, exc, tb)
eathrow(type, exc, tb)
está descontinuada: usethrow(exc)
eathrow(exc)
, a assinatura do argumento único.Atualmente Python aceita literais numéricos imediatamente seguidos por palavras reservadas como, por exemplo,
0in x
,1or x
,0if 1else 2
. Ele permite expressões confusas e ambíguas como[0x1for x in y]
(que pode ser interpretada como[0x1 for x in y]
ou[0x1f or x in y]
). Um aviso de sintaxe é levantado se o literal numérico for imediatamente seguido por uma das palavras reservadasand
,else
,for
,if
,in
,is
eor
. Em uma versão futura, será alterado para um erro de sintaxe. (gh-87999)Suporte para métodos
__index__()
e__int__()
retornando tipo não-int: esses métodos serão necessários para retornar uma instância de uma subclasse estrita deint
.Suporte para o método
__float__()
retornando uma subclasse estrita defloat
: esses métodos serão necessários para retornar uma instância defloat
.Suporte para o método
__complex__()
retornando uma subclasse estrita decomplex
: esses métodos serão necessários para retornar uma instância decomplex
.Delegação do método
int()
para o__trunc__()
.Passar um número complexo como argumento real ou imag no construtor
complex()
agora está descontinuado; deve ser passado apenas como um único argumento posicional. (Contribuição de Serhiy Storchaka em gh-109218.)
calendar
: as constantescalendar.January
ecalendar.February
foram descontinuadas e substituídas porcalendar.JANUARY
ecalendar.FEBRUARY
. (Contribuição de Prince Roshan em gh-103636.)codecs
: useopen()
em vez decodecs.open()
. (gh-133038)codeobject.co_lnotab
: use o métodocodeobject.co_lines()
.-
utcnow()
: usedatetime.datetime.now(tz=datetime.UTC)
.utcfromtimestamp()
: usedatetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)
.
gettext
: o valor de plural deve ser um número inteiro.-
O parâmetro debug_override de
cache_from_source()
foi descontinuado: em vez disso, use o parâmetro optimization.
-
Interface de tupla
EntryPoints
.None
implícito nos valores de retorno.
logging
: o métodowarn()
foi descontinuado desde o Python 3.3, usewarning()
.mailbox
: o uso da entrada StringIO e do modo de texto foi descontinuado; em vez disso, use BytesIO e o modo binário.os
: chameos.register_at_fork()
em processo multithread.pydoc.ErrorDuringImport
: um valor de tupla para o parâmetro exc_info foi descontinuado, use uma instância de exceção.re
: regras mais rigorosas agora são aplicadas para referências numéricas de grupos e nomes de grupos em expressões regulares. Apenas a sequência de dígitos ASCII agora é aceita como referência numérica. O nome do grupo em padrões de bytes e strings de substituição agora pode conter apenas letras e dígitos ASCII e sublinhado. (Contribuição de Serhiy Storchaka em gh-91760.)shutil
: o parâmetro onerror dermtree()
foi descontinuado no Python 3.12; use o parâmetro onexc.Protocolos e opções de
ssl
ssl.SSLContext
sem argumento de protocolo foi descontinuado.ssl.SSLContext
:set_npn_protocols()
eselected_npn_protocol()
foram descontinuados: use ALPN.Opções de
ssl.OP_NO_SSL*
Opções 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 de
threading
:threading.Condition.notifyAll()
: usenotify_all()
.threading.Event.isSet()
: useis_set()
.threading.Thread.isDaemon()
,threading.Thread.setDaemon()
: use o atributothreading.Thread.daemon
.threading.Thread.getName()
,threading.Thread.setName()
: use o atributothreading.Thread.name
.threading.currentThread()
: usethreading.current_thread()
.threading.activeCount()
: usethreading.active_count()
.
A classe interna
typing._UnionGenericAlias
não é mais usada para implementartyping.Union
. Para preservar a compatibilidade com usuários que utilizam esta classe privada, uma correção de compatibilidade será fornecida pelo menos até a versão 3.17 do Python. (Contribuição de Jelle Zijlstra em gh-105499.)unittest.IsolatedAsyncioTestCase
: foi descontinuado retornar um valor que não sejaNone
de um caso de teste.Funções descontinuadas de
urllib.parse
: useurlparse()
splitattr()
splithost()
splitnport()
splitpasswd()
splitport()
splitquery()
splittag()
splittype()
splituser()
splitvalue()
to_bytes()
wsgiref
:SimpleHandler.stdout.write()
não deve fazer gravações parciais.xml.etree.ElementTree
: testar o valor verdade de umElement
está descontinuado. Em um lançamento futuro isso sempre retornaráTrue
. Em vez disso, prefira os testes explícitoslen(elem)
ouelem is not None
.sys._clear_type_cache()
está descontinuada: usesys._clear_internal_caches()
.
Descontinuações na API C¶
Remoção pendente no Python 3.15¶
The
PyImport_ImportModuleNoBlock()
: UsePyImport_ImportModule()
instead.PyWeakref_GetObject()
andPyWeakref_GET_OBJECT()
: UsePyWeakref_GetRef()
instead. The pythoncapi-compat project can be used to getPyWeakref_GetRef()
on Python 3.12 and older.O tipo
Py_UNICODE
e a macroPy_UNICODE_WIDE
: usewchar_t
.PyUnicode_AsDecodedObject()
: usePyCodec_Decode()
.PyUnicode_AsDecodedUnicode()
: UsePyCodec_Decode()
; Note que alguns codecs (por exemplo, “base64”) podem retornar um tipo diferente destr
, tal comobytes
.PyUnicode_AsEncodedObject()
: usePyCodec_Encode()
.PyUnicode_AsEncodedUnicode()
: UsePyCodec_Encode()
; Note que alguns codecs (por exemplo, “base64”) podem retornar um tipo diferente debytes
, tal comstr
.Funções de inicialização do Python, descontinuadas no Python 3.13:
Py_GetPath()
: UsePyConfig_Get("module_search_paths")
(sys.path
) instead.Py_GetPrefix()
: UsePyConfig_Get("base_prefix")
(sys.base_prefix
) instead. UsePyConfig_Get("prefix")
(sys.prefix
) if virtual environments need to be handled.Py_GetExecPrefix()
: UsePyConfig_Get("base_exec_prefix")
(sys.base_exec_prefix
) instead. UsePyConfig_Get("exec_prefix")
(sys.exec_prefix
) if virtual environments need to be handled.Py_GetProgramFullPath()
: UsePyConfig_Get("executable")
(sys.executable
) instead.Py_GetProgramName()
: UsePyConfig_Get("executable")
(sys.executable
) instead.Py_GetPythonHome()
: UsePyConfig_Get("home")
or thePYTHONHOME
environment variable instead.
O projeto pythoncapi-compat pode ser usado para obter
PyConfig_Get()
no Python 3.13 e versões anteriores.Funções para configurar a inicialização do Python, descontinuadas no Python 3.11:
PySys_SetArgvEx()
: definaPyConfig.argv
.PySys_SetArgv()
: definaPyConfig.argv
.Py_SetProgramName()
: definaPyConfig.program_name
.Py_SetPythonHome()
: definaPyConfig.home
.PySys_ResetWarnOptions()
: Clearsys.warnoptions
andwarnings.filters
instead.
A API
Py_InitializeFromConfig()
deve ser usada comPyConfig
.Variáveis de configuração globais
Py_DebugFlag
: UsePyConfig.parser_debug
ouPyConfig_Get("parser_debug")
.Py_VerboseFlag
: UsePyConfig.verbose
ouPyConfig_Get("verbose")
.Py_InteractiveFlag
: UsePyConfig.interactive
ouPyConfig_Get("interactive")
.Py_InspectFlag
: UsePyConfig.inspect
ouPyConfig_Get("inspect")
.Py_OptimizeFlag
: UsePyConfig.optimization_level
ouPyConfig_Get("optimization_level")
.Py_NoSiteFlag
: UsePyConfig.site_import
ouPyConfig_Get("site_import")
.Py_BytesWarningFlag
: UsePyConfig.bytes_warning
ouPyConfig_Get("bytes_warning")
.Py_FrozenFlag
: UsePyConfig.pathconfig_warnings
ouPyConfig_Get("pathconfig_warnings")
.Py_IgnoreEnvironmentFlag
: UsePyConfig.use_environment
ouPyConfig_Get("use_environment")
.Py_DontWriteBytecodeFlag
: UsePyConfig.write_bytecode
ouPyConfig_Get("write_bytecode")
.Py_NoUserSiteDirectory
: UsePyConfig.user_site_directory
ouPyConfig_Get("user_site_directory")
.Py_UnbufferedStdioFlag
: UsePyConfig.buffered_stdio
ouPyConfig_Get("buffered_stdio")
.Py_HashRandomizationFlag
: UsePyConfig.use_hash_seed
ePyConfig.hash_seed
ouPyConfig_Get("hash_seed")
.Py_IsolatedFlag
: UsePyConfig.isolated
ouPyConfig_Get("isolated")
.Py_LegacyWindowsFSEncodingFlag
: UsePyPreConfig.legacy_windows_fs_encoding
ouPyConfig_Get("legacy_windows_fs_encoding")
.Py_LegacyWindowsStdioFlag
: UsePyConfig.legacy_windows_stdio
ouPyConfig_Get("legacy_windows_stdio")
.Py_FileSystemDefaultEncoding
,Py_HasFileSystemDefaultEncoding
: UsePyConfig.filesystem_encoding
ouPyConfig_Get("filesystem_encoding")
.Py_FileSystemDefaultEncodeErrors
: UsePyConfig.filesystem_errors
ouPyConfig_Get("filesystem_errors")
.Py_UTF8Mode
: UsePyPreConfig.utf8_mode
ouPyConfig_Get("utf8_mode")
. (vejaPy_PreInitialize()
)
A API
Py_InitializeFromConfig()
deve ser usada comPyConfig
para definir essas opções. OuPyConfig_Get()
pode ser usado para obter essas opções em tempo de execução.
Remoção pendente no Python 3.18¶
As seguintes funções privadas estão descontinuado e planejadas para remoção no Python 3.18:
_PyBytes_Join()
: usePyBytes_Join()
._PyDict_GetItemStringWithError()
: usePyDict_GetItemStringRef()
._PyDict_Pop()
: usePyDict_Pop()
._PyLong_Sign()
: usePyLong_GetSign()
._PyLong_FromDigits()
e_PyLong_New()
: usePyLongWriter_Create()
._PyThreadState_UncheckedGet()
: usePyThreadState_GetUnchecked()
._PyUnicode_AsString()
: usePyUnicode_AsUTF8()
._PyUnicodeWriter_Init()
: substitua_PyUnicodeWriter_Init(&writer)
comwriter = PyUnicodeWriter_Create(0)
._PyUnicodeWriter_Finish()
: substitua_PyUnicodeWriter_Finish(&writer)
porPyUnicodeWriter_Finish(writer)
._PyUnicodeWriter_Dealloc()
: substitua_PyUnicodeWriter_Dealloc(&writer)
porPyUnicodeWriter_Discard(writer)
._PyUnicodeWriter_WriteChar()
: substituta_PyUnicodeWriter_WriteChar(&writer, ch)
comPyUnicodeWriter_WriteChar(writer, ch)
._PyUnicodeWriter_WriteStr()
: substitua_PyUnicodeWriter_WriteStr(&writer, str)
porPyUnicodeWriter_WriteStr(writer, str)
._PyUnicodeWriter_WriteSubstring()
: substitua_PyUnicodeWriter_WriteSubstring(&writer, str, start, end)
porPyUnicodeWriter_WriteSubstring(writer, str, start, end)
._PyUnicodeWriter_WriteASCIIString()
: substitua_PyUnicodeWriter_WriteASCIIString(&writer, str)
porPyUnicodeWriter_WriteASCII(writer, str)
._PyUnicodeWriter_WriteLatin1String()
: substitua_PyUnicodeWriter_WriteLatin1String(&writer, str)
porPyUnicodeWriter_WriteUTF8(writer, str)
._PyUnicodeWriter_Prepare()
: (sem substituto)._PyUnicodeWriter_PrepareKind()
: (sem substituto)._Py_HashPointer()
: usePy_HashPointer()
._Py_fopen_obj()
: usePy_fopen()
.
O projeto pythoncapi-compat pode ser usado para obter essas novas funções públicas no Python 3.13 e versões anteriores. (Contribuição de Victor Stinner em gh-128863.)
Pending removal in Python 3.20¶
The
cval
field inPyComplexObject
(gh-128813). UsePyComplex_AsCComplex()
andPyComplex_FromCComplex()
to convert a Python complex number to/from the CPy_complex
representation.
Remoção pendente em versões futuras¶
As APIs a seguir foram descontinuadas e serão removidas, embora atualmente não haja uma data agendada para sua remoção.
Py_TPFLAGS_HAVE_FINALIZE
: desnecessária desde o Python 3.8.PySlice_GetIndicesEx()
: usePySlice_Unpack()
ePySlice_AdjustIndices()
.PyUnicode_READY()
: desnecessário desde o Python 3.12PyErr_Display()
: usePyErr_DisplayException()
._PyErr_ChainExceptions()
: use_PyErr_ChainExceptions1()
.O membro
PyBytesObject.ob_shash
: chamePyObject_Hash()
.API do Thread Local Storage (TLS):
PyThread_ReInitTLS()
: desnecessário desde o Python 3.7.