[Feature]: Typed registry over entry points (backends / transports / schedulers)

Aperta
#18 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

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

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 own pyproject.toml).
  • Lazy, typed lookup: import only the requested target; isinstance gate against the relevant
    @runtime_checkable protocol at the boundary, failing fast with a clear error.
  • Data-driven resolution: registry.backend({"type": "arc", ...}) for monolithic;
    registry.backend({"transport": "ssh", "scheduler": "slurm", ...}) composes BatchBackend
    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 install fixture) proving
    discovery + override precedence
  • FakeBackend registered 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di DIRACGrid/intercede

Tutte le issue di DIRACGrid/intercede

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.