§
    xÅjÕF  ã                  óÄ   — d Z ddlmZ ddlmZ g d¢ZddlmZ ddlm	Z	 ddl
m
Z
 dd	lmZmZmZmZmZmZmZmZ dd
lmZ ddlmZ ddlmZ d d„Z	 	 	 d!d"d„Z	 	 	 	 d#d$d„ZdS )%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Ú_clamp_ambiguous_width)ÚVS15_WIDE_TO_NARROW)ÚVS16_NARROW_TO_WIDE)ÚGRAPHEME_EXTENDÚtextÚstrÚstartÚintÚendÚreturnc                ó0  — |dz   }||k     r[t          t          | |         ¦  «        t          ¦  «        r3|dz  }||k     r(t          t          | |         ¦  «        t          ¦  «        °3||k     r©t          | |         ¦  «        dk    rn�|dz  }||k     rƒt          | |         ¦  «        t          v rg|dz  }||k     r[t          t          | |         ¦  «        t          ¦  «        r3|dz  }||k     r(t          t          | |         ¦  «        t          ¦  «        °3Œ®	 |S )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
   )r   r   r   Úidxs       úBC:\Projects\Historical\venv\Lib\site-packages\wcwidth/_wcswidth.pyÚ_scan_zwj_cluster_endr       s  € ð �!‰)€Cà
�Š)ˆ)�¥ T¨#¤Y¡¤µÑAÔAˆ)Øˆq‰ˆð �Š)ˆ)�¥ T¨#¤Y¡¤µÑAÔAˆ)ð �Š)ˆ)Ýˆt�CŒy‰>Œ>˜VÒ#Ð#ØØˆq‰ˆð
 �Š9ˆ9�˜T #œY™œ­>Ð9Ð9Ø�1‰HˆCà˜’)�)¥­¨T°#¬Y©¬½Ñ IÔ I�)Ø�q‘�ð ˜’)�)¥­¨T°#¬Y©¬½Ñ IÔ I�)àØØ€Jó    NÚautoÚpwcsÚnúOptional[int]Úunicode_versionÚambiguous_widthc                óä  ‡— |€7|                       ¦   «         r#|                      ¦   «         rt          | ¦  «        S t          ‰¦  «        Š‰dk    rt          nˆfd„}|€t          | ¦  «        nt          |t          | ¦  «        ¦  «        }d}d}d}d}	d}
d}d}t          d         }t          d         }t          }||k     �r©| |         }t          |¦  «        }|d	k    r#|r|dz  }n|dz   |k     r
d}
d}|d
z  }nd}|dz  }ŒG|dk    r|dk    r ||	|¦  «        rd
}d}|dz  }Œi|dk    r)|dk    r#t          |	|¦  «        r|
d
k    r|dz  }d}|dz  }Œ˜|dk    r§|t          v rhd}|dz
  }|dk    rHt          | |         ¦  «        t          v r,|dz  }|dz  }|dk    rt          | |         ¦  «        t          v °,|d
z  dk    r	|}	|dz  }�Œn6t          d         |cxk    rt          d         k    rn n|	t          v r|dz  }�ŒE ||¦  «        }|dk     rdS |dk    r|rd
}n|r||z  }|}n|}|}|}	|}
d}n,|t          v rd}n |dk    r ||t          ¦  «        rd
}d}d}nd}|dz  }||k     �°©|r||z  }|S )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/
    Nr   c                ó&   •— t          | d‰¦  «        S ©Nr"   r   ©Úcr'   s    €r   ú<lambda>zwcswidth.<locals>.<lambda>f   ó   ø€ ½gÀaÈÐQ`Ñ>aÔ>a€ r!   r   éþÿÿÿéÿÿÿÿFú9.0.0r   é   éþ  éþ  éÿÿ  T)ÚisasciiÚisprintableÚlenr   r   Úminr   r   r	   r   r   r   r
   r   r   )r#   r$   r&   r'   Ú_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   ÚwcswidthrI   =   s‚  ø€ ðH 	€y�T—\’\‘^”^€y¨×(8Ò(8Ñ(:Ô(:€yÝ�4‰yŒyÐå,¨_Ñ=Ô=€Oà)¨QÒ.Ð.�wˆwÐ4aÐ4aÐ4aÐ4a€Hà�y�#ˆd‰)Œ)ˆ)¥c¨!­S°©Y¬YÑ&7Ô&7€CØ€KØ
