
    ri                     Z    d dl mZ ddlmZ d dlmZ  ee          Z G d d          ZdS )    )Dict   )ShellSession)setup_loggerc                   ^     e Zd ZU dZi Zeeef         ed<    fdZ	dedefdZ
defdZ xZS )ShellManagerN	_sessionsc                 z    | j         -t          t          |                               |           | _         | j         S )N)	_instancesuperr   __new__)cls	__class__s    0/root/projects/butler/slack_bot/shell/manager.pyr   zShellManager.__new__   s2    = !,44<<SAACM}    
channel_idreturnc                     || j         vs| j         |                                         s3t                              d|            t	                      | j         |<   | j         |         S )Nz&Creating new ShellSession for channel )r	   is_aliveloggerinfor   selfr   s     r   get_sessionzShellManager.get_session   s_    T^++4>*3M3V3V3X3X+KKMMMNNN)5DN:&~j))r   c                     || j         v rFt                              d|            | j         |                                          | j         |= d S d S )Nz!Closing ShellSession for channel )r	   r   r   closer   s     r   close_sessionzShellManager.close_session   s[    ''KKHJHHIIIN:&,,...z*** ('r   )__name__
__module____qualname__r   r	   r   strr   __annotations__r   r   r   __classcell__)r   s   @r   r   r      s         I)+ItC%&+++    
*c *l * * * *+ + + + + + + + +r   r   N)	typingr   sessionr   health.utils.logging_configr   r   r   r    r   r   <module>r(      s|          ! ! ! ! ! ! 4 4 4 4 4 4	h		+ + + + + + + + + +r   