αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš 4 αž›αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠ Python αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2

αžαŸ’αž„αŸƒαž“αŸαŸ‡αž™αžΎαž„αž€αŸ†αž–αž»αž„αž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž•αŸ’αž“αŸ‚αž€αž‘αžΈαž–αžΈαžšαž“αŸƒαž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž› Dropbox αž”αžΆαž“αžšαŸ€αž”αž…αŸ†αž€αžΆαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž”αŸ’αžšαž—αŸαž‘αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΌαžŠ Python αžšαžΆαž”αŸ‹αž›αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αŸ”

αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš 4 αž›αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠ Python αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2

β†’ αž’αžΆαž“αž—αžΆαž‚αž˜αž½αž™αŸ”

αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž”αŸ’αžšαž—αŸαž‘αž•αŸ’αž›αžΌαžœαž€αžΆαžš (PEP 484)

αž™αžΎαž„αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαžŠαŸαž’αŸ’αž„αž“αŸ‹αž’αŸ’αž„αžšαž›αžΎαž€αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™ mypy αž“αŸ… Dropbox αž€αŸ†αž‘αž»αž„αž–αŸαž› Hack Week 2014 αŸ” Hack Week αž‚αžΊαž‡αžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž˜αž½αž™αžŸαž”αŸ’αžαžΆαž αŸαžŠαŸ‚αž›αžšαŸ€αž”αž…αŸ†αžŠαŸ„αž™ Dropbox αŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸαŸ‡ αž“αž·αž™αŸ„αž‡αž·αžαž’αžΆαž…αž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αž›αž½αž“αž…αž„αŸ‹αž”αžΆαž“! αž‚αž˜αŸ’αžšαŸ„αž„αž”αž…αŸ’αž…αŸαž€αžœαž·αž‘αŸ’αž™αžΆαž›αŸ’αž”αžΈαŸ—αž˜αž½αž™αž…αŸ†αž“αž½αž“αžšαž”αžŸαŸ‹ Dropbox αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸ…αž€αŸ’αž“αž»αž„αž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž”αŸ‚αž”αž“αŸαŸ‡αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž›αž“αŸƒαž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“αžαžΆ mypy αž˜αžΎαž›αž‘αŸ…αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž˜αžΆαž“αž‡αŸ„αž‚αž‡αŸαž™ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„αž“αŸαŸ‡αž˜αž·αž“αž‘αžΆαž“αŸ‹αžšαž½αž…αžšαžΆαž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž™αŸ‰αžΆαž„αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž€αŸαžŠαŸ„αž™αŸ”

αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡ αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‡αŸ†αž“αž½αž™αž”αŸ’αžšαž—αŸαž‘ Python αž‚αžΊαž“αŸ…αž›αžΎαž’αžΆαž€αžΆαžŸαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈ Python 3.0 αžœαžΆαž’αžΆαž…αž”αŸ’αžšαžΎαž”αŸ’αžšαž—αŸαž‘αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αž»αžαž„αžΆαžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž€αžΆαžšαž”αž‰αŸ’αž…αŸαž‰αž˜αžαž·αžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αž αžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ αž“αž·αž„αž’αžαŸ’αžαž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αŸ” αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αž·αž“αž’αžΎαž–αžΎαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαž”αŸ’αžαžΆαž αŸαž“αŸƒαž€αžΆαžš Hack αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž“αŸƒαž“αŸαž™αž’αŸ€αž”αŸ” αž€αžΆαžšαž„αžΆαžšαž“αŸαŸ‡αž”αžΆαž“αž“αžΆαŸ†αž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž›αŸαž…αž‘αžΎαž„ αž—αžΈ ៣៑៣៦ (Guido van Rossum, Łukasz Langa αž“αž·αž„αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαž αž€αžΆαžšαž‚αŸ’αž“αžΆαž›αžΎαž―αž€αžŸαžΆαžšαž“αŸαŸ‡)αŸ”

