ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΡΡΠ΅ΡΡΡ ΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΎ ΠΏΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΡΠ»Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ Dropbox, Π²Π½Π΅Π΄ΡΡΡ Ρ ΡΠ΅Π±Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Python-ΠΊΠΎΠ΄Π°.
β ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ:
ΠΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΠΊ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΡΡ ΠΎΠ΄Π½ΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ (ΡΡΠΎ Π±ΡΠ» Π²ΡΠΎΡΠ°Ρ ΠΏΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π²ΠΎΠ»Π½ΠΎΠ²Π°Π²ΡΠ°Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΡΠ°ΡΡΠ²ΠΎΠ²Π°Π» Π²ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΡ ΠΎΠΏΡΠΎΡΠ°Ρ ) Π±ΡΠ»ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΡΠΌΠ° ΠΊΠΎΠ΄Π° Π² Dropbox, ΠΏΠΎΠΊΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠΎΠ². ΠΡ ΠΈΡΠΏΡΠΎΠ±ΠΎΠ²Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ β ΠΎΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΠΎΠ±ΡΡΠΌΠ° ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Π΄ΠΎ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΠ»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ mypy Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΈΠΏΠΎΠ². Π ΠΈΡΠΎΠ³Π΅ ΡΠΎΠ·Π΄Π°Π»ΠΎΡΡ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΡ Π½Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π²ΡΠΈΠ³ΡΡΡΠ½ΠΎΠΉ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΈ, Π½ΠΎ ΠΌΡ ΡΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΡΡΠΈΡΡ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΡΡΠ° ΠΎΠ±ΡΡΠΌΠ° Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ².
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ°ΠΌΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌ Python-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ (Ρ Π±ΡΠΊΠ΅Π½Π΄-ΠΊΠΎΠ΄ΠΎΠΌ) ΡΠΈΡΠ»ΠΎ ΡΡΡΠΎΠΊ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π΄ΠΎΡΡΠΈΠ³Π»ΠΎ ΠΏΠΎΡΡΠΈ 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ². Π Π°Π±ΠΎΡΠ° ΠΏΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π±ΡΠ»Π° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ Π·Π° ΡΡΠΈ Π³ΠΎΠ΄Π°. Mypy ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²ΠΈΠ΄Ρ ΠΎΡΡΡΡΠΎΠ² ΠΎ ΠΏΠΎΠΊΡΡΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΡΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠΎΡΠ°ΡΡ Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° Ρ
ΠΎΠ΄ΠΎΠΌ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΡ ΠΏΠΎ ΠΊΠΎΠ΄Ρ Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΡΡΡΠΌΠΈ Π² ΡΠΈΠΏΠ°Ρ
, Ρ ΡΠ°ΠΊΠΈΠΌΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠ°ΠΊ ΡΠ²Π½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΏΠ° Any
Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΠΈΠ»ΠΈ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² ΠΊΠΎΡΠΎΡΡΡ
Π½Π΅Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ². ΠΡ, Π² ΡΠ°ΠΌΠΊΠ°Ρ
ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π² Dropbox, Π²Π½Π΅ΡΠ»ΠΈ Π²ΠΊΠ»Π°Π΄ Π² ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΡΠΈΠΏΠΎΠ² (ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ
stub-ΡΠ°ΠΉΠ»ΠΎΠ²) Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
ΠΎΠΏΠ΅Π½ΡΠΎΡΡΠ½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π² ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Python-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ
ΠΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ (ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΈ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ
PEP) Π½ΠΎΠ²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΡΠ½ΡΠ΅ ΡΠΈΠΏΡ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ
Python-ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ². ΠΠ°ΠΌΠ΅ΡΠ½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ TypeDict
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠΏΡ Π΄Π»Ρ JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ
ΡΠ»ΠΎΠ²Π°ΡΠ΅ΠΉ, ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ
ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠΌΠ΅Π΅Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏΠΎΠ². ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, Π½Π°ΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΡΠ°Π³ΠΎΠΌ ΡΡΠ°Π½Π΅Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Python ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΠΈΡΠ»Π°ΠΌΠΈ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: ΡΠ΅ΡΠ²Π΅Ρ
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: ΠΊΠ»ΠΈΠ΅Π½Ρ
ΠΠ±ΡΠ΅Π΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠΎΠΊ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΠΎΡ ΠΎΠ±Π·ΠΎΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ ΡΠ°Π΄ΠΈ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΡΠΌΠ° Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² Dropbox:
Π‘ΡΡΠΎΠ³ΠΎΡΡΡ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΠΎΠ²ΡΡΠ°Π»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎ ΡΡΡΠΎΠ³ΠΎΡΡΠΈ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡ Π½Π°ΡΠ°Π»ΠΈ Ρ ΡΠΎΠ²Π΅ΡΠΎΠ² Π»ΠΈΠ½ΡΠ΅ΡΠ°, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ Π² ΡΠ°ΠΉΠ»Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΆΠ΅ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΡΡΠ΅Π±ΡΠ΅ΠΌ Π½Π°Π»ΠΈΡΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π² Π½ΠΎΠ²ΡΡ Python-ΡΠ°ΠΉΠ»Π°Ρ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ².
ΠΡΡΡΡΡ ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ. ΠΡ Π΅ΠΆΠ΅Π½Π΅Π΄Π΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠ»Π°Π΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΎΡΡΡΡΡ ΠΎΠ± ΡΡΠΎΠ²Π½Π΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ Π΄Π°ΡΠΌ ΡΠΎΠ²Π΅ΡΡ, ΠΊΠ°ΡΠ°ΡΡΠΈΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎΠΈΡ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ.
ΠΠΎΠΏΡΠ»ΡΡΠΈΠ·Π°ΡΠΈΡ mypy. ΠΡ ΡΠ°ΡΡΠΊΠ°Π·ΡΠ²Π°Π΅ΠΌ ΠΎ mypy Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΌΠ΅ΡΠΎΠΏΡΠΈΡΡΠΈΡΡ ΠΈ ΠΎΠ±ΡΠ°Π΅ΠΌΡΡ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ, ΠΏΠΎΠΌΠΎΠ³Π°Ρ ΠΈΠΌ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΈΠΏΠΎΠ².
ΠΠΏΡΠΎΡΡ. ΠΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π³Π»Π°Π²Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡ Π³ΠΎΡΠΎΠ²Ρ Π·Π°ΠΉΡΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π² Π΄Π΅Π»Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ (Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° ΡΠ°Π΄ΠΈ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ mypy!).
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ. ΠΡ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ»ΡΡΡΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ mypy Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π΅ΠΌΠΎΠ½Π° ΠΈ mypyc. Π‘Π΄Π΅Π»Π°Π½ΠΎ ΡΡΠΎ ΡΠ°Π΄ΠΈ ΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ², Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ ΡΠ°Π΄ΠΈ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΎΠ±ΡΡΠΌΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°ΠΌΠΈ. ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π·Π°ΠΏΡΡΠΊΠ° mypy Π² ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ°Ρ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡΡ Π² Dropbox. Π‘ΡΠ΄Π° Π²Ρ ΠΎΠ΄ΡΡ PyCharm, Vim ΠΈ VS Code. ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΠ»ΠΎ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡ ΠΏΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ. ΠΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ±ΡΡΠ½ΠΎ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½Ρ ΠΏΡΠΈ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°.
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·. ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΈΠ³Π½Π°ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π΄ΡΡΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°. ΠΡΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΡΠ°ΡΠΈΡΡ , Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠΌΠΎΠ³ Π½Π°ΠΌ Π±Π΅Π· ΠΎΡΠΎΠ±ΡΡ ΡΡΠΈΠ»ΠΈΠΉ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π° ΡΠΈΠΏΠ°ΠΌΠΈ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
Π½Π°ΡΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² SQLAlchemy. Π Π½ΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Python, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠΏΡ PEP 484 Π½Π΅ΡΠΏΠΎΡΠΎΠ±Π½Ρ ΡΠΌΠΎΠ΄Π΅Π»ΠΈΡΠΎΠ²Π°ΡΡ Π½Π°ΠΏΡΡΠΌΡΡ. ΠΡ, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ PEP 561, ΡΠΎΠ·Π΄Π°Π»ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ stub-ΡΠ°ΠΉΠ» ΠΈ Π½Π°ΠΏΠΈΡΠ°Π»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Π΄Π»Ρ mypy (
Π‘Π»ΠΎΠΆΠ½ΠΎΡΡΠΈ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈΡΡ
ΠΡΡΡ ΠΊ 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌ ΡΡΡΠΎΠΊ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π΄Π°Π²Π°Π»ΡΡ Π½Π°ΠΌ Π»Π΅Π³ΠΊΠΎ. ΠΠ° ΡΡΠΎΠΌ ΠΏΡΡΠΈ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠ»ΠΈ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΠΌ ΠΈ ΡΠ΄Π΅Π»Π°Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ. ΠΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΡ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΠΈΡΡ. ΠΠ°Π΄Π΅Π΅ΠΌΡΡ, ΡΠ°ΡΡΠΊΠ°Π· ΠΎ Π½ΠΈΡ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π΄ΡΡΠ³ΠΈΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ.
ΠΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. ΠΡ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π»ΠΈΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° ΡΠ°ΠΉΠ»ΠΎΠ². ΠΡΡ, Π½Π΅ Π²Ρ
ΠΎΠ΄ΡΡΠ΅Π΅ Π² ΡΠΈΡΠ»ΠΎ ΡΡΠΈΡ
ΡΠ°ΠΉΠ»ΠΎΠ², Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΎΡΡ. Π€Π°ΠΉΠ»Ρ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ»ΠΈΡΡ ΡΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Π² Π½ΠΈΡ
ΠΏΠΎΡΠ²Π»ΡΠ»ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΡΠ»ΠΈ ΡΡΠΎ-ΡΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π»ΠΎΡΡ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, ΡΠΎ ΡΠ΅ΡΡ ΡΠ»Π° ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° Any
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ»ΠΈΡΡ. ΠΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ β Π½Π° ΡΠ°Π½Π½ΠΈΡ
ΡΡΠ°Π΄ΠΈΡΡ
ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ Π΄ΠΎ ΡΠΈΡ
ΠΏΠΎΡ ΡΠ°Π±ΠΎΡΠ°Π» Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Ρ
ΠΎΡΠΎΡΠΎ, Ρ
ΠΎΡΡ ΡΠΈΠΏΠΈΡΠ½ΠΎΠΉ Π±ΡΠ»Π° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π²ΡΡΠ²Π»ΡΠ»ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π΄ΡΡΠ³ΠΈΡ
ΡΠ°ΡΡΡΡ
ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ. Π ΡΠ°ΠΌΠΎΠΌ Ρ
ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ»ΠΈΡΡ Π΄Π²Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΠΎΠ±Π»Π°ΡΡΠΈ ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΡΠΎΡΡΡ
, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΡΠΈΠΏΡ Π±ΡΠ»ΠΈ ΡΠΆΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½Ρ, ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΎΡΡ, ΡΡΠΎ ΡΠΈΠΏΡ ΡΡΠΈΡ
ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡ Π΄ΡΡΠ³ Ρ Π΄ΡΡΠ³ΠΎΠΌ. ΠΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ»ΠΎ ΠΊ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²Π½Π΅ΡΠ΅Π½ΠΈΡ Π² Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. Π’Π΅ΠΏΠ΅ΡΡ, ΠΎΠ³Π»ΡΠ΄ΡΠ²Π°ΡΡΡ Π½Π°Π·Π°Π΄, ΠΌΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΡΡΠΎ Π½Π°ΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π»ΠΎ Π±Ρ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π½ΡΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² mypy Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ. ΠΡΠΎ ΡΠ΄Π΅Π»Π°Π»ΠΎ Π±Ρ Π½Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΉ.
ΠΠ½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎΠ³Π΄Π° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π»ΠΈ ΡΠ°Π±ΠΎΡΡ, Ρ Π½Π°Ρ Π±ΡΠ»ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΡΡΠΎΠΊ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Python-ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° β Π·Π°Π΄Π°ΡΠ° Π½Π΅ ΠΈΠ· Π»ΡΠ³ΠΊΠΈΡ . ΠΡ ΡΠΎΠ·Π΄Π°Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°Π·Π²Π°Π½Π½ΡΠΉ PyAnnotate, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΡΠΎΠ² ΠΈ ΡΠΌΠ΅Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² ΠΊΠΎΠ΄ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΎΠ², ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΡΠΎΠ±ΡΠ°Π½Π½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° ΠΌΡ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ. Π‘Π±ΠΎΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΡΠΈΠΏΠ°Ρ Π±ΡΠ» ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠΌ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ°ΡΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΡΡΠ½ΡΡ ΠΏΡΠ°Π²ΠΎΠΊ. ΠΡ Π΄ΡΠΌΠ°Π»ΠΈ ΠΎΠ± Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ΅ ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΠΏΠ°Ρ , ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° Π°Π½Π°Π»ΠΈΠ·Π΅ Π½Π΅ΠΊΠΎΠ΅Π³ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ° ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅Π²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², Π½ΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ Π΄Π΅Π»Π°ΡΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠΈΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΡΠΊΠΎΠ²Π°Π½.
Π ΠΈΡΠΎΠ³Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π±ΡΠ»Π° Π²ΡΡΡΠ½ΡΡ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π° Π΅Π³ΠΎ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°ΠΌΠΈ. ΠΡ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π² ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΡΡΠ»ΠΎ, Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΎΡΡΡΡΡ ΠΏΠΎ ΠΎΡΠΎΠ±ΠΎ Π²Π°ΠΆΠ½ΡΠΌ ΠΌΠΎΠ΄ΡΠ»ΡΠΌ ΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΆΠ½ΠΎ ΡΠ½Π°Π±Π΄ΠΈΡΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΈΠΏΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΡΠΎΡΠ½ΡΡ ΠΌΠ΅ΡΡ. Π Π²ΠΎΡ ΡΡΠ°ΡΡΠΉ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΌΠ΅Π½ΡΡΡ Π½ΠΎΠ²ΡΠΌ, Π°Π½Π½ΠΎΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π΅ ΡΠ°ΠΊ Π²Π°ΠΆΠ½ΠΎ. ΠΡ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΡΠ΅ΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ ΡΡΠ°ΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π¦ΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ. ΠΡΡΠ΅ Ρ Π³ΠΎΠ²ΠΎΡΠΈΠ» ΠΎ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠ°Ρ (ΠΎ Β«ΠΊΠ»ΡΠ±ΠΊΠ°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉΒ»), ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ»ΠΎΠΆΠ½ΠΈΠ»ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ mypy. ΠΠ°ΠΌ, ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ΅ΡΡΡΠ·Π½ΠΎ ΠΏΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ ΡΠ΅ΠΌ, ΡΡΠΎΠ±Ρ ΡΠ½Π°Π±Π΄ΠΈΡΡ mypy ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠ² ΠΈΠ΄ΠΈΠΎΠΌ, ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΡΠΈ Π²ΠΎΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠΌΠΏΠΎΡΡΡ. ΠΠ΅Π΄Π°Π²Π½ΠΎ ΠΌΡ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ ΠΊΡΡΠΏΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ ΡΠ΅Π΄ΠΈΠ·Π°ΠΉΠ½Ρ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΡΠ°Π²ΠΈΠ» Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ mypy, ΠΊΠ°ΡΠ°ΡΡΠΈΡ ΡΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠΌΠΏΠΎΡΡΠΎΠ². ΠΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΡΠΎΠΈΠ·ΡΠ°ΡΡΠ°Π»ΠΈ ΠΈΠ· Π²Π΅ΡΡΠΌΠ° ΡΠ°Π½Π½ΠΈΡ Π΄Π½Π΅ΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π΅ΡΡ ΠΈΠ· Alore, ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, Π½Π° ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ» ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ ΠΏΡΠΎΠ΅ΠΊΡ mypy. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Alore ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠΌΠΏΠΎΡΡΠ°. Π‘ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ mypy ΡΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π½Π½Π΅ΠΉ Π±Π΅ΡΡ ΠΈΡΡΠΎΡΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΠ»Π° Π΄Π»Ρ Alore). Python ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΠΈΠΌΠΏΠΎΡΡΠ°ΠΌΠΈ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΠ·-Π·Π° Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Ρ ΠΎΠ΄Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ, Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ ΡΠΈΠΏΠ°. Mypy Π½Π΅ Π²ΡΠ΅Π³Π΄Π° ΡΠΏΠΎΡΠΎΠ±Π΅Π½ Π²ΡΡΠ²Π»ΡΡΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π²Π΅ΡΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠΈΠΊΠ»Π° ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π°. Π Alore ΡΠ°ΠΊΠΈΡ Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠ΅ΠΉ Π½Π΅ Π±ΡΠ»ΠΎ. ΠΠ΅ΡΠ΄Π°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΏΡΠΈΠ½ΡΡΡΠ΅ Π½Π° ΡΠ°Π½Π½ΠΈΡ ΡΡΠ°ΠΏΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΌΠΎΠ³ΡΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π½Π΅ΡΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π΅ΠΏΡΠΈΡΡΠ½ΡΠΉ ΡΡΡΠΏΡΠΈΠ· ΡΠ΅ΡΠ΅Π· ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ.
ΠΡΠΎΠ³ΠΈ: ΠΏΡΡΡ ΠΊ 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π° ΠΈ ΠΊ Π½ΠΎΠ²ΡΠΌ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°ΠΌ
ΠΡΠΎΠ΅ΠΊΡ mypy ΠΏΡΠΎΡΡΠ» Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡΡΡ β ΠΎΡ ΡΠ°Π½Π½ΠΈΡ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΎΠ², Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΡΡΡΡΡ ΡΠΈΠΏΡ ΠΏΡΠΎΠ΄Π°ΠΊΡΠ½-ΠΊΠΎΠ΄Π° ΠΎΠ±ΡΡΠΌΠΎΠΌ Π² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° ΡΡΡΠΎΠΊ. ΠΠΎ Ρ ΠΎΠ΄Ρ ΡΠ°Π·Π²ΠΈΡΠΈΡ mypy Π±ΡΠ»Π° ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΎΠΊ ΠΏΠΎ ΡΠΈΠΏΠ°ΠΌ Π² Python. Π Π½Π°ΡΠΈ Π΄Π½ΠΈ Π²ΠΎΠΊΡΡΠ³ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Python-ΠΊΠΎΠ΄Π° ΡΠ°Π·Π²ΠΈΠ»Π°ΡΡ ΠΌΠΎΡΠ½Π°Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. Π Π½Π΅ΠΉ Π½Π°ΡΠ»ΠΎΡΡ ΠΌΠ΅ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π² Π½Π΅ΠΉ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ IDE ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ², Π² Π½Π΅ΠΉ ΠΈΠΌΠ΅ΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ², Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ ΡΠ²ΠΎΠΈ ΠΏΠ»ΡΡΡ ΠΈ ΠΌΠΈΠ½ΡΡΡ.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² ΡΠΆΠ΅ Π²ΠΎΡΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ Π² Dropbox ΠΊΠ°ΠΊ Π½Π΅ΡΡΠΎ ΡΠ°ΠΌΠΎ ΡΠΎΠ±ΠΎΠΉ ΡΠ°Π·ΡΠΌΠ΅ΡΡΠ΅Π΅ΡΡ, Ρ ΡΠ²Π΅ΡΠ΅Π½ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΌΡ Π²ΡΡ Π΅ΡΡ ΠΆΠΈΠ²ΡΠΌ Π½Π° Π·Π°ΡΠ΅ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΠΈ Python-ΠΊΠΎΠ΄Π°. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠΈΠΏΠΎΠ² Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°ΡΡΡΡ.
ΠΡΠ»ΠΈ Π²Ρ Π΅ΡΡ Π½Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΏΠΎΠ² Π² ΡΠ²ΠΎΡΠΌ ΠΊΡΡΠΏΠ½ΠΎΠΌΠ°ΡΡΡΠ°Π±Π½ΠΎΠΌ Python-ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΡΠΎ Π·Π½Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ β Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. Π― Π±Π΅ΡΠ΅Π΄ΠΎΠ²Π°Π» Ρ ΡΠ΅ΠΌΠΈ, ΠΊΡΠΎ ΡΠΎΠ²Π΅ΡΡΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄. ΠΠΈΠΊΡΠΎ ΠΈΠ· Π½ΠΈΡ ΠΎΠ± ΡΡΠΎΠΌ Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π». ΠΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠΈΠΏΠΎΠ² ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Python Π² ΡΠ·ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Β«ΠΎΠ±ΡΡΠ½ΡΠΉ PythonΒ», ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Π£Π²Π°ΠΆΠ°Π΅ΠΌΡΠ΅ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ Π»ΠΈ Π²Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ ΡΠΈΠΏΠΎΠ² Π² ΡΠ²ΠΎΠΈΡ Python-ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ?
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com