o
    Ô­jã  ã                   @   s¼   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 dl	m
Z
mZmZmZ d dlmZ G dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZdd„ Zdd„ Zejjedd�G dd„ dƒƒZdS )é    N)ÚTemporaryFile)Úexec_command)Úget_pythonexe)ÚtempdirÚassert_Úassert_warnsÚIS_WASM)ÚStringIOc                   @   ó*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
Úredirect_stdoutz9Context manager to redirect stdout for exec_command test.Nc                 C   ó   |pt j| _d S ©N)ÚsysÚstdoutÚ_stdout)Úselfr   © r   úd/var/www/html/CropPilot/venv/lib/python3.10/site-packages/numpy/distutils/tests/test_exec_command.pyÚ__init__   ó   zredirect_stdout.__init__c                 C   ó   t j| _| jt _d S r   )r   r   Ú
old_stdoutr   ©r   r   r   r   Ú	__enter__   ó   zredirect_stdout.__enter__c                 C   ó    | j  ¡  | jt_| j  ¡  d S r   )r   Úflushr   r   r   Úclose©r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__   ó   
zredirect_stdout.__exit__r   ©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r"   r   r   r   r   r      ó
    
r   c                   @   r
   )
Úredirect_stderrz9Context manager to redirect stderr for exec_command test.Nc                 C   r   r   )r   ÚstderrÚ_stderr)r   r+   r   r   r   r       r   zredirect_stderr.__init__c                 C   r   r   )r   r+   Ú
old_stderrr,   r   r   r   r   r   #   r   zredirect_stderr.__enter__c                 C   r   r   )r,   r   r-   r   r+   r   r   r   r   r   r"   '   r#   zredirect_stderr.__exit__r   r$   r   r   r   r   r*      r)   r*   c                   @   s*   e Zd ZdZd
dd„Zdd„ Zdd„ Zd	S )Úemulate_nonposixz.Context manager to emulate os.name != 'posix' ú	non-posixc                 C   s
   || _ d S r   )Ú	_new_name)r   Úosnamer   r   r   r   /   s   
zemulate_nonposix.__init__c                 C   r   r   )ÚosÚnameÚ	_old_namer0   r   r   r   r   r   2   r   zemulate_nonposix.__enter__c                 C   s   | j t_d S r   )r4   r2   r3   r   r   r   r   r"   6   ó   zemulate_nonposix.__exit__N)r/   r$   r   r   r   r   r.   -   r)   r.   c                   C   sV  t tƒ ƒ�6 ttƒ ƒ�! ttƒ� t d¡ W d   ƒ n1 s w   Y  W d   ƒ n1 s/w   Y  W d   ƒ n1 s>w   Y  tjdkr©t	ƒ �T t tƒ ƒ�6 ttƒ ƒ�! ttƒ� t d¡ W d   ƒ n1 slw   Y  W d   ƒ n1 s{w   Y  W d   ƒ n1 sŠw   Y  W d   ƒ d S W d   ƒ d S 1 s¢w   Y  d S d S )Núcd '.'Úposix)
r   r	   r*   r   r   ÚDeprecationWarningr   r2   r3   r.   r   r   r   r   Útest_exec_command_stdout:   s0   
ÿ€ÿ€ÿ

ÿ€ÿ€ÿÿ"ÿþr9   c                   C   sZ  t tdd�ƒ�6 ttƒ ƒ�! ttƒ� t d¡ W d   ƒ n1 s"w   Y  W d   ƒ n1 s1w   Y  W d   ƒ n1 s@w   Y  tjdkr«t	ƒ �T t tƒ ƒ�6 ttƒ ƒ�! ttƒ� t d¡ W d   ƒ n1 snw   Y  W d   ƒ n1 s}w   Y  W d   ƒ n1 sŒw   Y  W d   ƒ d S W d   ƒ d S 1 s¤w   Y  d S d S )Nzw+)Úmoder6   r7   )
r   r   r*   r	   r   r8   r   r2   r3   r.   r   r   r   r   Útest_exec_command_stderrR   s0   
ÿ€ÿ€ÿ

