
    gx+                         S SK r S SKrS SKrSSKJrJrJrJrJr  SSK	J
r
JrJrJr  SSKJrJr  Sr	\b  \" 5       r	 " S S\5      r " S S	\5      rg)
    N   )AnsiForeAnsiBack	AnsiStyleStyleBEL)enable_vt_processingWinTermWinColorWinStyle)windllwinapi_testc                   X    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 r\S 5       rSrg)StreamWrapper   z
Wraps a stream (such as stdout), acting as a transparent proxy for all
attribute access apart from method 'write()', which is delegated to our
Converter instance.
c                     Xl         X l        g N)_StreamWrapper__wrapped_StreamWrapper__convertor)selfwrapped	converters      M/home/matz/Project1/venv/lib/python3.13/site-packages/colorama/ansitowin32.py__init__StreamWrapper.__init__   s     !$    c                 .    [        U R                  U5      $ r   )getattrr   )r   names     r   __getattr__StreamWrapper.__getattr__   s    t~~t,,r   c                 :    U R                   R                  " U0 UD6$ r   )r   	__enter__r   argskwargss      r   r#   StreamWrapper.__enter__   s     ~~''888r   c                 :    U R                   R                  " U0 UD6$ r   )r   __exit__r$   s      r   r)   StreamWrapper.__exit__%   s    ~~&&777r   c                     Xl         g r   __dict__)r   states     r   __setstate__StreamWrapper.__setstate__(   s    r   c                     U R                   $ r   r,   r   s    r   __getstate__StreamWrapper.__getstate__+   s    }}r   c                 :    U R                   R                  U5        g r   )r   writer   texts     r   r6   StreamWrapper.write.   s    t$r   c                     U R                   nS[        R                  ;   a*  Ub'  U[        R                  L d  U[        R
                  L a  g UR                  nU" 5       $ ! [         a     gf = f)NPYCHARM_HOSTEDTF)r   osenvironsys
__stdout__
__stderr__isattyAttributeError)r   streamstream_isattys      r   rA   StreamWrapper.isatty1   sb    rzz)!v'?6S^^C[	#"MMM !?"  		s   A 
A,+A,c                 `    U R                   n UR                  $ ! [        [        4 a     gf = fNT)r   closedrB   
ValueError)r   rC   s     r   rH   StreamWrapper.closed=   s3    	==  
+ 		s    --)__convertorr-   	__wrappedN)__name__
__module____qualname____firstlineno____doc__r   r    r#   r)   r/   r3   r6   rA   propertyrH   __static_attributes__ r   r   r   r      sC    
%-98%
#  r   r   c                       \ rS rSrSr\R                  " S5      r\R                  " S5      rSS jr	S r
S rS	 rS
 rS rS rS rS rS rS rS rSrg)AnsiToWin32H   z
Implements a 'write()' method which, on Windows, will strip ANSI character
sequences from the text, and if outputting to a tty, will convert them into
win32 function calls.
z?\[((?:\d|;)*)([a-zA-Z])?z?\]([^]*)()?Nc                 ^   Xl         X@l        [        X5      U l        [        R
                  S:H  nU=(       a
    [        5       n UR                  5       nU(       + =(       d    [        U5      nU R                  R                  (       + =(       a    U R                  R                  5       n	U=(       a    U(       + n
Uc  U
=(       d    U	(       + nX0l        Uc  U
=(       a    U	nX l        U R                  5       U l        U R                   [         R"                  L U l        g ! [         a    Sn Nf = f)Nnt)r   	autoresetr   rC   r<   r   r   fileno	Exceptionr	   rH   rA   stripconvertget_win32_callswin32_callsr>   stderr	on_stderr)r   r   r_   r^   r[   
on_windowsconversion_supportedfdsystem_has_native_ansihave_ttyneed_conversions              r   r   AnsiToWin32.__init__Q   s     # $G2WW_

  *;km	!B &0!K3G3K{{)))Bdkk.@.@.B.M7M3M =#38|E
 ?%2(G  //1 3)  	B	s   D D,+D,c                 f    U R                   =(       d    U R                  =(       d    U R                  $ )a:  
True if this class is actually needed. If false, then the output
stream will not be affected, nor will win32 calls be issued, so
wrapping stdout is not actually required. This will generally be
False on non-Windows platforms, unless optional functionality like
autoreset has been requested using kwargs to init()
)r_   r^   r[   r2   s    r   should_wrapAnsiToWin32.should_wrapy   s      ||;tzz;T^^;r   c                    U R                   (       Ga  [        (       Ga  0 [        R                  [        R                  4_[        R
                  [        R                  [        R
                  4_[        R                  [        R                  [        R                  4_[        R                  [        R                  [        R                  4_[        R                  [        R                  [        R                  4_[        R                  [        R                  [        R                  4_[        R                  [        R                  [        R                  4_[        R                   [        R                  [        R                   4_[        R"                  [        R                  [        R"                  4_[        R$                  [        R                  [        R$                  4_[        R&                  [        R                  [        R&                  4_[        R(                  [        R                  [        R*                  4_[        R,                  [        R                  4_[        R.                  [        R                  [        R                  S4_[        R0                  [        R                  [        R                  S4_[        R2                  [        R                  [        R                  S4_[        R4                  [        R                  [        R                   S4_0 [        R6                  [        R                  [        R"                  S4_[        R8                  [        R                  [        R$                  S4_[        R:                  [        R                  [        R&                  S4_[        R<                  [        R                  [        R*                  S4_[>        R                  [        R@                  [        R                  4_[>        R                  [        R@                  [        R                  4_[>        R                  [        R@                  [        R                  4_[>        R                   [        R@                  [        R                   4_[>        R"                  [        R@                  [        R"                  4_[>        R$                  [        R@                  [        R$                  4_[>        R&                  [        R@                  [        R&                  4_[>        R(                  [        R@                  [        R*                  4_[>        R,                  [        R@                  4_[>        R.                  [        R@                  [        R                  S4_[>        R0                  [        R@                  [        R                  S4_[>        R2                  [        R@                  [        R                  S4_[>        R4                  [        R@                  [        R                   S4_E[>        R6                  [        R@                  [        R"                  S4[>        R8                  [        R@                  [        R$                  S4[>        R:                  [        R@                  [        R&                  S4[>        R<                  [        R@                  [        R*                  S40E$ [C        5       $ rG   )"r_   wintermr   	RESET_ALL	reset_allBRIGHTstyler   DIMNORMALr   BLACKforer   REDGREENYELLOWBLUEMAGENTACYANWHITEGREYRESETLIGHTBLACK_EXLIGHTRED_EXLIGHTGREEN_EXLIGHTYELLOW_EXLIGHTBLUE_EXLIGHTMAGENTA_EXLIGHTCYAN_EXLIGHTWHITE_EXr   backdictr2   s    r   r`   AnsiToWin32.get_win32_calls   s   <<<GG'##g&7&7%:'  7==(//"B' x?'   7==(//"B	'
 x~~ >' w||X\\:' x~~ >' ',,!@' hmm<'   7<<1A1A"B' hmm<' x}} ='  0' &&x~~t(L' $$w||X\\4&H'  &&x~~t(L!'" ''',,)N#'$ %%hmmT'J%'& ((7<<9I9I4*P''( %%hmmT'J)'* &&x}}d(K+', x~~ >-'. w||X\\:/'0 x~~ >1'2 ',,!@3'4 hmm<5'6   7<<1A1A"B7'8 hmm<9': x}} =;'<  0='> &&x~~t(L?'@ $$w||X\\4&HA'B &&x~~t(LC'D ''',,)NE'F %%hmmT'J((7<<9I9I4*P%%hmmT'J&&x}}d(KM' 'P vr   c                    U R                   (       d  U R                  (       a  U R                  U5        O5U R                  R	                  U5        U R                  R                  5         U R                  (       a  U R                  5         g g r   )r^   r_   write_and_convertr   r6   flushr[   rq   r7   s     r   r6   AnsiToWin32.write   sU    ::""4(LLt$LL >>NN r   c                     U R                   (       a  U R                  SS5        g U R                  (       dF  U R                  R                  (       d*  U R
                  R                  [        R                  5        g g g )Nmr   )	r_   
call_win32r^   rC   rH   r   r6   r   rp   r2   s    r   rq   AnsiToWin32.reset_all   sG    <<OOC&DKK$6$6LLu/ %7r   c                 *   SnU R                  U5      nU R                  R                  U5       HF  nUR                  5       u  pEU R	                  XU5        U R
                  " UR                  5       6   UnMH     U R	                  X[        U5      5        g)z
Write the given text to our wrapped stream, stripping any ANSI
sequences from the text, and optionally converting them into win32
calls.
r   N)convert_oscANSI_CSI_REfinditerspanwrite_plain_textconvert_ansigroupslen)r   r8   cursormatchstartends         r   r   AnsiToWin32.write_and_convert   s     %%%..t4EJE!!$6u||~.F	 5
 	dCI6r   c                 ~    X#:  a8  U R                   R                  XU 5        U R                   R                  5         g g r   )r   r6   r   )r   r8   r   r   s       r   r   AnsiToWin32.write_plain_text   s2    ;LLt#/LL  r   c                 l    U R                   (       a#  U R                  X!5      nU R                  X#5        g g r   )r_   extract_paramsr   )r   paramstringcommandparamss       r   r   AnsiToWin32.convert_ansi   s*    <<((>FOOG, r   c                 &   US;   aH  [        S UR                  S5       5       5      n[        U5      S:  a  US-   n[        U5      S:  a  M  U$ [        S UR                  S5       5       5      n[        U5      S:X  a  US;   a  S	nU$ US
