Django-compressor: RemovedInDjango31Warning : FILE_CHARSET ์„ค์ •์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 04์›” 02์ผ  ยท  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
  • ์žฅ๊ณ  ์••์ถ•๊ธฐ 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์„ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  10 ๋Œ“๊ธ€

๋ฆด๋ฆฌ์Šค ๋…ธํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•ฉ๋‹ˆ๋‹ค.

FILE_CHARSET ์„ค์ •์€ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Django 3.1๋ถ€ํ„ฐ ๋””์Šคํฌ์—์„œ ์ฝ์€ ํŒŒ์ผ์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด django-compressor์˜ ๋ชจ๋“  settings.FILE_CHARSET ๋ฅผ utf-8 ๋กœ ๋ฐ”๊พธ๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๊นŒ?

์‹ ๊ณ  ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ฐœ์ƒ์„ utf-8 ๋ฐ”๊พธ๋ฉด ์‹ค์ œ๋กœ์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ์„ค์ •์ด์žˆ๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๊ณ ,์—†๋Š” ๊ฒฝ์šฐ ๋ฌธ์ œ์˜ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@karyon ๊ท€ํ•˜์˜ ๋‹ต๋ณ€์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํŒจ์น˜๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ œ ์ดํ•ด๊ฐ€ ์ •ํ™•ํ•œ์ง€ ๊ฒ€ํ† ํ•ด ์ฃผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ด repo์— PR์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ ์ด๋ฒˆ์ด ์ฒ˜์Œ์ด๋ฉฐ ์ค‘์š”ํ•œ ๊ฒƒ์„ ๋†“์ณค์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ ์ ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์„ธ์š”. ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

# 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์ด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์›๋ž˜ PR์„ ๋˜๋Œ๋ ค ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. :)

PR์— ๋Œ€ํ•œ ํŒจ์น˜๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋™์•ˆ ๊ฒฝ๊ณ ๊ฐ€ ์‹ค์ œ๋กœ is_overridden('FILE_CHARSET') ์˜ ๋งค์šฐ ์ด์ƒํ•œ ํ—ˆ์œ„ ํƒ์ง€์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜์—ˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋‚ด ์„ค์ •์—์„œ FILE_CHARSET ๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ is_overridden('FILE_CHARSET') ๋Š” True๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ django-compressor ๋งŒ ์„ค์น˜๋œ ์ƒํƒœ์—์„œ ์ตœ์†Œํ•œ์˜ django ํ”„๋กœ์ ํŠธ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ฉด-> ๊ฒฝ๊ณ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‚ด PR์€ ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. is_overridden('FILE_CHARSET') ๋Š” True๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์•„์•ผํ•˜๋ฏ€๋กœ compress() ๋ฐ CompilerFilter() ๋Š” ๊ฒฝ๊ณ ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ •์ƒ์ ์ธ ์ƒํ™ฉ์—์„œ.

์‹ฌ์ง€์–ด ๋‚ด๊ฐ€ ์žฅ๊ณ  ์••์ถ•๊ธฐ์˜ ์ฝ”๋“œ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ ์‹œํ—˜์ด ๊ฒฝ๊ณ  PB์— ์–ด๋–ค ํšŒ๊ท€๋ฅผ ๊ฐ์ง€, ๋งŽ์€ ineressting๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค ์žฅ๊ณ  / ์žฅ๊ณ  @ 3d716467๊ฐ€ ๋ฐ”๋กœ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค (์žฅ๊ณ  3.1 - ์˜ฌ ๊ณง ํฌํ•จ) ์ปค๋ฐ‹ ์ƒ๊ธฐ ๊ฒฝ๊ณ  , django ์ง€์› ์ค‘๋‹จ ํƒ€์ž„ ๋ผ์ธ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค .

๋ฐ์€๋ฉด : ์ƒˆ๋กœ์šด django ์ฝ”๋“œ ( FILE_CHARSET ๋ฐ ๊ด€๋ จ ๊ฒฝ๊ณ ๊ฐ€ ๋” ์ด์ƒ ์ข…๋ฃŒ๋˜์ง€ ์•Š๋Š” ์ฝ”๋“œ)์— ๋Œ€ํ•ด django-compressor๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ์œผ๋ฉฐ ๊ฐ์ง€ ํ•  ์ˆ˜์žˆ๋Š” ๋ฌธ์ œ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํŽธ์„ ๋“œ๋ ค ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ (๋‹ค์‹œ) ๋‹ซ์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