U
    e»{jÇ  ã                
   @   sf  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	 G dd„ de j
ƒZdd	„ Zejjej d
¡dd�dd„ ƒZdd„ Zdd„ Zejjej d
¡dd�dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zej d'd(d)d*d+d,d-g¡d.d/„ ƒZej d0d1d2d3d4d5d6ej  d7fg¡d8d9„ ƒZ!ej d:d;ej" d<ej# f¡d=d>„ ƒZ$dS )?é    N)Úunits)Úconsoleé   )Útest_progress_bar_funcc                       sD   e Zd ZdZd‡ fdd„	Zd‡ fdd„	Z‡ fdd„Zd	d
„ Z‡  ZS )ÚFakeTTYzmIOStream that fakes a TTY; provide an encoding to emulate an output
    stream with a specific encoding.
    Nc                    s>   |d krt ƒ  | ¡S |}t| ¡ | j | fd|iƒ} |  | ¡S )NÚencoding)ÚsuperÚ__new__ÚtypeÚtitleÚ__name__)Úclsr   ©Ú	__class__© ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/astropy/utils/tests/test_console.pyr	      s
    zFakeTTY.__new__c                    s   t ƒ  ¡  d S ©N)r   Ú__init__)Úselfr   r   r   r   r      s    zFakeTTY.__init__c                    s8   t |tƒr| d¡}n| jd k	r,| | j¡ tƒ  |¡S )Nzlatin-1)Ú
isinstanceÚbytesÚdecoder   Úencoder   Úwrite)r   Úsr   r   r   r   !   s
    

zFakeTTY.writec                 C   s   dS )NTr   )r   r   r   r   Úisatty*   s    zFakeTTY.isatty)N)N)	r   Ú
__module__Ú__qualname__Ú__doc__r	   r   r   r   Ú__classcell__r   r   r   r   r      s
   
	r   c                  C   sx   t ƒ } |  ¡ st‚|  d¡ |  ¡ dks,t‚t dƒ}| ¡ s@t‚|jjdksPt‚t t	|jd¡sdt‚| ¡ dkstt‚d S )Nu   â˜ƒÚasciiZAsciiFakeTTYÚ )
r   r   ÚAssertionErrorr   Úgetvaluer   r   ÚpytestÚraisesÚUnicodeEncodeError)Úf1Úf2r   r   r   Útest_fake_tty.   s    
r)   ÚwinzCannot test on Windows)Úreasonc                   C   s   t  dd¡dkst‚d S )NÚfooÚgreenz[0;32mfoo[0m)r   Z_color_textr"   r   r   r   r   Útest_color_text?   s    r.   c                   C   s    t  dd¡ t  dddd¡ d S )Nr,   r-   ÚbarÚred©r   Úcolor_printr   r   r   r   Útest_color_printD   s    r3   c                  C   sZ   t  ¡ } tjdd| d� |  ¡ dks(t‚t  ¡ } tjddddd| d� |  ¡ dksVt‚d S )	Nr,   r-   ©Úfilezfoo
r/   r0   Úbazz
foobarbaz
)ÚioÚStringIOr   r2   r#   r"   ©Ústreamr   r   r   Útest_color_print2K   s    r;   c                  C   sV   t ƒ } tjdd| d� |  ¡ dks&t‚t ƒ } tjddddd| d� |  ¡ dksRt‚d S )	Nr,   r-   r4   z[0;32mfoo[0m
r/   r0   r6   z [0;32mfoo[0m[0;31mbar[0mbaz
)r   r   r2   r#   r"   r9   r   r   r   Útest_color_print3W   s    r<   c                   C   s   t  dd¡ d S )Nu	   Ã¼berbÃ¦rr0   r1   r   r   r   r   Útest_color_print_unicoded   s    r=   c                   C   s   t  dd¡ d S )Nr,   Úunknownr1   r   r   r   r   Útest_color_print_invalid_colorh   s    r?   c               	   C   s8   t dƒ} tjj}tjd| |d��}t|ƒ W 5 Q R X dS )zÍRegression test for #1760

    Ensures that the spinner can fall go into fallback mode when using the
    unicode spinner on a terminal whose default encoding cannot encode the
    unicode characters.
    r    zReticulating splines)r5   ÚcharsN)r   r   ÚSpinnerZ_default_unicode_charsÚnext)r:   r@   r   r   r   r   Ú test_spinner_non_unicode_consolel   s    rC   c               	   C   s0   t  d¡�} tdƒD ]}|  ¡  qW 5 Q R X d S ©Né2   )r   ÚProgressBarÚrangeÚupdate)r/   Úir   r   r   Útest_progress_bar{   s    rJ   c                  C   s   t  tdƒ¡D ]} qd S rD   )r   rF   rG   )Úxr   r   r   Útest_progress_bar2‚   s    rL   c                  C   s   dd„ } t j | tdƒ¡ d S )Nc                  _   s   d S r   r   )ÚargsÚkwargsr   r   r   Ú
do_nothingˆ   s    z&test_progress_bar3.<locals>.do_nothingrE   )r   rF   ÚmaprG   )rO   r   r   r   Útest_progress_bar3‡   s    rQ   c               	   C   s   t  d¡�} W 5 Q R X d S )Nr   )r   rF   )r/   r   r   r   Útest_zero_progress_barŽ   s    rR   c                  C   sX   d} t  tdƒ¡D ]}| |7 } q| dks,t‚d} t  d¡D ]}| |7 } q:| dksTt‚d S )Nr   rE   iÉ  )r   rF   rG   r"   )ÚsumrK   r   r   r   Útest_progress_bar_as_generator“   s    

rT   c                  C   sT   t tdƒƒ} tjjtj| ddd�}| |ks.t‚tjjtj| ddd�}| |ksPt‚d S )Néd   é
   T)ÚstepZmultiprocessé   )ÚlistrG   r   rF   rP   r   Úfuncr"   )ÚitemsÚresultZresult1r   r   r   Útest_progress_bar_mapŸ   s       ÿ   ÿr]   )ÚsecondsÚstring)iX/ z 1w 3d)éMÛ z 2d 4h)éA  z 1h 5m)é@   z 1m 4s)é   z   15s)rX   z    2sc                 C   s   t  | ¡}||kst‚d S r   )r   Ú
human_timer"   )r^   r_   rd   r   r   r   Útest_human_time­   s    
re   )Úsizer_   )irÙƒ z8.6M)r`   Z187k)ra   z3.9k)rb   z 64 )rX   z  2 rV   z 10Gc                 C   s   t  | ¡}||kst‚d S r   )r   Úhuman_file_sizer"   )rf   r_   rd   r   r   r   Útest_human_file_size½   s    
rh   rf   rE   rU   c                 C   s   t  tjtj| ¡st‚d S r   )r$   r%   ÚuZUnitConversionErrorr   rg   r"   )rf   r   r   r   Útest_bad_human_file_sizeÍ   s    rj   )%r7   Úsysr$   Zastropyr   ri   Zastropy.utilsr   r!   r   r8   r   r)   ÚmarkZskipifÚplatformÚ
startswithr.   r3   r;   r<   r=   r?   rC   rJ   rL   rQ   rR   rT   r]   Zparametrizere   ÚGBrh   ÚkmÚgrj   r   r   r   r   Ú<module>   s\   

úþ
úþ
