ó
    áÅŸgg$  ã                  óØ   • S r SSKJr  SSKrSSKrSSKrSSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKJr  S	S
KJr  SSKJr  \(       a  SSKJr  SSKJr  SS jrSS jr\ " S S5      5       rg)z4Helper functions for writing to terminals and files.é    )ÚannotationsN)Úfinal)ÚLiteral)ÚSequence)ÚTextIO)ÚTYPE_CHECKINGé   )Úassert_neveré   )Úwcswidth)Ú	Formatter)ÚLexerc                 óB   • [         R                  " SS9u  pU S:  a  Sn U $ )N)éP   é   )Úfallbacké(   r   )ÚshutilÚget_terminal_size)ÚwidthÚ_s     Ú[/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/_pytest/_io/terminalwriter.pyÚget_terminal_widthr      s'   € Ü×'Ò'°Ñ:�H€Eð ˆrƒzØˆà€Ló    c                ó¾  • [         R                  R                  S5      S:X  a  g[         R                  R                  S5      S:X  a  g[         R                  R                  S5      (       a  g[         R                  R                  S5      (       a  g[        U S5      =(       a9    U R	                  5       =(       a"    [         R                  R                  S	5      S
:g  $ )NÚ	PY_COLORSÚ1TÚ0FÚNO_COLORÚFORCE_COLORÚisattyÚTERMÚdumb)ÚosÚenvironÚgetÚhasattrr!   )Úfiles    r   Úshould_do_markupr)   $   s�   € Ü	‡z�z‡~�~�kÓ" cÓ)ØÜ	‡z�z‡~�~�kÓ" cÓ)ØÜ	‡z�z‡~�~�j×!Ñ!ØÜ	‡z�z‡~�~�m×$Ñ$Øä��hÓ×V D§K¡K£M×V´b·j±j·n±nÀVÓ6LÐPVÑ6Vðr   c                  óŠ  • \ rS rSr\" S60 SS_SS_SS_SS	_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S#_S$S%_S&S'_S(S)_6rS<S=S+ jjr\S>S, j5       r\R                  S?S- j5       r\S>S. j5       r
S@S/ jr  SA         SBS0 jjrS1S2.SCS3 jjrSDSES4 jjrSFS5 jrSGSHS7 jjrSIS8 jrSJS9 jr SK     SLS: jjrS;rg*)MÚTerminalWriteré2   Úblacké   Úredé   Úgreené    Úyellowé!   Úblueé"   Úpurpleé#   Úcyané$   Úwhiteé%   ÚBlackr   ÚRedé)   ÚGreené*   ÚYellowé+   ÚBlueé,   ÚPurpleé-   ÚCyané.   ÚWhiteé/   Úboldr   Úlightr	   Úblinké   Úinverté   Nc                ó`  • Uc  [         R                  n[        US5      (       aO  UR                  5       (       a:  [         R                  S:X  a&   SS KnUR                  U5      R                  nUc   e Xl	        [        U5      U l        SU l        S U l        SU l        g ! [         a     N8f = f)Nr!   Úwin32r   Ú T)ÚsysÚstdoutr'   r!   ÚplatformÚcoloramaÚAnsiToWin32ÚstreamÚImportErrorÚ_filer)   Ú	hasmarkupÚ_current_lineÚ_terminal_widthÚcode_highlight)Úselfr(   rX   s      r   Ú__init__ÚTerminalWriter.__init__K   s›   € Ø‰<Ü—:‘:ˆDÜ�4˜×"Ñ" t§{¡{§}¡}¼¿¹ÈÓ9Pð(Ûð  ×+Ñ+¨DÓ1×8Ñ8�ØÑ'Ð'Ñ'ØŒ
Ü)¨$Ó/ˆŒØˆÔØ+/ˆÔØ"ˆÕøô ó Ùðús   ÁB  Â 
B-Â,B-c                óH   • U R                   b  U R                   $ [        5       $ ©N)r_   r   ©ra   s    r   Ú	fullwidthÚTerminalWriter.fullwidth\   s#   € à×ÑÑ+Ø×'Ñ'Ð'Ü!Ó#Ð#r   c                ó   • Xl         g re   )r_   )ra   Úvalues     r   rg   rh   b   s   € à$Õr   c                ó,   • [        U R                  5      $ )z;Return an estimate of the width so far in the current line.)r   r^   rf   s    r   Úwidth_of_current_lineÚ$TerminalWriter.width_of_current_linef   s   € ô ˜×*Ñ*Ó+Ð+r   c                ó>  • U H!  nX0R                   ;  d  M  [        SU< 35      e   U R                  (       a^  UR                  5        VVs/ sH  u  p4U(       d  M  U R                   U   PM     nnnU(       a  SR	                  S U 5       5      U-   S-   nU$ s  snnf )Nzunknown markup: rT   c              3  ó,   #   • U H  nS U S3v •  M     g7f)z[ÚmN© )Ú.0Úcods     r   Ú	<genexpr>Ú(TerminalWriter.markup.<locals>.<genexpr>r   s   é € Ð=¹°#  s e¨1�~ºùs   ‚ú[0m)Ú	_esctableÚ
ValueErrorr]   ÚitemsÚjoin)ra   ÚtextÚmarkupÚnameÚonÚescs         r   r|   ÚTerminalWriter.markupk   sˆ   € ÛˆDØŸ>™>Õ)Ü Ð#3°D±8Ð!<Ó=Ð=ñ ð �>�>Ø8>¿¹¼ÔM¹©H¨DÌ"Ó'�4—>‘> $Ô'¹ˆCÑMÞØ—w‘wÑ=¹Ó=Ó=ÀÑDÀyÑP�Øˆùó Ns   ÁBÁBc                óˆ  • Uc  U R                   n[        R                  S:X  a  US-  nUb9  [        U[	        U5      -
  S-
  S[	        U5      -  -  S5      nX-  nU SU SU 3nOX[	        U5      -  -  n[	        U5      [	        UR                  5       5      -   U::  a  XqR                  5       -  nU R                  " U40 UD6  g )NrS   r   r	   Ú )rg   rU   rW   ÚmaxÚlenÚrstripÚline)ra   ÚsepcharÚtitlerg   r|   ÚNÚfillr†   s           r   ÚsepÚTerminalWriter.sepu   sË   € ð ÑØŸ™ˆIô �<‰<˜7Ó"ð
 ˜‰NˆIØÑô
 �Y¤ U£Ñ+¨aÑ/°Q¼¸W»Ñ5EÑFÈÓJˆAØ‘;ˆDØ�V˜1˜U˜G 1 T FÐ+‰Dð ¬3¨w«<Ñ7Ñ8ˆDô ˆt‹9”s˜7Ÿ>™>Ó+Ó,Ñ,°	Ó9Ø—N‘NÓ$Ñ$ˆDà�	Š	�$Ñ!˜&Ó!r   F)Úflushc               ó¦  • U(       a  UR                  SS5      S   nSU;   a  X@l        OU =R                  U-  sl        U R                  " U40 UD6n U R                  R	                  U5        U(       a  U R                  5         g g g ! [
         a>    UR                  S5      R                  S5      nU R                  R	                  U5         Naf = f)NÚ
r   éÿÿÿÿzunicode-escapeÚascii)	Úrsplitr^   r|   r\   ÚwriteÚUnicodeEncodeErrorÚencodeÚdecoder�   )ra   Úmsgr�   r|   Úcurrent_lines        r   r“   ÚTerminalWriter.writeš   s¹   € ÞØŸ:™: d¨AÓ.¨rÑ2ˆLØ�s‹{Ø%1Õ"à×"Ò" lÑ2Õ"à—+’+˜cÑ, VÑ,ˆCð
&Ø—
‘
× Ñ  Ô%ö Ø—
‘
•ð ð+ øô &ó &ð —j‘jÐ!1Ó2×9Ñ9¸'ÓB�Ø—
‘
× Ñ  Ö%ð&ús   ÁB ÂACÃCc                óL   • U R                   " U40 UD6  U R                  S5        g )Nr�   )r“   )ra   Úsr|   s      r   r†   ÚTerminalWriter.line³   s   € Ø�
Š
�1Ñ˜ÒØ�
‰
�4Õr   c                ó8   • U R                   R                  5         g re   )r\   r�   rf   s    r   r�   ÚTerminalWriter.flush·   s   € Ø�
‰
×ÑÕr   rq   c                ód  • U(       a<  [        U5      [        U5      :w  a$  [        S[        U5       S[        U5       S35      eU(       d  S/[        U5      -  nSR                  U5      nU R                  U5      R	                  5       n[        X$5       H  u  pVU R                  XV-   5        M     g)a)  Write 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.
zindents size (z") should have same size as lines (Ú)rT   r�   N)r„   rx   rz   Ú
_highlightÚ
splitlinesÚzipr†   )ra   ÚlinesÚindentsÚsourceÚ	new_linesÚindentÚnew_lines          r   Ú_write_sourceÚTerminalWriter._write_sourceº   sž   € ö ”s˜7“|¤s¨5£zÓ1ÜØ ¤ W£ Ð.PÔQTÐUZÓQ[ÐP\Ð\]Ð^óð ö Ø�dœS ›ZÑ'ˆGØ—‘˜5Ó!ˆØ—O‘O FÓ+×6Ñ6Ó8ˆ	Ü # GÖ 7ÑˆFØ�I‰I�fÑ'Ö(ò !8r   c                óˆ   •  US:X  a  SSK Jn  U" 5       $ US:X  a  SSKJn  U" 5       $ [	        U5        g ! [
         a     g f = f)NÚpythonr   )ÚPythonLexerÚdiff)Ú	DiffLexer)Úpygments.lexers.pythonr®   Úpygments.lexers.diffr°   r
   ÚModuleNotFoundError)ra   Úlexerr®   r°   s       r   Ú_get_pygments_lexerÚ"TerminalWriter._get_pygments_lexerÌ   sF   € ð	Ø˜Ó Ý>á"“}Ð$Ø˜&“Ý:á “{Ð"ä˜UÕ#øÜ"ó 	Ùð	ús   ‚4 •4 ¨4 ´
AÁ Ac                ó^  •  SS K nSSKJn  [        R
                  " S5      n[        R
                  " SS5      n SSKJn  U" XCS9$ ! [         a     g f = f! UR                  R                   a  nU" SU S	35      UeS nAfUR                  R                   a  nU" S
U S35      UeS nAff = f)Nr   )Ú
UsageErrorÚPYTEST_THEMEÚPYTEST_THEME_MODEÚdark)ÚTerminalFormatter)ÚbgÚstylez9PYTEST_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'.)Úpygments.utilr³   Ú_pytest.config.exceptionsr¸   r$   ÚgetenvÚpygments.formatters.terminalr¼   ÚutilÚClassNotFoundÚOptionError)ra   Úpygmentsr¸   ÚthemeÚ
theme_moder¼   Úes          r   Ú_get_pygments_formatterÚ&TerminalWriter._get_pygments_formatterÛ   sÓ   € ð	Û õ 	9ä—	’	˜.Ó)ˆÜ—Y’YÐ2°FÓ;ˆ
ð	ÝFá$¨
Ñ@Ð@øô #ó 	Ùð	ûð �}‰}×*Ñ*ó 	ÙØKÈEÈ7ð SSð Sóð ðûð �}‰}×(Ñ(ó 	ÙØPÐQ[ÐP\ð ]Gð Góð ðûð	ús4   ‚A ºA Á
AÁAÁB,Á0A=Á=B,ÂB'Â'B,c                ó  • U(       a"  U R                   (       a  U R                  (       d  U$ U R                  U5      nUc  U$ U R                  5       nUc  U$ SSKJn  U" XU5      nUS   S:X  a  US   S:w  a  USS nSU-   nU$ )z5Highlight the given source if we have markup support.Nr   )Ú	highlightr�   r�   rv   )r]   r`   rµ   rÊ   rÆ   rÍ   )ra   r¦   r´   Úpygments_lexerÚpygments_formatterrÍ   Úhighlighteds          r   r¡   ÚTerminalWriter._highlightö   s–   € ö ˜TŸ^Ÿ^°4×3F×3FØˆMà×1Ñ1°%Ó8ˆØÑ!ØˆMà!×9Ñ9Ó;ÐØÑ%ØˆMå&á$ VÐ=OÓPˆð �r‰?˜dÓ" v¨b¡z°TÓ'9Ø% c rÐ*ˆKð
   +Ñ-ˆàÐr   )r^   r\   r_   r`   r]   re   )r(   zTextIO | NoneÚreturnÚNone©rÒ   Úint)rj   rÕ   rÒ   rÓ   )r{   Ústrr|   ÚboolrÒ   rÖ   )NN)
