Wagtail: Использование функций uggettext устарело

Созданный на 18 февр. 2020  ·  5Комментарии  ·  Источник: wagtail/wagtail

Резюме проблемы

Вызов любой из функций ugettext(), ugettext_lazy(), ugettext_noop(), ungettext() и ungettext_lazy() из django.utils.translation вызовет предупреждение об устаревании RemovedInDjango40Warning .

Действия по воспроизведению

  1. Запустите сервер разработки с включенными предупреждениями для проекта Wagtail с установленным Django 3.0: python -Wall manage.py runserver
  2. Наблюдайте за выходом. Он выдаст десятки предупреждений, подобных этому:
/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'),
  • Я подтвердил, что эту проблему можно воспроизвести, как описано в новом проекте Wagtail: да

ugettext функции устарели в Django 3.0

Причина отказа в том, что это устаревшие псевдонимы для своих соответствующих gettext аналогов. Когда-то они использовались для совместимости Unicode с Python 2.7 согласно этому билету.

Как решить эту проблему?

Мы должны заменить все ссылки на функции ugettext их эквивалентами gettext . Это не должно иметь отрицательного влияния, потому что Wagtail больше не поддерживает Python 2.7, и это изменение будет совместимо с Django 2.2 LTS.

Теперь нужно ли нам спешить с внедрением этого изменения? Нет, не совсем. Функции ugettext планируется удалить в Django 4.0. Который планируется выпустить в 2022 году, согласно диаграмме, взятой из https://www.djangoproject.com/download/.

Однако было бы неплохо избавиться от этих неприятных предупреждений об устаревании для этого опыта my-project-is-full-up-to-date 👌

Технические подробности

  • Версия Python: 3.8.1
  • Версия Django: 3.0.3
  • Версия трясогузки: 2.9a0
  • Версия браузера: н / д
Django i18n good first issue Bug

Самый полезный комментарий

@danihodovic Зависит от вашего

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

Все 5 Комментарий

Есть ли способ отключить это предупреждение, пока оно не будет устранено?

@danihodovic Зависит от вашего

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

Спасибо @marteinn !

Завершено в # 5907, но поскольку вполне возможно, что новые вхождения могут проникнуть внутрь в результате слияния существующих PR, я оставлю это открытым, чтобы напомнить нам о необходимости провести еще одну проверку перед выпуском 2.9.

Перепроверил, и новых событий не закралось, так что, думаю, у нас все хорошо

Была ли эта страница полезной?
0 / 5 - 0 рейтинги