§
    xÅj¿  ã                  óÈ  — d Z ddlmZ ddlZddlmZ ddlmZ ddl	m
Z
m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 ddlmZ ddlmZmZmZmZmZmZ ddl m!Z! ddl"m#Z#m$Z$ e
e
e%e%f         df         Z&dZ' e( e)ed         d         ed         d         dz   ¦  «        ¦  «        Z* e(d„ g e¢e¢R D ¦   «         ¦  «        Z+ e!¦   «         d         Z,ee,         Z- e(d„ eD ¦   «         ¦  «        e*z  Z.dZ/ee,         Z0ee,         Z1ee,         Z2d,d„Z3d-d„Z4 G d„ de¦  «        Z5 e5dddddd¦  «        Z6 ed¬ ¦  «        d.d#„¦   «         Z7 ed¬ ¦  «        d/d0d(„¦   «         Z8d1d+„Z9dS )2zOShared data tables and constants for wcwidth.py, _wcwidth.py, and _wcswidth.py.é    )ÚannotationsN)Úindex)Ú	lru_cache)ÚTupleÚ
NamedTupleé   )ÚCATEGORY_MC)ÚWIDE_EASTASIAN)Ú
ZERO_WIDTH)Ú
ISC_VIRAMAÚEXTENDED_PICTOGRAPHICÚISC_INVISIBLE_STACKERÚGRAPHEME_REGIONAL_INDICATOR)ÚAMBIGUOUS_EASTASIAN)ÚSFZ_OVERRIDESÚSRI_OVERRIDESÚVS15_OVERRIDESÚVS16_OVERRIDESÚWIDE_OVERRIDESÚNARROW_OVERRIDES)Úlist_versions)ÚALIASESÚKNOWN_TERMINALS.)Ú_REGIONAL_INDICATOR_SETÚ_ISC_VIRAMA_SETÚ_LATEST_VERSIONÚ_CATEGORY_MC_TABLEÚ_EMOJI_ZWJ_SETÚ_FITZPATRICK_RANGEÚ_ZERO_WIDTH_TABLEÚ_WIDE_EASTASIAN_TABLEÚ_AMBIGUOUS_TABLEÚresolve_terminalÚget_term_overridesÚlist_term_programsc              #  óL   K  — | ]\  }}t          ||d z   ¦  «        D ]}|V — ŒŒ dS ©r   N©Úrange©Ú.0ÚloÚhiÚcps       úCC:\Projects\Historical\venv\Lib\site-packages\wcwidth/_constants.pyú	<genexpr>r0   2   s]   è è € ð ð Ùˆ2ˆrÝ�B˜˜Q™ÑÔðð à
ð ðð ð ð ð ð ð ó    éÿÿÿÿc              #  óL   K  — | ]\  }}t          ||d z   ¦  «        D ]}|V — ŒŒ dS r'   r(   r*   s       r/   r0   r0   9   sY   è è € ð ð Ùˆ2ˆrµU¸2¸rÀA¹vÑ5FÔ5Fðð Ø/1€Bðð ð ð ð ð ð r1   )iûó iÿó Úreturnútuple[str, ...]c                 ól   — t          t          t          t          j        ¦   «         z  ¦  «        ¦  «        S )z²
    Return all recognized values for the ``term_program`` argument.

    Includes canonical terminal names and their TERM/TERM_PROGRAM aliases.

    .. versionadded:: 0.8.0
    )ÚtupleÚsortedr   r   Úkeys© r1   r/   r%   r%   C   s%   € õ •�­'¬,©.¬.Ñ8Ñ9Ô9Ñ:Ô:Ð:r1   ÚtuplesÚ_RangeTuplec                 óT  — g }| D ]}|                      |¦  «         Œ|sdS |                     d„ ¬¦  «         |d         g}|dd…         D ]O\  }}|d         \  }}||k    r"|d         d         t          ||¦  «        f|d<   Œ8|                     ||f¦  «         ŒPt	          |¦  «        S )zJMerge multiple sorted range tuples into one sorted, non-overlapping tuple.r:   c                ó   — | d         S )Nr   r:   )Úrs    r/   ú<lambda>z_merge_ranges.<locals>.<lambda>U   s
   €  ! A¤$€ r1   )Úkeyr   r   Nr2   )ÚextendÚsortÚmaxÚappendr7   )r;   Ú
