
    yIf                    B   d Z ddlmZ ddlZddlZddlZddlZddlZddlm	Z	 ddl
mZmZmZmZmZ ddlmZ erddlmZ ddl
mZmZ ej        d	k    rddlZ G d
 dej                  ZddZ edd          ZdZ G d de          Z G d d          Zg dZd dZ dS )!zWA minimal non-colored version of https://pypi.org/project/halo, to track list progress.    )annotationsN)OrderedDict)IOTYPE_CHECKING
NamedTupleSequenceTypeVar)Fore)TracebackType)AnyClassVarwin32c                  >    e Zd ZU dej        fdej        fgZded<   dS )_CursorInfosizevisiblezClassVar[list[tuple[str, Any]]]_fields_N)__name__
__module____qualname__ctypesc_intc_byter   __annotations__     D/var/www/piapp/venv/lib/python3.11/site-packages/tox/util/spinner.pyr   r      s8         6<fl5KiY_YfMg4hhhhhhhr   r   charsSequence[str]fileIO[str]returnboolc                    t          |dd           }|.	 | D ]}|                    |           	 dS # t          $ r Y nw xY wdS )NencodingTF)getattrencodeUnicodeEncodeError)r   r    r%   chars       r   _file_support_encodingr*      sw    tZ..H	 & &H%%%%&
 4 " 	 	 	D	 5s   2 
??TSpinner)bound{Gz?c                  .    e Zd ZU ded<   ded<   ded<   dS )OutcomestrokfailskipN)r   r   r   r   r   r   r   r0   r0   +   s+         GGGIIIIIIIIr   r0   c                      e Zd ZU dZdZg dZded<   g dZded<    edd	d
          Z	 eddd          Z
	 	 	 	 	 d8d9dZd:dZd;dZd:d Zd<d"Zd=d%Zd>d,Zd?d.Zd@d0Zd@d1Zd@d2ZdAd5Zd:d6Zd:d7ZdS )Br,   z[Kx   )
u   ⠋u   ⠙u   ⠹u   ⠸u   ⠼u   ⠴u   ⠦u   ⠧u   ⠇u   ⠏zClassVar[list[str]]UNICODE_FRAMES)|-+x*ASCII_FRAMESu   ✔u   ✖u   ⚠)r2   r3   r4   r:   !?T皙?Nenabledr#   refresh_ratefloatcoloredstreamIO[str] | Nonetotal
int | Noner"   Nonec                N   || _         || _        || _        |t          j        n|}t          | j        |          r| j        n| j        | _        t          | j	        |          r| j	        n| j
        | _        || _        || _        d| _        t                      | _        d| _        d S )NTr   )
is_coloredrB   rA   sysstdoutr*   r7   r=   framesUNICODE_OUTCOMEASCII_OUTCOMEoutcomerE   rG   print_reportr   _envs_frame_index)selfrA   rB   rD   rE   rG   s         r   __init__zSpinner.__init__9   s     "(%~6-CDDWY_-`-`wd))fjfw$:4;OQW$X$XpD  ^b^p 	 
 '2}}
r   c                    | j         r;| j                            d           | j                            | j                   d S d S N)rA   rE   write
CLEAR_LINErU   s    r   clearzSpinner.clearP   sJ    < 	/Kd###Kdo.....	/ 	/r   c                    	 | j                             | j                   | j                                         rn|                                  N| S N)_stop_spinnerwaitrB   is_setrender_framer\   s    r   renderzSpinner.renderU   sY    	 ##D$5666!((** 		 
 r   c                    | j         rE|                                  | j                            d|                                             d S d S rX   )rA   r]   rE   rZ   framer\   s    r   rc   zSpinner.render_frame]   sP    < 	3JJLLLK14::<<1122222	3 	3r   r1   c                d   | j         | j                 }| xj        dz  c_        | xj        t          | j                   z  c_        | j        
d| j         nd}dt          | j                   | dd                    | j                   }t          j        || j        dz
  d          }| d	| S )