r‡   rÖ   rˆ   z
str | Nonerg   z
int | Noner|   r×   rÒ   rÓ   )r—   rÖ   r�   r×   r|   r×   rÒ   rÓ   )rT   )r›   rÖ   r|   r×   rÒ   rÓ   )rÒ   rÓ   )rq   )r¤   úSequence[str]r¥   rØ   rÒ   rÓ   )r´   zLiteral['python', 'diff']rÒ   zLexer | None)rÒ   zFormatter | None)r­   )r¦   rÖ   r´   zLiteral['diff', 'python']rÒ   rÖ   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Údictrw   rb   Úpropertyrg   Úsetterrl   r|   r‹   r“   r†   r�   rª   rµ   rÊ   r¡   Ú__static_attributes__rq   r   r   r+   r+   2   s¥  † áò Ùðáðñ ðñ ð	ñ
 ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ ðñ  ð!ñ" ð#ñ$ ð%ñ& ð'ñ( ð)€Iö.#ð" ó$ó ð$ð
 ×Ñó%ó ð%ð ó,ó ð,ôð !Ø $ð	#"àð#"ð ð#"ð ð	#"ð
 ð#"ð 
õ#"ðJ 05÷ ö2ôö)ô$ôð8 ?GðØðØ";ðà	÷ð r   r+   rÔ   )r(   r   rÒ   r×   )Ú__doc__Ú
__future__r   r$   r   rU   Útypingr   r   r   r   r   Úcompatr
   Úwcwidthr   Úpygments.formatterr   Úpygments.lexerr   r   r)   r+   rq   r   r   Ú<module>rè      sZ   ðÙ :å "ã 	Û Û 
Ý Ý Ý Ý Ý  å !Ý ö Ý,Ý$ôôð ÷_ð _ó ñ_r   