Descontinuações

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:

    • The obsolete and rarely used CGIHTTPRequestHandler has been deprecated since Python 3.13. No direct replacement exists. Anything is better than CGI to interface a web server with a request handler.

    • O sinalizador --cgi para a interface de linha de comando python -m http.server foi descontinuado desde o Python 3.13.

  • importlib:

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

  • locale:

  • pathlib:

    • .PurePath.is_reserved() has been deprecated since Python 3.13. Use os.path.isreserved() to detect reserved paths on Windows.

  • platform:

    • platform.java_ver() has been deprecated since Python 3.13. This function is only useful for Jython support, has a confusing API, and is largely untested.

  • sysconfig:

  • 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:

  • typing:

    • A não-documentada sintaxe de argumento nomeado para criar classes NamedTuple (por exemplo, Point = NamedTuple("Point", x=int, y=int)) foi descontinuada desde o Python 3.13. Em vez disso, use as sintaxes baseada em classe ou funcional.

    • Ao usar a sintaxe funcional de TypedDicts, não passar um valor para o parâmetro fields (TD = TypedDict("TD")) ou passar None (TD = TypedDict("TD", None)) foi está descontinuado desde o Python 3.13. Use class TD(TypedDict): pass ou TD = TypedDict("TD", {}) para criar uma classe TypedDict com nenhum campo.

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

  • Módulos sre_compile, sre_constants e sre_parse.

  • wave:

    • The getmark(), setmark() and getmarkers() methods of the Wave_read and Wave_write classes have been deprecated since Python 3.13.

  • zipimport:

    • zipimport.zipimporter.load_module() has been deprecated since Python 3.10. Use exec_module() instead. (gh-125746.)

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:

    • 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:

  • 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)).

  • functools:

    • A chamada da implementação Python de functools.reduce() com function ou sequence como argumentos nomeados foi descontinuada desde o Python 3.14.

  • logging:

    O suporte para manipuladores de registro personalizados com o argumento strm foi descontinuado e está programado para ser removido no Python 3.16. Em vez disso, defina manipuladores com o argumento stream. (Contribuição de Mariusz Felisiak em gh-115032.)

  • mimetypes:

    • Extensões válidas começam com um ‘.’ ou estão vazias para mimetypes.MimeTypes.add_type(). Extensões sem ponto estão descontinuadas e levantarão uma exceção ValueError no Python 3.16. (Contribuição de Hugo van Kemenade em gh-75223.)

  • 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:

  • sys:

  • sysconfig:

    • A função sysconfig.expand_makefile_vars() está descontinuada desde o Python 3.14. Em vez disso, use o argumento vars de sysconfig.get_paths().

  • tarfile:

    • O atributo não documentado e não utilizado TarFile.tarfile foi descontinuado desde o Python 3.13.

Remoção pendente no Python 3.17

  • collections.abc:

    • collections.abc.ByteString está agendado para remoção no Python 3.17.

      Use isinstance(obj, collections.abc.Buffer) para testar se obj implementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, use Buffer ou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo, bytes | bytearray | memoryview).

      ByteString foi originalmente concebido para ser uma classe abstrata que serviria como um supertipo de bytes e bytearray. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância de ByteString nunca lhe dizia nada de útil sobre o objeto. Outros tipos comuns de buffer, como memoryview, também nunca foram entendidos como subtipos de ByteString (seja em tempo de execução ou por verificadores de tipo estáticos).

      Veja PEP 688 para mais detalhes. (Contribuição de Shantanu Jain em gh-91896.)

  • typing:

    • Antes do Python 3.14, as uniões antigas eram implementadas usando a classe privada typing._UnionGenericAlias. Essa classe não é mais necessária para a implementação, mas foi mantida para compatibilidade com versões anteriores, com remoção prevista para o Python 3.17. Os usuários devem usar auxiliares de introspecção documentados, como typing.get_origin() e typing.get_args(), em vez de depender de detalhes de implementação privada.

    • typing.ByteString, obsoleto desde o Python 3.9, está programado para ser removido no Python 3.17.

      Use isinstance(obj, collections.abc.Buffer) para testar se obj implementa o protocolo de buffer em tempo de execução. Para uso em anotações de tipo, use Buffer ou uma união que especifique explicitamente os tipos suportados pelo seu código (por exemplo, bytes | bytearray | memoryview).

      ByteString foi originalmente concebido para ser uma classe abstrata que serviria como um supertipo de bytes e bytearray. No entanto, como o ABC nunca teve métodos, saber que um objeto era uma instância de ByteString nunca lhe dizia nada de útil sobre o objeto. Outros tipos comuns de buffer, como memoryview, também nunca foram entendidos como subtipos de ByteString (seja em tempo de execução ou por verificadores de tipo estáticos).

      Veja PEP 688 para mais detalhes. (Contribuição de Shantanu Jain em gh-91896.)

Remoção pendente no Python 3.19

  • ctypes:

    • Troca implícita para o layout de estrutura compatível com MSVC definindo _pack_, mas não _layout_ em plataformas não Windows.

  • hashlib:

    • In hash function constructors such as new() or the direct hash-named constructors such as md5() and sha256(), their optional initial data parameter could also be passed a keyword argument named data= or string= in various hashlib implementations.

      Support for the string keyword argument name is now deprecated and slated for removal in Python 3.19.

      Before Python 3.13, the string keyword parameter was not correctly supported depending on the backend implementation of hash functions. Prefer passing the initial data as a positional argument for maximum backwards compatibility.

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

    • A passagem do argumento nomeado não documentado prefix_chars para add_argument_group() agora está descontinuado.

    • O conversor de tipo argparse.FileType está descontinuado.

  • 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.)

  • codecs: use open() em vez de codecs.open(). (gh-133038)

  • 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:

    • 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.)

  • 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

  • Métodos de threading:

  • typing.Text (gh-92332).

  • A classe interna typing._UnionGenericAlias não é mais usada para implementar typing.Union. Para preservar a compatibilidade com usuários que utilizam esta classe privada, uma correção de compatibilidade será fornecida pelo menos até a versão 3.17 do Python. (Contribuição de Jelle Zijlstra em gh-105499.)

  • 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()

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

  • sys._clear_type_cache() está descontinuada: use sys._clear_internal_caches().

Descontinuações na API C

Remoção pendente no Python 3.15

Remoção pendente no Python 3.18

Pending removal in Python 3.20

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.