Хитрый Питон
2.6K subscribers
4 photos
222 links
Я много читаю и делюсь в этом канале заинтересовавшими меня материалами, в основном про Python. @korneevm
Download Telegram
В питоне (как и в любом другом языке программирования) есть некоторое количество "особенностей", незнание которых может привести к серьезным проблемам с кодом.

Статья "10 подводных камней, связанных с безопасностью в python" рассказывает о таких неочевидных штуках. Некоторые из них уже не очень актуальны в новых версиях python, но все равно стоит потратить время и ознакомиться со статьей. Хотя бы потому, что примерно половина этих "особенностей" не будут проблемой, если вы никогда не доверяете данным пришедшим снаружи системы 🙂

https://blog.sonarsource.com/10-unknown-security-pitfalls-for-python
👍28
Возможно, вы слышали о AST — это встроенная в питон библиотека для построения абстрактного синтаксического дерева кода. AST используется, например, при написании линтеров. Минус в том, что он позволяет анализировать код, но при этом выкидывает части кода, которые не важны для компилятора, но важны для нас (например, комментарии).

Некоторое время назад Instagram выложил LibCST - которая гораздо бережнее относится к коду и соответственно может использоваться не только для проверки, но и для модификации кода.

В статье разобран хороший пример, как с помощью LibCST можно написать инструмент для ручного рефакторинга кода, который было бы сложно сделать другими инструментами (и долго и неудобно вручную). Если вам интересна тема разработки инструментария для python - рекомендую https://engineering.instawork.com/refactoring-a-python-codebase-with-libcst-fc645ecc1f09
👍14
Мои хорошие знакомые делают сегодня онлайн-митап про тему которая сейчас кажется становится еще более актуальной - "Нанимать или выращивать" крутых специалистов. Я планирую сходить послушать и видится мне, что тема эта может быть интересна не только для CEO/CTO/HRD и прочих топов, но и для обычных разработчиков. Полезно знать как думают те, кто будет тебя нанимать 🙂
Регистрация бесплатная по ссылке https://aihub.timepad.ru/event/2003165/
👍12🔥3👎2
На ютуб выложены доклады с прошедшего PyCon US 2022. Я пока успел только посмотреть названия видео и темы докладов показались интересными, буду смотреть в ближайшие недели https://www.youtube.com/watch?v=nWnIRYQrVtk&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl
👍19🔥7
Как обещал, начну рассказывать свои впечатления о докладах с PyCon US. Первый доклад, который я посмотрел - "Best Practices for Continuous Integration in Python" https://www.youtube.com/watch?v=HMlXSiDKWrg&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=17

Честно говоря, ожидал большего. В течении 20 минут чувак рассказывает довольно таки очевидные вещи, причем с минимумом прикладных советов - "хороший CI должен быть точным, быстрым и дешевым", "не забывайте пинить версию питона и библиотек", "кеширование - это хорошо" и все в таком духе. Возможно, доклад может показаться интересным новичкам, которые с CI не сталкивались. Но даже в этом случае можно найти более информационно насыщенные видео.

Резюме - не рекомендую
👍31🔥3
Следующий доклад, который я сегодня посмотрел Bootstrapping Your Local Python Environment - https://www.youtube.com/watch?v=-YEUFGFHWgQ&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=18

В самом начале показалось что, как и предыдущий уйдет в голую (и малополезную) теорию - "No SoDo" и вот это все. Но дальше докладчик довольно подробно показал работу pyenv, который думаю далеко не все знают и используют. Я для себя узнал про pipx, который позволяет удобно устанавливать python-утилиты.

В целом он вкратце упомянул наверное большинство более-менее распространённых инструментов для управления версиями языка и зависимостями. В конце рассказал про мои любимые piptools.

Резюме - никаких откровений, но как вводная для тех кто знает только python -m venv будет полезно.
👍26🔥1
Работа с датой и временем всегда была довольно мозголомной задачей, даже если не вспоминать про заморочки с часовыми поясами. Вообще про часовые пояса очень часто забывают, особенно если пишут прототип "для себя". В этом докладе с PyCon-а хороша разобрана тема с тем, как устроена работа с таймзонами в питоне, какие есть подводные камни и как делать правильно https://www.youtube.com/watch?v=XZlPXLsSU2U&list=PL2Uw4_HvXqvYeXy8ab7iRHjA-9HiYhRQl&index=21