αž€αžΆαžšαž‡αž˜αŸ’αžšαž»αž‰αžšαž”αžŸαŸ‹αž™αžΎαž„αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αžΎαž›αž–αžΈαž—αžΆαž‚αžΈαž‘αžΆαŸ†αž„αž–αžΈαžšαŸ” αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αžŸαž„αŸ’αžƒαžΉαž˜αžαžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌ Python αž‘αžΆαŸ†αž„αž˜αžΌαž›αž’αžΆαž…αž‘αž‘αž½αž›αž™αž€αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‘αžΌαž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αŸ’αžšαžΎαž€αžΆαžšαžŽαŸ‚αž“αžΆαŸ†αž”αŸ’αžšαž—αŸαž‘ (αž–αžΆαž€αŸ’αž™αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„ Python αž‡αžΆαž–αžΆαž€αŸ’αž™αžŠαŸ‚αž›αžŸαŸ’αž˜αžΎαž“αžΉαž„ "αž”αŸ’αžšαž—αŸαž‘αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹")αŸ” αž“αŸαŸ‡β€‹αž”αžΎβ€‹αžαžΆαž˜β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžαž»αž™αž”αŸ’αžšαžαžΆαž“β€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž€αžΎαžβ€‹αž˜αžΆαž“β€‹αž”αžΆαž“β€‹αž›αŸ’αž’β€‹αž‡αžΆαž„β€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎβ€‹αžœαž·αž’αžΈβ€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž‚αŸ’αž“αžΆβ€‹αž‘αŸ…β€‹αžœαž·αž‰β€‹αž‘αŸ…β€‹αž˜αž€β€‹αž‡αžΆβ€‹αž…αŸ’αžšαžΎαž“αŸ” αž‘αžΈαž–αžΈαžš αž™αžΎαž„αž…αž„αŸ‹αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžŠαŸ„αž™αž”αžΎαž€αž…αŸ†αž αž’αŸ†αž–αžΈαž™αž“αŸ’αžαž€αžΆαžšαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘αž‡αžΆαž˜αž½αž™αžŸαž˜αžΆαž‡αž·αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸƒαžŸαž αž‚αž˜αž“αŸ Python αŸ” αž”αŸ†αžŽαž„αž”αŸ’αžšαžΆαžαŸ’αž“αžΆαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžŠαŸ„αž™αž•αŸ’αž“αŸ‚αž€αžŠαŸ„αž™αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž™αžΎαž„αž˜αž·αž“αž…αž„αŸ‹αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆ "αž’αŸ’αž“αž€αž€αŸ’αž”αžαŸ‹αžŸαžΆαžŸαž“αžΆ" αž–αžΈαž‚αŸ†αž“αž·αžαž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž—αžΆαžŸαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž—αŸ’αž“αŸ‚αž€αž“αŸƒαž˜αž αžΆαž‡αž“αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™αž“αŸƒαž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Python αŸ” αžœαžΆβ€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž—αžΆαžŸαžΆβ€‹αžœαžΆαž™β€‹αž’αž€αŸ’αžŸαžšβ€‹αžαžΆαž˜αžœαž“αŸ’αž αžŠαŸ‚αž›β€‹αž‚αŸβ€‹αžŸαŸ’αž‚αžΆαž›αŸ‹β€‹αžαžΆβ€‹αž‡αžΆ "αž€αžΆαžšβ€‹αžœαžΆαž™β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αž‘αžΆ"αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž αž‚αž˜αž“αŸαž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž’αžΆαž€αž”αŸ’αž”αž€αž·αžšαž·αž™αžΆαž‚αž½αžšαž±αŸ’αž™αžŸαž„αŸ’αžŸαŸαž™αž…αŸ†αž–αŸ„αŸ‡αž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžšαž‹αž·αžαž·αžœαž“αŸ’αžαž˜αž·αž“αž’αžΆαž…αž‡αž½αž™αž”αžΆαž“αž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αžΎαžαž‘αžΎαž„αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸβ€‹αž“αŸ„αŸ‡β€‹αž“αŸ…β€‹αž‘αžΈβ€‹αž”αŸ†αž•αž»αžβ€‹αž”αžΆαž“β€‹αžšαžŸαžΆαžαŸ‹β€‹αž‘αŸ…β€‹αžœαž·αž‰β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αžœαžΆβ€‹αž”αžΆαž“β€‹αž…αŸ’αž”αžΆαžŸαŸ‹β€‹αžαžΆβ€‹αž€αžΆαžšβ€‹αžœαžΆαž™β€‹αž’αž€αŸ’αžŸαžšβ€‹αž‹αž·αžαž·αžœαž“αŸ’αžβ€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αž„αŸ’αžαŸ†β€‹αž‘αŸ (αž αžΎαž™β€‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž˜αž“αž»αžŸαŸ’αžŸβ€‹αž”αžΆαž“β€‹αžŠαžΉαž„β€‹αžαžΆβ€‹αžœαžΆβ€‹αž–αž·αžβ€‹αž‡αžΆβ€‹αž˜αžΆαž“β€‹αž”αŸ’αžšαž™αŸ„αž‡αž“αŸ)αŸ”

αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž‡αŸ†αž“αž½αž™αž”αŸ’αžšαž—αŸαž‘αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αž˜αŸαžαž“αŸ…αž‘αžΈαž”αŸ†αž•αž»αžαž‚αžΊαžŸαŸ’αžšαžŠαŸ€αž„αž‘αŸ…αž“αžΉαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž› mypy αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡αŸ” PEP 484 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαž˜αž½αž™ Python 3.5 αž€αŸ’αž“αž»αž„αž†αŸ’αž“αžΆαŸ† 2015 αŸ” Python αž›αŸ‚αž„β€‹αž‡αžΆβ€‹αž—αžΆαžŸαžΆβ€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžœαžΆαž™β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αžŠαŸ„αž™β€‹αžαžΆαž˜αžœαž“αŸ’αžβ€‹αž‘αŸ€αžβ€‹αž αžΎαž™αŸ” αžαŸ’αž‰αž»αŸ†αž…αžΌαž›αž…αž·αžαŸ’αžαž‚αž·αžαžαžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž‡αžΆαž–αŸ’αžšαžΉαžαŸ’αžαž·αž€αžΆαžšαžŽαŸαžŠαŸαžŸαŸ†αžαžΆαž“αŸ‹αž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš Python αŸ”

αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€

αž“αŸ…αž…αž»αž„αž†αŸ’αž“αžΆαŸ† 2015 Dropbox αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αŸ’αžšαž»αž˜αž˜αž“αž»αžŸαŸ’αžŸαž”αžΈαž“αžΆαž€αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαž›αžΎ mypy αŸ” αž–αž½αž€αž‚αŸαžšαž½αž˜αž˜αžΆαž“ Guido van Rossum, Greg Price αž“αž·αž„ David Fisher αŸ” αž…αžΆαž”αŸ‹β€‹αž–αžΈβ€‹αž–αŸαž›β€‹αž“αŸ„αŸ‡β€‹αž˜αž€ αžŸαŸ’αžαžΆαž“αž—αžΆαž–β€‹αž…αžΆαž”αŸ‹β€‹αž•αŸ’αžŠαžΎαž˜β€‹αžœαž·αžœαžαŸ’αžαž“αŸβ€‹αž™αŸ‰αžΆαž„β€‹αž›αžΏαž“αŸ” αž§αž”αžŸαž‚αŸ’αž‚αž‘αžΈαž˜αž½αž™αž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž›αžΌαžαž›αžΆαžŸαŸ‹αžšαž”αžŸαŸ‹ mypy αž‚αžΊαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ” αžŠαžΌαž…αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŽαŸ‚αž“αžΆαŸ†αžαžΆαž„αž›αžΎ αž“αŸ…αžŠαžΎαž˜αžŠαŸ†αž”αžΌαž„αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‚αž·αžαž’αŸ†αž–αžΈαž€αžΆαžšαž”αž€αž”αŸ’αžšαŸ‚αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ mypy αž‘αŸ…αž‡αžΆ C αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ†αž“αž·αžαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαžαŸ‹αž…αŸαž‰αž–αžΈαž”αž‰αŸ’αž‡αžΈαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αŸ” αž™αžΎαž„αž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž€αž”αŸ’αžšαŸ‚ CPython αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αž›αžΏαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαžŠαžΌαž…αž‡αžΆ mypy αž‘αŸαŸ” (αž‚αž˜αŸ’αžšαŸ„αž„ PyPy αžŠαŸ‚αž›αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‡αŸ†αž“αž½αžŸ Python αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„ JIT αž€αŸαž˜αž·αž“αž”αžΆαž“αž‡αž½αž™αž™αžΎαž„αžŠαŸ‚αžšαŸ”)

