Plugin mechanism¶
CliMetLab plugins rely on the python plugins system using entry_points
.
-
climetlab.core.plugins.
directories
(owner: bool = False) → list¶ Return a list of directories that are used in the project .
If owner = False, return a list of directories where to search for plugins.
If owner = True, return a list of 2-uples to include the owner in the return value.
Parameters: owner (bool, optional) –
-
climetlab.core.plugins.
find_plugin
(directories: Union[str, List[str]], name: str, loader)¶ Find a plugin by name .
Parameters: - directories (list or str) – List of directories to be searched to find the plugin.
- name (str) – Name of the plugin
- loader (class) – Class implementing load_yaml() and load_module()
Returns: Return type: Return what the loader will returns when applied to the plugin with the right name name, found in one of the directories of the directories list.
Raises: NameError
– If plugin is not found.
-
climetlab.core.plugins.
load_plugins
(kind)¶ Loads the plugins for a given kind. The plugin needs to have registered itself with entry_point.
Parameters: kind (str) – Plugin type such as “dataset” or “source”.
-
climetlab.core.plugins.
register
(kind, name_or_module, module_or_none=None)¶ Register a plugin manually.
When installing a plugin (for instance with !pip install in a notebook), the pip package with register the plugin with the entry_points mechanism, but the currently runnning kernel will need to be restarted to take the change into account. Using
register()
alleviates this issue.Parameters: - kind (str) – Type of plugind.
- name_or_module (str or module) – Name of the installed plugin to registed.
- module_or_none (module, optional) – Module recently installed to be registered.