Source code for AutoArchive._mainf.icomponent
# icomponent.py
#
# Project: AutoArchive
# License: GNU GPLv3
#
# Copyright (C) 2003 - 2011 Róbert Čerňanský
""":class:`IComponent` interface."""
__all__ = ["IComponent"]
# {{{ INCLUDES
from abc import *
# }}} INCLUDES
# {{{ CLASSES
[docs]class IComponent(metaclass = ABCMeta):
"""Interface for components of :term:`Mainf` framework.
Each :term:`component` of :term:`Mainf` framework has to implement this interface. Components are managed by
:class:`.MainfEngine` and can expose their interfaces via :class:`.IInterfaceAccessor`.
During construction the :term:`component` can get and access other's components interfaces via
``interfaceAccessor``. Using the same object it can register its own public interfaces as well.
See also the description of _mainf package (:mod:`._mainf`).
:param interfaceAccessor: Can be used to get/register public interfaces.
:type interfaceAccessor: :class:`.IInterfaceAccessor`"""
@abstractmethod
def __init__(self, interfaceAccessor):
pass
@abstractmethod
[docs] def run(self):
"""Runs the :term:`component`.
Executes the work that the component is meant to do.
:return: ``True``, if execution was successful.
:rtype: ``bool``"""
# }}} CLASSES