wg @dZddlmZddlZddlZddlmZddlmZGddZ e dkrne Z d Z e e Ze e Ze d ZeeeeeedSdS) z, Facade for reading logs on remote storage. ) defaultdictN)Any)ShareServiceClientc eZdZdZejdpdZdZdZ dZ dZ gdZ eefd e d e fd Z d e d efdZd e d e fdZd e d efdZde d efdZde d ee ee eefffdZde d ee fdZde d efdZdS)RemoteLogReaderz remote log reader AZURE_STORAGE_CONNECTION_STRINGswearenalogsfileshare serve_images conv_logs sandbox_logs) battle_anony battle_nameddirectconnection_string share_namec|std|stdtj||_|j||_dS)NzConnection string is required.zShare name is required.)conn_str)share) ValueErrorrfrom_connection_string share_serviceget_share_client share_client)selfrrs ?/Users/bytedance/SWE-Arena/analysis/battle-search/log_reader.py__init__zRemoteLogReader.__init__#sq ! ?=>> > 8677 7/F&((( .??j?QQ file_namereturncV|do|dS)Nzconv-log.json startswithendswithrrs r is_conv_logzRemoteLogReader.is_conv_log1s)##J//OI4F4Fw4O4OOrc^|dddS)N-r")splitstripr&s rget_conv_id_from_namez%RemoteLogReader.get_conv_id_from_name4s's##A&,,W555rcV|do|dS)Nz sandbox-logr"r#r&s ris_sandbox_logzRemoteLogReader.is_sandbox_log7s)##M22Ry7I7I'7R7RRr file_pathc|j|}|}|S)N)rget_file_client download_filereadall)rr0 file_client file_contents rget_file_contentz RemoteLogReader.get_file_content:s;'77 BB "0022::<< rdatec~d|jD}|jD]"}|d|jd|d}|j|s@|j|D]}||js||j}| ||jz d d}| dD]7}|r3||| tj|8Ȑ$|S)z Return conversation logs based on the date. Returns a dict: mode -> conv_id -> list of logs. c8i|]}|ttS)rlist).0modes r z1RemoteLogReader.get_conv_logs..Es/   (,D+d##   r/utf-8  ) CHAT_MODESCONV_LOG_DIR_NAMErget_directory_clientexistslist_directories_and_filesr'namer-r7decoder,r+appendjsonloads) rr8r r> conv_log_dirfileconv_idr6lines r get_conv_logszRemoteLogReader.get_conv_logs?sm   04   O J JD"EET%;EEdEEEL$99,GGNNPP )DD\RR J J'' 2244TY??#44 49, . ..4fWooeeEll(..t44JJDJ!$077 48H8HIIIJ  Jrcfg}|d|jd}|j|D]}||jrj|||jzdd}|tj ||S)z8 Return sandbox logs based on the date. r@rArB) SANDBOX_LOG_DIR_NAMErrHr/rIr7rJr,rKrLrM)rr8r sandbox_log_dirrOr6s rget_sandbox_logsz RemoteLogReader.get_sandbox_logsXs !@@D$=@@@%@@QQ > >D""49-- >#44#di/ 1 117u##DJ|$<$<===rimage_idcF|jd|d}||S)z: Return image data based on the image id. r@z.png)IMAGE_DIR_NAMEr7)rrW image_paths r get_imagezRemoteLogReader.get_imagees1+<rqs!$##### 666666^1^1^1^1^1^1^1^1B z ""J D((..I..t44L%%&HIIJ E) E, E*r