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__.loaderestá 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__.parentestá 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.
-
A classe obsoleta e raramente usada
CGIHTTPRequestHandlerfoi descontinuada desde o Python 3.13. Não existe substituição direta. Qualquer coisa é melhor que CGI para fazer a interface de um servidor web com um manipulador de requisição.O sinalizador
--cgipara 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()foi descontinuado desde o Python 3.13. Useos.path.isreserved()para detectar caminhos reservados no Windows.
-
java_ver()foi descontinuada desde o Python 3.13. Esta função é útil apenas para suporte Jython, tem uma API confusa e é amplamente não testada.
-
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_lnotabfoi descontinuado na PEP 626 desde 3.10 e foi planejado para ser removido em 3.12, mas só recebeu umaDeprecationWarningadequada 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
TypedDicts, 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): passouTD = 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.
wave:Os métodos
getmark(),setmark()egetmarkers()das classesWave_readeWave_writeforam descontinuados desde o Python 3.13.
-
load_module()está descontinuado desde o Python 3.10. Em vez disso, useexec_module(). (Contribuição de Jiahao Li em 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__.loaderestá 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
asyncioestá 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.Runnercom loop_factory para usar a implementação de loop de eventos desejada.por exemplo, para usar
asyncio.SelectorEventLoopno 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,
~Trueou~Falsefoi descontinuada desde o Python 3.12, pois produz resultados surpreendentes e não intuitivos (-2e-1). Usenot xem 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 paraintexplicitamente (~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çãoValueErrorno Python 3.16. (Contribuição de Hugo van Kemenade em gh-75223.)
-
A exceção
ExecErrorfoi descontinuada desde o Python 3.14. Ela não foi usada por nenhuma função emshutildesde o Python 3.4, e agora é um alias deRuntimeError.
-
O método
Class.get_methodsfoi 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 argumentovarsdesysconfig.get_paths().
-
O atributo não documentado e não utilizado
TarFile.tarfilefoi descontinuado desde o Python 3.13.
Remoção pendente no Python 3.17¶
-
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.
Remoção pendente no Python 3.19¶
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.FileTypeestá 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,iseor. 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.Januaryecalendar.Februaryforam descontinuadas e substituídas porcalendar.JANUARYecalendar.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.Noneimplí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.)Módulos
sre_compile,sre_constantsesre_parse.shutil: o parâmetro onerror dermtree()foi descontinuado no Python 3.12; use o parâmetro onexc.Protocolos e opções de
sslssl.SSLContextsem 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_SSLv3ssl.PROTOCOL_TLSssl.PROTOCOL_TLSv1ssl.PROTOCOL_TLSv1_1ssl.PROTOCOL_TLSv1_2ssl.TLSVersion.SSLv3ssl.TLSVersion.TLSv1ssl.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._UnionGenericAliasnã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 sejaNonede 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 umElementestá 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¶
A cópia empacotada do
libmpdecimal.The
PyImport_ImportModuleNoBlock(): usePyImport_ImportModule().PyWeakref_GetObject()ePyWeakref_GET_OBJECT(): UsePyWeakref_GetRef(). O projeto pythoncapi-compat pode ser usado para usarPyWeakref_GetRef()no Python 3.12 e versões anteriores.O tipo
Py_UNICODEe 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).Py_GetPrefix(): UsePyConfig_Get("base_prefix")(sys.base_prefix). UsePyConfig_Get("prefix")(sys.prefix) se ambientes virtuais precisam ser tratados.Py_GetExecPrefix(): UsePyConfig_Get("base_exec_prefix")(sys.base_exec_prefix). UsePyConfig_Get("exec_prefix")(sys.exec_prefix) se ambientes virtuais precisam ser tratados.Py_GetProgramFullPath(): UsePyConfig_Get("executable")(sys.executable).Py_GetProgramName(): UsePyConfig_Get("executable")(sys.executable).Py_GetPythonHome(): UsePyConfig_Get("home")ou a variável de ambientePYTHONHOME.
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(): apaguesys.warnoptionsewarnings.filters.
A API
Py_InitializeFromConfig()deve ser usada comPyConfig.Variáveis de configuração globais
Py_DebugFlag: UsePyConfig.parser_debugouPyConfig_Get("parser_debug").Py_VerboseFlag: UsePyConfig.verboseouPyConfig_Get("verbose").Py_InteractiveFlag: UsePyConfig.interactiveouPyConfig_Get("interactive").Py_InspectFlag: UsePyConfig.inspectouPyConfig_Get("inspect").Py_OptimizeFlag: UsePyConfig.optimization_levelouPyConfig_Get("optimization_level").Py_NoSiteFlag: UsePyConfig.site_importouPyConfig_Get("site_import").Py_BytesWarningFlag: UsePyConfig.bytes_warningouPyConfig_Get("bytes_warning").Py_FrozenFlag: UsePyConfig.pathconfig_warningsouPyConfig_Get("pathconfig_warnings").Py_IgnoreEnvironmentFlag: UsePyConfig.use_environmentouPyConfig_Get("use_environment").Py_DontWriteBytecodeFlag: UsePyConfig.write_bytecodeouPyConfig_Get("write_bytecode").Py_NoUserSiteDirectory: UsePyConfig.user_site_directoryouPyConfig_Get("user_site_directory").Py_UnbufferedStdioFlag: UsePyConfig.buffered_stdioouPyConfig_Get("buffered_stdio").Py_HashRandomizationFlag: UsePyConfig.use_hash_seedePyConfig.hash_seedouPyConfig_Get("hash_seed").Py_IsolatedFlag: UsePyConfig.isolatedouPyConfig_Get("isolated").Py_LegacyWindowsFSEncodingFlag: UsePyPreConfig.legacy_windows_fs_encodingouPyConfig_Get("legacy_windows_fs_encoding").Py_LegacyWindowsStdioFlag: UsePyConfig.legacy_windows_stdioouPyConfig_Get("legacy_windows_stdio").Py_FileSystemDefaultEncoding,Py_HasFileSystemDefaultEncoding: UsePyConfig.filesystem_encodingouPyConfig_Get("filesystem_encoding").Py_FileSystemDefaultEncodeErrors: UsePyConfig.filesystem_errorsouPyConfig_Get("filesystem_errors").Py_UTF8Mode: UsePyPreConfig.utf8_modeouPyConfig_Get("utf8_mode"). (vejaPy_PreInitialize())
A API
Py_InitializeFromConfig()deve ser usada comPyConfigpara 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¶
Funções privadas descontinuadas (gh-128863):
_PyBytes_Join(): usePyBytes_Join()._PyDict_GetItemStringWithError(): usePyDict_GetItemStringRef()._PyDict_Pop():PyDict_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_WriteUTF8(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.
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.