#python python... PYTHON πŸ”› πŸš€
11 subscribers
914 photos
7 videos
158 files
1.54K links
Download Telegram
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ½Ρ‹?
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° для опрСдСлСния слоТности ΠΈ нСстандартных ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ½Ρ‹?
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ области ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ тСхничСская Π·Π°Π΄ΠΎΠ»ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ нСтСхничСской Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с систСмой.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

Radon β€” это инструмСнт для получСния Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π½Π° счСтчиках Π»ΠΈΠ½ΠΈΠΉ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ цикломатичСской слоТности, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π₯олстСда ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ рСмонтопригодности.

Pylint содСрТит срСдства ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия стиля ΠΊΠΎΠ΄Π° PEP8, Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов Π°Π½Π°Π»ΠΈΠ·Π° исходного ΠΊΠΎΠ΄Π°.

PyFlakes Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок ΠΈ сообщаСт ΠΎ Π½ΠΈΡ….

Pyntch β€” это статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ошибки Π²ΠΎ врСмя выполнСния. Он Π½Π΅ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ стиля ΠΊΠΎΠ΄Π°.

Prospector провСряСт Ρ„Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π° Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ мСстополоТСнии классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± источникС.

Flake8 β€” это срСдство обСспСчСния соблюдСния ΠΏΡ€Π°Π²ΠΈΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΠ΄Π°. Π•Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ являСтся Π½Π΅ сбор ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Π° обСспСчСниС Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля Π²ΠΎ всСх Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° Python для максимальной Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π° для Flask8 всС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² этом спискС , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сворачиваСт зависимости Flake8 ΠΎΡ‚ pycodestyle, pyflakes ΠΈ McCabe.

Black β€” это срСдство форматирования ΠΊΠΎΠ΄Π° Python с ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, бСскомпромиссными прСдполоТСниями ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½.

Dlint являСтся носитСлСм для бСзопасного кодирования.

pylintdb ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ pylint Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ доступа ΠΈ поиска. НСд БэтчСлдСр написал Π΅Π³ΠΎ ΠΈ написал ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² этом инструмСнтС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ с кусочСк: сообщСниС pylintdb .

Flask8-eradicate ( исходный ΠΊΠΎΠ΄ ) β€” это ΠΏΠ»Π°Π³ΠΈΠ½ Flask8 для опрСдСлСния ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, пСрСйдя Π² слуТбу, ввСдя URL-адрСс вашСго сайта, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Coveralls ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство своСго ΠΊΠΎΠ΄Π°.

webhint, Ρ€Π°Π½Π΅Π΅ Sonarwhal, сканируСт ваш сайт Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ доступности, скорости ΠΈ бСзопасности. БущСствуСт ΠΊΠ°ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-вСрсия, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ URL, Ρ‚Π°ΠΊ ΠΈ вСрсия для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для запуска ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Codecov ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ GitHub, BitBucket ΠΈΠ»ΠΈ GitLab ΠΈ сообщаСт ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Π²Π°ΡˆΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… ΠΊΠΎΠ΄Π°.
Π”ΠΆΠ΅ΠΉΠΊΠΎΠ± Каплан-Мосс: срСда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Python, 2020 ΠΈΠ·Π΄.
Π’Π΅Π΄ΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Django Π”ΠΆΠ΅ΠΉΠΊΠΎΠ± Каплан-Мосс подСлился Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ настройками срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Python.

1. pyenv
ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Для Ρ‚Π΅Ρ… ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ нСсколько вСрсий Python, ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ систСмы Python. pyenv ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ установку, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ этими нСсколькими ΠΏΠΈΡ‚ΠΎΠ½Π°ΠΌΠΈ.

2. pipx
ΠŸΠΎΡ‡Π΅ΠΌΡƒ? pipx позволяСт ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ основанный Π½Π° Python интСрфСйс CLI (youtube-dl, awscli, doc2dash ΠΈ Ρ‚. Π΄.), Ρ‡Ρ‚ΠΎΠ±Ρ‹ зависимости этих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Π½Π΅ испортили Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Python.

3. Poetry
ΠŸΠΎΡ‡Π΅ΠΌΡƒ? Poetry ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостями ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ срСдой ΠΎΡ‡Π΅Π½ΡŒ ΠΈΠ½Ρ‚ΡƒΠΈΡ‚ΠΈΠ²Π½ΠΎ ΠΈ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ процСсса.
Forwarded from Python Learning
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π°. ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ½Ρ‹?
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнтов статичСского Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° для опрСдСлСния слоТности ΠΈ нСстандартных ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ½Ρ‹?
ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½Ρ‹Π΅ области ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½ΡƒΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π² Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³Π΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ тСхничСская Π·Π°Π΄ΠΎΠ»ΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ нСтСхничСской Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с систСмой.

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ исходным ΠΊΠΎΠ΄ΠΎΠΌ

Radon β€” это инструмСнт для получСния Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π½Π° счСтчиках Π»ΠΈΠ½ΠΈΠΉ, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ цикломатичСской слоТности, ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Π₯олстСда ΠΈ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ рСмонтопригодности.