Резюме - всячески рекомендую
👍15🔥12
Вышла джанга 4.1 https://www.djangoproject.com/weblog/2022/aug/03/django-41-released/ из интересного:

1. Поддержка асинхронных запросов в ORM, но магическим образом запросы асинхронными не станут, надо в явном виде вызывать начинающиеся с a методы типа .afirst() вместо .first()
2. В class-based views можно делать асинхронные методы
3. Meta.constraints теперь проверяются во время валидации модели. Я не успел посмотреть как это работает, но если модель сама начнет неявно лазить в базу для проверки unique то это скорее минус

Еще всякие мелочи, которые показались интересными:
- makemigrations --scriptable выглядит как удобная для использования в CI штука
- новая команда optimizemigration обещает некие оптимизации для миграций, интеерсно будет посмотреть как это работает
- поддержка пеерименования индексов в миграциях
- bulk_create() теперь кажется умеет делать update если такая строка уже есть в базе
- iterator() научили делать prefetch_related
- добавили механизм ротирования SEKRET_KEY-а https://docs.djangoproject.com/en/4.1/ref/settings/#secret-key-fallbacks
- много всякого removed/deprecated но ничего для себя интересного в списке я не нашел https://docs.djangoproject.com/en/4.1/releases/4.1/#backwards-incompatible-changes-in-4-1

Попробую на выходных один пет-проджект перевести на 4.1
👍35🔥15
В среду 02 ноября, в 19:00 мск пройдет Python meetup online

1. Куда двигается python в 2022 году? Денис Аникин — Райффайзенбанк
Расскажу о том куда двигается python: в первую очередь, о том как, когда и зачем он ускоряется, о nogil, cinder и прочих нововведениях.
 
2. Тестирование АПИ при помощи Django - Алексей Шарыпов VK
История написания сервиса для тестирования черного ящика без тестов и документации, написанном на малоизвестном языке
 
3. Распознаем интересные моменты в матчах Dota 2 - Савостьянов Дмитрий — Nordcurrent
В рамках доклада я расскажу как искать хайлайты в матчах Dota 2. Продемонстрирую, как парсить реплеи матчей и записи стримов на YouTube. Кратко обсудим архитектуры нейросетей BERT и TrOCR

Регистрация - https://meetups.evrone.ru/python-meetup-online-1?utm_source=tg&utm_medium=tricky_python&utm_campaign=online_python_meetup
👍6
Привет, в эту пятницу в 14:00 МСК буду вести прямой эфир Moscow Python Podcast. Обсуждаем итоги года в python-разработке, приходите, задавайте ввопросы и вообще участвуйте 🙂
Ссылка - https://www.youtube.com/watch?v=Mq3Tkgrczi0

P.S. Конечно, подкаст будет как всегда доступен в записи через некоторое время после эфира
👍20🔥6
Наткнулся на интересный gist Python People - список людей из глобального python-сообщества со ссылками на их twitter, github и mastodon. Если вы ищите "кого-бы почитать интересного про python" то посмотрите на людей из этого списка https://gist.github.com/samuelcolvin/1743d8919acb465c1fbbcea2c3cdaf3e
👍13🔥6
Закинули резюме того, что обсуждали на предновогоднем подкасте на Хабре https://habr.com/ru/post/708204/
Те, кто предпочитает читать выжимку прослушиванию подкаста - велкам
🔥14👍4
С наступающим! Пусть новый год будет к нам всем добрее, чем старый. И больше питончика вам в новом году :) 🐍
👍36🔥8
На мой взгляд, одной из больших проблем как у тех, кто приходит в разработку так и у тех, кто довольно давно в ней работает. Это умение не просто хорошо писать код, а умение структурировать проект. Понимать, чем хорошая архитектура отличается от плохой. В книгах часто описываются высокоуровневые абстрактные концепции и дальше возникает вопрос — все это хорошо, но вот у меня есть проект на условной Джанге, как все это применить?

На выходных я разбирал закладки и наткнулся на несколько неплохих практических "около архитектурных" гайдов, про которые хочу рассказать:

