Питонические атаки
1.19K subscribers
183 photos
4 videos
1 file
459 links
Всяческие заметки про программирование на Python и другие весёлые истории.
Download Telegram
День Git на канале!

Git сложен: легко всё испортить, и нереально понять как исправить. Документация Git - это финиш: чтобы найти решение, тебе заранее надо знать название фишки, которая вернет всё на место.

Разбор частых проблем с Git с командами для починки.

https://ohshitgit.com/

#git
Git Undo — инструмент, который может отменить любое действие в Git.

С этой штукой больше не придётся удалять и скачивать заново сломанный репозиторий. Очень легко вернуться в "здоровое" состояние, когда что-то идёт не так. Оно может отменить практически что угодно:

* коммиты;
* изменение сообщения коммита (amend);
* мёрджи и ребейзы;
* переключения между ветками и коммитами;
* создание, обновление и удаление веток.

Тулза прицепляется в Git при помощи хуков и записывает все произведенные изменения. Можно отменять сколько угодно шагов назад, не только последний. Магия!

https://blog.waleedkhan.name/git-undo/

#git
Gitlint is a git commit message linter written in python: it checks your commit messages for style.

Код: https://github.com/jorisroovers/gitlint
Документация: https://jorisroovers.com/gitlint/

Есть много разных встроенных правил, например, умеет ограничивать длину первой строки, запрещать trailing spaces, требовать наличия определенного паттерна в сообщении (например, идентификатор тикета в Jira). Также умеет энфорсить Conventional Commits.

Подключается в виде гит-хука через pre-commit.

#git
tig — TUI (псевдографика в терминале) клиент для Git.

Удобно добавлять в staging отдельные файлы или даже отдельные строки в файлах. Умеет более красиво показывать диффы, списки коммитов, блеймы и т.д. Но сначала придётся научиться им управлять, хоткеи похожи на vim'овские.

#git
А вообще я люблю TUI-софт.

Нашёлся ещё один клиент — lazygit.

Сам пока не пользовался, но можно посмотреть, какую магию автор программы творит с её помощью: https://www.youtube.com/watch?v=CPLdltN7wgE

#git
Умные люди говорят, что не обязательно заставлять себя использовать консольный Git, если сложно. Есть много удобных GUI клиентов, с аккуратными кнопками вместо запутанных консольных команд. Даже просто визуализация дерева коммитов часто помогает разобраться в том, что происходит с репозиторием.

В статье автор показывает, как просто делать всякие продвинутые вещи с гитом через GUI-клиент Fork.

https://simplabs.com/blog/2021/05/26/keeping-a-clean-git-history/

#git
Кстати, прикольно, что Fork — это нативная программа для Mac (написано на Swift) и Windows (написано на С#), а не очередное Electron-приложение. Ещё более прикольно, что этот клиент — настоящий каноничный инди-проект. Его фулл-тайм разрабатывает супружеская пара Dan & Tanya Pristupov. Всегда удивляюсь, когда в нашем мире корпораций и команд разработки из сотен людей внезапно обнаруживаю такое. И оно живое. Инди-проекты всегда как-то с душой делаются.

Софтинка платная, но примерно как Sublime Text — можно бесплатно пользоваться сколько угодно, но иногда будут всплывать попапы. Говорят, что они всплывают достаточно редко и даже почти не бесят.

Узнал об этом клиенте вот отсюда и отсюда.

А какими Git-клиентами пользуетесь вы?

#git
Давайте устроим холивар. Как правильно сливать ветки?
Anonymous Poll
55%
merge
27%
squash & merge
16%
rebase
3%
другое
А вы знали, что для flake8 можно создавать локальные правила, специфичные для конкретного проекта? Код таких проверок лежит по соседству с кодом, который они проверяют. Я вот только недавно узнал. Полезная фича.

https://medium.com/alan/sharing-good-practices-linters-37c4ffe8fc4c
Тэг Python совсем недавно обогнал тэг Java по общему количеству вопросов на StackOverflow. Отрыв с первым местом — JavaScript — составляет полмиллиона вопросов. Судя по количеству вопросов на этой неделе, разрыв может постепенно, очень медленно сокращаться.

Я вот только не знаю — это хорошо или плохо?

https://stackoverflow.com/tags
В PyCharm 2021.3 добавят шаблон для создания проекта на FastAPI. Теперь это один из пяти официально признанных JetBrains веб-фермворков на питоне.

https://blog.jetbrains.com/pycharm/2021/09/pycharm-2021-3-eap/

#jetbrains #fastapi
Хорошие новости для маководов!

В PSF задонатили несколько macOS машин на процессорах M1, и их запрягли гонять тесты и сборки CPython в CI. И сразу же нашли какую-то проблему. Полезно!

Интересная, конечно, у CPython система CI. В эпоху облачных сервисов, где можно арендовать сколько угодно машин с какими угодно процессорами, такой подход с self-hosted CI выглядит странно🤔

https://twitter.com/pyblogsal/status/1441862701928570893?s=21
more_itertools — расширение модуля itertools из стандартной библиотеки.

Код: https://github.com/more-itertools/more-itertools
Документация: https://more-itertools.readthedocs.io/

Библиотека содержит больше 100 различный функций-утилит, которые помогают обходить списки и итераторы более удобно, а также извлекать различные срезы, разбивать на части, склеивать обратно, проводить агрегации и так далее. Например:

* извлекать из списка или итератора значения чанками по N элементов (можно указать значение, которым должен быть дополнен последний чанк, либо он просто может быть меньше остальных);
* извлекать из итератора значения пересекающимися парами, по принципу abcd -> ab, bc, cd;
* превращать вложенную структуру в плоскую;
* расклеивать результат zip обратно в два отдельных итерируемых объекта;
* различные группировки, агрегации, оконные функции, выборки, комбинаторика...

Короче, прям много всего есть. Модуль itertools в стандартной библиотеке — очень бедный. Регулярно натыкаюсь на необходимость делать что-то чанками/батчами, в такие моменты more_itertools выручает.

#library
orjson - самая быстрая библиотека для (де)сериализации json, написанная на Rust.

Умеет нативно сериализовать объекты из dataclass, datetime, numpy и UUID. Имеет множество опций для тонкой настройки парсера, содержит вещи которых нет в парсере стандартной библиотеки. Имеет более полное соответствие UTF-8 и JSON формату.

PyPi | GitHub | Бенчмарки
#библиотека
Python 3.10 уже совсем близко!

Pablo Galindo — релиз-менеджер для 3.10 — приглашает всех на релизную вечеринку 🎉

Будет стрим вот тут: https://www.youtube.com/watch?v=AHT2l3hcIJg

Насколько я понял, релиз будут делать прям в прямом эфире. Начало 4 октября в 20:00 МСК.