Pylint содСрТит срСдства ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ соотвСтствия стиля ΠΊΠΎΠ΄Π° PEP8, Π΄ΠΈΠ·Π°ΠΉΠ½Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… инструмСнтов Π°Π½Π°Π»ΠΈΠ·Π° исходного ΠΊΠΎΠ΄Π°.

PyFlakes Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ исходныС Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ошибок ΠΈ сообщаСт ΠΎ Π½ΠΈΡ….

Pyntch β€” это статичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пытаСтся ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ошибки Π²ΠΎ врСмя выполнСния. Он Π½Π΅ выполняСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ стиля ΠΊΠΎΠ΄Π°.

Prospector провСряСт Ρ„Π°ΠΉΠ»Ρ‹ исходного ΠΊΠΎΠ΄Π° Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΈΠΏΠ΅ ΠΈ мСстополоТСнии классов, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± источникС.

Flake8 β€” это срСдство обСспСчСния соблюдСния ΠΏΡ€Π°Π²ΠΈΠ» Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΠ΄Π°. Π•Π³ΠΎ Ρ†Π΅Π»ΡŒΡŽ являСтся Π½Π΅ сбор ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Π° обСспСчСниС Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля Π²ΠΎ всСх Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… Π½Π° Python для максимальной Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠŸΡ€Π°Π²ΠΈΠ»Π° для Flask8 всС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² этом спискС , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сворачиваСт зависимости Flake8 ΠΎΡ‚ pycodestyle, pyflakes ΠΈ McCabe.

Black β€” это срСдство форматирования ΠΊΠΎΠ΄Π° Python с ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ, бСскомпромиссными прСдполоТСниями ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ваш ΠΊΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½.

Dlint являСтся носитСлСм для бСзопасного кодирования.

pylintdb ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ pylint Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… SQLite для ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ доступа ΠΈ поиска. НСд БэтчСлдСр написал Π΅Π³ΠΎ ΠΈ написал ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² этом инструмСнтС ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ с кусочСк: сообщСниС pylintdb .

Flask8-eradicate ( исходный ΠΊΠΎΠ΄ ) β€” это ΠΏΠ»Π°Π³ΠΈΠ½ Flask8 для опрСдСлСния ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Π‘Π»ΡƒΠΆΠ±Ρ‹ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°
Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ инструмСнты Π³ΠΎΡ‚ΠΎΠ²Ρ‹ ΠΊ использованию, пСрСйдя Π² слуТбу, ввСдя URL-адрСс вашСго сайта, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ² ΠΈΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹.

Coveralls ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· Π½Π°Π±ΠΎΡ€ΠΎΠ² тСстов ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ качСство своСго ΠΊΠΎΠ΄Π°.

webhint, Ρ€Π°Π½Π΅Π΅ Sonarwhal, сканируСт ваш сайт Π½Π° ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ доступности, скорости ΠΈ бСзопасности. БущСствуСт ΠΊΠ°ΠΊ ΠΎΠ½Π»Π°ΠΉΠ½-вСрсия, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½Ρ‹ΠΉ URL, Ρ‚Π°ΠΊ ΠΈ вСрсия для ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для запуска ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ.

Codecov ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ΠΊ GitHub, BitBucket ΠΈΠ»ΠΈ GitLab ΠΈ сообщаСт ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΊΠΎΠ΄Π° Π² Π²Π°ΡˆΠΈΡ… Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°Ρ… ΠΊΠΎΠ΄Π°.
Python Tricks (2017)
Автор: Dan Bader

#python #book #en

Π―Π·Ρ‹ΠΊ: English.

ЦСлСвая аудитория: для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… ΠΈ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ².

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этой ΠΊΠ½ΠΈΠ³ΠΈ Π²Ρ‹ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚Π΅ΡΡŒ с Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ Python Π½Π° простых, Π½ΠΎ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ…. Π’Ρ‹ станСтС Π½Π° ΠΎΠ΄ΠΈΠ½ шаг Π±Π»ΠΈΠΆΠ΅ ΠΊ освоСнию Python, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π²Ρ‹ смоТСтС Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ красивый ΠΈ идиоматичСский ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ ΠΏΡ€ΠΈΠ΄Π΅Ρ‚ СстСствСнным ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Π’ ΠΊΠ½ΠΈΠ³Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‚Π΅ΠΌΡ‹:
βœ”οΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для чистого Python;
βœ”οΈ эффСктивныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ;
βœ”οΈ классы ΠΈ ООП;
βœ”οΈ ΠΎΠ±Ρ‰ΠΈΠ΅ структуры Π΄Π°Π½Π½Ρ‹Ρ… Π² Python;
βœ”οΈ Ρ†ΠΈΠΊΠ»Ρ‹ ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°:
βž• ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ;
βž• ΠΊΡ€Π°Ρ‚ΠΊΠΎΠ΅ Ρ€Π΅Π·ΡŽΠΌΠ΅ послС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ€Π°Π·Π΄Π΅Π»Π°;
βž• простыС ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΡ‡Π½Ρ‹Π΅ прСдлоТСния.