ÿ€ÿ€ÿÿ"ÿþr;   zCannot start subprocess)Úreasonc                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestExecCommandc                 C   s   t ƒ | _d S r   )r   Úpyexer   r   r   r   Úsetup_methodd   r5   zTestExecCommand.setup_methodc                 K   sV   t   d¡\}}t|dkƒ t|dkƒ t   d| j ¡\}}t|dkƒ t|dkƒ d S )Nzcmd /C echo path=%path%r   Ú z3"%s" -c "import sys;sys.stderr.write(sys.platform)"Úwin32)r   r   r>   ©r   ÚkwsÚsÚor   r   r   Úcheck_ntg   s   ÿzTestExecCommand.check_ntc                 K   s  t j di |¤Ž\}}t|dkƒ t|dkƒ t j di |¤Ž\}}t|dkƒ t|dkƒ t j dddi|¤Ž\}}t|dkƒ t|dkƒ t j di |¤Ž\}}t|dkƒ t|dkƒ d	tjvrÂd
tjd	< t j di |¤Ž\}}t|dkƒ t|d
kƒ t j dd	di|¤Ž\}}t|dkƒ t|dkƒ t j di |¤Ž\}}t|dkƒ t|d
kƒ tjd	= t j di |¤Ž\}}t|dkƒ t|dkƒ t j di |¤Ž\}}t|dkƒ t|dkƒ t j di |¤Ž\}}t|dkƒ t|dkƒ t j d| j fi |¤Ž\}}t|dkƒ t|dkƒ d S )Nú
echo Hellor   ÚHelloú	echo $AAAr@   úecho "$AAA"ÚAAAÚTereÚBBBÚHiúecho "$BBB"ÚHeyÚthis_is_not_a_commandúecho path=$PATHz1"%s" -c "import sys,os;sys.stderr.write(os.name)"r7   )rG   )rI   )rJ   )rO   )rQ   )rR   )r   r   r2   Úenvironr>   rB   r   r   r   Úcheck_posixq   sT   

ÿÿ
þzTestExecCommand.check_posixc                 G   sÔ   t j d| j fi |¤Ž\}}t|dkƒ t|dkƒ t j d| j fi |¤Ž\}}t|dkƒ t|dkƒ t j d| j fi |¤Ž\}}t|dkƒ t|dkƒ t j d| j fi |¤Ž\}}t|dkƒ t|d	kƒ d S )
Nz"%s" -c "raise 'Ignore me.'"r   r@   zV"%s" -c "import sys;sys.stderr.write('0');sys.stderr.write('1');sys.stderr.write('2')"Ú012z!"%s" -c "import sys;sys.exit(15)"é   z"%s" -c "print('Heipa'")ÚHeipa)r   r>   r   rB   r   r   r   Úcheck_basic¥   s<   ÿ
ÿþÿ
ýÿ
ÿÿ
ÿzTestExecCommand.check_basicc              	   K   sæ   t ƒ �f}d}tj ||¡}t|dƒ�}| d¡ W d   ƒ n1 s"w   Y  tjd| j|f fi |¤Ž\}}t|dkƒ t|dkƒ tjd| j|f fd|i|¤Ž\}}t|dkƒ t|dkƒ W d   ƒ d S 1 slw   Y  d S )	NÚfileÚwrH   z("%s" -c "f = open('%s', 'r'); f.close()"r   r@   z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"Ú
execute_in)	r   r2   ÚpathÚjoinÚopenÚwriter   r>   r   )r   rC   ÚtmpdirÚfnÚtmpfileÚfrD   rE   r   r   r   Úcheck_execute_in¼   s6   ÿÿÿ
þÿÿþ
þ"ñz TestExecCommand.check_execute_inc              
   C   sð   t tƒ ƒ�i ttƒ ƒ�K ttƒ�7 tjdkr#| jdd� | jdd� ntjdkr4| jdd� | jdd� | j	dd� | j	dd� W d   ƒ n1 sJw   Y  W d   ƒ n1 sYw   Y  W d   ƒ d S W d   ƒ d S 1 sqw   Y  d S )Nr7   r   )Úuse_teeé   Únt)
r   r	   r*   r   r8   r2   r3   rT   rF   rd   r   r   r   r   Ú
test_basicÎ   s"   


ø€ÿÿ"ÿzTestExecCommand.test_basicN)	r%   r&   r'   r?   rF   rT   rX   rd   rh   r   r   r   r   r=   b   s    
4r=   )r2   Úpytestr   Útempfiler   Únumpy.distutilsr   Únumpy.distutils.exec_commandr   Únumpy.testingr   r   r   r   Úior	   r   r*   r.   r9   r;   ÚmarkÚskipifr=   r   r   r   r   Ú<module>   s    