§
    öyIfß"  ã                   ó¼   — d Z ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ d
dlmZ defd„Zde	defd„Ze G d„ d¦  «        ¦   «         ZdS )z4Helper functions for writing to terminals and files.é    N)Úfinal)ÚLiteral)ÚOptional)ÚSequence)ÚTextIOé   )Úassert_neveré   )ÚwcswidthÚreturnc                  óF   — t          j        d¬¦  «        \  } }| dk     rd} | S )N)éP   é   )Úfallbacké(   r   )ÚshutilÚget_terminal_size)ÚwidthÚ_s     úN/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/_io/terminalwriter.pyÚget_terminal_widthr      s.   € ÝÔ'°Ð:Ñ:Ô:�H€Eˆ1ð ˆr‚z€zØˆà€Ló    Úfilec                 ó¨  — t           j                             d¦  «        dk    rdS t           j                             d¦  «        dk    rdS t           j                             d¦  «        rdS t           j                             d¦  «        rdS t          | d¦  «        o6|                      ¦   «         o"t           j                             d	¦  «        d
k    S )NÚ	PY_COLORSÚ1TÚ0FÚNO_COLORÚFORCE_COLORÚisattyÚTERMÚdumb)ÚosÚenvironÚgetÚhasattrr    )r   s    r   Úshould_do_markupr'      s¬   € Ý	„z‡~‚~�kÑ"Ô" cÒ)Ð)ØˆtÝ	„z‡~‚~�kÑ"Ô" cÒ)Ð)ØˆuÝ	„z‡~‚~�jÑ!Ô!ð ØˆuÝ	„z‡~‚~�mÑ$Ô$ð Øˆtå��hÑÔÐV D§K¢K¡M¤MÐVµb´j·n²nÀVÑ6LÔ6LÐPVÒ6Vðr   c                   óî  — e Zd Z edAi dd“dd“dd“dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd “d!d"“d#d$“d%d&“d'd(“ŽZdJd*ee         d+d)fd,„Zed+e	fd-„¦   «         Z
e
j        d.e	d+d)fd/„¦   «         Z
ed+e	fd0„¦   «         Zd1ed2ed+efd3„Z	 	 dKd4ed5ee         d6ee	         d2ed+d)f
d7„Zd8d9œd:ed;ed2ed+d)fd<„ZdLd>ed2ed+d)fd?„ZdMd@„ZdNdBee         dCee         d+d)fdD„Z	 dOdFedGedH         d+efdI„Zd)S )PÚTerminalWriterÚblacké   Úredé   Úgreené    Úyellowé!   Úblueé"   Úpurpleé#   Úcyané$   Úwhiteé%   ÚBlackr   ÚRedé)   ÚGreené*   ÚYellowé+   ÚBlueé,   ÚPurpleé-   ÚCyané.   ÚWhiteé/   Úboldr
   Úlightr   Úblinké   Úinverté   Nr   r   c                 óR  — |€t           j        }t          |d¦  «        rX|                     ¦   «         rDt           j        dk    r4	 dd l}|                     |¦  «        j        }|€J ‚n# t          $ r Y nw xY w|| _	        t          |¦  «        | _        d| _        d | _        d| _        d S )Nr    Úwin32r   Ú T)ÚsysÚstdoutr&   r    ÚplatformÚcoloramaÚAnsiToWin32ÚstreamÚImportErrorÚ_filer'   Ú	hasmarkupÚ_current_lineÚ_terminal_widthÚcode_highlight)Úselfr   rU   s      r   Ú__init__zTerminalWriter.__init__D   sÈ   € Øˆ<Ý”:ˆDÝ�4˜Ñ"Ô"ð 	( t§{¢{¡}¤}ð 	(½¼ÈÒ9PÐ9Pð(Ø���ð  ×+Ò+¨DÑ1Ô1Ô8�ØÐ'Ð'Ð'Ð'øõ	 ð ð ð Ø�ðøøøð
 ˆŒ