НСдостатки:
βž– Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ.
Π‘ 18 ΠΏΠΎ 20 ноября Π² 20:00 ΠΏΡ€ΠΎΠΉΠ΄Ρ‘Ρ‚ бСсплатный интСнсив ΠΏΠΎ Python.

РСгистрация ΡƒΠΆΠ΅ Π½Π°Ρ‡Π°Π»Π°ΡΡŒ: https://clc.to/xu2W8g

🐍 Π—Π° Ρ‚Ρ€ΠΈ дня Ρ‚Ρ‹ создашь ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΎΠ±ΠΌΠ΅Π½Π° быстрыми сообщСниями ΠΈ освоишь вострСбованный срСди Ρ€Π°Π±ΠΎΡ‚ΠΎΠ΄Π°Ρ‚Π΅Π»Π΅ΠΉ язык программирования!

ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ бСсплатных мСст ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ!

🎈 Π—Π° участиС Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡˆΡŒ ΠΏΠΎΠ΄Π°Ρ€ΠΊΠΈ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ Skillbox ΠΈ EnglishDom.
Forwarded from Artem Borzilov
Π― ΡƒΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΆΠ΄Ρ‹ Ρ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΠΎΠ²Π°Π» ΠΈ ΠΏΠΎΡ€Π΅ΠΊΠ»Π°ΠΌΠΈΡ€ΡƒΡŽ Π΅Ρ‰Π΅ Ρ€Π°Π· Π² этом Ρ‡Π°Ρ‚Π΅ https://docs.python-guide.org/ β€” фактичСски ΠΌΠ°Π½ΡƒΠ°Π» ΠΏΠΎ экосистСмС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΊΡƒΡ€ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‚ ΠΆΠ΅ kenneth reitz
#python python... PYTHON πŸ”› πŸš€
#cool #python #books #from t.me/Tylorn #Tylorn - #DMIA #teacher
β€˜β€™β€™

Item 24: Use @classmethod Polymorphism to Construct
Objects Generically
In Python, not only do the objects support polymorphism, but the classes do as well. What does that mean, and what is it good for?
Polymorphism is a way for multiple classes in a hierarchy to implement their own unique versions of a method. This allows many classes to fulfill the same interface or abstract base class while providing different functionality (see Item 28: β€œInherit from collections.abc for Custom Container Types” for an example).
For example, say you’re writing a MapReduce implementation and you want a common class to represent the input data. Here, I define such a class with a read method that must be defined by subclasses:
Click here to view code image
class InputData(object):
def read(self):
raise NotImplementedError
Here, I have a concrete subclass of InputData that reads data from a file on disk:
Click here to view code image
class PathInputData(InputData): def __init__(self, path):
super().__init__() self.path = path
def read(self):
return open(self.path).read()
You could have any number of InputData subclasses like PathInputData and each of them could implement the standard interface for read to return the bytes of data to process. Other InputData subclasses could read from the network, decompress data transparently, etc.
You’d want a similar abstract interface for the MapReduce worker that consumes the input data in a standard way.
Click here to view code image
class Worker(object):
def __init__(self, input_data):
self.input_data = input_data self.result = None

def map(self):
raise NotImplementedError
def reduce(self, other):
raise NotImplementedError
Here, I define a concrete subclass of Worker to implement the specific MapReduce function I want to apply: a simple newline counter:
Click here to view code image
class LineCountWorker(Worker):
def map(self):
data = self.input_data.read() self.result = data.count(β€˜\n’)
def reduce(self, other): self.result += other.result
It may look like this implementation is going great, but I’ve reached the biggest hurdle in all of this. What connects all of these pieces? I have a nice set of classes with reasonable interfaces and abstractionsβ€”but that’s only useful once the objects are constructed. What’s responsible for building the objects and orchestrating the MapReduce?
The simplest approach is to manually build and connect the objects with some helper functions. Here, I list the contents of a directory and construct a PathInputData instance for each file it contains:
Click here to view code image
def generate_inputs(data_dir):
for name in os.listdir(data_dir):
yield PathInputData(os.path.join(data_dir, name))
Next, I create the LineCountWorker instances using the InputData instances
returned by generate_inputs. Click here to view code image
def create_workers(input_list): workers = []
for input_data in input_list: workers.append(LineCountWorker(input_data))
return workers
I execute these Worker instances by fanning out the map step to multiple threads (see Item 37: β€œUse Threads for Blocking I/O, Avoid for Parallelism”). Then, I call reduce repeatedly to combine the results into one final value.
Click here to view code image
def execute(workers):
threads = [Thread(target=w.map) for w in workers] for thread in threads: thread.start()
for thread in threads: thread.join()
first, rest = workers[0], workers[1:]
for worker in rest:
first.reduce(worker) return first.result

Finally, I connect all of the pieces together in a function to run each step.
Click here to view code image
def mapreduce(data_dir):
inputs = generate_inputs(data_dir) workers = create_workers(inputs) return execute(workers)
Running this function on a set of test input files works great.
Click here to view code image
from tempfile import TemporaryDirectory def write_test_files(tmpdir):
#...