ó
    Þ j¬  ã                  ó²  • S SK Jr  S SKrS SKJr  S SKJr  SSKJr  \R                  " S5      R                  r\" S5      SS	 j5       r\4SS
 jjr\" SS9SS j5       r\" SS9SS j5       rSS jr      SS jr\S:X  aU  \" \" S5      5        \" SS5       H  r\" \5        M     \" SSS5       H   r\" \" S\5      S-   5        \" S\-  5        M"     gg)é    )ÚannotationsN)Ú	lru_cache)ÚCallableé   )ÚCELL_WIDTHSu   ^[ -oÂ Ë¿Í°-Ò‚]*$i   c                ó>   ^• [         m[        U4S jU  5       5      nU$ )a  Get the number of cells required to display text.

This method always caches, which may use up a lot of memory. It is recommended to use
`cell_len` over this method.

Args:
    text (str): Text to display.

Returns:
    int: Get the number of cells required to display text.
c              3  ó2   >#   • U H  nT" U5      v •  M     g 7f©N© ©Ú.0Ú	characterÚ	_get_sizes     €ÚP/var/www/html/gaurav/venv/lib/python3.13/site-packages/pip/_vendor/rich/cells.pyÚ	<genexpr>Ú"cached_cell_len.<locals>.<genexpr>   ó   øé € Ð@¹4¨i‘Y˜y×)Ð)º4ùó   ƒ)Úget_character_cell_sizeÚsum)ÚtextÚ
total_sizer   s     @r   Úcached_cell_lenr      s    ø€ ô (€IÜÔ@¹4Ó@Ó@€JØÐó    c                ól   ^• [        U 5      S:  a  U" U 5      $ [        m[        U4S jU  5       5      nU$ )zŸGet the number of cells required to display text.

Args:
    text (str): Text to display.

Returns:
    int: Get the number of cells required to display text.
i   c              3  ó2   >#   • U H  nT" U5      v •  M     g 7fr
   r   r   s     €r   r   Úcell_len.<locals>.<genexpr>+   r   r   )Úlenr   r   )r   Ú	_cell_lenr   r   s      @r   Úcell_lenr       s5   ø€ ô ˆ4ƒy�3ƒÙ˜‹ÐÜ'€IÜÔ@¹4Ó@Ó@€JØÐr   )Úmaxsizec                ó*   • [        [        U 5      5      $ )z�Get the cell size of a character.

Args:
    character (str): A single character.

Returns:
    int: Number of cells (0, 1 or 2) occupied by that character.
)Ú_get_codepoint_cell_sizeÚord)r   s    r   r   r   /   s   € ô $¤C¨	£NÓ3Ð3r   c                ó¬   • [         nSn[        U5      S-
  nX#-   S-  n X   u  pVnX:  a  US-
  nOX:”  a  US-   nO
US:X  a  S$ U$ X2:  a   gX#-   S-  nM7  )z£Get the cell size of a character.

Args:
    codepoint (int): Codepoint of a character.

Returns:
    int: Number of cells (0, 1 or 2) occupied by that character.
r   r   é   éÿÿÿÿ)r   r   )Ú	codepointÚ_tableÚlower_boundÚupper_boundÚindexÚstartÚendÚwidths           r   r#   r#   <   s…   € ô €FØ€KÜ�f“+ ‘/€KØÑ&¨1Ñ,€EØ
Ø"™MÑˆ�EØÓØ !™)‰KØ‹_Ø !™)‰Kà ›�1Ð.¨Ð.ØÓ$Øàð Ñ*¨qÑ0ˆñ r   c                ój  • [        U 5      (       a  [        U 5      nX!:  a
  U SX-
  -  -   $ U SU $ US::  a  g[        U 5      nX1:X  a  U $ X1:  a
  U SX-
  -  -   $ Sn[        U 5      n XE-   S-  nU SUS-    n[        U5      nX�S-   :X  a  [        US   5      S:X  a  USS S-   $ X�:X  a  U$ X�:”  a  UnOUnMO  )z?Set the length of a string to fit within given number of cells.Ú Nr   Ú r&   r   r'   )Ú_is_single_cell_widthsr   r    )	r   ÚtotalÚsizeÚ	cell_sizer-   r.   ÚposÚbeforeÚ
before_lens	            r   Úset_cell_sizer:   Y   sõ   € ô ˜d×#Ñ#Ü�4‹yˆØ‹<Ø˜# ¡Ñ.Ñ.Ð.Ø�F�Uˆ|Ðà�ƒzØÜ˜“€IØÓØˆØÓØ�c˜UÑ.Ñ/Ñ/Ð/à€EÜ
ˆd‹)€Cð Ø‰{˜qÑ ˆØ�i˜˜a™�ˆÜ˜fÓ%ˆ
Ø ™Ó"¤x°°r±
Ó';¸qÓ'@Ø˜#˜2�; Ñ$Ð$ØÓØˆMØÓØ‰CàˆEñ r   c                ó(  • [         n/ /nUR                  nUS   R                  nSnU  HA  nU" U5      nXh-   U:„  n	U	(       a  U" U/5        US   R                  nUnM5  U" U5        Xh-  nMC     U V
s/ sH  n
SR                  U
5      PM     sn
$ s  sn
f )aL  Split text into lines such that each line fits within the available (cell) width.

Args:
    text: The text to fold such that it fits in the given width.
    width: The width available (number of cells).

Returns:
    A list of strings such that each string in the list has cell width
    less than or equal to the available width.
r'   r   r2   )r   ÚappendÚjoin)r   r/   Ú_get_character_cell_sizeÚlinesÚappend_new_lineÚappend_to_last_lineÚtotal_widthr   Ú
cell_widthÚchar_doesnt_fitÚlines              r   Ú
chop_cellsrF   |   s¤   € ô  7ÐØ ˜T€Eà—l‘l€OØ ™)×*Ñ*Ðà€Kãˆ	Ù-¨iÓ8ˆ
Ø%Ñ2°UÑ:ˆæÙ˜Y˜KÔ(Ø"'¨¡)×"2Ñ"2ÐØ$ŠKá 	Ô*ØÑ%ŠKñ ñ ',Ó,¡e˜dˆB�G‰G�DŽM¡eÑ,Ð,ùÒ,s   Á2BÚ__main__u   ðŸ˜½u]   è¿™æ˜¯å¯¹äºšæ´²è¯­è¨€æ”¯æŒ�çš„æµ‹è¯•ã€‚é�¢å¯¹æ¨¡æ£±ä¸¤å�¯çš„æƒ³æ³•ï¼Œæ‹’ç»�çŒœæµ‹çš„è¯±æƒ‘ã€‚é   éP   r'   Ú|Úx)r   ÚstrÚreturnÚint)r   rL   r   zCallable[[str], int]rM   rN   )r   rL   rM   rN   )r(   rN   rM   rN   )r   rL   r4   rN   rM   rL   )r   rL   r/   rN   rM   z	list[str])Ú
__future__r   ÚreÚ	functoolsr   Útypingr   Ú_cell_widthsr   ÚcompileÚmatchr3   r   r    r   r#   r:   rF   Ú__name__ÚprintrE   ÚrangeÚnr   r   r   Ú<module>rZ      s,  ðÝ "ã 	Ý Ý å %ð ŸšÐ$QÓR×XÑXÐ ñ ˆ4ƒóó ðð" ;Jö ñ  �4Ñó	4ó ð	4ñ �4Ñóó ðô8 ðF"-Ø
ð"-àð"-ð ô"-ðJ ˆzÓÙ	Ñ
! &Ó
)Ô*ÙÐ~ð  ABö  CˆÙˆdŽñ Cá�2�q˜"ÖˆÙ‰mÐð  BCó  Dð  GJñ  Jô  	KÙˆc�A‰gŽò ð	 r   