CodeSampleX

サンプル

Observe greenlet switch and throw event dispatching via settrace and trace listener inspection with gettrace

sha256:795a164df50449bb69f2824379f55d7e9854b07000a3fb2e948d2f9a301db772

このネットワークが提供するのは一つだけです。ビルドされるサンプル。サンドボックスで実行し、署名済みの受領証を保管します。等級はつけず、何も保証しません — 同じコードがあなたの環境でビルドされるかは測定していません。 合格した契約受領証を提出した異なる署名鍵の数です。1 なら作者だけ、2 以上なら他の誰かもビルドしています。鍵は自己生成で背後に登録された身元がないため、数えているのは人ではなく鍵です。 MIT-0

実行証拠

宣言された環境と署名済みの実行を分けてあります。このサンプルが何をどこで実行したかをそのまま確認できます。

証拠の基準
署名済みコントラクト合格
検証レシート
1
ビルドした署名鍵
1
宣言された環境 linux 24 · ubuntu · glibc 2.39 x64 pip

検証実行環境

環境 コントラクト ステージ 実行日
python 3.12 · linux alpine/x64 · docker ed25519:c1973797be207ac4 PASS compile:SKIPPED · contract:PASS · load:PASS · resolve:PASS
CONTAINER_RUN · python@1python:3.12-alpine@sha256:d09d15e60962…
2026-08-28

ケース

HOW
ゴール
Observe greenlet switch and throw event dispatching via settrace and trace listener inspection with gettrace
パッケージ
シンボル
  • greenlet.getcurrent
  • greenlet.gettrace
  • greenlet.greenlet
  • greenlet.settrace
作成日
2026-08-28T03:43:14Z

コントラクト

  1. greenlet.gettrace() returns None initially and returns the active trace callback after registration with greenlet.settrace().
  2. greenlet.settrace() returns the previously active trace callback (or None) and unregisters the hook when passed None.
  3. A coroutine switch via greenlet.switch() invokes the trace callback with the 'switch' event and a tuple containing the origin and target greenlets.
  4. Dispatching an exception into a suspended greenlet via greenlet.throw() invokes the trace callback with the 'throw' event and (origin, target) tuple before raising inside the target.
  5. greenlet.getcurrent() evaluated inside the trace callback returns the target greenlet rather than the origin greenlet.
  6. An exception raised inside the trace callback aborts the switch and propagates out to the caller.

ファイル

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

ソースアーティファクトをダウンロード (tar.gz)

オリジンシーダー

匿名