Descontinuações¶
Remoção pendente no Python 3.13¶
Módulos (veja PEP 594):
Outros módulos:
lib2to3e o programa 2to3 (gh-84540)
APIs:
configparser.LegacyInterpolation(gh-90765)locale.resetlocale()(gh-90817)turtle.RawTurtle.settiltangle()(gh-50096)unittest.findTestCases()(gh-50096)unittest.getTestCaseNames()(gh-50096)unittest.makeSuite()(gh-50096)unittest.TestProgram.usageExit()(gh-67048)webbrowser.MacOSX(gh-86421)Encadeamento do descritor de
classmethod(gh-89519)Métodos descontinuados de
importlib.resources:contents()is_resource()open_binary()open_text()path()read_binary()read_text()
Use
importlib.resources.files()em vez disso. Confira importlib-resources: Migrando do legado , em inglês (gh-106531)
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.)
collections.abc:ByteStringfoi descontinuado. PrefiraSequenceouBufferPara uso em tipagem, prefira uma união, comobytes | bytearrayoucollections.abc.Buffer. (Contribuição de Shantanu Jain em gh-91896.)email: Descontinua o parâmetro isdst ememail.utils.localtime(). (Contribuição de Alan Williams em gh-72346.)importlib:__package__e__cached__deixarão de ser definidos ou levados em consideração pelo sistema de importação (gh-97879).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(). (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.
typing:ByteString, descontinuado desde Python 3.9, agora faz com que umaDeprecationWarningseja emitida quando é usado.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¶
http.server.CGIHTTPRequestHandlerserá removido junto com seu sinalizador relacionado--cgiparapython -m http.server. Estava descontinuado e raramente usado. Não existe substituição direta. Qualquer coisa é melhor que CGI para fazer a interface de um servidor web com um manipulador de solicitações.-
Método
load_module(): useexec_module().
locale:locale.getdefaultlocale()foi descontinuada no Python 3.11 e originalmente planejada para remoção no Python 3.13 (gh-90817), mas a remoção foi adiada para o Python 3.15. Uselocale.setlocale(),locale.getencoding()elocale.getlocale()em vez disso. (Contribuição de Hugo van Kemenade em gh-111187.)pathlib:pathlib.PurePath.is_reserved()está descontinuado e programado para remoção no Python 3.15. Do Python 3.13 em diante, useos.path.isreservedpara detectar caminhos reservados no Windows.platform:java_ver()está descontinuada e será removida na versão 3.15. Ela não foi testada em grande parte, tinha uma API confusa e só era útil para suporte a Jython. (Contribuição de Nikita Sobolev em gh-116349.)-
O argumento check_home de
sysconfig.is_python_build()foi descontinuado desde o Python 3.12.
threading: Passar qualquer argumento parathreading.RLock()agora está descontinuado. A versão C permite qualquer número de args e kwargs, mas eles são simplesmente ignorados. A versão Python não permite nenhum argumento. Todos os argumentos serão removidos dethreading.RLock()no Python 3.15. (Contribuição de Nikita Sobolev em gh-102029.)-
A sintaxe de argumento nomeado não documentada para criar classes
NamedTuple(NT = NamedTuple("NT", x=int)) está descontinuada e não será permitida em 3.15. Use a sintaxe baseada em classe ou a sintaxe funcional.
-
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.)
-
Ao usar a sintaxe funcional para criar uma classe
NamedTuple, falhar ao passar um valor para o parâmetro fields (NT = NamedTuple("NT")) está descontinuada. PassarNonepara o parâmetro fields (NT = NamedTuple("NT", None)) também está descontinuada. Ambos não serão permitidos no Python 3.15. Para criar uma classeNamedTuplecom 0 campos, useclass NT(NamedTuple): passouNT = NamedTuple("NT", []).
typing.TypedDict: Ao usar a sintaxe funcional para criar uma classeTypedDict, falhar ao passar um valor para o parâmetro fields (TD = TypedDict("TD")) está descontinuada. PassarNonepara o parâmetro fields (TD = TypedDict("TD", None)) também está descontinuada. Ambos não serão permitidos no Python 3.15. Para criar uma classeTypedDictcom 0 campos, useclass TD(TypedDict): passouTD = TypedDict("TD", {}).wave: Descontinua os métodosgetmark(),setmark()egetmarkers()das classeswave.Wave_readewave.Wave_write. Eles serão removidos no Python 3.15. (Contribuição de Victor Stinner em gh-105096.)
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.
array:array.array: tipo'u'(wchar_t): use o tipo'w'(Py_UCS4).builtins:~bool, inversão bit a bit em booleanos.symtable: Descontinuasymtable.Class.get_methods()por falta de interesse. (Contribuição de Bénédikt Tran em gh-119698.)
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.-
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.)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.
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¶
A cópia empacotada do
libmpdecimal.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_GetPath(): leiasys.path.Py_GetPrefix(): leiasys.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.