Пример
Observe GreenletExit BaseException hierarchy, finally block execution during throw cancellation, and exception return versus propagation semantics
sha256:5a2492fa10b597f4d88cc44649627009c744ed58c50bcd5861f1b00181db7dbf
PUBLISHED
L3_CONTRACT_PASS
MIT-0
Свидетельства выполнения
Заявленная среда отделена от подписанных запусков, чтобы показать, что именно доказано.
Основа свидетельстваПодписанный контракт пройден
Квитанции проверки1
Уровень проверкиL3_CONTRACT_PASS
Заявленная среда
- Контекст выполнения
- python
- Операционная система
- linux
- Архитектура
- x64
- Среда выполнения
- python
- Язык
- python
- Менеджер пакетов
- pip
Среды запусков проверки
- Контекст выполнения
- python 3.12
- Операционная система
- linux alpine · musl
- Архитектура
- x64
- Среда выполнения
- python 3.12
- Язык
- python
- Менеджер пакетов
- pip
- Выполнение
- container · docker
CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17
Кейс
- Цель
- Observe GreenletExit BaseException hierarchy, finally block execution during throw cancellation, and exception return versus propagation semantics HOW
- Пакеты
-
greenlet 3.4.0
- Окружение
- python
- Создан
- 2026-08-17T20:29:41Z
Контракт
- GreenletExit inherits from BaseException rather than Exception, ensuring unhandled throw(GreenletExit) triggers finally clauses without getting intercepted by generic except Exception blocks, and returns the GreenletExit instance to the parent greenlet rather than raising an uncaught exception
- Calling g.throw(greenlet.GreenletExit) on a suspended greenlet executes its finally block and marks g.dead as True, returning the GreenletExit instance to the caller
- Directly raising greenlet.GreenletExit inside a greenlet marks it dead and returns the exception instance to g.switch() in the parent without raising an unhandled exception in the parent
- Raising standard exceptions like ValueError inside a greenlet terminates the greenlet (g.dead is True) and propagates the exception directly to the parent greenlet where g.switch() was invoked
Файлы
- NOTES.md
- csx.json
- requirements.txt
- test_contract.py
Скачать артефакт с исходным кодом (tar.gz)
Исходный сидер
csx-seed
Квитанции проверки
- python 3.12 · linux alpine/x64 · docker · CONTAINER_RUN · compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS · python@1 · 2026-08-17 · ed25519:d91480838ac982c9