j7i"#dZddlmZddlmZddlZddlZddlZddlm Z ddlm Z ddlm Z ddl Z ddl mZdd lmZdd lmZdd lmZd d lmZddlmZddZddZe GddZy)z4Helper functions for writing to terminals and files.) annotations)SequenceN)final)Literal)TextIO)TerminalFormatter)Lexer) DiffLexer) PythonLexer) assert_never)wcswidthcFtjd\}}|dkrd}|S)N)P)fallback(r)shutilget_terminal_size)width_s c/mnt/ssd/data/python-lab/ChefSystem/venv/lib/python3.12/site-packages/_pytest/_io/terminalwriter.pyget_terminal_widthrs)'':HE1 rz Lctjjddk(rytjjddk(rytjjdrytjjdryt|dxr4|j xr"tjjd d k7S) N PY_COLORS1T0FNO_COLOR FORCE_COLORisattyTERMdumb)osenvirongethasattrr")files rshould_do_markupr*$s zz~~k"c) zz~~k"c) zz~~j! zz~~m$hVDKKMVbjjnnV6LPV6VrcjeZdZed6iddddddddd d d d d ddddddddddddddddddd d!d"d#d$d%d&d'd(Zd;dd,Zed=d-Z d?d.Z d@ dAd/Z d0d1dBd2Z d0d1dCd3Z dDdEd4ZdFd5ZdGdHd7ZdId8ZdJd9Z dK dLd:Zy))MTerminalWriterblackredgreen yellow!blue"purple#cyan$white%BlackrRed)Green*Yellow+Blue,Purple-Cyan.White/boldrlightr blinkinvertNcD|tj}t|drG|jr7tjdk(r$ ddl}|j |j}|J||_ t||_ d|_ d|_ d|_y#t$rY8wxYw)Nr"win32rT)sysstdoutr(r"platformcolorama AnsiToWin32stream ImportError_filer* hasmarkup _current_line_terminal_widthcode_highlight)selfr)rXs r__init__zTerminalWriter.__init__Ks <::D 4 "t{{}9P ( ++D188''' )$/+/"  sB BBcF|j |jStSN)r_rras r fullwidthzTerminalWriter.fullwidth\s#    +'' '!##rc||_yrd)r_)ravalues rrfzTerminalWriter.fullwidthbs $rc,t|jS)z;Return an estimate of the width so far in the current line.)rr^res rwidth_of_current_linez$TerminalWriter.width_of_current_linefs**++rc |D]}||jvstd||jrR|jDcgc]\}}|s |j|}}}|rdj d|D|zdz}|Scc}}w)Nzunknown markup: rTc3(K|] }d|d yw)z[mN).0cods r z(TerminalWriter.markup..rs=#se1~=s) _esctable ValueErrorr]itemsjoin)ratextmarkupnameonescs rrxzTerminalWriter.markupks >D4>>) #3D8!<== > >>8> MHD""4>>$'MCMww===DyP Ns  BBc | |j}tjdk(r|dz}|:t|t |z dz dt |zzd}||z}|d|d|}n||t |zz}t |t |j z|kr||j z }|j |fi|y)NrSrr  )rfrUrWmaxlenrstripline)rasepchartitlerfrxNfillrs rsepzTerminalWriter.sepus  I <<7 " NI   YU+a/QW5EFJAQ;DV1UG1TF+Di3w<78D t9s7>>+, , 9 GNN$ $D $!&!rFflushc |r]|jddd}d|vr||_n|xj|z c_|j|fi|}|j||yy)N rr)rsplitr^rx write_raw)ramsgrrx current_lines rwritezTerminalWriter.writesd ::dA.r2Ls{%1"""l2"$++c,V,C NN3eN , rc |jj||r|j yy#t$r>|jdj d}|jj|YZwxYw)Nzunicode-escapeascii)r\rUnicodeEncodeErrorencodedecoder)rarrs rrzTerminalWriter.write_rawsk " JJ  S !  JJL " "**-.55g>C JJ  S ! "s1AA87A8c L|j|fi||jdy)Nr)r)rasrxs rrzTerminalWriter.lines! 1 4rc8|jjyrd)r\rres rrzTerminalWriter.flushs rrncT|r;t|t|k7r$tdt|dt|d|sdgt|z}dj|}|j|j }t ||dD]\}}|j ||zy) aIWrite lines of source code possibly highlighted. Keeping this private for now because the API is clunky. We should discuss how to evolve the terminal writer so we can have more precise color support, for example being able to write part of a line in one color and the rest in another, and so on. zindents size (z") should have same size as lines ()rTrF)strictN)rrtrv _highlight splitlineszipr)ralinesindentssource new_linesindentnew_lines r _write_sourcezTerminalWriter._write_sources s7|s5z1 W.PQTUZQ[P\\]^ dSZ'G5!OOF+668 #GYu E ) FH IIfx' ( )rcV|dk(r tS|dk(r tSt|y)Npythondiff)r r r )ralexers r_get_pygments_lexerz"TerminalWriter._get_pygments_lexers) H = f_;   rc>ddlm}tjd}tjdd} t ||S#t j j$r}|d|d|d}~wt j j$r}|d |d |d}~wwxYw) Nr) UsageError PYTEST_THEMEPYTEST_THEME_MODEdark)bgstylez9PYTEST_THEME environment variable has an invalid value: 'zC'. Hint: See available pygments styles with `pygmentize -L styles`.z>PYTEST_THEME_MODE environment variable has an invalid value: 'z7'. The allowed values are 'dark' (default) and 'light'.) _pytest.config.exceptionsrr%getenvrpygmentsutil ClassNotFound OptionError)rartheme theme_modees r_get_pygments_formatterz&TerminalWriter._get_pygments_formatters8 .)YY2F;  $ %@ @}}** KE7SSS }}(( PQ[P\]GG  s# AB A** B BBc|r|jr |js|S|j|}|j}t j |||}|ddk(r |ddk7r|dd}d|z}|S)z5Highlight the given source if we have markup support.rrNrr)r]r`rrr highlight)rarrpygments_lexerpygments_formatter highlighteds rrzTerminalWriter._highlightsT^^43F3FM11%8!99;#-- N$6 r?d "vbzT'9%cr*K  +- rrd)r)z TextIO | NonereturnNonerint)rhrrr)rwstrrxboolrr)NN) rrrz str | Nonerfz int | Nonerxrrr)rrrrrxrrr)rrrrrr)rT)rrrxrrr)rr)rn)r Sequence[str]rrrr)rzLiteral['python', 'diff']rr )rr)r)rrrzLiteral['diff', 'python']rr)__name__ __module__ __qualname__dictrsrbpropertyrfsetterrjrxrrrrrrrrrrnrrr,r,2s        !"#$%&'()I.#"$$ %%,,! $ #"#"#" #"  #"  #"J05 -49 )& (?G"; rr,r)r)rrr)__doc__ __future__rcollections.abcrr%rrUtypingrrrrpygments.formatters.terminalrpygments.lexerr pygments.lexers.diffr pygments.lexers.pythonr compatr wcwidthrrr*r,rnrrrs[:"$ : *.!  OOOr