Source code for AutoArchive._mainf.iinterface_accessor
# iinterface_accessor.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2011 Róbert Čerňanský
""":class:`IInterfaceAccessor and :class:`IComponentInterface` interfaces."""
__all__ = ["IInterfaceAccessor", "IComponentInterface"]
# {{{ INCLUDES
from abc import *
# }}} INCLUDES
# {{{ CLASSES
[docs]class IInterfaceAccessor(metaclass = ABCMeta):
"""Provides access to components public interfaces.
A :term:`component` can make available its provided interfaces to other components by registering them via this
interface. Registered classes has to implement :class:`.IComponentInterface`.
See also the description of _mainf package (:mod:`._mainf`)."""
@abstractmethod
[docs] def getComponentInterface(self, interfaceType):
"""Provides access to registered :term:`component` interfaces.
See also: :meth:`registerComponentInterface`.
:param interfaceType: Type of the desired interface.
:type interfaceType: ``type{``:class:`.IComponentInterface`\ ``}``
:return: Instance of ``interfaceType``.
:rtype: ``interfaceType``
:raise TypeError: If ``interfaceType`` does not implement :class:`.IComponentInterface`.
:raise KeyError: If ``interfaceType`` is not registered."""
@abstractmethod
[docs] def registerComponentInterface(self, interfaceType, instance):
"""Registers a component public interface.
Makes an interface available to other components by registering it.
See also: :meth:`unregisterComponentInterface`,
:meth:`getComponentInterface`.
:param interfaceType: Type of registering instance.
:type interfaceType: ``type{``:class:`.IComponentInterface`\ ``}``
:param instance: An instance of a class implementing the ``interfaceType``.
:type instance: :class:``.IComponentInterface``
:raise TypeError: If ``interfaceType`` or ``instance`` does not implement :class:`.IComponentInterface`.
:raise KeyError: If ``interfaceType`` is already registered."""
@abstractmethod
[docs] def unregisterComponentInterface(self, interfaceType):
"""Unregister a component interface.
See also: :meth:`registerComponentInterface`,
:meth:`getComponentInterface`
:param interfaceType: Type of the instance that should be unregistered.
:type interfaceType: ``type{``:class:`.IComponentInterface`\ ``}``
:raise TypeError: If ``interfaceType`` does not implement :class:`.IComponentInterface`.
:raise KeyError: If ``interfaceType`` is not registered."""
[docs]class IComponentInterface(metaclass = ABCMeta):
"""Tagging interface for components provided interfaces.
See also: :class:`IInterfaceAccessor`."""
@abstractmethod
def __init__(self):
pass
# }}} CLASSES