a
    iÝEb…  ã                   @   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                   @   s*   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   s   |pt j| _d S ©N)ÚsysÚstdoutÚ_stdout)Úselfr   © r   úg/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/numpy/distutils/tests/test_exec_command.pyÚ__init__   s    zredirect_stdout.__init__c                 C   s   t j| _| jt _d S r
   )r   r   Ú
old_stdoutr   ©r   r   r   r   Ú	__enter__   s    zredirect_stdout.__enter__c                 C   s    | j  ¡  | jt_| j  ¡  d S r
   )r   Úflushr   r   r   Úclose©r   Úexc_typeÚ	exc_valueÚ	tracebackr   r   r   Ú__exit__   s    
zredirect_stdout.__exit__)N©Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r   r   r   r	      s   
r	   c                   @   s*   e Zd ZdZd	dd„Zdd„ Zdd„ ZdS )
Úredirect_stderrz9Context manager to redirect stderr for exec_command test.Nc                 C   s   |pt j| _d S r
   )r   ÚstderrÚ_stderr)r   r"   r   r   r   r      s    zredirect_stderr.__init__c                 C   s   t j| _| jt _d S r
   )r   r"   Ú
old_stderrr#   r   r   r   r   r   !   s    zredirect_stderr.__enter__c                 C   s    | j  ¡  | jt_| j  ¡  d S r
   )r#   r   r$   r   r"   r   r   r   r   r   r   %   s    
zredirect_stderr.__exit__)Nr   r   r   r   r   r!      s   
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   s   t j| _| jt _d S r
   )ÚosÚnameÚ	_old_namer'   r   r   r   r   r   0   s    zemulate_nonposix.__enter__c                 C   s   | j t_d S r
   )r+   r)   r*   r   r   r   r   r   4   s    zemulate_nonposix.__exit__N)r&   r   r   r   r   r   r%   +   s   
r%   c                   C   sF  t tƒ ƒ�l ttƒ ƒ�B ttƒ� t d¡ W d   ƒ n1 s@0    Y  W d   ƒ n1 s^0    Y  W d   ƒ n1 s|0    Y  tjdk�rBt	ƒ �˜ t tƒ ƒ�l ttƒ ƒ�B ttƒ� t d¡ W d   ƒ n1 sÚ0    Y  W d   ƒ n1 sø0    Y  W d   ƒ n1 �s0    Y  W d   ƒ n1 �s80    Y  d S )Núcd '.'Úposix)
r	   r   r!   r   r   ÚDeprecationWarningr   r)   r*   r%   r   r   r   r   Útest_exec_command_stdout8   s    
d
r/   c                   C   sJ  t tdd�ƒ�l ttƒ ƒ�B ttƒ� t d¡ W d   ƒ n1 sD0    Y  W d   ƒ n1 sb0    Y  W d   ƒ n1 s€0    Y  tjdk�rFt	ƒ �˜ t tƒ ƒ�l ttƒ ƒ�B ttƒ� t d¡ W d   ƒ n1 sÞ0    Y  W d   ƒ n1 sü0    Y  W d   ƒ n1 �s0    Y  W d   ƒ n1 �s<0    Y  d S )Nzw+)Úmoder,   r-   )
r	   r   r!   r   r   r.   r   r)   r*   r%   r   r   r   r   Útest_exec_command_stderrP   s    
d
r1   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   Úsetupa   s    zTestExecCommand.setupc                 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   r3   ©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 $AAAr5   ú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)"r-   )r<   )r>   )r?   )r?   )r@   )r@   )r@   )r@   )rA   )rB   )r   r   r)   Úenvironr3   r7   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   r5   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   r3   r   r7   r   r   r   Úcheck_basic¢   s<    ÿÿ
þÿý
ÿÿ
ÿÿ
zTestExecCommand.check_basicc              	   K   sä   t ƒ �Ê}d}tj ||¡}t|dƒ�}| d¡ W d   ƒ n1 sD0    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   ƒ n1 sÖ0    Y  d S )	NÚfileÚwr=   z("%s" -c "f = open('%s', 'r'); f.close()"r   r5   z9"%s" -c "f = open('%s', 'r'); print(f.read()); f.close()"Z
execute_in)	r   r)   ÚpathÚjoinÚopenÚwriter   r3   r   )r   r8   ZtmpdirÚfnZtmpfileÚfr9   r:   r   r   r   Úcheck_execute_in¹   s2    (ÿÿþ
ÿÿþþ
z TestExecCommand.check_execute_inc              
   C   sÞ   t tƒ ƒ�À ttƒ ƒ�– ttƒ�n tjdkrF| jdd� | jdd� n"tjdkrh| jdd� | jdd� | j	dd� | j	dd� W d   ƒ n1 s”0    Y  W d   ƒ n1 s²0    Y  W d   ƒ n1 sÐ0    Y  d S )Nr-   r   )Zuse_teeé   Únt)
r	   r   r!   r   r.   r)   r*   rD   r;   rO   r   r   r   r   Ú
test_basicË   s    


zTestExecCommand.test_basicN)	r   r   r   r4   r;   rD   rF   rO   rR   r   r   r   r   r2   `   s   
4r2   )r)   r   Útempfiler   Znumpy.distutilsr   Znumpy.distutils.exec_commandr   Znumpy.testingr   r   r   Úior   r	   r!   r%   r/   r1   r2   r   r   r   r   Ú<module>   s   