N   / [z] z | z...)widthplaceholder )	rN   rT   lenrG   rS   jointextwrapshorten	max_width)rU   rf   rG   
text_frames       r   rf   zSpinner.frameb   s    D-.QS---$(J$: DJ   KTZK%KK5::dj3I3IKK
%j8JX]^^^
&&*&&&r   rU   r+   c                   | j         r|                                  |                                  t          j                    | _        t          j        | j                  | _        d| j        _	        | j        
                                 | S )N)targetT)rA   disable_cursorrc   	threadingEventr`   Threadrd   _spinner_threaddaemonstartr\   s    r   	__enter__zSpinner.__enter__k   s}    < 	"!!!&_..(/t{CCC&*#""$$$r   exc_typetype[BaseException] | Noneexc_valBaseException | Noneexc_tbTracebackType | Nonec                   | j                                         sq| j        r2| j                                          | j                                         d| _        | j        r,|                                  |                                  d S d S d S )Nr   )	r`   rb   r{   setrp   rT   rA   r]   enable_cursor)rU   r   r   r   s       r   __exit__zSpinner.__exit__u   s     !((** 	%# ,"&&((($))+++ !D| %

""$$$$$	% 	%% %r   namec                <    t          j                    | j        |<   d S r_   )time	monotonicrS   )rU   r   s     r   addzSpinner.add   s    >++
4r   keyc                b    |                      |d| j        j         t          j                   d S )NzOK )finalizerQ   r2   r
   GREENrU   r   s     r   succeedzSpinner.succeed   s-    c222DJ?????r   c                b    |                      |d| j        j         t          j                   d S )NzFAIL )r   rQ   r3   r
   REDr   s     r   r3   zSpinner.fail   s.    c64<#466AAAAAr   c                b    |                      |d| j        j         t          j                   d S )NzSKIP )r   rQ   r4   r
   YELLOWr   s     r   r4   zSpinner.skip   s.    c64<#466DDDDDr   statuscolorc                t   | j                             |d           }| j        r|                                  | j        rz|t
          nt          j                    |z
  }| d| dt          |           }| j	        r| | t          j         }|t          j        z  }| j                            |           d S d S )Nz: z in )rS   poprA   r]   rR   MISS_DURATIONr   r   td_human_readablerK   r
   RESEToslineseprE   rZ   )rU   r   r   r   start_atdurationbases          r   r   zSpinner.finalize   s    :>>#t,,< 	JJLLL 	$(0(8}}dn>N>NQY>YHFFVFF):8)D)DFFD 433tz33BJDKd#####	$ 	$r   c                   | j                                         rt          j        dk    rt	                      }t
          j        j                            d          }t
          j        j        	                    |t          j
        |                     d|_        t
          j        j                            |t          j
        |                     d S | j                             d           d S d S )Nr   Fz[?25lrE   isattyrL   platformr   r   windllkernel32GetStdHandleGetConsoleCursorInfobyrefr   SetConsoleCursorInforZ   rU   cihandles      r   rw   zSpinner.disable_cursor   s    ; 	/|w&& ]]/<<SAA&;;FFLQSDTDTUUU"
&;;FFLQSDTDTUUUUU!!+.....	/ 	/r   c                   | j                                         rt          j        dk    rt	                      }t
          j        j                            d          }t
          j        j        	                    |t          j
        |                     d|_        t
          j        j                            |t          j
        |                     d S | j                             d           d S d S )Nr   r   Tz[?25hr   r   s      r   r   zSpinner.enable_cursor   s    ; 	/|w&& ]]/<<SAA&;;FFLQSDTDTUUU!
&;;FFLQSDTDTUUUUU!!+.....	/ 	/r   )Tr@   TNN)rA   r#   rB   rC   rD   r#   rE   rF   rG   rH   r"   rI   )r"   rI   )r"   r,   )r"   r1   )rU   r+   r"   r+   )r   r   r   r   r   r   r"   rI   )r   r1   r"   rI   )r   r1   r"   rI   )r   r1   r   r1   r   r1   r"   rI   )r   r   r   r[   rs   r7   r   r=   r0   rO   rP   rV   r]   rd   rc   rf   r~   r   r   r   r3   r4   r   rw   r   r   r   r   r,   r,   1   s        JI*p*p*pNpppp(A(A(ALAAAAgU???OGs3777M !!%     ./ / / /
   3 3 3 3
' ' ' '   % % % % , , , ,@ @ @ @B B B BE E E E
$ 
$ 
$ 
$	/ 	/ 	/ 	/	/ 	/ 	/ 	/ 	/ 	/r   ))dayiQ )houri  )minute<   )secondrh   secondsrC   r1   c                F   g }t           D ]\  }}d }|dk    r3| dk    s|s+| d                    d                              d          }n| |k    rt          | |          \  }} |d}|$|                    | d| |dk    rd	nd
            d                    |          S )Nr   r.   z.2f0.z.0frn   1rj   s)_PERIODSrstripdivmodappendrp   )r   textsperiod_nameperiod_seconds
period_strperiod_values         r   r   r      s    E'/ Z Z#^
(""4u#))0055<<SAAJJ&&$*7N$C$C!L'(..J!LLJXXXJ#<M<MbbSVXXYYY88E??r   )r   r   r    r!   r"   r#   )r   rC   r"   r1   )!__doc__
__future__r   r   rL   rq   rx   r   collectionsr   typingr   r   r   r   r	   coloramar
   typesr   r   r   r   r   	Structurer   r*   r+   r   r0   r,   r   r   r   r   r   <module>r      s   ] ] " " " " " " 				 



       # # # # # # C C C C C C C C C C C C C C       %######$$$$$$$$<7MMMi i i i if& i i i
 
 
 
 GCy!!!    j   @/ @/ @/ @/ @/ @/ @/ @/F       r   