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

проверка версий PEP 440Порядок версий и причины отбора кандидатов

Одна версия на строку: нормализация, сортировка или проверка условий, разделённых запятыми.

проверка версий PEP 440

Версии (по одной на строку)

Отчёт

Введите данные или загрузите пример.

Данные обрабатываются в этом браузере и не отправляются на сервер.

Параметры

Запятые означают И. Пустое условие не задаёт границ. Операторы: ~= == != <= >= < > ===; .* только для префиксов с == или !=.

До 1 000 непустых строк; 256 единиц UTF-16 на строку, 2 048 на условие и 100 000 всего. Исходный текст сохраняется.

Проверка текущих кандидатов…

Проверка версий PEP 440 помогает понять, почему более новая публикация не подходит под ограничение зависимости. Допустимая запись, более высокий приоритет и соответствие условиям — разные свойства, которые в отчёте показаны отдельно.

Сравнение версий Python считает 1.0 и 1.0.0 равными по приоритету, но нормализация сохраняет число компонентов. Для epoch, dev, post и локальных меток нужны специальные правила; алфавитная сортировка их не заменяет.

Зачем нужна проверка версий PEP 440

Сохранить исходную запись рядом с нормализованной

Проверка версий PEP 440 показывает v01.1 рядом с результатом 1.1. Раскройте строку, чтобы увидеть epoch, release, pre, post, dev и local. Так изменения регистра, нулей или разделителей можно проверить, не перезаписывая исходный список.

Разные записи проходят нормализацию и превращаются в карточки с одинаковой структурой сегментов; исходные карточки остаются.

Объяснить исключение предварительной версии

Автоматический режим сначала рассматривает весь набор кандидатов, удовлетворяющих условиям. Если подходит обычная версия, она получает приоритет. Иначе могут быть приняты подходящие предварительные версии. Добавление стабильного выпуска способно изменить другие строки отчёта.

Два фильтра показывают отложенные предварительные версии при наличии стабильной и их допуск при отсутствии подходящей стабильной версии.

Три детали перед чтением отчёта

01

Выберите нужный вид проверки

Нормализация проверяет запись без фильтра условий. Сортировка использует приоритет Python и сохраняет исходный порядок равных значений. Проверка ограничений оставляет порядок строк и различает нарушение условия и исключение политикой предварительных версий.

02

Проверяйте полный набор кандидатов

Удалите подходящую стабильную версию и посмотрите, включатся ли предварительные. Режим включения не меняет числовые границы: 1.0rc1 по-прежнему меньше 1.0 и не удовлетворяет >=1.0.

03

Экспортируйте актуальный результат

Автоматический расчёт ждёт 350 мс. После отключения доступны кнопка и Ctrl/Cmd+Enter. Правка сразу блокирует старый экспорт. Пример и очистка сначала показывают предварительный просмотр; отмена изменения возвращает прежние входные данные и отчёт.

Запись, приоритет и условия

Нормализация с сохранением исходных данных

Распознаются префикс v, ведущие нули, варианты alpha или preview и локальные разделители. Число компонентов выпуска не меняется: 1.0.0 остаётся таким в выводе, хотя при сравнении равно 1.0. Все строки не дополняются автоматически до трёх компонентов.

Точная сортировка всех сегментов

Сначала сравнивается epoch, затем числа выпуска и признаки dev, alpha, beta, rc, final и post. Числовые локальные компоненты сравниваются как целые. Большие значения не округляются даже за пределами безопасных целых JavaScript.

Совместная проверка ограничений

Поддерживаются ~=, ==, !=, <=, >=, <, > и ===. Запятая означает И. Для равенства и исключения допустимы префиксы вроде 1.4.*. Каждая строка сохраняет исходный физический номер, даже если пустые строки пропущены.

Ошибки остаются в полном отчёте

Неверная версия отмечается в своей строке, а неверное условие останавливает весь расчёт. При сортировке ошибочные строки идут в конце. На экране можно добавлять по 50 строк, но JSON всегда содержит все обработанные записи и коды ошибок.

Область применения и ограничения

Только версии и условия
Имена пакетов, extras, маркеры окружения, файлы requirements, URL и файлы блокировки не разбираются. Нет обращения к PyPI, установки, разрешения зависимостей, изменения проекта или вычисления следующего номера. Совпадение не доказывает совместимость API.
Без сокращений из других экосистем
Символ ^, одиночная тильда, группы ИЛИ и диапазоны через дефис отвергаются. Для совместимого выпуска используйте ~=1.4. Пустое условие не задаёт числовых границ, но политика предварительных версий действует. Пустые части между запятыми игнорируются.
Локальные метки зависят от оператора
Локальные версии влияют на сортировку. Публичное условие равенства игнорирует local кандидата, а явно локальное равенство сравнивает его. Условия порядка и совместимости не могут содержать local: >=1.0+linux недопустимо.
У === есть намеренное ограничение
Оператор сравнивает нормализованную запись без эквивалентности при добавлении нулей. Кандидаты всё равно должны быть допустимыми версиями PEP. Даже при ===legacy строка legacy остаётся ошибочной; старые правила установщиков для произвольных версий не эмулируются.
Автоматический выбор ограничен списком
Выпуски dev тоже считаются предварительными. Положительное условие с явной предварительной версией может разрешить их. Иначе решение зависит от наличия обычной версии, удовлетворяющей всем условиям. Уже установленные пакеты и другие выпуски индекса не учитываются.
Явные лимиты без скрытого обрезания
До 1 000 непустых строк, 256 единиц UTF-16 на строку, 2 048 на условие и 100 000 на весь список. Это лимиты инструмента. Пустые строки пропускаются, повторы сохраняются; нормализация и сортировка не переписывают исходный текст.

Вопросы: проверка версий PEP 440

Что означает ~= в зависимости Python?

Он объединяет нижнюю границу и префикс выпуска. ~=1.4 разрешает версии от 1.4 в серии 1.*, а ~=1.4.0 ограничивается серией 1.4.*. Запись ~=1 с одним компонентом недопустима. Допуск предварительных версий определяется отдельно.

Почему предварительная версия подходит отдельно, но не в списке?

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

Как упорядочиваются публичная и локальная версии?

При одинаковой публичной части локальная версия идёт позже: 1.0 < 1.0+abc. Числовые локальные компоненты идут после текстовых. Равные нормализованные значения сохраняют исходный порядок. В отличие от метаданных сборки SemVer, local влияет на приоритет.

Можно ли включить локальную метку в условие?

Да, с == или !=, например ==1.0+linux.1. С >= или ~= это запрещено. Публичное условие ==1.0 может принять 1.0+linux.1, поскольку не требует конкретной локальной сборки.

Как сравнить номера версий в Python?

packaging.version.Version обеспечивает порядок по PEP. Реализация в браузере проверяется по packaging 26.0. Прямое сравнение строк может неверно упорядочить 1.10 и 1.9, а другая схема версий может не учитывать epoch или post.

Можно ли поставить .* после pre или post?

Нет. ==1.0.* — допустимый префикс выпуска, а ==1.0rc1.* и ==1.0.post1.* недопустимы. Для таких суффиксов используйте точное равенство или обычные границы. Префикс не отменяет политику предварительных версий.

Неожиданный результат?

Проверьте реальные кандидаты

Проверка версий PEP 440 позволяет повторить анализ с полным списком и нужным условием. Перед сохранением актуального отчёта просмотрите ошибки и объяснение отбора предварительных версий.