Ë
    äU.j�0  ã                  ó  — d Z ddlmZ ddlZddlmZ ddlmZmZm	Z	 erddlm
Z
  G d„ de«      Z ej                  d	«      Z ej                  d
«      ZdZ G d„ de	«      Z e«       Zdd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Zdd„Zdd„Zy)as  
SGR (Select Graphic Rendition) state tracking for terminal escape sequences.

This module provides functions for tracking and propagating terminal styling (bold, italic, colors,
etc.) via public API propagate_sgr(), and its dependent functions, cut() and wrap(). It only has
attributes necessary to perform its functions, eg 'RED' and 'BLUE' attributes are not defined.
é    )ÚannotationsN)ÚIntEnum)ÚTYPE_CHECKINGÚIteratorÚ
NamedTuple)ÚSequencec                  óˆ   — e Zd ZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!y )!Ú_SGRzÆ
    SGR (Select Graphic Rendition) parameter codes.

    References:
    - https://invisible-island.net/xterm/ctlseqs/ctlseqs.html
    - https://github.com/tehmaze/ansi/tree/master/ansi/colour
    r   é   é   é   é   é   é   é   é   é	   é   é   é   é   é   é   é   é   é   é%   é&   é'   é(   é/   é0   é1   éZ   éa   éd   ék   N)"Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚRESETÚBOLDÚDIMÚITALICÚ	UNDERLINEÚBLINKÚRAPID_BLINKÚINVERSEÚHIDDENÚSTRIKETHROUGHÚDOUBLE_UNDERLINEÚBOLD_DIM_OFFÚ
ITALIC_OFFÚUNDERLINE_OFFÚ	BLINK_OFFÚINVERSE_OFFÚ
HIDDEN_OFFÚSTRIKETHROUGH_OFFÚFG_BLACKÚFG_WHITEÚFG_EXTENDEDÚ
FG_DEFAULTÚBG_BLACKÚBG_WHITEÚBG_EXTENDEDÚ
BG_DEFAULTÚFG_BRIGHT_BLACKÚFG_BRIGHT_WHITEÚBG_BRIGHT_BLACKÚBG_BRIGHT_WHITE© ó    úSC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\wcwidth/sgr_state.pyr
   r
      s¡   „ ñð €EØ€DØ
