o
    U=ºib  ã                   @   s    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 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G dd„ dƒZdS )é    N)ÚTemporaryFile)Úexec_command)Úget_pythonexe)ÚtempdirÚassert_Úassert_warns)Ú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   úmC:\Users\psant\Downloads\PAF backend\school\venv\Lib\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_namer/   r   r   r   r   r   0   r   zemulate_nonposix.__enter__c                 C   s   | j t_d S r   )r3   r1   r2   r   r   r   r   r!   4   ó   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   r1   r2   r-   r   r   r   r   Útest_exec_command_stdout8   s0   
ÿ€ÿ€ÿ

ÿ€ÿ€ÿÿ"ÿþr8   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+)Úmoder5   r6   )
r
   r   r)   r   r   r7   r   r1   r2   r-   r   r   r   r   Útest_exec_command_stderrP   s0   
ÿ€ÿ€ÿ

ÿ€ÿ€ÿÿ"ÿþr:   c                   @   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_methoda   r4   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_ntd   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"ZAAAZTereZBBBZHiúecho "$BBB"ZHeyÚthis_is_not_a_commandúecho path=$PATHz1"%s" -c "import sys,os;sys.stderr.write(os.name)"r6   )rE   )rG   )rH   )rI   )rJ   )rK   )r   r   r1   Úenvironr<   r@   r   r   r   Úcheck_posixn   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')"Z012z!"%s" -c "import sys;sys.exit(15)"é   z"%s" -c "print('Heipa'")ZHeipa)r   r<   r   r@   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ÚwrF   z("%s" -c "f = open('%s', 'r'); f.close()"r   r>   z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"Z
execute_in)	r   r1   ÚpathÚjoinÚopenÚwriter   r<   r   )r   rA   ZtmpdirÚfnZtmpfileÚfrB   rC   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 )Nr6   r   )Zuse_teeé   Únt)
r
   r   r)   r   r7   r1   r2   rM   rD   rX   r   r   r   r   Ú
test_basicË   s"   


ø€ÿÿ"ÿzTestExecCommand.test_basicN)	r$   r%   r&   r=   rD   rM   rO   rX   r[   r   r   r   r   r;   `   s    
4r;   )r1   r   Útempfiler   Znumpy.distutilsr   Znumpy.distutils.exec_commandr   Znumpy.testingr   r   r   Úior   r
   r)   r-   r8   r:   r;   r   r   r   r   Ú<module>   s    