ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅ΠΌ Π²Π°ΡˆΠ΅ΠΌΡƒ вниманию Ρ‚Ρ€Π΅Ρ‚ΡŒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΎ ΠΏΡƒΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΎΡˆΠ»Π° компания Dropbox, внСдряя Ρƒ сСбя систСму ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Python-ΠΊΠΎΠ΄Π°.

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3

β†’ ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ части: пСрвая ΠΈ вторая

ДостиТСниС 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Π•Ρ‰Ρ‘ ΠΎΠ΄Π½ΠΎΠΉ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ (это Π±Ρ‹Π» вторая ΠΏΠΎ популярности ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, волновавшая Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ участвовал Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… опросах) Π±Ρ‹Π»ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΡ‘ΠΌΠ° ΠΊΠΎΠ΄Π° Π² Dropbox, ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ². ΠœΡ‹ испробовали нСсколько ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой Π·Π°Π΄Π°Ρ‡ΠΈ β€” ΠΎΡ‚ СстСствСнного роста ΠΎΠ±ΡŠΡ‘ΠΌΠ° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹ Π΄ΠΎ сосрСдоточСния усилий Ρ‡Π»Π΅Π½ΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ mypy Π½Π° статичСском ΠΈ динамичСском Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²Ρ‹Π²ΠΎΠ΄Π΅ Ρ‚ΠΈΠΏΠΎΠ². Π’ ΠΈΡ‚ΠΎΠ³Π΅ создалось Ρ‚Π°ΠΊΠΎΠ΅ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ Π½Π΅Ρ‚ простой Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ½ΠΎΠΉ стратСгии, Π½ΠΎ ΠΌΡ‹ смогли Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ быстрого роста ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, скомбинировав мноТСство ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ².

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π² нашСм самом большом Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ (с бэкСнд-ΠΊΠΎΠ΄ΠΎΠΌ) число строк Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° достигло ΠΏΠΎΡ‡Ρ‚ΠΈ 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ². Π Π°Π±ΠΎΡ‚Π° ΠΏΠΎ статичСской Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠΎΠ΄Π° Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π·Π° Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄Π°. Mypy Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠ² ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΊΠΎΠ΄Π° Ρ‚ΠΈΠΏΠ°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ наблюдСниС Π·Π° Ρ…ΠΎΠ΄ΠΎΠΌ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ. Π’ частности, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚Ρ‹ ΠΏΠΎ ΠΊΠΎΠ΄Ρƒ с нСопрСдСлённостями Π² Ρ‚ΠΈΠΏΠ°Ρ…, с Ρ‚Π°ΠΊΠΈΠΌΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊ явноС использованиС Ρ‚ΠΈΠΏΠ° Any Π² аннотациях, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΈΠ»ΠΈ с Ρ‚Π°ΠΊΠΈΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈΠΌΠΏΠΎΡ€Ρ‚ сторонних Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅Ρ‚ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ². ΠœΡ‹, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡŽ точности ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² Dropbox, внСсли Π²ΠΊΠ»Π°Π΄ Π² ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ Ρ‚ΠΈΠΏΠΎΠ² (Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… stub-Ρ„Π°ΠΉΠ»ΠΎΠ²) для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… популярных опСнсорсных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π² Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΌ Python-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ typeshed.

ΠœΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π»ΠΈ (ΠΈ стандартизировали Π² ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… PEP) Π½ΠΎΠ²Ρ‹Π΅ возмоТности систСмы Ρ‚ΠΈΠΏΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… спСцифичных Python-ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ². Π—Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ этого являСтся TypeDict, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ‚ΠΈΠΏΡ‹ для JSON-ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… словарСй, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… фиксированный Π½Π°Π±ΠΎΡ€ строковых ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ собствСнного Ρ‚ΠΈΠΏΠ°. ΠœΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ систСму Ρ‚ΠΈΠΏΠΎΠ². ВСроятно, нашим ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ шагом станСт ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ возмоТностСй Python ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ с числами.

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: сСрвСр

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°: ΠΊΠ»ΠΈΠ΅Π½Ρ‚

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3
ΠžΠ±Ρ‰Π΅Π΅ количСство строк Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°

