jmri_logixng.context
ExecutionContext — the runtime environment a LogixNG sees.
Every Action.execute / Expression.evaluate call receives the context. It exposes:
connection— the activeSystemConnection(so actions can reach the bean managers).log— a logger for the LogAction.trace— opt-in evaluation trace, useful for debugging conditionals.
1"""``ExecutionContext`` — the runtime environment a LogixNG sees. 2 3Every Action.execute / Expression.evaluate call receives the context. It 4exposes: 5 6* ``connection`` — the active :class:`SystemConnection` (so actions can 7 reach the bean managers). 8* ``log`` — a logger for the LogAction. 9* ``trace`` — opt-in evaluation trace, useful for debugging conditionals. 10""" 11from __future__ import annotations 12 13import logging 14from dataclasses import dataclass, field 15 16from jmri_core.hal.connection import SystemConnection 17 18 19@dataclass 20class ExecutionContext: 21 """Runtime context passed through every node visit.""" 22 23 connection: SystemConnection 24 log: logging.Logger = field(default_factory=lambda: logging.getLogger("jmri_logixng")) 25 trace_enabled: bool = False 26 trace: list[str] = field(default_factory=list) 27 28 def emit_trace(self, message: str) -> None: 29 if self.trace_enabled: 30 self.trace.append(message)
@dataclass
class
ExecutionContext:
20@dataclass 21class ExecutionContext: 22 """Runtime context passed through every node visit.""" 23 24 connection: SystemConnection 25 log: logging.Logger = field(default_factory=lambda: logging.getLogger("jmri_logixng")) 26 trace_enabled: bool = False 27 trace: list[str] = field(default_factory=list) 28 29 def emit_trace(self, message: str) -> None: 30 if self.trace_enabled: 31 self.trace.append(message)
Runtime context passed through every node visit.
ExecutionContext( connection: jmri_core.hal.SystemConnection, log: logging.Logger = <factory>, trace_enabled: bool = False, trace: list[str] = <factory>)
connection: jmri_core.hal.SystemConnection