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

Python 3.15 RC1: pickle для private method и nested class

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

Практическая проверка Python 3.15 RC1: как проверить round-trip pickle private method и nested class Python 3.15 в новом процессе без недоверенных данных. Изолированный fixture, отрицательный контроль, заранее заданный критерий и безопасный пакет диагностики.

Same-process loads недостаточен

Python 3.15 добавляет поддержку pickling private methods и nested classes, исправляя восстановление имён с name mangling и qualname. Это подтверждает только границу функции, а не наличие проблемы в конкретном проекте. Практический симптом уже: dumps проходит, loads в том же процессе тоже, но новый worker не находит private-mangled attribute или nested class после импорта модуля. До изменения кода зафиксируйте версию runtime, способ установки, один ожидаемый результат и один отрицательный исход. RC1 остаётся предварительным выпуском: его проверяют в отдельной среде, не ставят поверх рабочего interpreter и не используют один удачный запуск как разрешение на migration.

Импортируемый модуль с Outer.Inner

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

Четыре вида callable

Опровергающий маршрут: сравнить top-level public function, nested class, private method и локальный lambda как ожидаемо неподдерживаемый case; использовать несколько официально поддерживаемых protocol. Собирайте строки формата «объект | qualname | protocol | dumps | same-process loads | fresh-process loads | вызов результата». Порядок control A, target B, fresh control A2 обнаруживает загрязнение fixture: если A2 расходится с A, итог нельзя помечать passed. Пустое поле не равно нулю, отсутствие exception не доказывает правильную семантику, а изменение двух параметров сразу лишает опыт диагностической силы. Соседние причины получают отдельные строки, а не удобное общее объяснение.

Новый subprocess как критерий

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

Недоверенный pickle запрещён

Для maintainer или поддержки подготовьте: маленький temp module, protocol numbers, qualname, exception repr и hash fixture-файла без самого binary pickle и реальных объектов. Добавьте label T23-20, московский timestamp, точную версию RC и формулировку критерия «private/nested fixtures восстанавливаются после свежего импорта и ведут себя как исходные, а lambda остаётся отдельным отрицательным control». Секреты, IP, hostnames, usernames, абсолютные домашние пути и полные логи удалите. Официальные источники подтверждают изменение «Python 3.15 добавляет поддержку pickling private methods и nested classes, исправляя восстановление имён с name mangling и qualname.», но не подтверждают результат вашего теста, частоту проблемы или необходимость менять production. Такой пакет позволяет воспроизвести одну ветку, не раскрывая данные и не смешивая её с соседними issues.

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

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

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

Ответы

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

Ваш ответ

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

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

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