U
    œ+Bev  ã                	   @   s2  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlT d dlZdZdZdZdZdZdZdeeeeeee edœdd„Ze jedœd	d
„ƒZe jdd„ ƒZe jdd„ ƒZG dd„ deƒZ G dd„ dej!ƒZ"G dd„ de j#ƒZ$e jdd„ ƒZ%dee dœdd„Z&dS )é    N)Ú*Ú ç      @)Útask_idÚsampleÚlanguage_typeÚtimeoutÚtmp_dirÚcompletion_idÚreturnc           	         sœ   ‡ ‡‡‡‡fdd„}t  ¡ }| ¡ ‰t j||fd}| ¡  |jˆd d | ¡ r\| ¡  ˆsjˆ d¡ ˆ|ˆd ˆd dkd	ˆkrŠd
nˆd	 ˆd dœS )zu
    Evaluates the functional correctness of a completion by running the test
    suite provided in the problem.
    c           $         sl  t  dd¡}dˆ  ¡ kr.tƒ  dd l}dd l}|j}|j}|j}t	ƒ  zFi }t
ƒ 2 tˆƒ tˆd |ƒ W 5 Q R X ˆ d¡ W 5 Q R X W nz tk
r°   ˆ d¡ Y n^ tk
rÚ } zˆ d¡ W 5 d }~X Y n4 tk
r } zˆ d	|› ¡ W 5 d }~X Y nX ||_||_||_W 5 Q R X n:d
ˆ  ¡ krÆ| d k	sNtdƒ‚dd l}dd l}d| krv|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡s®| | ¡ | ¡ }	| | ¡ tddƒ ˆd ¡ z¸d }
tˆƒ, tjt› d
ddˆ› ddgˆdd}
W 5 Q R X |
jdkr,ˆ d¡ n^|
jrXz|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W n  tk
r¬   ˆ d¡ Y nX | |	¡ | | ¡ n¢dˆ  ¡ kr$dd l}dd l}d| krü|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡s4| | ¡ | ¡ }	| | ¡ tddƒ ˆd ¡ zd }
tˆƒ  tjt › ddgˆdd}
W 5 Q R X |
j ¡ r¶|
j ¡ }ˆ d	|› ¡ n2|
j ¡ rÞ|
j ¡ }ˆ d	|› ¡ n
ˆ d¡ W n  tk
r
   ˆ d¡ Y nX | |	¡ | | ¡ nDdˆ  ¡ krdd l}dd l}| ¡ }	d| krb|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡sš| | ¡ | | ¡ tddƒ ˆd ¡ dˆkrÞtjdddddgˆdd}ntjdddgˆdd}|jdkr0|jr|j ¡ }n
|j ¡ }ˆ d |› ¡ nÆz¤d }
tˆƒ tjd!gˆdd}
W 5 Q R X |
jdkrtˆ d¡ n^|
jr z|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W n  tk
rô   ˆ d¡ Y nX | |	¡ | | ¡ nZd"ˆ  ¡ kr¢dd l}dd l}| ¡ }	d| krL|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡s„| | ¡ | | ¡ td#dƒ ˆd ¡ z®d }
tˆƒ" t!› d$}tj|ˆddd%}
W 5 Q R X |
jdkrðˆ d¡ n^|
jrz|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W n  tk
rp   ˆ d¡ Y nX t"ˆd& ƒ t"ˆd ƒ | |	¡ | | ¡ 
nÆd'ˆ  ¡ k	rdd l}dd l}| ¡ }	d| krà|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡s| | ¡ | | ¡ td(dƒ ˆd ¡ z¨d }
tˆƒ d)}tj|d*ddd%}
W 5 Q R X |
jdkr~ˆ d¡ n^|
jrªz|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W n  tk
rþ   ˆ d¡ Y nX | |	¡ | | ¡ 	nPd+ˆ  ¡ krNdd l}dd l}| ¡ }	d| k	rV|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡	sŽ| | ¡ | | ¡ d,t › d-tjj#d,  i}td.dƒ ˆd ¡ t$› d/}tj|ˆd|dd0}|jdk
r |j
r|j ¡ }n
|j ¡ }ˆ d |› ¡ nÎz¬d }
tˆƒ  tjt › ddgˆdd}
W 5 Q R X |
jdk
rlˆ d¡ n^|
j
r˜z|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W n  tk

