[Feature]: Typed registry over entry points (backends / transports / schedulers)
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 48/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- python
- Domain
- api, backend, developer-experience
Research direction
Start with IC-ADR-001 §5 and the project's pyproject.toml to understand the three entry-point groups and how built-ins are registered. Review the managed-lifetime decision in issue #7, then use the FakeBackend and conformance suite as the registry-path target; done includes documented discovery and override behavior, lazy typed validation, and a dummy third-party plugin fixture.
Written by the indexing model from the issue text.
Description
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
- Dominant language
- Python
- Stars
- 3
- Forks
- 4
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from DIRACGrid/intercede
-
Difficulty 5/5 Over a week Newbie friendliness 38/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 28/100
-
Difficulty 4/5 3-5 days Newbie friendliness 45/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in DIRACGrid/intercede
Similar issues
-
bug frontend
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
PedestrianDynamics/pyFDS-Evac#552 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
resend/resend-skills#144 ·
Maintainers usually reply within 1 day
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
Bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
GNS3/gns3-server#2935 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
TauricResearch/TradingAgents#1476 ·
Maintainers usually reply within 2 days