Descontinuações
***************


Remoção pendente no Python 3.14
===============================

* 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.14,
    "__loader__" deixará de ser definido ou levado em consideração
    pelo sistema de importação ou pela biblioteca padrão.

* "argparse": os parâmetros *type*, *choices* e *metavar* de
  "argparse.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 um "DeprecationWarning" 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.)

* "asyncio":

  * As classes filhas dos observadores "MultiLoopChildWatcher",
    "FastChildWatcher", "AbstractChildWatcher" e "SafeChildWatcher"
    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()" e
    "asyncio.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 um "DeprecationWarning" 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. Prefira
  "Sequence" ou "Buffer". Para uso em tipagem, prefira uma união, como
  "bytes | bytearray" ou "collections.abc.Buffer". (Contribuição de
  Shantanu Jain em gh-91896.)

* "email": descontinua o parâmetro *isdst* em
  "email.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":

  * "importlib.resources.abc.Traversable"

  * "importlib.resources.abc.TraversableResources"

  (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 APIs "get_context()" ou "set_start_method()" para
  especificar explicitamente quando seu código *requer* "'fork'". Veja
  Contextos e métodos de inicialização.

* "pathlib": "is_relative_to()" e "relative_to()": passar argumentos
  adicionais foi descontinuado.

* "pkgutil": "find_loader()" e "get_loader()" agora levantam
  "DeprecationWarning"; use "importlib.util.find_spec()" em vez disto.
  (Contribuição de Nikita Sobolev em gh-97850.)

* "pty":

  * "master_open()": use "pty.openpty()".

  * "slave_open()": use "pty.openpty()".

* "sqlite3":

  * "version" e "version_info".

  * "execute()" e "executemany()" se espaços reservados nomeados forem
    usados ​​e *parameters* for uma sequência em vez de um "dict" .

  * adaptador de data e hora, conversor de registro de data e hora:
    veja a documentação de "sqlite3" para receitas de substituição
    sugeridas.

* "types.CodeType": o acesso a "co_lnotab" foi descontinuado na **PEP
  626** desde 3.10 e foi planejado para ser removido em 3.12, mas só
  recebeu uma "DeprecationWarning" adequada em 3.12. Pode ser removido
  em 3.14. (Contribuição de Nikita Sobolev em gh-101866.)

* "typing": "ByteString", descontinuado desde Python 3.9, agora faz
  com que uma "DeprecationWarning" 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)

* "ctypes":

  * A função não documentada "ctypes.SetPointerType()" foi
    descontinuada desde o Python 3.13.

* "http.server":

  * 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.

* "locale":

  * 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, use
    "getlocale()", "setlocale()" e "getencoding()". (Contribuição de
    Hugo van Kemenade em gh-111187.)

* "pathlib":

  * "PurePath.is_reserved()" foi descontinuado desde o Python 3.13.
    Use "os.path.isreserved()" para detectar caminhos reservados no
    Windows.

* "platform":

  * "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.

* "threading":

  * "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.

* "typing":

  * 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ódulo
    "typing", ela ainda não foi suportada por nenhum verificador de
    tipo importante.

* "wave":

  * Os métodos "getmark()", "setmark()" e "getmarkers()" das classes
    "Wave_read" e "Wave_write" foram descontinuados desde o Python
    3.13.


Remoção pendente no Python 3.16
===============================

* "builtins":

  * 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"). Use "not 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
    para "int" explicitamente ("~int(x)").

* "array":

  * 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.

* "shutil":

  * A exceção "ExecError" foi descontinuada desde o Python 3.14. Ela
    não foi usada por nenhuma função em "shutil" desde o Python 3.4, e
    agora é um alias de "RuntimeError".

* "symtable":

  * 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 ambiente
    "PYTHONLEGACYWINDOWSFSENCODING".

* "tarfile":

  * 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.

* código de formatação "'u'" do "array" (gh-57281)

