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

Python 3.15 RC1: аудит .start перед переносом import из .pth

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

Практическая проверка Python 3.15 RC1: как проверить package startup .start Python 3.15 и мигрировать исполняемый import из pth без изменения sys.path. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.

Разделите путь и исполняемый код

PEP 829 вводит .start с entry point вида pkg.mod:callable; наличие парного .start отключает import-lines в соответствующем .pth, но сохраняет path-extension строки. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: Пакет полагается на код из .pth до первой строки приложения, и после добавления .start часть пути может сохраниться, а часть инициализации исчезнуть или выполниться в другом порядке. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.

Чистый venv с двумя marker

Рекомендуемый fixture: создать отдельный venv и тестовый dist-info с .pth, добавляющим temp-каталог и пишущим marker, затем парный .start с одной именованной callable; запускать только без рабочих site-packages. Дайте ему метку T23-07, отдельный temp root и короткий deadline. Входы должны быть синтетическими, повторяемыми и минимальными; каждый новый запуск получает новые объекты и процесс, если cache или global state способны изменить наблюдение. До опыта запишите точную команду и ожидаемый class результата. Не включайте рабочие конфиги, адреса, токены, персональные строки, production PID или полные environment dumps.

Четыре состояния startup

Опровергающий маршрут: снять четыре состояния: нет файлов, только .pth, .pth плюс .start, повреждённый entry point; для каждого проверить sys.path, marker, stderr и код выхода в новом процессе. Собирайте строки формата «набор startup-файлов | path добавлен | import-line исполнена | callable вызвана | порядок marker | ошибка запуска». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.

Порядок и дублирование

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

Инвентаризация до удаления .pth

Для maintainer или поддержки подготовьте: дерево временного venv, содержимое двух синтетических startup-файлов, sys.path diff с сокращёнными корнями и коды выхода без списка реальных пакетов. Добавьте label T23-07, московский timestamp, точную версию RC и формулировку критерия «path-extension остаётся предсказуемым, callable выполняется ровно в ожидаемой ветке, а старый import-line не дублирует действие при парном .start». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «PEP 829 вводит .start с entry point вида pkg.mod:callable; наличие парного .start отключает import-lines в соответствующем .pth, но сохраняет path-extension строки.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.

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

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

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

Ответы

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

Ваш ответ

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

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

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