Python 3.14.7: Replace All вверх без wrap заменяет все совпадения выше. Практическая инструкция отделяет симптом от соседних причин: синтетический fixture, отрицательный control, таблица наблюдений, критерий остановки и минимальный пакет для поддержки без production-данных.
Факт, который можно опровергнуть
Начните с вопроса, который можно опровергнуть: «как проверить IDLE Replace All с direction Up и выключенным Wrap around в Python 3.14.7». Changelog подтверждает узкую change boundary: IDLE Replace dialog теперь заменяет все matches выше текущей позиции в конфигурации Up плюс no-wrap. Она связана с конкретной болью — Редактор стоит в середине файла, поиск направлен вверх, wrap выключен, а Replace All менял только первое совпадение вместо всех совпадений выше курсора. — но не подтверждает частоту встречаемости. Поэтому ниже есть чистый fixture, противоположный control и стоп-линия; без них отсутствие crash или один удачный запуск остаются слабым наблюдением.
Карточка воспроизведения
Запишите карточку опыта T22-20: точная версия, режим запуска, короткий hash входа и действие «создать временный текст из пяти уникальных строк с тремя одинаковыми маркерами выше и одним ниже курсора, затем выполнить Replace All вверх без wrap». Используйте только обратимые ресурсы. До выполнения определите, где появятся stdout, stderr и exit code, а также как будет выполнена очистка. Так диагностический пакет останется повторяемым и не потребует доступа к реальной инфраструктуре.
Control перед выводом
Отрицательный control обязателен: повторить Down/no-wrap, Up/wrap и одиночный Replace на новых копиях одного fixture. Заполняйте «direction | wrap | cursor line | matches before | replacements above | replacements below | final text hash» до интерпретации вывода. Если результат зависит от порядка, поменяйте порядок и начните заново с чистого fixture. Не объединяйте несколько исправлений в одном опыте: иначе невозможно связать наблюдение с issue boundary.
Формальное условие приёмки
Формальное условие passed: в целевой ветке заменены все три маркера выше курсора, нижний остался, а controls дают свои заранее рассчитанные counts. Один позитивный запуск недостаточен — повтор должен сохранить тот же контракт. При расходящихся результатах снизьте вывод до inconclusive и проверьте происхождение бинарника, feature flags и чистоту input. Не повышайте уверенность количеством одинаковых перезапусков одного загрязнённого процесса.
Предел вмешательства
Предел вмешательства: не открывать рабочий файл и не сохранять поверх него; остановиться при изменении строки ниже курсора или несовпадении исходного hash. Нельзя расширять тест на production, чужие PID или реальные данные. После target удалите fixture, закройте локальные endpoints и повторите маленький baseline control. Только совпавший baseline доказывает, что эксперимент не оставил состояние.
Сокращённый support bundle
Сокращённый support bundle содержит: версия IDLE, короткий синтетический fixture, позиция курсора, четыре счётчика замен и финальные hashes. Свяжите его с T22-20, добавьте hash синтетического input и критерий «в целевой ветке заменены все три маркера выше курсора, нижний остался, а controls дают свои заранее рассчитанные counts». Абсолютные пути замените ролями, бинарные данные — hashes, сообщения с приватным контекстом — классами исключений.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Python 3.14.7 release проверено 2026-08-29
- Python 3.14.7 changelog проверено 2026-08-29
- CPython issue #71956 проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.