Автоформаттер
https://twitter.com/llanga/status/1455496802812239876?s=21
#black
black
принял «политику стабильности». В 2022 ожидайте стабильный релиз.https://twitter.com/llanga/status/1455496802812239876?s=21
#black
Twitter
Łukasz Langa
Version 21.10b0 of Black, your friendly #Python auto-formatter, is out now! 🖤 The biggest news is that thanks to @pradyunsg and @jelleszijlstra we adopted a stability policy that will go into effect starting with the first stable release in Jan 2022. 🤯 b…
В связи с чем проект Django собирается начать форматировать свой код при помощи
Этот автоформаттер постепенно становится де-факто стандартом оформления кода. Но кажется, что Django будет первым проектом такого масштаба, который решил «очернить» свой код.
https://twitter.com/adamchainz/status/1455850491519254531?s=21
#black #django
black
.Этот автоформаттер постепенно становится де-факто стандартом оформления кода. Но кажется, что Django будет первым проектом такого масштаба, который решил «очернить» свой код.
https://twitter.com/adamchainz/status/1455850491519254531?s=21
#black #django
Twitter
Adam Johnson
Very exciting. Django will be adopting Black in the new year, as DEP 8 declared we will use the first stable release. twitter.com/llanga/status/…
АААА! У форматтера
https://github.com/psf/black/releases/tag/22.1.0
#black
black
наконец-то вышла стабильная (не бета) версия! Неужели дожили. Я ждал этого тжри года!https://github.com/psf/black/releases/tag/22.1.0
#black
GitHub
Release 22.1.0 · psf/black
At long last, Black is no longer a beta product! This is the first non-beta release and the first release covered by our new stability policy.
Highlights
Remove Python 2 support (#2740)
Introduce ...
Highlights
Remove Python 2 support (#2740)
Introduce ...
❤8👍1
В Django совсем недавно приняли веру в единый стиль кода и автоматическое форматирование. Пулл-реквест получился царский — около двух тысяч изменённых файлов. Да, Django теперь использует Black!
Это хороший прецедент. Думаю, теперь все, кто не решался внедрить Black, должны серьезно посмотреть на него ещё раз. Не берусь предсказывать, но ожидаю волну внедрений этого инструмента в разные другие проекты.
https://github.com/django/django/pull/15387
#django #black
Это хороший прецедент. Думаю, теперь все, кто не решался внедрить Black, должны серьезно посмотреть на него ещё раз. Не берусь предсказывать, но ожидаю волну внедрений этого инструмента в разные другие проекты.
https://github.com/django/django/pull/15387
#django #black
GitHub
Refs #33476 -- Reformatted code with Black. by carltongibson · Pull Request #15387 · django/django
Mainly targeting coding-style.txt, but then spread to a few of the config files.
Not sure they're exactly how we want them?
Doesn't yet include the GitHub Action, which wouldn't pass u...
Not sure they're exactly how we want them?
Doesn't yet include the GitHub Action, which wouldn't pass u...
👍17💩5
Ещё одна новость про форматирование.
Одна из популярных причин, почему люди не в восторге от идеи внедрить форматтер кода в свои старые проекты — это замусоривание истории изменений. Появляется царь-коммит, который изменяет весь код сразу, и
Начиная с версии 2.23.0 (это 2019 год) Git поддерживает возможность игнорировать некоторые коммиты в
Крутая новость в том, что GitHub теперь тоже в своём Blame View научился игнорировать такие коммиты. Создаёте специальный файлик, записываете туда хэши своих коммитов с форматированием кода и вуаля!
https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view
#formatter #github #git #blame #black
Одна из популярных причин, почему люди не в восторге от идеи внедрить форматтер кода в свои старые проекты — это замусоривание истории изменений. Появляется царь-коммит, который изменяет весь код сразу, и
git blame
бессилен пробиться через него к более старым изменениям. Получается, с точки зрения Git, человек, запустивший Black, становится автором всего проекта 😅Начиная с версии 2.23.0 (это 2019 год) Git поддерживает возможность игнорировать некоторые коммиты в
git blame
, что как раз и решает эту проблему.Крутая новость в том, что GitHub теперь тоже в своём Blame View научился игнорировать такие коммиты. Создаёте специальный файлик, записываете туда хэши своих коммитов с форматированием кода и вуаля!
https://docs.github.com/en/repositories/working-with-files/using-files/viewing-a-file#ignore-commits-in-the-blame-view
#formatter #github #git #blame #black
GitHub Docs
Viewing and understanding files - GitHub Docs
Explore file content and trace changes over time to understand a new codebase and its evolution.
❤16
Питонические атаки
Ещё одна новость про форматирование. Одна из популярных причин, почему люди не в восторге от идеи внедрить форматтер кода в свои старые проекты — это замусоривание истории изменений. Появляется царь-коммит, который изменяет весь код сразу, и git blame бессилен…
Если вдруг кому нужна такая же фича в локальном консольном Git или в GUI, типа PyCharm или VSCode, то вот как это делается:
#formatter #git #blame #black
git config --local blame.ignoreRevsFile .git-blame-ignore-revsНужно выполнить после клонирования репозитория. К сожалению, самостоятельно Git находить этот файл пока что не научился.
#formatter #git #blame #black
❤7
Питонические атаки
Ещё одна новость про форматирование. Одна из популярных причин, почему люди не в восторге от идеи внедрить форматтер кода в свои старые проекты — это замусоривание истории изменений. Появляется царь-коммит, который изменяет весь код сразу, и git blame бессилен…
А если кому нужна такая же фича в веб-интерфейсе BitBucket, то голосуйте за нашего кандидата вот здесь:
https://jira.atlassian.com/browse/BSERV-12730
#git #bitbucket #blame #black
https://jira.atlassian.com/browse/BSERV-12730
#git #bitbucket #blame #black
❤2
Питонические атаки
Ещё одна новость про форматирование. Одна из популярных причин, почему люди не в восторге от идеи внедрить форматтер кода в свои старые проекты — это замусоривание истории изменений. Появляется царь-коммит, который изменяет весь код сразу, и git blame бессилен…
Для GitLab такая фича тоже обсуждается, ставьте свои пальцы вверх вот сюда:
https://gitlab.com/gitlab-org/gitlab/-/issues/31423
#git #gitlab #blame #black
https://gitlab.com/gitlab-org/gitlab/-/issues/31423
#git #gitlab #blame #black
GitLab
Support ignoring commits in blame (blame.ignoreRevsFile config option) (#31423) · Issues · GitLab.org / GitLab · GitLab
Problem to solve I want to ignore commits when viewing blame (available as of git 2.23)
👍9
Оказывается, крайний релиз форматтера
Получается такое через компилятор
В итоге после компиляции и некоторых оптимизаций получилось ускорить работу форматтера в два раза. Время запуска тоже слегка сократилось. Из-за особенностей компилятора тайп-аннотации тоже стали строже.
Автор этой инициативы написал серию постов (раз, два, три) про возникшие по пути сложности. Любопытно.
#black #formatter #mypy #mypyc
black
22.1.0 (он же первый не-бета релиз) для всех основных платформ распространяется в виде колёс со скомпилированным нативным кодом. То есть там уже не обычный интерпретируемый питон, а именно нативный код, использующий Python API. На фоне долгожданной стабилизации форматтера эта новость осталась практически незамеченной.Получается такое через компилятор
mypyc
, идущий в комплекте с тайп-чекером mypy
. Он умеет транспилировать обычный код на питоне с тайп-аннотациями в исходники на C, а их уже можно скомпилировать в библиотеки для большинства платформ.В итоге после компиляции и некоторых оптимизаций получилось ускорить работу форматтера в два раза. Время запуска тоже слегка сократилось. Из-за особенностей компилятора тайп-аннотации тоже стали строже.
Автор этой инициативы написал серию постов (раз, два, три) про возникшие по пути сложности. Любопытно.
#black #formatter #mypy #mypyc
ichard26.github.io
Compiling Black with mypyc, Pt. 1 - Initial Steps
I spent a COVID summer (and then some) integrating mypyc into Black to double performance. How was it?
👍9🔥1🤯1
Команда форматтера новому году обновлению дефолтного стиля. Они весь год собирали разные изменения/улучшения, но не включали их, чтобы лишний раз не тревожить код пользователей. И вот в начале 2023 года выйдет релиз, где всё это наконец вступит в силу. Готовьтесь, что после обновления
Список изменений можно почитать в блоге одного из разработчиков: https://ichard26.github.io/blog/2022/12/black-23.1a1/
#black #formatter
black
готовится к black
у вас изменится форматирование кода. Вероятно, это обновление лучше делать отдельно от других изменений, чтобы не заставлять ваших ревьюверов вычитывать смысловые изменения в коде вперемешку с изменениями в форматировании.Список изменений можно почитать в блоге одного из разработчиков: https://ichard26.github.io/blog/2022/12/black-23.1a1/
#black #formatter
ichard26.github.io
Black 23.1a1 - please help us test the 2023 stable style!
We just released Black 23.1a1 with the first draft of the 2023 stable style, please try it out and let us know your feedback and concerns.
😱3
Если хотите попробовать новый стиль уже сейчас, то это приветствуется и делается через установку превью-версии:
Многие изменения я словить не смог, но они должны быть весьма приятными. Например, форматтер вместо разгибания тайп-хинта по какой-то произвольной скобке:
python -m pip install black==23.1a1На одном из рабочих проектов форматирование новой версией завершилось вот с таким результатом, то есть изменилось ~5% файлов:
274 files reformatted, 4738 files left unchanged.Большая часть изменений — это вырезанная первая пустая строка в определениях функций и классов. Пожалуй, хорошо, что форматтер стал за этим следить, а то эти пустые строки воспринимались как что-то лишнее. Кто, блин, их вообще ставит?
Многие изменения я словить не смог, но они должны быть весьма приятными. Например, форматтер вместо разгибания тайп-хинта по какой-то произвольной скобке:
def frobnicate() -> ThisIsTrulyUnreasonablyExtremelyLongClassName | list[Научился группировать и делать более осмысленные переносы:
ThisIsTrulyUnreasonablyExtremelyLongClassName
]:
pass
def frobnicate() -> (
ThisIsTrulyUnreasonablyExtremelyLongClassName
| list[ThisIsTrulyUnreasonablyExtremelyLongClassName]
):
pass
#black #formatter👍18🤔1
Ещё одна новость про JetBrains, но вот это уже настоящая революция, а не эти ваши ИИ попсовые.
Наконец-то в PyCharm добавляют встроенную поддержку форматтера black! 🎉
Прямо без каких-либо плагинов, IDE задетектит наличие
Правда, заметил, что люди жалуются на модальное окошко, которое выскакивает на мгновение в процессе форматирования. Ещё пока что нет поддержки
Доступно только в EAP, а по-настоящему опубликуют в версии 2023.2.
https://blog.jetbrains.com/pycharm/2023/07/2023-2-eap-5/
#jetbrains #black
Наконец-то в PyCharm добавляют встроенную поддержку форматтера black! 🎉
Прямо без каких-либо плагинов, IDE задетектит наличие
black
в виртуальном окружении и предложит использовать его вместо дефолтного форматтера пайчарма. Настройки подхватывает из pyproject.toml
. И всё, просто берёт и форматирует!Правда, заметил, что люди жалуются на модальное окошко, которое выскакивает на мгновение в процессе форматирования. Ещё пока что нет поддержки
blackd
, который использовали для ускорения форматирования, но это обещали добавить. Короче, не идеально, но для начала хорошо.Доступно только в EAP, а по-настоящему опубликуют в версии 2023.2.
https://blog.jetbrains.com/pycharm/2023/07/2023-2-eap-5/
#jetbrains #black
🔥19👍3🤔2❤1