Pyteryx/alteryx_runner/engine/graph.py

39 lines
769 B
Python

from __future__ import annotations
from dataclasses import dataclass, field
from typing import Dict, List, Optional
import xml.etree.ElementTree as ET
@dataclass
class FieldDef:
name: str
type: str
size: Optional[int] = None
source: Optional[str] = None
@dataclass
class NodeDef:
tool_id: int
plugin: str
config: Optional[ET.Element]
output_schema: List[FieldDef] = field(default_factory=list)
position: tuple = (0, 0)
@dataclass
class ConnectionDef:
origin_id: int
origin_anchor: str
dest_id: int
dest_anchor: str
name: Optional[str] = None
wireless: bool = False
@dataclass
class WorkflowGraph:
nodes: Dict[int, NodeDef]
connections: List[ConnectionDef]
properties: Optional[ET.Element]