1. Django Styleguide - гайд который ребята из HackSoftware развивают уже несколько лет. Если вы не читали - очень рекомендую, много хорошего можно утащить для своего проекта. Там хорошо описано как структурировать проект так, чтобы код было легче развивать, поддерживать и тестировать. Гайд постоянно развивается и обновляется https://github.com/HackSoftware/Django-Styleguide

2. Django API Domains - пример применения некоторых принципов Domain-Driven Design в Django. Тут как и в предыдущем гайде использован довольно прагматичный подход - вместо того, чтобы тащить все что есть в DDD, автор предлагает достаточно простую, легко реализуемую и поддерживаемую структуру проекта. Это не "чистый DDD", но лично мне такой подход больше нравится своей простотой. Гайд небольшой и не очень активно развивается, но я все равно рекомендую потратить время и ознакомиться с ним https://phalt.github.io/django-api-domains/

Ну и подводя итог хочу повторить то, что написано в двух первых гайдах. Это не инструкции, которым надо в точности следовать. Это скорее набор подсказок и принципов, из которых имеет смысл выбрать то, что вам покажется разумным и полезным в своих проектах.

P.S. Я попробовал включить комментарии в канале, надеюсь сработает 🙂 Если у вас есть другие хорошие гайды по архитектуре python-веб-приложений - кидайте в комменты, я по итогам сделаю еще один пост.
👍29🔥12👎1
Tryo Labs опубликовали ежегодный обзор "Top Python Libraries 2022". Обзор несколько субъективный и смещен в сторону анализа данных/машинного обучения, но все равно но его интересно посомтреть с точки зрения " какие из этих библиотек я знаю/пробовал?". Мне было интересно пробежаться по предыдущим выпуска - самый ранний вышел в 2015 году. https://tryolabs.com/blog/2022/12/26/top-python-libraries-2022
👍12🔥6
Послезавтра, 19 января в 14:00 МСК будем в прямом эфире записывать очередной Moscow Python Podcast.

В гости к нам придет Георгий Могелашвили, Engineering Manager в Shopify и основатель GetMentor.dev. Обсудим опыт жизни за рубежом и адаптацию в зарубежной компании, развитие, поиск наставника и всем ли нужно становиться тимлидами.

В ходе трансляции будем отвечать на вопросы и комментарии в прямом эфире. Ссылка https://www.youtube.com/watch?v=1mpHfaxy104
🔥13👍5
В качестве пятничного чтения рекомендую большую статью про состояние и перспективы менеджмента пакетов в Питоне. На мой взгляд это одно из самых проблемных мест в экосистеме языка. Есть много инструментов, у каждого из которых свой подход. Нет единого лидера - судя по опросам, top3 самых популярных менеджера, одинаково популярны. Проблемы со стандартизацией - тот же PEP 582 уже несколько лет как завис в непонятном состоянии.

В статье довольно много личного авторского отношения и статья довольно длинная. Но если вы интересуетесь тем, что происходит в экосистеме это прямо must read https://chriswarrick.com/blog/2023/01/15/how-to-improve-python-packaging/
👍15🔥2
Я довольно мало работаю с данными, но, когда возникает задача, привычно беру pandas. Про polars, конечно, слышал но никогда его не использовал. Сегодня наткнулся на подробное сравнение синтаксиса этих библиотек, и мне прямо очень понравился синтаксис выборок в полярсе. В следующий раз, когда надо будет покрутить набор данных, я попробую взять для этого polars - https://kevinheavey.github.io/modern-polars/
👍16🔥1
Если вы еще не смотрели проект msgspec (https://jcristharif.com/msgspec/index.html) - очень рекомендую взглянуть. Это сериализатор для json/msgpack, у него удобный синтаксис, похожий на pydantic и по тестам скорости сериализации/десериализации он обгоняет orjson. В общем, быстрая и удобная штука.

А теперь перейдем к новости - автор анонсировал поддержку yaml/toml. Правда, для парсинга для этих форматов будет использоваться существующие библиотеки и прибавки производительности можно не ждать. Тем не менее, возможность декларативно описывать, читать/писать и валидировать самые распространенные разные форматы выглядит очень вкусно - https://www.reddit.com/r/Python/comments/10gzbgo/parsing_and_validating_pyprojecttoml_files_with/
👍19