Descontinuações

Remoção pendente no Python 3.13

Módulos (veja PEP 594):

Outros módulos:

APIs:

Remoção pendente no Python 3.14

Remoção pendente no Python 3.15

  • http.server.CGIHTTPRequestHandler será removido junto com seu sinalizador relacionado --cgi para python -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. Use locale.setlocale(), locale.getencoding() e locale.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, use os.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 para threading.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 de threading.RLock() no Python 3.15. (Contribuição de Nikita Sobolev em gh-102029.)

  • typing.NamedTuple:

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

  • typing:

    • 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. Passar None 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 classe NamedTuple com 0 campos, use class NT(NamedTuple): pass ou NT = NamedTuple("NT", []).

  • typing.TypedDict: Ao usar a sintaxe funcional para criar uma classe TypedDict, falhar ao passar um valor para o parâmetro fields (TD = TypedDict("TD")) está descontinuada. Passar None 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 classe TypedDict com 0 campos, use class TD(TypedDict): pass ou TD = TypedDict("TD", {}).

  • wave: Descontinua os métodos getmark(), setmark() e getmarkers() das classes wave.Wave_read e wave.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: Descontinua symtable.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.

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

    • O parâmetro debug_override de cache_from_source() foi descontinuado: use o parâmetro optimization.

  • importlib.metadata:

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

  • 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

Remoção pendente no Python 3.15

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.