ΠΠ΅Π½Π΅ΡΠΊΠ° Π³ΠΎ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΠΌΠ΅ Π²ΡΠΎΡΠΈΠΎΡ Π΄Π΅Π» ΠΎΠ΄ ΠΏΡΠ΅Π²ΠΎΠ΄ΠΎΡ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΡΠ°Π»ΠΎΡ Π·Π° ΡΠΎΠ° ΠΊΠ°ΠΊΠΎ Dropbox ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π» ΠΊΠΎΠ½ΡΡΠΎΠ»Π° Π½Π° ΡΠΈΠΏΠΎΡ Π·Π° Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΌΠΈΠ»ΠΈΠΎΠ½ΠΈ Π»ΠΈΠ½ΠΈΠΈ Python ΠΊΠΎΠ΄.
β
ΠΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΎΡΠΈΡΠΈΡΠ°Π»Π΅Π½ ΡΠΈΠΏ (PEP 484)
ΠΠΈ ΡΠΏΡΠΎΠ²Π΅Π΄ΠΎΠ²ΠΌΠ΅ Π½Π°ΡΠΈΡΠ΅ ΠΏΡΠ²ΠΈ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ ΡΠΎ mypy Π²ΠΎ Dropbox Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° Hack Week 2014 Π³ΠΎΠ΄ΠΈΠ½Π°. Hack Week Π΅ Π΅Π΄Π½ΠΎΠ½Π΅Π΄Π΅Π»Π΅Π½ Π½Π°ΡΡΠ°Π½ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½ ΠΎΠ΄ Dropbox. ΠΠ° ΡΠΎΠ° Π²ΡΠ΅ΠΌΠ΅, Π²ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈΡΠ΅ ΠΌΠΎΠΆΠ°Ρ Π΄Π° ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° ΡΡΠΎ ΡΠ°ΠΊΠ°Π°Ρ! ΠΠ΅ΠΊΠΎΠΈ ΠΎΠ΄ Π½Π°ΡΠΏΠΎΠ·Π½Π°ΡΠΈΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π½Π° Dropbox Π·Π°ΠΏΠΎΡΠ½Π°Π° Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΠ²ΠΈΠ΅. ΠΠ°ΠΊΠΎ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΎΠ²ΠΎΡ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ, Π·Π°ΠΊΠ»ΡΡΠΈΠ²ΠΌΠ΅ Π΄Π΅ΠΊΠ° mypy ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π΅ΡΡΠ²Π°ΡΠΊΠΈ, ΠΈΠ°ΠΊΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΓ¨ ΡΡΡΠ΅ Π½Π΅ Π΅ ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π·Π° ΡΠΈΡΠΎΠΊΠ° ΡΠΏΠΎΡΡΠ΅Π±Π°.
ΠΠΎ ΡΠΎΠ° Π²ΡΠ΅ΠΌΠ΅, ΠΈΠ΄Π΅ΡΠ°ΡΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° Π½Π°Π²Π΅ΡΡΡΠ²Π°ΡΠ΅ ΠΎΠ΄ ΡΠΈΠΏΠΎΡ ΠΠ°ΡΡΠΎΠ½ Π±Π΅ΡΠ΅ Π²ΠΎ Π²ΠΎΠ·Π΄ΡΡ
ΠΎΡ. ΠΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ΠΊΠΎΠ², ΠΎΠ΄ Python 3.0 Π±Π΅ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΡΠΎΠ° Π±Π΅Π° ΡΠ°ΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, Π±Π΅Π· Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π° ΡΠΈΠ½ΡΠ°ΠΊΡΠ° ΠΈ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°, ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π±Π΅Π°, Π²ΠΎ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌ Π΄Π΅Π», Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π½ΠΈ. ΠΠΎ Hack Week, ΠΏΠΎΡΠ½Π°Π²ΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΡΠ°. ΠΠ²Π°Π° ΡΠ°Π±ΠΎΡΠ° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΠΎΡΠ°Π²Π°
ΠΠ°ΡΠΈΡΠ΅ ΠΌΠΎΡΠΈΠ²ΠΈ ΠΌΠΎΠΆΠ΅Π° Π΄Π° ΡΠ΅ Π³Π»Π΅Π΄Π°Π°Ρ ΠΎΠ΄ Π΄Π²Π΅ ΡΡΡΠ°Π½ΠΈ. ΠΡΠ²ΠΎ, ΡΠ΅ Π½Π°Π΄Π΅Π²Π°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ΅Π»ΠΈΠΎΡ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌ Π½Π° ΠΠ°ΡΡΠΎΠ½ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ²ΠΎΠΈ Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΠΏΡΠΈΡΡΠ°ΠΏ Π·Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π½Π°Π²Π΅ΡΡΡΠ²Π°ΡΠ° Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ (ΡΠ΅ΡΠΌΠΈΠ½ ΡΡΠΎ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π²ΠΎ ΠΠ°ΡΡΠΎΠ½ ΠΊΠ°ΠΊΠΎ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ Π½Π° βΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π½Π° ΡΠΈΠΏΠΎΡβ). ΠΠ²Π°, ΡΠΎ ΠΎΠ³Π»Π΅Π΄ Π½Π° ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ ΡΠΈΠ·ΠΈΡΠΈ, Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΎ ΠΎΡΠΊΠΎΠ»ΠΊΡ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΠΌΠ½ΠΎΠ³Ρ ΠΌΠ΅ΡΡΡΠ΅Π±Π½ΠΎ Π½Π΅ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΠΏΡΠΈΡΡΠ°ΠΏΠΈ. ΠΡΠΎΡΠΎ, ΡΠ°ΠΊΠ°Π²ΠΌΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΎ Π΄Π° ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠ°ΠΌΠ΅ Π·Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π½Π° ΡΠΈΠΏΠΎΡ ΡΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»Π΅Π½ΠΎΠ²ΠΈ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ° Π½Π° Python. ΠΠ²Π°Π° ΠΆΠ΅Π»Π±Π° Π±Π΅ΡΠ΅ Π΄Π΅Π»ΡΠΌΠ½ΠΎ Π΄ΠΈΠΊΡΠΈΡΠ°Π½Π° ΠΎΠ΄ ΡΠ°ΠΊΡΠΎΡ Π΄Π΅ΠΊΠ° Π½Π΅ Π±ΠΈ ΡΠ°ΠΊΠ°Π»Π΅ Π΄Π° ΠΈΠ·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠΎ βΠΎΡΠΏΠ°Π΄Π½ΠΈΡΠΈβ ΠΎΠ΄ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡΠ΅ ΠΈΠ΄Π΅ΠΈ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Π²ΠΎ ΠΎΡΠΈΡΠ΅ Π½Π° ΡΠΈΡΠΎΠΊΠΈΡΠ΅ ΠΌΠ°ΡΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π½Π° Python. Π‘ΡΠ°Π½ΡΠ²Π° Π·Π±ΠΎΡ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ ΡΠ°Π·ΠΈΠΊ, ΠΏΠΎΠ·Π½Π°Ρ ΠΊΠ°ΠΊΠΎ βΠ΄ΡΠΊ typingβ. ΠΠΎ Π·Π°Π΅Π΄Π½ΠΈΡΠ°ΡΠ°, Π½Π° ΡΠ°ΠΌΠΈΠΎΡ ΠΏΠΎΡΠ΅ΡΠΎΠΊ, Π½Π΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ ΠΏΠΎΡΠ°Π²ΠΈ ΠΌΠ°Π»ΠΊΡ ΡΠΎΠΌΠ½ΠΈΡΠ΅Π»Π΅Π½ ΡΡΠ°Π² ΠΊΠΎΠ½ ΠΈΠ΄Π΅ΡΠ°ΡΠ° Π·Π° ΡΡΠ°ΡΠΈΡΠΊΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅. ΠΠΎ, ΡΠΎΠ° ΡΡΠ²ΡΡΠ²ΠΎ Π½Π° ΠΊΡΠ°ΡΠΎΡ ΠΈΡΡΠ΅Π·Π½Π° ΠΎΡΠΊΠ°ΠΊΠΎ ΡΡΠ°Π½Π° ΡΠ°ΡΠ½ΠΎ Π΄Π΅ΠΊΠ° ΡΡΠ°ΡΠΈΡΠΊΠΎΡΠΎ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ Π½Π΅ΠΌΠ° Π΄Π° Π±ΠΈΠ΄Π΅ Π·Π°Π΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ (ΠΈ ΠΎΡΠΊΠ°ΠΊΠΎ Π»ΡΡΠ΅ΡΠΎ ΡΡΠ°ΡΠΈΡΠ° Π΄Π΅ΠΊΠ° ΡΠΎΠ° Π΅ Π²ΡΡΡΠ½ΠΎΡΡ ΠΊΠΎΡΠΈΡΠ½ΠΎ).
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΡ Π½Π°Π²Π΅ΡΡΡΠ²Π°ΡΠ΅ ΡΡΠΎ Π½Π° ΠΊΡΠ°ΡΠΎΡ Π±Π΅ΡΠ΅ ΡΡΠ²ΠΎΠ΅Π½Π° Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΡΠ»ΠΈΡΠ½Π° Π½Π° ΠΎΠ½Π° ΡΡΠΎ mypy Π³ΠΎ ΠΏΠΎΠ΄Π΄ΡΠΆΡΠ²Π°ΡΠ΅ Π²ΠΎ ΡΠΎΠ° Π²ΡΠ΅ΠΌΠ΅. PEP 484 Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ°Π²Π΅Π½ ΡΠΎ Python 3.5 Π²ΠΎ 2015 Π³ΠΎΠ΄ΠΈΠ½Π°. ΠΠ°ΡΡΠΎΠ½ ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ Π±Π΅ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΏΠΈΡΡΠ²Π°Π½ ΡΠ°Π·ΠΈΠΊ. Π‘Π°ΠΊΠ°ΠΌ Π΄Π° ΠΌΠΈΡΠ»Π°ΠΌ Π½Π° ΠΎΠ²ΠΎΡ Π½Π°ΡΡΠ°Π½ ΠΊΠ°ΠΊΠΎ Π·Π½Π°ΡΠ°ΡΠ½Π° ΠΏΡΠ΅ΡΠ²ΡΡΠ½ΠΈΡΠ° Π²ΠΎ ΠΈΡΡΠΎΡΠΈΡΠ°ΡΠ° Π½Π° ΠΠ°ΡΡΠΎΠ½.
ΠΠΎΡΠ΅ΡΠΎΠΊ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ°ΡΠ°
ΠΠ° ΠΊΡΠ°ΡΠΎΡ Π½Π° 2015 Π³ΠΎΠ΄ΠΈΠ½Π°, Dropbox ΡΠΎΠ·Π΄Π°Π΄Π΅ ΡΠΈΠΌ ΠΎΠ΄ ΡΡΠΈ Π»ΠΈΡΠ° ΠΊΠΎΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π° mypy. ΠΠ΅ΡΡ Π½ΠΈΠ² Π±Π΅Π° ΠΠ²ΠΈΠ΄ΠΎ Π²Π°Π½ Π ΠΎΡΡΠΌ, ΠΡΠ΅Π³ ΠΡΠ°ΡΡ ΠΈ ΠΠ΅ΡΠ²ΠΈΠ΄ Π€ΠΈΡΠ΅Ρ. ΠΠ΄ ΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ° ΠΏΠΎΡΠ½Π° Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π° ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π±ΡΠ·ΠΎ. ΠΡΠ²Π°ΡΠ° ΠΏΡΠ΅ΡΠΊΠ° Π·Π° ΡΠ°ΡΡΠΎΡ Π½Π° mypy Π±Π΅Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅. ΠΠ°ΠΊΠΎ ΡΡΠΎ Π½Π°Π²Π΅ΡΡΠΈΠ² ΠΏΠΎΠ³ΠΎΡΠ΅, Π²ΠΎ ΡΠ°Π½ΠΈΡΠ΅ Π΄Π΅Π½ΠΎΠ²ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΡΠ°Π·ΠΌΠΈΡΠ»ΡΠ²Π°Π² Π΄Π° ΡΠ° ΠΏΡΠ΅Π²Π΅Π΄Π°ΠΌ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° mypy Π½Π° C, Π½ΠΎ ΠΎΠ²Π°Π° ΠΈΠ΄Π΅ΡΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΡΠΊΡΡΠ°Π½Π° ΠΎΠ΄ ΡΠΏΠΈΡΠΎΠΊΠΎΡ Π·Π°ΡΠ΅Π³Π°. ΠΠ΅Π²ΠΌΠ΅ Π·Π°Π³Π»Π°Π²Π΅Π½ΠΈ ΡΠΎ Π²ΠΎΠ΄Π΅ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°ΡΠΎΡ CPython, ΠΊΠΎΡ Π½Π΅ Π΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π±ΡΠ· Π·Π° Π°Π»Π°ΡΠΊΠΈ ΠΊΠ°ΠΊΠΎ mypy. (ΠΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° Π½ΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ PyPy, Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Python ΡΠΎ JIT ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ.)
ΠΠ° ΡΡΠ΅ΡΠ°, Π½Π΅ΠΊΠΎΠΈ Π°Π»Π³ΠΎΡΠΈΡΠ°ΠΌΡΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° Π½ΠΈ Π΄ΠΎΡΠ΄ΠΎΠ° Π½Π° ΠΏΠΎΠΌΠΎΡ ΠΎΠ²Π΄Π΅. ΠΡΠ²ΠΈΠΎΡ ΠΌΠΎΡΠ΅Π½ βΠ·Π°Π±ΡΠ·ΡΠ²Π°Ρβ Π±Π΅ΡΠ΅ ΡΠΏΡΠΎΠ²Π΅Π΄ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΎΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅. ΠΠ΄Π΅ΡΠ°ΡΠ° Π·Π°Π΄ ΠΎΠ²Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ΅ Π±Π΅ΡΠ΅ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π°: Π°ΠΊΠΎ ΡΠΈΡΠ΅ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠΈ ΠΎΠ΄ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° mypy, ΡΠΎΠ³Π°Ρ ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈΡΠ΅ Π·Π°ΡΡΠ²Π°Π½ΠΈ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π΄ΠΎΠ΄Π΅ΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ. Π’ΡΠ΅Π±Π°ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΠΌΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅ΡΠΈΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ ΠΈ Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΡΡΠΎ Π·Π°Π²ΠΈΡΠ°Ρ ΠΎΠ΄ Π½ΠΈΠ². Mypy Π΄ΡΡΠΈ ΠΎΡΠΈΠ΄Π΅ ΠΌΠ°Π»ΠΊΡ ΠΏΠΎΠ΄Π°Π»Π΅ΠΊΡ: Π°ΠΊΠΎ Π½Π°Π΄Π²ΠΎΡΠ΅ΡΠ½ΠΈΠΎΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΎΡ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, mypy ΠΏΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΡΠ²Π° Π΄Π΅ΠΊΠ° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΡΡΠΎ Π³ΠΎ ΡΠ²Π΅Π·ΠΎΠ° ΠΎΠ²ΠΎΡ ΠΌΠΎΠ΄ΡΠ» Π½Π΅ ΡΡΠ΅Π±Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Π°Ρ.
ΠΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅ Π½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΌΠ½ΠΎΠ³Ρ ΠΊΠΎΠ³Π° Π·Π°Π±Π΅Π»Π΅ΠΆΡΠ²Π°ΠΌΠ΅ Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΊΠΎΠ»ΠΈΡΠΈΠ½ΠΈ Π½Π° ΠΏΠΎΡΡΠΎΠ΅ΡΠΊΠΈ ΠΊΠΎΠ΄. ΠΠΎΠ΅Π½ΡΠ°ΡΠ° Π΅ Π²ΠΎ ΡΠΎΠ° ΡΡΠΎ ΠΎΠ²ΠΎΡ ΠΏΡΠΎΡΠ΅Ρ ΠΎΠ±ΠΈΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΡΠ²Π° ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ²ΡΠΎΡΠ»ΠΈΠ²ΠΈ ΡΠ°Π±ΠΎΡΠΈ Π½Π° mypy Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΎ ΡΠ΅ Π΄ΠΎΠ΄Π°Π²Π°Π°Ρ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π°Ρ. ΠΡΠ²Π°ΡΠ° ΡΠ΅ΡΠΈΡΠ° Π½Π° mypy ΡΓ¨ ΡΡΡΠ΅ Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π±Π°Π²Π½Π° Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΈΠΌΠ°ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°. ΠΠΎΡΠΎΠ°, Π·Π° Π΄Π° ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈΠΌΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡΠ°ΡΠ°, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π²ΠΌΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ Π·Π° Π΄Π°Π»Π΅ΡΠΈΠ½ΡΠΊΠΎ ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅. ΠΠΊΠΎ mypy ΠΎΡΠΊΡΠΈΠ΅ Π΄Π΅ΠΊΠ° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΠΊΠ΅Ρ Π΅ Π²Π΅ΡΠΎΡΠ°ΡΠ½ΠΎ Π·Π°ΡΡΠ°ΡΠ΅Π½Π°, ΡΠ° ΠΏΡΠ΅Π·Π΅ΠΌΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ°Π»Π½Π°ΡΠ° ΡΠ»ΠΈΠΊΠ° ΠΎΠ΄ ΠΊΠ΅ΡΠΎΡ Π·Π° ΡΠ΅Π»Π°ΡΠ° Π±Π°Π·Π° Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΈ ΠΎΠ΄ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎΡΠΎ ΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅. ΠΠΎΡΠΎΠ° Π²ΡΡΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΡΠ° ΠΎΠ²Π°Π° ΡΠ»ΠΈΠΊΠ°. ΠΠ²Π° Π½ΠΈ Π΄ΠΎΠ½Π΅ΡΠ΅ ΡΡΡΠ΅ Π΅Π΄Π΅Π½ Π³ΠΎΠ»Π΅ΠΌ ΡΠ΅ΠΊΠΎΡ ΠΊΠΎΠ½ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° mypy.
ΠΠ²Π° Π±Π΅ΡΠ΅ ΠΏΠ΅ΡΠΈΠΎΠ΄ Π½Π° Π±ΡΠ·ΠΎ ΠΈ ΠΏΡΠΈΡΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΡΠ°ΡΠ°ΡΠ΅ Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ Π²ΠΎ Dropbox. ΠΠΎ ΠΊΡΠ°ΡΠΎΡ Π½Π° 2016 Π³ΠΎΠ΄ΠΈΠ½Π°, Π²Π΅ΡΠ΅ ΠΈΠΌΠ°Π²ΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 420000 Π»ΠΈΠ½ΠΈΠΈ Python ΠΊΠΎΠ΄ ΡΠΎ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ. ΠΠ½ΠΎΠ³Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΈ Π±Π΅Π° Π΅Π½ΡΡΠ·ΠΈΡΠ°ΡΡΠΈ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ. Π‘Γ¨ ΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ°Π·Π²ΠΎΡΠ½ΠΈ ΡΠΈΠΌΠΎΠ²ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅Π° 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 (Π½Π°ΠΏΠΈΡΠ°Π½Π° Π²ΠΎ Python) Π²Π΅ΡΠ΅ Π³ΠΈ ΡΠΎΠ΄ΡΠΆΠΈ ΡΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° ΡΠΈΠΏΠΎΡ, ΡΠΌΠ΅ΡΠ°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° Π±ΠΈ Π±ΠΈΠ»ΠΎ Π²ΡΠ΅Π΄Π½ΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±ΠΈΠ΄Π΅ΠΌΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈ Π·Π° Π΄Π° Π³ΠΎ Π·Π°Π±ΡΠ·Π°ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠΎΡ. ΠΡΠ·ΠΎ ΡΠΎΠ·Π΄Π°Π΄ΠΎΠ² ΠΏΡΠΎΡΠΎΡΠΈΠΏ Π·Π° Π΄Π° ΡΠ° ΡΠ΅ΡΡΠΈΡΠ°ΠΌ ΠΎΠ²Π°Π° ΠΈΠ΄Π΅ΡΠ°. ΠΠΎΠΊΠ°ΠΆΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΠ΄ 10-ΠΊΡΠ°ΡΠ½ΠΎ Π·Π³ΠΎΠ»Π΅ΠΌΡΠ²Π°ΡΠ΅ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠΈΠΊΡΠΎ-Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΎΠ²ΠΈ. ΠΠ°ΡΠ°ΡΠ° ΠΈΠ΄Π΅ΡΠ° Π±Π΅ΡΠ΅ Π΄Π° Π³ΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΠΌΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈΡΠ΅ Π½Π° Python Π²ΠΎ ΠΌΠΎΠ΄ΡΠ»ΠΈ C ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Cython ΠΈ Π΄Π° Π³ΠΈ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΠΌΠ΅ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΠ²ΠΈ Π²ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΈΠΏΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ (ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΡΠΈΠ±Π΅Π»Π΅ΡΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΡ ΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°Π°Ρ ΠΏΡΠΈ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ ΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΎΠ΄ ΡΠΈΡΡΠ΅ΠΌΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΡ ). ΠΠΈΠ΅, Π²ΡΡΡΠ½ΠΎΡΡ, ΠΏΠ»Π°Π½ΠΈΡΠ°Π²ΠΌΠ΅ Π΄Π° ΡΠ° ΠΏΡΠ΅Π²Π΅Π΄Π΅ΠΌΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°ΡΠ° mypy ΠΎΠ΄ Python Π½Π° ΡΠ°Π·ΠΈΠΊ ΠΊΠΎΡ Π΅ Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ Π΄Π° Π±ΠΈΠ΄Π΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΠΈΡΡΠ²Π°Π½, ΠΊΠΎΡ ΡΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π° (ΠΈ, Π²ΠΎ Π½Π°ΡΠ³ΠΎΠ»Π΅ΠΌ Π΄Π΅Π», ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ°) ΡΠΎΡΠ½ΠΎ ΠΊΠ°ΠΊΠΎ Python. (ΠΠ²ΠΎΡ Π²ΠΈΠ΄ Π½Π° ΠΌΠ΅ΡΡΡΠ°Π·ΠΈΡΠ½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΠ° ΡΡΠ°Π½Π° Π½Π΅ΡΡΠΎ ΠΊΠ°ΠΊΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΡΠ° Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ mypy. ΠΡΠΈΠ³ΠΈΠ½Π°Π»Π½Π°ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° mypy Π±Π΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π° Π²ΠΎ Alore, Π° ΠΏΠΎΡΠΎΠ° ΠΈΠΌΠ°ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΊΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄ Π½Π° Java ΠΈ Python).
Π€ΠΎΠΊΡΡΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° API Π½Π° Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ°ΡΠ° CPython Π±Π΅ΡΠ΅ ΠΊΠ»ΡΡΠ½ΠΎ Π·Π° Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·Π³ΡΠ±Π°Ρ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈΡΠ΅ Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈ. ΠΠ΅ Π½ΠΈ ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΈΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠΎ Π½ΠΈ Π±Π΅Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ Π½Π° mypy. ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ, ΡΓ¨ ΡΡΡΠ΅ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΡΠΈΡΡΠ°ΠΏ Π΄ΠΎ ΡΠ΅Π»ΠΈΠΎΡ Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌ Π½Π° Python ΠΈ ΡΠΈΡΠ΅ Π°Π»Π°ΡΠΊΠΈ (ΠΊΠ°ΠΊΠΎ ΡΡΠΎ Π΅ pytest). ΠΠ²Π° Π·Π½Π°ΡΠ΅ΡΠ΅ Π΄Π΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌΠ΅ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠΈΠΌΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈΠΎΡ Python ΠΊΠΎΠ΄ Π·Π° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π°ΡΡΠΈ Π½ΠΈ Π΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎ ΠΌΠ½ΠΎΠ³Ρ Π±ΡΠ·Π° ΡΠ΅ΠΌΠ° Π½Π° ΠΏΡΠ°Π²Π΅ΡΠ΅ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΎ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ΅, Π½Π°ΠΌΠ΅ΡΡΠΎ Π΄Π° ΡΠ΅ΠΊΠ°ΠΌΠ΅ ΠΊΠΎΠ΄ΠΎΡ Π΄Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°. ΠΠ·Π³Π»Π΅Π΄Π°ΡΠ΅ ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΎΠ΄Π»ΠΈΡΠ½Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅Π΄Π΅ΡΡΠΈ Π½Π° Π΄Π²Π΅ ΡΡΠΎΠ»ΡΠΈΡΠ°, ΡΠ°ΠΊΠ° Π΄Π° ΡΠ΅ ΠΊΠ°ΠΆΠ΅, ΠΈ Π½ΠΈ ΡΠ΅ Π΄ΠΎΠΏΠ°Π΄Π½Π°.
ΠΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ, ΠΊΠΎΡ Π³ΠΎ Π½Π°ΡΠ΅ΠΊΠΎΠ²ΠΌΠ΅ mypyc (Π±ΠΈΠ΄Π΅ΡΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈ mypy ΠΊΠ°ΠΊΠΎ ΠΏΡΠ΅Π΄Π΅Π½ Π΄Π΅Π» Π·Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ), ΡΠ΅ ΠΏΠΎΠΊΠ°ΠΆΠ° ΠΊΠ°ΠΊΠΎ ΠΌΠ½ΠΎΠ³Ρ ΡΡΠΏΠ΅ΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ. Π‘Π΅Π²ΠΊΡΠΏΠ½ΠΎ, ΠΏΠΎΡΡΠΈΠ³Π½Π°Π²ΠΌΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 4x Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ Π·Π° ΡΠ΅ΡΡΠΈ Π±Π΅Π³ΡΡΠ²Π° Π½Π° mypy Π±Π΅Π· ΠΊΠ΅ΡΠΈΡΠ°ΡΠ΅. ΠΠ° ΡΠ°Π·Π²ΠΎΡ Π½Π° ΡΠ°Π΄ΡΠΎΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ mypyc Π½Π° ΠΌΠ°Π» ΡΠΈΠΌ ΠΎΠ΄ ΠΠ°ΡΠΊΠ» Π‘Π°Π»ΠΈΠ²Π°Π½, ΠΠ²Π°Π½ ΠΠ΅Π²ΠΊΠΈΠ²ΡΠΊΠΈ, Π₯ΡΡ Π₯Π°Π½ ΠΈ ΡΠ°Ρ ΠΌΡ Π±Π΅Π° ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ ΠΎΠΊΠΎΠ»Ρ 4 ΠΊΠ°Π»Π΅Π½Π΄Π°ΡΡΠΊΠΈ ΠΌΠ΅ΡΠ΅ΡΠΈ. ΠΠ²ΠΎΡ ΠΎΠ±Π΅ΠΌ Π½Π° ΡΠ°Π±ΠΎΡΠ° Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΌΠ°Π» ΠΎΠ΄ ΠΎΠ½Π° ΡΡΠΎ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π·Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΏΠΈΡΠ΅ mypy, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎ C++ ΠΈΠ»ΠΈ Go. Π ΠΌΠΎΡΠ°Π²ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠΌΠ°Π»ΠΊΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π²ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ ΠΎΡΠΊΠΎΠ»ΠΊΡ ΡΡΠΎ ΡΠ΅ ΡΡΠ΅Π±Π°ΡΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠ΅ ΠΊΠΎΠ³Π° Π³ΠΎ ΠΏΡΠ΅ΠΏΠΈΡΡΠ²Π°Π²ΠΌΠ΅ Π½Π° Π΄ΡΡΠ³ ΡΠ°Π·ΠΈΠΊ. ΠΡΡΠΎ ΡΠ°ΠΊΠ°, ΡΠ΅ Π½Π°Π΄Π΅Π²Π°Π²ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΡΠ΅ Π³ΠΎ Π΄ΠΎΠ²Π΅Π΄Π΅ΠΌΠ΅ mypyc Π½Π° ΡΠ°ΠΊΠ²ΠΎ Π½ΠΈΠ²ΠΎ ΡΡΠΎ Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ Π½Π° Dropbox Π±ΠΈ ΠΌΠΎΠΆΠ΅Π»Π΅ Π΄Π° Π³ΠΎ ΠΊΠΎΡΠΈΡΡΠ°Ρ Π·Π° Π΄Π° Π³ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ ΠΈ Π·Π°Π±ΡΠ·Π°Π°Ρ Π½ΠΈΠ²Π½ΠΈΠΎΡ ΠΊΠΎΠ΄.
ΠΠ° Π΄Π° Π³ΠΎ ΠΏΠΎΡΡΠΈΠ³Π½Π΅ΠΌΠ΅ ΠΎΠ²Π° Π½ΠΈΠ²ΠΎ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ, ΠΌΠΎΡΠ°Π²ΠΌΠ΅ Π΄Π° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡΠΊΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ°. Π’Π°ΠΊΠ°, ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π·Π°Π±ΡΠ·Π° ΠΌΠ½ΠΎΠ³Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° Π±ΡΠ·ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½Π° Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ C. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π½ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π° Π²ΠΎ ΠΏΠΎΠ²ΠΈΠΊ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° C. Π ΡΠ°ΠΊΠΎΠ² ΠΏΠΎΠ²ΠΈΠΊ Π΅ ΠΌΠ½ΠΎΠ³Ρ ΠΏΠΎΠ±ΡΠ· ΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΏΠΎΠ²ΠΈΠΊΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠ°Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ°. ΠΠ΅ΠΊΠΎΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊΠΎ ΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅Π±Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠ΅ΡΠ½ΠΈΠΊ, ΡΓ¨ ΡΡΡΠ΅ Π²ΠΊΠ»ΡΡΡΠ²Π°Π° ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ΅ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ²ΠΈΡΠΈ C-API ΠΎΠ΄ CPython, ΠΊΠΎΠΈ Π±Π΅Π° ΡΠ°ΠΌΠΎ ΠΌΠ°ΡΠ³ΠΈΠ½Π°Π»Π½ΠΎ ΠΏΠΎΠ±ΡΠ·ΠΈ ΠΊΠΎΠ³Π° ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ. Π£ΡΠΏΠ΅Π°Π²ΠΌΠ΅ Π΄Π° Π³ΠΎ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡΠ°ΠΌΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΎΡ ΡΠΎΠ·Π΄Π°Π΄Π΅Π½ΠΎ ΡΠΎ ΡΠΎΠ»ΠΊΡΠ²Π°ΡΠ΅, Π½ΠΎ ΠΎΠ²Π° Π²ΠΎ ΠΎΠ²ΠΎΡ ΡΠ»ΡΡΠ°Ρ Π΄Π°Π΄Π΅ ΡΠ°ΠΌΠΎ ΠΌΠ°Π»Π° Π΄ΠΎΠ±ΠΈΠ²ΠΊΠ° Π²ΠΎ ΠΎΠ΄Π½ΠΎΡ Π½Π° ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈΡΠ΅.
ΠΠ° Π΄Π° Π³ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΡΠ²Π°ΠΌΠ΅ Π½Π°ΡΡΠ΅ΡΡΠΈΡΠ΅ βΠ±Π°Π²Π½ΠΈβ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΠ·Π²ΡΡΠΈΠ²ΠΌΠ΅ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄. ΠΠΎΠΎΡΡΠΆΠ΅Π½ΠΈ ΡΠΎ ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ, ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΠΎΠ²ΠΌΠ΅ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠΈΠ»Π°Π³ΠΎΠ΄ΠΈΠΌΠ΅ mypyc Π·Π° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΏΠΎΠ±ΡΠ· C ΠΊΠΎΠ΄ Π·Π° ΡΠ°ΠΊΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ Π΄Π° Π³ΠΎ ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠΌΠ΅ ΡΠΎΠΎΠ΄Π²Π΅ΡΠ½ΠΈΠΎΡ Python-ΠΊΠΎΠ΄ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ ΠΏΠΎΠ±ΡΠ·ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (Π° ΠΏΠΎΠ½Π΅ΠΊΠΎΠ³Π°Ρ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π½Π΅ΠΌΠ°Π²ΠΌΠ΅ Π΄ΠΎΠ²ΠΎΠ»Π½ΠΎ Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΠΎΡ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌ) . ΠΡΠ΅ΠΏΠΈΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π½Π° ΠΠ°ΡΡΠΎΠ½ ΡΠ΅ΡΡΠΎ Π±Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΡ ΠΎΡΠΊΠΎΠ»ΠΊΡ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ Π΄Π° ΡΠ° ΠΈΠ·Π²ΡΡΠΈ ΠΈΡΡΠ°ΡΠ° ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΡΠ°. ΠΠ° Π΄ΠΎΠ»Π³ ΡΠΎΠΊ, ΡΠ°ΠΊΠ°Π²ΠΌΠ΅ Π΄Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ½ΠΎΠ³Ρ ΠΎΠ΄ ΠΎΠ²ΠΈΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠ°ΡΠΈΠΈ, Π½ΠΎ Π²ΠΎ ΡΠΎΠ° Π²ΡΠ΅ΠΌΠ΅ Π±Π΅Π²ΠΌΠ΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ΠΈ Π½Π° Π·Π°Π±ΡΠ·ΡΠ²Π°ΡΠ΅ Π½Π° mypy ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½Π°ΠΏΠΎΡ. Π ΠΏΡΠΈ Π΄Π²ΠΈΠΆΠ΅ΡΠ΅ΡΠΎ ΠΊΠΎΠ½ ΠΎΠ²Π°Π° ΡΠ΅Π», ΠΏΡΠ΅ΡΠ΅ΠΊΠΎΠ²ΠΌΠ΅ Π½Π΅ΠΊΠΎΠ»ΠΊΡ Π°Π³Π»ΠΈ.
ΠΠ° ΡΠ΅ ββΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈ ...
ΠΠΎΡΠΈΡΡΠ²Π°Π½ΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ°ΠΊΠ²ΠΈ Π±Π΅Π° Π²Π°ΡΠΈΡΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠΎΡ mypy ΠΊΠΎΠ³Π° Π΄ΠΎΠ·Π½Π°Π²ΡΠ΅ Π·Π° Π½Π΅Π³ΠΎΠ²ΠΎΡΠΎ ΠΏΠΎΡΡΠΎΠ΅ΡΠ΅?
ΠΠ·Π²ΠΎΡ: www.habr.com