Π’ΠΎΡ‚ ΠΎΠ±Π·ΠΎΡ€ основных особСнностСй Ρ‚Π΅Ρ… дСйствий, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ»ΠΈ Ρ€Π°Π΄ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±ΡŠΡ‘ΠΌΠ° Π°Π½Π½ΠΎΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π² 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 ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ всСх Π²ΠΈΠ΄ΠΎΠ² ΠΈΠ΄ΠΈΠΎΠΌ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΎΠΉ возникновСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡΠ²Π»ΡΡŽΡ‚ΡΡ эти Π²ΠΎΡ‚ цикличСскиС ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹. НСдавно ΠΌΡ‹ Π·Π°Π²Π΅Ρ€ΡˆΠΈΠ»ΠΈ ΠΊΡ€ΡƒΠΏΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΠΎ Ρ€Π΅Π΄ΠΈΠ·Π°ΠΉΠ½Ρƒ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ исправил Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ mypy, ΠΊΠ°ΡΠ°ΡŽΡ‰ΠΈΡ…ΡΡ цикличСских ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ². Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½Π° самом Π΄Π΅Π»Π΅, произрастали ΠΈΠ· вСсьма Ρ€Π°Π½Π½ΠΈΡ… Π΄Π½Π΅ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π΅Ρ‰Ρ‘ ΠΈΠ· Alore, ΡƒΡ‡Π΅Π±Π½ΠΎΠ³ΠΎ языка, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ mypy. Бинтаксис Alore позволяСт Π»Π΅Π³ΠΊΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ цикличСских ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ mypy унаслСдовал Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ограничСния ΠΎΡ‚ своСй Ρ€Π°Π½Π½Π΅ΠΉ бСсхитростной Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (которая ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΠ»Π° для Alore). Python услоТняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с цикличСскими ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ Π² основном ΠΈΠ·-Π·Π° нСоднозначности Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Π² Ρ…ΠΎΠ΄Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ присваивания значСния ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π° самом Π΄Π΅Π»Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ псСвдоним Ρ‚ΠΈΠΏΠ°. Mypy Π½Π΅ всСгда способСн Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π²Π΅Ρ‰ΠΈ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° большая Ρ‡Π°ΡΡ‚ΡŒ Ρ†ΠΈΠΊΠ»Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°. Π’ Alore Ρ‚Π°ΠΊΠΈΡ… нСоднозначностСй Π½Π΅ Π±Ρ‹Π»ΠΎ. НСудачныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, принятыС Π½Π° Ρ€Π°Π½Π½ΠΈΡ… этапах Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ систСмы, ΠΌΠΎΠ³ΡƒΡ‚ прСподнСсти программисту нСприятный ΡΡŽΡ€ΠΏΡ€ΠΈΠ· Ρ‡Π΅Ρ€Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ‚.

Π˜Ρ‚ΠΎΠ³ΠΈ: ΠΏΡƒΡ‚ΡŒ ΠΊ 5 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌ строк ΠΊΠΎΠ΄Π° ΠΈ ΠΊ Π½ΠΎΠ²Ρ‹ΠΌ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°ΠΌ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ mypy ΠΏΡ€ΠΎΡˆΡ‘Π» Π΄ΠΎΠ»Π³ΠΈΠΉ ΠΏΡƒΡ‚ΡŒ β€” ΠΎΡ‚ Ρ€Π°Π½Π½ΠΈΡ… ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠΎΠ², Π΄ΠΎ систСмы, срСдствами ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΈΠΏΡ‹ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ½-ΠΊΠΎΠ΄Π° ΠΎΠ±ΡŠΡ‘ΠΌΠΎΠΌ Π² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π° строк. По Ρ…ΠΎΠ΄Ρƒ развития mypy Π±Ρ‹Π»Π° осущСствлСна стандартизация подсказок ΠΏΠΎ Ρ‚ΠΈΠΏΠ°ΠΌ Π² Python. Π’ наши Π΄Π½ΠΈ Π²ΠΎΠΊΡ€ΡƒΠ³ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΊΠΎΠ΄Π° Ρ€Π°Π·Π²ΠΈΠ»Π°ΡΡŒ мощная экосистСма. Π’ Π½Π΅ΠΉ нашлось мСсто ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, Π² Π½Π΅ΠΉ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ срСдства для IDE ΠΈ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π² Π½Π΅ΠΉ ΠΈΠΌΠ΅ΡŽΡ‚ΡΡ нСсколько систСм контроля Ρ‚ΠΈΠΏΠΎΠ², Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы.

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ² ΡƒΠΆΠ΅ воспринимаСтся Π² Dropbox ΠΊΠ°ΠΊ Π½Π΅Ρ‡Ρ‚ΠΎ само собой Ρ€Π°Π·ΡƒΠΌΠ΅ΡŽΡ‰Π΅Π΅ΡΡ, я ΡƒΠ²Π΅Ρ€Π΅Π½ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ всё Π΅Ρ‰Ρ‘ ΠΆΠΈΠ²Ρ‘ΠΌ Π½Π° Π·Π°Ρ€Π΅ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΠΈ Python-ΠΊΠΎΠ΄Π°. Π― Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒΡΡ.

Если Π²Ρ‹ Π΅Ρ‰Ρ‘ Π½Π΅ пользовались ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°ΠΌΠΈ Ρ‚ΠΈΠΏΠΎΠ² Π² своём ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΌΠ°ΡΡˆΡ‚Π°Π±Π½ΠΎΠΌ Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅, Ρ‚ΠΎ Π·Π½Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ сСйчас β€” вСсьма подходящСС врСмя для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ Π½Π° ΡΡ‚Π°Ρ‚ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Ρ‚ΠΈΠΏΠΈΠ·Π°Ρ†ΠΈΡŽ. Π― бСсСдовал с Ρ‚Π΅ΠΌΠΈ, ΠΊΡ‚ΠΎ ΡΠΎΠ²Π΅Ρ€ΡˆΠΈΠ» ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄. Никто ΠΈΠ· Π½ΠΈΡ… ΠΎΠ± этом Π½Π΅ ΠΏΠΎΠΆΠ°Π»Π΅Π». ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Ρ‚ΠΈΠΏΠΎΠ² ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Python Π² язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³ΠΎΡ€Π°Π·Π΄ΠΎ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ Β«ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ PythonΒ», ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

Π£Π²Π°ΠΆΠ°Π΅ΠΌΡ‹Π΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ! ΠŸΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ Π»ΠΈ Π²Ρ‹ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅ΠΌ Ρ‚ΠΈΠΏΠΎΠ² Π² своих Python-ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…?

ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3
ΠŸΡƒΡ‚ΡŒ ΠΊ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ Ρ‚ΠΈΠΏΠΎΠ² 4 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² строк Python-ΠΊΠΎΠ΄Π°. Π§Π°ΡΡ‚ΡŒ 3

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