αž‡αžΆαžŸαŸ†αžŽαžΆαž„αž›αŸ’αž’ αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž€αŸ’αž”αž½αž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž˜αž½αž™αž…αŸ†αž“αž½αž“αž”αžΆαž“αž˜αž€αžŠαž›αŸ‹αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž‘αžΈαž“αŸαŸ‡αŸ” "αž§αž”αž€αžšαžŽαŸαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“" αžŠαŸαž˜αžΆαž“αž’αžΆαž“αž»αž—αžΆαž–αžŠαŸ†αž”αžΌαž„αž‚αžΊαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αŸ” αž‚αŸ†αž“αž·αžαž“αŸ…αž–αžΈαž€αŸ’αžšαŸ„αž™αž€αžΆαžšαž€αŸ‚αž›αž˜αŸ’αž’αž“αŸαŸ‡αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαž”αžŸαŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αž·αž“αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαž˜αž»αž“αž“αŸƒ mypy αž“αŸ„αŸ‡αž™αžΎαž„αž’αžΆαž…αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αž»αž“αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αŸ” αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αž›αžΎαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚ αž“αž·αž„αž“αŸ…αž›αžΎαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€αž›αžΎαž–αž½αž€αžœαžΆαŸ” Mypy αžαŸ‚αž˜αž‘αžΆαŸ†αž„αžŠαžΎαžšαž‘αŸ…αž˜αž»αžαž”αž“αŸ’αžαž·αž…αž‘αŸ€αžαŸ– αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αŸ†αžŽαž»αž…αž”αŸ’αžšαž‘αžΆαž€αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ…αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ mypy αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαž˜αŸ‰αžΌαžŒαž»αž›αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž“αžΆαŸ†αž…αžΌαž›αž˜αŸ‰αžΌαžŒαž»αž›αž“αŸαŸ‡αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαž–αž·αž“αž·αžαŸ’αž™αž˜αŸ’αžαž„αž‘αŸ€αžαž‘αŸαŸ”

αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αž”αžΆαž“αž‡αž½αž™αž™αžΎαž„αž…αŸ’αžšαžΎαž“αž“αŸ…αž–αŸαž›αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαžΆαŸ†αž…αŸ†αž“αž½αž“αžŠαŸαž…αŸ’αžšαžΎαž“αž“αŸƒαž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ” αž…αŸ†αžŽαž»αž…αž“αŸ„αŸ‡αž‚αžΊαžαžΆ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš mypy αžŠαžŠαŸ‚αž›αŸ—αž‡αžΆαž…αŸ’αžšαžΎαž“ αžαžŽαŸˆαžŠαŸ‚αž›αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž”αž“αŸ’αžαž·αž…αž˜αŸ’αžαž„αŸ—αž‘αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠ αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ‚αž›αž˜αŸ’αž’αž”αž“αŸ’αžαž·αž…αž˜αŸ’αžαž„αŸ—αŸ” αž€αžΆαžšαžšαžαŸ‹αžŠαŸ†αž”αžΌαž„αžšαž”αžŸαŸ‹ mypy αž“αŸ…αžαŸ‚αž™αžΊαžαžαŸ’αž›αžΆαŸ†αž„ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž˜αžΆαž“αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αž…αŸ’αžšαžΎαž“αž€αŸ’αž“αž»αž„αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ‚αž›αž˜αŸ’αž’αžŸαŸ’αžαžΆαž“αž—αžΆαž– αž™αžΎαž„αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž™αž“αŸ’αžαž€αžΆαžšαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎ mypy αžšαž€αžƒαžΎαž‰αžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αŸ†αž“αž„αž‡αžΆαž αž½αžŸαžŸαž˜αŸαž™ αžœαžΆαž‘αžΆαž‰αž™αž€αžšαžΌαž”αžαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαž‘αžΆαŸ†αž„αž˜αžΌαž›αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„αž€αžŽαŸ’αžαžΆαž›αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž’αŸ’αžœαžΎαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αžŠαŸ„αž™αž”αŸ’αžšαžΎαžšαžΌαž”αžαžαž“αŸαŸ‡αŸ” αž“αŸαŸ‡αž”αžΆαž“αž“αžΆαŸ†αž™αžΎαž„αž“αžΌαžœαž‡αŸ†αž αžΆαž“αžŠαŸαž’αŸ†αž˜αž½αž™αž‘αŸ€αžαž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αžšαž€αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαžšαž”αžŸαŸ‹ mypy αŸ”

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαžšαž™αŸˆαž–αŸαž›αž“αŸƒαž€αžΆαžšαž‘αž‘αž½αž›αž™αž€αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸ αž“αž·αž„αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αž“αŸ… Dropbox αŸ” αž“αŸ…αž…αž»αž„αž†αŸ’αž“αžΆαŸ† 2016 αž™αžΎαž„αž˜αžΆαž“αž€αžΌαžŠ Python αž”αŸ’αžšαž αŸ‚αž› 420000 αž”αž“αŸ’αž‘αžΆαžαŸ‹αžšαž½αž…αž αžΎαž™ αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αžΆαž“αžŸαžΆαž‘αžšαž…αŸ†αž–αŸ„αŸ‡αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αŸ” αž€αŸ’αžšαž»αž˜αž’αž—αž·αžœαžŒαŸ’αžαž“αŸαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ Dropbox mypy αŸ”

