К обсуждениям

Python 3.15 RC1: argparse предлагает исправление опечатки по умолчанию

Редакция VOne Технологии

Практическая проверка Python 3.15 RC1: как проверить suggest_on_error True по умолчанию в argparse Python 3.15 и стабильность stderr CLI. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.

Подсказка меняет текст, не команду

В Python 3.15 ArgumentParser включает suggest_on_error=True по умолчанию и может дополнять ошибку подсказкой для похожего выбора. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: CLI-тест сравнивает stderr целиком или внешний wrapper парсит одну строку ошибки; новая подсказка полезна человеку, но меняет снимок без изменения exit code. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.

Parser с близкой опечаткой

Рекомендуемый fixture: создать parser с тремя choices и subparser, вызвать точный вариант, одну близкую опечатку и далёкое неизвестное значение; захватить stderr и код выхода в отдельном процессе. Дайте ему метку T23-11, отдельный temp root и короткий deadline. Входы должны быть синтетическими, повторяемыми и минимальными; каждый новый запуск получает новые объекты и процесс, если cache или global state способны изменить наблюдение. До опыта запишите точную команду и ожидаемый class результата. Не включайте рабочие конфиги, адреса, токены, персональные строки, production PID или полные environment dumps.

Явное отключение как control

Опровергающий маршрут: повторить с suggest_on_error=False и с неоднозначными близкими choices; проверять структурные фрагменты сообщения, не цветовые escape и не локализованный полный снимок. Собирайте строки формата «аргумент | choice существует | suggestion включена | подсказка появилась | exit code | обязательный фрагмент stderr». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.

Exit code важнее полного stderr

Зелёный критерий сформулирован заранее: валидная команда не меняется, близкая опечатка получает уместную подсказку, далёкая не получает выдуманный выбор, а automation опирается на exit code. Ветка not reproduced означает только отсутствие симптома в этой версии fixture; blocked означает нехватку capability или источника; failed control возвращает расследование к стенду. Стоп-линия: {item['stop']}. Нельзя добиваться зелёного результата отключением проверки, broad except, ростом лимита, повторением до случайного успеха или подменой предварительного release стабильным обещанием. После теста удаляются только созданные temp-ресурсы.

Обновление golden-теста

Для maintainer или поддержки подготовьте: минимальный parser, argv cases, repr stderr без ANSI, exit codes и указание явного значения suggest_on_error. Добавьте label T23-11, московский timestamp, точную версию RC и формулировку критерия «валидная команда не меняется, близкая опечатка получает уместную подсказку, далёкая не получает выдуманный выбор, а automation опирается на exit code». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «В Python 3.15 ArgumentParser включает suggest_on_error=True по умолчанию и может дополнять ошибку подсказкой для похожего выбора.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.

Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.