[Feature]: Typed registry over entry points (backends / transports / schedulers)
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 48/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- api, backend, developer-experience
Direzione di ricerca
Inizia da IC-ADR-001 §5 e dal pyproject.toml del progetto per comprendere i tre gruppi di entry point e come vengono registrati i componenti integrati. Esamina la decisione sulla durata di vita gestita nell’issue #7, quindi usa FakeBackend e la suite di conformità come obiettivo per il percorso del registro; il lavoro è completo quando sono documentati il comportamento di discovery e override, la validazione tipizzata lazy e un fixture fittizio per un plugin di terze parti.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
User Story
As a VO developer,
I want to register my own backend, transport or scheduler by shipping a package with an entry
point,
So that I extend interCEde without forking it — unlike DIRAC's ObjectLoader string-to-module
loading.
Feature Description
IC-ADR-001 §5:
- Three entry-point groups:
intercede.backends,intercede.transports,intercede.schedulers;
built-ins registered the same way (interCEde's ownpyproject.toml). - Lazy, typed lookup: import only the requested target;
isinstancegate against the relevant
@runtime_checkableprotocol at the boundary, failing fast with a clear error. - Data-driven resolution:
registry.backend({"type": "arc", ...})for monolithic;
registry.backend({"transport": "ssh", "scheduler": "slurm", ...})composesBatchBackend—
combinations never need their own registered class (N+M, not N×M). - Enumeration for tooling ("what backends does this environment offer?") and a documented
name-collision/override precedence rule (site shadows a built-in without patching). - Registry returns backends inside the managed-lifetime surface decided in #
(async context manager).
Definition of Done
- Registry API implemented; entry-point groups documented
- Misregistered class fails at resolution with a clear error, not at first call
- Test with a dummy third-party plugin package (tmp venv/
pip installfixture) proving
discovery + override precedence -
FakeBackendregistered and resolvable — the conformance suite runs via
the registry path
Alternatives Considered
ObjectLoader/naming-convention loading (DIRAC) — untyped, undiscoverable, unversioned; rejected
by the ADR.- Eager import of all entry points — slow startup, import errors in unrelated backends break
everything; lazy is required.
Related Issues
- Lingua principale
- Python
- Stelle
- 3
- Fork
- 3
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Guida per i contributori
Apri 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 DIRACGrid/intercede
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 38/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
Tutte le issue di DIRACGrid/intercede
Issue simili
-
documentation help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
simonw/sqlite-utils#872 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100