class_docstr: A `DAGRepr` represents a complete DAG.
  
  Args:
      nodes (`Dict[str, NodeRepr]`): All nodes in the dag, which start with _input and end with _output node.
      edges (`Dict[int, List]`): The edges about data queue schema, such as:
                          { 0: {'data': [(a, ColumnType.SCALAR), (b, ColumnType.SCALAR)], 'schema': {'a', SchemaRepr, 'b', SchemaRepr}}
                            1: {'data': [(b, ColumnType.SCALAR), (c, ColumnType.SCALAR)], 'schema': {'b', SchemaRepr, 'c', SchemaRepr}}
                            2: {'data': [(a, ColumnType.SCALAR), (c, ColumnType.SCALAR)], 'schema': {'a', SchemaRepr, 'c', SchemaRepr}}
                          }
      dag_dict(`Dict`): The dag dict.
class_docstr_tok: ["A","`","DAGRepr","`","represents","a","complete","DAG",".","Args",":","nodes","(","`","Dict","[","str",",","NodeRepr","]","`",")",":","All","nodes","in","the","dag",",","which","start","with","_input","and","end","with","_output","node",".","edges","(","`","Dict","[","int",",","List","]","`",")",":","The","edges","about","data","queue","schema",",","such","as",":","{","0",":","{","'data","'",":","[","(","a",",","ColumnType.SCALAR",")",",","(","b",",","ColumnType.SCALAR",")","]",",","'schema","'",":","{","'","a","'",",","SchemaRepr",",","'","b","'",",","SchemaRepr","}","}","1",":","{","'data","'",":","[","(","b",",","ColumnType.SCALAR",")",",","(","c",",","ColumnType.SCALAR",")","]",",","'schema","'",":","{","'","b","'",",","SchemaRepr",",","'","c","'",",","SchemaRepr","}","}","2",":","{","'data","'",":","[","(","a",",","ColumnType.SCALAR",")",",","(","c",",","ColumnType.SCALAR",")","]",",","'schema","'",":","{","'","a","'",",","SchemaRepr",",","'","c","'",",","SchemaRepr","}","}","}","dag_dict","(","`","Dict","`",")",":","The","dag","dict","."]
docstr: Return the edge form the schema info for the node.
  
  Args:
      schema (`Tuple): The out edge schema of this node.
      inputs (`Tuple`): The inputs of this node.
      outputs (`Tuple`): The outputs of this node.
      iter_type (`str`): The iteration type of this node.
      ahead_edges (`list`): A list of the ahead edges.
  
  Returns:
     Dict[str, Dict]: A edge include data and schema.
docstr_tok: ["Return","the","edge","form","the","schema","info","for","the","node",".","Args",":","schema","(","`","Tuple",")",":","The","out","edge","schema","of","this","node",".","inputs","(","`","Tuple","`",")",":","The","inputs","of","this","node",".","outputs","(","`","Tuple","`",")",":","The","outputs","of","this","node",".","iter_type","(","`","str","`",")",":","The","iteration","type","of","this","node",".","ahead_edges","(","`","list","`",")",":","A","list","of","the","ahead","edges",".","Returns",":","Dict","[","str",",","Dict","]",":","A","edge","include","data","and","schema","."]
code: def get_edge_from_schema(
      schema: Tuple,
      inputs: Tuple,
      outputs: Tuple,
      iter_type: str,
      ahead_edges: List,
  ) -> Dict:
      """Return the edge form the schema info for the node.
  
      Args:
          schema (`Tuple): The out edge schema of this node.
          inputs (`Tuple`): The inputs of this node.
          outputs (`Tuple`): The outputs of this node.
          iter_type (`str`): The iteration type of this node.
          ahead_edges (`list`): A list of the ahead edges.
  
      Returns:
         Dict[str, Dict]: A edge include data and schema.
      """
      if inputs is None:
          inputs = outputs
      if ahead_edges is None:
          edge_schemas = dict(
              (d, SchemaRepr.from_dag(d, iter_type)) for d in schema
          )
          edge = {
              "schema": edge_schemas,
              "data": [(s, t.type) for s, t in edge_schemas.items()],
          }
          return edge
      ahead_schemas = {}
      for ahead in ahead_edges:
          ahead_schemas.update(ahead)
  
      edge_schemas = {}
      for d in schema:
          if d not in ahead_schemas:
              inputs_type = [ahead_schemas[inp].type for inp in inputs]
              edge_schemas[d] = SchemaRepr.from_dag(
                  d, iter_type, inputs_type
              )
          elif d in outputs:
              if iter_type == ConcatConst.name:
                  inputs_type = [ahead_schemas[d].type]
              else:
                  inputs_type = [
                      ahead_schemas[inp].type for inp in inputs
                  ]
                  inputs_type.append(ahead_schemas[d].type)
              edge_schemas[d] = SchemaRepr.from_dag(
                  d, iter_type, inputs_type
              )
          else:
              edge_schemas[d] = SchemaRepr.from_dag(
                  d, MapConst.name, [ahead_schemas[d].type]
              )
      edge = {
          "schema": edge_schemas,
          "data": [(s, t.type) for s, t in edge_schemas.items()],
      }
      return edge
  
imports: import types
  import uuid
  import json
  from copy import deepcopy
  from typing import Dict, Any, Set, List, Tuple, Optional
  from pydantic import BaseModel
  from towhee.runtime.check_utils import check_set, check_node_iter
  from towhee.runtime.node_repr import NodeRepr
  from towhee.runtime.schema_repr import SchemaRepr
  from towhee.runtime.node_config import TowheeConfig
  from towhee.runtime.constants import WindowAllConst, WindowConst, ConcatConst, MapConst, ReduceConst, FilterConst, TimeWindowConst, FlatMapConst, InputConst, OutputConst, OPType
label_desc: Use image node_id 7 for calling the DAGRepr obj's underlying member method code with example usage: obj.get_edge_from_schema(schema, inputs, outputs, iter_type, ahead_edges) and returns: edge, edge