* "builtins":

  * "bool(NotImplemented)".

  * Geradores: a assinatura "throw(type, exc, tb)" e "athrow(type,
    exc, tb)" está descontinuada: use "throw(exc)" e "athrow(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 reservadas
    "and", "else", "for", "if", "in" , "is" e "or". 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 de "int".

  * Suporte para o método "__float__()" retornando uma subclasse
    estrita de "float": esses métodos serão necessários para retornar
    uma instância de "float".

  * Suporte para o método "__complex__()" retornando uma subclasse
    estrita de "complex": esses métodos serão necessários para
    retornar uma instância de "complex".

  * 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 constantes "calendar.January" e "calendar.February"
  foram descontinuadas e substituídas por "calendar.JANUARY" e
  "calendar.FEBRUARY". (Contribuição de Prince Roshan em gh-103636.)

* "codeobject.co_lnotab": use o método "codeobject.co_lines()".

* "datetime":

  * "utcnow()": use "datetime.datetime.now(tz=datetime.UTC)".

  * "utcfromtimestamp()": use
    "datetime.datetime.fromtimestamp(timestamp, tz=datetime.UTC)".

* "gettext": o valor de plural deve ser um número inteiro.

* "importlib":

  * Método "load_module()": use "exec_module()" em vez disso.

  * O parâmetro *debug_override* de "cache_from_source()" foi
    descontinuado: em vez disso, use o parâmetro *optimization*.

* "importlib.metadata":

  * Interface de tupla "EntryPoints".

  * "None" implícito nos valores de retorno.

* "logging": o método "warn()" foi descontinuado desde o Python 3.3,
  use "warning()".

* "mailbox": o uso da entrada StringIO e do modo de texto foi
  descontinuado; em vez disso, use BytesIO e o modo binário.

* "os": chame "os.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" e "sre_parse".

* "shutil": o parâmetro *onerror* de "rmtree()" 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()" e
    "selected_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()": use "notify_all()".

  * "threading.Event.isSet()": use "is_set()".

  * "threading.Thread.isDaemon()", "threading.Thread.setDaemon()": use
    o atributo "threading.Thread.daemon".

  * "threading.Thread.getName()", "threading.Thread.setName()": use o
    atributo "threading.Thread.name".

  * "threading.currentThread()": use "threading.current_thread()".

  * "threading.activeCount()": use "threading.active_count()".

* "typing.Text" (gh-92332).

* "unittest.IsolatedAsyncioTestCase": foi descontinuado retornar um
  valor que não seja "None" de um caso de teste.

* Funções descontinuadas de "urllib.parse": use "urlparse()"

  * "splitattr()"

  * "splithost()"

  * "splitnport()"

  * "splitpasswd()"

  * "splitport()"

  * "splitquery()"

  * "splittag()"

  * "splittype()"

  * "splituser()"

  * "splitvalue()"

  * "to_bytes()"

* "urllib.request": o estilo de "URLopener" e "FancyURLopener" de
  invocar solicitações foi descontinuado. Use as mais novas funções e
  métodos "urlopen()".

* "wsgiref": "SimpleHandler.stdout.write()" não deve fazer gravações
  parciais.

* "xml.etree.ElementTree": testar o valor verdade de um "Element" está
  descontinuado. Em um lançamento futuro isso sempre retornará "True".
  Em vez disso, prefira os testes explícitos "len(elem)" ou "elem is
  not None".

* "zipimport.zipimporter.load_module()" foi descontinuado: use
  "exec_module()".


Descontinuações na API C
========================


Remoção pendente no Python 3.14
-------------------------------

* O campo "ma_version_tag" em "PyDictObject" 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()": defina "PyConfig.argv".

  * "PySys_SetArgv()": defina "PyConfig.argv".

  * "Py_SetProgramName()": defina "PyConfig.program_name".

  * "Py_SetPythonHome()": defina "PyConfig.home".

  A API "Py_InitializeFromConfig()" deve ser usada com "PyConfig".

* Variáveis de configuração globais

  * "Py_DebugFlag": use "PyConfig.parser_debug".

  * "Py_VerboseFlag": use "PyConfig.verbose".

  * "Py_QuietFlag": use "PyConfig.quiet".

  * "Py_InteractiveFlag": use "PyConfig.interactive".

  * "Py_InspectFlag": use "PyConfig.inspect".

  * "Py_OptimizeFlag": use "PyConfig.optimization_level".

  * "Py_NoSiteFlag": use "PyConfig.site_import".

  * "Py_BytesWarningFlag": use "PyConfig.bytes_warning".

  * "Py_FrozenFlag": use "PyConfig.pathconfig_warnings".

  * "Py_IgnoreEnvironmentFlag": use "PyConfig.use_environment".

  * "Py_DontWriteBytecodeFlag": use "PyConfig.write_bytecode".

  * "Py_NoUserSiteDirectory": use "PyConfig.user_site_directory".

  * "Py_UnbufferedStdioFlag": use "PyConfig.buffered_stdio".

  * "Py_HashRandomizationFlag": use "PyConfig.use_hash_seed" e
    "PyConfig.hash_seed".

  * "Py_IsolatedFlag": use "PyConfig.isolated".

  * "Py_LegacyWindowsFSEncodingFlag": use
    "PyPreConfig.legacy_windows_fs_encoding".

  * "Py_LegacyWindowsStdioFlag": use "PyConfig.legacy_windows_stdio".

  * "Py_FileSystemDefaultEncoding": use
    "PyConfig.filesystem_encoding".

  * "Py_HasFileSystemDefaultEncoding": use
    "PyConfig.filesystem_encoding".

  * "Py_FileSystemDefaultEncodeErrors": use
    "PyConfig.filesystem_errors".

  * "Py_UTF8Mode": use "PyPreConfig.utf8_mode". (veja
    "Py_PreInitialize()")

  A API "Py_InitializeFromConfig()" deve ser usada com "PyConfig".


Remoção pendente no Python 3.15
-------------------------------

* A cópia empacotada do "libmpdecimal".

* The "PyImport_ImportModuleNoBlock()": use "PyImport_ImportModule()".

* "PyWeakref_GetObject()" e "PyWeakref_GET_OBJECT()": use
  "PyWeakref_GetRef()".

* O tipo "Py_UNICODE" e a macro "Py_UNICODE_WIDE": use "wchar_t".

* Funções de inicialização do Python

  * "PySys_ResetWarnOptions()": apague "sys.warnoptions" e
    "warnings.filters".

  * "Py_GetExecPrefix()": obtenha "sys.base_exec_prefix" e
    "sys.exec_prefix".

  * "Py_GetPath()": leia "sys.path".

  * "Py_GetPrefix()": obtenha "sys.base_prefix" e "sys.prefix".

  * "Py_GetProgramFullPath()": leia "sys.executable".

  * "Py_GetProgramName()": leia "sys.executable".

  * "Py_GetPythonHome()": leia "PyConfig.home" ou a variável de
    ambiente "PYTHONHOME".


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.

* "PyErr_Fetch()": use "PyErr_GetRaisedException()".

* "PyErr_NormalizeException()": use "PyErr_GetRaisedException()".

* "PyErr_Restore()": use "PyErr_SetRaisedException()".

* "PyModule_GetFilename()": use "PyModule_GetFilenameObject()".

* "PyOS_AfterFork()": use "PyOS_AfterFork_Child()".

* "PySlice_GetIndicesEx()": use "PySlice_Unpack()" e
  "PySlice_AdjustIndices()".

* "PyUnicode_AsDecodedObject()": use "PyCodec_Decode()".

* "PyUnicode_AsDecodedUnicode()": use "PyCodec_Decode()".

* "PyUnicode_AsEncodedObject()": use "PyCodec_Encode()".

* "PyUnicode_AsEncodedUnicode()": use "PyCodec_Encode()".

* "PyUnicode_READY()": desnecessário desde o Python 3.12

* "PyErr_Display()": use "PyErr_DisplayException()".

* "_PyErr_ChainExceptions()": use "_PyErr_ChainExceptions1()".

* O membro "PyBytesObject.ob_shash": chame "PyObject_Hash()".

* O membro "PyDictObject.ma_version_tag".

* API do Thread Local Storage (TLS):

  * "PyThread_create_key()": use "PyThread_tss_alloc()".

  * "PyThread_delete_key()": use "PyThread_tss_free()".

  * "PyThread_set_key_value()": use "PyThread_tss_set()".

  * "PyThread_get_key_value()": use "PyThread_tss_get()".

  * "PyThread_delete_key_value()": use "PyThread_tss_delete()".

  * "PyThread_ReInitTLS()": desnecessário desde o Python 3.7.
