áᏠDropbox áĽáá´áľ ááĽá áááŽá á¨áááá áŽáľ ááľááŽá˝ á áááľ ááĽáĽáá áĽááłá°áŤá á¨ááłááľá á¨áľááá ááá áĽáŤá°áá ááá˘
â
áŚáá´áá ááááľ áľáá (PEP 484)
á 2014 Hack Week áá áľ mypy áá á¨ááááŞáŤ á¨áŁáľ áá¨áŤáá˝á á áľááááᢠHack Week á Dropbox á¨ááľá°áááľ á¨á ááľ áłáááľ ááľá°áľ ááᢠá áá áá ááľáĽ, á°áŤá°áá˝ á áááááľ áá ááľáŤáľ áá˝áá! á ááłáᾠᨠDropbox á áŁá ááá á¨á´áááá ááŽáááśá˝ á ááłá°ááľ ááá áśá˝ á°ááá¨ááᢠá áá áá¨áŤ ááááŤáľ, ááŽáááą á ááá á á°áá áĽá á áá áááá ááá áŁáááá, mypy á°áľá á°áŞ áááľáá áĽáá á°áá°áá.
á ááŤá áá á¨áá˛á á áááľ ááá áľáááśá˝á á°á¨ááá á¨á á á ááłáĽ á á á¨á áá áá á. áĽááłááŠáľáŁ á¨áááá 3.0 ááᎠááľáŤ á áááľ ááĽáŤáŞáŤáá˝á áá áá ááťá áá áᣠááá áá áĽááá
á¨áááá° á áŁáŁáá˝ áĽáť áá áŠáŁ áŤá á ááŁáĽ áĽá á¨áľááá áľáááᢠá ááŽááŤá á áááá áá
áľ áĽááá
ááĽáŤáŞáŤáá˝ á á áĽááá á ááá á˝á á°áĽááá. ᨠHack áłáááľ á ááᣠá¨ááşá á°á¨áá á á á á ááአááľáŤáľ ááááᢠáá
áĽáŤ áá° áá¨á°áľ ááááŤáľ ááá
áááá˝á á áááľ á áŠá ááłá áá˝ááᢠá ááááŞáŤáŁ ááá á¨áááá áľá-áá áłá á¨á áááľ áááŽá˝á ááá áá á¨á°ááá° á áŤááľ áá¨á°á áá˝áá áĽáá á°áľá á á°á¨áá (á Python ááľáĽ âᨠâááááľ ááĽáŤáŞáŤáá˝â áá á°ááłáłáááľ áŤáá áá)ᢠáá , áá¨á°áą á¨áá˝á á á°ááá˝ á ááťá, áĽá áĽááľ á ááľ á¨áááŁáŁá á ááŤá¨áŚá˝á á¨áá áá á¨á°áťá áááá. ááá°áᣠá¨áĽá á¨áááá áá á á¨á°áĽ á áŁááľ áá á¨á áááľ ááĽáŤáŞáŤ áá´áá˝á á ááá áááŤá¨áľ áĽááááááᢠáá ááááľ á¨áá á¨áá˛á ááŽááŤááŽá˝ á°áá á áἠáááľ á¨áááá áá°á¨áłá ááłáŚá˝ âá¨áá˛áá˝â ááá°á á ááááá á áááłá˝á ááᢠáĽáą á á°áááá á¨á°á°á¨á ááá ááᣠâáłáᏠáľá¨áŁâ á ááŁá ááłáááᢠá áá á á¨á°áĄ ááľáĽ ᣠá ááááŞáŤ ᣠá áá áľá¨áŁ ááłáĽ áá á á°áá°á á°á¨á á á áŤáŁáŞ á áááŤá¨áľ áááł á ááťááᢠááá áá áá áľááľ áá á áľáŽ á¨áááááἠáá°á¨áĽ á áľááłá áĽáá°áááá (áĽá á°áá˝ á áĽááἠá áá áááá á¨á°á¨áą á áá) ááá˝ á¨áá á áá ááááá˘
á áá¨á¨áť á°ááŁáááľ áŤááá á¨ááá á áááľ á ááŁáĽ ááá á áá áą á¨áá°ááá áá á áŁá á°ááłáłá áá áᢠPEP 484 á Python 3.5 á 2015 á°áááᢠPython á¨á áá á áá á á°áááá á¨áá°á¨áĽ ááá á ááá á¨áᢠáá ááľá°áľ á áááá áłáŞá ááľáĽ áľáá áááŤá áĽáá°áá áá°áĽ áĽááłááá˘
á¨áľá°áľ ááááŞáŤ
áĽ.á¤.á . á 2015 áá¨á¨áť ᣠDropbox á mypy áá áááľáŤáľ á¨áśáľáľ á°áá˝ áĄáľá áá á¨á˘ ááś áŤá áŽáľááᣠááŹá ááŤááľ áĽá á´áŞáľ áá¸áá áŤáŤáľáłáᢠá¨ááŤá áá áááŽ, áááłá ââââá áŁá á ááĽááľ áá°á ááá¨. á mypy áĽáľááľ á¨ááááŞáŤá áĽáá ááľ á áááá áá áᢠá¨áá áĽáá°á áááŠáľáŁ á ááŽáááą á¨ááááŞáŤ áááľ ááľáĽ mypy áľáá áŤá áá° C ááá°ááá á áľá¤ áá á ᣠáá áá ááłáĽ áá áá á¨áááአááĽáˇáᢠáĽáá° mypy áá ááłáŞáŤáá˝ ááŁá áŤááááá á˛ááśá á áľá°ááá á áá áá áľáááąá á¨áááľ áá á°áŁáĽáááᢠ(á¨PyPy ááŽáááľáŁ á ááŤá á¨áááá áľáá ፠á¨áá áᲠáááá áŞáŤ ááᣠáĽááá á áá¨áłááá˘)
áĽáá° áĽáľá ááᣠá ááłááľ á¨á áááŞáá ááťáťáŤáá˝ áĽáá á¨áľá°áááᢠá¨ááááŞáŤá áááá "á ááŁá" á¨áá¨áá áá°áť áľáá ፠áá. á¨áá ááťáťáŤ á áľá°ááᣠáŤáá ááłáĽ ááá áá áᥠá¨áá°áᾠᨠmypy á ááľ ááᎠááá á¨áááá˝ áĽááá˝ áŤáá°áá¨áŠ á¨áĽáááá˝ áá áľáá°áŤ á ááľáá áŠáŤ á¨á°á¸áá áá ááἠáá áá áĽáá˝áááᢠá á°áťáťá áááá˝ áá áĽá á áĽááą áá á á°áá°á¨áą áááá˝ áá á¨ááááľ áá°áťá áĽáť áá¨ááá á ááĽáᢠááá áľáá˝ áá° ááľ ááˇáᥠá¨á ááľ ááá ááŤá á áááá˝ áŤáá°áá¨á¨áŁ mypy áá á ááá áŤáľáᥠááá˝ áááá˝ áĽáá°áá ááá°á˝ á áŤáľáááá¸áá áĽá á áľáŚ áá áá˘
á¨áá°á áá á áŤáá¸áá á¨ááŁá áŽáľ áľáááá˝ á°á¨á᪠ááŁáŤáľ áĽá á¨áľáśááᢠááĽáĄ áá áá°áľ áĽááá áá áĽá á°á°ááá ᨠmypy áŠáŤáá˝á áŤáŤáľáłá ááááŤáąá ááĽáŤáŞáŤáá˝ ááľ á ááľ áá° áŽáľ á˛á¨áአáĽá ááľ á ááľ áĽá¨á°áťáťá ááᢠá¨ááááŞáŤá ᨠmypy áŠáŤ á ááá á áŁá áááá áá á ááááŤáąá áááá°á˝ áĽá áĽááá˝ áá á¨áᢠá¨ááŤá áááłáá áááťáťá, á¨áááľ áá¸á፠áá´á á°ááŁáŤá áĽáá°áááá. Mypy á¨á áŤáŁá˘á áá¸á፠ááá áŤááá áľ ááá áĽáá°áá˝á áŤááᣠá áá áŤááá á¨áá¸á፠á á˝á áłá áá˝ áĽááł áááá á¨áŽáľ á¤á á¨á°áá¨áá áá¨ááť áŤáááłáᢠá¨á፠áá á á á˝á áłá áá˝ áĽááł á áá áá á°á¨á᪠áá°áť áŤá°áááᢠáá ᨠmypy á ááťá¸áá ááá¨áá á ááľ á°á¨á᪠áľáá áĽááá ááľáśáĽááá˘
áá á Dropbox ááľáĽ ááŁá áĽá á°ááĽáŻá á¨ááááľ áá°áť á¨ááá á áá áľ áá áᢠáĽ.á¤.á . á 2016 áááŁá°á ááᣠáá° 420000 á¨áá á á¨áááá áŽáľ ááľááŽá˝ á¨á áááľ ááĽáŤáŞáŤáá˝ áá áá áŠáᢠáĽá á°á áááá˝ áľá á áááľ áá°áť ááá°á áá áᢠá°á¨á᪠áĽá á°á¨á᪠á¨áááľ áĄáľáá˝ Dropbox mypy áĽá¨á°á áá áá áá˘
áŤá ááá ááá áĽáŠ á˘ááľáá áá áĽá ááĽáŤáľ áá á¨áĽáᢠá¨ááŽáááąá á˝áá á áŤáŁá˘áá˝ áááá¨áľ áĽá áá ááłáŽá˝ ááááŞáŤ áááłáľ áĽááłááŁá¸á ááá¨áłáľ á á¨ááá á¨ááľáĽ á¨á°á áá áłá°áł áĽááśá˝á ááŤááľ áááá (áá á á áŤá ááŹá á áŠáŁááŤá ááľáĽ áĽá á áá áááá)ᢠá áŁá á áľáááá, ááá˝ áá á˛áá, áááľ á°ááŁáŤáľ áá áŠ. á ááááŞáŤ á¨áŽáą á°á¨á᪠á áááľ á˝áá áŤáľááááá, ááá°á, á ááĽááľ áááľáŤáľ mypy áŤáľááááá. áááá áááá á áĽá áá° áŠáŁá፠ááŽáááśá˝ á¨áá°áá á áľáŤá˝á áá áĽááłáá°á ááá ááá áá áᢠáĽá á¨áĽááá á áááľ á°ááŁáŤáľ á áľáááááľ áá á áá á áááá, áĽááąá ááááłáľ á ááá á°áá.
á¨á áá áááłáááľ!
áá᪠áá°áť mypy ááŁá áĽáá˛áá á áľáááłáᣠááá áá ááłáŞáŤá á ááá á á ááŁá á ááá á¨áᢠáĽá á°á¨á᪠áá°áťáá˝ áá ááľ á°áá áŤá á ááŠá˘ áá á¨ááá áľ ááááŤáľ áłááááŤá á¨áá á¨ááᥠáááśá˝ áá¸áᢠáá ááááŁáľ á áááá ááľáĽ á¨á°áá áľááá á¨áŽáľ á¤áá áá á¨á°áŤá á°á ááŤáľá°áá áá˝ááᢠáĽáŤááłááłá¸á á á°ááá᪠ááášá áá á¨áá á áľáᥠá ááśáá˝ á¨ááá አáááá˝ áá áŠáᢠá ááľááŁáľ loop ááľáĽ áŤá ááááá ááá á¨á°áá¨á¨áŁ mypy á á፠loop ááľáĽ áŤááľá áááá áááá˝ áĽá áĽá áá áááá˝á á¨á፠áá á¨ááŤáľáᥠáááá˝ ááŤááľ áá á¨á áľá˘ á¨áĽáá°áá á áááľ áá°áľ á ááą á Dropbox ááľáĽ áĽá á˝áá áŤáľá¨á°áá áłááá "áĽááááľ áłáá" áá á. áá ááá á áĽá ááś áááá˝á á¨áŤá á ááᣠá¨áá á˛ááŁáŁ á ááĽáłá áá á á°ááááŞáŁ áĽá áá¨áŤáá˝áŁ á áááľ áŽáľ ááľáĽá áĽá á áá áááá˘
á¨áἠáĽááááśá˝á "ááłá á" á¨ááťáá áľá áááł áááľ ááľáĽ áŤáľááŁá, ááá áá áá
áá áááľá¨á á¨ááŤáľá˝á á á
á á ááá á¨áá. áĽá á¨ááááá á áŁá áĽá áŽáľ áá áᢠá áá¤áąá, á ááŤá ááááľ ááá ááĽá°áá. "áĽááááľ tangles" ááľ áĽááł mypy á ááĽááľ áĽáá˛á ፠áááľá¨á áá°áá. áá
áá áἠááłáŤáľ á¨áťááá mypy daemon á áá áá ááᢠá´áá áááľ á áľá°áłá˝ áŁá
áŞáŤáľá á¨áá°áá á á¨á áááá áá°áľ ááᢠá ááááŞáŤ ᣠáľá á á ááá áŽáľ á¤á áá¨á á áá
á°á¨ áľááľáł ááľáĽ áŤá¨ááťáᢠáá
áááľ áááá áŁááą ááĽá á áşáá˝ á¨ááá አá¨áá á¨ááᥠáĽááá˝ áá á¨á°áŤáŤá á¨á°á¸áá ááἠááŤá á áŤáľáááááľáᢠá ááá°á á°á¨á, áĽáą á áĽááá, á áľáá˝ ááá
áŤá áááá˝ á°á¨á, á á°ááŁáŽá˝ áĽá á ááá˝ á áŤááľ ááŤá¨á áŤááá áĽááááľ ááá¨ááŤá. áááłá, á°ááŁáŠ á¨áá foo
á°ááŁáá áá áŤá bar
, á¨ááŤá áĽáá á á foo
ĐžŃ bar
. á ááľ ááá á˛áá¨á áłááá á ááááŞáŤáŁ á á°ááĽáᣠá¨á°áá¨á¨áá ááá áĽáť áá°áŤáᢠá¨á፠á áá á á፠ááá áá áĽáá° á¨á°áá¨áŠ ááááá˝ áŤá á ááŤá á¨ááłáŠ áááŚá˝á áááá¨áłáᢠá´áá áľá ááľááŁáľ áááá áá¨áá á¨áá ááá á¨á°áá¨á¨áá á°ááŁá á áľááá á¨áá áááľá á°ááŁáŤáľ áĽáá°áá ááá¨ááἠáĽáť ááᢠá á°áááś, á áá
á ááŤá¨áĽ, á áŁá áĽááľ á°ááŁáŤáľá áá¨ááἠá ááĽááľ.
á¨ááááŞáŤá ááá áľáá ፠á á ááľ áá á ááľ ááá á áááááľ áá áŤá°áŽá¨ áľááá á áĽááá á áá áá°áá á ááá á ááá á¨áᢠáĽá á¨áľáá á áááłáá˝á áááá áá á¨áĽá, áá ááľá°áľ á áŽáą ááľáĽ á¨áá ááá á á°áá¨á¨áŁá¸á ááłáŽá˝ áá á°á°ááá áźáŽá˝á áá ááá. áááłáᣠáá á¨áááá á ááľ ááá á á˛áľ á¤á ááá á˛áá°áĽ ááᢠá áá´ á¨áááááá ááá áŤá°á¨áá á ááᣠá¨á áĽááášá á°á¨á᪠áźáŽá˝ á¨ááľáá¸á፠ááá áá° áĽááľ á°á¨ááśá˝ áĽáť ááááľ á˝áááᢠáá ááĽá áľáá áľá ááľá áá áá˘
á¨á áá áááłáááľ!
á¨áá á¨á ááľáŠáľ á¨áááľ áá¸á፠ááᣠááá á´áá á ááľ ááŽááŤáá á á°á°ááá á áááľ áźá á˛áŤáŤááľ á¨áááąáľá á˝ááŽá˝ áá á áá ááľáˇáᣠáá á á áľáá˝ áááá˝ áá ááἠá áľáááᢠáááᣠá áľááš ááš á¨á á ááá áááł á¨áľáááľ á ááťá¸á á ááá áĽá á á áŁá áĽáŠ á ááá á¨áᢠáášá ᨠmypy á áá á¨15 á°áááá˝ á áá áááľáľ áá˝ááᢠáĽá áá áĽá á°áľá°á á¨ááááá áľ á áá áá á. ááŽááŤááŽá˝ á á˛áľ áŽáľ áááá¸áá áĽá á ááŁá áŽáľ áá ááĽáŤáŞáŤáá˝á á˛á¨áአá á¨áłáááą áááłá ââââá¨á¨á ááᢠá°á ááááťá˝á á ááá áá°á¨á᪠á ááťá¸á á°áá á áá áᣠáá á ááá˝ ááááľ á ááááłá˝á á°áľá°áá˝ ááá˘
áááá á á°ááá¨á° á¨áá°ááľ ááłáŚá˝ áá° á ááą áááááľ ááľáááᢠáááľá á¨ááááá áŽáľ áᰠᲠáŽáľ áááá¨áᢠá áłááśá ááá¨á (á áááá á¨á°áááá áŽáľ áᰠᲠáŽáľ áĽááľáľá°á¨áá á¨ááŤáľá˝á áľáááľ) ááá á¨ááłá ááĽááľ á áá°á ááᣠáľááá á¨áŤáłá˝áá á á áá᪠á¨ááá ááłáĽ ááá°áľ ááľáááᢠmypy codebase (á áááá á¨á°áťá) á áľááľá áááá á áľááá ááááľ ááĽáŤáŞáŤáá˝ áľááŤáᣠáľáááąá áááá á áĽááá á ááĽáŤáŞáŤáá˝ ááá áá ááá¨áŠ á áá áá áĽáá á á°áĽáᢠáá á ááłáĽ áááá°á˝ á ááĽááľ ááŽáśáłáá áá ááŠá˘ á á°ááŤáŠ áĽáá á áááŞáŤáá˝ áá ᨠ10 áĽáĽá á áá á¨á áááá áá᪠á áłááˇá. ááłáŁá˝á áłááśáá á áá áá á¨áááá áááá˝á áᰠᲠáááá˝ áá ááá áĽá ááĽáŤáŞáŤáá˝á áá° á¨áŠáŤ áá á áááľ áźáŽá˝ áááἠáá á (áĽááá áá ááĽáŤáŞáŤáá˝á á áá°á¨áĽ á áŠáŤ áá á˝á ááŁáá áĽá á á áááľ áźá á˛áľá°á áĽáť áá ááá)ᢠá¨Mypy á á°ááŁá áá á¨áááá áá° áľáłá˛áľá˛ááľ ááá°á¨áĽ áá°á°ááááᣠáá áĽáá° Python áá°áááľáá (áĽá á á áĽááá á¨áá°áŤ) ááá ááá°ááá á á á°ááᢠ(áá á áááą á¨ááá ááá°áľ á¨Mypy ááŽáááľ áá áááá˘á¨ááááŞáŤá ááá á á°ááŁá á á¨á°ááá á á áᏠáááŁá¨áá á¨á፠áĽá áááá á ááŁáĽ áľáĽáá áá á)á˘
á¨ááŽáááľ á áľá°áłá°á á á áá˝á ááááŁáľ á á˛ááśá á¤ááľá´áá˝á á¤áá á áá áá°áŽá ááá áá áᢠáááŁá áá˝á ááá mypy á¨ááááá¸áá á¤á°-ááťáááľ áá°áá á á áŤáľáááááᢠá á°á¨ááŞáᣠáááá á¨áááá áľá-áá áłá áĽá áááá ááłáŞáŤáá˝ (áĽáá° pytest áŤá) á ááá áľá¨áľ ááááľ áĽáá˝áááᢠáá áááľ á ááľááľ áá áľ á¨á°á°á¨áá á¨áááá áŽáľ áá ááá˝áá áĽáááĽáááᣠáá á áŽáľ áĽáá˛á ááá á¨áá á á ááá á áŁá ááŁá á áá á¨áŽáľ áááŚá˝á áááľá¨á áĽá áĽáąá áááá°á˝ áŤáľá˝áááᢠá áááľ ááá áŽá˝ áá á°ááá á áĽáŠ áľáŤ áĽá¨á°áŤá áá á ááááľ áŤá áᣠáá°áľáááá˘
áááá áĽáá á¨á áŤáá á áááŁáŞ (mypyá áááááśá˝á ááá°áá°á á¨ááľ áááľ ááá áľááá áá) á áŁá á¨á°áłáŤ ááŽáááľ áá á°áááˇáᢠá á á áááᣠáá¸á፠áłáŤáľáááá¸á áá°á°ááá mypy áŠáŤáá˝ á áááľ 4x ááĽááľ á áłáá°ááᢠᨠmypyc ááŽáááľá áá á áŤá ááłá á ááŤá¤á áąááŤá ᣠá˘áŤá áááŞááľáŞ áŁ áአáá áĽá áŤá´á áá° 4 á¨áá ááá áŞáŤ ááŤáľ áá°á°á˘ áá á¨áľáŤ áá á áááá áĽáá°áá áááá á¨ááŤáľáááá á áŁá áŤáá° áá á áááłá á C++ ááá GoᢠáĽá á ááŽáááą áá á áá ááá áľáá˝áá ááá°ááá á¨ááá˝áá áá á áŤáá° ááἠááľá¨á áá á¨áĽáᢠááὠᨠDropbox ááŽááŤááŽá˝ áŽáłá¸áá ááá°áĽá°áĽ áĽá áááá á áá ááá áľ á¨áá˝ááľá mypyc áá° áĽáá°áá áŤá á°á¨á áĽáá°áááᣠá°áľá á áľááá áá áá˘
áá áá á¨á áááá á°á¨á áááľá¨áľ á ááłááľ á áľá°áłá˝ á¨áá ááľáľá áááľááá˝á áá°áá á áá á¨áĽáᢠáľááá áŽáááá°áŠ ááŁá áĽá áá á°á á°á¨á ᲠáááŁáłáá˝á á áá áá áĽá áľáŤáá˝á áŤááĽáá áááłá á¨á°á ááᨠá°ááŁá áĽáŞ áá° C á°ááŁá áĽáŞ áá°á¨áááᢠáĽá áĽáá°áá á áááľ áĽáŞ á¨á°á°á¨áá á°ááŁáá á¨ááĽáŤáľ á¨á áá ááŁá áá. áĽáá° á¨áááá -áááľ ááá áŤá á ááłááľ ááááá˝ á ááá á¨CPython áá°á á á¨á˛.á.á á.á á áĽáŞáá˝á á áá áá ááłá°ááᣠáá á á˛á ááá á áá á ááŁá áá áᢠá áľááá á á°áá á¨á áľáááľ áá áŤááá á°á¨á᪠áááľ ááľáááľ á˝ááá, ááá áá áá á á áááá á¨ááľ áľáá˝ áľáá áĽáť á°áĽáˇá.
á áŁá á¨á°áááąáľá "áááá" áľáŤáá˝á áááá¨áľ, á¨áŽáľ ááŽááá á á°á¨áá. á áá áá¨á áłáĽáá ááĽáá°áá á áááľ áľáŤáá˝ ááŁá C áŽáľ áĽáá˛áŤááá ááá ááááá áááľá°áŤá¨á áá¨áá ááá ááŁá áľáŤáá˝á á áá áá á°ááá á¨áááá á¨áááá áŽáľ áĽáá°áá áááá ááá¨áá (áĽá á ááłááľ áá áá፠ááá ááá á˝áá á á áááľá á ááááá) . á¨ááááá áŽáľ áĽáá°áá ááťá áĽááá áá á áááŁáŞá á°ááłáłá ááἠá¨ááľá¨á ááá áá˝áአááá áááľá áá áᢠá á¨á á áá ááľáĽáŁ á¨áĽááá áááŚá˝ ááľáĽ áĽááášá á áŤáľ á°á ááľáŤáľ áĽááááááᣠááá áá á áá áą áááá á áľááš áĽá¨áľ á ááá á áá á á°áŠá¨á áá áᢠáĽá áá°áá áἠáľáááľ, áĽá ááááá˝á ááá á áá á.
áááĽááâŚ
ááľ á ááŁá˘áá˝! áľá ááá ááŽáááą á ááá á˛áŤáá áá á áááľ áááá¤áá˝ áá áŠááľ?
ááá: hab.com