€CàÐØÐØ€OØ€OØ€MÝ'¨Ô0€MÝ'¨Ô0€MÝ€Ià
�Š)‰)Ø�CŒyˆÝ�$‰iŒiˆð �&Š=ˆ=Øð Ø�q‘��Ø�q‘˜3’�Ø"#�Ø"'�Ø�q‘��à"'�Ø�q‘�Øð �&Š=ˆ=Ð.°!Ò3Ð3ØˆyÐ*¨MÑ:Ô:ð "Ø !�Ø "ÐØ�1‰HˆCØð �&Š=ˆ=Ð.°!Ò3Ð3ÝÐ)¨=Ñ9Ô9ð !¸oÐQRÒ>RÐ>RØ˜qÑ �Ø "ÐØ�1‰HˆCØð �Š<ˆ<ØÕ-Ð-Ð-Ø�	Ø˜!‘G�Ø˜1’f�f¥ T¨!¤W¡¤Õ1HÐ!HÐ!HØ ‘N�IØ˜‘F�Að ˜1’f�f¥ T¨!¤W¡¤Õ1HÐ!HÐ!Hð ˜q‘= AÒ%Ð%Ø(+Ð%Ø˜1‘H�CÙð &õ % QÔ'¨3ÐGÐGÒGÐGÕ2DÀQÔ2GÒGÐGÐGÐGÐGØ'­>Ð9Ð9Ø�q‘�Ùð ˆH�T‰NŒNˆØˆqŠ5ˆ5Ø�2ØˆqŠ5ˆ5Øð "Ø !��Øð "Ø˜}Ñ,�Ø !��à !�à #ÐØ #ÐØˆOØ#ˆOˆOØ•OÐ#Ð#Ø"ˆOˆOØ !Ò#Ð#¨	¨	°#Õ7IÑ(JÔ(JÐ#ØˆMØ "ÐØ#ˆOˆOà#ˆOØˆq‰ˆð_ �Š)‰)ðb ð %Ø�}Ñ$ˆØÐr!   TÚterm_programú
bool | strc                óþ  ‡— |€7|                       ¦   «         r#|                      ¦   «         rt          | ¦  «        S t          ‰¦  «        Št	          |¦  «        }|rNt          |¦  «        }|j        }|j        }|j        }	|j	        }
|j
        }|j        }t          j        |¦  «        }nd}d}d}	d}
d}d}i }‰dk    rt          nˆfd„}|€t          | ¦  «        nt          |t          | ¦  «        ¦  «        }d}d}d}d}d}d}d}d}d}t           d	         }t"          d	         }t$          }||k     �r| |         }t'          |¦  «        }|d
k    r{|r|dz  }nr|dz   |k     rb|rV|dk    rP|t(          v rGt+          | ||¦  «        }| ||…         }|                     |¦  «        } | �|| |z
  z  }d}d}d}d}d}|}Œ�d}d}|dz  }nd}|dz  }ŒŸ|dk    r+|dk    r%|r |||¦  «        rn |||¦  «        rd}d}|dz  }ŒÐ|dk    rB|dk    r<|}!t%          |!|¦  «        }"|	rt%          |!|	¦  «        rd}"|"r|dk    r|dz  }d}|dz  }�Œ|dk    rµ|t,          v rvd}#|dz
  }$|$dk    rHt'          | |$         ¦  «        t,          v r,|#dz  }#|$dz  }$|$dk    rt'          | |$         ¦  «        t,          v °,|#dz  dk    r|r |||¦  «        s	|}|dz  }�Œœn6t.          d         |cxk    rt.          d         k    rn n|t(          v r|dz  }�ŒÓ ||¦  «        }%|%dk     rdS |%dk    r|rt%          ||¦  «        rd}%n|%dk    r|