all_rangesÚtÚmergedr,   r-   Ú_Úprev_his           r/   Ú_merge_rangesrK   N   sÓ   € à(*€JØð ð ˆØ×Ò˜!ÑÔÐÐØð ØˆrØ‡O‚O˜˜€OÑ'Ô'Ð'Ø˜Œmˆ_€FØ˜Q˜R˜R”.ð $ð $‰ˆˆBØ˜B”Z‰
ˆˆ7Ø�Š=ˆ=Ø  œ* Qœ-­¨W°bÑ)9Ô)9Ð:ˆF�2‰JˆJà�MŠM˜2˜r˜(Ñ#Ô#Ð#Ð#Ý�‰=Œ=Ðr1   c                  óP   — e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded<   d	S )
ÚTerminalOverridesz7Pre-merged override range tuples for a single terminal.r<   ÚnarrowerÚvs16_narrowerÚ
vs15_widerÚzeroerÚnarrow_widerÚnarrow_zeroerN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú__annotations__r:   r1   r/   rM   rM   `   s`   € € € € € € ØAÐAàÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑØÐÐÑÐÐr1   rM   r:   é    )ÚmaxsizeÚterm_canonicalÚstrc                ó°  — t          t          j        | i ¦  «                             dd¦  «        t          j        | i ¦  «                             dd¦  «        t	          j        | i ¦  «                             dd¦  «        ¦  «        }t          j        | i ¦  «                             dd¦  «        }t          j        | i ¦  «                             dd¦  «        }t          t          j        | i ¦  «                             dd¦  «        t          j        | i ¦  «                             dd¦  «        t	          j        | i ¦  «                             dd¦  «        ¦  «        }t          j        | i ¦  «                             dd¦  «        }t          j        | i ¦  «                             dd¦  «        }|s|s|s|s|s	|st          S t          ||||||¦  «        S )zNReturn a TerminalOverrides, with all empty tuples when there are no overrides.rN   r:   ÚwiderrQ   rS   )
rK   r   Úgetr   r   r   r   r   Ú_EMPTY_OVERRIDESrM   )r[   rN   rO   rP   rQ   rR   rS   s          r/   r$   r$   n   sÃ  € õ ÝÔ˜>¨2Ñ.Ô.×2Ò2°:¸rÑBÔBÝÔ˜.¨"Ñ-Ô-×1Ò1°*¸bÑAÔAÝÔ˜.¨"Ñ-Ô-×1Ò1°*¸bÑAÔAñô €Hõ
 #Ô& ~°rÑ:Ô:×>Ò>¸zÈ2ÑNÔN€MÝÔ# N°BÑ7Ô7×;Ò;¸GÀRÑHÔH€JÝÝÔ˜>¨2Ñ.Ô.×2Ò2°8¸RÑ@Ô@ÝÔ˜.¨"Ñ-Ô-×1Ò1°(¸BÑ?Ô?ÝÔ˜.¨"Ñ-Ô-×1Ò1°(¸BÑ?Ô?ñô €Fõ
 $Ô'¨¸Ñ;Ô;×?Ò?ÀÈÑLÔL€LÝ$Ô(¨¸Ñ<Ô<×@Ò@ÀÐRTÑUÔU€Mð ð  ˜ð  ¨ð  °vð  Øð Ø,ð åÐÝ˜X }°jÀ&Ø)¨=ñ:ô :ð :r1   FÚterm_programú
bool | strú
str | Nonec                ó.  — | du rdS | du r@t           j                             dd¦  «        pt           j                             dd¦  «        } | sdS |                      ¦   «                              ¦   «         }t          j        ||¦  «        }|t          vrdS |S )aÖ  
    Resolve a terminal identifier to its canonical name.

    :param term_program: Terminal identifier.  ``False`` (default) disables override lookup.
        ``True`` reads the ``TERM_PROGRAM`` environment variable, falling back to ``TERM``.
        A string value is used directly (canonical name, alias, XTVERSION/ENQ result, etc.).
    :returns: Canonical terminal name if recognized, ``None`` otherwise.

    The auto-detection path (``term_program=True``) reads environment variables at call time
    and caches the result.  The environment is assumed immutable for the process lifetime;
    callers that change ``TERM`` or ``TERM_PROGRAM`` mid-process must call
    :func:`resolve_terminal.cache_clear` afterward.
    FNTÚTERM_PROGRAMÚ ÚTERM)ÚosÚenvironr_   ÚstripÚlowerr   r   )ra   rA   Ú	canonicals      r/   r#   r#   Œ   s›   € ð �uÐÐØˆtØ�tÐÐÝ”z—~’~ n°bÑ9Ô9ÐW½R¼Z¿^º^ÈFÐTVÑ=WÔ=WˆØð ØˆtØ
