์ ์ง ๊ด๋ฆฌ์๋ ๋ค์ ๋ฆด๋ฆฌ์ค๋ฅผ ์ค์ผ ๊ณํ์ด ์์ต๋๊น? ๋ด ์ง์ฅ์์ ๋ช ๊ฐ์ง ํ๋ก์ ํธ๋ django_assert_num_queries
์ ๊ฐ์ ์๋ก์ด ๊ธฐ๋ฅ์ ์์กดํฉ๋๋ค.
ํด์ ํ ์ฐจ๋จ๊ธฐ๊ฐ ์์ผ๋ฉด ๊ธฐ๊บผ์ด ๋์๋๋ฆฌ๊ฒ ์ต๋๋ค.
1.11 ๊ธฐ๋ฐ ์ ๋ฆด๋ฆฌ์ค๋ @blueyed ์์ ๋ฆด๋ฆฌ์ค๋์ด์ผ ํฉ๋๋ค.
@ํ ๋ฉ
๋ฌด์จ ๋ง์ ํฉ๋๊น?
๋ฆด๋ฆฌ์ค๋ฅผ ํ ์ ์๋ ๊ถํ์ด ์๋์ง์กฐ์ฐจ ํ์คํ์ง ์์ต๋๋ค.
์ด๊ฒ์ ๋ํ ์์์ด ์์ต๋๊น? ๋ํ ๋์์ด ๋์ด์ ๊ธฐ์ฉ๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ Python 3.6์ด ๋ฏธ์ถ์ ๋ฒ์ ์์๋ง ์ง์๋๋ ๊ฒ์ผ๋ก ์ง์ ๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค.
์ ๋ฐ์ดํธ๋ ๋ณ๊ฒฝ ๋ก๊ทธ๊ฐ ํ์ํฉ๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ค๋นํ๊ณ ์ถ๋ค๋ฉด ํฐ ๋์์ด ๋ ๊ฒ์ด๊ณ ๊ฐ๋ฅํ ํ ๋นจ๋ฆฌ ๋ฆด๋ฆฌ์ค๋ฅผ ํ ๊ฒ์ ๋๋ค.
๋๋ PyPI์ ๊ด๋ฆฌ์๋ก @blueyed ๋ฅผ ์ถ๊ฐํ์ฌ ๊ทธ๊ฐ ํจํค์ง๋ ์ ๋ก๋ํ ์ ์๋๋ก ํ์ต๋๋ค!
๋ ์์ฃผ ๋ฆด๋ฆฌ์คํ๊ธฐ ์ํด ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ํตํด ๋์์ ์ฃผ์๋ฉด ๋งค์ฐ ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. โค๏ธ:
๋ณ๊ฒฝ ๋ก๊ทธ ๊ด๋ฆฌ๋ ์ฝ๊ฐ ๊ณ ํต์ค๋ฝ๊ณ ๋น๋ฒํ ๋ฆด๋ฆฌ์ค๋ฅผ ๋ฐฉ์งํฉ๋๋ค. ์์ ์คํฌ๋ฆฝํธ์ ํตํฉ๋ towncrier์ ๊ฐ์ ๊ฒ์ด ๋งค์ฐ ๋์์ด ๋ ๊ฒ์ ๋๋ค.
๋ฆด๋ฆฌ์ค ์์ ์ ๋์ต๋๋ค. ์ด๋ฏธ pytest-django github ์ ์ง ๊ด๋ฆฌ์์ด๊ฑฐ๋ pytest ์ปค๋ฎค๋ํฐ์์ ์ด๋ค ์ข ๋ฅ์ ์ค์ ์ด ์์ด์ผ ํฉ๋๋ค. PyPI ์ฌ์ฉ์ ์ด๋ฆ์ ์๋ ค์ฃผ์๋ฉด ๊ด๋ฆฌ์๋ก ์ถ๊ฐํ๊ฒ ์ต๋๋ค. :)
@p-himik ์ง์ฆ๋์ง๋ง ๋ถ๋ช ํ ํ์๋ฉด, ํ์ฌ ๋ฆด๋ฆฌ์ค๋ Python 3.6์์ ์ ์๋ํฉ๋๋ค(์ ๋ ๋งค์ผ ์ฌ์ฉํฉ๋๋ค).
@pelme๋ ๊ฐ์ฌํฉ๋๋ค.
์ข์ ์์ด๋์ด์ ๋๋ค. towncrier ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ฏธ๊ฐ ์์ ์ ์์ง๋ง ๋ฆด๋ฆฌ์ค๋น ํ ๋ฒ ์๋์ผ๋ก git ๋ก๊ทธ๋ฅผ ํ์ด๋ณด๋ ๊ฒ๋ณด๋ค ์ค์ ๋ก ๋ ๋์์ง ํ์คํ์ง ์์ต๋๋ค. pytest ์์ฒด์์ ์ฌ์ฉํ๊ณ ์์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ๋ ๋ง์ ์ผ์ด ์งํ๋๊ณ ์์ต๋๋ค.
๋ณ๊ฒฝ ๋ก๊ทธ๋ฅผ ํ์ด๋ณด๋ ๋ฐ ๋๋ฌด ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ์ง๋ ์์ง๋ง (์ ์์ ์ ์ํด) ์์ ๋จ๊ณ๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฆด๋ฆฌ์ค๋ฅผ ์๋ํํ๋ ๊ฒ์ด ์ข๊ณ ์๋ง๋ ๋ ์์ฃผ ๋ฆด๋ฆฌ์คํ ์ ์๋๋ก ๋ง๋ค ๊ฒ์ ๋๋ค. ์ด์์ ์ผ๋ก๋ ๊ฑฐ์ ๊ฐ๊ฐ์ ๋ณํฉ๋ bugfix PR๊ณผ ํจ๊ป bugfix ๋ฆด๋ฆฌ์ค๋ฅผ ๋ด๋๋ ๊ฒ์ด ์ข์ ๊ฒ์ ๋๋ค. bugfix ๋ฆด๋ฆฌ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ง์ฆ๋ฉ๋๋ค. :)
ํด๊ฐ์์ ๋์์ค๋ ์ฆ์ ๋ฆด๋ฆฌ์ค๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์ํ tox ๊ตฌ์ฑ ์์ ์ ํ ๊ฒ์ ๋๋ค.
@pelme ์ง๊ธ ์ ๋ฆด๋ฆฌ์ค๋ ์ด๋ป์ต๋๊น? :)
@pelme ์ง๊ธ ์ ๋ฆด๋ฆฌ์ค๋ ์ด๋ป์ต๋๊น? :)
์, PyPi ํจํค์ง๋ ๋งค์ฐ ์ค๋๋์๊ณ django 1.11์ ์ง์ํ์ง ์์ต๋๋ค.
๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ ์ด์ ์ฝ๊ฐ ์๋์ ๋๋ค(ํ๊น , Github์ ํ๊ทธ ํธ์, sdist+wheel ๋น๋, PyPI์ ์ ๋ก๋). ์ด๊ฒ์ ์คํฌ๋ฆฝํธ ์ผ ์ ์์ต๋๋ค. ์ฆ, ๋ฒ์ ๋ฒํธ๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๋ ๊ฐ๋จํ ์คํฌ๋ฆฝํธ์์ ํด๋น ๋จ๊ณ๋ฅผ ์ง์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ํ ๋ฌธ์ํํด์ผ ํฉ๋๋ค.
์ด ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ./setup.py publish
๋ฅผ ๋ง๋ญ๋๋ค. https://github.com/jedie/python-code-snippets/blob/master/CodeSnippets/setup_publish.py
์ค์ ์๋ฃจ์ ์ https://github.com/zestsoftware/zest.releaser ...์ ๊ฐ์ ๊ฒ์ด์ง๋ง ํ๊ฐํ๋ ๋ฐ ์๊ฐ์ ํฌ์ํ์ง ๋ง์ญ์์ค ;)
๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ ์ด์ ์ฝ๊ฐ ์๋์ ๋๋ค(ํ๊น , Github์ ํ๊ทธ ํธ์, sdist+wheel ๋น๋, PyPI์ ์ ๋ก๋). ์ด๊ฒ์ ์คํฌ๋ฆฝํธ ์ผ ์ ์์ต๋๋ค. ์ฆ, ๋ฒ์ ๋ฒํธ๋ฅผ ์ธ์๋ก ์ฌ์ฉํ๋ ๊ฐ๋จํ ์คํฌ๋ฆฝํธ์์ ํด๋น ๋จ๊ณ๋ฅผ ์ง์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ํ ๋ฌธ์ํํด์ผ ํฉ๋๋ค.
์ด ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ./setup.py๋ฅผ ๊ฒ์ํฉ๋๋ค. https://github.com/jedie/python-code-snippets/blob/master/CodeSnippets/setup_publish.py
Travis Build Stages ๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋จ๊ณ ๋ ์๋ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๊ฐ ํ๊ทธ ์ง์ ๋ฐ ํธ์๋ก ๋จ์ํ๋ฉ๋๋ค. PyPI ๋ฆด๋ฆฌ์ค๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ํ ์๋์ผ๋ก ๋ฐ์ํฉ๋๋ค. ๋๋ ๋ง์ ํ๋ก์ ํธ์์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ ํ๋ฅญํ๊ฒ ์๋ํฉ๋๋ค.
๊ธฐํ๊ฐ ๋๋ฉด ์ด๊ฒ์ ์ค์ ํ PR์ ๋ณด๋ผ ์ ์์ต๋๋ค. ์ ์ง ๊ด๋ฆฌ์๋ PyPI ์ฌ์ฉ์ ์ด๋ฆ๊ณผ ์ํธํ๋ ์ํธ๋ฅผ ์ถ๊ฐํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์, PyPi ํจํค์ง๋ ๋งค์ฐ ์ค๋๋์๊ณ django 1.11์ ์ง์ํ์ง ์์ต๋๋ค.
๊ทธ๊ฒ์ AFAIK ์์ต๋๋ค?!
@sloria
์ข์ IMHO๊ฐ ๋ ๊ฒ์
๋๋ค.
AFAIK ์ ๋ PyPI์ ๋ฆด๋ฆฌ์คํ ์ ์์ผ๋ฏ๋ก @pelme ๊ฐ ์ง์ ํ ๊ธฐํ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋๋นํ์ฌ ๊ฒฐ๊ตญ ๋ด ์๊ฒฉ ์ฆ๋ช
์ ์ฌ์ฉํ ์ ์์ต๋๋ค(๋๋ ๋ณ๋์ ์ฌ์ฉ์๋ฅผ ๋ง๋๋ ๊ฒ์ด ๋ ๋ซ์ต๋๊น?).
๋ฆด๋ฆฌ์ค ํ๋ก์ธ์ค๋ ์ด์ ์ฝ๊ฐ ์๋์ ๋๋ค(ํ๊น , Github์ ํ๊ทธ ํธ์, sdist+wheel ๋น๋, PyPI์ ์ ๋ก๋).
๋ญ, ๋์์ง ์์! :) ์๋ํ๋ ๋งค์ฐ ํ๋ฅญํ์ง๋ง ๊ทธ ๋์ ์ด๋ฌํ ์๋ ๋จ๊ณ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
์ด์ ๋ํ ๊ณํ์ด ์์ต๋๊น? ์ด ํจํค์ง๊ฐ PyPI์ ๋ง์ง๋ง์ผ๋ก ํธ์๋ ์ดํ ๋ ๊ฐ์ง ์ฃผ์ Django ๋ฆด๋ฆฌ์ค๊ฐ ์์๊ณ Django 2 ์ง์์ ์ํด git์์ ์ง์ ์ค์นํด์ผ ํฉ๋๋ค.
์์ง ์ ์ ํ์ด ์ถ์๋์ง ์์๋์? :(
๋ง์ง๋ง ๋ฆด๋ฆฌ์ค ์ดํ 81๊ฐ์ ์ปค๋ฐ๊ณผ 504์ผ์ด ์์ต๋๋ค.
https://travis-ci.org/pytest-dev/pytest-django/jobs/366444792 ๊ฐ PyPI์ ์ ๋ก๋ํ ๋ ์์๋๋ก ์๋ํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์์ง pypi๊ฐ ์๋๋๋ค.
https://github.com/pytest-dev/pytest-django/pull/590 / a96931e๋ฅผ ์ฐธ์กฐํ์ธ์.
3.2.1(50063c4)๋ก ์์ ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
https://pypi.python.org/pypi/pytest-django :๋ถ๊ฝ๋์ด:
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด์ ๋ํ ๊ณํ์ด ์์ต๋๊น? ์ด ํจํค์ง๊ฐ PyPI์ ๋ง์ง๋ง์ผ๋ก ํธ์๋ ์ดํ ๋ ๊ฐ์ง ์ฃผ์ Django ๋ฆด๋ฆฌ์ค๊ฐ ์์๊ณ Django 2 ์ง์์ ์ํด git์์ ์ง์ ์ค์นํด์ผ ํฉ๋๋ค.