Python-future: ๋ฏธ๋ž˜ํ™”๋œ ์ฝ”๋“œ์—์„œ __future__/future ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ํ•ด๊ฒฐ์‚ฌ

์— ๋งŒ๋“  2019๋…„ 05์›” 28์ผ  ยท  5์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: PythonCharmers/python-future

์ด ๊ธฐ๋Šฅ์„ ์ฐพ๊ณ  ์žˆ์—ˆ๋Š”๋ฐ ์„ค๋ช…์„œ์— ์—†์–ด์„œ ๊ธฐ๋Šฅ ์š”์ฒญ์„ ์—ฌ๋Š” ์ค‘์ž…๋‹ˆ๋‹ค.

Python 2/3 ํ˜ธํ™˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์ƒ์˜ Python 2 ์ง€์›์„ ์ œ๊ฑฐํ•˜๋Š” ํ•ด๊ฒฐ์‚ฌ๋ฅผ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด:

  • ๋ถˆํ•„์š”ํ•œ __future__ ๊ฐ€์ ธ์˜ค๊ธฐ ์ œ๊ฑฐ(์˜ˆ print_function )
  • from future import standard_library ๋ฐ standard_library.install_aliases() ํ–‰ ์ œ๊ฑฐ
  • from builtins import * ๋ผ์ธ ์ œ๊ฑฐ
  • from future.utils import python_2_unicode_compatible ์ œ๊ฑฐ

๊ทธ๋Ÿฌํ•œ ํ•ด๊ฒฐ์‚ฌ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ณ ๊ฐ ์ค‘ ๋งŽ์€ ์ˆ˜๊ฐ€ future ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ Python 3์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•œ ๋‹ค์Œ ๊ณง Python 2 ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ์ด๋Ÿฌํ•œ ํ•ด๊ฒฐ์‚ฌ๊ฐ€ ๋งค์šฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

futurize script help wanted unscheduled wontfix / cantfix

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚ด๊ฐ€ ์ง์ ‘ ์ผ๋ถ€ ๋ณ€ํ˜•์„ ๋งŒ๋“ค๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/purplediane/drop2

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

์กด์žฌํ•œ๋‹ค๋ฉด ์ž˜ ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ˆ˜๋™์œผ๋กœ ๋ชจ๋‘ ์ œ๊ฑฐํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. -3 ์™€ ๊ฐ™์€ ํ”Œ๋ž˜๊ทธ์™€ ํ•จ๊ป˜ ์ž๋™ ์‹คํ–‰๋˜๋Š” ๊ณ ์ • ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด 3๊ฐ€์ง€ ๊ทœ์ • ์ค€์ˆ˜์— ๋Œ€ํ•œ ๋ฆฌํŒฉํ„ฐ๋ง๋งŒ ์˜๋ฏธํ•˜๊ณ  python2 ํ˜ธํ™˜์„ฑ์€ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ ์ง์ ‘ ์ผ๋ถ€ ๋ณ€ํ˜•์„ ๋งŒ๋“ค๊ณ  ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ฌถ์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์—ฌ๊ธฐ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: https://github.com/purplediane/drop2

์ผ๋ถ€ ๊ฒน์นจ์ด ์žˆ๋Š” ๊ด€๋ จ ๋„๊ตฌ(์ฆ‰, __future__ ๊ฐ€์ ธ์˜ค๊ธฐ):

asottile/pyupgrade: ์ตœ์‹  ๋ฒ„์ „์˜ ์–ธ์–ด์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ์„ ์ž๋™์œผ๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋Š” ๋„๊ตฌ(๋ฐ ์‚ฌ์ „ ์ปค๋ฐ‹ ํ›„ํฌ).

๊ธฐํƒ€ ์ฃผ๋ชฉํ• ๋งŒํ•œ ์‚ฌํ•ญ:

  • u ์ ‘๋‘์‚ฌ ์ œ๊ฑฐ
  • class ์ •์˜์—์„œ (object) ์ œ๊ฑฐ
  • super() ํ†ตํ™” ์—…๋ฐ์ดํŠธ
  • mock ๊ฐ€์ ธ์˜ค๊ธฐ ์—…๋ฐ์ดํŠธ

์ฆ‰, sed ๋Œ€ํ•ด standard_library sed ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

sed -i '' '/.*standard_library.*/d' **/*.py
-from future import standard_library
-standard_library.install_aliases()
 import json
 import logging
 import urllib.parse

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋„ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

  • .*python_2_unicode_compatible.*
  • .*implements_iterator.*
  • from builtins.*

๋‚˜๋Š” ์ด๋ฏธ pyupgrade๋ฅผ ์•Œ๊ณ  ์žˆ๊ณ  ๊ทธ๊ฒƒ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

pyupgrade (+ ์‚ฌ์ „ ์ปค๋ฐ‹ ํ›„ํฌ)๋Š” ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ์œ„ํ•œ ํ›Œ๋ฅญํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ๋Œ€์•ˆ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด FR์„ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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