rt%          ||
¦  «        rd}%|%dk    r|rt%          ||¦  «        rd}%n|%dk    r|rt%          ||¦  «        rd}%|%dk    r‰|rd}n{|rsd}&|ra|dk    r[| ||dz   …         }'|                     |'¦  «        } | �
|| z   }d}&d}n2| ||…         }(|                     |(¦  «        } | �|| z   }n||z  }n||z  }|&s|%}|}|}n|%}|}|}|}|}|%}d}n,|t0          v rd}n |dk    r ||t2          ¦  «        rd}d}d}nd}|dz  }||k     �°|r:|r3|dk    r-| ||…         }(|                     |(¦  «        } | �|| z   }n||z  }n||z  }|S )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!
    N© r   c                ó&   •— t          | d‰¦  «        S r*   r   r+   s    €r   r-   zwcstwidth.<locals>.<lambda>  r.   r!   r   r/   r0   Fr1   r   r2   r3   r4   r5   T)r6   r7   r8   r   r   r   ÚnarrowerÚvs16_narrowerÚ
vs15_widerÚzeroerÚnarrow_widerÚnarrow_zeroerr   Úgetr   r9   r   r   r	   r   r
   r    r   r   r   r   ))r#   r$   r&   r'   rJ   Úterm_canonicalÚ	overridesÚ	_narrowerÚ_vs16_narrowerÚ_vs15_widerÚ_zeroerÚ_narrow_widerÚ_narrow_zeroerÚ_grapheme_overridesr:   r   r;   r   r<   r=   r>   r?   Úcluster_startÚtotal_before_clusterr@   rA   rB   rC   rD   rE   Úcluster_endÚclusterÚ
