Descontinuações¶
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.abc
descontinuou as classes:importlib.abc.ResourceReader
importlib.abc.Traversable
importlib.abc.TraversableResources
Em vez disso, use classes
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()
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
.
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¶
O sistema de importação:
A definição de
__cached__
em um módulo enquanto falha na definição de__spec__.loader
está 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__.parent
está 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
CGIHTTPRequestHandler
foi 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
--cgi
para a interface de linha de comando python -m http.server foi descontinuado desde o Python 3.13.
-
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.
-
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_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.)
-
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.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_read
eWave_write
foram 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__.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.
-
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.)
-
A inversão bit a bit em tipos booleanos,
~True
ou~False
foi descontinuada desde o Python 3.12, pois produz resultados surpreendentes e não intuitivos (-2
e-1
). Usenot x
em 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 paraint
explicitamente (~int(x)
).
-
A exceção
ExecError
foi descontinuada desde o Python 3.14. Ela não foi usada por nenhuma função emshutil
desde o Python 3.4, e agora é um alias deRuntimeError
.
-
O método
Class.get_methods
foi descontinuado desde o Python 3.14.
sys
:A função
_enablelegacywindowsfsencoding()
foi descontinuada desde o Python 3.13. Use a variável de ambientePYTHONLEGACYWINDOWSFSENCODING
.
-
O atributo não documentado e não utilizado
TarFile.tarfile
foi descontinuado desde o Python 3.13.
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
,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()
em vez disso.O parâmetro debug_override de
cache_from_source()
foi descontinuado: em vez disso, use o parâmetro optimization.
-
Interface de tupla
EntryPoints
.None
implí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_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
.
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()
)
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_UNICODE
e a macroPy_UNICODE_WIDE
: usewchar_t
.Funções de inicialização do Python
PySys_ResetWarnOptions()
: apaguesys.warnoptions
ewarnings.filters
.Py_GetExecPrefix()
: obtenhasys.base_exec_prefix
esys.exec_prefix
.Py_GetPath()
: leiasys.path
.Py_GetPrefix()
: obtenhasys.base_prefix
esys.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.