αž’αŸ’αžœαžΈαŸ—αž˜αžΎαž›αž‘αŸ…αž›αŸ’αž’αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αŸ…αž˜αžΆαž“αžšαžΏαž„αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎαŸ” αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαžŸαŸ’αž‘αž„αŸ‹αž˜αžαž·αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„αžαžΆαž˜αž€αžΆαž›αž€αŸ†αžŽαžαŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž”αž‰αŸ’αž αžΆαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ αž“αž·αž„αžŸαŸ’αžœαŸ‚αž„αž™αž›αŸ‹αžαžΆαžαžΎαž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž»αž“αžŸαž·αž“ (αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸαŸ‡αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžŸαž–αŸ’αžœαžαŸ’αž„αŸƒαž“αŸαŸ‡)αŸ” αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αž αžŠαžΌαž…αžŠαŸ‚αž›αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αž αžΎαž™ αž‚αžΊαž€αž·αž…αŸ’αž…αž€αžΆαžšαž–αžΈαžšαŸ” αž‘αžΈαž˜αž½αž™ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαž—αŸαž‘αž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž“αŸƒαž€αžΌαžŠ αž‘αžΈαž–αžΈαžš αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš mypy αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αŸ” αžœαžΆαž…αŸ’αž”αžΆαžŸαŸ‹αžŽαžΆαžŸαŸ‹αžαžΆαž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“ mypy αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„αžšαž”αžŸαŸ‹αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αž‚αžΊαž“αŸ…αž†αŸ’αž„αžΆαž™αž–αžΈαž€αžΆαžšαž–αŸαž‰αž›αŸαž‰αž“αŸ…αž‘αžΎαž™αŸ” αž™αžΎαž„αžŠαžΉαž„αž™αŸ‰αžΆαž„αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž“αŸƒαž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαž“αŸαŸ‡ αž€αŸ†αžŽαžαŸ‹αž’αŸ†αž–αžΈαž€αžΆαžšαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαžΆαŸ”

αž•αž›αž·αžαž—αžΆαž–αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“!

αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αž”αžΆαž“αž’αŸ’αžœαžΎαž±αŸ’αž™ mypy αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž§αž”αž€αžšαžŽαŸαž“αŸ…αžαŸ‚αž˜αž·αž“αž›αžΏαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αŸ” αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž›αž”αŸ’αžšαž αŸ‚αž›αž˜αž½αž™αž“αžΆαž‘αžΈαŸ” αž˜αžΌαž›αž αŸαžαž»β€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž€αžΆαžšβ€‹αž“αžΆαŸ†β€‹αž…αžΌαž›β€‹αžαžΆαž˜β€‹αžœαžŠαŸ’αžβ€‹αŸ” αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αžŠαž›αŸ‹αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαž’αŸ†αžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Python αž“αŸ„αŸ‡αž‘αŸαŸ” αž™αžΎαž„αž˜αžΆαž“αž”αžŽαŸ’αžαž»αŸ†αž“αŸƒαž˜αŸ‰αžΌαžŒαž»αž›αžšαžΆαž”αŸ‹αžšαž™ αžŠαŸ‚αž›αž“αžΈαž˜αž½αž™αŸ—αž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž―αž€αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž“αžΆαŸ†αž…αžΌαž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš mypy αžαŸ’αžšαžΌαžœαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž―αž€αžŸαžΆαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž“αŸ„αŸ‡ αž αžΎαž™αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αž˜αŸ‰αžΌαžŒαž»αž›αž–αžΈαžšαž„αŸ’αžœαž·αž›αž‡αž»αŸ†αž“αŸ„αŸ‡αŸ” αžœαžŠαŸ’αžαž˜αž½αž™αž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊαž‡αžΆ "αž—αžΆαž–αž…αŸ’αžšαž”αžΌαž€αž…αŸ’αžšαž”αž›αŸ‹αž“αŸƒαž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€" αžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αžŠαŸ‚αž›αž”αžŽαŸ’αžαžΆαž›αž±αŸ’αž™αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ… Dropbox αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž˜αžΆαž“αž˜αŸ‰αžΌαžŒαž»αž›αžšαžΆαž”αŸ‹αžšαž™ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹ αž¬αžŠαŸ„αž™αž”αŸ’αžšαž™αŸ„αž› αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‡αžΆαž…αŸ’αžšαžΎαž“ αžœαžΆαž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαž•αž›αž·αžαž€αž˜αŸ’αž˜αž•αž„αžŠαŸ‚αžšαŸ”

