Discuvr Python Formatter

Офис и данные

CSV в Excel Вставьте CSV и сразу увидите таблицу, где числа, даты и идентификаторы имеют тот тип, в котором их должен хранить Excel. Скачайте чистый .xlsx, только когда он нужен. Подписать PDF Подпишите PDF в браузере - нарисуйте, напечатайте или загрузите подпись, разместите её на любой странице, добавьте дату и скачайте подписанную копию. Файл не покидает ваше устройство. Скрыть данные Навсегда скрывайте данные в PDF, Word, Excel, PowerPoint, текстовых файлах и изображениях. Совпадения и рамки удаляются из самого файла, а не закрываются, и результат проверяется повторно перед скачиванием. Мой IP-адрес Узнайте публичный IP-адрес, который видят сайты при подключении, общий ли он (CGNAT) или частный, и что ещё раскрывает ваш браузер. Конвертер регистра и инструменты для строк Переводите текст в ВЕРХНИЙ, нижний регистр, Заглавные Буквы или Как в предложении, превращайте имена в camelCase или snake_case, удаляйте повторяющиеся строки и сортируйте списки. Сравнение текстов Вставьте две версии текста, чтобы увидеть все добавленные, удалённые и изменённые строки с выделением изменённых слов.

Тексты и предложения

Редактирование тона Улучшайте написанный текст с правильной грамматикой, структурой и четкостью - в вашем собственном стиле. Одна вставка, один ответ, без диалога в чате. Генератор коммерческих предложений для фриланса Опишите задачу клиента и за считанные секунды получите готовое коммерческое предложение для фрилансера с оценкой объема и стоимости работ.

Право и комплаенс

Чат-бот по праву интеллектуальной собственности Задавайте вопросы об индийском праве ИС - товарные знаки, патенты, авторское право, промышленные образцы и другое, с использованными результатами веб-поиска над каждым ответом. Генератор ответов на FER по патентам Вставьте возражения из первого экспертного отчёта (FER), чтобы составить структурированный ответ, или загрузите черновик для проверки рисков в сфере ИС. Проверка права на государственные программы Ответьте один раз на короткий список вопросов. Войдите в систему, и мы сохраним ваши ответы, чтобы вы могли проверить, на какие центральные государственные программы вы можете претендовать, без повторного ввода.

Конфиденциальность и безопасность

Сканирование безопасности сайта Сканируйте домен на наличие реальных и воспроизводимых уязвимостей. Каждая находка содержит описание и команду для самостоятельной проверки. Очистка изображений Узнайте, что именно ваше фото рассказывает о вас - GPS, серийный номер камеры, ваше имя - и удалите эти данные. Обрезайте, изменяйте размер, размывайте лица и конвертируйте без сохранения изображения где-либо.

Инструменты разработчика

Форматирование JSON Форматируйте, минифицируйте и проверяйте JSON за одну вставку - с точным указанием строки и столбца при ошибке разбора и подсчетом элементов в документе. Python Formatter Форматируйте код Python так же, как Black, с нужной длиной строки и обработкой кавычек - и точным подсчетом измененных строк. Просмотр HTML Вставьте HTML и смотрите предпросмотр в «песочнице» для телефона, планшета или десктопа, с форматированием, минификацией, консолью скриптов и отчетом об ошибках в разметке. Калькулятор подсетей IP Введите CIDR-нотацию или IP-адрес с маской подсети и мгновенно получите адрес сети, широковещательный адрес, диапазон используемых хостов и общее количество адресов. Кодирование / декодирование Кодируйте и декодируйте Base64, Base64URL, процентное кодирование URL, HTML-сущности и hex прямо при вводе, с полной поддержкой UTF-8. Конвертер времени Unix Преобразуйте метку времени Unix в секундах, миллисекундах, микросекундах или наносекундах в дату в UTC или одном из основных часовых поясов мира, а дату - обратно в метку времени. Конструктор схем систем Пишите стрелки вроде User -> API -> Database и получайте готовую схему архитектуры или процесса. Сворачивайте группы для общей картины и нумеруйте шаги для деталей.

Мастерская ИИ

AI Playground Сравнивайте ответы нескольких провайдеров LLM бок о бок в реальном времени. Используйте свои API-ключи. Песочница агентов Экспериментируйте с ИИ-агентами, использующими инструменты (веб-поиск, калькулятор, загрузку URL), от разных провайдеров.

Обучение

Study Buddy Тренер по подготовке к собеседованиям в топовые IT-компании: от первого дня подготовки до принятого оффера. План по DSA, LLD, проектированию систем, поведенческим вопросам и кодингу с ИИ, мок-интервью, разбор резюме, трекер откликов и сравнение офферов.

Помощники на каждый день

