Descontinuações¶
Remoção pendente no Python 3.14¶
argparse: Os parâmetros type, choices e metavar deargparse.BooleanOptionalActionforam descontinuados e serão removidos na versão 3.14. (Contribuição de Nikita Sobolev em gh-92248.)ast: os seguintes recursos foram descontinuados na documentação desde Python 3.8, agora fazem com que umDeprecationWarningseja emitido em tempo de execução quando eles são acessados ou usados, e serão removidos no Python 3.14:ast.Numast.Strast.Bytesast.NameConstantast.Ellipsis
Em vez disso, use
ast.Constant. (Contribuição de Serhiy Storchaka em gh-90953.)-
As classes filhas dos observadores
MultiLoopChildWatcher,FastChildWatcher,AbstractChildWatchereSafeChildWatcherforam descontinuadas e serão removidas no Python 3.14. (Contribuição de Kumar Aditya em gh-94597.)asyncio.set_child_watcher(),asyncio.get_child_watcher(),asyncio.AbstractEventLoopPolicy.set_child_watcher()easyncio.AbstractEventLoopPolicy.get_child_watcher()foram descontinuados e serão removidos no Python 3.14. (Contribuição de Kumar Aditya em gh-94597.)O método
get_event_loop()da política de laço de eventos padrão agora emite umDeprecationWarningse não houver nenhum laço de eventos atual definido e decidir criar um. (Contribuição de Serhiy Storchaka e Guido van Rossum em gh-100160.)
builtins:bool(NotImplemented)now emits aDeprecationWarningand will raise aTypeErrorin Python 3.14. (Contributed by Jelle Zijlstra in gh-118767.)email: Descontinua o parâmetro isdst ememail.utils.localtime(). (Contribuição de Alan Williams em gh-72346.)importlib.abcdescontinuou as classes:importlib.abc.ResourceReaderimportlib.abc.Traversableimportlib.abc.TraversableResources
Em vez disso, use classes de
importlib.resources.abc:(Contribuição de Jason R. Coombs e Hugo van Kemenade em gh-93963.)
itertoolstinha suporte não documentado, ineficiente, historicamente cheio de bugs e inconsistente para operações de cópia, cópia profunda e serialização com pickle. Isso será removido na versão 3.14 para uma redução significativa no volume de código e na carga de manutenção. (Contribuição de Raymond Hettinger em gh-101588.)multiprocessing: o método de inicialização padrão será alterado para um mais seguro no Linux, BSDs e outras plataformas POSIX não-macOS onde'fork'é atualmente o padrão (gh-84559). Adicionar um aviso de tempo de execução sobre isso foi considerado muito perturbador, pois não se espera que a maior parte do código se importe. Use as APIsget_context()ouset_start_method()para especificar explicitamente quando seu código requer'fork'. Veja Contextos e métodos de inicialização.pathlib:is_relative_to()erelative_to(): passar argumentos adicionais foi descontinuado.pkgutil:find_loader()eget_loader()agora levantamDeprecationWarning; useimportlib.util.find_spec()em vez disto. (Contribuição de Nikita Sobolev em gh-97850.)pty:master_open(): usepty.openpty().slave_open(): usepty.openpty().
-
execute()eexecutemany()se espaços reservados nomeados forem usados e parameters for uma sequência em vez de umdict.
urllib:urllib.parse.Quoterestá obsoleto: não foi planejado para ser uma API pública. (Contribuição de Gregory P. Smith em gh-88168.)
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__.cachedestá 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().
-
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 sintaxe de argumento nomeado não documentada para criar classes
NamedTuple(por exemplo,Point = NamedTuple("Point", x=int, y=int)) foi descontinuada desde o Python 3.13. Use a sintaxe baseada em classe ou a sintaxe funcional em vez disso.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.
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 do ambiente de execução desde o Python 3.13. Em vez disso, 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.)
-
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). Em vez disso, usenot xpara 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 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. Em vez disso, use a variável de ambientePYTHONLEGACYWINDOWSFSENCODING.
-
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 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.
argparse: o aninhamento de grupos de argumentos e o aninhamento de grupos mutuamente exclusivos estão descontinuados.-
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.)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: 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().
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()
urllib.request: o estilo deURLopenereFancyURLopenerde invocar solicitações foi descontinuado. Use as mais novas funções e métodosurlopen().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.zipimport.zipimporter.load_module()foi descontinuado: useexec_module().
Descontinuações na API C¶
Remoção pendente no Python 3.14¶
O campo
ma_version_tagemPyDictObjectpara módulos de extensão (PEP 699; gh-101193).A criação de
tipos imutáveiscom bases mutáveis (gh-95388).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.
Em vez disso, a API
Py_InitializeFromConfig()deve ser usada comPyConfig.Variáveis de configuração globais
Py_QuietFlag: usePyConfig.quiet.Py_HashRandomizationFlag: usePyConfig.use_hash_seedePyConfig.hash_seed.Py_LegacyWindowsFSEncodingFlag: usePyPreConfig.legacy_windows_fs_encoding.Py_LegacyWindowsStdioFlag: usePyConfig.legacy_windows_stdio.Py_FileSystemDefaultEncoding: usePyConfig.filesystem_encoding.Py_HasFileSystemDefaultEncoding: usePyConfig.filesystem_encoding.Py_FileSystemDefaultEncodeErrors: usePyConfig.filesystem_errors.Py_UTF8Mode: usePyPreConfig.utf8_mode. (vejaPy_PreInitialize())
Em vez disso, a API
Py_InitializeFromConfig()deve ser usada comPyConfig.
Remoção pendente no Python 3.15¶
The
PyImport_ImportModuleNoBlock(): usePyImport_ImportModule().PyWeakref_GetObject()ePyWeakref_GET_OBJECT(): usePyWeakref_GetRef().O tipo
Py_UNICODEe a macroPy_UNICODE_WIDE: usewchar_t.Funções de inicialização do Python
PySys_ResetWarnOptions(): apaguesys.warnoptionsewarnings.filters.Py_GetExecPrefix(): obtenhasys.base_exec_prefixesys.exec_prefix.Py_GetPath(): leiasys.path.Py_GetPrefix(): obtenhasys.base_prefixesys.prefix.Py_GetPythonHome(): leiaPyConfig.homeou a variável de ambientePYTHONHOME.
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_AsDecodedObject(): usePyCodec_Decode().PyUnicode_AsDecodedUnicode(): usePyCodec_Decode().PyUnicode_AsEncodedObject(): usePyCodec_Encode().PyUnicode_AsEncodedUnicode(): usePyCodec_Encode().PyUnicode_READY(): desnecessário desde o Python 3.12PyErr_Display(): usePyErr_DisplayException()._PyErr_ChainExceptions(): use_PyErr_ChainExceptions1().O membro
PyBytesObject.ob_shash: chamePyObject_Hash().O membro
PyDictObject.ma_version_tag.API do Thread Local Storage (TLS):
PyThread_ReInitTLS(): desnecessário desde o Python 3.7.