Tighten execution_context typing from Any to proper forward reference
メンテナーはふだん 3 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
調査の方向性
packages/darnit/src/darnit/sieve/models.py にある ExecutionContext の既存の前方参照パターンを読み、その後 packages/darnit/src/darnit/sieve/handler_registry.py の HandlerContext.execution_context を更新してください。既存のテストを実行し、mypy または pyright で確認してください。属性が ExecutionContext | None として型付けされ、.get_or_run_tool() が推論され、実行時の循環インポートが導入されないことを完了条件とします。
索引モデルが issue の本文から書いたものです。
説明
Context
#189 added execution_context fields to two dataclasses with loose typing:
packages/darnit/src/darnit/sieve/handler_registry.py:104:
execution_context: Any | None = None
packages/darnit/src/darnit/sieve/models.py:55:
execution_context: Optional["ExecutionContext"] = None # already uses forward ref
The CheckContext side uses a proper "ExecutionContext" forward reference (wrapped in TYPE_CHECKING), but HandlerContext uses Any | None. This means custom handler authors lose type-check assistance when calling handler_ctx.execution_context.get_or_run_tool(...).
Proposal
Change HandlerContext.execution_context to use a proper forward reference matching CheckContext:
if TYPE_CHECKING:
from darnit.core.models import ExecutionContext
@dataclass
class HandlerContext:
...
execution_context: "ExecutionContext | None" = None
Why the loose typing was chosen
Likely to avoid a circular import between sieve/handler_registry.py and core/models.py. TYPE_CHECKING + string annotation is the standard workaround and is already used in sieve/models.py.
Acceptance criteria
HandlerContext.execution_contexttype is tightened toExecutionContext | None- No runtime circular import introduced
mypy/pyrightcan infer.get_or_run_tool()on the attribute- Existing tests still pass
References
- Introduced by: #189
- Related: #194 (wiring first real consumer)
- 主要言語
- Python
- スター
- 22
- フォーク
- 27
- 平均マージ
- 4日 20時間
- マージ済み PR(30日)
- 75
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
darnitdevorg/darnit のほかの issue
-
ci needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
darnitdevorg/darnit#607 ·
メンテナーはふだん 3 日以内に返信
-
good first issue maintenance
難易度 2/5 1〜3時間 初心者へのやさしさ 83/100
darnitdevorg/darnit#587 · コメント 2 件 ·
メンテナーはふだん 3 日以内に返信
-
Container image has no zizmor, so OSPS-AC-04.02 always reports missing_tool対応中かも @mlieberman85 が 20 日前に担当しました。 オープンinfrastructure module-baseline
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
darnitdevorg/darnit#585 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
module-baseline
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
darnitdevorg/darnit#344 · コメント 1 件 ·
メンテナーはふだん 3 日以内に返信
-
documentation module-core
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
darnitdevorg/darnit#196 ·
メンテナーはふだん 3 日以内に返信
darnitdevorg/darnit の issue をすべて見る
似ている issue
-
docs size:S
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
メンテナーはふだん 1 日以内に返信
-
documentation
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
strawberry-graphql/strawberry#4794 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
dataforgoodfr/cetolog#21 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
btclib-org/btclib#2932 ·
メンテナーはふだん 1 日以内に返信