from dataclasses import dataclass, field from typing import Dict, Any, List, Optional @dataclass class ExecutionContext: globals: Dict[str, Any] = field(default_factory=dict) locals: Dict[str, Any] = field(default_factory=dict) manifest: Dict[str, Any] = field(default_factory=dict) plan: List[Dict[str, Any]] = field(default_factory=list) tracer: Optional[Any] = None profiler: Optional[Any] = None def new_context( manifest: Dict[str, Any], plan: List[Dict[str, Any]], tracer: Optional[Any] = None, profiler: Optional[Any] = None ) -> ExecutionContext: return ExecutionContext( globals={ "__name__": "__main__", "__file__": manifest.get("source_file", ""), "__manifest__": manifest }, locals={}, manifest=manifest, plan=plan, tracer=tracer, profiler=profiler )