æ¬æžã®ç¿»èš³çã¯ãPythonãããžã§ã¯ãã«ã³ãŒãã®æžåŒèšå®ããã¹ããç¶ç¶ççµ±åãããã³äŸåæ§åæããŒã«ãè£
åã§ããããã«ããããŒã«å°çšã§ãã ããã«ãããéçºããã»ã¹ã®é床ãäžãããã³ãŒãã®å質ãåäžæ§ãã»ãã¥ãªãã£ãåäžããŸãã ãã®è³æã®èªè
ã¯æ¢ã«Pythonéçºã®çµéšããããèªãã§ããéã«å®éšããPythonãããžã§ã¯ããããããšãåæãšããŠããŸãã ãã®ãããªãããžã§ã¯ãããªãå Žåã¯ã
ããã§éçºç°å¢ãæºåããPythonããã±ãŒãžãäœæããæ¹æ³ãåŠã¶ããšãã§ããŸãã ããã§æäŸãããäŸã¯ãmacOSãšPython 3.7ã䜿çšããŠæºåãããŸãã

ã¹ããã1. Blackã®ã€ã³ã¹ããŒã«
ãããžã§ã¯ãã³ãŒãã¯ãã³ãŒãã¹ã¿ã€ã«ã®èŠåã«åŸãå¿
èŠããããŸãã
Blackã¯ãã³ãŒããèªåçã«ãã©ãŒããããããã®å€èŠ³ã
PEP 8æšæºã«åãããPythonããã±ãŒãžã§ãã Blackã¯æ¯èŒçæ°ãããããžã§ã¯ãã§ããããã§ã«100äžä»¥äžã®ããŠã³ããŒããç²åŸããŠããŸãã ãã®äœ¿çšã¯ããã«Pythonéçºã®è¯ãå³ã®ãããã«ãªããŸããã
ãã¡ãããã©ãã¯ã®ããã¥ã¢ã«ã§ãã
ç§ã¯ã³ãŒããšãã£ã¿ãŒãšããŠAtomã䜿çšããŠããããã
Python-Black
ããã±ãŒãžãAtomã«è¿œå ããŸããã ã€ã³ã¹ããŒã«æ¹æ³ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã ãã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããåŸãAtomã¯ãã¡ã€ã«ãä¿åããåŸã«ã³ãŒããåãã©ãŒãããããŸãã
ãã©ãã¯ã«ã€ããŠè©±ããŠããéããã®ããŒã«ã«ãããžã§ã¯ãã§ç§ãã¡ãšäžç·ã«åã人ãã¡ã®éçºç°å¢ãè£
åããŸãããã ãã®çµæããããžã§ã¯ãã§äœæ¥ãããã¹ãŠã®äººãåãã³ãŒããã©ãŒãããã«ãŒã«ã䜿çšããŸããããããªããšããã«ãªã¯ãšã¹ãã¯åãå
¥ããããŸããã
requirements_dev.txt
ãã¡ã€ã«ã«ããæåã®ç©ºãè¡ã«
black==18.9b0
ãè¿œå ãã
install -r requirements_dev.txt
ã³ãã³ããå®è¡ã
install -r requirements_dev.txt
ã
ããã©ã«ãã§ã¯ãé»ã¯ã³ãŒãè¡ã®é·ãã88æåã«èšå®ããŸãã
Sphinxãªã©ã®äžéšã®ã¹ã¿ã€ã«ã¬ã€ãã§ã¯ã79æåã®æååé·ãå¿
èŠã§ãã
Black-Atom
ããã±ãŒãžã®èšå®ã§ã¯ãç®çã®è¡ã®é·ããèšå®ã§ããŸãã
ã³ãŒãã®ãã©ãŒãããã«ãããæéãç¯çŽããããŒã«ãå
¥æããã®ã§ãPyPIãžã®ã³ãŒãã®éä¿¡ãé«éåããŠç°¡çŽ åããæ¹æ³ã«ã€ããŠèããŸãã
ã¹ããã2. .pypircãã¡ã€ã«ãäœæãã
ãã糞ã䜿çšããŠã¢ããªã±ãŒã·ã§ã³ã¢ã»ã³ããªãTestPyPIããã³PyPIã«éä¿¡ããå Žåããã°ã€ã³æ
å ±ãæåã§å
¥å
ããå¿
èŠ
ããããŸãã 麻ã²ãã«æ
£ããŠããªãå Žåã¯ã
ãã®è³æãã芧ãã ããã 次ã«ããã®ããã»ã¹ãèªååããŸãã
Twineã¯ãããŒã ãã£ã¬ã¯ããªã«ãã
.pypirc
ãã¡ã€ã«ã䜿çšã§ããŸãã ããŒã¿ãã¢ã³ããŒããããã®ããŒã«ã¯ãæå®ããããã¡ã€ã«ããURLããŠãŒã¶ãŒåãããã³ãã¹ã¯ãŒããååŸããŸãã
ãããã£ãŠãããŒã ãã£ã¬ã¯ããªã«
.pypirc
ãã¡ã€ã«ãäœæããŸãã
touch ~/.pypirc
次ã®ããã¹ããè¿œå ããŸãã
[distutils] index-servers = pypi testpypi [testpypi] repository: https://test.pypi.org/legacy username = your_username password = your_pypitest_password [pypi] username = your_username password = your_pypi_password
ããã§å®éã®ãŠãŒã¶ãŒåãšãã¹ã¯ãŒããå
¥åããå¿
èŠãããããšã¯æããã§ãã ãŸãããã®ãã¡ã€ã«ãçŸåšã®äœæ¥ãã£ã¬ã¯ããªã§ã¯ãªããããŒã ãã£ã¬ã¯ããªã«ä¿åãããŠããããšã確èªããŠãã ããã ãã®ãã¡ã€ã«ãä»ã®ãŠãŒã¶ãŒããä¿è·ããå Žåã¯ãã³ãã³ãã©ã€ã³ããŒã«ã䜿çšããŠãã¢ã¯ã»ã¹èš±å¯ãæ§æã§ããŸãã
chmod 600 ~/.pypirc
ããã§ã次ã®ã³ãã³ãã䜿çšããŠãããã±ãŒãžãTestPyPIã«ããŒãã§ããŸãã
twine upload -r testpypi dist/*
éåžžã®PyPIã§ã¯ã次ã®ãããªããã±ãŒãžãããŒãã§ããŸãã
twine upload dist/*
.pypirc
ãã¡ã€ã«ãååŸããåŸããŠãŒã¶ãŒåãšãã¹ã¯ãŒããæåã§å
¥åããå¿
èŠã¯ãªããªããŸããã
ããã§ãéçºç°å¢ã«ãã¹ãããŒã«ãè¿œå ããŠãäœæããŠããããã±ãŒãžã®æ£ããåäœãæ€èšŒã§ããããã«ããŸãã
ã¹ããã3. pytestãã€ã³ã¹ããŒã«ããŠæ§æãã
Pytestã¯ãPythonã§èšè¿°ãããã³ãŒãããã¹ãããããã®æã人æ°ã®ãã䜿ããããã©ã€ãã©ãªã§ãã ãã®äŸã§ã¯ããããžã§ã¯ãã«ç°¡åãªãã¹ããè¿œå ããŸãã
ã㊠ãpytestã®è©³çŽ°ã«èå³ãããå Žåã¯ããã®ããŒã«ã®å
¥éã¬ã€ããšããŠãå§ãããŸãã
pytestã®è©³çŽ°ã
requirements_dev.txt
ãã¡ã€ã«ã«è¿œå ããŸãã
pytest==4.3.0
ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãããïŒ
pip install requirements_dev.txt
次ã«ãpytestãããã±ãŒãžãæ€åºã§ããããã«ãã次ã®ã³ãã³ããå®è¡ããŸãã
pip install -e .
ä»®æ³éçºç°å¢ãéã¢ã¯ãã£ãã«ããå Žåããã¹ããå®è¡ããã«ã¯äž¡æ¹ã®
pip
ã³ãã³ããå床å®è¡ããå¿
èŠããããŸãã
ã¹ããã4.ãã¹ãã®äœæ
ãããžã§ã¯ãã®ã«ãŒããã£ã¬ã¯ããªã«
test
ãã©ã«ããŒãè¿œå ããŸãã ãã¡ã€ã«
test_your_package_name.py
äžã«é
眮ããŸãã ç§ã®ãã¡ã€ã«ã¯
test_notebookc.py
ãšåŒã°ã
test_notebookc.py
ã ãã¡ã€ã«åã
test_
ã§å§ãŸãå Žåãpytestã¯ãã®ãããªãã¡ã€ã«ãèªåçã«æ€åºã§ããŸãã
次ã®ãã¹ãã
test_notebookc.py
ãã¡ã€ã«ã«è¿œå ããŸãããããã¯ãé¢æ°ãæ£ããååã衚瀺ãããã©ããã確èªããããšãç®çãšããŠããŸãã ãã®ã³ãŒããå€æŽããŠã䜿çšãããã¡ã€ã«åãšé¢æ°åãèªåã®ãã®ãšäžèŽããããã«ããç¬èªã®ãã¹ããèšè¿°ããŸãã
"""Tests for `notebookc` package.""" import pytest from notebookc import notebookc def test_convert(capsys): """Correct my_name argument prints""" notebookc.convert("Jill") captured = capsys.readouterr() assert "Jall" in captured.out
ããã§äœãèµ·ãã£ãŠããŸããïŒ
ãŸããããã§ã¢ãžã¥ãŒã«ãã€ã³ããŒãããŸãã 次ã«ã
test_my_function_name
ãã³ãã¬ãŒãã«åŸã£ãŠååãäœæãããé¢æ°ãäœæããŸãã ãã®é¢æ°ã®åœåèŠåã«ããããããžã§ã¯ãã³ãŒããèªãã§ããä»ã®äººãããã¹ãã§äœããã¹ããããŠãããããã°ããç解ã§ããŸãã ããã«ãããã¯ãã¹ãã§ã³ãŒãã®ã«ãã¬ããžãå¶åŸ¡ããã®ã«åœ¹ç«ã€ããã±ãŒãžã«å¿
èŠã§ããããã«ã€ããŠã¯ä»¥äžã§èª¬æããŸãã
ãã®åŸãïŒ
convert
ïŒé¢æ°ãåŒã³åºããåå
Jill
ãåŒæ°ãšããŠæž¡ããŸãã 次ã«-é¢æ°ã衚瀺ãããã®ããã£ããã£ããŸãã ããã§ãåé¡ã®é¢æ°ã¯éåžžã«åçŽã§ãããšèšã䟡å€ããããŸãã 圌女ã¯
my_name
ãã©ã¡ãŒã¿ãåãåãã次ã®ããšãè¡ããŸãã
print(f"I'll convert a notebook for you some day, {my_name}.")
Pytestã¯ãé¢æ°ã®åºåã«
Jall
ã
Jall
ããŠãããã©ããããã§ãã¯ããŸãã
Jill
é¢æ°ãæž¡ãããããã®è¡ã¯ååšããªãã¯ãã§ãã
ããã«ãåºåã®ååã«é¢ããæ
å ±ãèŠã€ããããšãã§ããpytestã®ããã¥ã¡ã³ãããããŸãã
ã³ãã³ãããã³ããã§
pytest
ãšå
¥åããŠããã¹ããå®è¡ããŸãã ãã®ãã¹ãã¯å€±æããã¯ãã§ãã ãšã©ãŒæ
å ±ã¯èµ€ã§è¡šç€ºãããŸãã
ãã¹ãäžã«ãšã©ãŒãæ€åºãããŸãããç¹å®ã®æ¡ä»¶äžã§ãã¹ãããšã©ãŒã§çµäºããããã«ããã¹ãã®æ£ç¢ºæ§ã確èªããŠèª¬æããããšããå§ãããŸãã ç·ã®ã¡ãã»ãŒãžã®ã¿ãåºåãããã¹ããäœæããªãã§ãã ããããã¹ããå®è¡ãããšããã§ãã¯å¯Ÿè±¡ã®å
容ããã§ãã¯ãããªãããšããããŸãã
ãã¹ãã倱æãããšç¢ºä¿¡ããåŸã
Jall
ã¹ããŒãã¡ã³ãã
Jill
å€æŽãããã¹ããå床å®è¡ããŸãã ããã§æ£åžžã«å®äºããã¯ãã§ãã
ãã¹ããæ£åžžã«å®äºããŸãããä»ã§ã¯ãã¹ãŠãé 調ã§ãã ãã®ãã¹ãã§ã¯ã誰ããé¢æ°ã«è¡ãæž¡ããšããã®é¢æ°ã衚瀺ããããã¹ãã«ãã®è¡ãå«ãŸããããšã確èªã§ããŸãã
ãŸããæž¡ãããããŒã¿ãåŠçããæ¹æ³ã«ã€ããŠé¢æ°ããã§ãã¯ãããã¹ããäœæããããšãã§ããŸãã ã€ãŸããæååãšã¿ã€ããç°ãªãããŒã¿ãåä¿¡ãããšãTypeErrorãšã©ãŒãçºçããã¯ãã§ãã Pythonã§ã®äŸå€ãšãšã©ãŒåŠçã«é¢ããåªããæ
å ±ã
次ã«ç€ºããŸãã
åã®ãã¹ããäœæãããšãã«ããã¹ããæ£åžžã«å®äºããã³ãŒããäœæããŸããã ããã¯ããã¹ãé§åéçºïŒTDDïŒãšåŒã°ããŸãã TDDã¯ãTDDã䜿çšããªãå Žåããããšã©ãŒã®å°ãªãã³ãŒããèšè¿°ããã®ã«åœ¹ç«ã€å®èšŒæžã¿ã®ããã°ã©ãã³ã°ã¢ãããŒãã§ãã
ããã«ããã€ãã®æçšãªTDDè³æããããŸãã
次ã«ãæŒç¿ãšããŠãæåå以å€ã®äœããæž¡ããšãã«ãšã©ãŒãã¹ããŒãããã®é¢æ°ã«é©åãªã¡ã«ããºã ãå®è£
ããããã«ã
convert()
é¢æ°ããã§ãã¯ãããã¹ããäœæããŠã¿ãŠãã ããã æŽæ°ããªã¹ããããã³èŸæžã¯æååã«å€æãããããšã«æ³šæããŠãã ããã
ããã±ãŒãžããã¹ãã«åæ Œãããšãç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã·ã¹ãã ãå©çšããæºåãæŽããŸãã
ã¹ããã5. Travis CIãµãŒãã¹ãžã®ç»é²ãšãã®æ§æ
Travis CIã¯ãããœãããŠã§ã¢ãæ§ç¯ããã³ãã¹ãããããã®åæ£åWebãµãŒãã¹ãã§ãã æè¿ã
ã€ãã©ã«è²·åãããŸããã ä»ã®ç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³ã·ã¹ãã ããããŸãããTravis CIã¯äººæ°ã®ãããªãŒãã³ãœãŒã¹ã®ããææžåãããããŒã«ãªã®ã§ãããã䜿çšããŸãã
Travis CIã䜿çšãããšããã¹ãã«åæ ŒããŠæšæºãæºããã³ãŒãã®ã¿ããããžã§ã¯ãã«çµ±åã§ããŸãã
ããã§ã¯ãTravis CIã®è©³çŽ°ãã芧ãã ããããŸããç¶ç¶çãª
çµ±åã«ã€ããŠã¯ãã¡ããã芧ãã ããã
https://travis-ci.org/ã§ã¢ã«ãŠã³ããäœæã
ãŸã ã 次ã«ã[
Review and add your authorized organizations
]ãã¯ãªãã¯ãããããã¡ã€ã«ããŒãžã®
Review and add your authorized organizations
ãªã³ã¯
Review and add your authorized organizations
ã GitHubã«ã¢ã¯ã»ã¹ããããã®ãã¹ã¯ãŒãã®å
¥åãæ±ããããŸãã [
Organization access
ã»ã¯ã·ã§ã³ã§[
Grant
ãã¯ãªãã¯ã
Organization access
ã
Travis CIã¢ã«ãŠã³ãã®ã»ããã¢ããnotebooktoall
ãš
notebookc
ãªããžããªã«é¢ããæ
å ±ãã¢ã«ãŠã³ãã«è¡šç€ºãããããã«ãã¢ã«ãŠã³ããåæããå¿
èŠããããŸããã éåžžãTravis CIãã³ãŒããåŠçããã«ã¯ãçŽ1åããããŸãã ãã®åŸã次ã®å³ã«ç€ºãã¹ã€ããã䜿çšããŠãªããžããªãã¢ã¯ãã£ãåããå¿
èŠããããŸãã
ãªããžããªã®ã¢ã¯ãã£ããŒã·ã§ã³ããã§ã
Settings
ãã¿ã³ãã¯ãªãã¯ããå¿
èŠããããŸãã ããã§ã¯ããªããžããªã«éä¿¡ããããã«ãªã¯ãšã¹ããŸãã¯ãã©ã³ãã«åºã¥ããŠTravisããã«ãã§ãããã©ããã瀺ãå¿
èŠããããŸãã
ãããžã§ã¯ããã«ãã®ã»ããã¢ããããã§ãäœæ¥äžã®ãããžã§ã¯ããã»ããã¢ããããŸããããã«ãããTravisã¯ãã«ãªã¯ãšã¹ãããšã«ãããžã§ã¯ãããã«ãã§ããŸãã
ã¹ããã6. .travis.ymlãã¡ã€ã«ãäœæãã
ãããžã§ã¯ãã®ã«ãŒããã©ã«ããŒã§ã次ã®å
容ã®
.travis.yml
ãã¡ã€ã«ãäœæããŸãã
dist: xenial language: python python: 3.7.2 install: - pip install -r requirements_dev.txt - pip install -e . script: - pytest
dist: xenial
ãUbuntu Xenial 16.04ã䜿çšããŠä»®æ³ç°å¢ãæŽçããå¿
èŠæ§ãTravisã«äŒããããã«å¿
èŠã§ãã Python 3.7ã³ãŒãããã¹ãããã«ã¯ãUbuntu Xenialãå¿
èŠã§ãã詳现ã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
install
ã»ã¯ã·ã§ã³ã§ã¯ããããžã§ã¯ãéçºã§äœ¿çšãããããã±ãŒãžãã€ã³ã¹ããŒã«ã§ããŸãã
pip install -e .
ã³ãã³ã Travisã®ä»®æ³ç°å¢ã§ããã±ãŒãžã®ã€ã³ã¹ããŒã«ãå®è¡ããŸãã ãã®åŸãpytestãéå§ããTravisã¯ããã±ãŒãžãèŠã€ããããšãã§ããŸãã
ã¹ããã7. Travis CIã§ã®ãã¹ã
å€æŽãã³ãããããGitHubã«éä¿¡ããŠãPRãå®è¡ããŸãã Travisã¯æ°ç§ä»¥å
ã«åäœãå§ããŸãã
è·å Žã§ã®ãã©ãã¹ãããTravisããããžã§ã¯ããåŠçããéã«è¡ãããšã§ãã
ãããžã§ã¯ãã®åŠçäžã«Travisã«ãã£ãŠå®è¡ãããã¢ã¯ã·ã§ã³PRã倱æããå Žå-Travisã¯ãããå ±åããŸãã ãã«ãªã¯ãšã¹ãã倱æããå Žåãåããã©ã³ãã«å€æŽãéä¿¡ãããšãTravisãèªåçã«åäœãéå§ããããšã«æ³šæããŠãã ããã
Travis Webãµã€ãã®ãªããžããªããŒãžã«ç§»åãããããèŠãŠãã ããã ããã§ã¯ãã¢ã»ã³ããªã«é¢ããå€ãã®èå³æ·±ããã®ãèŠã€ããããšãã§ããŸãã ãããããå°æ¥ãã¢ã»ã³ããªã®å€±æã®åå ãç解ããããšãããšããã®ããŒãžã«é »ç¹ã«ã²ã¹ãã«ãªãã§ãããã
ãã¹ãŠãããŸããã£ããšä»®å®ãããšãããŒãžã«ç·è²ã®ã©ãã«ãå«ãŸããŠããã°ããããžã§ã¯ãã®æ€èšŒãšã¢ã»ã³ããªã¯æåããŸããã
ãããžã§ã¯ãã®çµã¿ç«ãŠãæ£åžžã«å®äºããŸããããŒãžã«ç·ãŸãã¯èµ€ã®ã©ãã«ããªãå Žåã¯ã[
More options
]ã¡ãã¥ãŒãéããŠ[
Requests
]ãéžæããŸãã ããã«ãšã©ãŒã¡ãã»ãŒãžãèµ€ã§è¡šç€ºãããŠããå Žåã¯ãããããåæããŸãã
Build config file is required
ãšã©ãŒã¡ãã»ãŒãžã衚瀺
Build config file is required
ãTravisããªããžããªã§
.travis.yml
ãã¡ã€ã«ãèŠã€ããããªãããšãæå³ããŸãã ä¿®æ£ãããšãšã©ãŒã¯æ¶ããŸãã
Travisã¯ããããžã§ã¯ãã®ã¢ã»ã³ããªã倱æããå Žåãããã³ä¿®æ£ãå¯èœãªå Žåã«ããŠãŒã¶ãŒã«é»åã¡ãŒã«ãéä¿¡ããŸãã
ã³ããããéä¿¡ããŠPRãéããšãTravisããããžã§ã¯ãã®ãã«ãããã»ã¹ãèªåçã«åèµ·åããããšã«æ³šæããŠãã ããã
次ã«ãã³ãŒãããã¹ãã§ã«ããŒããããã«ãããžã§ã¯ããåæããŸãã
ã¹ããã8.ãã¹ãã«ããã³ãŒãã«ãã¬ããžã®è©äŸ¡
ãã¹ãä»ãã®ã³ãŒãã«ãã¬ããžã«é¢ããã¬ããŒãã䜿çšãããšããããžã§ã¯ãã³ãŒãã®ã©ã®éšåããã¹ããããŠãããã確èªã§ããŸãã ãã®ãããªã¬ããŒããäœæããã«ã¯ã
pytest-covããã±ãŒãžã䜿çšããŸãã
requirements_dev.txt
ãã¡ã€ã«ã«æ¬¡ã®è¡ãè¿œå ããŸãã
pytest-cov==2.6.1
次ã®ã³ãã³ããå®è¡ããŸãã
pytest --cov=my_project_name
ç§ã®å Žåã
pytest --cov=notebookc
ã³ãã³ãã
pytest --cov=notebookc
åŸã次ã®ã¬ããŒãã衚瀺ãããŸããã
ã³ãŒãã«ãã¬ããžã¬ããŒãçµå±ã®ãšããããããžã§ã¯ãã³ãŒãå
šäœã«ãã¹ããæäŸãããŠããŸãã ãããžã§ã¯ãå
šäœãè€æ°è¡ã®ã³ãŒãã§æ§æãããŠããå Žåããã®ãããªææšã¯éåžžã«ç°¡åã«å®çŸã§ããŸãã
次ã«ãã³ãŒãããã¹ãã§ã«ããŒãããšãã芳ç¹ããããããžã§ã¯ãã®ç¶æ
ã®å
¬éå±¥æŽãä¿æã§ããããŒã«ã«ã€ããŠèª¬æããŸãã
ã¹ããã9.ã«ããŒãªãŒã«ã®äœ¿çš
Coverallsãããžã§ã¯ãã§ã¯ãã³ãŒãã«ãã¬ããžã«é¢ããå±¥æŽæ
å ±ããã¹ãã§ç¶æã§ããŸãã
ã€ãªãæãã®ãããžã§ã¯ãã®æ©èœã掻çšããã«ã¯ãGitHubã¢ã«ãŠã³ãã®ããŒã¿ã䜿çšããŠã
httpsïŒ//coveralls.io/ãµã€ãã«ç»é²ããå¿
èŠããããŸãã 次ã«ããªããžããªãæ¥ç¶ããå¿
èŠããããŸãã
requirements_dev.txt
ãã¡ã€ã«ã§ãè¡
coveralls==1.6.0
è¿œå ããŸãã ãšããã§ããããžã§ã¯ãã®äœæ¥ã®ãã®æ®µéã§ããã®ãã¡ã€ã«ã¯æ¬¡ã®ããã«ãªããŸãã
pip==19.0.3 wheel==0.33.0 twine==1.13.0 pytest==4.3.0 pytest-cov==2.6.1 coveralls==1.6.0
.travis.yml
ãã¡ã€ã«ã
.travis.yml
ããã«ããŸãïŒãã®å Žåããããžã§ã¯ãã®ååã¯ããã«ãããŸãïŒã
dist: xenial language: python python: 3.7.2 install: â pip install -r requirements_dev.txt â pip install -e . script: â pytest --cov=my_package_name after_success: â coveralls
ããã§ãTravisããããžã§ã¯ãããã«ããããšãã«ãå¿
èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ãããã¹ããå®è¡ããŠããã¹ãã®ã³ãŒãã«ãã¬ããžã«é¢ããã¬ããŒããäœæããŸãã ãã®åŸããã®ã¬ããŒãã¯CoverallsãµãŒãã¹ã«éä¿¡ãããŸãã
ã³ãããããã³ãŒããGitHubã«éä¿¡ããäœãèµ·ãããã確èªããŸãã ã³ãŒãã«ãã¬ããžãã¹ãã¬ããŒããCoverallsã«å±ããŸã§æ°åãããå ŽåããããŸãã
ãããžã§ã¯ãåŠçããã¹ãã«ãã¬ããžã¬ããŒãçŸåšãPRãã§ãã¯ã®äžã«ã¯ãCoverallsã«ãã£ãŠå®è¡ããããã§ãã¯ããããŸãã
CoverallsããŒãžã§ããããžã§ã¯ãããã¹ãã§100ïŒ
ã«ããŒãããŠããããšã確èªã§ããŸãã
ãã¹ãã«ãã¬ããžæ
å ±æ¬¡ã«ããããžã§ã¯ãã«å¥ã®äŸ¿å©ãªããŒã«ãè£
åããŸãããã
ã¹ããã10. PyUpã䜿çšãã
PyUp.ioãµãŒãã¹ã䜿çšãããšãéçºè
ã¯ã䜿çšããäŸåé¢ä¿ãå€ããªã£ãŠãããã©ãããããã³è匱æ§ããããã©ããã確èªã§ããŸãã ãã®ãµãŒãã¹ã¯ãGitHubäžã®ããã±ãŒãžã®æŽæ°ãç®çãšãããã«èŠæ±ãèªåçã«å®è¡ããŸãã ãã®ãããžã§ã¯ãã®æ©èœãå©çšããã«ã¯ãGitHubã¢ã«ãŠã³ãïŒ
https://pyup.io/ïŒã䜿çšããŠç»é²ããå¿
èŠããã
ãŸã ã ãªããžããªãè¿œå ãããšãã¯ã
Update Schedules
ã
every week
èšå®ããããšããå§ãããŸãã ãã®ã¢ãããŒãã䜿çšãããšããããžã§ã¯ãã«å€ãã®äŸåé¢ä¿ãããå Žåããã«èŠæ±ãããŸãå€ãçºçããŸããã
æŽæ°ãæ§æããPyUp.io Webãµã€ãã§ãããã±ãŒãžæ
å ±ãã©ã®ããã«èŠãããã以äžã«ç€ºããŸããäžéšã¯å€ããªã£ãŠããŸãã
ããã±ãŒãžã®è©³çŽ°ãã®ãµãŒãã¹ã䜿çšãããšã䜿çšããããã±ãŒãžã®ææ°ããŒãžã§ã³ããã€ãªãªãŒã¹ãããããåžžã«ç¥ãããšãã§ããŸãã 圌ããèšãããã«ãç¥èã¯åå©ã®ååã§ãã ãããŠãåŸåã¯æããã«ãäŸåé¢ä¿ãæŽæ°ããããã®èªåãã«ãªã¯ãšã¹ãã§ãã
ãŸãšã
ãã®èšäºã§ã¯ãPythonãããžã§ã¯ããéçºãããšãã«ãBlackãpytestãTravis CIãCoverallsãPyUpãªã©ã®ããŒã«ã䜿çšããæ¹æ³ãåŠã³ãŸããã ãããžã§ã¯ãã®äŸåé¢ä¿ã®å¶åŸ¡ãã³ãŒãã®ãã©ãŒããããšãã¹ãããããžã§ã¯ãã®æ€èšŒãšãã«ããæ¯æŽããŸãã ãããã®ããŒã«ãã圹ã«ç«ãŠã°å¹žãã§ãã
芪æãªãèªè
ïŒ Pythonãããžã§ã¯ããéçºããéã«äœ¿çšããããŒã«ã¯äœã§ããïŒ