rì   ˆ d¡ Y nX ˆd& dkr6d,t › d-tjj#d,  i}t$› d1}tj|ˆd|dd0}|jdkrn|jrT|j ¡ }n
|j ¡ }d |› ˆd&< nÈz¨d }
tˆƒ  tjt › ddgˆdd}
W 5 Q R X |
jdkr¸dˆd&< n\|
jräz|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX d	|› ˆd&< W n tk
r4   dˆd&< Y nX | |	¡ | | ¡ nd2ˆ  ¡ krddd l}dd l}| ¡ }	d| krŒ|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡sÄ| | ¡ | | ¡ td3dƒ ˆd ¡ t%› d4}tj|ddd5}|jdkr:|jr|j ¡ }n
|j ¡ }ˆ d |› ¡ nz¾d }
t%› d6}t&d7d8}tˆƒ tj|ˆdd|d9}
W 5 Q R X d:|
j ¡ kr˜ˆ d¡ n^|
jrÄz|
j ¡ }W n   |
j}Y nX n"z|
j ¡ }W n   |
j}Y nX ˆ d	|› ¡ W nR tk
r   ˆ d¡ Y n4 t'k
rJ } zˆ d	|› ¡ W 5 d }~X Y nX | |	¡ | | ¡ nd;ˆ  ¡ kr>dd l}|j (|j )t*¡¡}|j |d;¡}|j |d<¡}|j |d=¡}|j |d¡}|j |d>¡}d?}|j|dd@ |j|dd@ |j|dd@ |j|dd@ t+j,|dAdBR}ˆdC  ¡  ddD¡}|| }| -|j.|j ||¡¡ ˆd }| | /dE¡¡ W 5 Q R X | |¡ |dF }|j ||¡}dG| dH | }|j |¡rà|j 0|¡ }dkrê| 1|¡ | 2|¡}n
| 2|¡}|dkr0dI| dH | }| 2|¡} | dkr$ˆ d¡ n
ˆ dJ¡ n
ˆ dK¡ n*dLˆ  ¡ krh| d k	s^tdMƒ‚dd l}dd l}d| kr†|j | d¡} |j | ˆ dd¡› d|› ¡} |j | ¡s¾| | ¡ t|j | dN¡dƒ ˆd ¡ | ¡ }	| 2dO| › d¡ | | ¡ dP}!d&}"t3dQƒD ]f}#z.t4› dR}tj|dSddd%}|j}"W  qxW n0 tj5k
rr } zW Y ¢qW 5 d }~X Y nX q|"dkrˆdK}!nÂd }
zft4› dT}tj|ˆddd%}
|
jdkr¼d}!n4|
jdkrðdU|
j dV¡kràdW}!nd	|
j ¡ › }!W nV tj5k
r } zdX}!W 5 d }~X Y n. tk
rH } zd	|› }!W 5 d }~X Y nX ˆ |!¡ | |	¡ | | ¡ d S )YNé   i † Úpythonr   Ú	test_codeÚpassedú	timed outzfailed: AssertionErrorzfailed: ÚgozGGo should be evaluated in a dir where necessary module files installed.Útmpú/ú-zmain_test.goÚwÚtestz	-timeout=ÚsT)r   Úcapture_outputÚjsztest.jsÚnodeÚcppztest.cppZ162z/usr/bin/g++z
-std=c++17z-lcryptoz-lsslzfailed: compilation error: z./a.outÚphpztest.phpzphp -f test.php)r   r   ÚshelléÿÿÿÿÚshztest.shz/bin/bash test.shé
   ÚtsÚPATHú:ztest.tsz,tsc test.ts --target ES2015 --lib ES2015,DOM)r   r   Úenvr   ztsc test.tsÚcsz
