Coverage for slack_bot / shell / manager.py: 0%

21 statements  

« prev     ^ index     » next       coverage.py v7.13.4, created at 2026-03-02 17:44 +0800

1from typing import Dict 

2from .session import ShellSession 

3from health.utils.logging_config import setup_logger 

4 

5logger = setup_logger(__name__) 

6 

7class ShellManager: 

8 _instance = None 

9 _sessions: Dict[str, ShellSession] = {} 

10 

11 def __new__(cls): 

12 if cls._instance is None: 

13 cls._instance = super(ShellManager, cls).__new__(cls) 

14 return cls._instance 

15 

16 def get_session(self, channel_id: str) -> ShellSession: 

17 if channel_id not in self._sessions or not self._sessions[channel_id].is_alive(): 

18 logger.info(f"Creating new ShellSession for channel {channel_id}") 

19 self._sessions[channel_id] = ShellSession() 

20 return self._sessions[channel_id] 

21 

22 def close_session(self, channel_id: str): 

23 if channel_id in self._sessions: 

24 logger.info(f"Closing ShellSession for channel {channel_id}") 

25 self._sessions[channel_id].close() 

26 del self._sessions[channel_id]