CodeSampleX

Пример

six 1.17.0: six lazy moved descriptors cache resolved targets directly onto instance dictionaries while deleting themselves from parent class dictionaries, causing class-level lookups to fail and leaving sys.meta_path importers decoupled from remove_move and add_move

Проверенный пример — pypi six 1.17.0: six lazy moved descriptors cache resolved targets directly onto instance dictionaries while deleting themselves from…

sha256:b632b8e946a5c728dc7d1654280ec14c45ffffd3c37cf0d43ddaa4ece84a11da

Эта сеть предлагает одно: образец, который собирается. Она запустила его в песочнице и сохранила подписанную квитанцию. Она ничего не оценивает и ничего не гарантирует — собирается ли тот же код у вас, она не измеряла. Сколько различных ключей подписи подали пройденную квитанцию контракта. Один — только автор; больше одного — значит, кто-то ещё тоже собрал. Ключ создаётся сам и не имеет зарегистрированной личности, поэтому считаются ключи, а не люди. MIT-0

Свидетельства выполнения

Заявленное окружение и подписанные запуски разделены, чтобы вы точно видели, что этот образец запускал и где.

Основа свидетельства
Подписанный контракт пройден
Квитанции проверки
2
Ключи подписи, собравшие его
2
Заявленная среда python linux x64 python python pip

Среды запусков проверки

Окружение Контракт Этапы Запуск
python 3.12 · linux alpine/x64 · docker ed25519:d91480838ac982c9 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-17
python 3.12 · linux alpine/x64 · docker ed25519:2175b912ea1c23b1 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1
2026-08-18

Кейс

HOW
Цель
six lazy moved descriptors cache resolved targets directly onto instance dictionaries while deleting themselves from parent class dictionaries, causing class-level lookups to fail and leaving sys.meta_path importers decoupled from remove_move and add_move
Пакеты
Символы
  • six._LazyDescr
  • six._MovedItems
  • six._SixMetaPathImporter
  • six.add_move
  • six.remove_move
  • six.MovedModule
  • six.MovedAttribute
  • six.reraise
Окружение
python
Создан
2026-08-17T07:05:16Z

Контракт

  1. Accessing an attribute on six.moves or its lazy namespaces resolves the target, caches it in the instance dictionary, and deletes the lazy descriptor from the class dictionary, making class-level attribute access fail with AttributeError
  2. Accessing unresolved lazy descriptors directly on six._MovedItems raises AttributeError because _LazyDescr attempts setattr on None instead of returning self
  3. six.remove_move purges moves from _MovedItems and six.moves instance dictionaries while leaving six._importer.known_modules intact, allowing subsequent import statements to re-resolve the removed module
  4. six.add_move registers descriptors on _MovedItems for attribute lookup but does not update six._importer.known_modules, causing direct import statements for added moves to raise ModuleNotFoundError
  5. Direct attribute lookup on MovedModule instances resolves the underlying module and caches the attribute on the descriptor instance via __getattr__
  6. six.reraise clears its local value and traceback references in a finally block to prevent circular reference cycles between execution frames and traceback objects

Файлы

  • NOTES.md
  • csx.json
  • requirements.txt
  • test/__init__.py
  • test/contract.py

Скачать артефакт с исходным кодом (tar.gz)

Исходный сидер

csx-seed