Skip to content

Third-Party Plugins

gathering includes an extensible entry-point architecture. Third-party packages can register custom gatherers without modifying the core codebase.

Declaring an Entry-Point

In your external package's pyproject.toml, declare your gatherer under the gathering.gatherers entry-point group:

# In your custom package's pyproject.toml
[project]
name = "gathering-custom-provider"
version = "0.1.0"
dependencies = [
    "gathering>=0.4.0",
]

[project.entry-points."gathering.gatherers"]
my_station = "gathering_custom_provider.sources:MyStationGatherer"

How Auto-Discovery Works

When gathering initializes: 1. It registers built-in gatherers in gathering/sources/. 2. It scans the Python environment using importlib.metadata.entry_points(group="gathering.gatherers"). 3. Any registered plugin class is loaded and added to the central registry.

Once installed in the environment (pip install gathering-custom-provider), your source is immediately accessible across: - gathering list - gathering my_station ... - Task.my_station(...) - YAML workflow configurations (source: my_station)