Program.cszmcs -d:DEBUG Program.cs)r   r   zmono Program.exezConsole.Error)ZMONO_TRACE_LISTENER)r   r   r   r$   ZFailÚrustÚsrcÚbinÚlogsz.rs)Úexist_okF)ÚdirÚdeleter   Ú_zutf-8z.jsonlzcargo check --bin z --message-format json >> zcargo test --bin zfailed: execution errorzfailed: compilation errorÚjavaz,Java should be evaluated in a temporary dir.zProblem.javazcp ./javatuples-1.2.jar zfailed: unknown erroré   z)javac -cp javatuples-1.2.jar Problem.javaé<   z)java -ea -cp .:javatuples-1.2.jar ProblemÚAssertionErrorzunicode-escapezfailed: wrong answerztime out)6ÚrandomÚrandintÚlowerÚcreate_tempdirÚosÚshutilÚrmtreeÚrmdirÚchdirÚreliability_guardÚ
swallow_ioÚ
time_limitÚexecÚappendÚTimeoutExceptionr1   ÚBaseExceptionÚpathÚjoinÚreplaceÚexistsÚmakedirsÚgetcwdÚopenÚwriteÚ
subprocessÚrunÚgo_execÚ
returncodeÚstderrÚdecodeÚstdoutÚ	node_execÚphp_execÚprintÚenvironÚtsc_execÚcs_execÚdictÚ	ExceptionÚdirnameÚabspathÚ__file__ÚtempfileÚNamedTemporaryFileÚrenameÚnameÚencodeÚgetsizeÚremoveÚsystemÚrangeÚ	java_execÚTimeoutExpired)$r	   Z	random_idr6   r7   r8   r9   r:   Zexec_globalsÚeZorigin_pathZexec_resultÚerrZcompilation_resultÚcmdr$   ÚWDZRUST_DIRZRUST_SRCZRUST_BINZRUST_TMP_DIRZ	RUST_LOGSZRUST_EXTÚfÚfile_prefixÚ	file_nameÚ	rust_codeZlog_filenameÚlog_pathZcargo_checkÚ	file_sizeZreturned_val_compilationZ
cargo_testZreturned_val_executionÚresZcompile_returncoder-   ©r   Úresultr   r   r   © úl/weka-jd/prod/containers/zhuqihao/dev-cpu/upload_code/deepseek-coder/Evaluation/MBPP/human_eval/execution.pyÚunsafe_execute$   sò   


"
 



0

 



$



 


þÿ




 





 




 




$


$


 






"







 


 




z)check_correctness.<locals>.unsafe_execute)ÚtargetÚargsr   )r   r   r   r   Úfinishr   r   )r   r
   rs   r   ry   Úcode)	ÚmultiprocessingÚManagerÚlistÚProcessÚstartrC   Úis_aliveÚkillr?   )	r   r   r   r   r	   r
   rv   ÚmanagerÚprt   rr   ru   Úcheck_correctness   s*        

úr„   )Úsecondsc              
   c   sD   dd„ }t  t j| ¡ t   t j|¡ z
d V  W 5 t  t jd¡ X d S )Nc                 S   s   t dƒ‚d S )Nz
Timed out!)r@   )ÚsignumÚframert   rt   ru   Úsignal_handlerP  s    z"time_limit.<locals>.signal_handlerr   )ÚsignalÚ	setitimerÚITIMER_REALÚSIGALRM)r…   rˆ   rt   rt   ru   r=   N  s    
r=   c                  c   sP   t ƒ } t | ¡6 t | ¡  t| ƒ d V  W 5 Q R X W 5 Q R X W 5 Q R X d S ©N)ÚWriteOnlyStringIOÚ
contextlibÚredirect_stdoutÚredirect_stderrÚredirect_stdin)Ústreamrt   rt   ru   r<   [  s
    
r<   c               
   c   s2   t  ¡  } t| ƒ | V  W 5 Q R X W 5 Q R X d S r   )r\   ÚTemporaryDirectoryr:   )rY   rt   rt   ru   r5   d  s    

