Skip to content

Black fix#27

Merged
petrCher merged 4 commits into
mainfrom
black_fix
Jul 13, 2026
Merged

Black fix#27
petrCher merged 4 commits into
mainfrom
black_fix

Conversation

@Georgon

@Georgon Georgon commented Jul 11, 2026

Copy link
Copy Markdown
Contributor

Изменения

Разобрался с новой версией форматирования black:
В начале 2026 произошел переход со стиля Black 2023 на новый стабильный стиль (26...). Создатели этого не делали три года, так что разницы в форматировании накопилось.
Основная причина: Новый Black не ломается, а запускается в режиме: black --check --diff и завершает работу с кодом 1, потому что часть файлов проекта была отформатирована по правилам Black 23.11.0, а Black 24–26 использует уже другой стабильный стиль. Код 1 здесь означает «файлы необходимо переформатировать», а не ошибку установки или несовместимость с Python.
В проекте есть две независимые версии:
uses: psf/black@23.11.0 (YAML) -- это версия GitHub Action.
А в requirements.dev.txt находится: black==23.11.0 - это версия самого Python-пакета Black.
При использовании: uses: psf/black@stable action по умолчанию устанавливает последнюю версию Black из PyPI. Версия action и версия установленного форматтера не обязаны совпадать.

Вообще, согласно официальному источнику:
Black гарантирует неизменность стабильного форматирования в рамках одного календарного года. В первой версии нового года разработчики могут переводить новые правила из preview-режима в stable. Поэтому большой переход с 23.11.0 на 26.x включает сразу изменения стиля 2024, 2025 и 2026 годов

То есть код всего лишь нужно один раз переформатировать новым Black и закоммитить изменения. Я собственно это и сделал.
Вот инструкция, как поступать со всеми репозиториями:
Локально развернуть проект, создать новую ветку и подключиться к ней, далее:
python -m pip install --upgrade "black~=26.0" isort
python -m isort .
python -m black --check --diff .
python -m black .
git diff
После проверки изменений:
git add .
git commit -m "Reformat code with Black 26"

Также в requirements я заменил:
black~=26.0
А в checks.yml:

  • uses: psf/black@stable
    with:
    version: "~=26.0"
    options: "--check --diff"
    src: "."
    Официальная документация Black рекомендует использовать psf/black@stable, а версию самого форматтера задавать отдельно через параметр version.

Также после форматирования и новой версии black возникла несогласованность правил isort и нового Black.
Я удалил из из pyproject.toml:
multi_line_output = 3
lines_after_imports = 2
include_trailing_comma = true
Оставив:
[tool.isort]
line_length = 120
profile = "black"
так как они уже входят в профиль profile = "black".
В новой версии Black после импортов идет 1 пустая строка.

Теперь конфликта нет и команды:
python -m isort --check-only .
python -m black --check .
не выдают ошибок с linting.

Closes #252

@Georgon
Georgon requested a review from petrCher July 11, 2026 14:20
@Georgon Georgon self-assigned this Jul 11, 2026
@Georgon

Georgon commented Jul 11, 2026

Copy link
Copy Markdown
Contributor Author

src -- это путь к файлам или папкам, которые Black должен проверить.
. -- black проверит весь текущий проект

src: "." и так по умолчанию, так что можно не писать

@petrCher
petrCher merged commit 473a947 into main Jul 13, 2026
1 of 2 checks passed
@petrCher
petrCher deleted the black_fix branch July 13, 2026 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants