Wagtail: O uso de funções uggettext está obsoleto

Criado em 18 fev. 2020  ·  5Comentários  ·  Fonte: wagtail/wagtail

Resumo do problema

Chamar qualquer uma das funções ugettext(), ugettext_lazy(), ugettext_noop(), ungettext() e ungettext_lazy() de django.utils.translation gerará um aviso de descontinuação de RemovedInDjango40Warning

Passos para reproduzir

  1. Inicie o servidor de desenvolvimento com avisos habilitados para um projeto Wagtail com Django 3.0 instalado: python -Wall manage.py runserver
  2. Observe a saída. Ele irá gerar dezenas de avisos semelhantes a este:
/Users/stormh/torchbox/wagtail/wagtail/admin/edit_handlers.py:762: RemovedInDjango40Warning: django.utils.translation.ugettext_lazy() is deprecated in favor of django.utils.translation.gettext_lazy().
  'heading': ugettext_lazy('Scheduled publishing'),
  • Confirmei que este problema pode ser reproduzido conforme descrito em um novo projeto Wagtail: sim

ugettext funções

O motivo da suspensão é que esses são aliases legados para suas contrapartes gettext correspondentes. Eles já foram usados ​​para compatibilidade Unicode com Python 2.7 de acordo com este tíquete

Como solucionamos isso?

Devemos substituir todas as referências às funções ugettext por suas contrapartes gettext . Isso não deve ter nenhuma influência negativa porque o Wagtail não suporta mais o Python 2.7 e essa alteração seria compatível com o Django 2.2 LTS.

Agora, temos que nos apressar para implementar essa mudança? Não, na verdade não. As funções ugettext estão programadas para serem removidas no Django 4.0. Que está programado para ser lançado em 2022 de acordo com este gráfico que tirei de https://www.djangoproject.com/download/

No entanto, seria bom se livrar desses avisos de depreciação desagradáveis ​​para essa experiência meu-projeto-está-totalmente-atualizado 👌

Detalhes técnicos

  • Versão Python: 3.8.1
  • Versão Django: 3.0.3
  • Versão Wagtail: 2.9a0
  • Versão do navegador: n / a
Django i18n good first issue Bug

Comentários muito úteis

@danihodovic Depende do seu caso de uso, é assim que você os oculta ao executar o pytest.

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

Todos 5 comentários

Existe alguma maneira de silenciar este aviso até que seja resolvido?

@danihodovic Depende do seu caso de uso, é assim que você os oculta ao executar o pytest.

[pytest]
filterwarnings =
    ignore::django.utils.deprecation.RemovedInDjango40Warning

Obrigado @marteinn !

Concluído em # 5907, mas como é inteiramente possível que novas ocorrências possam surgir como resultado da fusão de PRs existentes, vou deixar isso aberto para nos lembrar de fazer outra varredura antes do lançamento 2.9.

Verifiquei novamente e nenhuma nova ocorrência ocorreu, então acho que estamos todos bem 👍

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

lirlocker picture lirlocker  ·  3Comentários

letops picture letops  ·  3Comentários

richbrennan picture richbrennan  ·  3Comentários

BertrandBordage picture BertrandBordage  ·  3Comentários

lboaretto picture lboaretto  ·  3Comentários