33 lines
911 B
Python
33 lines
911 B
Python
|
|
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", "<gx>"),
|
||
|
|
"__manifest__": manifest
|
||
|
|
},
|
||
|
|
locals={},
|
||
|
|
manifest=manifest,
|
||
|
|
plan=plan,
|
||
|
|
tracer=tracer,
|
||
|
|
profiler=profiler
|
||
|
|
)
|