Wagtail: Penggunaan fungsi uggettext tidak digunakan lagi

Dibuat pada 18 Feb 2020  ·  5Komentar  ·  Sumber: wagtail/wagtail

Ringkasan Masalah

Memanggil salah satu fungsi ugettext(), ugettext_lazy(), ugettext_noop(), ungettext() dan ungettext_lazy() dari django.utils.translation akan memunculkan peringatan penghentian RemovedInDjango40Warning .

Langkah-langkah untuk Mereproduksi

  1. Mulai server pengembangan dengan peringatan diaktifkan untuk proyek Wagtail dengan Django 3.0 terpasang: python -Wall manage.py runserver
  2. Amati hasilnya. Ini akan menampilkan lusinan peringatan yang mirip dengan yang ini:
/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'),
  • Saya telah mengonfirmasi bahwa masalah ini dapat direproduksi seperti yang dijelaskan pada proyek Wagtail baru: ya

ugettext fungsi telah ditinggalkan di Django 3.0

Alasan penghentian ini adalah karena ini adalah alias lama untuk mitra gettext . Mereka pernah digunakan untuk kompatibilitas unicode dengan Python 2.7 menurut tiket ini

Bagaimana kita mengatasi ini?

Kita harus mengganti semua referensi ke ugettext functions dengan rekan gettext . Ini seharusnya tidak memiliki pengaruh negatif karena Wagtail tidak lagi mendukung Python 2.7 dan perubahan ini akan kompatibel dengan Django 2.2 LTS.

Sekarang, apakah kita harus buru-buru menerapkan perubahan ini? Tidak terlalu. Fungsi ugettext dijadwalkan untuk dihapus di Django 4.0. Yang rencananya akan rilis pada tahun 2022 menurut grafik ini saya ambil dari https://www.djangoproject.com/download/

Namun alangkah baiknya untuk menyingkirkan peringatan penghentian yang buruk itu untuk pengalaman-proyek-saya-sepenuhnya-up-to-date 👌

Detail teknis

  • Versi Python: 3.8.1
  • Versi Django: 3.0.3
  • Versi Wagtail: 2.9a0
  • Versi browser: n / a
Django i18n good first issue Bug

Komentar yang paling membantu

@danihodovic Tergantung pada kasus penggunaan Anda, ini adalah cara Anda menyembunyikannya saat menjalankan pytest.

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

Semua 5 komentar

Apakah ada cara untuk membungkam peringatan ini sampai teratasi?

@danihodovic Tergantung pada kasus penggunaan Anda, ini adalah cara Anda menyembunyikannya saat menjalankan pytest.

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

Terima kasih @marteinn !

Diselesaikan di # 5907, tetapi karena sangat mungkin bahwa kejadian baru dapat menyelinap masuk sebagai akibat dari penggabungan PR yang ada, saya akan membiarkan ini terbuka untuk mengingatkan kita untuk melakukan penyapuan lain sebelum rilis 2.9.

Diperiksa ulang, dan tidak ada kejadian baru yang muncul, jadi saya pikir kita semua baik-baik saja 👍

Apakah halaman ini membantu?
0 / 5 - 0 peringkat