Tighten execution_context typing from Any to proper forward reference
I maintainer di solito rispondono entro 3 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Idoneità per principianti
- 78/100
Direzione di ricerca
Leggi il pattern esistente di riferimento anticipato di ExecutionContext in packages/darnit/src/darnit/sieve/models.py, quindi aggiorna HandlerContext.execution_context in packages/darnit/src/darnit/sieve/handler_registry.py. Esegui i test esistenti e verifica con mypy o pyright. Il lavoro è completato quando l’attributo è tipizzato come ExecutionContext | None, .get_or_run_tool() viene inferito e non viene introdotta alcuna importazione circolare a runtime.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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)
- Lingua principale
- Python
- Stelle
- 22
- Fork
- 27
- Merge medio
- 4g 20h
- PR unite (30g)
- 75
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di darnitdevorg/darnit
-
ci needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
darnitdevorg/darnit#607 ·
I maintainer di solito rispondono entro 3 giorni
-
good first issue maintenance
Difficoltà 2/5 1-3 ore Idoneità per principianti 83/100
darnitdevorg/darnit#587 · 2 commenti ·
I maintainer di solito rispondono entro 3 giorni
-
Container image has no zizmor, so OSPS-AC-04.02 always reports missing_toolForse già presa @mlieberman85 l’ha presa 20 giorni fa. Apertainfrastructure module-baseline
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
darnitdevorg/darnit#585 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
module-baseline
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
darnitdevorg/darnit#344 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
documentation module-core
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
darnitdevorg/darnit#196 ·
I maintainer di solito rispondono entro 3 giorni
Tutte le issue di darnitdevorg/darnit
Issue simili
-
docs size:S
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
strawberry-graphql/strawberry#4794 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
dataforgoodfr/cetolog#21 ·
-
security_citations_test fails against ecc 2026.11.6: SECURITY.md quotes ecc v2026.11.2's linesAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
btclib-org/btclib#2932 ·
I maintainer di solito rispondono entro 1 giorno