ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π² ΠΌΠΎΠ΅ΠΌ Π±Π»ΠΎΠ³Π΅: https://www.kevinpeters.net/auto-formatters-for-python
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ Π² Π½Π΅Π΄Π°Π²Π½Π΅ΠΌ ΠΠΏΡΠΎΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Stack Overflow , Python – ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π‘ Π½Π΅Π΄Π°Π²Π½ΠΈΠΌ ΡΠΎΡΡΠΎΠΌ Ρ ΠΎΡΠΎΡΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠ΄Π°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ GOFMT Π΄Π»Ρ ΠΠΎΠ»Π°Π½Π³Π° ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠΈΠ²ΠΎ ΠΠ»Ρ JavaScript Π΅ΡΡΡ Ρ ΠΎΡΠΎΡΠΈΠΉ Π²ΠΎΠΏΡΠΎΡ: ΠΊΠ°ΠΊΠΎΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΊΠΎΠ΄ΠΎΠΌ Python? ΠΠ²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ – ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°Π» ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ.
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ ΠΌΡ Π·Π½Π°Π΅ΠΌ ΠΏΡΠΈΡΠΈΠ½Ρ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Prottier – ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ Π΄Π»Ρ ΠΊΠΎΠ΄Π° JavaScript. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΊΡΡΠΏΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Facebook , PayPal, Algolia, Yelp, Discord ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΠ΄Π΅ΡΡ ΠΠ½ΠΊΠ΅Ρ ΠΡΠΈΡΠΈΠ½Ρ ΡΡΠΎΠ³ΠΎ:
ΠΠ°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΡΡΠΈΠ»Ρ Π΄Π»Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΡΡΠΎΠ²Π½Π΅ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ ΡΠ΅ΡΠ°Π΅Ρ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠΎ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΈΡΠΊΡΡΡΠΈΠΉ ΠΎ Π½Π΅Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΠ°Ρ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π° ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½
ΠΠ΅Π½ΡΡΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² ΡΠ»ΠΈΡΠ½ΠΈΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΈΠ»Ρ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΡΠΎ ΠΆΠ΅
ΠΡΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΠΎΡΠΈΠΌΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠΎΠ². ΠΡΠΎ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ°ΠΌ Π²ΡΠ΅ΠΌΡ ΠΈ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ Π±ΡΠ΄ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
ΠΠ»Ρ Python Π΅ΡΡΡ ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ:
Autopep8 – GitHub
Autopep8-ΡΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ, ΠΎΡΠΊΡΡΡΡΠΉ ΠΈ ΠΈΠ·Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΡΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΠ½ΠΊΠ΅Ρ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠ°ΠΌΠΎΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΡΠ΅ΠΉΡΠ°Ρ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉΡΠΈΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ². ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Pycodestyle Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ ΡΠ°ΡΡΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ PEP-Guidelines ΠΈ ΠΏΠΎΠΏΡΡΠ°ΡΡΡΡ ΠΈΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² ΡΡΠ΅Π½ΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ PEP. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΠ΄Π΅ΡΡ ΠΠ½ΠΊΠ΅Ρ ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»Π°Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ. ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π·Π°ΠΏΠΈΡΠΈ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ Π±ΡΠ»ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 2200 Π·Π²Π΅Π·Π΄ (ΠΈΡΠ½Ρ 2018 Π³ΠΎΠ΄Π°).
Π―ΠΏΡ – GitHub
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ Python ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π½ΠΈΡΠ΅ΠΌ ΠΈΠ½ΡΠΌ, ΠΊΠ°ΠΊ Google . ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ~ 7200 Π·Π²Π΅Π·Π΄ (ΠΈΡΠ½Ρ 2018 Π³ΠΎΠ΄Π°) Π½Π° GitHub ΠΈ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° Π΄ΡΡΠ³ΠΈΠΌ ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Autopep8. ΠΠ½ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄Ρ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ PEP, ΠΈ Π½Π΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π»ΠΈΡΠΈΠ½ΠΊΠΎΠΉ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄. ΠΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ, ΡΡΠΎ ΡΡΠ°ΡΠΈΡ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, YAPF Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ. ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ PEP8, Google, Facebook ΠΈ ΡΡΠΈΠ»Ρ Ρ ΡΠΎΠΌΠ°. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠ°Π²ΠΈΠ» ΡΡΠΈΠ»Ρ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π‘Π΅ΠΊΡΠΈΡ ΡΡΡΠ΅ΠΊ Π§ΠΈΡΠ°. ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΎΠ½Π»Π°ΠΉΠ½ -Π²Π΅ΡΡΠΈΡ, Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΠ΄Π΅ΡΡ ΠΠ½ΠΊΠ΅Ρ
Π§Π΅ΡΠ½ΡΠΉ – GitHub
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π² Π±Π»ΠΎΠ³Π΅. ΠΡΠΎ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Π° LΕukasz Langa ΠΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΌ Python Core. ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π’ΠΊΠ°Π½Ρ 2 ΠΈ pytest ΠΠ½ΠΊΠ΅Ρ Π£ Π½Π΅Π³ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 3800 Π·Π²Π΅Π·Π΄ Π½Π° GitHub (ΠΈΡΠ½Ρ 2018 Π³ΠΎΠ΄Π°), ΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠΈΠΌΡΠ» – Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ Π΄Π°ΠΆΠ΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ. ΠΠ° ΡΡΠΈΠΌ ΠΌΡΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ Atttier, Π±ΠΎΠ»ΡΡΠΎΠΉ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΡΠΌΠ°ΡΠ΅Ρ JavaScript.
ΠΡΠ΅ ΡΡΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π½Π° Pypi ΠΈ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ΅Π· PIP ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Python ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠ΅, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ°ΡΡΠ΅ΠΉ ΡΡΠ΅Π΄Ρ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΊΠ°ΠΊ Pre-Commit ΠΈΠ»ΠΈ Π₯Π°ΡΠΊΠΈ ΠΈ Π²ΠΎΡΡΠ½ΠΈΡΠ° ΠΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΠ΅Π΄Π΅ ΠΈ ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅Π³ΠΊΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΊΠ° Π½Π΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ ΠΎΡ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π² ΡΠ΄Π°Π»Π΅Π½Π½ΡΠΉ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ. ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ YAPF Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ Facebook, Google ΠΈ PEP8, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Ρ ΡΠΎΠΌΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (2 -ΠΉ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ – ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½Π° Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ).
ΠΠΎ Π²ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ Ρ Π·Π°ΠΏΡΡΠΊΠ°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°. ΠΠ»Ρ YAPF ΡΡΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ ΠΏΡΠΎΡΡΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Ρ ΠΎΡΠ΅Π» ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ. ΠΡΠΎ PEP8, Google ΠΈ Facebook.
Π Π½Π°ΡΠ΅ΠΌ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄Π»ΠΈΠ½Π½Π° Π΄Π»Ρ ΡΡΡΠΎΠΊΠΈ, ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ Π°Π²ΡΠΎΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π²ΡΠΎΠΏΡΠΎΠ΄ΡΠΊΡΠΎΠ² ΡΠ΅ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ ΠΊΠΎΠ΄ Π·Π΄Π΅ΡΡ.
class Basket(): reference = models.CharField( _('Project reference'), max_length=100, null=True)
class Basket(): reference = models.CharField( _("Project reference"), max_length=100, null=True )
class Basket(): reference = models.CharField( _('Project reference'), max_length=100, null=True )
ΠΠ° Π²Π΅ΡΡΠΈΠ½Π΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, yapf (Google, PEP8) Π½Π΅ Π²Π½Π΅ΡΠ»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ΄ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ½ΡΠΌ, Π° Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΡΡ YAPF (Facebook)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ yapf (Facebook) ΠΈ Black ΠΏΡΡΠ°ΡΡΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Π² ΠΌΠ½ΠΎΠ³ΠΎΡΡΡΠΎΡΠ½ΡΠ΅ ΠΊΡΠΎΠ½ΡΡΠ΅ΠΉΠ½Ρ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½Π΅ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎΠ³ΠΎ. Π Π°Π·Π½ΠΈΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ Black ΠΈ YAPF (Facebook) ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΡΠΎΠΊΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΡΡΡΡ Π² ΡΠ΅ΡΠ½ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅ ΠΏΠΎΠ·ΠΆΠ΅. Black ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΡΠΎΠΊ, Π³Π΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΠΊΠ°Π²ΡΡΠΊΠΈ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ½ΠΎΠ²Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠΈΡΠ°. ΠΠ΄Π΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆ. ΠΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, _ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π° ΡΡΡΠΎΠΊ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
class Basket(): PRICING_STATUS_CHOICES = ( (NO_REQUEST, _("No Request - there was no manual pricing requested yet")), (WAITING_FOR_MANUAL_PRICING, _(("Waiting For Pricing - the basket needs someone to" "set a manual price for one or multiple lines"))), (MANUALLY_PRICED, _("Manually Priced - the basket has been priced manually")), )
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄, Autopep8 ΠΈ YAPF (Google, PEP8)
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» Π²Ρ ΠΎΠ΄ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠΎΠ², Π½ΠΎ Autopep8, YAPF (Google) ΠΈ YAPF (PEP8) Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈ Π² ΠΊΠΎΠ΄Π΅.
class Basket: PRICING_STATUS_CHOICES = ( ( NO_REQUEST, _("No Request - there was no manual pricing requested yet"), ), ( WAITING_FOR_MANUAL_PRICING, _( ( "Waiting For Pricing - the basket needs someone to" "set a manual price for one or multiple lines" ) ), ), ( MANUALLY_PRICED, _("Manually Priced - the basket has been priced manually"), ), )
ΡΠ΅ΡΠ½ΡΠΉ ΠΈ ΡΠΏΡ (Facebook)
Black ΠΈ YAPF (Facebook) Π΄Π°Π»ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π² ΠΊΠΎΠ½ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π²ΠΎΠ΄ ΡΠΆΠ΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ Ρ Π΄Π²ΠΎΠΉΠ½ΡΠΌΠΈ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ±Π° ΡΠΎΡΠΌΠ°ΡΡΠ° Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΠ»ΠΈ Π»ΠΈΠ½ΠΈΠΈ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎΠ³ΠΎ, Π° Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ². Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠΎΠ².
ΠΠ° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°Π·Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π°Π²ΡΠΎ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠ°, ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π° ΠΏΡΠΈΠΌΠ΅ΡΠ°. ΠΠ½ΠΈ ΠΏΠΎΠΊΠ°ΠΆΡΡ Π²Π°ΠΌ ΡΠ΅Π°Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ.
def function_with_really_long_name(normal_variable, another_normal_variable, configuration=None, test_number=1, test_text='dwadawa', test_tuple=('Lorem Ipsum', 21)): return None
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄
def function_with_really_long_name( normal_variable, another_normal_variable, configuration=None, test_number=1, test_text='dwadawa', test_tuple=( 'Lorem Ipsum', 21)): return None
Autopep8
Autopep8 ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π½ΠΈΠΆΠ΅ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π½ΠΎΠ²ΡΡ Π»ΠΈΠ½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π», ΡΡΠΎ Π΅ΡΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΡΡΠΎΠ±Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ. Π‘ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ test_tuple Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. ΠΠΎΠ΄ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ PEP8-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ, Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΠΎΠ²Π° ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠ΅ ΠΊΡΠΎΠ½ΡΡΠ΅ΠΉΠ½Ρ Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π»ΠΈΠ½ΠΈΡ, Π½ΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ΄ PEP8-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ.
def function_with_really_long_name( normal_variable, another_normal_variable, configuration=None, test_number=1, test_text="dwadawa", test_tuple=("Lorem Ipsum", 21), ): return None
ΡΠ΅ΡΠ½ΠΈΡΡ
Black ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ΄, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΉ Autopep8, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅Ρ Π·Π°ΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΡΠΎΠ½ΡΡΠ΅ΠΉΠ½Ρ Π½Π° Π½ΠΎΠ²ΡΡ Π»ΠΈΠ½ΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
def function_with_really_long_name( normal_variable, another_normal_variable, configuration=None, test_number=1, test_text='dwadawa', test_tuple=('Lorem Ipsum', 21), ): return None
yapf (Facebook)
YAPF Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ Facebook ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ Π·Π΄Π΅ΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΡΠ΅ΡΠ½ΡΠΉ, Π½ΠΎ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΈΡΠ°ΡΡ Π·Π΄Π΅ΡΡ. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π°.
def function_with_really_long_name(normal_variable, another_normal_variable, configuration=None, test_number=1, test_text='dwadawa', test_tuple=('Lorem Ipsum', 21)): return None
yapf (Google), yapf (PEP8)
YAPF Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ Google ΠΈ PEP8 ΠΏΠΎΠΌΠ΅ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ Π΄ΡΡΠ³Ρ, Π½ΠΎ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠ΅ΡΠ²ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΡ ΠΆΠ΅ ΡΡΡΠΎΠΊΡ, Π³Π΄Π΅ Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Ρ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅, ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΊΡΠ°Π΅ΠΌ. ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π² ΡΠΏΠΈΡΠΎΠΊ. ΠΠ°ΡΠ΅ΠΌ ΡΡΠΎΡ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠ°ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π»Ρ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΠ»ΡΡΡΠ°ΡΠΈΠ΅ΠΉ.
def generator_expression(): Fruit = collections.namedtuple('Fruit', ('name', 'size', 'price', 'super_long_property_in_tuple')) fruits = [ Fruit(name='apple', size=5, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit(name='banana', size=7, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit(name='orange', size=6, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit(name='kiwi', size=1, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.')] complicated_fruits_filtered = [fruit for fruit in fruits if fruit.price >= 10 and size <= 5]
ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄
def generator_expression(): Fruit = collections.namedtuple( 'Fruit', ('name', 'size', 'price', 'super_long_property_in_tuple') ) fruits = [ Fruit( name='apple', size=5, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit( name='banana', size=7, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit( name='orange', size=6, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.'), Fruit( name='kiwi', size=1, price=10.50, super_long_property_in_tuple='super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.')] complicated_fruits_filtered = [ fruit for fruit in fruits if fruit.price >= 10 and size <= 5]
Autopep8
Autopep8 ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΠ°Π±ΠΎΡΡ. NameTuple Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ. ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΠΈΠΌΠ΅Π½ ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ Π½Π° Π΄Π²Π΅ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΠΊΡΡ Π² ΡΠΎΠΉ ΠΆΠ΅ ΡΡΡΠΎΠΊΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Super_long_property_in_tuple. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
def generator_expression(): Fruit = collections.namedtuple( "Fruit", ("name", "size", "price", "super_long_property_in_tuple") ) fruits = [ Fruit( name="apple", size=5, price=10.50, super_long_property_in_tuple="super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.", ), Fruit( name="banana", size=7, price=10.50, super_long_property_in_tuple="super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.", ), Fruit( name="orange", size=6, price=10.50, super_long_property_in_tuple="super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.", ), Fruit( name="kiwi", size=1, price=10.50, super_long_property_in_tuple="super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.", ), ] complicated_fruits_filtered = [ fruit for fruit in fruits if fruit.price >= 10 and size <= 5 ]
ΡΠ΅ΡΠ½ΠΈΡΡ
Π§Π΅ΡΠ½ΡΠΉ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ Π² Π΄Π²ΠΎΠΉΠ½ΡΠ΅ ΡΠΈΡΠ°ΡΡ. ΠΠ°Π·Π²Π°Π½Π½Π°Ρ ΡΡΡΠ½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ Π½Π° ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ, Π³Π΄Π΅ Π²ΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΊΠ° – ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π²Π°ΠΆΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. Π Π°ΡΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ½ΠΎ, ΠΈ ΡΠΊΠΎΠ±ΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΈ Π½Π΅ ΡΡΠ°Π²ΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ. Π§ΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° Π² ΡΡΡΠΎΠΊΠ΅ 10, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Autopep8, Π½ΠΎ Π·Π°ΠΊΡΡΠ²Π°ΡΡΠΈΠΉ ΠΊΡΠΎΠ½ΡΡΠ΅ΠΉΠ½ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΡΡ ΡΡΡΠΎΠΊΡ.
def generator_expression(): Fruit = collections.namedtuple( 'Fruit', ('name', 'size', 'price', 'super_long_property_in_tuple') ) fruits = [ Fruit( name='apple', size=5, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='banana', size=7, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='orange', size=6, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='kiwi', size=1, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), ] complicated_fruits_filtered = [ fruit for fruit in fruits if fruit.price >= 10 and size <= 5 ]
yapf (Facebook)
YAPF Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ Facebook ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΆΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ½ΠΎΠΌΡ, Π½ΠΎ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅Ρ Π΄Π»ΠΈΠ½Π½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π° Π½ΠΎΠ²ΡΡ Π»ΠΈΠ½ΠΈΡ. Super_long_property_in_tuple ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π±ΠΈΡ Π½Π° Π½ΠΎΠ²ΡΡ ΡΡΡΠΎΠΊΡ. ΠΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΡΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ΅ΡΠ½ΡΠΌ.
def generator_expression(): Fruit = collections.namedtuple('Fruit', ('name', 'size', 'price', 'super_long_property_in_tuple')) fruits = [ Fruit( name='apple', size=5, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='banana', size=7, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='orange', size=6, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ), Fruit( name='kiwi', size=1, price=10.50, super_long_property_in_tuple= 'super long string here also, lorem ipsum, maybe longer than 80 characters to look for pep8 violations here. lorem ipsum.', ) ] complicated_fruits_filtered = [ fruit for fruit in fruits if fruit.price >= 10 and size <= 5 ]
yapf (Google), yapf (PEP8)
YAPF Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΎΠΉ Google ΠΈ PEP8 Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄. ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ Facebook Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎ -ΡΠ°Π·Π½ΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΌΡ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ².
ΠΡΠ²ΠΎΠ΄
ΠΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡ Π΄Π΅Π»Π°ΡΡ Ρ ΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π°. ΠΠΎ, Π½Π° ΠΌΠΎΠΉ Π²Π·Π³Π»ΡΠ΄, Autopep8 Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠ΅Ρ, Π° Π±ΠΎΠ»Π΅Π΅ ΠΈΠ»ΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ PEP8. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΠ»ΠΎΡ ΠΎ ΠΈ Π½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π±ΡΡΡ Π°Π²ΡΠΎΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠΌ.
Π§Π΅ΡΠ½ΡΠ΅ ΠΈ Π―ΠΏΡ ΠΈΠΌΠ΅ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠΈ. YAPF ΠΎΡΠ΅Π½Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ, Π½ΠΎ Ρ Π±Ρ ΠΏΠΎΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π» ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅. ΠΠ»Ρ YAPF Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Facebook ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ° Π½Π° Black’s ΠΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ, ΡΡΠΎ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΊΠ°Π²ΡΡΠΊΠ°ΠΌΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ ΠΎΡΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π»ΠΈΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠ΅Π½ΠΈΠ΅, Π² ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ.
ΠΠΈΡΠ½ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Ρ Π²ΡΠ±Π΅ΡΡ Black Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΠΊΡΠ°ΡΠΈΠ²Π΅Π΅ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π΅. YAPF ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ, Π½ΠΎ Ρ Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΄ΡΡΠ³Π°Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΡΠΌΠ°ΡΠ΅ΡΠΎΠ², ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅. ΠΠ°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Π°Ρ Π»ΠΈΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π² ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΡ , ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠ»ΠΈΠ²Π΅Π΅. Π Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ Π½Π΅ ΠΏΡΠΈΠ΄ΠΈΡΠ°ΡΡΡΡ ΠΊ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π°. ΠΡΠ΄ΠΈ ΡΠ°ΠΌΠΎΡΠ²Π΅ΡΠ΅Π½Π½Ρ, Π½ΠΎ Π·Π΄Π΅ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π²Π°ΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΌΠ½Π΅Π½ΠΈΡ.
ΠΡΠΈΠ³ΠΈΠ½Π°Π»: “https://dev.to/igeligel/the-3-best-auto-formatters-for-python-432p”