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)