
    $pj8D                        S r SSKJr  SSKJr  / SQrSSKJr  SSKJ	r	  SSK
J
r
  SS	KJrJrJrJrJrJrJr  SS
KJr  SSKJr  SSKJr  SS jr   S         SS jjr    S           SS jjrg)z.This is a python implementation of wcswidth().    )annotations)Optional)zwcwidth._constantszwcwidth._wcwidthzwcwidth.bisearchzwcwidth.table_graphemezwcwidth.table_vs16   )table_grapheme_overrideswcwidth)bisearch)_EMOJI_ZWJ_SET_ISC_VIRAMA_SET_CATEGORY_MC_TABLE_FITZPATRICK_RANGE_REGIONAL_INDICATOR_SETresolve_terminalget_term_overrides)VS15_WIDE_TO_NARROW)VS16_NARROW_TO_WIDE)GRAPHEME_EXTENDc                   US-   nX2:  aL  [        [        X   5      [        5      (       a,  US-  nX2:  a"  [        [        X   5      [        5      (       a  M,  X2:  a  [        X   5      S:w  a   U$ US-  nX2:  am  [        X   5      [        ;   aX  US-  nX2:  aL  [        [        X   5      [        5      (       a,  US-  nX2:  a"  [        [        X   5      [        5      (       a  M,  M   U$ U$ )z
Scan forward from *start* (base character) to end of a ZWJ grapheme cluster.

Follows the UAX #29 GB11 pattern (ExtPict Extend* ZWJ x ExtPict) chained repeatedly until no
more ZWJ joins are found.
r      )r	   ordr   r
   )textstartendidxs       M/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/wcwidth/_wcswidth.py_scan_zwj_cluster_endr      s     !)C
)TYAAq )TYAA )ty>V# J 	q
 9TY>91HC)TY I Iq )TY I IJ3J    Nc                  ^ Uc5  U R                  5       (       a   U R                  5       (       a  [        U 5      $ TS:X  a  [        OU4S jnUc  [        U 5      O[	        U[        U 5      5      nSnSnSnSn	Sn
SnSn[
        S   n[        S   n[        nXu:  Ga  X   n[        U5      nUS:X  a)  U(       a  US-  nOUS-   U:  a
  Sn
SnUS	-  nOSnUS-  nMD  US
:X  a  US:  a  U" X5      (       a  S	nSnUS-  nMh  US:X  a(  US:  a"  [        X5      (       a  U
S	:X  a  US-  nUS-  nM  US:  a  U[        ;   a_  SnUS-
  nUS:  a>  [        U U   5      [        ;   a(  US-  nUS-  nUS:  a  [        U U   5      [        ;   a  M(  US	-  S:X  a
  Un	US-  nGM  O0[        S   Us=::  a  [        S   ::  a  O  OU	[        ;   a  US-  nGM5  U" U5      nUS:  a  gUS:  a#  U(       a  S	nOU(       a  Xl-  nUnOUnUnUn	Un
SnO.U[        ;   a  SnO!US:  a  U" U[        5      (       a  S	nSnSnOSnUS-  nXu:  a  GM  U(       a  Xl-  nU$ )a  
Given a unicode string, return its printable length on a terminal.

See :ref:`Specification` for details of cell measurement.

This implementation differs from Markus Khun's original POSIX C implementation, in that this
``wcswidth()`` processes graphemes strings yielded by :func:`wcwidth.iter_graphemes` defined by
`Unicode Standard Annex #29`_. POSIX wcswidth(3) is not grapheme-aware and does not measure many
kinds of Emojis or complex scripts correctly.

:param pwcs: Measure width of given unicode string.
:param n: When ``n`` is None (default), return the length of the entire
    string, otherwise only the first ``n`` characters are measured.
:param unicode_version: Ignored. Retained for backwards compatibility.

    .. deprecated:: 0.3.0
       Only the latest Unicode version is now shipped.

:param ambiguous_width: Width to use for East Asian Ambiguous (A)
    characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
:returns: The width, in cells, needed to display the first ``n`` characters
    of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
    characters!

.. _`Unicode Standard Annex #29`: https://www.unicode.org/reports/tr29/
r   c                   > [        U ST5      $ Nautor   cambiguous_widths    r   <lambda>wcswidth.<locals>.<lambda>c       gaQ`>ar   r   F9.0.0r            T)isasciiisprintablelenr   minr   r   r	   r   r   r   r
   r   r   )pwcsnunicode_versionr$   _wcwidthr   total_widthr   last_measured_idxlast_measured_ucslast_measured_wprev_was_viramacluster_widthvs16_nw_tablevs15_wn_table	_bisearchcharucs	ri_beforejws      `                 r   wcswidthrE   <   s   H 	yT\\^^(8(8(:(:4y)Q.w4aHy#d)c!SY&7CK
COOM'0M'0MI
)y$i &=qq3"#"'q"'q &=.!3*:: ! "1HC &=.!3)99oQR>Rq 1HC <--	!G1fT!W1H!HNIFA 1fT!W1H!H q=A%(+%1HC & %Q'3G2DQ2GG'>9q TNq5q5 !, ! ! # #O#OO#"O!#	#7I(J(JM "#O#Oq] )` $r   c                	  ^ Uc5  U R                  5       (       a   U R                  5       (       a  [        U 5      $ [        U5      nU(       aj  [	        U5      nUR
                  nUR                  nUR                  n	UR                  n
UR                  nUR                  n[        R                  " U5      nOSnSnSn	Sn
SnSn0 nTS:X  a  [        OU4S jnUc  [        U 5      O[        U[        U 5      5      nSnSnSnSnSnSnSnSnSn[        S   n[         S   n["        nUU:  Ga  U U   n[%        U5      nUS	:X  a|  U(       a  US-  nOmUS-   U:  a]  U(       aL  US:  aF  U[&        ;   a<  [)        U UU5      nU UU nUR                  U5      n U b  UU U-
  -  nSnSnSnSnSnUnM  SnSnUS
-  nOSnUS-  nM  US:X  a5  US:  a/  U(       a  U" UU5      (       a  OU" UU5      (       a  S
nSnUS-  nM  US:X  aH  US:  aB  Un![#        U!U5      n"U	(       a  [#        U!U	5      (       a  Sn"U"(       a  US
:X  a  US-  nUS-  nGM"  US:  a  U[*        ;   a_  Sn#US-
  n$U$S:  a>  [%        U U$   5      [*        ;   a(  U#S-  n#U$S-  n$U$S:  a  [%        U U$   5      [*        ;   a  M(  U#S
-  S:X  a
  UnUS-  nGM  O0[,        S   Us=::  a  [,        S   ::  a  O  OU[&        ;   a  US-  nGM  U" U5      n%U%S:  a  gU%S
:X  a  U(       a  [#        UU5      (       a  Sn%O U%S
:X  a  U
(       a  [#        UU
5      (       a  Sn%U%S:X  a  U(       a  [#        UU5      (       a  S
n%O U%S:X  a  U(       a  [#        UU5      (       a  Sn%U%S:  a  U(       a  S
nOzU(       am  Sn&U(       aQ  US:  aK  U UUS-    n'UR                  U'5      n U b
  UU -   nSn&SnO*U UU n(UR                  U(5      n U b  UU -   nOUU-  nOUU-  nU&(       d  U%nUnUnOU%nUnUnUnUnU%nSnO.U[.        ;   a  SnO!US:  a  U" U[0        5      (       a  S
nSnSnOSnUS-  nUU:  a  GM  U(       a:  U(       a.  US:  a(  U UU n(UR                  U(5      n U b  UU -   nU$ UU-  n U$ UU-  nU$ )a  
Given a unicode string, return its printable length on a terminal given by ``term_program``.

See :ref:`Specification` for details of cell measurement.

Unlike :func:`wcswidth`, this function applies per-terminal correction tables for
emoji presentation and grapheme clusters.

:param pwcs: Measure width of given unicode string.
:param n: When ``n`` is None (default), return the length of the entire
    string, otherwise only the first ``n`` characters are measured.
:param unicode_version: Ignored. Retained for backwards compatibility.
:param ambiguous_width: Width to use for East Asian Ambiguous (A)
    characters. Default is ``1`` (narrow). Set to ``2`` for CJK contexts.
:param term_program: Terminal software identifier for table correction.
    ``True`` (default) reads the ``TERM_PROGRAM`` or ``TERM`` environment
    variable for auto-detection.  ``False`` disables override lookup.
    Accepts a canonical terminal name matching :func:`list_term_programs`,
    such as from XTVERSION_, ENQ_, or ``TERM_PROGRAM``.

    .. versionadded:: 0.8.0
:returns: The width, in cells, needed to display the first ``n`` characters
    of the unicode string ``pwcs``.  Returns ``-1`` for C0 and C1 control
    characters!
 r   c                   > [        U ST5      $ r    r   r"   s    r   r%   wcstwidth.<locals>.<lambda>  r'   r   r   r(   r)   Fr*   r   r+   r,   r-   r.   T)r/   r0   r1   r   r   narrowervs16_narrower
vs15_widerzeroernarrow_widernarrow_zeroerr   getr   r2   r   r   r	   r   r
   r   r   r   r   r   ))r3   r4   r5   r$   term_programterm_canonical	overrides	_narrower_vs16_narrower_vs15_wider_zeroer_narrow_wider_narrow_zeroer_grapheme_overridesr6   r   r7   r   r8   r9   r:   r;   cluster_starttotal_before_clusterr<   r=   r>   r?   r@   rA   cluster_endcluster
override_wbase_ucsvs15_narrowrB   rC   rD   flushed	candidatecluster_texts)      `                                     r   	wcstwidthre      sh   J 	yT\\^^(8(8(:(:4y &l3N &~6	&&	"00**""!.."006::>J	  *Q.w4aHy#d)c!SY&7CK
C OOMM'0M'0MI
)Cy$i &=qq3'-2-?"7>OQT"UK"#4[AG!4!8!8!AJ!-#
_(DE,.),.)*+*/(*)  #$"'q"'q &=.!3),=~"N"N,m<< ! "1HC &=.!3(H"8];Kx+>>#!3q 1HC <--	!G1fT!W1H!HNIFA 1fT!W1H!H q=A%(+%1HC & %Q'3G2DQ2GG'>9q TNq56iHS)$<$<A!VHS'$:$:A6mm(D(DA!V8C+H+HAq5 !&=A+= !%]37 ;I!4!8!8!CJ!-&:Z&G"&()'+M#'>%8%<%<\%J
%1*>*KK'=8K=0K$%M$'M+6( ! #'2$ # #O#OO#"O!#	#7I(J(JM "#O#Oq_ )b =A#5c2L,00>J%2Z?
  },  =(Kr   )r   strr   intr   rg   returnrg   )Nr!   r   )
r3   rf   r4   Optional[int]r5   rf   r$   rg   rh   rg   )Nr!   r   T)r3   rf   r4   ri   r5   rf   r$   rg   rQ   z
bool | strrh   rg   )__doc__
__future__r   typingr   __lazy_modules__ r   r6   r   r	   
_constantsr
   r   r   r   r   r   r   
table_vs15r   
table_vs16r   table_graphemer   r   rE   re   rG   r   r   <module>rs      s    4 "   '  - - - , + +@ !	H
HH H 	H
 	HZ !#p
pp p 	p
 p 	pr   