αž™αžΎαž„β€‹αž”αžΆαž“β€‹αž–αž·αž…αžΆαžšαžŽαžΆβ€‹αž’αŸ†αž–αžΈβ€‹αž›αž‘αŸ’αž’αž—αžΆαž–β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž–αžΉαž„αž•αŸ’αž’αŸ‚αž€β€‹αžšαžΆαž„αž‡αžΆαžšαž„αŸ’αžœαž„αŸ‹ αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž™αžΎαž„β€‹αž˜αž·αž“β€‹αž˜αžΆαž“β€‹αž’αž“αž’αžΆαž“β€‹αžŠαžΎαž˜αŸ’αž”αžΈβ€‹αž’αŸ’αžœαžΎβ€‹αžœαžΆβ€‹αž‘αŸαŸ” αž˜αžΆαž“αž›αŸαžαž€αžΌαžŠαž…αŸ’αžšαžΎαž“αž–αŸαž€αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž’αŸ’αž›αžΆαž”αŸ‹αžŸαŸ’αž‚αžΆαž›αŸ‹αŸ” αž‡αžΆαž›αž‘αŸ’αž’αž•αž› αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αŸ†αž“αž½αžŸαŸ” αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαž’αŸ’αžœαžΎαž±αŸ’αž™ mypy αž’αŸ’αžœαžΎαž€αžΆαžšαž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸ αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒ "αž€αžΆαžšαž‡αžΆαž”αŸ‹αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’" αž€αŸαžŠαŸ„αž™αŸ” αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž‚αŸ„αž›αžŠαŸ…αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαžŠαŸαž˜αž·αž“ mypy αŸ” αžŠαŸαž˜αž·αž“αž‚αžΊαž‡αžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž’αž“αž»αžœαžαŸ’αžαž˜αž»αžαž„αžΆαžšαž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž–αžΈαžšαŸ” αž‘αžΈαž˜αž½αž™ αžœαžΆαž•αŸ’αž‘αž»αž€αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ†αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž€αžΌαžŠαž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ†αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆαžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš mypy αž’αŸ’αž“αž€αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž“αžΆαŸ†αž…αžΌαž›αžšαžΆαž”αŸ‹αž–αžΆαž“αŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž‘αžΈαž–αžΈαžš αž‚αžΆαžαŸ‹αžŠαŸ„αž™αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž“αŸ…αž€αž˜αŸ’αžšαž·αžαž“αŸƒαž’αž„αŸ’αž‚αž—αžΆαž–αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžαžΌαž…αŸ— αžœαž·αž—αžΆαž‚αž—αžΆαž–αž’αžΆαžŸαŸ’αžšαŸαž™αžšαžœαžΆαž„αž˜αž»αžαž„αžΆαžš αž“αž·αž„αž’αž„αŸ’αž‚αž—αžΆαž–αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” αž§αž‘αžΆαž αžšαžŽαŸαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αž»αžαž„αžΆαžš foo αž αŸ…αž˜αž»αžαž„αžΆαžšαž˜αž½αž™αŸ” barαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž€αžΆαžšαž–αžΉαž„αž•αŸ’αž’αŸ‚αž€ foo αž–αžΈ bar. αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αžŠαŸαž˜αž·αž“αžŠαŸ†αž”αžΌαž„αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž–αž―αž€αŸ„ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ‚αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž˜αžΎαž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αžαžΆαž„αž€αŸ’αžšαŸ…αž…αŸ†αž–αŸ„αŸ‡αž―αž€αžŸαžΆαžšαž“αŸ„αŸ‡ αžŠαžΌαž…αž‡αžΆαž αžαŸ’αžαž›αŸαžαžΆαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαŸ” αžŠαŸαž˜αž·αž“αž”αŸ’αžšαžΎαž–αŸαžαŸŒαž˜αžΆαž“αž›αŸ†αž’αž·αžαž’αŸ†αž–αžΈαž€αžΆαžšαž“αžΆαŸ†αž…αžΌαž›αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž˜αž»αžαž„αžΆαžšαž‘αžΆαŸ†αž„αž“αŸ„αŸ‡αžŠαŸ‚αž›αž–αž·αžαž‡αžΆαž”αŸ’αžšαžΎαž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αŸ‚αž”αŸ’αžšαŸ‚αŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‡αžΆαž˜αž½αž™αž“αžΉαž„αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž“αŸαŸ‡ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž˜αž»αžαž„αžΆαžšαžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ”

αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸαŸ‡αž‚αžΊαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ„αŸ‡αž‘αŸ αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž mypy αžŠαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αžαŸ„αžαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž›αžΎαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž―αž€αžŸαžΆαžšαž˜αž½αž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” αž™αžΎαž„αžαŸ’αžšαžΌαžœαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‡αžΆαž˜αž½αž™αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž–αŸ’αžšαŸ†αžŠαŸ‚αž“αž‡αžΆαž…αŸ’αžšαžΎαž“ αž€αžΆαžšαž€αžΎαžαž‘αžΎαž„αžŠαŸ‚αž›αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž˜αŸ’αžαž„αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αžαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ‚αž›αž’αŸ’αžœαžΈαž˜αž½αž™αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαŸ” αž§αž‘αžΆαž αžšαžŽαŸ αžœαžΆαž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžαŸ’αž“αžΆαž€αŸ‹αž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαžαŸ‹αžαŸ’αž“αžΆαž€αŸ‹αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžαŸ’αž˜αžΈαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αž”αžΆαž“ αž™αžΎαž„αž’αžΆαž…αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αž“αŸ’αžαŸ‚αž˜αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž˜αž€αžαŸ’αžšαžΉαž˜αž–αžΈαžšαž”αžΈαžœαž·αž“αžΆαž‘αžΈαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž“αŸαŸ‡β€‹αž αžΆαž€αŸ‹β€‹αžŠαžΌαž…β€‹αž‡αžΆβ€‹αž‡αŸαž™β€‹αž‡αž˜αŸ’αž“αŸ‡β€‹αžŠαŸβ€‹αž’αŸ†β€‹αž˜αž½αž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž™αžΎαž„αŸ”

αž€αžΆαž“αŸ‹αžαŸ‚αž•αž›αž·αžαž—αžΆαž–!

