Source code for openalea.vpltk.catalog.interfaces
# -*- python -*-
#
#       Plugin System for vpltk
# 
#       OpenAlea.VPLTk: Virtual Plants Lab Toolkit
#
#       Copyright 2013 INRIA - CIRAD - INRA
#
#       File author(s): Guillaume Baty <guillaume.baty@inria.fr>
#
#       File contributor(s):
#
#       Distributed under the Cecill-C License.
#       See accompanying file LICENSE.txt or copy at
#           http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html
#
#       OpenAlea WebSite : http://openalea.gforge.inria.fr
#
###############################################################################
from openalea.vpltk.catalog.interface import IInterface
[docs]class IRegister(IInterface):
    """
    dictionary of adapters
    """
 
[docs]class ICatalog(IInterface):
    """
    ICatalog is a meta plugin manager.
    It is used to discover all plugins and especially interfaces.
    Properties :
        * plugin_types = ('wralea', 'plugin', 'adapters', 'interfaces')
        * groups : list all entry_point groups found on this system
        * managers : list of PluginManager currently used. 
          At launch, only plugin manager (generic place) and interface manager
          are defined.
    """
[docs]    def interface(self, name):
        """
        Returns interface class associated to name
        """
 
[docs]    def interface_id(self, interface):
        """
        Returns name of "interface" class
        """
 
[docs]    def interfaces(self, obj=None):
        """
        Returns list of all interface names.
        If obj is defined, returns list of names of interfaces implemented by this object.
        """
 
[docs]    def is_implementation(self, obj, interface):
        """
        Returns True if obj implements interface.
        :param interface: Interface class or name
        """
 
[docs]    def factories(self, interfaces=None, name=None, tags=None, exclude_tags=None):
        """
        Returns all factories matching given criteria.
        exclude_tags: if tags is not specified, scan all tags except one defined in exclude_tags
        """
 
[docs]    def factory(self, interfaces=None, name=None, tags=None, exclude_tags=None):
        """
        Returns first factory matching given criteria.
        """
 
[docs]    def create_service(self, object_factory, *args, **kargs):
        """
        Create a service from object_factory. If object_factory is None, returns None.
        If this factory is called for the first time, instantiate it with args and kargs.
        Else, use previous instance.
        """
 
[docs]    def service(self, interfaces=None, name=None, tags=None, exclude_tags=None, args=None, kargs=None):
        """
        Returns first service matching given criteria.
        """
 
[docs]    def services(self, interfaces=None, name=None, tags=None, exclude_tags=None, args=None, kargs=None):
        """
        Returns all services matching given criteria.
        """