€CØ€FØ€IØ€EØ€KØ€GØ€FØ€MØÐØ€LØ€JØ€MØ€IØ€KØ€JØÐØ€HØ€HØ€KØ€JØ€HØ€HØ€KØ€JØ€OØ€OØ€OØ�OrK   r
   z\x1b\[([\d;:]*)mz\x1b\[[\d;:]*mz[0mc                  óº   — e Zd ZU dZdZded<   dZded<   dZded<   dZded<   dZ	ded<   dZ
ded	<   dZded
<   dZded<   dZded<   dZded<   dZded<   dZded<   y)Ú	_SGRStateaú  
    Track active SGR terminal attributes by category (immutable).

    :param bold: Bold attribute (SGR 1).
    :param dim: Dim/faint attribute (SGR 2).
    :param italic: Italic attribute (SGR 3).
    :param underline: Underline attribute (SGR 4).
    :param blink: Slow blink attribute (SGR 5).
    :param rapid_blink: Rapid blink attribute (SGR 6).
    :param inverse: Inverse/reverse attribute (SGR 7).
    :param hidden: Hidden/invisible attribute (SGR 8).
    :param strikethrough: Strikethrough attribute (SGR 9).
    :param double_underline: Double underline attribute (SGR 21).
    :param foreground: Foreground color as tuple of SGR params, or None for default.
    :param background: Background color as tuple of SGR params, or None for default.
    FÚboolÚboldÚdimÚitalicÚ	underlineÚblinkÚrapid_blinkÚinverseÚhiddenÚstrikethroughÚdouble_underlineNútuple[int, ...] | NoneÚ
foregroundÚ
background)r(   r)   r*   r+   rP   Ú__annotations__rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   r\   rJ   rK   rL   rN   rN   K   s„   … ñð" €Dˆ$ÓØ€CˆÓØ€FˆDÓØ€IˆtÓØ€Eˆ4ÓØ€K�ÓØ€GˆTÓØ€FˆDÓØ€M�4ÓØ"Ð�dÓ"Ø)-€JÐ&Ó-Ø)-€JÐ&Ô-rK   rN   c                óV  — | j                   xsœ | j                  xsŽ | j                  xs€ | j                  xsr | j                  xsd | j
                  xsV | j                  xsH | j                  xs: | j                  xs, | j                  xs | j                  duxs | j                  duS )z•
    Return True if any attributes are set.

    :param state: The SGR state to check.
    :returns: True if any attribute differs from default.
    N)rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   r\   )Ústates    rL   Ú_sgr_state_is_activer`   o   sµ   € ð �J‰Jò L˜%Ÿ)™)ò L u§|¡|ò L°u·±ò LØ�{‰{òLØ#×/Ñ/òLØ38·=±=òLØDIÇLÁLòLà×"Ñ"òLà&+×&<Ñ&<òLð ×Ñ tÐ+òLð 05×/?Ñ/?ÀtÐ/KðMrK   c                óz  — t        | «      sy| j                  df| j                  df| j                  df| j                  df| j
                  df| j                  df| j                  df| j                  d	f| j                  d
f| j                  dfg
}|D ��cg c]
  \  }}|sŒ	|‘Œ }}}| j                  �1|j                  dj                  d„ | j                  D «       «      «       | j                  �1|j                  dj                  d„ | j                  D «       «      «       ddj                  |«      › d�S c c}}w )zÆ
    Generate minimal SGR sequence to restore this state from reset.

    :param state: The SGR state to convert.
    :returns: SGR escape sequence string, or empty string if no attributes set.
    Ú Ú1Ú2Ú3Ú4Ú5Ú6Ú7Ú8Ú9Ú21Ú;c              3  ó2   K  — | ]  }t        |«      –— Œ y ­w©N©Ústr©Ú.0Úps     rL   Ú	<genexpr>z)_sgr_state_to_sequence.<locals>.<genexpr>‘   ó   è ø€ Ð@Ñ/?¨!œs 1ŸvÑ/?ùó   ‚c              3  ó2   K  — | ]  }t        |«      –— Œ y ­wro   rp   rr   s     rL   ru   z)_sgr_state_to_sequence.<locals>.<genexpr>“   rv   rw   z[Úm)r`   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   r[   ÚappendÚjoinr\   )r_   Ú