override_wÚbase_ucsÚvs15_narrowrF   rG   rH   ÚflushedÚ	candidateÚcluster_texts)      `                                     r   Ú	wcstwidthri   Ë   s�  ø€ ðJ 	€y�T—\’\‘^”^€y¨×(8Ò(8Ñ(:Ô(:€yÝ�4‰yŒyÐå,¨_Ñ=Ô=€Oõ & lÑ3Ô3€Nð ð !Ý& ~Ñ6Ô6ˆ	ØÔ&ˆ	Ø"Ô0ˆØÔ*ˆØÔ"ˆØ!Ô.ˆØ"Ô0ˆÝ6Ô:¸>ÑJÔJÐÐàˆ	ØˆØˆØˆØˆØˆØ Ðð *¨QÒ.Ð.�wˆwÐ4aÐ4aÐ4aÐ4a€Hà�y�#ˆd‰)Œ)ˆ)¥c¨!­S°©Y¬YÑ&7Ô&7€CØ€KØ
€Cð ÐØÐØ€OØ€OØ€MØÐØ€MÝ'¨Ô0€MÝ'¨Ô0€MÝ€Ià
�Š)‰)Ø�CŒyˆÝ�$‰iŒiˆð �&Š=ˆ=Øð Ø�q‘��Ø�q‘˜3’�à'ð !Ø-°Ò2Ð2Ø-µÐ?Ð?Ý"7¸Ð>OÐQTÑ"UÔ"U�KØ"Ð#4°[Ð#@ÔA�GØ!4×!8Ò!8¸Ñ!AÔ!A�JØ!Ð-Ø#¨
°_Ñ(DÑE˜Ø,.Ð)Ø,.Ð)Ø*+˜Ø*/˜Ø(*˜Ø)˜Ø ð #$�Ø"'�Ø�q‘��à"'�Ø�q‘�Øð �&Š=ˆ=Ð.°!Ò3Ð3Øð " ) )Ð,=¸~Ñ"NÔ"Nð "ØØ�Ð,¨mÑ<Ô<ð "Ø !�Ø "ÐØ�1‰HˆCØð �&Š=ˆ=Ð.°!Ò3Ð3Ø(ˆHÝ" 8¨]Ñ;Ô;ˆKØð $�x¨°+Ñ>Ô>ð $Ø#�Øð !˜°!Ò3Ð3Ø˜qÑ �Ø "ÐØ�1‰HˆCÙð �Š<ˆ<ØÕ-Ð-Ð-Ø�	Ø˜!‘G�Ø˜1’f�f¥ T¨!¤W¡¤Õ1HÐ!HÐ!HØ ‘N�IØ˜‘F�Að ˜1’f�f¥ T¨!¤W¡¤Õ1HÐ!HÐ!Hð ˜q‘= AÒ%Ð%¨yÐ%¸Y¸YÀsÈIÑ=VÔ=VÐ%Ø(+Ð%Ø˜1‘H�CÙøÝ$ QÔ'¨3ÐGÐGÒGÐGÕ2DÀQÔ2GÒGÐGÐGÐGÐGØ'­>Ð9Ð9Ø�q‘�Ùð ˆH�T‰NŒNˆØˆqŠ5ˆ5à�2à�Š6ˆ6�iˆ6¥H¨S°)Ñ$<Ô$<ˆ6ØˆAˆAØ�!ŠVˆV˜ˆV¥H¨S°'Ñ$:Ô$:ˆVØˆAØ�Š6ˆ6�mˆ6­°°mÑ(DÔ(Dˆ6ØˆAˆAØ�!ŠVˆV˜ˆV­8°C¸Ñ+HÔ+HˆVØˆAØˆqŠ5ˆ5àð 3Ø !��Øð 3à�Ø&ð 1¨=¸AÒ+=Ð+=ð !% ]°3¸±7Ð%:Ô ;�IØ!4×!8Ò!8¸Ñ!CÔ!C�JØ!Ð-Ø&:¸ZÑ&G˜Ø"&˜Ø()˜˜à'+¨M¸#Ð,=Ô'>˜Ø%8×%<Ò%<¸\Ñ%JÔ%J˜
Ø%Ð1Ø*>ÀÑ*K˜K˜Kà'¨=Ñ8˜K˜Kà =Ñ0�KØð 7Ø$%�MØ$'�MØ+6Ð(øà !�Ø #�Ø'2Ð$Ø #ÐØ #ÐØˆOØ#ˆOˆOØ•OÐ#Ð#Ø"ˆOˆOØ !Ò#Ð#¨	¨	°#Õ7IÑ(JÔ(JÐ#àˆMØ "ÐØ#ˆOˆOà#ˆOØˆq‰ˆða �Š)‰)ðd ð 	)Øð 	) =°AÒ#5Ð#5Ø ¨cÐ 1Ô2ˆLØ,×0Ò0°Ñ>Ô>ˆJØÐ%Ø2°ZÑ?��à˜}Ñ,��à˜=Ñ(ˆKØÐr!   )r   r   r   r   r   r   r   r   )Nr"   r   )
r#   r   r$   r%   r&   r   r'   r   r   r   )Nr"   r   T)r#   r   r$   r%   r&   r   r'   r   rJ   rK   r   r   )Ú__doc__Ú
__future__r   Útypingr   Ú__lazy_modules__Ú r   r:   r   r	   Ú
_constantsr
   r   r   r   r   r   r   r   Ú
table_vs15r   Ú
table_vs16r   Útable_graphemer   r    rI   ri   rM   r!   r   ú<module>rs      sŒ  ðØ 4Ð 4à "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ð Ð ðð ð Ð ð 'Ð &Ð &Ð &Ð &Ð &Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð ð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð 1ð ,Ð +Ð +Ð +Ð +Ð +Ø +Ð +Ð +Ð +Ð +Ð +Ø +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð@ Ø!Øð	Kð Kð Kð Kð Kð` Ø!ØØ#ðsð sð sð sð sð sð sr!   