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

Python 3.15 RC1: regex в -W и PYTHONWARNINGS без лишнего подавления

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

Практическая проверка Python 3.15 RC1: как проверить regex filters в -W и PYTHONWARNINGS Python 3.15 на сообщении и имени модуля. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.

Фильтр должен сохранить canary

Python 3.15 позволяет полям message и module в -W/PYTHONWARNINGS быть regular expressions, если поле начинается и заканчивается символом slash. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: Команда хочет скрыть одно известное предупреждение, но literal или слишком широкий regex убирает соседние предупреждения и делает migration report ложно зелёным. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.

Два модуля и четыре warning

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

Literal, точный и широкий regex

Опровергающий маршрут: отдельно менять message и module field, экранировать delimiter и фиксировать action; после каждого фильтра запускать unmatched warning как обязательный canary. Собирайте строки формата «filter source | message pattern | module pattern | target виден | canary виден | stderr lines | exit code». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.

Message и module не смешиваются

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

Пустой stderr не равен успеху

Для maintainer или поддержки подготовьте: два module names, четыре synthetic messages, exact filter strings и counts stderr без рабочих путей, пакетов и пользовательских сообщений. Добавьте label T23-25, московский timestamp, точную версию RC и формулировку критерия «точный regex скрывает только target, canary остаётся видимым, literal сохраняет прежнюю семантику, а широкая форма помечается failed control». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «Python 3.15 позволяет полям message и module в -W/PYTHONWARNINGS быть regular expressions, если поле начинается и заканчивается символом slash.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.

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

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

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

Ответы

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

Ваш ответ

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

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

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