bool_attrsÚactiveÚcodeÚparamss        rL   Ú_sgr_state_to_sequencer€   |   s&  € ô   Ô&Øð 
�‰�SÐ˜EŸI™I sÐ+¨e¯l©l¸CÐ-@Ø	�‰˜#Ð §¡¨cÐ 2°U×5FÑ5FÈÐ4LØ	�‰˜Ð˜uŸ|™|¨SÐ1°E×4GÑ4GÈÐ3MØ	×	Ñ	 Ð&ð	€Jñ (2Ô<¡z‘|�v˜t²VŠd z€FÑ<ð ×ÑÐ#Ø�‰�c—h‘hÑ@¨u×/?Ò/?Ó@Ó@ÔAØ×ÑÐ#Ø�‰�c—h‘hÑ@¨u×/?Ò/?Ó@Ó@ÔAà�3—8‘8˜FÓ#Ð$ AÐ&Ð&ùó =s   Â
D7Â!D7c                ón  — t         j                  | «      }|sg S |j                  d«      }|sdgS g }|j                  d«      D ]j  }d|v rF|j                  d«      D �cg c]  }|rt	        |«      nd‘Œ }}|j                  t        |«      «       ŒM|j                  |rt	        |«      nd«       Œl |S c c}w )aº  
    Parse SGR sequence and return list of parameter values.

    Handles compound sequences like ``\x1b[1;31;4m`` -> [1, 31, 4].
    Empty params (e.g., ``\x1b[m``) are treated as [0] (reset).
    Colon-separated extended colors like ``\x1b[38:2::255:0:0m`` are returned
    as tuples: [(38, 2, 255, 0, 0)].

    :param sequence: SGR escape sequence string.
    :returns: List of integer parameters or tuples for colon-separated colors.
    r   r   rm   Ú:)Ú_SGR_PATTERNÚmatchÚgroupÚsplitÚintrz   Útuple)Úsequencer„   Ú
params_strÚresultÚparamrt   Úpartss          rL   Ú_parse_sgr_paramsrŽ   ˜   s±   € ô ×Ñ˜xÓ(€EÙØˆ	Ø—‘˜Q“€JÙØˆsˆ
Ø*,€FØ×!Ñ! #Ö&ˆØ�%‰<ð 27·±¸SÔ1AÓBÑ1A¨A™q”S˜”V aÑ'Ð1AˆEÐBØ�M‰Mœ% ›,Õ'à�M‰M©œ#˜eœ*°1Õ5ð 'ð €Mùò	 Cs   ÁB2c                óŠ  — 	 t        | «      }t        |t        «      ry|dk(  r*t        | «      }t        |t        «      ryt        |«      d|fS |dk(  rbt        | «      t        | «      t        | «      }}}t        |t        «      s t        |t        «      st        |t        «      ryt        |«      d|||fS 	 y# t        $ r Y yw xY w)a9  
    Parse extended color (256-color or RGB) from parameter iterator.

    :param params: Iterator of remaining SGR parameters (semicolon-separated format).
    :param base: Base code (38 for foreground, 48 for background).
    :returns: Color tuple like (38, 5, N) or (38, 2, R, G, B), or None if malformed.
    Nr   r   )ÚnextÚ
isinstancerˆ   r‡   ÚStopIteration)r   ÚbaseÚmodeÚnÚrÚgÚbs          rL   Ú_parse_extended_colorr™   ¶   sÀ   € ðÜ�F‹|ˆÜ�dœEÔ"ØØ�1Š9Ü�V“ˆAÜ˜!œUÔ#ØÜ˜“I˜q !Ð$Ð$Ø�1Š9Ü˜6“l¤D¨£L´$°v³,�!ˆqˆAÜ˜!œUÔ#¤z°!´UÔ';¼zÈ!ÌUÔ?SØÜ˜“I˜q ! Q¨Ð*Ð*ð	 ð øô ò ØØðús(   ‚B6 ž B6 ¿B6 ÁAB6 Â$B6 Â6	CÃCc                óô	  — t        |«      }t        |«      }|D �]Û  }t        |t        «      rnt	        |«      dk\  r)|d   t
        j                  k(  r| j                  |¬«      } n6t	        |«      dk\  r(|d   t
        j                  k(  r| j                  |¬«      } Œ‚|t
        j                  k(  rt        } Œœ|t
        j                  k(  r| j                  d¬«      } ŒÂ|t
        j                  k(  r| j                  d¬«      } Œè|t
        j                  k(  r| j                  d¬«      } �Œ|t
        j                  k(  r| j                  d¬	«      } �Œ6|t
        j                  k(  r| j                  d¬
«      } �Œ]|t
        j                   k(  r| j                  d¬«      } �Œ„|t
        j"                  k(  r| j                  d¬«      } �Œ«|t
        j$                  k(  r| j                  d¬«      } �ŒÒ|t
        j&                  k(  r| j                  d¬«      } �Œù|t
        j(                  k(  r| j                  d¬«      } �Œ |t
        j*                  k(  r| j                  dd¬«      } �ŒH|t
        j,                  k(  r| j                  d¬«      } �Œo|t
        j.                  k(  r| j                  dd¬«      } �Œ—|t
        j0                  k(  r| j                  dd¬«      } �Œ¿|t
        j2                  k(  r| j                  d¬«      } �Œæ|t
        j4                  k(  r| j                  d¬«      } �Œ|t
        j6                  k(  r| j                  d¬«      } �Œ4t
        j8                  |cxk  rt
        j:                  k  s,n t
        j<                  |cxk  rt
        j>                  k  rn n| j                  |f¬«      } �Œœt
        j@                  |cxk  rt
        jB                  k  s,n t
        jD                  |cxk  rt
        jF                  k  rn n| j                  |f¬«      } �Œ|t
        jH                  k(  r| j                  d¬«      } �Œ+|t
        jJ                  k(  r| j                  d¬«      } �ŒR|t
        j                  k(  r2tM        |t
        j                  «      x}s�Œƒ| j                  |¬«      } �Œ—|t
        j                  k(  s�Œ¬tM        |t
        j                  «      x}s�ŒÊ| j                  |¬«      } �ŒÞ | S )zÏ
    Parse SGR sequence and return new state with updates applied.

    :param state: Current SGR state.
    :param sequence: SGR escape sequence string.
    :returns: New SGRState with updates applied.
    r   r   )r[   )r\   T)rP   )rQ   )rR   )rS   )rT   )rU   )rV   )rW   )rX   )rY   F)rP   rQ   )rS   rY   )rT   rU   N)'rŽ   Úiterr‘   rˆ   Úlenr
   r@   Ú_replacerD   r,   Ú_SGR_STATE_DEFAULTr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   rF   rG   rB   rC   rH   rI   rA   rE   r™   )r_   r‰   Úparams_listr   rt   Úcolors         rL   Ú_sgr_state_updater¡   Ó   s±  € ô $ HÓ-€KÜ�+Ó€FÜˆä�aœÔÜ�1‹v˜Š{˜q ™t¤t×'7Ñ'7Ò7àŸ™°!˜Ó4‘Ü�Q“˜1’  1¡¬×)9Ñ)9Ò!9àŸ™°!˜Ó4�ØØ”—