Генератор QR-кодов Создавайте QR-коды из текста, URL, данных WiFi или контактов - в виде изображений PNG или векторов SVG, с выбранным вами уровнем коррекции ошибок. Конвертер единиц Мгновенно конвертируйте единицы длины, веса, температуры, объема, скорости, площади и энергии - более 40 типов единиц с моментальным результатом. Генератор паролей Сгенерируйте случайный пароль с криптографически стойкой случайностью, настройте его длину и типы символов и посмотрите его надёжность в битах энтропии. Счётчик слов и анализатор удобочитаемости Считает слова, символы, предложения и абзацы, оценивает время чтения и удобочитаемость - с подлинным посимвольным подсчётом для текста на китайском, японском, корейском и тайском языках. Калькулятор возраста и разницы дат Узнайте точный возраст человека или точную разницу между любыми двумя датами, в годах, месяцах и днях, а также общее количество дней и недель. Калькулятор разницы дат Считайте дни, недели, месяцы и рабочие дни между двумя датами или прибавляйте и вычитайте дни из даты. Калькулятор процентов Вычислите X% от Y, какой процент одно число составляет от другого, процентное увеличение или уменьшение между двумя числами, или обратный процент - четыре распространённых расчёта в одном инструменте. SIP-калькулятор Узнайте, во что вырастет ежемесячный взнос с ежегодным ростом, начальной суммой и инфляцией, или какой взнос нужен для цели. Калькулятор ИМТ Рассчитайте индекс массы тела (ИМТ) по росту и весу, в метрических или имперских единицах, классифицированный по категориям ВОЗ для взрослых: дефицит массы тела, норма, избыточный вес, ожирение.
Войти Начать
Все инструментыИнструменты разработчика

Python Formatter

Отформатируйте Python так, как это сделал бы Black - и посмотрите, сколько строк изменилось.

Ваш код

0 символов

Отформатировано

 

О сервисе Python Formatter

Этот инструмент запускает Black - форматтер, с которым уже согласно большинство проектов на Python - над тем, что вы вставите, с выбранной вами длиной строки и обработкой кавычек. Если файл не разбирается, указывается, в какой строке, а если он уже отформатирован, об этом тоже сообщается, вместо того чтобы притворяться, что что-то было сделано.

Что делает

  • Форматирование Black на 79, 88, 100 или 120 столбцов.
  • Режим "только проверка": узнайте, изменился бы файл, без его изменения.
  • Сохраните свой стиль кавычек или позвольте Black его нормализовать.
  • Учитывайте или игнорируйте магическую завершающую запятую, которая держит коллекцию развёрнутой.
  • Укажите конкретную версию Python, когда синтаксис зависит от версии.
  • Синтаксические ошибки сообщают строку, столбец и окружающий код.
  • Сообщает, сколько строк было добавлено и удалено, плюс форму файла.

Как это работает

  1. 1 Вставьте код или целый файл.
  2. 2 Выберите длину строки и интересующие вас параметры.
  3. 3 Нажмите "Форматировать", затем скопируйте или скачайте результат.

Ваш код никогда не выполняется

Форматирование Python не требует его выполнения. Код разбирается в синтаксическое дерево и переписывается на основе этого дерева, полностью в памяти - он никогда не записывается в файл, никогда не импортируется и никогда не выполняется. Форматтер, который бы выполнял то, что вы вставили, был бы удалённой командной строкой с текстовым полем.

Почему Black, а не собственное мнение

Black - это преобразование, сохраняющее AST: код на выходе - та же программа, что и код на входе. Это свойство - вся причина, по которой форматтеру можно доверять, и именно поэтому никакая языковая модель не участвует ни в одной части этого инструмента. Модель, которой попросили привести код в порядок, будет иногда переписывать строку по пути, а незаметное изменение работающего кода - единственный сбой, который форматтер не может себе позволить.

Только проверка

Тот же вопрос, что задаёт CI: изменился бы этот файл? Режим проверки возвращает ваш исходный код без изменений и сообщает, отформатировал бы его Black и на сколько строк. Это быстрый способ узнать, почему конвейер завершается с ошибкой на файле, который вы не можете воспроизвести локально.

Магическая завершающая запятая и fmt: off, разобранные примеры

Запятая после последнего элемента говорит 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, и они расходятся во мнениях достаточно часто, чтобы это удивило вас, если бы это делалось здесь.

Может ли он отформатировать файл с синтаксической ошибкой?

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

Следует ли он PEP 8?

Black совместим с PEP 8 с одним известным отступлением: его длина строки по умолчанию - 88, а не 79. Выберите 79 в селекторе длины строки, если вам нужна более строгая цифра.

Какой размер файла можно отформатировать?

До 400 000 символов за один запуск. Форматирование прерывается через 10 секунд, что случается только с очень большими или сильно повторяющимися файлами, и с одного IP-адреса можно выполнить 30 запусков за 10 минут.

Как получить такое же форматирование в редакторе, в pre-commit или в CI?

Эта страница использует 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 (ruff format)?

Почти всегда, но не байт в байт. Форматтер 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, а не на этой странице.