# VersionedPluginManager

## Role

Defines the basic interface for a plugin manager that also keeps track of versions of plugins

## API

class yapsy.VersionedPluginManager.VersionedPluginInfo(plugin_name, plugin_path)

  Gather some info about a plugin such as its name, author, description…

  setVersion(vstring)

    Set the version of the plugin.

    Used by subclasses to provide different handling of the version number.

class yapsy.VersionedPluginManager.VersionedPluginManager(decorated_manager=None, categories_filter={'Default': <class 'yapsy.IPlugin.IPlugin'>}, directories_list=None, plugin_info_ext='yapsy-plugin')

  Handle plugin versioning by making sure that when several versions are present for a same plugin, only the latest version is manipulated via the standard methods (eg for activation and deactivation)

  More precisely, for operations that must be applied on a single named plugin at a time (`getPluginByName`, `activatePluginByName`, `deactivatePluginByName` etc) the targetted plugin will always be the one with the latest version.

  Note

  The older versions of a given plugin are still reachable via the `getPluginsOfCategoryFromAttic` method.

  getLatestPluginsOfCategory(category_name)

    DEPRECATED(>1.8): Please consider using getPluginsOfCategory instead.

    Return the list of all plugins belonging to a category.

  getPluginsOfCategoryFromAttic(categ)

    Access the older version of plugins for which only the latest version is available through standard methods.

  loadPlugins(callback=None, callback_after=None)

    Load the candidate plugins that have been identified through a previous call to locatePlugins.

    In addition to the baseclass functionality, this subclass also needs to find the latest version of each plugin.

  setCategoriesFilter(categories_filter)

    Set the categories of plugins to be looked for as well as the way to recognise them.

    Note: will also reset the attic toa void inconsistencies.