datalad.api.plugin(plugin=None, dataset=None, showpluginhelp=False, showplugininfo=False, **kwargs)

Generic plugin interface

Using this command, arbitrary DataLad plugins can be executed. Plugins in three different locations are available

  1. official plugins that are part of the local DataLad installation

  2. system-wide plugins, location configuration:

  3. user-supplied plugins, location configuration:


Identically named plugins in latter location replace those in locations searched before.

Using plugins

A list of all available plugins can be obtained by running this command without arguments:

datalad plugin

To run a specific plugin, provide the plugin name as an argument:

datalad plugin export_tarball

A plugin may come with its own documentation which can be displayed upon request:

datalad plugin export_tarball -H

If a plugin supports (optional) arguments, they can be passed to the plugin as key=value pairs with the name and the respective value of an argument, e.g.:

datalad plugin export_tarball output=myfile

Any number of arguments can be given. Only arguments with names supported by the respective plugin are passed to the plugin. If unsupported arguments are given, a warning is issued.

When an argument is given multiple times, all values are passed as a list to the respective argument (order of value matches the order in the plugin call):

datalad plugin fancy_plugin input=this input=that

Like in most commands, a dedicated –dataset option is supported that can be used to identify a specific dataset to be passed to a plugin’s dataset argument. If a plugin requires such an argument, and no dataset was given, and none was found in the current working directory, the plugin call will fail. A dataset argument can also be passed alongside all other plugin arguments without using –dataset.

  • plugin – plugin name plus an optional list of key=value pairs with arguments for the plugin call. [Default: None]
  • dataset (Dataset or None, optional) – specify the dataset for the plugin to operate on If no dataset is given, but a plugin take a dataset as an argument, an attempt is made to identify the dataset based on the current working directory. [Default: None]
  • showpluginhelp (bool, optional) – show help for a particular. [Default: False]
  • showplugininfo (bool, optional) – show additional information in plugin overview (e.g. plugin file location. [Default: False]
  • on_failure ({'ignore', 'continue', 'stop'}, optional) – behavior to perform on failure: ‘ignore’ any failure is reported, but does not cause an exception; ‘continue’ if any failure occurs an exception will be raised at the end, but processing other actions will continue for as long as possible; ‘stop’: processing will stop on first failure and an exception is raised. A failure is any result with status ‘impossible’ or ‘error’. Raised exception is an IncompleteResultsError that carries the result dictionaries of the failures in its failed attribute. [Default: ‘continue’]
  • result_filter (callable or None, optional) – if given, each to-be-returned status dictionary is passed to this callable, and is only returned if the callable’s return value does not evaluate to False or a ValueError exception is raised. If the given callable supports **kwargs it will additionally be passed the keyword arguments of the original API call. [Default: None]
  • result_renderer ({'default', 'json', 'json_pp', 'tailored'} or None, optional) – format of return value rendering on stdout. [Default: None]
  • result_xfm ({'paths', 'relpaths', 'datasets', 'successdatasets-or-none'} or callable or None, optional) – if given, each to-be-returned result status dictionary is passed to this callable, and its return value becomes the result instead. This is different from result_filter, as it can perform arbitrary transformation of the result value. This is mostly useful for top- level command invocations that need to provide the results in a particular format. Instead of a callable, a label for a pre-crafted result transformation can be given. [Default: None]
  • return_type ({'generator', 'list', 'item-or-list'}, optional) – return value behavior switch. If ‘item-or-list’ a single value is returned instead of a one-item return value list, or a list in case of multiple return values. None is return in case of an empty list. [Default: ‘list’]
  • run_after – Like run_before, but plugins are executed after the main command has finished. [Default: None]
  • run_before – DataLad plugin to run before the command. PLUGINSPEC is a list comprised of a plugin name plus optional 2-tuples of key-value pairs with arguments for the plugin call (see plugin command documentation for details). PLUGINSPECs must be wrapped in list where each item configures one plugin call. Plugins are called in the order defined by this list. For running plugins that require a dataset argument it is important to provide the respective dataset as the dataset argument of the main command, if it is not in the list of plugin arguments. [Default: None]