o
    پi                     @   s  d Z ddlZddlZddlZddlmZ ddlmZmZ ddlm	Z	 ddl
mZ ddlmZ ejejd eeZddlZzlddlm  m  m  mZ dd	lmZ g ZeeD ]1\ZZed
shdev re ee!re"edkre ed ere#e q[e ee!re"edkr	 q[e$ Z%g Z&eD ]Z'e'j(e%vre%)e'j( e&*e' qe&ZW n e+y Z, ze-de,  g ZW Y dZ,[,ndZ,[,ww dddZ.					dde/de/de/de/dee/ee/ f de0fddZ1dS )z]
This file upload the media generated in diffusion-nightly-test to a slack channel of SGLang
    N)datetime)ListUnion)urlparse)urlopen)get_git_commit_hash)level)DiffusionTestCase_CASES_CASES_zFailed to import test cases: c              	      sX  t  d}d| dt  d|  dtt d	}ts|S d  fdd	tD }|rH|D ]}|d
d}tD ]}d|j d|v rFd||j< q6q,|rNd||< |ddg}	tr^tdd tD nd}
t|
td}
dg}|	dd
|
 d |	dd|
  d tD ]}||j }|	d|j
|
 d| d q|	d |	| d|	S )Nz%d/%mu   🧵 for nightly test of z
*Git Revision:* z
*GitHub Run ID:* z
*Total Tasks:* 
u   ⏳c                    s   i | ]}|j  qS  )id.0c"default_emoji_for_case_in_progressr   Z/home/ubuntu/.local/lib/python3.10/site-packages/sglang/multimodal_gen/test/slack_utils.py
<dictcomp>?       z'_get_status_message.<locals>.<dictcomp>text *Case ID:* ``u   ✅z*Tasks Status:*c                 s   s    | ]}t |jV  qd S N)lenr   r   r   r   r   	<genexpr>O   s    z&_get_status_message.<locals>.<genexpr>
   zCase IDz```z| z | Status |-z | :----: |z |   z   |)r   nowstrftimer   r   	ALL_CASESgetr   maxappendljustextendjoin)run_idcurrent_case_idthread_messagesdate_strbase_header
status_mapmsgr   r   linesmax_lentable_linesmarkr   r   r   _get_status_message3   sD   

"


r4   case_idmodelprompt	file_pathorigin_file_pathreturnc                 C   s  g }zRz!ddl m} tdd}tjd}|s3td W W |D ]}	tj	|	r0t
|	 q#dS |r;tj	|sTtd W W |D ]}	tj	|	rQt
|	 qDdS g }
t|trc|rb|
| nt|trod	d
 |D }
g }|
D ]w}|drzMtjt|jd pd}tjd|d#}t|}||  W d    n1 sw   Y  W d    n1 sw   Y  ||j ||j W qs ty } ztd| d|  W Y d }~qsd }~ww || qsg }t|D ]#\}}tj	|rt|dkrdnd|d  }|||d q||dd d|  d| d| }||d}d}d }d }z:|j|dd}|dg D ]*}d| |ddv rj|d pY|d!}|dd}td"|   nqAW n ty } ztd#|  W Y d }~nd }~ww |szt|| }|j||d$}|d! }W n ty } ztd%|  W Y d }~nd }~ww |j||||d& |rz#|j ||d'd(}|dg }t|| |}||kr|j!|||d) W n ty } ztd*|  W Y d }~nd }~ww td+tj"|  W W |D ]}	tj	|	r#t
|	 qd,S  tyU } z"td-|  W Y d }~W |D ]}	tj	|	rMt
|	 q?dS d }~ww |D ]}	tj	|	rft
|	 qXw ).Nr   )	WebClientGITHUB_RUN_IDlocalSGLANG_DIFFUSION_SLACK_TOKENzSlack upload failed: no tokenFz!Slack upload failed: no file pathc                 S   s   g | ]}|r|qS r   r   )r   pr   r   r   
<listcomp>}   r   z(upload_file_to_slack.<locals>.<listcomp>)httphttps   z.tmp)deletesuffixzFailed to download z: zOriginal ImagezOriginal Image )filetitlezGenerated Imager   z`
*Model:* `z`
*Prompt:* )tokenC0A02NDF7UYd   )channellimitmessagesz*GitHub Run ID:* r   r   	thread_tstszFound thread_ts: z Failed to search slack history: )rK   r   z Failed to create parent thread: )rK   file_uploadsinitial_commentrN      )rK   rO   rL   )rK   rO   r   z!Failed to update parent message: zFile uploaded successfully: TzSlack upload failed: )#	slack_sdkr;   osgetenvenvironr#   loggerinfopathexistsremove
isinstancestrr%   list
startswithsplitextr   tempfileNamedTemporaryFiler   writereadname	Exceptionwarning	enumerater   conversations_historyr4   chat_postMessagefiles_upload_v2conversations_replieschat_updatebasename)r5   r6   r7   r8   r9   
temp_pathsr;   r)   rH   r?   origin_pathsfinal_origin_pathsrY   rE   tfresponseeuploadsirG   messageclient
channel_idrN   parent_msg_texthistoryr/   r   repliesrM   new_textr   r   r   upload_file_to_slackb   s   
d

`





"





r~   r   )NNNNN)2__doc__loggingrT   ra   r   typingr   r   urllib.parser   urllib.requestr   /sglang.multimodal_gen.runtime.utils.perf_loggerr   basicConfigINFO	getLogger__name__rW   inspect2sglang.multimodal_gen.test.server.testcase_configsmultimodal_gentestservertestcase_configsconfigsr	   r"   
getmembersre   valueendswithr\   r^   r   r'   setseen_idsunique_casesr   r   addr%   rf   rt   rg   r4   r]   boolr~   r   r   r   r   <module>   sv    



0