Initialize process manager Args: base_cwd: base working directory resource_monitor: resource monitor instance callback_manager: callback manager instance
(self, base_cwd: str = "", resource_monitor: Optional[ResourceMonitor] = None,
callback_manager: Optional[CallbackManager] = None,
global_shutdown_patterns: Optional[List[str]] = None,
stop_all_on_shutdown: bool = False,
echo_child_output: bool = True)
| 67 | """Process manager""" |
| 68 | |
| 69 | def __init__(self, base_cwd: str = "", resource_monitor: Optional[ResourceMonitor] = None, |
| 70 | callback_manager: Optional[CallbackManager] = None, |
| 71 | global_shutdown_patterns: Optional[List[str]] = None, |
| 72 | stop_all_on_shutdown: bool = False, |
| 73 | echo_child_output: bool = True): |
| 74 | """ |
| 75 | Initialize process manager |
| 76 | |
| 77 | Args: |
| 78 | base_cwd: base working directory |
| 79 | resource_monitor: resource monitor instance |
| 80 | callback_manager: callback manager instance |
| 81 | """ |
| 82 | self.base_cwd = Path(base_cwd) if base_cwd else Path.cwd() |
| 83 | self.resource_monitor = resource_monitor or ResourceMonitor() |
| 84 | self.callback_manager = callback_manager or CallbackManager() |
| 85 | self._processes: Dict[str, ProcessInfo] = {} |
| 86 | self._script_configs: Dict[str, ScriptConfig] = {} |
| 87 | self._lock = threading.Lock() |
| 88 | self._fabric_conns: Dict[str, Any] = {} |
| 89 | # Global shutdown configuration |
| 90 | self._global_shutdown_patterns = [p.lower() for p in (global_shutdown_patterns or [])] |
| 91 | self._stop_all_on_shutdown = bool(stop_all_on_shutdown) |
| 92 | self._global_shutdown_initiated = threading.Event() |
| 93 | # Whether to echo child process output to current console (for local PTY reader) |
| 94 | self._echo_child_output = bool(echo_child_output) |
| 95 | |
| 96 | def _graceful_terminate_local(self, process_info: ProcessInfo): |
| 97 | try: |
nothing calls this directly
no test coverage detected