o
    	Tib                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ dZ	e 
 Zejddd ejejd	d
 dd Zdd ZedkrNe Zeej dS dS )    N)date)Path)tabulateiT  z--slack_channel_nameztrl-push-ci)defaultz)%(asctime)s - %(levelname)s - %(message)s)levelformatc                 C   s  g }g }d}zt | q}|D ]f}zFt|}|dd}d|v r&|d dnd}|dd}	|rU|	dkrG|d	7 }|||| jd
d g n|||| jd
d g W q tjyt }
 zt	d|  d|
  W Y d }
~
qd }
~
ww W d    n1 sw   Y  W n9 t
y }
 ztd|  d|
  W Y d }
~
n!d }
~
w ty }
 ztd|  d|
  W Y d }
~
nd }
~
ww |||fS )Nr   nodeid durationz.4fzN/Aoutcomefailed   _zCould not decode line in : z	Log file z not found: zError processing log file )openjsonloadsgetappendstemsplitJSONDecodeErrorloggingwarningFileNotFoundErrorerror	Exception)logfailed_testspassed_testssection_num_failedflinedata	test_namer
   r   e r&   G/home/ubuntu/.local/lib/python3.10/site-packages/scripts/log_reports.pyprocess_log_file"   s@   

"""
r(   c                 C   sp  g }d}g }t t d}|std d S |D ]F}t|\}}}| o'| }	||7 }||	 |t|||g zt	| W q t
y_ }
 ztd| d|
  W Y d }
~
qd }
~
ww dddtjd	d
 dddg}|dkr%d
}|D ]6\}}}|dkr|d| d| d7 }dd |D }|dt|ddgdd d 7 }t|r|d| d7 }q{td|  td|  t|tkrd| d}|dd|dd |ddddddd dd!tjd"  d#d$ |d%dd&tjd	 d't  dgd( dd)lm} |tjd*d+}|jd,|  ||d- d S |ddd.d/d0d td1 d S )2Nr   z*.logzNo log files found.zCould not remove log file r   header
plain_textu   🤗 Results of the 	TEST_TYPEr	   z TRL tests.)typetext*z failed test(s)*
c                 S   sB   g | ]}|d   ddd |d   dd dd d g qS )r   z::N      z..)r   ).0testr&   r&   r'   
<listcomp>f   s    6zmain.<locals>.<listcomp>z
```
zTest Locationz	Test Namegrid)headerstablefmtz
*z1: Warning! Empty file - check GitHub action job*
zTotal failed tests: z### u   ❌ There are zA failed tests in total! Please check the action results directly.sectionmrkdwnz*For more details:*buttonzCheck Action resultsz0https://github.com/huggingface/trl/actions/runs/GITHUB_RUN_ID)r,   r-   url)r,   r-   	accessorycontextzOn Push main z results for )r,   elements)	WebClientSLACK_API_TOKEN)token#)channelr-   blocksu/   ✅ No failures! All tests passed successfully.T)r,   r-   emojiz%All tests passed. No errors detected.)listr   globr   infor(   r   strosremoveOSErrorr   environr   r   anyprintlenMAX_LEN_MESSAGEr   today	slack_sdkr@   chat_postMessage)slack_channel_name
group_infototal_num_failedtotal_empty_files	log_filesr   r   passedr    
empty_filer%   payloadmessagename
num_failedr   failed_tabler@   slack_clientr&   r&   r'   mainA   s   

"


rc   __main__)argparser   r   rK   datetimer   pathlibr   r   rR   ArgumentParserparseradd_argumentbasicConfigINFOr(   rc   __name__
parse_argsargsrV   r&   r&   r&   r'   <module>   s"   f