
    ^h`&                       S SK Jr  S SKJr  S SKJr  S SKJrJr  S SKJ	r
  SSKJr  SS	/r " S
 S5      r\R                  " 5        V Vs0 s H  u  pX_M	     snn r\R                  " 5        V Vs0 s H  u  pX_M	     snn r0 r	\" \
R&                  5       H  u  ru  rrrS\S \S \S 3\	\'   M     SS jr " S S\5      r\" 5       rgs  snn f s  snn f )    )annotations)	Formatter)	Generator)BG_ANSI_COLORSFG_ANSI_COLORS)_256_colors   )StyleAndTextTuplesANSIansi_escapec                  h    \ rS rSrSrSS jrSS jrSS jrSS jrSS jr	SS jr
SS	 jrSS
 jrSrg)r      a  
ANSI formatted text.
Take something ANSI escaped text, for use as a formatted string. E.g.

::

    ANSI('\x1b[31mhello \x1b[32mworld')

Characters between ``\001`` and ``\002`` are supposed to have a zero width
when printed, but these are literally sent to the terminal output. This can
be used for instance, for inserting Final Term prompt commands.  They will
be translated into a prompt_toolkit '[ZeroWidthEscape]' fragment.
c                    Xl         / U l        S U l        S U l        SU l        SU l        SU l        SU l        SU l        SU l	        SU l
        SU l        U R                  5       nUR                  S 5        U H  nUR                  U5        M     g )NF)value_formatted_text_color_bgcolor_bold_dim
_underline_strike_italic_blink_reverse_hidden_parse_corotsend)selfr   parsercs       \/home/james-whalen/.local/lib/python3.13/site-packages/prompt_toolkit/formatted_text/ansi.py__init__ANSI.__init__    s    
35 #'$(
	 ""$DAKKN     c              #    #    SnU R                   n SnSv nUS:X  a6  SnUS:w  a.  Sv nUS:X  a  UR                  SU45        Sv nOXT-  nUS:w  a  M.  US:X  a  Sv nUS	:X  a  SnO
MX  US
:X  a  SnU(       a  Sn/ n Sv n	U	R                  5       (       a  Xy-  nOUR                  [        [	        U=(       d    S5      S5      5        U	S:X  a  SnOXU	S:X  a"  U R                  U5        U R                  5       nODU	S:X  a)  [        US   5       H  n
UR                  US45        M     OOM  UR                  X45        GM.  7f)z2
Coroutine that parses the ANSI escape sequences.
 TFNz[ZeroWidthEscape][   r   i'  ;mC )r   appendisdigitminint_select_graphic_rendition_create_style_stringrange)r   styleformatted_textcsir    escaped_textsquare_bracketcurrentparamscharis              r!   r   ANSI._parse_corot6   sr     -- CA F{!6kAF{&--/BL.QR!$) 6k F{!&!S(Cf D ||~~
 c#gl*;T&BC  3;&(G "S[ ::6B$($=$=$?E! "S[%*6!9%5 . 5 5ucl C &6 " "A P %%uj1Y s   AE C,E c                   U(       d  S/nO[        USSS2   5      nU(       Ga  UR                  5       nU[        ;   a  [        U   U l        GO`U[        ;   a  [        U   U l        GOFUS:X  a	  SU l        GO7US:X  a	  SU l        GO(US:X  a	  SU l        GOUS:X  a	  SU l	        GO
US	:X  a	  SU l
        GOUS
:X  a	  SU l
        GOUS:X  a	  SU l        GOUS:X  a	  SU l        GOUS:X  a	  SU l        GOUS:X  a  SU l        SU l        GOUS:X  a	  SU l        GOUS:X  a	  SU l	        GOUS:X  a	  SU l
        GO|US:X  a	  SU l        GOmUS:X  a	  SU l        GO^US:X  a	  SU l        GOOU(       dH  SU l        SU l        SU l        SU l        SU l	        SU l        SU l        SU l
        SU l        SU l        GO US;   a  [        U5      S:  a  UR                  5       nUS	:X  ap  [        U5      S:  aa  US:X  a+  UR                  5       n[        R!                  U5      U l        O0US:X  a*  UR                  5       n[        R!                  U5      U l        US:X  a_  [        U5      S:  aP   SUR                  5       S UR                  5       S UR                  5       S 3nUS:X  a  XPl        OUS:X  a  XPl        U(       a  GM  gg! ["         a     Nf = f)z8
Taken a list of graphics attributes and apply changes.
r   Nr	   T                     	      F                  )&   0   rR   rS   #02x)listpop
_fg_colorsr   
_bg_colorsr   r   r   r   r   r   r   r   r   lenr   get
IndexError)r   attrsattrnr-   	color_strs         r!   r4   ANSI._select_graphic_rendition   s{    CEtt%E99;Dz!(.# *4 0!
 	#"&"" $##"
!	$"'# %$$" $"
!	"'$$# %$!c%j1nIIK 6c%jAorz!IIK&1ooa&8!IIK(3(: 6c%jAo
6		C0S0A%))+cARS "  2:*3K!RZ,5M[ eN & s    6J; ;
KKc                   / nU R                   (       a  UR                  U R                   5        U R                  (       a  UR                  SU R                  -   5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R
                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S5        U R                  (       a  UR                  S	5        S
R                  U5      $ )zG
Turn current style flags into a string for usage in a formatted text.
zbg:bolddim	underlinestrikeitalicblinkreversehiddenr/   )r   r0   r   r   r   r   r   r   r   r   r   join)r   results     r!   r5   ANSI._create_style_string   s     ;;MM$++&==MM%$--/0::MM&!99MM% ??MM+&<<MM(#<<MM(#;;MM'"==MM)$<<MM(#xxr$   c                $    SU R                   < S3$ )NzANSI())r   r   s    r!   __repr__ANSI.__repr__   s    tzznA&&r$   c                    U R                   $ N)r   rp   s    r!   __pt_formatted_text__ANSI.__pt_formatted_text__  s    ###r$   c                T    [        [        R                  U R                  X5      5      $ )zn
Like `str.format`, but make sure that the arguments are properly
escaped. (No ANSI escapes can be injected.)
)r   	FORMATTERvformatr   )r   argskwargss      r!   formatANSI.format  s     
 I%%djj$?@@r$   c                    [        U[        5      (       d  U4n[        S U 5       5      n[        U R                  U-  5      $ )z
ANSI('<b>%s</b>') % value
c              3  8   #    U  H  n[        U5      v   M     g 7frt   )r   ).0r?   s     r!   	<genexpr>ANSI.__mod__.<locals>.<genexpr>  s     4ek!nnes   )
isinstancetupler   r   )r   r   s     r!   __mod__ANSI.__mod__  s<     %''HE4e44DJJ&''r$   )r   r   r   r   r   r   r   r   r   r   r   r   N)r   strreturnNone)r   zGenerator[None, str, None])r]   z	list[int]r   r   )r   r   )r   r
   )rz   r   r{   r   r   r   )r   objectr   r   )__name__
__module____qualname____firstlineno____doc__r"   r   r4   r5   rq   ru   r|   r   __static_attributes__ r$   r!   r   r      s4    ,S2jV6p 8'$A(r$   rT   rU   c                X    [        U 5      R                  SS5      R                  SS5      $ )z,
Replace characters with a special meaning.
r)   ?)r   replace)texts    r!   r   r   "  s(     t9VS)11$<<r$   c                      \ rS rSrSS jrSrg)ANSIFormatteri)  c                *    [        [        X5      5      $ rt   )r   r|   )r   r   format_specs      r!   format_fieldANSIFormatter.format_field*  s    6%566r$   r   N)r   r   r   r   r   r   )r   r   r   r   r   r   r   r$   r!   r   r   )  s    7r$   r   N)r   r   r   r   )
__future__r   stringr   typingr   prompt_toolkit.output.vt100r   r   r   _256_colors_tablebaser
   __all__r   itemsrX   rY   	enumeratecolorsr?   rgbr   r   rx   )kvs   00r!   <module>r      s    "   F H $ C( C(N  .33565tqad56
-33565tqad56
 /667LAy1a3#wqg.KN 8=7I 7
 O	- 76s   	C
/C