ΠΡΠ΅Π΄ΡΡΠ°Π²ΡΠΌΠ΅ Π½Π° Π²Π°ΡΠ΅ΡΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΡΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠ΅Π²ΠΎΠ΄Π° Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° Π·Π° ΠΏΡΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° 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 (), ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° SQLAlchemy.
Π’ΡΡΠ΄Π½ΠΎΡΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΡΠ°Π²ΠΈΡ ΠΌΠ΅
ΠΡΡΡΡ ΠΊΡΠΌ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΡΠΈΠΏΠΈΠ·ΠΈΡΠ°Π½ ΠΊΠΎΠ΄ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π±Π΅ΡΠ΅ Π»Π΅ΡΠ΅Π½ Π·Π° Π½Π°Ρ. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΡ ΡΡΠ΅ΡΠ½Π°Ρ ΠΌΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ ΠΈ Π΄ΠΎΠΏΡΡΠ½Π°Ρ ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π³ΡΠ΅ΡΠΊΠΈ. ΠΡΠΎ Π½ΡΠΊΠΎΠΈ ΠΎΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅, Ρ ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅. ΠΠ°Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ ΡΠ°Π·ΠΊΠ°Π·ΡΡ Π·Π° ΡΡΡ ΡΠ΅ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π½Π° Π΄ΡΡΠ³ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π°Ρ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΡΡΠ΄Π½ΠΎΡΡΠΈ.
ΠΡΠΎΠΏΡΡΠ½Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ
ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°ΠΌΠΎ Π½Π° ΠΌΠ°Π»ΡΠΊ ΠΎΠ±Π΅ΠΌ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΠ΅ Π² Π±ΡΠΎΡ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΡΠ΅. Π€Π°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π² ΡΠΏΠΈΡΡΠΊΠ° Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΡ
Π°, ΠΊΠΎΠ³Π°ΡΠΎ Π² ΡΡΡ
ΡΠ΅ ΠΏΠΎΡΠ²ΡΠ²Π°Ρ
Π° ΠΏΡΡΠ²ΠΈΡΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ. ΠΠΊΠΎ Π½Π΅ΡΠΎ ΡΠ΅ Π²Π½Π°ΡΡΡΠ΅ ΠΎΡ ΠΌΠΎΠ΄ΡΠ», ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΈΠ·Π²ΡΠ½ ΠΎΠ±Ρ
Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ°, ΡΠ΅ ΠΊΠ°ΡΠ°Π΅ΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠΈΠΏΠΎΠ²Π΅ Any, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°Ρ
Π°. Π’ΠΎΠ²Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΡΠΎΡΠ½ΠΎΡΡ Π½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ°, ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π½Π° ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΠΌΠΈΠ³ΡΠ°ΡΠΈΡΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°ΡΠΎ Π΄ΠΎΠ±ΡΠ΅, ΠΌΠ°ΠΊΠ°Ρ ΡΠ΅ ΡΠΈΠΏΠΈΡΠ½ΠΎΡΠΎ Π±Π΅ΡΠ΅, ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΎΠ±Ρ
Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° ΡΠ°Π·ΠΊΡΠΈΠ²Π°ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π² Π΄ΡΡΠ³ΠΈ ΡΠ°ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π°ΡΠ° Π±Π°Π·Π°. Π Π½Π°ΠΉ-Π»ΠΎΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ±ΠΈΡΠ°Ρ
Π° Π΄Π²Π΅ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΊΠΎΠ΄Π°, Π² ΠΊΠΎΠΈΡΠΎ ΡΠΈΠΏΠΎΠ²Π΅ Π±ΡΡ
Π° ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π²Π·Π°ΠΈΠΌΠ½ΠΎ, ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°ΡΠ΅, ΡΠ΅ ΡΠΈΠΏΠΎΠ²Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π΅ ΡΠ° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ. Π’ΠΎΠ²Π° Π²ΠΎΠ΄Π΅ΡΠ΅ Π΄ΠΎ Π½ΡΠΆΠ΄Π° ΠΎΡ Π²Π½Π°ΡΡΠ½Π΅ Π½Π° ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² Π°Π½ΠΎΡΠ°ΡΠΈΠΈΡΠ΅. Π‘Π΅Π³Π°, ΠΎΠ³Π»Π΅ΠΆΠ΄Π°ΠΉΠΊΠΈ ΡΠ΅ Π½Π°Π·Π°Π΄, ΡΠ°Π·Π±ΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π² ΠΎΠ±Ρ
Π²Π°ΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ mypy Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-ΡΠ°Π½ΠΎ. Π’ΠΎΠ²Π° Π±ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°.
ΠΠ½ΠΎΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ°Ρ ΠΊΠΎΠ΄. ΠΠΎΠ³Π°ΡΠΎ Π·Π°ΠΏΠΎΡΠ²Π°Ρ ΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°, ΠΈΠΌΠ°Ρ ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Ρ Python ΠΊΠΎΠ΄. ΠΠ΅ΡΠ΅ ΡΡΠ½ΠΎ, ΡΠ΅ Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΠΎΠ·ΠΈ ΠΊΠΎΠ΄ Π΅ Π·Π°Π΄Π°ΡΠ°, ΠΊΠΎΡΡΠΎ Π½Π΅ Π΅ Π»Π΅ΡΠ½Π°. Π‘ΡΠ·Π΄Π°Π΄ΠΎΡ ΠΌΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, Π½Π°ΡΠ΅ΡΠ΅Π½ PyAnnotate, ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ±ΠΈΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ΅ΡΡΠΎΠ²Π΅ ΠΈ ΡΠΌΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²Ρ Π² ΠΊΠΎΠ΄Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΡΡΠ±ΡΠ°Π½Π°ΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π½Π΅ Π·Π°Π±Π΅Π»ΡΠ·Π°Ρ ΠΌΠ΅ ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΡΠΈΡΠΎΠΊΠΎ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ. Π‘ΡΠ±ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Π±Π΅ΡΠ΅ Π±Π°Π²Π½ΠΎ, Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΠΎ ΠΈΠ·ΠΈΡΠΊΠ²Π°Ρ Π° ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΡΠ½ΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ. Π Π°Π·ΠΌΠΈΡΠ»ΡΡ ΠΌΠ΅ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ²Π° ΡΡΠ΅Π΄ΡΡΠ²ΠΎ ΠΏΡΠΈ Π²ΡΡΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΊΠΎΠ΄Π°, ΠΈΠ»ΠΈ Π·Π° ΡΡΠ±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅, Π±Π°Π·ΠΈΡΠ°Π½Π° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ΅Π°Π»Π½ΠΈ ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ Π·Π°ΡΠ²ΠΊΠΈ, Π½ΠΎ ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° Π½Π΅ Π³ΠΎ ΠΏΡΠ°Π²ΠΈΠΌ, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈ Π±Π΅ΡΠ΅ ΡΠ²ΡΡΠ΄Π΅ ΡΠΈΡΠΊΠΎΠ².
Π ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈΠΌ, ΡΠ΅ Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°ΡΡ ΠΎΡ ΠΊΠΎΠ΄Π° Π±Π΅ΡΠ΅ ΡΡΡΠ½ΠΎ Π°Π½ΠΎΡΠΈΡΠ°Π½Π° ΠΎΡ Π½Π΅Π³ΠΎΠ²ΠΈΡΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠΈ. ΠΠΈΠ΅, Π·Π° Π΄Π° Π½Π°ΡΠΎΡΠΈΠΌ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ Π² ΠΏΡΠ°Π²ΠΈΠ»Π½Π°ΡΠ° ΠΏΠΎΡΠΎΠΊΠ°, ΠΏΠΎΠ΄Π³ΠΎΡΠ²ΡΠΌΠ΅ ΠΎΡΡΠ΅ΡΠΈ Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎ Π²Π°ΠΆΠ½ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π°Ρ Π°Π½ΠΎΡΠΈΡΠ°Π½ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ½Π°Π±Π΄ΠΈΠΌ Ρ Π°Π½ΠΎΡΠ°ΡΠΈΠΈ ΡΠΈΠΏ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΡΠ½ΠΈΡ ΠΌΠΎΠ΄ΡΠ», ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² ΡΡΠΎΡΠΈΡΠΈ ΠΌΠ΅ΡΡΠ°. ΠΠΎ ΡΡΠ°ΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΠ·, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½Ρ Ρ Π½ΠΎΠ², Π²Π΅ΡΠ΅ Π½Π΅ Π΅ ΡΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ΅Π½ Π·Π° Π°Π½ΠΎΡΠΈΡΠ°Π½Π΅. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌΠ΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π°Π½ΠΎΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° ΡΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄.
Π¦ΠΈΠΊΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈ. ΠΠΎ-Π³ΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΠΈΡ Π·Π° ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈ (ΠΈΠ»ΠΈ "ΠΊΠ»ΡΠ±ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ"), ΡΠΈΠ΅ΡΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°Π½Π΅ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π°ΡΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° mypy. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΡΡΠ±Π²Π°ΡΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ Π΄Π° ΡΠ°Π±ΠΎΡΠΈΠΌ, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠΌ Π½Π° mypy ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π²ΡΠΈΡΠΊΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ΄ΠΈΠΎΠΌΠΈ, ΠΏΡΠΈΡΠΈΠ½ΡΠ²Π°ΡΠΈ Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π·ΠΈ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈ. ΠΠ°ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΠ²Π΅Π΄ΠΎΡ ΠΌΠ΅ Π³ΠΎΠ»ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Π·Π° redesign Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈ ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° mypy, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈ. Π’Π΅Π·ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΡΡΡΠ½ΠΎΡΡ ΠΏΡΠΎΠΈΠ·Π»ΠΈΠ·Π°Ρ ΠΎΡ Π΄ΠΎΡΡΠ° ΡΠ°Π½Π½ΠΈ Π΄Π½ΠΈ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΡΠ΅ ΠΎΡ Alore, ΡΡΠ΅Π±Π½ΠΈΡ Π΅Π·ΠΈΠΊ, Π½Π° ΠΊΠΎΠΉΡΠΎ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½ΠΎ Π±Π΅ΡΠ΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡΡΡ mypy. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° Alore ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π»Π΅ΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠ΅ΡΠ°Π²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ Ρ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Π½Π΅. Π‘ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈΡΡ mypy Π½Π°ΡΠ»Π΅Π΄ΠΈ Π½ΡΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΎΡ ΡΠ²ΠΎΡΡΠ° ΡΠ°Π½Π½Π° ΠΏΡΠΎΡΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΊΠΎΡΡΠΎ ΠΏΠ°ΡΠ²Π°ΡΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΠΎ Π½Π° Alore). Python Π·Π°ΡΡΡΠ΄Π½ΡΠ²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Ρ ΡΠΈΠΊΠ»ΠΈΡΠ½ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΡΠ° Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΡΠΈΡΠ²ΠΎΡΠ²Π°Π½Π΅ ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° ΠΌΠΎΠΆΠ΅ Π²ΡΡΡΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈ ΠΎΡ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π½Π° ΡΠΈΠΏΠ°. Mypy Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Π² ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ·Π½Π°Π΅ ΡΠ°ΠΊΠΈΠ²Π° Π½Π΅ΡΠ°, Π΄ΠΎΠΊΠ°ΡΠΎ Π³ΠΎΠ»ΡΠΌΠ° ΡΠ°ΡΡ ΠΎΡ ΡΠΈΠΊΡΠ»Π° Π½Π° ΠΈΠΌΠΏΠΎΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ΅Π½Π°. Π Alore Π½ΡΠΌΠ°ΡΠ΅ ΡΠ°ΠΊΠΈΠ²Π° ΠΌΠ½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ½ΠΎΡΡΠΈ. ΠΠ΅ΡΡΠΏΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ, Π²Π·Π΅ΡΠΈ Π² ΡΠ°Π½Π½ΠΈΡΠ΅ Π΅ΡΠ°ΠΏΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° Π΄ΠΎΠ½Π΅ΡΠ°Ρ Π½Π΅ΠΏΡΠΈΡΡΠ½Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π° Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΡΠ° ΡΠ»Π΅Π΄ ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ΄ΠΈΠ½ΠΈ.
Π Π΅Π·ΡΠΌΠ΅: ΠΏΡΡΡΡ ΠΊΡΠΌ 5 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π° ΠΊΠΎΠ΄ ΠΈ Π½ΠΎΠ²ΠΈ Ρ ΠΎΡΠΈΠ·ΠΎΠ½ΡΠΈ
ΠΡΠΎΠ΅ΠΊΡΡΡ mypy ΠΏΡΠ΅ΠΌΠΈΠ½Π° Π΄ΡΠ»ΡΠ³ ΠΏΡΡ - ΠΎΡ ΡΠ°Π½Π½ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈ Π΄ΠΎ ΡΠΈΡΡΠ΅ΠΌΠ°, Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Ρ ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠΎΠ½Π½ΠΈΡ ΠΊΠΎΠ΄ Ρ ΠΎΠ±Π΅ΠΌ ΠΎΡ 4 ΠΌΠΈΠ»ΠΈΠΎΠ½Π° ΡΠ΅Π΄Π°. ΠΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ mypy Π±Π΅ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ΅Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² Python. ΠΠ½Π΅Ρ ΠΎΠΊΠΎΠ»ΠΎ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Python-ΠΊΠΎΠ΄ ΡΠ΅ Π΅ ΡΠ°Π·Π²ΠΈΠ»Π° ΠΌΠΎΡΠ½Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. Π Π½Π΅Ρ ΠΈΠΌΠ° ΠΌΠ΅ΡΡΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, Π·Π° ΠΏΠΎΠΌΠΎΡΠ½ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° Π·Π° IDE ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΈ, Π° ΡΡΡΠΎ ΡΠ°ΠΊΠ° ΠΈΠΌΠ° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅, Π²ΡΡΠΊΠ° ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π° ΡΠ²ΠΎΠΈ ΠΏΠ»ΡΡΠΎΠ²Π΅ ΠΈ ΠΌΠΈΠ½ΡΡΠΈ.
ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π²Π΅ΡΠ΅ ΡΠ΅ Π²ΡΠ·ΠΏΡΠΈΠ΅ΠΌΠ° Π² Dropbox ΠΊΠ°ΡΠΎ Π½Π΅ΡΠΎ ΡΡΠ²ΡΠ΅ΠΌ Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ, ΡΡΠΌ ΡΠΈΠ³ΡΡΠ΅Π½, ΡΠ΅ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΆΠΈΠ²Π΅Π΅ΠΌ Π² Π·ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Python-ΠΊΠΎΠ΄. ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·Π²ΠΈΠ²Π°Ρ ΠΈ ΡΡΡΠ²ΡΡΡΠ΅Π½ΡΡΠ²Π°Ρ.
ΠΠΊΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ Π² Π³ΠΎΠ»ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡ Π½Π° Python, Π·Π½Π°ΠΉΡΠ΅, ΡΠ΅ ΡΠ΅Π³Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΡΡΠ°ΡΠΈΡΠ½Π° ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ. Π Π°Π·Π³ΠΎΠ²Π°ΡΡΡ Ρ Ρ ΠΎΡΠ°, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΏΡΠ°Π²ΠΈΡ Π° ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠ΅Ρ ΠΎΠ΄. ΠΠΈΠΊΠΎΠΉ ΠΎΡ ΡΡΡ Π½Π΅ ΡΡΠΆΠ°Π»ΡΠ²Π° Π·Π° ΡΠΎΠ²Π°. ΠΠΎΠ½ΡΡΠΎΠ»ΡΡ Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΡΠ°Π²ΠΈ Python Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡΠΎ Π΅ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ "ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ Python".
Π£Π²Π°ΠΆΠ°Π΅ΠΌΠΈ ΡΠΈΡΠ°ΡΠ΅Π»ΠΈ! ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ Π»ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠΈΠΏΠΎΠ²Π΅ΡΠ΅ Π² ΡΠ²ΠΎΠΈΡΠ΅ Python ΠΏΡΠΎΠ΅ΠΊΡΠΈ?
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