Ý)¨$Ñ/Ô/ˆŒØˆÔØ.2ˆÔØ"ˆÔÐÐs   ÁA' Á'
A4Á3A4c                 ó:   — | j         �| j         S t          ¦   «         S ©N)r\   r   ©r^   s    r   Ú	fullwidthzTerminalWriter.fullwidthU   s    € àÔÐ+ØÔ'Ð'Ý!Ñ#Ô#Ð#r   Úvaluec                 ó   — || _         d S ra   )r\   )r^   rd   s     r   rc   zTerminalWriter.fullwidth[   s   € à$ˆÔÐÐr   c                 ó*   — t          | j        ¦  «        S )z;Return an estimate of the width so far in the current line.)r   r[   rb   s    r   Úwidth_of_current_linez$TerminalWriter.width_of_current_line_   s   € õ ˜Ô*Ñ+Ô+Ð+r   ÚtextÚmarkupc                 óä   ‡ — |D ]}|‰ j         vrt          d|›�¦  «        ‚Œ‰ j        rGˆ fd„|                     ¦   «         D ¦   «         }|r%d                     d„ |D ¦   «         ¦  «        |z   dz   }|S )Nzunknown markup: c                 ó4   •— g | ]\  }}|¯‰j         |         ‘ŒS © )Ú	_esctable)Ú.0ÚnameÚonr^   s      €r   ú
<listcomp>z)TerminalWriter.markup.<locals>.<listcomp>i   s)   ø€ ÐMÐMÐM©H¨D°"È"ÐM�4”> $Ô'ÐMÐMÐMr   rQ   c              3   ó    K  — | ]	}d |z  V — Œ
dS )z[%smNrl   )rn   Úcods     r   ú	<genexpr>z(TerminalWriter.markup.<locals>.<genexpr>k   s'   è è € Ð?Ð?°C˜z¨CÑ/Ð?Ð?Ð?Ð?Ð?Ð?r   ú[0m)rm   Ú
ValueErrorrZ   ÚitemsÚjoin)r^   rh   ri   ro   Úescs   `    r   ri   zTerminalWriter.markupd   sŸ   ø€ Øð 	>ð 	>ˆDØ˜4œ>Ð)Ð)Ý Ð!<°DÐ!<Ð!<Ñ=Ô=Ð=ð *àŒ>ð 	SØMÐMÐMÐM¸¿º¹¼ÐMÑMÔMˆCØð SØ—w’wÐ?Ð?¸3Ð?Ñ?Ô?Ñ?Ô?À$ÑFÈÑR�Øˆr   ÚsepcharÚtitlerc   c                 ó°  — |€| j         }t          j        dk    r|dz  }|�Ft          |t	          |¦  «        z
  dz
  dt	          |¦  «        z  z  d¦  «        }||z  }|› d|› d|› �}n||t	          |¦  «        z  z  }t	          |¦  «        t	          |                     ¦   «         ¦  «        z   |k    r||                     ¦   «         z  } | j        |fi |¤Ž d S )NrP   r
   r   ú )rc   rR   rT   ÚmaxÚlenÚrstripÚline)r^   rz   r{   rc   ri   ÚNÚfillr�   s           r   ÚsepzTerminalWriter.sepn   sý   € ð ÐØœˆIõ Œ<˜7Ò"Ð"ð
 ˜‰NˆIØÐõ
 �Y¥ U¡¤Ñ+¨aÑ/°Q½¸W¹¼Ñ5EÑFÈÑJÔJˆAØ˜Q‘;ˆDØÐ+Ð+˜UÐ+Ð+ TÐ+Ð+ˆDˆDð ˜i­3¨w©<¬<Ñ7Ñ8ˆDõ ˆt‰9Œ9•s˜7Ÿ>š>Ñ+Ô+Ñ,Ô,Ñ,°	Ò9Ð9Ø�G—N’NÑ$Ô$Ñ$ˆDàˆŒ	�$Ð!Ð!˜&Ð!Ð!Ð!Ð!Ð!r   F)ÚflushÚmsgr…   c                ó¦  — |rÌ|                      dd¦  «        d         }d|v r|| _        n| xj        |z  c_         | j        |fi |¤Ž}	 | j                             |¦  «         nR# t
          $ rE |                     d¦  «                             d¦  «        }| j                             |¦  «         Y nw xY w|r|                      ¦   «          d S d S d S )Nú
r
   éÿÿÿÿzunicode-escapeÚascii)	Úrsplitr[   ri   rY   ÚwriteÚUnicodeEncodeErrorÚencodeÚdecoder…   )r^   r†   r…   ri   Úcurrent_lines        r   rŒ   zTerminalWriter.write“   s	  € Øð 	ØŸ:š: d¨AÑ.Ô.¨rÔ2ˆLØ�sˆ{ˆ{Ø%1�Ô"Ð"àÐ"Ô" lÑ2Ð"Ô"à�$”+˜cÐ,Ð, VÐ,Ð,ˆCð
&Ø”
× Ò  Ñ%Ô%Ð%Ð%øÝ%ð &ð &ð &ð —j’jÐ!1Ñ2Ô2×9Ò9¸'ÑBÔB�Ø”
× Ò  Ñ%Ô%Ð%Ð%Ð%ð&øøøð ð Ø—
’
‘”���ð-	ð 	ð*ð s   Á
A% Á%AB4Â3B4rQ   Úsc                 óL   —  | j         |fi |¤Ž |                       d¦  «         d S )Nrˆ   )rŒ   )r^   r‘   ri   s      r   r�   zTerminalWriter.line¬   s4   € ØˆŒ
�1ÐÐ˜ÐÐÐØ�
Š
�4ÑÔÐÐÐr   c                 ó8   — | j                              ¦   «          d S ra   )rY   r…   rb   s    r   r…   zTerminalWriter.flush°   s   € ØŒ
×ÒÑÔÐÐÐr   rl   ÚlinesÚindentsc                 ó¨  — |rPt          |¦  «        t          |¦  «        k    r0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚|sdgt          |¦  «        z  }d                     |¦  «        }|                      |¦  «                             ¦   «         }t          ||¦  «        D ]\  }}|                      ||z   ¦  «         ŒdS )aI  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 (ú)rQ   rˆ   N)r   rv   rx   Ú
_highlightÚ
splitlinesÚzipr�   )r^   r”   r•   ÚsourceÚ	new_linesÚindentÚnew_lines          r   Ú_write_sourcezTerminalWriter._write_source³   sæ   € ð ð 	•s˜7‘|”|¥s¨5¡z¤zÒ1Ð1ÝØ^¥ W¡¤Ð^Ð^ÕQTÐUZÑQ[ÔQ[Ð^Ð^Ð^ñô ð ð ð 	(Ø�d�S ™ZœZÑ'ˆGØ—’˜5Ñ!Ô!ˆØ—O’O FÑ+Ô+×6Ò6Ñ8Ô8ˆ	Ý # G¨YÑ 7Ô 7ð 	)ð 	)ÑˆF�HØ�IŠI�f˜xÑ'Ñ(Ô(Ð(Ð(ð	)ð 	)r   Úpythonr›   Úlexer)Údiffr    c           
      óº  — ddl m} |r| j        r| j        s|S 	 ddlm} |dk    rddlm} n|dk    rddlm	} nt          |¦  «         ddlm} dd	l}	  || |¦   «          |t          j        d
d¦  «        t          j        d¦  «        ¬¦  «        ¦  «        }|d         dk    r|d         dk    r
|d	d…         }d|z   S # |j        j        $ r6}	 |d                     t          j        d¦  «        ¦  «        ¦  «        |	‚d	}	~	w|j        j        $ r6}	 |d                     t          j        d
¦  «        ¦  «        ¦  «        |	‚d	}	~	ww xY w# t(          $ r |cY S w xY w)z5Highlight the given source if we have markup support.r   )Ú
UsageError)ÚTerminalFormatterr    )ÚPythonLexerr¢   )Ú	DiffLexer)Ú	highlightNÚPYTEST_THEME_MODEÚdarkÚPYTEST_THEME)ÚbgÚstyler‰   rˆ   ru   zdPYTEST_THEME environment variable had an invalid value: '{}'. Only valid pygment styles are allowed.zrPYTEST_THEME_MODE environment variable had an invalid value: '{}'. The only allowed values are 'dark' and 'light'.)Ú_pytest.config.exceptionsr¤   rZ   r]   Úpygments.formatters.terminalr¥   Úpygments.lexers.pythonr¦   Úpygments.lexers.diffr§   r	   Úpygmentsr¨   Úpygments.utilr#   ÚgetenvÚutilÚClassNotFoundÚformatÚOptionErrorrX   )
r^   r›   r¡   r¤   r¥   ÚLexerr¨   r²   ÚhighlightedÚes
             r   r˜   zTerminalWriter._highlightÅ   s$  € ð 	9Ð8Ð8Ð8Ð8Ð8àð 	˜Tœ^ð 	°4Ô3Fð 	ØˆMð-	ØFÐFÐFÐFÐFÐFà˜Ò Ð ØGÐGÐGÐGÐGÐGÐGØ˜&’�ØCÐCÐCÐCÐCÐCÐCå˜UÑ#Ô#Ð#Ø*Ð*Ð*Ð*Ð*Ð*Ø Ð Ð Ð ðØ#, 9ØØ�E‘G”GØ%Ð%Ýœ9Ð%8¸&ÑAÔAÝ œi¨Ñ7Ô7ðñ ô ñ$ô $�ð ˜r”? dÒ*Ð*¨v°b¬z¸TÒ/AÐ/AØ"-¨c¨r¨cÔ"2�Kð
 ! ;Ñ.Ð.øØ”=Ô.ð ð ð Ø �jð=ß=CºVÝœ	 .Ñ1Ô1ñ>ô >ñô ð
 ðøøøøð ”=Ô,ð ð ð Ø �jðFßFLÂfÝœ	Ð"5Ñ6Ô6ñGô Gñô ð
 ðøøøøðøøøøõ9 ð 	ð 	ð 	ØˆMˆMˆMð	øøøs6   š9E ÁA+C  Ã EÃ1D Ä EÄ1EÅEÅEÅEra   )NN)rQ   )r   N)rl   )r    )Ú__name__Ú
__module__Ú__qualname__Údictrm   r   r   r_   ÚpropertyÚintrc   Úsetterrg   ÚstrÚboolri   r„   rŒ   r�   r…   r   rŸ   r   r˜   rl   r   r   r)   r)   +   s:  € € € € € à�ð ð ð ØˆbðàˆBðð ˆbðð ˆrð	ð
 ˆRðð ˆrðð ˆRðð ˆbðð ˆbðð ˆBðð ˆbðð ˆrðð ˆRðð ˆrðð ˆRðð  ˆbð!ð" ˆQð#ð$ ˆað%ð& ˆað'ð( ˆqð)€Ið.#ð #˜X fÔ-ð #¸ð #ð #ð #ð #ð" ð$˜3ð $ð $ð $ñ „Xð$ð
 Ôð%˜sð % tð %ð %ð %ñ Ôð%ð ð, sð ,ð ,ð ,ñ „Xð,ð˜3ð ¨$ð °3ð ð ð ð ð  $Ø#'ð	#"ð #"àð#"ð ˜Œ}ð#"ð ˜C”=ð	#"ð
 ð#"ð 
ð#"ð #"ð #"ð #"ðJ 05ð ð ð ˜ð ¨ð Àð Èð ð ð ð ð2ð �cð ¨$ð °4ð ð ð ð ðð ð ð ð)ð ) 8¨C¤=ð )¸8ÀC¼=ð )ÐRVð )ð )ð )ð )ð& ?Gð6ð 6Øð6Ø")Ð*:Ô";ð6à	ð6ð 6ð 6ð 6ð 6ð 6r   r)   )Ú__doc__r#   r   rR   Útypingr   r   r   r   r   Úcompatr	   Úwcwidthr   rÁ   r   rÄ   r'   r)   rl   r   r   ú<module>rÉ      s)  ðØ :Ð :à 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ð˜Cð ð ð ð ð˜6ð  dð ð ð ð ð ðOð Oð Oð Oð Oñ Oô Oñ „ðOð Oð Or   