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


Pending removal in 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.

* "types":

  * "types.CodeType": Accessing "co_lnotab" was deprecated in **PEP
    626** since 3.10 and was planned to be removed in 3.12, but it
    only got a proper "DeprecationWarning" in 3.12. May be removed in
    3.15. (Contributed by Nikita Sobolev in gh-101866.)

* "typing":

  * The undocumented keyword argument syntax for creating "NamedTuple"
    classes (for example, "Point = NamedTuple("Point", x=int, y=int)")
    has been deprecated since Python 3.13. Use the class-based syntax
    or the functional syntax instead.

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


Pending removal in Python 3.16
==============================

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

* "asyncio":

  * "asyncio.iscoroutinefunction()" is deprecated and will be removed
    in Python 3.16, use "inspect.iscoroutinefunction()" instead.
    (Contributed by Jiahao Li and Kumar Aditya in gh-122875.)

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

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


Pending removal in future versions
==================================

As APIs a seguir serão removidas no futuro, embora atualmente não haja
uma data agendada para sua remoção.

* "argparse":

  * Nesting argument groups and nesting mutually exclusive groups are
    deprecated.

  * Passing the undocumented keyword argument *prefix_chars* to
    "add_argument_group()" is now deprecated.

  * The "argparse.FileType" type converter is deprecated.

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


C API deprecations
==================


Pending removal in 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".


Pending removal in future versions
----------------------------------

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.
