Source code for ebu_tt_live.node.interface

from abc import abstractmethod, abstractproperty
from ebu_tt_live.utils import AutoRegisteringABCMeta, AbstractStaticMember, validate_types_only

# Interfaces
# ==========


[docs]class INode(object): """ This is the foundation of all nodes that take part in the processing of subtitle documents. The Node should deal with subtitles in a high level interface, which is an instance of :class:`<ebu_tt_live.documents.SubtitleDocument>`. That is the interface which should be used to communicate with the carriage mechanism. See :class:`<ebu_tt_live.carriage.ICarriageMechanism>` """ __metaclass__ = AutoRegisteringABCMeta
[docs] @abstractmethod def process_document(self, document, **kwargs): """ The central hook that is meant to implement the main functionality of the node. A node must implement this method. :param kwargs: Extra parameters :param document: Can be XML, Document object...etc. depending on the carriage implementation """ raise NotImplementedError()
[docs]class IProducerNode(INode): _provides = AbstractStaticMember(validate_types_only)
[docs] @abstractmethod def resume_producing(self): """ This allows the node to be triggered by events, such as a timer. """
[docs] @classmethod def provides(cls): """ Data type provided :return: """ if isinstance(cls._provides, AbstractStaticMember): raise TypeError('Classmethod relies on abstract property: \'_provides\'') return cls._provides
@abstractproperty def producer_carriage(self): """ Carriage mechanism accessor :return: """
[docs] @abstractmethod def register_producer_carriage(self, producer_carriage): """ Output carriage mechanism registration :param producer_carriage: """
[docs]class IConsumerNode(INode): _expects = AbstractStaticMember(validate_types_only)
[docs] @classmethod def expects(cls): """ Data type expected :return: """ if isinstance(cls._expects, AbstractStaticMember): raise TypeError('Classmethod relies on abstract property: \'_expects\'') return cls._expects
@abstractproperty def consumer_carriage(self): """ Carriage mechanism accessor :return: """
[docs] @abstractmethod def register_consumer_carriage(self, consumer_carriage): """ Input carriage mechanism registration :param consumer_carriage: """