Python Formatter
Отформатируйте Python так, как это сделал бы Black - и посмотрите, сколько строк изменилось.
Ваш код
0 символовОтформатировано
Отформатируйте Python так, как это сделал бы Black - и посмотрите, сколько строк изменилось.
Этот инструмент запускает Black - форматтер, с которым уже согласно большинство проектов на Python - над тем, что вы вставите, с выбранной вами длиной строки и обработкой кавычек. Если файл не разбирается, указывается, в какой строке, а если он уже отформатирован, об этом тоже сообщается, вместо того чтобы притворяться, что что-то было сделано.
Форматирование Python не требует его выполнения. Код разбирается в синтаксическое дерево и переписывается на основе этого дерева, полностью в памяти - он никогда не записывается в файл, никогда не импортируется и никогда не выполняется. Форматтер, который бы выполнял то, что вы вставили, был бы удалённой командной строкой с текстовым полем.
Black - это преобразование, сохраняющее AST: код на выходе - та же программа, что и код на входе. Это свойство - вся причина, по которой форматтеру можно доверять, и именно поэтому никакая языковая модель не участвует ни в одной части этого инструмента. Модель, которой попросили привести код в порядок, будет иногда переписывать строку по пути, а незаметное изменение работающего кода - единственный сбой, который форматтер не может себе позволить.
Тот же вопрос, что задаёт CI: изменился бы этот файл? Режим проверки возвращает ваш исходный код без изменений и сообщает, отформатировал бы его Black и на сколько строк. Это быстрый способ узнать, почему конвейер завершается с ошибкой на файле, который вы не можете воспроизвести локально.
Запятая после последнего элемента говорит Black оставить вызов или коллекцию по одному элементу на строку: result = compute(alpha, beta,) возвращается четырьмя строками, где alpha, и beta, стоят каждый на своей строке. Включите опцию игнорирования магической завершающей запятой, и тот же ввод станет result = compute(alpha, beta), если помещается в длину строки. Чтобы защитить вручную выровненный блок, например матрицу, поставьте # fmt: off строкой выше и # fmt: on ниже: Black оставит всё между ними так, как вы написали. # fmt: skip в конце строки защищает только эту строку. Это собственные комментарии Black, поэтому они работают и тогда, когда Black запускает CI вашего проекта.
Он отправляется на сервер, форматируется в памяти и возвращается в том же ответе. Ничего не записывается на диск, не кэшируется и не журналируется, а запись об использовании хранит только счётчики - размер, параметры, сколько строк изменилось - но никогда сам код.
Нет. Black меняет оформление, а не поведение, но делает больше, чем двигает пробелы. Он убирает лишние скобки (x = (1) становится x = 1), переводит в нижний регистр префиксы и экспоненты чисел (0XABCDEF становится 0xABCDEF, 1E5 становится 1e5), добавляет завершающую запятую, когда разбивает вызов на несколько строк, сокращает серии пустых строк и обрезает пробелы внутри docstring (""" Doc. """ становится """Doc."""). Последнее меняет текст __doc__, что важно, только если ваш код читает собственные docstring.
Потому что он уже был отформатирован с выбранной вами длиной строки. Инструмент сообщает "уже отформатирован", а не тихо возвращает копию.
Нет. Сортировка импортов - задача isort, а не Black, и они расходятся во мнениях достаточно часто, чтобы это удивило вас, если бы это делалось здесь.
Ни один форматтер не может - файл, который не разбирается, не имеет структуры для переписывания. Вы получаете строку, столбец и окружающий код, чтобы исправить его и попробовать снова.
Black совместим с PEP 8 с одним известным отступлением: его длина строки по умолчанию - 88, а не 79. Выберите 79 в селекторе длины строки, если вам нужна более строгая цифра.
До 400 000 символов за один запуск. Форматирование прерывается через 10 секунд, что случается только с очень большими или сильно повторяющимися файлами, и с одного IP-адреса можно выполнить 30 запусков за 10 минут.
Эта страница использует Black, его версия показана в шапке страницы на широких экранах. Black читает настройки проекта из pyproject.toml, раздел [tool.black], под длинными именами опций: line-length = 88 для выбранного параметра "Длина строки", skip-string-normalization = true, если вы отметили "Сохранять мои кавычки", skip-magic-trailing-comma = true для "Игнорировать «магическую» завершающую запятую" и target-version = ["py311"] для фиксированного значения "Цель". Плагины редакторов и хук pre-commit читают тот же файл. Запускайте black . для форматирования и black --check --diff . в CI: команда ничего не меняет и завершается с кодом 1, если файл был бы переформатирован. Закрепите ту же версию Black, что и на этой странице: первый релиз каждого календарного года может менять стабильный стиль.
Почти всегда, но не байт в байт. Форматтер Ruff задуман как прямая замена Black, и документация Ruff сообщает, что на крупных проектах, уже отформатированных Black, таких как Django и Zulip, более 99,9% строк получаются идентичными. Сильнее он расходится на коде, который никогда не проходил через Black, особенно в комментариях в конце строки, а его документация перечисляет намеренные отличия. Длина строки по умолчанию у него тоже 88, задаётся через line-length в [tool.ruff]; quote-style = "preserve" в [tool.ruff.format] соответствует "Сохранять мои кавычки", а skip-magic-trailing-comma = true соответствует "Игнорировать «магическую» завершающую запятую". Если ваш CI запускает ruff format --check, проверяйте файл в Ruff, а не на этой странице.