เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 2

เบกเบทเป‰เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเปเบฒเบฅเบฑเบ‡เป€เบœเบตเบเปเบœเปˆเบžเบฒเบเบ—เบตเบชเบญเบ‡เบ‚เบญเบ‡เบเบฒเบ™เปเบ›เบžเบฒเบชเบฒเบ‚เบญเบ‡เป€เบญเบเบฐเบชเบฒเบ™เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™ Dropbox เบˆเบฑเบ”เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบ›เบฐเป€เบžเบ”เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบซเบฑเบ” Python เบซเบผเบฒเบเบฅเป‰เบฒเบ™เป€เบชเบฑเป‰เบ™.

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 2

โ†’ เบญเปˆเบฒเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡

เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ›เบฐเป€เบžเบ”เบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เบ—เบฒเบ‡เบเบฒเบ™ (PEP 484)

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบฅเบญเบ‡โ€‹เบ—เบตเปˆโ€‹เบฎเป‰เบฒเบโ€‹เปเบฎเบ‡โ€‹เบ„เบฑเป‰เบ‡โ€‹เบ—เปเบฒโ€‹เบญเบดเบ”โ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบเบฑเบš mypy เบขเบนเปˆ Dropbox เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡ Hack Week 2014. Hack เบญเบฒโ€‹เบ—เบดเบ”โ€‹เป€เบ›เบฑเบ™โ€‹เบเบดเบ”โ€‹เบˆเบฐโ€‹เบเปเบฒโ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบญเบฒโ€‹เบ—เบดเบ”โ€‹เป‚เบ”เบ Dropbox. เปƒเบ™เป„เบฅเบเบฐเบ™เบตเป‰, เบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ”เบเปเปˆเบ•เบฒเบกเบ—เบตเปˆเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™! เบšเบฒเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบ—เบตเปˆเบกเบตเบŠเบทเปˆเบชเบฝเบ‡เบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡ Dropbox เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปƒเบ™เป€เบซเบ”เบเบฒเบ™เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰. เป€เบ›เบฑเบ™เบœเบปเบ™เบกเบฒเบˆเบฒเบเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบฐเบซเบผเบธเบšเบงเปˆเบฒ mypy เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเบกเบตเปเบ™เบงเป‚เบ™เป‰เบก, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเป‚เบ„เบ‡เบเบฒเบ™เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เบเบฝเบกเบžเป‰เบญเบกเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡.

เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบฅเบฐเบšเบปเบš hinting เบ›เบฐเป€เบžเบ” Python เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบญเบฒเบเบฒเบ”. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบงเบปเป‰เบฒ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ Python 3.0 เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเปƒเบŠเป‰เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เบชเปเบฒเบฅเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ, เปเบ•เปˆเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบเป‚เบ”เบเบ•เบปเบ™เป€เบญเบ‡, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบเปเบฒเบ™เบปเบ” syntax เปเบฅเบฐ semantics. เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เป‚เบ„เบ‡โ€‹เบเบฒเบ™, เบ„เปเบฒโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เป€เบซเบผเบปเปˆเบฒโ€‹เบ™เบตเป‰, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบžเบฒเบโ€‹เบชเปˆเบงเบ™โ€‹เบซเบผเบฒเบ, เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบฅเบฐโ€‹เป€เบฅเบตเบ. เบซเบผเบฑเบ‡เบˆเบฒเบเบญเบฒเบ—เบดเบ” Hack, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบ„เบงเบฒเบกเบซเบกเบฒเบ. เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบเบตเบ”เบ‚เบทเป‰เบ™ เบ›เบ› 484 (Guido van Rossum, ลukasz Langa เปเบฅเบฐเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเปˆเบงเบกเบกเบทเปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰).

เปเบฎเบ‡เบˆเบนเบ‡เปƒเบˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบ”เป‰เบˆเบฒเบเบชเบญเบ‡เบ”เป‰เบฒเบ™. เบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบซเบงเบฑเบ‡เบงเปˆเบฒเบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ” Python เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเบฒเบกเบฒเบ”เบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ—เบปเปˆเบงเป„เบ›เปƒเบ™เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเปเบ™เบฐเบ™เปเบฒเบ›เบฐเป€เบžเบ” (เบ„เปเบฒเบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™ Python เป€เบ—เบปเปˆเบฒเบเบฑเบš "เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”"). เบ™เบตเป‰, เบเป‰เบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เบˆเบฐเบ”เบตเบเบงเปˆเบฒเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบšเปเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบ™เบซเบผเบฒเบ. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบถเบเบชเบฒเบซเบฒเบฅเบทเบขเปˆเบฒเบ‡เป€เบ›เบตเบ”เป€เบœเบตเบเบเปˆเบฝเบงเบเบฑเบšเบเบปเบ™เป„เบเบเบฒเบ™เบญเบฐเบ—เบดเบšเบฒเบเบ›เบฐเป€เบžเบ”เบเบฑเบšเบชเบฐเบกเบฒเบŠเบดเบเบซเบผเบฒเบเบ„เบปเบ™เบ‚เบญเบ‡เบŠเบธเบกเบŠเบปเบ™ Python. เบ„เบงเบฒเบกเบ›เบฒเบ–เบฐเบซเบ™เบฒเบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบšเบฒเบ‡เบชเปˆเบงเบ™เป‚เบ”เบเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ "เบ„เบปเบ™เบ›เบฐเบ–เบดเป‰เบกเบ„เบงเบฒเบกเป€เบŠเบทเปˆเบญ" เบˆเบฒเบเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบžเบทเป‰เบ™เบ–เบฒเบ™เบ‚เบญเบ‡เบžเบฒเบชเบฒเปƒเบ™เบชเบฒเบเบ•เบฒเบ‚เบญเบ‡เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Python เบขเปˆเบฒเบ‡เบเบงเป‰เบฒเบ‡เบ‚เบงเบฒเบ‡. เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบžเบดเบกเปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เป€เบญเบตเป‰เบ™เบงเปˆเบฒ "เบเบฒเบ™เบžเบดเบกเป€เบ›เบฑเบ”". เปƒเบ™เบŠเบธเบกเบŠเบปเบ™, เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ—เบฑเบ”เบชเบฐเบ™เบฐเบ„เบฐเบ•เบดเบ—เบตเปˆเบชเบปเบ‡เปƒเบชเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบ•เปเปˆเบเบฑเบšเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบŠเปˆเบงเบเป„เบ”เป‰เปเบ•เปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™. เปเบ•เปˆเบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ™เบฑเป‰เบ™เปƒเบ™เบ—เบตเปˆเบชเบธเบ”เบเปเปˆเบซเบฒเบเป„เบ›เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป€เบซเบฑเบ™เป„เบ”เป‰เบŠเบฑเบ”เป€เบˆเบ™เบงเปˆเบฒเบเบฒเบ™เบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบ–เบทเบเบšเบฑเบ‡เบ„เบฑเบš (เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ›เบฐเบŠเบฒเบŠเบปเบ™เบฎเบนเป‰เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบ›เบฐเป‚เบซเบเบ”เปเบ—เป‰เป†).

syntax hint เบ›เบฐเป€เบžเบ”เบ—เบตเปˆเป„เบ”เป‰เบ–เบทเบเบฎเบฑเบšเบฎเบญเบ‡เป€เบญเบปเบฒเปƒเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ mypy เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™. PEP 484 เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบ”เป‰เบงเบ Python 3.5 เปƒเบ™เบ›เบต 2015. Python เบšเปเปˆเปเบกเปˆเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบžเบดเบกเปเบšเบšเป„เบ”เบ™เบฒเบกเบดเบเบญเบตเบเบ•เปเปˆเป„เบ›. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบกเบฑเบเบ„เบดเบ”เบงเปˆเบฒเป€เบซเบ”เบเบฒเบ™เบ™เบตเป‰เป€เบ›เบฑเบ™เป€เบซเบ”เบเบฒเบ™เบชเปเบฒเบ„เบฑเบ™เปƒเบ™เบ›เบฐเบซเบงเบฑเบ”เบชเบฒเบ” Python.

เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบ

เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡ 2015, Dropbox เป„เบ”เป‰เบชเป‰เบฒเบ‡เบ—เบตเบกเบ‡เบฒเบ™เบชเบฒเบกเบ„เบปเบ™เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบš mypy. เบžเบงเบเป€เบ‚เบปเบฒเบ›เบฐเบเบญเบšเบกเบต Guido van Rossum, Greg Price เปเบฅเบฐ David Fisher. เบ•เบฑเป‰เบ‡เปเบ•เปˆเบ™เบฑเป‰เบ™เบกเบฒ, เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เป€เบฅเบตเปˆเบกเบžเบฑเบ”เบ—เบฐเบ™เบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒ. เบญเบธเบ›เบฐเบชเบฑเบเบ—เปเบฒเบญเบดเบ”เบ•เปเปˆเบเบฒเบ™เป€เบ•เบตเบšเป‚เบ•เบ‚เบญเบ‡ mypy เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”. เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบšเบญเบเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบ„เบดเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบ›เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” mypy เป€เบ›เบฑเบ™ C, เปเบ•เปˆเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเบ‚เป‰เบฒเบกเบญเบญเบเบˆเบฒเบเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบขเบนเปˆเบเบฑเบšเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเปเบ›เบžเบฒเบชเบฒ CPython, เป€เบŠเบดเปˆเบ‡เบšเปเปˆเป„เบงเบžเปเบชเปเบฒเบฅเบฑเบšเป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™ mypy. (เป‚เบ„เบ‡เบเบฒเบ™ PyPy, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฒเบ‡เป€เบฅเบทเบญเบ Python เบเบฑเบš compiler JIT, เบšเปเปˆเป„เบ”เป‰เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบ„เบทเบเบฑเบ™.)

เป‚เบŠเบเบ”เบต, เบšเบฒเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ algorithmic เป„เบ”เป‰เบกเบฒเบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบ™เบตเป‰. "เบ•เบปเบงเป€เบฅเบฑเปˆเบ‡" เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบžเบตเปˆเบก. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบขเบนเปˆเป€เบšเบทเป‰เบญเบ‡เบซเบฅเบฑเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบ‡เปˆเบฒเบเบ”เบฒเบ: เบ–เป‰เบฒเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบšเปเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ mypy เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เปเบฅเปˆเบ™เบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš dependencies. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹เบ•เป‰เบญเบ‡โ€‹เบเบฒเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เปเบเป‰โ€‹เป„เบ‚โ€‹เปเบฅเบฐโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบ‚เบถเป‰เบ™โ€‹เบเบฑเบšโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹. Mypy เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบˆเบฐเป„เบ›เบ•เบทเปˆเบกเบญเบตเบเป€เบฅเบฑเบเบ™เป‰เบญเบ: เบ–เป‰เบฒเบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เป‚เบกเบ”เบนเบ™เบšเปเปˆเบ›เปˆเบฝเบ™เปเบ›เบ‡, mypy เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเป‚เบกเบ”เบนเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป‚เบกเบ”เบนเบ™เบ™เบตเป‰เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡.

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป„เบ”เป‰เบŠเปˆเบงเบเบžเบงเบเป€เบฎเบปเบฒเบซเบผเบฒเบเป€เบกเบทเปˆเบญเบ‚เบฝเบ™เบšเบฑเบ™เบ—เบถเบเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆเป€เบ›เบฑเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบงเบ‡เบซเบผเบฒเบ. เบˆเบธเบ”เปเบกเปˆเบ™เบงเปˆเบฒเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบ™เบตเป‰เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™ mypy เบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบซเบผเบฒเบเป€เบ›เบฑเบ™ annotations เบ„เปˆเบญเบเป†เป€เบžเบตเปˆเบกเปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบ„เปˆเบญเบเป†เบ›เบฑเบšเบ›เบธเบ‡. เป„เบฅเบเบฐเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡ mypy เปเบกเปˆเบ™เบเบฑเบ‡เบŠเป‰เบฒเบซเบผเบฒเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒเบกเบฑเบ™เบกเบตเบซเบผเบฒเบ dependencies เบ—เบตเปˆเบˆเบฐเบเบงเบ”เบชเบญเบš. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเบ›เบฑเบšเบ›เบธเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบปเบ™เป„เบเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบ. เบ–เป‰เบฒ mypy เบเบงเบ”เบžเบปเบšเบงเปˆเบฒ cache เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบกเบตเปเบ™เบงเป‚เบ™เป‰เบกเบ—เบตเปˆเบˆเบฐเบฅเป‰เบฒเบชเบฐเป„เบซเบก, เบกเบฑเบ™เบˆเบฐเบ”เบฒเบงเป‚เบซเบฅเบ” cache snapshot เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบชเปเบฒเบฅเบฑเบš codebase เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฒเบ repository เบชเบนเบ™เบเบฒเบ‡. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป‚เบ”เบเปƒเบŠเป‰เบžเบฒเบšเบ–เปˆเบฒเบเบ™เบตเป‰. เบ™เบตเป‰เป„เบ”เป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบžเบงเบเป€เบฎเบปเบฒเบญเบตเบเบšเบฒเบ”เบเป‰เบฒเบงเบซเบ™เบถเปˆเบ‡เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ•เปเปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ‚เบญเบ‡ mypy.

เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป„เบฅโ€‹เบเบฐโ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบฎเบฑเบšโ€‹เบฎเบญเบ‡โ€‹เป€เบญเบปเบฒโ€‹เบขเปˆเบฒเบ‡โ€‹เบงเปˆเบญเบ‡โ€‹เป„เบงโ€‹เปเบฅเบฐโ€‹เบ—เปเบฒโ€‹เบกเบฐโ€‹เบŠเบฒเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบšโ€‹เบ›เบฐโ€‹เป€เบžเบ”โ€‹เบขเบนเปˆ Dropboxโ€‹. เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡ 2016, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ›เบฐเบกเบฒเบ™ 420000 เป€เบชเบฑเป‰เบ™เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python เบ—เบตเปˆเบกเบตเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”. เบœเบนเป‰เปƒเบŠเป‰เบซเบผเบฒเบเบ„เบปเบ™เบเบฐเบ•เบทเบฅเบทเบฅเบปเป‰เบ™เปƒเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”. เบ—เบตเบกเบ‡เบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฒเบเบเบงเปˆเบฒเปเบฅเบฐเบซเบผเบฒเบเป„เบ”เป‰เปƒเบŠเป‰ Dropbox mypy.

เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบšเบดเปˆเบ‡เบ”เบตเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบกเบตเบซเบผเบฒเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”เบœเบนเป‰เปƒเบŠเป‰เบžเบฒเบเปƒเบ™เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบžเบทเป‰เบ™เบ—เบตเปˆเบšเบฑเบ™เบซเบฒเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เปเบฅเบฐเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเบšเบฑเบ™เบซเบฒเปƒเบ”เปเบ”เปˆเบ—เบตเปˆเบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบเปˆเบญเบ™ (เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบšเปเบฅเบดเบชเบฑเบ”เปƒเบ™เบกเบทเป‰เบ™เบตเป‰). เบชเบดเปˆเบ‡เบ—เบตเปˆ เบชเบณ เบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”, เบเป‰เบญเบ™เบงเปˆเบฒเบกเบฑเบ™เบˆเบฐเปเบˆเป‰เบ‡, เปเบกเปˆเบ™เบชเบญเบ‡เบงเบฝเบเบ‡เบฒเบ™. เบซเบ™เป‰เบฒเบ—เปเบฒเบญเบดเบ”, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เบ›เบฐเป€เบžเบ”เบฅเบฐเบซเบฑเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ mypy เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบงเบฝเบเป„เบงเบ‚เบถเป‰เบ™. เบกเบฑเบ™เป€เบ›เบฑเบ™เบ—เบตเปˆเบŠเบฑเบ”เป€เบˆเบ™เปเบ—เป‰เป†เบงเปˆเบฒเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡ mypy เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบกเบฑเบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เปเบกเปˆเบ™เบเบฑเบ‡เบขเบนเปˆเป„เบเบšเปเปˆเบชเปเบฒเป€เบฅเบฑเบ”. เบžเบงเบเป€เบฎเบปเบฒ, เบฎเบนเป‰เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ‚เบญเบ‡เบ—เบฑเบ‡เบชเบญเบ‡เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰, เบเปเบฒเบ™เบปเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ.

เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบ!

เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เป€เบฎเบฑเบ”เปƒเบซเป‰ mypy เป„เบงเบ‚เบถเป‰เบ™, เปเบ•เปˆเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเบฑเบ‡เบšเปเปˆเป„เบงเบžเบฝเบ‡เบžเป. เบเบฒเบ™เบเบงเบ”เป€เบžเบตเปˆเบกเบซเบผเบฒเบเบ„เบฑเป‰เบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบ›เบฐเบกเบฒเบ™เปœเบถเปˆเบ‡เบ™เบฒเบ—เบต. เป€เบซเบ”เบœเบปเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบฎเบญเบšเบงเบฝเบ™. เบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบšเปเปˆเปเบ›เบเปƒเบˆเปƒเบœเบ—เบตเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš codebases เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบŠเบธเบ”เบซเบผเบฒเบเบฎเป‰เบญเบเป‚เบกเบ”เบนเบ™, เปเบ•เปˆเบฅเบฐเบญเบฑเบ™เป„เบ”เป‰เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป‚เบ”เบเบ—เบฒเบ‡เบญเป‰เบญเบก. เบ–เป‰เบฒเป„เบŸเบฅเปŒเปƒเบ”เบ™เบถเปˆเบ‡เปƒเบ™เบงเบปเบ‡เบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡, mypy เบ•เป‰เบญเบ‡เป„เบ”เป‰เบ›เบฐเบกเบงเบ™เบœเบปเบ™เป„เบŸเบฅเปŒเบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ loop เบ™เบฑเป‰เบ™, เปเบฅเบฐเป€เบฅเบทเป‰เบญเบเป†เบ—เบธเบเป‚เบกเบ”เบนเบ™เบ—เบตเปˆเบ™เปเบฒเป€เบ‚เบปเป‰เบฒเป‚เบกเบ”เบนเบ™เบˆเบฒเบ loop เบ™เบฑเป‰เบ™. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบงเบปเบ‡เบˆเบญเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™ "เบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช" เบ—เบตเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบšเบฑเบ™เบซเบฒเบซเบผเบฒเบเบขเบนเปˆ Dropbox. เป€เบกเบทเปˆเบญเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ™เบตเป‰เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบซเบผเบฒเบเบฎเป‰เบญเบเป‚เบกเบ”เบนเบ™, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบกเบฑเบ™เบ–เบทเบเบ™เปเบฒเป€เบ‚เบปเป‰เบฒ, เป‚เบ”เบเบเบปเบ‡เบซเบผเบทเบ—เบฒเบ‡เบญเป‰เบญเบก, เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบ, เบกเบฑเบ™เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบดเบˆเบฒเบฅเบฐเบ™เบฒเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบ‚เบญเบ‡ "untangling" เบเบฒเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบงเบปเบ‡, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบกเบฑเบ™. เบกเบตเบฅเบฐเบซเบฑเบ”เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ„เบธเป‰เบ™เป€เบ„เบตเบเบเบฑเบš. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบกเบฒเป€เบ–เบดเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เป€เบฎเบฑเบ”โ€‹เปƒเบซเป‰ mypy เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบขเปˆเบฒเบ‡โ€‹เบงเปˆเบญเบ‡โ€‹เป„เบงโ€‹เป€เบ–เบดเบ‡โ€‹เปเบกเปˆเบ™โ€‹เบงเปˆเบฒโ€‹เบขเบนเปˆโ€‹เปƒเบ™โ€‹เบ—เบตเปˆโ€‹เบ›เบฐโ€‹เบ—เบฑเบšโ€‹เบ‚เบญเบ‡ โ€œtangles dependencyโ€. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบšเบฑเบ™เบฅเบธเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ™เบตเป‰เป‚เบ”เบเปƒเบŠเป‰ mypy daemon. daemon เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เป€เบŠเบตเบŸเป€เบงเบตเบ—เบตเปˆเบ›เบฐเบ•เบดเบšเบฑเบ”เบชเบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ. เบ—เปเบฒเบญเบดเบ”, เบกเบฑเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบš codebase เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ mypy, เบ—เปˆเบฒเบ™เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป‚เบซเบฅเบ”เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบžเบฑเบ™เบ‚เบญเบ‡ dependencies เบ™เปเบฒเป€เบ‚เบปเป‰เบฒ. เบญเบฑเบ™เบ—เบตเบชเบญเบ‡, เบฅเบฒเบงเบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ‡เบฒเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบ, เบงเบดเป€เบ„เบฒเบฐเบ„เบงเบฒเบกเป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบชเบฅเบฐเบซเบงเปˆเบฒเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเปเบฅเบฐเบซเบ™เปˆเบงเบเบ‡เบฒเบ™เบญเบทเปˆเบ™เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบซเบ™เป‰เบฒเบ—เบตเปˆ foo เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™ bar, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบเบฒเบ™เป€เบžเบดเปˆเบ‡เบžเบฒเบญเบฒเป„เบช foo เบˆเบฒเบ bar. เป€เบกเบทเปˆเบญเป„เบŸเบฅเปŒเบ›เปˆเบฝเบ™เปเบ›เบ‡, daemon เบ—เปเบฒเบญเบดเบ”, เปƒเบ™เบเบฒเบ™เป‚เบ”เบ”เบ”เปˆเบฝเบง, เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เป„เบŸเบฅเปŒเบ™เบฑเป‰เบ™, เป€เบŠเบฑเปˆเบ™: เบฅเบฒเบเป€เบŠเบฑเบ™เบ‚เบญเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡. daemon เปƒเบŠเป‰เบ‚เปเป‰เบกเบนเบ™เบฅเบฐเบญเบฝเบ”เบเปˆเบฝเบงเบเบฑเบšเบเบฒเบ™เบ™เปเบฒเป€เบ‚เบปเป‰เบฒเบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบชเบญเบ‡เบ„เบฑเป‰เบ‡เบ—เบตเปˆเบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบด, เบ”เป‰เบงเบเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบงเบ”เป€เบšเบดเปˆเบ‡เบซเบ™เป‰เบฒเบ—เบตเปˆเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”.

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบ, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” mypy เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปเบกเปˆเบ™เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เบ›เบธเบ‡เปเบ•เปˆเบ‡เป„เบŸเบฅเปŒเบซเบ™เบถเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบŠเบฒเบเปเบ”เบ™เบซเบผเบฒเบ, เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ—เบตเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบŠเป‰เปเบฒเบŠเป‰เบญเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบฅเบฐเบซเบฑเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป€เบกเบทเปˆเบญเบŠเบฑเป‰เบ™เบฎเบฝเบ™เบ–เบทเบเบกเบญเบšเบซเบกเบฒเบเบŠเบฑเป‰เบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เปƒเบซเบกเปˆ. เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เบœเปˆเบญเบ™เป€เบงเบฅเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบซเบผเบฒเบเบ—เบตเปˆเบชเบธเบ”เบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เบชเบฒเบกเบงเบดเบ™เบฒเบ—เบต. เบ™เบตเป‰เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒเป€เบ›เบฑเบ™เป„เบŠเบŠเบฐเบ™เบฐเบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบ•เปเปˆเบžเบงเบเป€เบฎเบปเบฒ.

เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบเบ‚เบถเป‰เบ™!

เบฎเปˆเบงเบกเบเบฑเบ™เบเบฑเบšเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบซเปˆเบฒเบ‡เป„เบเบชเบญเบเบซเบผเบตเบเบ—เบตเปˆเบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเบปเบ™เบ—เบฐเบ™เบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, daemon mypy เป€เบเบทเบญเบšเบซเบกเบปเบ”เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเป€เบเบตเบ”เบ‚เบทเป‰เบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เป€เบฅเบทเป‰เบญเบเป†, เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒเบˆเปเบฒเบ™เบงเบ™เบ™เป‰เบญเบเป†. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบšเบปเบšเปƒเบ™เบเปเบฅเบฐเบ™เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเป€เบญเบทเป‰เบญเบญเปเบฒเบ™เบงเบเบซเบ™เป‰เบญเบเปเบกเปˆเบ™เบเบฑเบ‡เบขเบนเปˆเป„เบเบˆเบฒเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”. เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบชเบฐเบญเบฒเบ”เบ‚เบญเบ‡ mypy เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบเบเบงเปˆเบฒ 15 เบ™เบฒเบ—เบต. เปเบฅเบฐโ€‹เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒโ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบชเบธเบโ€‹เบเบฑเบš. เบ—เบธเบเป†เบญเบฒเบ—เบดเบ”เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบฎเป‰เบฒเบเปเบฎเบ‡เบ‚เบถเป‰เบ™เบเป‰เบญเบ™เบงเปˆเบฒเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบชเบทเบšเบ•เปเปˆเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบซเบกเปˆเปเบฅเบฐเป€เบžเบตเปˆเบกเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเปƒเบชเปˆเบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบกเบตเบขเบนเปˆ. เบœเบนเป‰เปƒเบŠเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบซเบดเบงเบชเปเบฒเบฅเบฑเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบžเบตเปˆเบกเป€เบ•เบตเบก, เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ„เบงเบฒเบกเบเบดเบ™เบ”เบตเบ—เบตเปˆเป„เบ”เป‰เบžเบปเบšเบเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเป€เบ„เบดเปˆเบ‡เบ—เบฒเบ‡.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบเบฑเบšเบ„เบทเบ™เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบเปˆเบฝเบงเบเบฑเบš mypy. เบ„เบท, เป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เบฅเบฐเบซเบฑเบ” Python เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ” C. เบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบš Cython (เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เปเบ›เบฅเบฐเบซเบฑเบ”เบ—เบตเปˆเบ‚เบฝเบ™เปƒเบ™ Python เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเบฐเบซเบฑเบ” C) เบšเปเปˆเป„เบ”เป‰เปƒเบซเป‰เบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเป€เบซเบฑเบ™เป„เบ”เป‰, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบถเปˆเบ‡เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเบ—เบตเปˆเบˆเบฐเบŸเบทเป‰เบ™เบŸเบนเปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™ compiler เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบ‡. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ mypy codebase (เบ‚เบฝเบ™เปƒเบ™ Python) เบกเบตเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบ„เบดเบ”เบงเปˆเบฒเบกเบฑเบ™เบ„เบธเป‰เบกเบ„เปˆเบฒเบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เป€เบžเบทเปˆเบญเป€เบฅเบฑเปˆเบ‡เบฅเบฐเบšเบปเบš. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบšเบšเบขเปˆเบฒเบ‡เป„เบงเป€เบžเบทเปˆเบญเบ—เบปเบ”เบชเบญเบšเบ„เบงเบฒเบกเบ„เบดเบ”เบ™เบตเป‰. เบกเบฑเบ™เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบผเบฒเบเบเบงเปˆเบฒ 10 เป€เบ—เบปเปˆเบฒเปƒเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™เบˆเบธเบ™เบฅเบฐเบžเบฒเบเบ•เปˆเบฒเบ‡เป†. เปเบ™เบงเบ„เบงเบฒเบกเบ„เบดเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเป‚เบกเบ”เบนเบ™ Python เป€เบ›เบฑเบ™เป‚เบกเบ”เบนเบ™ C เป‚เบ”เบเปƒเบŠเป‰ Cython, เปเบฅเบฐเบ›เปˆเบฝเบ™เบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เป€เบ›เบฑเบ™เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”เป€เบงเบฅเบฒเปเบฅเปˆเบ™ (เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบ„เปเบฒเบšเบฑเบ™เบเบฒเบเบ›เบฐเป€เบžเบ”เบˆเบฐเบ–เบทเบเบฅเบฐเป€เบฅเบตเบเปƒเบ™เป€เบงเบฅเบฒเปเบฅเปˆเบ™เปเบฅเบฐเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเบฅเบฐเบšเบปเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ›เบฐเป€เบžเบ”). เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบงเบฒเบ‡เปเบœเบ™เบ—เบตเปˆเบˆเบฐเปเบ›เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” mypy เบˆเบฒเบ Python เป€เบ›เบฑเบ™เบžเบฒเบชเบฒเบ—เบตเปˆเบ–เบทเบเบญเบญเบเปเบšเบšเบกเบฒเป€เบžเบทเปˆเบญเบžเบดเบกเปเบšเบšเบ„เบปเบ‡เบ—เบตเปˆ, เบ—เบตเปˆเบˆเบฐเป€เบšเบดเปˆเบ‡ (เปเบฅเบฐ, เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เป€เบฎเบฑเบ”เบงเบฝเบ) เบ„เบทเบเบฑเบ™เบเบฑเบš Python. (เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเบ‚เป‰เบฒเบกเบžเบฒเบชเบฒเบ™เบตเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ›เบฐเป€เบžเบ™เบตเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ mypy. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ” mypy เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเป„เบ”เป‰เบ–เบทเบเบ‚เบฝเบ™เปƒเบ™ Alore, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบตเบเบฒเบ™เบ›เบฐเบชเบปเบก syntactic เบ‚เบญเบ‡ Java เปเบฅเบฐ Python).

เบเบฒเบ™เบชเบธเบกเปƒเบชเปˆ API เบชเปˆเบงเบ™เบ‚เบฐเบซเบเบฒเบ CPython เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบˆเบฐเบšเปเปˆเบชเบนเบ™เป€เบชเบเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ„เบทเปˆเบญเบ‡ virtual เบซเบผเบทเบซเป‰เบญเบ‡เบชเบฐเบซเบกเบธเบ”เปƒเบ”เป†เบ—เบตเปˆ mypy เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ” Python เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบฅเบฐเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบฑเบ‡เบซเบกเบปเบ” (เป€เบŠเบฑเปˆเบ™ pytest). เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเบทเบšเบ•เปเปˆเบ™เปเบฒเปƒเบŠเป‰เบฅเบฐเบซเบฑเบ” Python เบ—เบตเปˆเบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบซเบกเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ, เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบšเบฎเบนเบšเปเบšเบšเบ—เบตเปˆเป„เบงเบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เปเบฅเบฐเบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบกเบฑเบ™, เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเบฅเปเบ–เป‰เบฒเบฅเบฐเบซเบฑเบ”เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบก. เป€เบšเบดเปˆเบ‡โ€‹เบ„เบทโ€‹เบงเปˆเบฒโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เป€เบฎเบฑเบ”โ€‹เบงเบฝเบโ€‹เบ—เบตเปˆโ€‹เบ”เบตโ€‹เบ—เบตเปˆโ€‹เบชเบธเบ”โ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เบฑเปˆเบ‡โ€‹เบ•เบฑเปˆเบ‡โ€‹เบชเบญเบ‡โ€‹เป‚เบ•, เป€เบžเบทเปˆเบญโ€‹เป€เบงเบปเป‰เบฒ, เปเบฅเบฐโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบฑเบโ€‹เบกเบฑเบ™.

compiler, เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป€เบญเบตเป‰เบ™เบงเปˆเบฒ mypyc (เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบกเบฑเบ™เปƒเบŠเป‰ mypy เป€เบ›เบฑเบ™ front-end เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบงเบดเป€เบ„เบฒเบฐเบ›เบฐเป€เบžเบ”), เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบเบฒเบ™เบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบซเบผเบฒเบ. เป‚เบ”เบเบฅเบงเบกเปเบฅเป‰เบง, เบžเบงเบเป€เบฎเบปเบฒเบšเบฑเบ™เบฅเบธเป„เบ”เป‰เบ›เบฐเบกเบฒเบ™ 4x speedup เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™ mypy เป€เบฅเบทเป‰เบญเบเป†เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ. เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฑเบเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™ mypyc เป„เบ”เป‰เปƒเบŠเป‰เป€เบงเบฅเบฒเบ—เบตเบกเบ‡เบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ‚เบญเบ‡ Michael Sullivan, Ivan Levkivsky, Hugh Hahn, เปเบฅเบฐเบ•เบปเบ™เป€เบญเบ‡เบ›เบฐเบกเบฒเบ™ 4 เป€เบ”เบทเบญเบ™เบ›เบฐเบ•เบดเบ—เบดเบ™. เบˆเปเบฒเบ™เบงเบ™เบงเบฝเบเบ‡เบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบ™เป‰เบญเบเบเบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบ‚เบฝเบ™ mypy เบ„เบทเบ™เปƒเปเปˆ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™ C++ เบซเบผเบท Go. เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป‚เบ„เบ‡เบเบฒเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เป€เบฎเบฑเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เบฝเบ™เปƒเบซเบกเปˆเปƒเบ™เบžเบฒเบชเบฒเบญเบทเปˆเบ™. เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบซเบงเบฑเบ‡เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ™เปเบฒ mypyc เป„เบ›เบชเบนเปˆเบฅเบฐเบ”เบฑเบšเบ—เบตเปˆเบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก Dropbox เบญเบทเปˆเบ™เป†เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบกเบฑเบ™เป€เบžเบทเปˆเบญเบฅเบงเบšเบฅเบงเบกเปเบฅเบฐเป€เบฅเบฑเปˆเบ‡เบฅเบฐเบซเบฑเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒ.

เป€เบžเบทเปˆเบญเบšเบฑเบ™เบฅเบธเบฅเบฐเบ”เบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เปƒเบŠเป‰เบงเบดเบ—เบตเปเบเป‰เป„เบ‚เบงเบดเบชเบฐเบงเบฐเบเปเบฒเบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบปเบ™เปƒเบˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, compiler เบชเบฒเบกเบฒเบ”เป€เบฅเบฑเปˆเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบฒเบเบขเปˆเบฒเบ‡เป‚เบ”เบเปƒเบŠเป‰เป‚เบ„เบ‡เบชเป‰เบฒเบ‡ C เบ—เบตเปˆเป„เบง, เบ•เปˆเปเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เป€เบญเบตเป‰เบ™เบŸเบฑเบ‡เบŠเบฑเบ™เบ—เบตเปˆเบ–เบทเบเบฅเบงเบšเบฅเบงเบกเปเบกเปˆเบ™เปเบ›เป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ—เบŸเบฑเบ‡เบŠเบฑเบ™ C. เปเบฅเบฐเบเบฒเบ™เป‚เบ—เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบกเปˆเบ™เป„เบงเบเบงเปˆเบฒเบเบฒเบ™เป‚เบ—เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเปเบ›. เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบšเบฒเบ‡เบขเปˆเบฒเบ‡, เป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เบŠเบญเบเบซเบฒเบงเบฑเบ”เบˆเบฐเบ™เบฒเบ™เบธเบเบปเบก, เบเบฑเบ‡เบกเบตเบชเปˆเบงเบ™เบฎเปˆเบงเบกเบเบฑเบšเบเบฒเบ™เปƒเบŠเป‰เบเบฒเบ™เป‚เบ— C-API เบ›เบปเบเบเบฐเบ•เบดเบˆเบฒเบ CPython, เป€เบŠเบดเปˆเบ‡เบžเบฝเบ‡เปเบ•เปˆเป„เบงเบเบงเปˆเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบเป€เบกเบทเปˆเบญเบ–เบทเบเบฅเบงเบšเบฅเบงเบก. เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบฅเบปเบšเบฅเป‰เบฒเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบฅเบฐเบšเบปเบšเบ—เบตเปˆเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™เป‚เบ”เบเบเบฒเบ™เบ•เบตเบ„เบงเบฒเบก, เปเบ•เปˆเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบœเบปเบ™เบ›เบฐเป‚เบซเบเบ”เบžเบฝเบ‡เปเบ•เปˆเป€เบฅเบฑเบเบ™เป‰เบญเบเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”.

เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ "เบŠเป‰เบฒ" เบ—เบปเปˆเบงเป„เบ›เบ—เบตเปˆเบชเบธเบ”, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบฅเบฐเบซเบฑเบ” profileing. เบ›เบฐเบเบญเบšเบญเบฒเบงเบธเบ”เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฐเบเบฒเบเบฒเบกเบ›เบฑเบš mypyc เป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” C เป„เบงเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เบซเบผเบทเบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” Python เบ—เบตเปˆเบชเบญเบ”เบ„เป‰เบญเบ‡เบเบฑเบ™เป‚เบ”เบเปƒเบŠเป‰เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป„เบงเบ‚เบถเป‰เบ™ (เปเบฅเบฐเบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบกเบตเบเบฒเบ™เปเบเป‰เป„เบ‚เบ‡เปˆเบฒเบเป†เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเบšเบฑเบ™เบซเบฒเบ™เบฑเป‰เบ™เบซเบผเบทเบšเบฑเบ™เบซเบฒเบญเบทเปˆเบ™เป†) . เบเบฒเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ” Python เบ„เบทเบ™เปƒเปเปˆเบกเบฑเบเบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบ‡เปˆเบฒเบเบเบงเปˆเบฒเบ—เบตเปˆ compiler เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เปเบšเบšเบ”เบฝเบงเบเบฑเบ™. เปƒเบ™เป„เบฅเบเบฐเบเบฒเบง, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฒเบ™เบซเบฑเบ™เบ›เปˆเบฝเบ™เบซเบผเบฒเบเบขเปˆเบฒเบ‡, เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เป€เบฅเบฑเปˆเบ‡ mypy เบ”เป‰เบงเบเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบซเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ”. เปเบฅเบฐเปƒเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป„เบ›เบชเบนเปˆเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบ•เบฑเบ”เบซเบผเบฒเบเบกเบธเบก.

เบ•เบดเบ”โ€‹เบ•เบฒเบกโ€‹เบ•เบญเบ™โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€ฆ

เบ—เปˆเบฒเบ™เบœเบนเป‰เบญเปˆเบฒเบ™เบ—เบตเปˆเบฎเบฑเบเปเบžเบ‡! เปเบกเปˆเบ™เบซเบเบฑเบ‡เบ„เบทเบ„เบงเบฒเบกเบ›เบฐเบ—เบฑเบšเปƒเบˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ•เปเปˆเป‚เบ„เบ‡เบเบฒเบ™ mypy เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™เป„เบ”เป‰เบฎเบฝเบ™เบฎเบนเป‰เป€เบ–เบดเบ‡เบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เบกเบฑเบ™?

เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 2
เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบชเบนเปˆเบเบฒเบ™เบžเบดเบกเบฅเบฐเบซเบฑเบ” 4 เบฅเป‰เบฒเบ™เปเบ–เบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ” Python. เบžเบฒเบเบ—เบต 2

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™