‘
Š?Ü&‰Eà”$—)‘)Š^Ø—N‘N¨�NÓ-‰EØ”$—(‘(Š]Ø—N‘N t�NÓ,‰EØ”$—+‘+ÒØ—N‘N¨$�NÓ/ŠEØ”$—.‘.Ò Ø—N‘N¨T�NÓ2ŠEØ”$—*‘*Š_Ø—N‘N¨�NÓ.ŠEØ”$×"Ñ"Ò"Ø—N‘N¨t�NÓ4ŠEØ”$—,‘,ÒØ—N‘N¨4�NÓ0ŠEØ”$—+‘+ÒØ—N‘N¨$�NÓ/ŠEØ”$×$Ñ$Ò$Ø—N‘N°�NÓ6ŠEØ”$×'Ñ'Ò'Ø—N‘N°D�NÓ9ŠEà”$×#Ñ#Ò#Ø—N‘N¨°5�NÓ9ŠEØ”$—/‘/Ò!Ø—N‘N¨%�NÓ0ŠEØ”$×$Ñ$Ò$Ø—N‘N¨UÀU�NÓKŠEØ”$—.‘.Ò Ø—N‘N¨¸E�NÓBŠEØ”$×"Ñ"Ò"Ø—N‘N¨5�NÓ1ŠEØ”$—/‘/Ò!Ø—N‘N¨%�NÓ0ŠEØ”$×(Ñ(Ò(Ø—N‘N°�NÓ7ŠEä�m‰m˜qÔ1¤D§M¡MÔ1Ü×%Ñ%¨ÔB¬d×.BÑ.BÕBØ—N‘N¨q¨d�NÓ3ŠEÜ�m‰m˜qÔ1¤D§M¡MÔ1Ü×%Ñ%¨ÔB¬d×.BÑ.BÕBØ—N‘N¨q¨d�NÓ3ŠEØ”$—/‘/Ò!Ø—N‘N¨d�NÓ3ŠEØ”$—/‘/Ò!Ø—N‘N¨d�NÓ3ŠEà”$×"Ñ"Ò"Ü-¨f´d×6FÑ6FÓGÐGˆuÒGØŸ™°%˜Ó8’Ø”$×"Ñ"Ô"Ü-¨f´d×6FÑ6FÓGÐGˆuÒGØŸ™°%˜Ó8’ðC ðD €LrK   c                ó<  — t        d„ | D «       «      r| st        | «      S g }t        }| D ]o  }t        |«      }t        j                  |«      D ]  }t        ||j                  «       «      }Œ |r||z   n|}t        |«      r	|t        z   }|j                  |«       Œq |S )a'  
    Propagate SGR codes across wrapped lines.

    When text with SGR styling is wrapped across multiple lines, each line
    needs to be self-contained for proper display. This function:

    - Ends each line with ``\x1b[0m`` if styles are active (prevents bleeding)
    - Starts each subsequent line with the active style restored

    :param lines: List of text lines, possibly containing SGR sequences.
    :returns: List of lines with SGR codes propagated.

    Example::

        >>> propagate_sgr(['\x1b[31mhello', 'world\x1b[0m'])
        ['\x1b[31mhello\x1b[0m', '\x1b[31mworld\x1b[0m']

    This is useful in cases of making special editors and viewers, and is used for the
    default modes (propagate_sgr=True) of :func:`wcwidth.wrap` and :func:`wcwidth.clip`.

    When wrapping and clipping text containing SGR sequences, maybe a previous line enabled the BLUE
    color--if we are viewing *only* the line following, we would want the carry over the BLUE color,
    and all lines with sequences should end with terminating reset (``\x1b[0m``).
    c              3  óF   K  — | ]  }t         j                  |«      –— Œ y ­wro   )Ú_SGR_QUICK_CHECKÚsearch)rs   Úlines     rL   ru   z propagate_sgr.<locals>.<genexpr>>  s   è ø€ Ð?¹°Ô×&Ñ& t×,¹ùs   ‚!)ÚanyÚlistrž   r€   rƒ   Úfinditerr¡   r…   r`   Ú
_SGR_RESETrz   )Úlinesr‹   r_   r¦   Úprefixr„   Úoutput_lines          rL   Úpropagate_sgrr®   $  s™   € ô4 Ñ?¹Ó?Ô?ÁuÜ�E‹{Ðà€FÜ€Eãˆä'¨Ó.ˆô "×*Ñ*¨4Ö0ˆEÜ% e¨U¯[©[«]Ó;‰Eð 1ñ (.�f˜t’m°4ˆÜ Ô&Ø%¬
Ñ2ˆKà�‰�kÕ"ð ð €MrK   )r_   rN   ÚreturnrO   )r_   rN   r¯   rq   )r‰   rq   r¯   zlist[int | tuple[int, ...]])r   zIterator[int | tuple[int, ...]]r“   r‡   r¯   rZ   )r_   rN   r‰   rq   r¯   rN   )r«   zSequence[str]r¯   z	list[str])r+   Ú
__future__r   ÚreÚenumr   Útypingr   r   r   r   r
   Úcompilerƒ   r¤   rª   rN   rž   r`   r€   rŽ   r™   r¡   r®   rJ   rK   rL   Ú<module>rµ      s®   ðñõ #ó 
Ý ç 6Ñ 6áÝô&ˆ7ô &ðZ ˆr�z‰zÐ-Ó.€ð �2—:‘:Ð/Ó0Ð ð €
ô.�
ô .ñB “[Ð ó
Mó'ó8ð<Ø+ðØ36ðàóó:Nôb/rK   