Django-compressor: RemovedInDjango31 تحذير: تم إيقاف إعداد FILE_CHARSET

تم إنشاؤها على ٢ أبريل ٢٠١٩  ·  10تعليقات  ·  مصدر: django-compressor/django-compressor

لقد واجهت التحذير التالي عندما أجريت اختبارًا مع بيئة Django الخاصة بي.

/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

يبدو أن استخدام settings.FILE_CHARSET غير محبذ.

موقوفة منذ الإصدار 2.2:
تم إيقاف هذا الإعداد. بدءًا من Django 3.1 ، يجب أن تكون الملفات المقروءة من القرص بترميز UTF-8.

الإصدارات:

  • ديجانجو 2.2.0
  • django-compressor 2.2.0 تحديث
bug

التعليق الأكثر فائدة

يبدو أن أي وصول إلى خاصية settings.FILE_CHARSET ، حتى لاختبار ما إذا تم تجاوزها ، سيؤدي إلى تشغيل التحذير. وهذا بالضبط ما نفعله للتحقق مما إذا كنا بحاجة إلى استخدام الافتراضي utf-8 .

إذا أردنا الحفاظ على التوافق مع الإصدارات السابقة ، فإن أبسط طريقة هي تعطيل هذا التحذير لهذا السطر المحدد من التعليمات البرمجية باستخدام شيء مثل هذا:

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

إذا كان هذا الحل يبدو جيدًا بالنسبة لك ، فيمكنني تقديم العلاقات العامة.

ال 10 كومينتر

تقول مذكرة الإصدار:

تم إيقاف إعداد FILE_CHARSET . بدءًا من Django 3.1 ، يجب أن تكون الملفات المقروءة من القرص بترميز UTF-8.

هل يكفي فقط استبدال كل ضاغط django settings.FILE_CHARSET بـ utf-8 لمعالجة هذه المشكلة ، ربما ...؟

شكرا على الإبلاغ. قد يؤدي استبدال جميع التكرارات بـ utf-8 إلى كسر الأشياء لأولئك الذين يستخدمون هذا الإعداد بالفعل. من المحتمل أن يكون الإصلاح المناسب هو استخدام الإعداد إذا كان موجودًا ، وعدم تعيين المعلمات المعنية إذا لم تكن موجودة.

karyon أشكرك على ردك. حاولت كتابة رقعة. أود منك مراجعة ما إذا كان فهمي صحيحًا.

هذه هي المرة الأولى التي أرسل فيها العلاقات العامة إلى هذا الريبو وربما فاتني شيء مهم. إذا وجدت أي شيء خاطئ ، يرجى إعلامي. شكرا لكم مقدما.

ثابت في # 934

يبدو أن الكود الجديد يسبب تحذيرًا مشابهًا جدًا في الإعداد الخاص بي:

  /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

مع

django-compressor==2.3
Django==2.2.2

يبدو أن أي وصول إلى خاصية settings.FILE_CHARSET ، حتى لاختبار ما إذا تم تجاوزها ، سيؤدي إلى تشغيل التحذير. وهذا بالضبط ما نفعله للتحقق مما إذا كنا بحاجة إلى استخدام الافتراضي utf-8 .

إذا أردنا الحفاظ على التوافق مع الإصدارات السابقة ، فإن أبسط طريقة هي تعطيل هذا التحذير لهذا السطر المحدد من التعليمات البرمجية باستخدام شيء مثل هذا:

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

إذا كان هذا الحل يبدو جيدًا بالنسبة لك ، فيمكنني تقديم العلاقات العامة.

نعم ، العلاقات العامة ستكون لطيفة. إذا لزم الأمر ، يمكنك البدء عن طريق إرجاع PR الأصلي :)

أثناء كتابة التصحيح الخاص بـ PR اكتشفت أن التحذير كان في الواقع ناتجًا عن اكتشاف خطأ غريب للغاية بقيمة is_overridden('FILE_CHARSET') . يبدو أنه في مشروعي بينما لم أقم بتعيين FILE_CHARSET في إعداداتي ، فإن is_overridden('FILE_CHARSET') يُرجع True.

ولكن إذا قمت باختبار مشروع django بسيط مع تثبيت ضاغط django فقط -> لا يوجد تحذير

لذا فإن العلاقات العامة الخاصة بي ليست ضرورية في الواقع: لا يجب أن يقوم is_overridden('FILE_CHARSET') بإرجاع True لذا لا يجب أن يرفع compress() و CompilerFilter() التحذير. في ظل الظروف العادية.

حتى الاختبار الذي أضفته إلى قاعدة كود django-Compressor للكشف عن أي تراجع في هذا التحذير pb ، لم يكن ذلك كثيرًا: لقد أزال django / django @ 3d716467 الالتزام (المضمّن في django 3.1 قريبًا) التحذير المذكور ، بعد الجدول الزمني لإيقاف django .

الجانب المشرق للأشياء: لقد اختبرت django-compressor مقابل كود django الجديد (الرمز الذي لم يعد يخرج فيه التحذير المرتبط به FILE_CHARSET ) ويعمل بدون أي مشكلة يمكن اكتشافها.

آسف للإزعاج. أعتقد أنه يمكنك إغلاق (مرة أخرى) المشكلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات