Π Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΎ Π½Π° Python ΠΏΠ°ΠΊΠ΅ΡΠΈ PyPI (Python Package Index) Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½ΠΎΠ² Π·Π°ΡΠΈΡΠ΅Π½ ΠΌΠ΅ΡΠΎΠ΄ Π·Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΡΠ΅ Π·Π°ΠΎΠ±ΠΈΠΊΠΎΠ»ΡΡ ΡΠΈΠΊΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API Π² Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² GitHub Actions). ΠΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΠΏΠΎΠ»ΡΡΠΈ ΠΈΠΌΠ΅ΡΠΎ βTrusted Publishersβ ΠΈ ΠΈΠΌΠ° Π·Π° ΡΠ΅Π» Π΄Π° ΡΠ΅ΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π°ΠΊΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΡΠΎΠΈΠ·ΡΠΈΡΠ°ΡΠΈ ΠΎΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²ΡΠ½ΡΠ½ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ ΠΏΠ°ΡΠΎΠ»ΠΈ ΠΈΠ»ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π² ΡΡΡΠ΅ΡΠ΅ Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ Π»ΠΈΡΠ°.
ΠΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π° Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π° Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenID Connect (OIDC), ΠΊΠΎΠΉΡΠΎ ΠΏΡΠ΅Π΄Π²ΠΈΠΆΠ΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΠ΅Π»Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ ΡΡΠΎΠΊ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΊΠΎΠΈΡΠΎ Π²ΡΠ½ΡΠ½ΠΈΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° PyPI ΠΎΠ±ΠΌΠ΅Π½ΡΡ ΠΏΠΎΠΌΠ΅ΠΆΠ΄Ρ ΡΠΈ Π·Π° ΠΏΠΎΡΠ²ΡΡΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡΠ° ΠΏΠΎ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ, Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΈΡ Π»ΠΎΠ³ΠΈΠ½/ΠΏΠ°ΡΠΎΠ»Π° ΠΈΠ»ΠΈ ΡΡΡΠ½ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ API. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° βTrusted Publishersβ Π²Π΅ΡΠ΅ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ, ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ Π² GitHub Actions. Π Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ΅ ΠΎΡΠ°ΠΊΠ²Π° Π΄Π° ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Trusted Publishers ΠΈ Π·Π° Π΄ΡΡΠ³ΠΈ Π²ΡΠ½ΡΠ½ΠΈ ΡΡΠ»ΡΠ³ΠΈ.
Π‘ΡΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π½Π° ΡΡΡΠ°Π½Π°ΡΠ° Π½Π° PyPI Π΄Π° Π·Π°Π΄Π°Π΄Π°Ρ Π·Π½Π°ΠΊ Π·Π° Π΄ΠΎΠ²Π΅ΡΠΈΠ΅ Π½Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ ΠΎΡ Π²ΡΠ½ΡΠ½ΠΈ Π΄ΠΎΡΡΠ°Π²ΡΠΈΡΠΈ Π½Π° OpenID (IdP, OpenID Connect Identity Provider), ΠΊΠΎΠΈΡΠΎ Π²ΡΠ½ΡΠ½Π°ΡΠ° ΡΡΠ»ΡΠ³Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π·Π°ΡΠ²ΠΊΠ° ΠΎΡ PyPI Π·Π° ΠΊΡΠ°ΡΠΊΠΎΡΡΠ°ΠΉΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ. ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈ OpenID Connect ΠΏΠΎΡΠ²ΡΡΠ΄ΡΠ²Π°Ρ Π²ΡΡΠ·ΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° PyPI Π΄Π° ΠΈΠ·Π²ΡΡΡΠ²Π° Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°, ΡΠ΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΈΡΡ ΠΏΠ°ΠΊΠ΅Ρ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π° Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅. Π’ΠΎΠΊΠ΅Π½ΠΈΡΠ΅ Π½Π΅ ΡΠ΅ ΡΡΡ ΡΠ°Π½ΡΠ²Π°Ρ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ ΡΠ° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ API ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΏΡΠ΅ΠΊΡΠ°ΡΡΠ²Π°Ρ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ ΡΠΈ ΡΠ»Π΅Π΄ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΡΠ°ΡΠΊΠΈΡ ΡΡΠΎΠΊ Π½Π° Π²Π°Π»ΠΈΠ΄Π½ΠΎΡΡ.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ Π΄ΠΎΠΊΠ»Π°Π΄ΡΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΡΠ° Sonatype Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ ΠΏΡΠ΅Π· ΠΌΠ°ΡΡ 2023 Π³ΠΎΠ΄ΠΈΠ½Π° 6933 Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° PyPI. ΠΠ±ΡΠΎ ΠΎΡ 2019 Π³ΠΎΠ΄ΠΈΠ½Π° Π±ΡΠΎΡΡ Π½Π° ΠΎΡΠΊΡΠΈΡΠΈΡΠ΅ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π² PyPI Π½Π°Π΄Ρ
Π²ΡΡΠ»ΠΈ 115 Ρ
ΠΈΠ»ΡΠ΄ΠΈ. ΠΠΎΠ»ΡΠΌΠ°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Ρ ΠΏΠΎΠ΄ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΡΠ΅Π· ΡΠΈΠΏΡΠΊΠ²ΠΎΡΠΈΠ½Π³ (Π½Π°Π·Π½Π°ΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΈΠΌΠ΅Π½Π°, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠ°Π²Π°Ρ Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, exampl Π²ΠΌΠ΅ΡΡΠΎ example, djangoo Π²ΠΌΠ΅ΡΡΠΎ django, pyhton Π²ΠΌΠ΅ΡΡΠΎ python ΠΈ Ρ.Π½.) β Π·Π»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π»ΠΈΡΠ° ΡΠ°Π·ΡΠΈΡΠ°Ρ Π½Π° Π½Π΅Π±ΡΠ΅ΠΆΠ½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ°Π²ΡΡ ΠΏΠ΅ΡΠ°ΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π½Π΅ Π·Π°Π±Π΅Π»ΡΠ·Π²Π°Ρ ΡΠ°Π·Π»ΠΈΠΊΠΈΡΠ΅ Π² ΠΈΠΌΠ΅ΡΠΎ ΠΏΡΠΈ ΡΡΡΡΠ΅Π½Π΅. ΠΠ»ΠΎΠ½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΡΠ΅ ΡΠ²Π΅ΠΆΠ΄Π°Ρ Π΄ΠΎ ΠΈΠ·ΠΏΡΠ°ΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΎΡΠΊΡΠΈΡΠΈ Π½Π° Π»ΠΎΠΊΠ°Π»Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° Π² ΡΠ΅Π·ΡΠ»ΡΠ°Ρ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Ρ ΠΏΠ°ΡΠΎΠ»ΠΈ, ΠΊΠ»ΡΡΠΎΠ²Π΅ Π·Π° Π΄ΠΎΡΡΡΠΏ, ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠΈ, ΡΠΎΠΊΠ΅Π½ΠΈ, ΡΠ΅ΡΠΈΠΉΠ½ΠΈ Π±ΠΈΡΠΊΠ²ΠΈΡΠΊΠΈ ΠΈ Π΄ΡΡΠ³Π° ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