αžšαž½αž˜αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž–αžΈαž…αž˜αŸ’αž„αžΆαž™αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αž·αž—αžΆαž€αŸ’αžŸαžΆαžαžΆαž„αž›αžΎ αžŠαŸαž˜αž·αž“ mypy αžŸαŸ’αž‘αžΎαžšαžαŸ‚αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαžŠαŸ‚αž›αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ‚αž„αžαŸ‚αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘ αžŠαŸ„αž™αž’αŸ’αžœαžΎαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‘αŸ…αž―αž€αžŸαžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“αžαžΌαž…αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ†αžŽαŸ„αž™αž•αž›αžαž·αž…αž”αŸ†αž•αž»αžαž‚αžΊαž“αŸ…αžαŸ‚αž†αŸ’αž„αžΆαž™αž–αžΈαž—αžΆαž–αž›αŸ’αž’αž”αŸ’αžšαžŸαžΎαžšαž”αŸ†αž•αž»αžαŸ” αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸ’αž’αžΆαžαž“αŸƒ mypy αž’αžΆαž…αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž›αžΎαžŸαž–αžΈ 15 αž“αžΆαž‘αžΈαŸ” αž αžΎαž™αž“αŸαŸ‡αž‚αžΊαž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŸαž”αŸ’αž”αžΆαž™αž…αž·αžαŸ’αžαŸ” αž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžŸαž”αŸ’αžαžΆαž αŸ αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž€αžΆαž“αŸ‹αžαŸ‚αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‘αŸ…αŸ— αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž“αŸ’αžαžŸαžšαžŸαŸαžšαž€αžΌαžŠαžαŸ’αž˜αžΈ αž“αž·αž„αž”αž“αŸ’αžαŸ‚αž˜αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΌαžŠαžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αŸ” αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αžαŸ‚αžŸαŸ’αžšαŸαž€αžƒαŸ’αž›αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αžšαžΈαž€αžšαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αž”αž–αž½αž€αž‚αŸαž–αžΆαž€αŸ‹αž€αžŽαŸ’αžαžΆαž›αž•αŸ’αž›αžΌαžœαŸ”

αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž‚αŸ†αž“αž·αžαž˜αž»αž“αž˜αž½αž™αž‘αžΆαž€αŸ‹αž‘αž„αž“αžΉαž„ mypy αŸ” αž–αŸ„αž›αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ†αž”αŸ’αž›αŸ‚αž„αž€αžΌαžŠ Python αž‘αŸ…αž‡αžΆαž€αžΌαžŠ C αŸ” αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž‡αžΆαž˜αž½αž™ Cython (αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž”αž€αž”αŸ’αžšαŸ‚αž€αžΌαžŠαžŠαŸ‚αž›αžŸαžšαžŸαŸαžšαžŠαŸ„αž™ Python αž‘αŸ…αž‡αžΆαž€αžΌαžŠ C) αž˜αž·αž“αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αž“αžΌαžœαž›αŸ’αž”αžΏαž“αžŠαŸ‚αž›αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž“αŸ„αŸ‡αž‘αŸ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™αž™αžΎαž„αž”αžΆαž“αžŸαž˜αŸ’αžšαŸαž…αž…αž·αžαŸ’αžαžšαžŸαŸ‹αž‘αžΎαž„αžœαž·αž‰αž“αžΌαžœαž‚αŸ†αž“αž·αžαž“αŸƒαž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αžŠαŸ„αž™αžŸαžΆαžš mypy codebase (αžŸαžšαžŸαŸαžšαž€αŸ’αž“αž»αž„ Python) αž˜αžΆαž“αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž½αž…αž αžΎαž™ αž™αžΎαž„αž‚αž·αžαžαžΆαžœαžΆαž–αž·αžαž‡αžΆαž˜αžΆαž“αž”αŸ’αžšαž™αŸ„αž‡αž“αŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž”αŸ’αžšαžΎαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž‚αŸ†αžšαžΌαž˜αž½αž™αž™αŸ‰αžΆαž„αž†αžΆαž”αŸ‹αžšαž αŸαžŸ αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž‚αŸ†αž“αž·αžαž“αŸαŸ‡αŸ” αžœαžΆαž”αžΆαž“αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž…αŸ’αžšαžΎαž“αž‡αžΆαž„ 10 αžŠαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αžΎαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαž˜αžΈαž€αŸ’αžšαžΌαž•αŸ’αžŸαŸαž„αŸ—αŸ” αž‚αŸ†αž“αž·αžαžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αž€αŸ’αžšαž„αž˜αŸ‰αžΌαžŒαž»αž› Python αž‘αŸ…αž‡αžΆαž˜αŸ‰αžΌαžŒαž»αž› C αžŠαŸ„αž™αž”αŸ’αžšαžΎ Cython αž“αž·αž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αžœαŸ‚αžšαž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘αž‘αŸ…αž‡αžΆαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš (αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αž…αŸ†αžŽαžΆαžšαž–αž“αŸ’αž™αž›αŸ‹αž”αŸ’αžšαž—αŸαž‘αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΎαž–αžΎαž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž αžΎαž™αž”αŸ’αžšαžΎαžαŸ‚αžŠαŸ„αž™αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αž·αž“αž·αžαŸ’αž™αž”αŸ’αžšαž—αŸαž‘αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡)αŸ” αž™αžΎαž„αž–αž·αžαž‡αžΆαž˜αžΆαž“αž‚αž˜αŸ’αžšαŸ„αž„αž”αž€αž”αŸ’αžšαŸ‚αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸ mypy αž–αžΈ Python αž‘αŸ…αž‡αžΆαž—αžΆαžŸαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž…αž“αžΆαž‘αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαžœαžΆαž™αž’αž€αŸ’αžŸαžšαž‡αžΆαžŸαŸ’αžαžΆαž–αžš αžŠαŸ‚αž›αž“αžΉαž„αž˜αžΎαž›αž‘αŸ… (αž αžΎαž™αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž’αŸ’αžœαžΎαž€αžΆαžš) αžŠαžΌαž… Python αžŠαŸ‚αžšαŸ” (αž”αŸ’αžšαž—αŸαž‘αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž…αŸ†αžŽαžΆαž€αžŸαŸ’αžšαž»αž€αž†αŸ’αž›αž„αž—αžΆαžŸαžΆαž“αŸαŸ‡αž”αžΆαž“αž€αŸ’αž›αžΆαž™αž‡αžΆαž”αŸ’αžšαž–αŸƒαžŽαžΈαž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ mypy αŸ” αž€αžΆαžšαž’αž“αž»αžœαžαŸ’αž mypy αžŠαžΎαž˜αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‡αžΆ Alore αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž˜αžΆαž“αž€αžΌαž“αž€αžΆαžαŸ‹αžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒ Java αž“αž·αž„ Python) αŸ”

