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.
-
The obsolete and rarely used
CGIHTTPRequestHandlerhas 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
--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()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_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.The
typing.no_type_check_decorator()decorator function has been deprecated since Python 3.13. After eight years in thetypingmodule, it has yet to be supported by any major type checker.
Módulos
sre_compile,sre_constantsesre_parse.wave:The
getmark(),setmark()andgetmarkers()methods of theWave_readandWave_writeclasses 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__.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¶
-
collections.abc.ByteStringestá agendado para remoção no Python 3.17.Use
isinstance(obj, collections.abc.Buffer)para testar seobjimplementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, useBufferou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo,bytes | bytearray | memoryview).ByteStringfoi originalmente concebido para ser uma classe abstrata que serviria como um supertipo debytesebytearray. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância deByteStringnunca 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 seobjimplementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, useBufferou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo,bytes | bytearray | memoryview).ByteStringfoi originalmente concebido para ser uma classe abstrata que serviria como um supertipo debytesebytearray. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância deByteStringnunca 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 varioushashlibimplementations.Support for the
stringkeyword argument name is now deprecated and slated for removal in Python 3.19.Before Python 3.13, the
stringkeyword 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.
Pending removal in Python 3.20¶
The
__version__attribute has been deprecated in these standard library modules and will be removed in Python 3.20. Usesys.version_infoinstead.ctypes.macholiblogging(__date__also deprecated)
(Contributed by Hugo van Kemenade and Stan Ulbrych in gh-76007.)
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.
-
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.)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¶
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_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) 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 thePYTHONHOMEenvironment 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.warnoptionsandwarnings.filtersinstead.
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¶
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
cvalfield inPyComplexObject(gh-128813). UsePyComplex_AsCComplex()andPyComplex_FromCComplex()to convert a Python complex number to/from the CPy_complexrepresentation.
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.