Make Executor a base class so new attributes don't break out-of-tree executors
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 45/100
Direzione di ricerca
Start in climate_ref_core/executor.py, where Executor is a runtime_checkable Protocol, then check the isinstance gate in ExecutorConfig.build at climate_ref/config.py:397. Convert Executor to an ABC with abstract run and join, and give collects_results_on_join, runs_on_solve_host and log_submission_summary defaults. Make LocalExecutor, SynchronousExecutor, HPCExecutor and CeleryExecutor subclass it, and replace the solver's getattr probes with attribute access. Done when the in-tree executors pass the isinstance check and the test suite is green.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Executor (climate_ref_core/executor.py) is a @runtime_checkable Protocol, and ExecutorConfig.build rejects any executor that fails isinstance(executor, Executor) (climate_ref/config.py:397). A runtime protocol check requires every member, including data attributes, so adding a member to the protocol breaks every out-of-tree executor. collects_results_on_join did this in e4ada47bc without a changelog entry.
Optional behaviour is also probed with getattr in the solver (collects_results_on_join, log_submission_summary, and runs_on_solve_host from #955), so these attributes are invisible to type checkers and docs. The in-tree executors are inconsistent: CeleryExecutor subclasses Executor, while LocalExecutor, SynchronousExecutor and HPCExecutor do not.
Suggested fix:
- Turn
Executorinto an abstract base class withrunandjoinas abstract methods. - Give the optional flags and hooks defaults on the base class (
collects_results_on_join = False,runs_on_solve_host = False, a no-oplog_submission_summary). - Make all four in-tree executors subclass it and replace the solver's
getattrprobes with attribute access. - Keep the
isinstancecheck inExecutorConfig.build.
This is a one-off breaking change as out-of-tree executors must subclass Executor, although I doubt that this will impact anyone. After that, new flags with defaults break nobody.
- Lingua principale
- Python
- Stelle
- 27
- Fork
- 14
- Merge medio
- 1g 4h
- PR unite (30g)
- 68
Preparare l'ambiente
- Include un Dockerfile o un 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 Climate-REF/climate-ref
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
Climate-REF/climate-ref#701 · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
Climate-REF/climate-ref#442 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
Climate-REF/climate-ref#996 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Climate-REF/climate-ref#991 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 58/100
Climate-REF/climate-ref#970 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di Climate-REF/climate-ref
Issue simili
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 85/100
521xueweihan/HelloGitHub#4115 ·
-
get_lldp_neighbors_detail: query asks for 'max-address' (typo for 'mac-address'), so remote_chassis_id is always emptyForse già presa @Jah-yee l’ha presa oggi. Aperta
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 88/100
-
lesson-submission pending-review
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 74/100
Ikalus1988/MisakaNet#3899 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
aws-samples/sample-per-model-bedrock#549 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100