The plugin mechanism

This document discusses how plugins are integrated into earthkit-data.

Plugin as python packages using entry_points

A plugin can be added to earthkit-data by using the standard Python plugin mechanism based on entry_points.

This requires the plugin package to have a special section in its pyproject.toml file. During the installation of the package, the plugin registers itself thanks to the entry points in it configuration, making earthkit-data aware of the new capabilities. Users can then take advantage of the shared code through the enhanced from_source() etc. methods.

The following example shows how it can be done.

Example:

Let us suppose our package is called earthkit-data-package-name and implements a "sources" (note the plural form) plugin type . If it is a pip package using setuptools we need to add an entry_points block to pyproject.toml:

entry-points."earthkit.data.sources".foo = "earthkit_data_package_name:FooClass"
entry-points."earthkit.data.sources".bar = "earthkit_data_package_name:BarClass"

This block specifies that in the package the FooClass class implements the "foo" source, while the BarClass class implements the "bar" source. In earthkit-data we will be able to use them as:

from earthkit.data import from_source

ds1 = from_source("foo", args1)
ds2 = from_source("bar", args2)

See the individual documentation for each plugin type for detailed examples and the standard Python plugin documentation.