r5   c                   @   s   e Zd ZdS )r@   N)Ú__name__Ú
__module__Ú__qualname__rt   rt   rt   ru   r@   k  s   r@   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )rŽ   z7 StringIO that throws an exception when it's read from c                 O   s   t ‚d S r   ©ÚIOError©Úselfrx   Úkwargsrt   rt   ru   Úreadr  s    zWriteOnlyStringIO.readc                 O   s   t ‚d S r   r˜   rš   rt   rt   ru   Úreadlineu  s    zWriteOnlyStringIO.readlinec                 O   s   t ‚d S r   r˜   rš   rt   rt   ru   Ú	readlinesx  s    zWriteOnlyStringIO.readlinesc                 O   s   dS )z, Returns True if the IO object can be read. Frt   rš   rt   rt   ru   Úreadable{  s    zWriteOnlyStringIO.readableN)r•   r–   r—   Ú__doc__r   rž   rŸ   r    rt   rt   rt   ru   rŽ   o  s
   rŽ   c                   @   s   e Zd ZdZdS )r’   ÚstdinN)r•   r–   r—   Ú_streamrt   rt   rt   ru   r’   €  s   r’   c              
   c   sl   | dkrd V  d S t  ¡ }t  | ¡ z6z
d V  W n& tk
rV } z|‚W 5 d }~X Y nX W 5 t  |¡ X d S )NÚ.)r6   rG   r:   rA   )ÚrootÚcwdÚexcrt   rt   ru   r:   „  s    

r:   )Úmaximum_memory_bytesc                 C   s’  | dk	rTddl }| |j| | f¡ | |j| | f¡ t ¡ jdksT| |j| | f¡ t 	¡  ddl
}d|_d|_ddl}d|jd< d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_d|_ d|_!d|_"d|_d|_#d|_$d|_%d|_&d|_'ddl(}d|_)d|_*d|_!ddl+}d|_,dt-d< ddl.}d|j/d< d|j/d< d|j/d	< d|j/d
< d|j/d< dS )aÏ  
    This disables various destructive functions and prevents the generated code
    from interfering with the test (e.g. fork bomb, killing other processes,
    removing filesystem files, etc.)

    WARNING
    This function is NOT a security sandbox. Untrusted code, including, model-
    generated code, should not be blindly executed outside of one. See the 
    Codex paper for more information about OpenAI's code sandbox, and proceed
    with caution.
    Nr   ÚDarwinÚ1ÚOMP_NUM_THREADSÚhelpÚipdbÚjoblibÚresourceÚpsutilÚtkinter)0r¯   Ú	setrlimitÚ	RLIMIT_ASÚRLIMIT_DATAÚplatformÚunamerc   ÚRLIMIT_STACKÚfaulthandlerÚdisableÚbuiltinsÚexitÚquitr6   rT   r   Úputenvrb   Ú
removedirsr9   ÚfchdirÚsetuidÚforkÚforkptyÚkillpgr^   ÚrenamesÚtruncaterD   ÚunlinkÚfchmodÚfchownÚchmodÚchownÚchrootZlchflagsÚlchmodÚlchownrG   r:   r7   r8   ÚmoverJ   ÚPopenÚ__builtins__ÚsysÚmodules)r¨   r¯   rº   r6   r7   rJ   rÑ   rt   rt   ru   r;   “  sh    




r;   )r   NN)N)'r   r¸   Úior{   r6   rµ   r‰   r2   rJ   r\   ÚgzipÚjsonÚtypingÚ	tracebackre   rQ   rU   rL   rR   rV   ÚstrrW   ÚfloatÚOptionalÚintÚDictr„   Úcontextmanagerr=   r<   r5   rX   r@   ÚStringIOrŽ   Ú_RedirectStreamr’   r:   r;   rt   rt   rt   ru   Ú<module>   s^      úù    ;


