Descontinuações¶
Remoção pendente no Python 3.13¶
Módulos (veja PEP 594):
Outros módulos:
lib2to3
e 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.BooleanOptionalAction
foram 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 umDeprecationWarning
seja emitido em tempo de execução quando eles são acessados ou usados, e serão removidos no Python 3.14:ast.Num
ast.Str
ast.Bytes
ast.NameConstant
ast.Ellipsis
Em vez disso, use
ast.Constant
. (Contribuição de Serhiy Storchaka em gh-90953.)-
As classes filhas dos observadores
MultiLoopChildWatcher
,FastChildWatcher
,AbstractChildWatcher
eSafeChildWatcher
foram 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 umDeprecationWarning
se 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
:ByteString
foi descontinuado. PrefiraSequence
ouBuffer
Para uso em tipagem, prefira uma união, comobytes | bytearray
oucollections.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.abc
descontinuou as classes:importlib.abc.ResourceReader
importlib.abc.Traversable
importlib.abc.TraversableResources
Em vez disso, use classes de
importlib.resources.abc
:(Contribuição de Jason R. Coombs e Hugo van Kemenade em gh-93963.)
itertools
tinha 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 umaDeprecationWarning
seja emitida quando é usado.urllib
:urllib.parse.Quoter
está 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.CGIHTTPRequestHandler
será removido junto com seu sinalizador relacionado--cgi
parapython -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.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.isreserved
para 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.)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_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.)
-
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. PassarNone
para 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 classeNamedTuple
com 0 campos, useclass NT(NamedTuple): pass
ouNT = 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. PassarNone
para 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 classeTypedDict
com 0 campos, useclass TD(TypedDict): pass
ouTD = TypedDict("TD", {})
.wave
: Descontinua os métodosgetmark()
,setmark()
egetmarkers()
das classeswave.Wave_read
ewave.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__.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.
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 com um único argumento.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.)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.-
Método
load_module()
: useexec_module()
.O parâmetro debug_override de
cache_from_source()
foi descontinuado: use o parâmetro optimization.
-
Interface de tupla
EntryPoints
.None
implícito nos valores de retorno.
mailbox
: o uso da entrada StringIO e do modo de texto foi descontinuado, use BytesIO e o modo binário.os
: chamaros.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_constants
esre_parse
.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
O parâmetro check_home de
sysconfig.is_python_build()
foi descontinuado e é ignorado.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 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()
urllib.request
: o estilo deURLopener
eFancyURLopener
de 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 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
.zipimport.zipimporter.load_module()
foi descontinuado: useexec_module()
.
Descontinuações na API C¶
Remoção pendente no Python 3.14¶
O campo
ma_version_tag
emPyDictObject
para módulos de extensão (PEP 699; gh-101193).A criação de
tipos imutáveis
com 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_seed
ePyConfig.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
.PyImport_ImportModuleNoBlock()
: usePyImport_ImportModule()
.PyWeakref_GetObject()
ePyWeakref_GET_OBJECT()
: usePyWeakref_GetRef()
.O tipo
Py_UNICODE
e a macroPy_UNICODE_WIDE
: usewchar_t
.Funções de inicialização do Python
PySys_ResetWarnOptions()
: apaguesys.warnoptions
ewarnings.filters
.Py_GetPath()
: leiasys.path
.Py_GetPrefix()
: leiasys.prefix
.Py_GetPythonHome()
: leiaPyConfig.home
ou 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.