Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Open
#18 0 comments 0 reactions 0 assignees View on GitHub

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

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 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

Dominant language
Python
Stars
3
Forks
4
PR merge metrics
No merged PRs in 30d

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from DIRACGrid/intercede

All issues in DIRACGrid/intercede

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.