Django-compressor: RemovedInDjango31Warning: Setelan FILE_CHARSET sudah tidak digunakan lagi

Dibuat pada 2 Apr 2019  ·  10Komentar  ·  Sumber: django-compressor/django-compressor

Saya menemui peringatan berikut ketika saya menjalankan pengujian dengan lingkungan Django saya.

/path/to/lib/python3.7/site-packages/compressor/filters/base.py:115: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
    default_encoding = settings.FILE_CHARSET

Tampaknya penggunaan settings.FILE_CHARSET tidak disarankan.

Tidak digunakan lagi sejak versi 2.2:
Pengaturan ini sudah usang. Dimulai dengan Django 3.1, berkas yang dibaca dari disk harus dikodekan UTF-8.

versi:

  • django 2.2.0
  • django-compressor 2.2
bug

Komentar yang paling membantu

Tampaknya akses apa pun ke properti settings.FILE_CHARSET , bahkan untuk menguji apakah itu diganti, akan memicu peringatan. Dan inilah yang kami lakukan untuk memeriksa apakah kami perlu menggunakan utf-8 default.

Jika kita ingin menjaga kompatibilitas ke belakang, cara paling sederhana adalah menonaktifkan peringatan ini untuk baris kode tertentu menggunakan sesuatu seperti ini:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="popo popo")
    warnings.warn("popo popo")  # the code that will trigger the warning
# warnings are back to normal filtering from here

Jika solusi seperti itu tampaknya baik-baik saja bagi Anda, saya dapat memberikan PR.

Semua 10 komentar

Catatan rilis mengatakan:

Pengaturan FILE_CHARSET tidak digunakan lagi. Dimulai dengan Django 3.1, berkas yang dibaca dari disk harus dikodekan UTF-8.

Apakah cukup mengganti semua settings.FILE_CHARSET dalam django-compressor menjadi utf-8 untuk mengatasi masalah ini, mungkin ...?

terima kasih telah melaporkan. mengganti semua kejadian dengan utf-8 mungkin merusak hal-hal bagi mereka yang benar-benar menggunakan pengaturan ini. perbaikan yang tepat mungkin menggunakan pengaturan jika ada, dan tidak mengatur parameter yang dipermasalahkan jika tidak ada.

@karyon terima kasih atas tanggapan Anda. Saya mencoba menulis tambalan. Saya ingin Anda meninjau apakah pemahaman saya benar.

Ini adalah pertama kalinya saya mengirim PR ke repo ini dan saya mungkin melewatkan sesuatu yang penting. Jika Anda menemukan sesuatu yang salah, beri tahu saya. Terima kasih sebelumnya.

diperbaiki di # 934

Kode baru tampaknya menyebabkan peringatan yang sangat mirip di pengaturan saya:

  /usr/local/lib/python3.7/site-packages/compressor/filters/base.py:123: RemovedInDjango31Warning: The FILE_CHARSET setting is deprecated. Starting with Django 3.1, all files read from disk must be UTF-8 encoded.
    settings.FILE_CHARSET if settings.is_overridden('FILE_CHARSET') else

dengan

django-compressor==2.3
Django==2.2.2

Tampaknya akses apa pun ke properti settings.FILE_CHARSET , bahkan untuk menguji apakah itu diganti, akan memicu peringatan. Dan inilah yang kami lakukan untuk memeriksa apakah kami perlu menggunakan utf-8 default.

Jika kita ingin menjaga kompatibilitas ke belakang, cara paling sederhana adalah menonaktifkan peringatan ini untuk baris kode tertentu menggunakan sesuatu seperti ini:

import warnings

with warnings.catch_warnings():
    warnings.filterwarnings("ignore", message="popo popo")
    warnings.warn("popo popo")  # the code that will trigger the warning
# warnings are back to normal filtering from here

Jika solusi seperti itu tampaknya baik-baik saja bagi Anda, saya dapat memberikan PR.

ya, PR akan menyenangkan. jika perlu Anda bisa mulai dengan mengembalikan PR asli :)

Saat menulis tambalan untuk PR, saya menemukan bahwa peringatan itu sebenarnya dipicu oleh deteksi keliru yang sangat aneh dari is_overridden('FILE_CHARSET') . Tampaknya dalam proyek saya sementara saya tidak menetapkan FILE_CHARSET dalam pengaturan saya, is_overridden('FILE_CHARSET') mengembalikan True.

Tetapi jika saya menguji proyek django minimal dengan hanya django-compressor terpasang -> tanpa peringatan

Jadi PR saya sebenarnya tidak diperlukan: is_overridden('FILE_CHARSET') seharusnya tidak mengembalikan True karena itu compress() dan CompilerFilter() seharusnya tidak memunculkan peringatan. Di bawah keadaan normal.

Bahkan pengujian yang saya tambahkan ke basis kode django-compressor untuk mendeteksi regresi apapun pada peringatan pb ini, tidak terlalu berpengaruh: django / django @ 3d716467 commit (termasuk dalam django 3.1 yang akan datang) baru saja menghapus peringatan tersebut , mengikuti garis waktu penghentian django .

Sisi baiknya: Saya menguji django-compressor terhadap kode django yang baru (kode dimana FILE_CHARSET dan peringatan terkait tidak keluar lagi) dan bekerja tanpa masalah yang terdeteksi.

Maaf untuk ketidaknyamanannya. Saya pikir Anda dapat menutup (lagi) masalah ini.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

albertyw picture albertyw  ·  16Komentar

ghost picture ghost  ·  20Komentar

jvc26 picture jvc26  ·  4Komentar

camilonova picture camilonova  ·  7Komentar

badbye picture badbye  ·  10Komentar