VBFjdZddlmZddlZddlmZddlmZmZddl m Z ddl m Z dd l mZdd lmZmZmZmZdd lmZdd lmZmZmZmZmZmZdd lmZddlm Z m!Z!eee"e"fdfZ#dZ$e%e&eddedddzZ'e%dgeeRDZ(edZ)e e)Z*e%deDe'zZ+dZ,ee)Z-e e)Z.ee)Z/d(dZ0d)dZ1GddeZ2e2ddddddZ3edd*d"Z4edd+d,d'Z5dS)-zOShared data tables and constants for wcwidth.py, _wcwidth.py, and _wcswidth.py.) annotationsN) lru_cache)Tuple NamedTuple) CATEGORY_MC)WIDE_EASTASIAN) ZERO_WIDTH) ISC_VIRAMAEXTENDED_PICTOGRAPHICISC_INVISIBLE_STACKERGRAPHEME_REGIONAL_INDICATOR)AMBIGUOUS_EASTASIAN) SFZ_OVERRIDES SRI_OVERRIDESVS15_OVERRIDESVS16_OVERRIDESWIDE_OVERRIDESNARROW_OVERRIDES) list_versions)ALIASESKNOWN_TERMINALS.) _REGIONAL_INDICATOR_SET_ISC_VIRAMA_SET_LATEST_VERSION_CATEGORY_MC_TABLE_EMOJI_ZWJ_SET_FITZPATRICK_RANGE_ZERO_WIDTH_TABLE_WIDE_EASTASIAN_TABLE_AMBIGUOUS_TABLEresolve_terminalget_term_overrideslist_term_programsc#LK|]\}}t||dzD]}|V dSrNrange.0lohicps @C:\PYTHON\_runtimes\venv\Lib\site-packages\wcwidth/_constants.py r/1s] 2rBQ c#LK|]\}}t||dzD]}|V dSr&r'r)s r.r/r/8sY 2rU2rAv5F5F/1Br0)iireturntuple[str, ...]clttttjzS)z Return all recognized values for the ``term_program`` argument. Includes canonical terminal names and their TERM/TERM_PROGRAM aliases. .. versionadded:: 0.8.0 )tuplesortedrrkeysr0r.r$r$Bs% ',..899 : ::r0tuples _RangeTuplecTg}|D]}|||sdS|d|dg}|ddD]O\}}|d\}}||kr"|ddt||f|d<8|||fPt |S)zJMerge multiple sorted range tuples into one sorted, non-overlapping tuple.r9c|dS)Nrr9)rs r.z_merge_ranges..Ts !A$r0)keyrrNr1)extendsortmaxappendr6)r: all_rangestmergedr+r,_prev_his r. _merge_rangesrJMs(*J ! rOOO'''m_FQRR.$$BBZ 7 == *Q-Wb)9)9:F2JJ MM2r( # # # # ==r0cPeZdZUdZded<ded<ded<ded<ded<ded<d S) TerminalOverridesz7Pre-merged override range tuples for a single terminal.r;narrower vs16_narrower vs15_widerzeroer narrow_wider narrow_zeroerN)__name__ __module__ __qualname____doc____annotations__r9r0r.rLrL_s`AAr0rLr9 )maxsizeterm_canonicalstrcttj|iddtj|iddt j|idd}t j|idd}t j|idd}ttj|iddtj|iddt j|idd}tj|idd}tj|idd}|s|s|s |s |s |stSt||||||S)zNReturn a TerminalOverrides, with all empty tuples when there are no overrides.rMr9widerrPrR) rJrgetrrrrr_EMPTY_OVERRIDESrL)rZrMrNrOrPrQrRs r.r#r#ms>2..22:rBB."--11*bAA."--11*bAAH #&~r::>>z2NNM#NB77;;GRHHJ >2..228R@@."--11(B??."--11(B??F $';;??LLL$(<<@@RTUUM    v  ,  X}j&)= : ::r0F term_program bool | str str | Nonec.|durdS|dur@tjddptjdd}|sdS|}t j||}|t vrdS|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_PROGRAMTERM)osenvironr^striplowerrr)r`r@ canonicals r.r"r"suttz~~nb99WRZ^^FTV=W=W t      $ $ & &C C%%I''t r0)r3r4)r:r;r3r;)rZr[r3rL)F)r`rar3rb)6rV __future__rrg functoolsrtypingrrtable_mcr table_wider table_zeror table_graphemer r r rtable_ambiguousrtable_overridesrrrrrrunicode_versionsrtable_term_programsrrintr;__all__ frozensetr(rrrrrrrr r!r$rJrLr_r#r"r9r0r.rzsEUU"""""" $$$$$$$$"!!!!!&&&&&&""""""::::::::::::1000000000000000000000 ,+++++99999999E#s(OS()  $) E %a ( +-H-KA-NQR-RSS):z:$9::  -//"% 1*(/&7&7;;;;$ %$RRR<< 2::::: 2r0