
    IR-e              
          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e j
                  Zd Zej                            ej                            d	          d
          d             Zd Zd Zej                            ej                            d	          d
          d             Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                            dg d          d             Zej                            ddddd d!d"ej         z  d#fg          d$             Z!ej                            d%d&ej"        z  d'ej#        z  f          d(             Z$dS ))    N)units)console   )test_progress_bar_funcc                   @     e Zd ZdZd fd	Zd fd	Z fdZd Z xZS )FakeTTYzmIOStream that fakes a TTY; provide an encoding to emulate an output
    stream with a specific encoding.
    Nc                     |!t                                          |           S |}t          |                                | j        z   | fd|i          } |                     |           S )Nencoding)super__new__typetitle__name__)clsr
   	__class__s     @lib/python3.11/site-packages/astropy/utils/tests/test_console.pyr   zFakeTTY.__new__   s_    77??3'''8>>##cl2SFZ<RSS{{3    c                 H    t                                                       d S N)r   __init__)selfr
   r   s     r   r   zFakeTTY.__init__   s    r   c                     t          |t                    r|                    d          }n!| j        |                    | j                   t                                          |          S )Nzlatin-1)
isinstancebytesdecoder
   encoder   write)r   sr   s     r   r   zFakeTTY.write!   sZ    a 	$##AA]&HHT]###ww}}Qr   c                     dS )NT )r   s    r   isattyzFakeTTY.isatty*   s    tr   r   )	r   
__module____qualname____doc__r   r   r   r!   __classcell__)r   s   @r   r   r      s                                        r   r   c                     t                      } |                                 sJ |                     d           |                                 dk    sJ t          d          }|                                sJ |j        j        dk    sJ t          j        t          |j        d          sJ |                                dk    sJ d S )Nu   ☃asciiAsciiFakeTTY )	r   r!   r   getvaluer   r   pytestraisesUnicodeEncodeError)f1f2s     r   test_fake_ttyr0   .   s     
B99;;HHUOOO;;==E!!!! 
		B99;;< N2222=+RXu=====;;==Br   winzCannot test on Windows)reasonc                  <    t          j        dd          dk    sJ d S )Nfoogreenz[0;32mfoo[0m)r   _color_textr    r   r   test_color_textr7   ?   s'    ug..2HHHHHHHr   c                  ^    t          j        dd           t          j        dddd           d S )Nr4   r5   barredr   color_printr    r   r   test_color_printr=   D   s2    w'''wu55555r   c                     t          j                    } t          j        dd|            |                                 dk    sJ t          j                    } t          j        ddddd|            |                                 dk    sJ d S )	Nr4   r5   filezfoo
r9   r:   bazz
foobarbaz
)ioStringIOr   r<   r*   streams    r   test_color_print2rF   K   s     []]FwV4444??''''[]]Fwue&IIII??------r   c                     t                      } t          j        dd|            |                                 dk    sJ t                      } t          j        ddddd|            |                                 dk    sJ d S )	Nr4   r5   r?   z[0;32mfoo[0m
r9   r:   rA   z [0;32mfoo[0m[0;31mbar[0mbaz
)r   r   r<   r*   rD   s    r   test_color_print3rH   W   s     YYFwV4444?? 88888YYFwue&IIII?? OOOOOOOr   c                  0    t          j        dd           d S )Nu	   überbærr:   r;   r    r   r   test_color_print_unicoderJ   d   s    U+++++r   c                  0    t          j        dd           d S )Nr4   unknownr;   r    r   r   test_color_print_invalid_colorrM   h   s    y)))))r   c                      t          d          } t          j        j        }t          j        d| |          5 }t	          |           ddd           dS # 1 swxY w Y   dS )zRegression 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)r@   charsN)r   r   Spinner_default_unicode_charsnext)rE   rO   r   s      r    test_spinner_non_unicode_consolerS   l   s     WFO2E	/fE	J	J	J aQ                 s   AAAc                      t          j        d          5 } t          d          D ]}|                                  	 d d d            d S # 1 swxY w Y   d S N2   )r   ProgressBarrangeupdate)r9   is     r   test_progress_barr[   {   s    		R	 	  Cr 	 	AJJLLLL	                 s   'A

AAc                  N    t          j        t          d                    D ]} d S rU   r   rW   rX   )xs    r   test_progress_bar2r_      s/     r++   r   c                  f    d } t           j                            | t          d                     d S )Nc                      d S r   r    )argskwargss     r   
do_nothingz&test_progress_bar3.<locals>.do_nothing   s    r   rV   )r   rW   maprX   )rd   s    r   test_progress_bar3rf      s8       Jb		22222r   c                  b    t          j        d          5 } 	 d d d            d S # 1 swxY w Y   d S )Nr   )r   rW   )r9   s    r   test_zero_progress_barrh      sw    		Q		 3                 s   $((c                      d} t          j        t          d                    D ]}| |z  } | dk    sJ d} t          j        d          D ]}| |z  } | dk    sJ d S )Nr   rV   i  r]   )sumr^   s     r   test_progress_bar_as_generatorrk      sz    
C r++  q$;;;;
C $$  q$;;;;;;r   c                     t          t          d                    } t          j                            t
          j        | dd          }| |k    sJ t          j                            t
          j        | dd          }| |k    sJ d S )Nd   
   T)stepmultiprocess   )listrX   r   rW   re   r   func)itemsresultresult1s      r   test_progress_bar_maprw      s    sE $$#U$ %  F F????!%%#U! &  G Gr   )secondsstring))iX/ z 1w 3d)M z 2d 4h)A  z 1h 5m)@   z 1m 4s)   z   15s)rq   z    2sc                 >    t          j        |           }||k    sJ d S r   )r   
human_time)rx   ry   r   s      r   test_human_timer      s+     #G,,Jr   )sizery   )irك z8.6M)rz   187k)r{   z3.9k)r|   z 64 )rq   z  2 rn   z 10Gc                 >    t          j        |           }||k    sJ d S r   )r   human_file_size)r   ry   r   s      r   test_human_file_sizer      s+     (..Jr   r   rV   rm   c                 ^    t          j        t          j        t          j        |           sJ d S r   )r+   r,   uUnitConversionErrorr   r   )r   s    r   test_bad_human_file_sizer      s(    =.0GNNNNNNNr   )%rB   sysr+   astropyr   r   astropy.utilsr   r)   r   rC   r   r0   markskipifplatform
startswithr7   r=   rF   rH   rJ   rM   rS   r[   r_   rf   rh   rk   rw   parametrizer   GBr   kmgr   r    r   r   <module>r      s   
			 



        ! ! ! ! ! ! $ $ $ $ $ $    bk   >  " CL++E22;STTI I UTI6 6 6	. 	. 	. CL++E22;STT	P 	P UT	P, , ,* * *      
3 3 3  
	 	 	     
 
   
 
 
 	adF
 
   
 
 
 "qt)S13Y!788O O 98O O Or   