コード例 #1
0
ファイル: base.py プロジェクト: uwsbel/ChronoRender
def get_node_info(cls):
    """Get node info attribute of a node - transient function during
    depreciation"""

    if hasattr(cls, "__node_info__") and cls not in _node_info_warnings:

        get_logger().warn(
            "depreciated __node_info__ present in %s, rename to node_info"
            " (this warning will be shown only once)" % str(cls)
        )
        _node_info_warnings.add(cls)

        return cls.__node_info__
    else:
        return cls.node_info
コード例 #2
0
ファイル: graph.py プロジェクト: uwsbel/ChronoRender
    def __init__(self, nodes=None, connections=None):
        """Creates a node graph with connections.

        :Parameters:
            * `nodes` - dictionary with keys as node names and values as nodes
            * `connections` - list of two-item tuples. Each tuple contains source and target node
              or source and target node name.
        """

        super(Graph, self).__init__()
        self.nodes = OrderedDict()
        self.connections = set()

        self.logger = get_logger()

        self._name_sequence = 1

        if nodes:
            try:
                for name, node in nodes.items():
                    self.add(node, name)
            except:
                raise ValueError("Nodes should be a dictionary, is %s" % type(nodes))

        if connections:
            for connection in connections:
                self.connect(connection[0], connection[1])
コード例 #3
0
ファイル: base.py プロジェクト: uwsbel/ChronoRender
    def identifier(cls):
        """Returns an identifier name of the node class. Identifier is used
        for construction of streams from dictionaries or for any other
        out-of-program constructions.

        Node identifier is specified in the `node_info` dictioanry as
        ``name``. If no explicit identifier is specified, then decamelized
        class name will be used with `node` suffix removed. For example:
        ``CSVSourceNode`` will be ``csv_source``.
        """

        logger = get_logger()

        # FIXME: this is temporary warning
        info = get_node_info(cls)
        ident = None

        if info:
            ident = info.get("name")

        if not ident:
            ident = to_identifier(decamelize(cls.__name__))
            if ident.endswith("_node"):
                ident = ident[:-5]

        return ident
コード例 #4
0
ファイル: streams.py プロジェクト: uwsbel/ChronoRender
    def __init__(self, nodes=None, connections=None):
        """Creates a data stream.

        :Parameters:
            * `nodes` - dictionary with keys as node names and values as nodes
            * `connections` - list of two-item tuples. Each tuple contains source and target node
              or source and target node name.
            * `stream` - another stream or
        """
        super(Stream, self).__init__(nodes, connections)
        self.logger = get_logger()

        self.exceptions = []
コード例 #5
0
ファイル: streams.py プロジェクト: uwsbel/ChronoRender
    def __init__(self, node):
        """Creates a stream node thread.

        :Attributes:
            * `node`: a Node object
            * `exception`: attribute will contain exception if one occurs during run()
            * `traceback`: will contain traceback if exception occurs

        """
        super(_StreamNodeThread, self).__init__()
        self.node = node
        self.exception = None
        self.traceback = None
        self.logger = get_logger()