;   a  SnU$ )NHfc              3   Z   #    U  H!  n[        U5      S :w  a  [        U5      OSv   M#     g7f)r   r   Nr   int.0ps     r   	<genexpr>-AnsiToWin32.extract_params.<locals>.<genexpr>   s%     XAWASVq[3q6a7AWs   )+;   )r   c              3   Z   #    U  H!  n[        U5      S :w  d  M  [        U5      v   M#     g7f)r   Nr   r   s     r   r   r      s$     Q+AaSVq[63q66+As   ++r   JKmr   ABCD)tuplesplitr   )r   r   r   r   s       r   r   AnsiToWin32.extract_params   s    d?XARARSVAWXXFf+/$ f+/  Q;+<+<S+AQQF6{ae#!F  &!Fr   c                    US:X  aO  U HH  nX0R                   ;   d  M  U R                   U   nUS   nUSS  n[        U R                  S9nU" U0 UD6  MJ     g US;   a"  [        R	                  US   U R                  S9  g US;   a"  [        R                  US   U R                  S9  g US;   a  [        R                  X R                  S9  g US;   a:  US   nSU* 4SU4US4U* S4S	.U   u  p[        R                  XU R                  S9  g g )
Nr   r   r   )rc   JKr   r   )ABCD)ra   r   rc   ro   erase_screen
erase_lineset_cursor_positioncursor_adjust)r   r   r   param	func_argsfuncr%   r&   nxys              r   r   AnsiToWin32.call_win32   s   c>,,, $ 0 0 7I$Q<D$QR=D!DNN;F$)&)   ^  dnn E^vayDNNC_''..'Iq	AaR1vQF1"aI'RDA!!!$..!A	 r   c                 T   U R                   R                  U5       H  nUR                  5       u  p4US U XS  -   nUR                  5       u  pVU[        :X  d  M=  UR                  S5      S:X  d  MT  UR                  S5      nUS   S;   d  Mp  [        R                  US   5        M     U$ )Nr   r   r   02)	ANSI_OSC_REr   r   r   r   countr   ro   	set_title)r   r8   r   r   r   r   r   r   s           r   r   AnsiToWin32.convert_osc  s    %%..t4EJE<$t*,D#(<<> K#~$$S)Q.(..s3F ayD())&)4 5 r   c                 8    U R                   R                  5         g r   )r   r   r2   s    r   r   AnsiToWin32.flush  s    r   )r[   r_   rc   rC   r^   ra   r   )NNF)rM   rN   rO   rP   rQ   recompiler   r   r   rl   r`   r6   rq   r   r   r   r   r   r   r   rS   rT   r   r   rV   rV   H   sf    
 **FGK**<=K&4P<*X07 !-$B, r   rV   )r   r>   r<   ansir   r   r   r   r   ro   r	   r
   r   r   win32r   r   objectr   rV   rT   r   r   <module>r      sL    	 
 	 ; ; F F & 	iG5F 5pM& Mr   