class_docstr: A Cell serves a Direct Acyclic Graph (DAG) which holds blocks as nodes and edges that
  connects operation paths between the nodes.
class_docstr_tok: ["A","Cell","serves","a","Direct","Acyclic","Graph","(","DAG",")","which","holds","blocks","as","nodes","and","edges","that","connects","operation","paths","between","the","nodes","."]
docstr: Performs a forward pass over the cell.
  
  Returns:
      (Generator): Output for each possible path in DAG.
docstr_tok: ["Performs","a","forward","pass","over","the","cell",".","Returns",":","(","Generator",")",":","Output","for","each","possible","path","in","DAG","."]
code: def __call__(self, *args) -> Generator:
      """Performs a forward pass over the cell.
  
      Returns:
          (Generator): Output for each possible path in DAG.
  
      """
  
      if not self.valid:
          return []
  
      paths = list(
          nx.all_simple_paths(self, self.input_idx, self.output_idx)
      )
      outputs = []
  
      for path in paths:
          current_args = copy.deepcopy(args)
  
          for node in path:
              current_args = self.nodes[node]["block"](*current_args)
  
              if type(current_args) != tuple:
                  current_args = (current_args,)
  
          outputs.append(current_args)
  
      return outputs
  
file_path: opytimizer/opytimizer/core/cell.py
imports: import copy
  from typing import Generator, Tuple
  import networkx
  from networkx import DiGraph
  from opytimizer.core import InnerBlock, InputBlock, OutputBlock
  from opytimizer.core.block import Block
label_desc: Use image node_id 2 for calling the Cell obj's underlying member method code with example usage: obj.__call__() and returns: outputs, list