
    ,j                     B    d dl Z d dlZ G d d          Zd Zd Zd ZdS )    Nc                   *    e Zd ZdZd Zd Zd Zd ZdS )TrameServerMonitorz)Helper class capture sever state from logc                 X    || _         i | _        d| _        |                                  d S )Nr   )	_log_path_last_stateportupdate)selflog_paths     K/DATA/AppData/hermes/venv/lib/python3.11/site-packages/trame/app/testing.py__init__zTrameServerMonitor.__init__   s)    !	    c                 T   d}t          | j        d          5 }|                                D ]A}t          |           d|v rt	          |dd                    | _        |d d         dk    r|}B	 d d d            n# 1 swxY w Y   t          j        |dd                    | _        d S )Nz	STATE: {}rSERVER_PORT:      zSTATE: )	openr   	readlinesprintintr   jsonloadsr   )r
   last_state_lineflines       r   r	   zTrameServerMonitor.update   s    %$.#&& 	+! + +d!T)) #DIDI8y((&*O+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+  :oabb&9::s   AA<<B B c                 8    |                                   | j        S N)r	   r   )r
   s    r   	get_statezTrameServerMonitor.get_state   s    r   c                 ^    |                                   | j                            |          S r   )r	   r   get)r
   names     r   r!   zTrameServerMonitor.get   s&    ##D)))r   N)__name__
__module____qualname____doc__r   r	   r   r!    r   r   r   r      sV        33  
; 
; 
;     * * * * *r   r   c                     t          j        |           D ]P\  }}}d|v rFt           j                            |d          }t          j        |           t          d|            QdS )zgSelenium capture page_url.txt which will change through
    tests and therefore we need to remove them.zpage_url.txtz - remove: N)oswalkpathjoinremover   )	base_pathrootdirsfiles	full_paths        r   remove_page_urlsr3   #   sv      WY// - -dEU""T>::IIi   +	++,,,	- -r   c                  N    t          dt          j        |           d           dS )zKHelper to print the server state in a way TrameServerMonitor can understandzSTATE:TflushN)r   r   dumps)kwargss    r   print_stater9   -   s'    	(DJv&&d333333r   c                         j         j        | t                      j                            d           fd            }dS )zCRegister state monitoring for TrameServerMonitor and port extractoron_server_readyc                  6    t          dj        d           d S )Nr   Tr5   )r   r   )r8   servers    r   print_server_portz)enable_testing.<locals>.print_server_port6   s     nfk666666r   N)statechanger9   
controlleradd)r=   state_monitorr>   s   `  r   enable_testingrD   2   s`    'FL'444,--7 7 7 7 .-7 7 7r   )r   r)   r   r3   r9   rD   r'   r   r   <module>rE      sv     				* * * * * * * *<- - -4 4 4
7 7 7 7 7r   