αž€αžΆαžšαž•αŸ’αžαŸ„αžαž›αžΎ API αž•αŸ’αž“αŸ‚αž€αž”αž“αŸ’αžαŸ‚αž˜ CPython αž‚αžΊαž‡αžΆαž‚αž“αŸ’αž›αžΉαŸ‡αž€αŸ’αž“αž»αž„αž€αžΆαžšαž˜αž·αž“αž”αžΆαžαŸ‹αž”αž„αŸ‹αžŸαž˜αžαŸ’αžαž—αžΆαž–αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž‚αž˜αŸ’αžšαŸ„αž„αŸ” αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž’αž“αž»αžœαžαŸ’αžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž¬αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž› mypy αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ„αŸ‡αž‘αŸαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž™αžΎαž„αž“αŸ…αžαŸ‚αž’αžΆαž…αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž’αŸαž€αžΌ Python αž‘αžΆαŸ†αž„αž˜αžΌαž› αž“αž·αž„αž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ (αžŠαžΌαž…αž‡αžΆ pytest)αŸ” αž“αŸαŸ‡αž˜αžΆαž“αž“αŸαž™αžαžΆ αž™αžΎαž„αž’αžΆαž…αž”αž“αŸ’αžαž”αŸ’αžšαžΎαž€αžΌαžŠ Python αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αžŸαŸ’αžšαžΆαž™αž€αŸ†αž‘αž»αž„αž–αŸαž›αž’αž—αž·αžœαžŒαŸ’αž αžŠαŸ‚αž›αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αž“αŸ’αžαž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‚αŸ†αžšαžΌαžšαž αŸαžŸαž“αŸƒαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αžΌαžŠ αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αžœαžΆ αž‡αžΆαž‡αžΆαž„αžšαž„αŸ‹αž…αžΆαŸ†αž€αžΌαžŠαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αž€αŸ’αžšαž„αŸ” αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž™αžΎαž„αž€αŸ†αž–αž»αž„αž’αŸ’αžœαžΎαž€αžΆαžšαž„αžΆαžšαžŠαŸαž’αžŸαŸ’αž…αžΆαžšαŸ’αž™αž˜αž½αž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž„αŸ’αž‚αž»αž™αž›αžΎαž€αŸ…αž’αžΈαž–αžΈαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž“αž·αž™αžΆαž™ αž αžΎαž™αž™αžΎαž„αž…αžΌαž›αž…αž·αžαŸ’αžαžœαžΆαŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αžŠαŸ‚αž›αž™αžΎαž„αž αŸ…αžαžΆ mypyc (αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαžœαžΆαž”αŸ’αžšαžΎ mypy αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžαžΆαž„αž˜αž»αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžœαž·αž—αžΆαž‚αž”αŸ’αžšαž—αŸαž‘) αž”αžΆαž“αž”αŸ’αžšαŸ‚αž€αŸ’αž›αžΆαž™αž‡αžΆαž‚αž˜αŸ’αžšαŸ„αž„αž‡αŸ„αž‚αž‡αŸαž™αžαŸ’αž›αžΆαŸ†αž„αŸ” αžŸαžšαž»αž”αž˜αž€ αž™αžΎαž„αžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαž αŸ‚αž› 4x αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžšαžαŸ‹ mypy αž‰αžΉαž€αž‰αžΆαž”αŸ‹αžŠαŸ„αž™αž˜αž·αž“αž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαŸ’αž“αžΌαž›αž“αŸƒαž‚αž˜αŸ’αžšαŸ„αž„ mypyc αž”αžΆαž“αž™αž€αž€αŸ’αžšαž»αž˜αžαžΌαž…αž˜αž½αž™αžšαž”αžŸαŸ‹ Michael Sullivan, Ivan Levkivsky, Hugh Hahn αž“αž·αž„αžαŸ’αž›αž½αž“αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαž αŸ‚αž› 4 αžαŸ‚αž”αŸ’αžšαžαž·αž‘αž·αž“αŸ” αž…αŸ†αž“αž½αž“αž€αžΆαžšαž„αžΆαžšαž“αŸαŸ‡αž‚αžΊαžαžΌαž…αž‡αžΆαž„αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžš mypy αž‘αžΎαž„αžœαž·αž‰ αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ C++ ឬ Go αŸ” αž αžΎαž™β€‹αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αžαŸ‚β€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž…αŸ’αžšαžΎαž“β€‹αžαž·αž…β€‹αž‡αžΆαž„β€‹αž€αžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž’αŸ’αžœαžΎβ€‹αž“αŸ…β€‹αž–αŸαž›β€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž’αŸ’αžœαžΎβ€‹αž€αžΆαžšβ€‹αžŸαžšαžŸαŸαžšβ€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž—αžΆαžŸαžΆβ€‹αž•αŸ’αžŸαŸαž„β€‹αž‘αŸ€αžβ€‹αŸ” αž™αžΎαž„αž€αŸαžŸαž„αŸ’αžƒαžΉαž˜αž•αž„αžŠαŸ‚αžšαžαžΆ αž™αžΎαž„αž’αžΆαž…αž“αžΆαŸ†αž™αž€ mypyc αžŠαž›αŸ‹αž€αž˜αŸ’αžšαž·αžαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Dropbox αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αžΆαž…αž”αŸ’αžšαžΎαžœαžΆαžŠαžΎαž˜αŸ’αž”αžΈαž…αž„αž€αŸ’αžšαž„ αž“αž·αž„αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž€αžΌαžŠαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαžŸαž˜αŸ’αžšαŸαž…αž”αžΆαž“αž“αžΌαžœαž€αž˜αŸ’αžšαž·αžαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž’αž“αž»αžœαžαŸ’αžαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αžœαž·αžŸαŸ’αžœαž€αž˜αŸ’αž˜αž‚αž½αžšαž±αŸ’αž™αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž˜αž½αž™αž…αŸ†αž“αž½αž“αŸ” αžŠαžΌαž…αž“αŸαŸ‡ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αž„αž€αŸ’αžšαž„αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαžŸαŸ’αžαžΆαž”αž“αžΆ C αžŠαŸ‚αž›αž˜αžΆαž“αž›αŸ’αž”αžΏαž“αž›αžΏαž“ αž“αž·αž„αž€αž˜αŸ’αžšαž·αžαž‘αžΆαž”αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž…αž„αž€αŸ’αžšαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž€αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžš C αŸ” αž αžΎαž™αž€αžΆαžšαž αŸ…αž”αŸ‚αž”αž“αŸαŸ‡αž‚αžΊαž›αžΏαž“αž‡αžΆαž„αž€αžΆαžšαž αŸ…αž˜αž»αžαž„αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αž”αž€αžŸαŸ’αžšαžΆαž™αŸ” αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αž½αž™αž…αŸ†αž“αž½αž“ αžŠαžΌαž…αž‡αžΆαž€αžΆαžšαžšαž€αž˜αžΎαž›αžœαž…αž“αžΆαž“αž»αž€αŸ’αžšαž˜ αž“αŸ…αžαŸ‚αž–αžΆαž€αŸ‹αž–αŸαž“αŸ’αž’αž“αžΉαž„αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αžΆαžšαž αŸ… C-API αž’αž˜αŸ’αž˜αžαžΆαž–αžΈ CPython αžŠαŸ‚αž›αž›αžΏαž“αž‡αžΆαž„αž”αž“αŸ’αžαž·αž…αž“αŸ…αž–αŸαž›αž…αž„αž€αŸ’αžšαž„αŸ” αž™αžΎαž„αž’αžΆαž…αž›αž»αž”αž”αŸ†αž”αžΆαžαŸ‹αž”αž“αŸ’αž‘αž»αž€αž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αž„αŸ’αž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αž€αžΆαžšαž”αž€αžŸαŸ’αžšαžΆαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž•αž›αž…αŸ†αžŽαŸαž‰αžαž·αž…αžαž½αž…αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž“αŸ…αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš "αž™αžΊαž" αž‘αžΌαž‘αŸ…αž”αŸ†αž•αž»αž αž™αžΎαž„αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαž‘αž˜αŸ’αžšαž„αŸ‹αž€αžΌαžŠαŸ” αž”αŸ’αžšαžŠαžΆαž”αŸ‹αžŠαŸ„αž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž€αŸ‚αž”αŸ’αžšαŸ‚ mypyc αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαž”αž„αŸ’αž€αžΎαžαž€αžΌαžŠ C αž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡ αž¬αžŸαžšαžŸαŸαžšαž€αžΌαžŠ Python αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž‘αžΎαž„αžœαž·αž‰αžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž›αžΏαž“αž‡αžΆαž„αž˜αž»αž“ (αž αžΎαž™αž–αŸαž›αžαŸ’αž›αŸ‡αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž‰αŸ’αž αžΆαž“αŸ„αŸ‡ αž¬αž”αž‰αŸ’αž αžΆαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αŸ) . αž€αžΆαžšαžŸαžšαžŸαŸαžšαž€αžΌαžŠ Python αž‘αžΎαž„αžœαž·αž‰αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹αž‡αžΆαžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž„αž…αŸ†αž–αŸ„αŸ‡αž”αž‰αŸ’αž αžΆαž‡αžΆαž„αž€αžΆαžšαž±αŸ’αž™αž’αŸ’αž“αž€αž…αž„αž€αŸ’αžšαž„αž’αŸ’αžœαžΎαž€αžΆαžšαž”αŸ†αž”αŸ’αž›αŸ‚αž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αžœαŸ‚αž„ αž™αžΎαž„αž…αž„αŸ‹αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž· αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž–αŸαž›αž“αŸ„αŸ‡ αž™αžΎαž„αž”αžΆαž“αž•αŸ’αžαŸ„αžαž›αžΎαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“ mypy αžŠαŸ„αž™αž˜αžΆαž“αž€αžΆαžšαžαž·αžαžαŸ†αž”αŸ’αžšαžΉαž„αž”αŸ’αžšαŸ‚αž„αžαž·αž…αžαž½αž…αž”αŸ†αž•αž»αžαŸ” αž αžΎαž™αž€αŸ’αž“αž»αž„αž€αžΆαžšαž†αŸ’αž–αŸ„αŸ‡αž‘αŸ…αžšαž€αž‚αŸ„αž›αžŠαŸ…αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž€αžΆαžαŸ‹αž‡αŸ’αžšαž»αž„αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ”

αž“αŸ…β€‹αž˜αžΆαž“β€‹αž‡αžΆβ€‹αž”αž“αŸ’αžβ€‹αž‘αŸ€αžβ€¦

αž’αŸ’αž“αž€αž’αžΆαž“αž‡αžΆαž‘αžΈαžŸαŸ’αžšαž‘αžΆαž‰αŸ‹! αžαžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αž…αŸ†αž–αŸ„αŸ‡αž‚αž˜αŸ’αžšαŸ„αž„ mypy αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αžŠαžΉαž„αž–αžΈαž’αžαŸ’αžαž·αž—αžΆαž–αžšαž”αžŸαŸ‹αžœαžΆ?

αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš 4 αž›αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠ Python αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2
αž•αŸ’αž›αžΌαžœαž‘αŸ…αž€αžΆαž“αŸ‹αž€αžΆαžšαžœαžΆαž™αž’αž€αŸ’αžŸαžš 4 αž›αžΆαž“αž”αž“αŸ’αž‘αžΆαžαŸ‹αž“αŸƒαž€αžΌαžŠ Python αŸ” αž•αŸ’αž“αŸ‚αž€αž‘αžΈ 2

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