×
Ò
Ñ
Ô
×
$Ò
$Ñ
&Ô
&€CÝ”˜C Ñ%Ô%€IØ�Ð'Ð'ØˆtØÐr1   Úambiguous_widthÚintc                óD   — t          | ¦  «        }|dk     rdS |dk    rdS |S )z"Clamp *ambiguous_width* to 1 or 2.r   é   )Ú_index)rm   Úvalues     r/   Ú_clamp_ambiguous_widthrs   ¨   s2   € õ �?Ñ#Ô#€EØˆq‚y€yØˆqØˆq‚y€yØˆqØ€Lr1   )r4   r5   )r;   r<   r4   r<   )r[   r\   r4   rM   )F)ra   rb   r4   rc   )rm   rn   r4   rn   ):rW   Ú
__future__r   rh   Úoperatorr   rq   Ú	functoolsr   Útypingr   r   Útable_mcr	   Ú
table_wider
   Ú
table_zeror   Útable_graphemer   r   r   r   Útable_ambiguousr   Útable_overridesr   r   r   r   r   r   Úunicode_versionsr   Útable_term_programsr   r   rn   r<   Ú__all__Ú	frozensetr)   r   r   r   r   r   r   r    r!   r"   r%   rK   rM   r`   r$   r#   rs   r:   r1   r/   ú<module>r‚      sk  ðØ UÐ UØ "Ð "Ð "Ð "Ð "Ð "ð 
€	€	€	Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $ð "Ð !Ð !Ð !Ð !Ð !Ø &Ð &Ð &Ð &Ð &Ð &Ø "Ð "Ð "Ð "Ð "Ð "ð:ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð :ð 1Ð 0Ð 0Ð 0Ð 0Ð 0ð0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð 0ð ,Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9à�E˜#˜s˜(”O SÐ(Ô)€ð€ð $˜)Ø	€EÐ
% aÔ
(¨Ô
+Ð-HÈÔ-KÈAÔ-NÐQRÑ-RÑSÔSñô Ð ð �)ð ð Ø:�zÐ:Ð$9Ð:Ð:ðñ ô ñ ô €ð
  �-‘/”/ "Ô%€Ø  Ô1Ð Ø�ð ð Ø*ðñ ô ñ ô àñ€ð (Ð à˜Ô/Ð Ø& Ô7Ð Ø& Ô7Ð ð;ð ;ð ;ð ;ðð ð ð ð$ð ð ð ð ˜
ñ ô ð ð %Ð$ R¨¨R°°R¸Ñ<Ô<Ð ð €�2ÐÑÔð:ð :ð :ñ Ôð:ð: €�2ÐÑÔðð ð ð ñ Ôðð6	ð 	ð 	ð 	ð 	ð 	r1   