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