æ¬æ¥ãDropbox ãæ°çŸäžè¡ã® Python ã³ãŒãã®åå¶åŸ¡ãã©ã®ããã«æŽçãããã«é¢ããè³æã®ç¿»èš³ã®ç¬¬ XNUMX éšãå ¬éããŸãã
å ¬åŒã¿ã€ãã®ãµããŒã (PEP 484)
ç§ãã¡ã¯ãHack Week 2014 äžã«ãDropbox äžã§ mypy ã䜿ã£ãæåã®æ¬æ Œçãªå®éšãè¡ããŸãããHack Week ã¯ãDropbox ãäž»å¬ãã XNUMX é±éã®ã€ãã³ãã§ãã ãã®éãåŸæ¥å¡ã¯äœã«ã§ãåãçµãããšãã§ããŸãã Dropbox ã®æãæåãªãã¯ãããžãŒ ãããžã§ã¯ãã®ããã€ãã¯ããã®ãããªã€ãã³ãããå§ãŸããŸããã ãã®å®éšã®çµæããã®ãããžã§ã¯ãã¯ãŸã åºã䜿çšããæºåãã§ããŠããŸããããmypy ã¯ææã§ãããšçµè«ä»ããŸããã
åœæãPython ã®ã¿ã€ããã³ãã£ã³ã°ã·ã¹ãã ãæšæºåãããšããã¢ã€ãã¢ãæµ®äžããŠããŸããã å
ã»ã©ãè¿°ã¹ãããã«ãPython 3.0 以éãé¢æ°ã«åã¢ãããŒã·ã§ã³ã䜿çšã§ããããã«ãªããŸãããããããã¯åãªãä»»æã®åŒã§ãããæ§æãã»ãã³ãã£ã¯ã¹ãå®çŸ©ãããŠããŸããã§ããã ããã°ã©ã ã®å®è¡äžããããã®æ³šéã¯ã»ãšãã©ã®å Žåãç¡èŠãããŸãã Hack Week ã®åŸãç§ãã¡ã¯ã»ãã³ãã£ãã¯ã®æšæºåã«åãçµã¿å§ããŸããã ãã®äœåãåºçŸã«ã€ãªãã£ã
ç§ãã¡ã®åæ©ã¯ XNUMX ã€ã®åŽé¢ããèŠãããšãã§ããŸãã ãŸããPython ãšã³ã·ã¹ãã å šäœãã¿ã€ã ãã³ãã®äœ¿çšã«å ±éã®ã¢ãããŒããæ¡çšã§ããããšãæåŸ ããŸãã (ã¿ã€ã ãã³ãã¯ãPython ã§ãåã¢ãããŒã·ã§ã³ãã®é¡äŒŒç©ãšããŠäœ¿çšãããçšèªã§ã)ã èµ·ããåŸããªã¹ã¯ãèæ ®ãããšãçžäºã«äºææ§ã®ãªãå€ãã®ã¢ãããŒãã䜿çšãããããããã®æ¹ãè¯ãã§ãããã 次ã«ãPython ã³ãã¥ããã£ã®å€ãã®äººã ãšåã¢ãããŒã·ã§ã³ã®ä»çµã¿ã«ã€ããŠãªãŒãã³ã«è°è«ããããšèããŸããã ãã®é¡æã®äžéšã¯ãäžè¬å€§è¡ã® Python ããã°ã©ããŒã®ç®ã«ãèšèªã®åºæ¬çãªèãæ¹ãããèæè ãã®ããã«èŠãããããªããšããäºå®ã«ãã£ãŠæ±ºãŸããŸããã ãããã¯ã¿ã€ãã³ã°ãã§ç¥ãããåçåä»ãèšèªã§ãã ã³ãã¥ããã£ã§ã¯ãåœåãéçåä»ãã®ã¢ã€ãã¢ã«å¯ŸããŠããçãããæ 床ãçããããåŸãŸããã§ããã ããããéçåä»ããå¿ é ã§ã¯ãªãããšãæããã«ãªã (ãããŠéçåä»ããæ¬åœã«äŸ¿å©ã§ãããšäººã ãèªèããåŸ)ããã®ææ ã¯æçµçã«æ¶ãå»ããŸããã
æçµçã«æ¡çšãããã¿ã€ããã³ãæ§æã¯ãåœæ mypy ã§ãµããŒããããŠãããã®ãšéåžžã«äŒŒãŠããŸããã PEP 484 㯠3.5 幎㫠Python 2015 ãšãšãã«ãªãªãŒã¹ãããŸããã Python ã¯åçåä»ãèšèªã§ã¯ãªããªããŸããã ç§ã¯ãã®ã€ãã³ãã Python ã®æŽå²ã«ããããã€ã«ã¹ããŒã³ãšããŠèããããšæããŸãã
移è¡ã®éå§
2015 幎æ«ãmypy ã«åãçµãããã« Dropbox 㧠XNUMX 人ã®ããŒã ãèšç«ãããŸããã ã°ã€ãã»ãã¡ã³ã»ãããµã ãã°ã¬ãã°ã»ãã©ã€ã¹ããã€ãããã»ãã£ãã·ã£ãŒãå«ãŸããŠããã ãã®ç¬éãããç¶æ³ã¯éåžžã«æ¥éã«çºå±ãå§ããŸããã mypy ã®æé·ã«å¯Ÿããæåã®é害ã¯ããã©ãŒãã³ã¹ã§ããã äžã§ã»ã®ããããããã«ããããžã§ã¯ãã®åæã«ã¯ mypy å®è£ ã C ã«å€æããããšãèããŠããŸãããããã®èãã¯ä»ã®ãšãããªã¹ãããé€å€ãããŸããã ã·ã¹ãã ã®èµ·åã« CPython ã€ã³ã¿ãŒããªã¿ãŒã䜿çšããããšããäºå®ã«è¡ãè©°ãŸã£ãŠããŸããããã㯠mypy ãªã©ã®ããŒã«ã«ãšã£ãŠååãªé床ã§ã¯ãããŸããã (JIT ã³ã³ãã€ã©ãŒã䜿çšãã Python ã®ä»£æ¿å®è£ ã§ãã PyPy ãããžã§ã¯ãã圹ã«ç«ã¡ãŸããã§ããã)
幞ããªããšã«ãããã§ããã€ãã®ã¢ã«ãŽãªãºã ã®æ¹åã圹ã«ç«ã¡ãŸããã æåã®åŒ·åãªãã¢ã¯ã»ã©ã¬ãŒã¿ãã¯ãå¢åãã§ãã¯ã®å®è£ ã§ããã ãã®æ¹åã®èåŸã«ããã¢ã€ãã¢ã¯åçŽã§ããååã® mypy ã®å®è¡ä»¥éããã¹ãŠã®ã¢ãžã¥ãŒã«ã®äŸåé¢ä¿ãå€æŽãããŠããªãå Žåãååã®ã»ãã·ã§ã³äžã«ãã£ãã·ã¥ãããããŒã¿ã䜿çšããŠäŸåé¢ä¿ãæäœã§ããŸãã å€æŽããããã¡ã€ã«ãšããããã«äŸåãããã¡ã€ã«ã«å¯ŸããŠåãã§ãã¯ãå®è¡ããã ãã§æžã¿ãŸããã Mypy ã¯ããã«ããå°ãé²ããŸãããã¢ãžã¥ãŒã«ã®å€éšã€ã³ã¿ãŒãã§ã€ã¹ãå€æŽãããªãå Žåãmypy ã¯ããã®ã¢ãžã¥ãŒã«ãã€ã³ããŒãããä»ã®ã¢ãžã¥ãŒã«ãåãã§ãã¯ããå¿ èŠããªããšã¿ãªããŸããã
å¢åãã§ãã¯ã¯ã倧éã®æ¢åã®ã³ãŒãã«æ³šéãä»ãããšãã«éåžžã«åœ¹ç«ã¡ãŸããã å®éããã®ããã»ã¹ã«ã¯éåžžã泚éãåŸã ã«ã³ãŒãã«è¿œå ãããåŸã ã«æ¹åããããããmypy ã®å埩å®è¡ãäœåºŠãå«ãŸããŸãã mypy ã®æåã®å®è¡ã¯ãå€ãã®äŸåé¢ä¿ããã§ãã¯ããå¿ èŠããã£ããããäŸç¶ãšããŠéåžžã«é ãã£ãã§ãã ããã§ããã®ç¶æ³ãæ¹åããããã«ããªã¢ãŒã ãã£ãã·ã¥ ã¡ã«ããºã ãå®è£ ããŸããã mypy ã¯ãããŒã«ã« ãã£ãã·ã¥ãããããå€ãããšãæ€åºãããšãã³ãŒãããŒã¹å šäœã®çŸåšã®ãã£ãã·ã¥ ã¹ãããã·ã§ãããéäžãªããžããªããããŠã³ããŒãããŸãã 次ã«ããã®ã¹ãããã·ã§ããã䜿çšããŠå¢åãã§ãã¯ãå®è¡ããŸãã ããã¯ãmypy ã®ããã©ãŒãã³ã¹åäžãžã®åãçµã¿ã«ããã倧ããªåé²ã§ãã
ãã®ææã¯ãDropbox ã®åãã§ã㯠ã·ã¹ãã ãæ¥éãã€èªç¶ã«æ¡çšãããææã§ããã 2016 幎æ«ãŸã§ã«ãåã¢ãããŒã·ã§ã³ãå«ã Python ã³ãŒãããã§ã«çŽ 420000 è¡ãããŸããã å€ãã®ãŠãŒã¶ãŒãåãã§ãã¯ã«ç±å¿ã«ãªã£ãŠããŸãã ããå€ãã®éçºããŒã ã Dropbox mypy ã䜿çšããŸããã
ãã®æã¯ãã¹ãŠãé 調ã«èŠããŸãããããŸã ããã¹ãããšããããããããŸããã ç§ãã¡ã¯ããããžã§ã¯ãã®åé¡é åãç¹å®ããæåã«è§£æ±ºããå¿ èŠãããåé¡ãç解ããããã«ãå®æçãªç€Ÿå ãŠãŒã¶ãŒèª¿æ»ã®å®æœãéå§ããŸãã (ãã®æ £è¡ã¯çŸåšã瀟å ã§äœ¿çšãããŠããŸã)ã æããã«ãªã£ãããã«ãæãéèŠãªã®ã¯ XNUMX ã€ã®ã¿ã¹ã¯ã§ããã XNUMX ã€ç®ã¯ãåã«é¢ããã³ãŒã ã«ãã¬ããžãå¢ããå¿ èŠããããšããããšã§ãXNUMX ã€ç®ã¯ãmypy ãããé«éã«åäœããå¿ èŠããããšããããšã§ããã mypy ãé«éåãããããäŒç€Ÿã®ãããžã§ã¯ãã«å°å ¥ãããšããç§ãã¡ã®åãçµã¿ããŸã çµãã£ãŠããªãããšã¯æããã§ããã ç§ãã¡ã¯ãããã XNUMX ã€ã®èª²é¡ã®éèŠæ§ãååã«èªèãããã®è§£æ±ºçã«åãçµã¿ãŸããã
ãããªãããã©ãŒãã³ã¹ãïŒ
å¢åãã§ãã¯ã«ãã mypy ã¯é«éã«ãªããŸããããããã§ãååãªé床ã§ã¯ãããŸããã§ããã å€ãã®å¢åãã§ãã¯ã¯çŽ XNUMX åéç¶ããŸããã ãã®çç±ã¯åŸªç°çãªèŒžå ¥ã ã£ãã Python ã§æžããã倧èŠæš¡ãªã³ãŒãããŒã¹ãæ±ã£ãããšã®ãã人ãªããããã¯ããããé©ãããšã§ã¯ãªãã§ãããã æ°çŸã®ã¢ãžã¥ãŒã«ã®ã»ãããããããããããä»ã®ã¢ãžã¥ãŒã«ããã¹ãŠéæ¥çã«ã€ã³ããŒãããŠããŸããã ã€ã³ããŒã ã«ãŒãå ã®ãã¡ã€ã«ãå€æŽãããå Žåãmypy ã¯ãã®ã«ãŒãå ã®ãã¹ãŠã®ãã¡ã€ã«ãåŠçããå¿ èŠããããå€ãã®å Žåããã®ã«ãŒãããã¢ãžã¥ãŒã«ãã€ã³ããŒãããã¢ãžã¥ãŒã«ãåŠçããå¿ èŠããããŸããã ãã®ãããªãµã€ã¯ã«ã® XNUMX ã€ã¯ãDropbox ã§å€ãã®åé¡ãåŒãèµ·ãããæªåé«ããäŸåçã®ãã€ããã§ããã ãã€ãŠãã®æ§é ã«ã¯æ°çŸã®ã¢ãžã¥ãŒã«ãå«ãŸããŠãããçŽæ¥çãŸãã¯éæ¥çã«å€ãã®ãã¹ããã€ã³ããŒãããããšåæã«ã補åã³ãŒãã§ã䜿çšãããŸããã
埪ç°äŸåé¢ä¿ã解æããããšãæ€èšããŸãããããããè¡ãããã®ãªãœãŒã¹ããããŸããã§ããã 銎æã¿ã®ãªãã³ãŒããå€ãããŸããã ãã®çµæãç§ãã¡ã¯å¥ã®ã¢ãããŒããæãã€ããŸããã ç§ãã¡ã¯ããäŸåé¢ä¿ã®ãã€ããããã£ãŠã mypy ãé«éã«å®è¡ã§ããããã«ããããšã«ããŸããã mypy ããŒã¢ã³ã䜿çšããŠãã®ç®æšãéæããŸããã ããŒã¢ã³ã¯ãXNUMX ã€ã®èå³æ·±ãæ©èœãå®è£
ãããµãŒã㌠ããã»ã¹ã§ãã ãŸããã³ãŒãããŒã¹å
šäœã«é¢ããæ
å ±ãã¡ã¢ãªå
ã«ä¿æããŸãã ããã¯ãmypy ãå®è¡ãããã³ã«ãã€ã³ããŒããããäœåãã®äŸåé¢ä¿ã«é¢é£ãããã£ãã·ã¥ãããããŒã¿ãããŒãããå¿
èŠããªãããšãæå³ããŸãã 第äºã«ã圌ã¯å°ããªæ§é åäœã®ã¬ãã«ã§ãæ©èœãšä»ã®ãšã³ãã£ãã£éã®äŸåé¢ä¿ã泚ææ·±ãåæããŸãã ããšãã°ãé¢æ°ã®å Žåã foo
é¢æ°ãåŒã³åºã bar
ãäŸåæ§ããããŸã foo
ãã bar
ã ãã¡ã€ã«ãå€æŽããããšãããŒã¢ã³ã¯ãŸããå€æŽããããã¡ã€ã«ã®ã¿ãåç¬ã§åŠçããŸãã 次ã«ãé¢æ°ã·ã°ããã£ã®å€æŽãªã©ããã®ãã¡ã€ã«ã«å¯Ÿããå€éšããèŠããå€æŽãæ¢ããŸãã ããŒã¢ã³ã¯ãå€æŽãããé¢æ°ãå®éã«äœ¿çšããé¢æ°ãå確èªããããã«ã®ã¿ãã€ã³ããŒãã«é¢ãã詳现æ
å ±ã䜿çšããŸãã éåžžããã®ã¢ãããŒãã§ã¯ããã§ãã¯ããé¢æ°ã¯ã»ãšãã©ãããŸããã
mypy ã®å ã®å®è£ ã¯äžåºŠã« XNUMX ã€ã®ãã¡ã€ã«ãåŠçããããšã«éç¹ã眮ããŠãããããããããã¹ãŠãå®è£ ããã®ã¯å°é£ã§ããã ç§ãã¡ã¯å€ãã®ãšããžãªç¶æ³ã«å¯ŸåŠããå¿ èŠããããã³ãŒãå ã§äœããå€æŽãããå Žåã«ã¯ç¹°ãè¿ããã§ãã¯ããå¿ èŠããããŸããã ããšãã°ãããã¯ã¯ã©ã¹ã«æ°ããåºæ¬ã¯ã©ã¹ãå²ãåœãŠããããšãã«çºçããŸãã å¿ èŠãªããšãå®è¡ããåŸãã»ãšãã©ã®å¢åãã§ãã¯ã®å®è¡æéãæ°ç§ã«ççž®ããããšãã§ããŸããã ç§ãã¡ã«ãšã£ãŠã¯å€§ããªåå©ã®ããã«æããŸããã
ããã«ããã©ãŒãã³ã¹ã¢ããïŒ
äžã§èª¬æãããªã¢ãŒã ãã£ãã·ã¥ãšäœµããŠãmypy ããŒã¢ã³ã¯ãããã°ã©ããå°æ°ã®ãã¡ã€ã«ã«å€æŽãå ããŠåãã§ãã¯ãé »ç¹ã«å®è¡ãããšãã«çºçããåé¡ãã»ãŒå®å šã«è§£æ±ºããŸããã ãã ããææªã®äœ¿çšäŸã«ãããã·ã¹ãã ããã©ãŒãã³ã¹ã¯äŸç¶ãšããŠæé©ãšã¯çšé ããã®ã§ããã mypy ãã¯ãªãŒã³ã«èµ·åããã«ã¯ 15 å以äžãããå ŽåããããŸãã ãããŠããã¯ç§ãã¡ãæãã§ãããã®ãã¯ããã«è¶ ããŠããŸããã ããã°ã©ããŒãæ°ããã³ãŒããæžããæ¢åã®ã³ãŒãã«æ³šéãè¿œå ãç¶ãããããç¶æ³ã¯æ¯é±æªåããŸããã ãŠãŒã¶ãŒã¯äŸç¶ãšããŠãããªãããã©ãŒãã³ã¹ãæ±ããŠããŸããããç§ãã¡ã¯åœŒãã®èŠæã«å¿ããããšãã§ããŠããããæããŸããã
ç§ãã¡ã¯ãmypy ã®åæã®ã¢ã€ãã¢ã® 10 ã€ã«æ»ãããšã«ããŸããã ã€ãŸããPython ã³ãŒãã C ã³ãŒãã«å€æããŸãã Cython (Python ã§æžãããã³ãŒãã C ã³ãŒãã«å€æã§ããã·ã¹ãã ) ã䜿ã£ãå®éšã§ã¯ãç®ã«èŠããé«éåãåŸãããªãã£ããããç¬èªã®ã³ã³ãã€ã©ãäœæãããšããã¢ã€ãã¢ã埩掻ãããããšã«ããŸããã mypy ã³ãŒãããŒã¹ (Python ã§æžããã) ã«ã¯å¿ èŠãªåã¢ãããŒã·ã§ã³ããã¹ãŠãã§ã«å«ãŸããŠããããããããã®ã¢ãããŒã·ã§ã³ã䜿çšããŠã·ã¹ãã ãé«éåããããšã¯äŸ¡å€ããããšæãããŸããã ãã®ã¢ã€ãã¢ããã¹ãããããã«ãããã«ãããã¿ã€ããäœæããŸããã ããŸããŸãªãã€ã¯ããã³ãããŒã¯ã§ããã©ãŒãã³ã¹ã XNUMX å以äžåäžããŠããããšãããããŸããã ç§ãã¡ã®ã¢ã€ãã¢ã¯ãCython ã䜿çšã㊠Python ã¢ãžã¥ãŒã«ã C ã¢ãžã¥ãŒã«ã«ã³ã³ãã€ã«ããå泚éãå®è¡æã®åãã§ãã¯ã«å€ããããšã§ãã (éåžžãå泚éã¯å®è¡æã«ã¯ç¡èŠãããåãã§ãã«ãŒã«ãã£ãŠã®ã¿äœ¿çšãããŸã)ã å®éãç§ãã¡ã¯ mypy ã®å®è£ ã Python ãããéçã«åä»ããããŠäœæããããPython ãšãŸã£ããåãããã«èŠãã (ãããŠã»ãšãã©ã®å Žååäœãã) èšèªã«å€æããããšãèšç»ããŠããŸããã (ãã®çš®ã®èšèªãè¶ãã移è¡ã¯ãmypy ãããžã§ã¯ãã®äŒçµ±ã®ãããªãã®ã«ãªã£ãŠããŸããmypy ã®å ã®å®è£ 㯠Alore ã§æžããããã®åŸ Java ãš Python ã®æ§æãã€ããªãããååšããŸãã)ã
CPython æ¡åŒµ API ã«çŠç¹ãåœãŠãããšãããããžã§ã¯ã管çæ©èœã倱ããªãããã®éµã§ããã mypy ã«å¿ èŠãªä»®æ³ãã·ã³ãã©ã€ãã©ãªãå®è£ ããå¿ èŠã¯ãããŸããã§ããã ããã«ãPython ãšã³ã·ã¹ãã å šäœãåŒãç¶ãå©çšå¯èœãšãªãããã¹ãŠã®ããŒã« (pytest ãªã©) ãå©çšå¯èœã«ãªããŸãã ããã¯ãéçºäžã«è§£éããã Python ã³ãŒãã䜿çšãç¶ããããšãã§ããããšãæå³ããŸããããã«ãããã³ãŒããã³ã³ãã€ã«ãããã®ãåŸ ã€ã®ã§ã¯ãªããã³ãŒãã«å€æŽãå ããŠãã¹ãããããã®éåžžã«é«éãªã¹ããŒã ã䜿çšããŠäœæ¥ãç¶ããããšãã§ããŸãã ç§ãã¡ã¯ XNUMX ã€ã®æ€ åã«åº§ã£ãŠãããã°ããŸããã£ãŠããããã«èŠãããããæ°ã«å ¥ããŸããã
ç§ãã¡ã mypyc ãšåä»ããã³ã³ãã€ã©ãŒ (å解æã®ããã³ããšã³ããšã㊠mypy ã䜿çšãããã) ã¯ãéåžžã«æåãããããžã§ã¯ãã§ããããšãå€æããŸããã å šäœãšããŠããã£ãã·ã¥ã䜿çšããã«é »ç¹ã« mypy ãèµ·åããå ŽåãçŽ 4 åã®é«éåãéæããŸããã Michael SullivanãIvan LevkivskyãHugh KhanããããŠç§ãããªãå°èŠæš¡ãªããŒã ããmypyc ãããžã§ã¯ãã®äžæ žãçŽ 4 æŠæã§éçºããŸããã ãã®äœæ¥éã¯ãããšãã° C++ ã Go 㧠mypy ãæžãçŽãã®ã«å¿ èŠãªäœæ¥éãããã¯ããã«éå¿çã§ã¯ãããŸããã§ããã ãŸãããããžã§ã¯ããå¥ã®èšèªã§æžãçŽãå Žåã«æ¯ã¹ãŠããããžã§ã¯ãã«å ããå€æŽã¯ã¯ããã«å°ãªããŠæžã¿ãŸããã ãŸããDropbox ã®ä»ã®ããã°ã©ããŒã mypyc ã䜿çšããŠã³ãŒããã³ã³ãã€ã«ããé«éåã§ããã¬ãã«ã« mypyc ãåŒãäžããããšãã§ããã°ãšèããŠããŸããã
ãã®ã¬ãã«ã®ããã©ãŒãã³ã¹ãéæããã«ã¯ãããã€ãã®èå³æ·±ããšã³ãžãã¢ãªã³ã° ãœãªã¥ãŒã·ã§ã³ãé©çšããå¿ èŠããããŸããã ããšãã°ãã³ã³ãã€ã©ã¯ãé«éã§äœã¬ãã«ã® C ã³ã³ã¹ãã©ã¯ãã䜿çšããããšã§ãå€ãã®æäœãé«éåã§ããŸããããšãã°ãã³ã³ãã€ã«ãããé¢æ°ãžã®åŒã³åºãã¯ãC é¢æ°ãžã®åŒã³åºãã«å€æãããŸãã ãããŠããã®ãããªåŒã³åºãã¯ã解éãããé¢æ°ãåŒã³åºããããã¯ããã«é«éã§ãã èŸæžæ€çŽ¢ãªã©ã®äžéšã®æäœã¯ãäŸç¶ãšããŠéåžžã® CPython C-API åŒã³åºãã®äœ¿çšã«å¶éãããŠããŸããããã³ã³ãã€ã«åŸã¯ãããã«é«éåãããã ãã§ããã 解éã«ãã£ãŠã·ã¹ãã ã«çããè¿œå ã®è² è·ãåãé€ãããšã¯ã§ããŸãããããã®å Žåãããã©ãŒãã³ã¹ã®åäžã¯ããããããããŸããã§ããã
æãäžè¬çãªãé ããæäœãç¹å®ããããã«ãã³ãŒã ãããã¡ã€ãªã³ã°ãå®è¡ããŸããã ãã®ããŒã¿ãçšæããŠãmypyc ã埮調æŽããŠãããã®æäœçšã«é«é㪠C ã³ãŒããçæãããã察å¿ãã Python ã³ãŒããæžãçŽããŠé«éãªæäœã䜿çšããããšããŸãã (å Žåã«ãã£ãŠã¯ããã®ããã®ååãªåçŽãªè§£æ±ºçããªãã£ãã ãã§ã)ããŸãã¯ãã®ä»ã®åé¡ïŒã Python ã³ãŒããæžãçŽãæ¹ããã³ã³ãã€ã©ãŒã«åãå€æãèªåçã«å®è¡ããããããç°¡åã«åé¡ã解決ã§ããããšãå€ãã®å Žå蚌æãããŠããŸãã é·æçã«ã¯ããããã®å€æã®å€ããèªååããããšèããŠããŸããããåœæã¯ã§ããã ãå°ãªãåŽå㧠mypy ãé«éåããããšã«éç¹ã眮ããŠããŸããã ãããŠããã®ç®æšã«åãã£ãŠé²ãã§ããç§ãã¡ã¯ãããã€ãã®è§ãåãèœãšããŸããã
ç¶ç¶ããã«ã¯...
芪æãªãèªè ïŒ mypy ãããžã§ã¯ããç¥ã£ããšããã©ã®ãããªå°è±¡ãåããŸããã?
åºæïŒ habr.com