§
    s
Êj"#  ã                  óè   — d Z ddlmZ ddlm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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„Zdd„Ze	 G d„ d¦  «        ¦   «         ZdS )z4Helper functions for writing to terminals and files.é    )Úannotations)ÚSequenceN)Úfinal)ÚLiteral)ÚTextIO)ÚTerminalFormatter)ÚLexer)Ú	DiffLexer)ÚPythonLexeré   )Úassert_neveré   )ÚwcswidthÚreturnÚintc                 óF   — t          j        d¬¦  «        \  } }| dk     rd} | S )N)éP   é   )Úfallbacké(   r   )ÚshutilÚget_terminal_size)ÚwidthÚ_s     úJC:\Projects\Muse2API\.venv\Lib\site-packages\_pytest/_io/terminalwriter.pyÚget_terminal_widthr      s.   € ÝÔ'°Ð:Ñ:Ô:�H€Eˆ1ð ˆr‚z€zØˆà€Ló    Úfiler   Úboolc                ó¨  — 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                  óX  — e Zd Z edIi 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dXdYd.„ZedZd0„¦   «         Zej        d[d2„¦   «         ZedZd3„¦   «         Z	d\d8„Z
	 	 d]d^d>„Zd?d@œd_dC„Zd?d@œd`dD„ZdadbdG„ZdcdH„ZdddedM„ZdfdQ„ZdgdS„Z	 dhdidW„Zd)S )jÚTerminalWriterÚblacké   Úredé   Úgreené    Úyellowé!   Úblueé"   Úpurpleé#   Úcyané$   Úwhiteé%   ÚBlackr   ÚRedé)   ÚGreené*   ÚYellowé+   ÚBlueé,   ÚPurpleé-   ÚCyané.   ÚWhiteé/   Úboldr   Úlightr   Úblinké   Úinverté   Nr   úTextIO | Noner   ÚNonec                ó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   r]   s      r   Ú__init__zTerminalWriter.__init__K   sÈ   € Øˆ<Ý”:ˆDÝ�4˜Ñ"Ô"ð 	( t§{¢{¡}¤}ð 	(½¼ÈÒ9PÐ9Pð(Ø���ð  ×+Ò+¨DÑ1Ô1Ô8�ØÐ'Ð'Ð'Ð'øõ	 ð ð ð Ø�ðøøøð
 ˆŒ
Ý)¨$Ñ/Ô/ˆŒØˆÔØ+/ˆÔØ"ˆÔÐÐs   ÁA' Á'
A4Á3A4r   c                ó:   — | j         �| j         S t          ¦   «         S ©N)rd   r   ©rf   s    r   Ú	fullwidthzTerminalWriter.fullwidth\   s    € àÔÐ+ØÔ'Ð'Ý!Ñ#Ô#Ð#r   Úvaluec                ó   — || _         d S ri   )rd   )rf   rl   s     r   rk   zTerminalWriter.fullwidthb   s   € à$ˆÔÐÐr   c                ó*   — t          | j        ¦  «        S )z;Return an estimate of the width so far in the current line.)r   rc   rj   s    r   Úwidth_of_current_linez$TerminalWriter.width_of_current_linef   s   € õ ˜Ô*Ñ+Ô+Ð+r   ÚtextÚstrÚmarkupr   c                óä   ‡ — |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Úonrf   s      €r   ú
<listcomp>z)TerminalWriter.markup.<locals>.<listcomp>p   s)   ø€ ÐMÐMÐM©H¨D°"È"ÐM�4”> $Ô'ÐMÐMÐMr   rY   c              3  ó"   K  — | ]
}d |› d�V — ŒdS )z[ÚmNru   )rw   Úcods     r   ú	<genexpr>z(TerminalWriter.markup.<locals>.<genexpr>r   s*   è è € Ð=Ð=°#˜~ s˜~˜~˜~Ð=Ð=Ð=Ð=Ð=Ð=r   ú[0m)rv   Ú
ValueErrorrb   ÚitemsÚjoin)rf   rp   rr   rx   Úescs   `    r   rr   zTerminalWriter.markupk   sŸ   ø€ Øð 	>ð 	>ˆDØ˜4œ>Ð)Ð)Ý Ð!<°DÐ!<Ð!<Ñ=Ô=Ð=ð *àŒ>ð 	QØMÐMÐMÐM¸¿º¹¼ÐMÑMÔMˆCØð QØ—w’wÐ=Ð=¸Ð=Ñ=Ô=Ñ=Ô=ÀÑDÀyÑP�Øˆr   ÚsepcharÚtitleú
str | Nonerk   ú
int | Nonec                ó°  — |€| 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 )NrX   r   r   ú )rk   rZ   r\   ÚmaxÚlenÚrstripÚline)rf   r„   r…   rk   rr   ÚNÚfillr�   s           r   ÚsepzTerminalWriter.sepu   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 |¤Ž}|                      ||¬¦  «         d S d S )Nú
r   éÿÿÿÿr‘   )Úrsplitrc   rr   Ú	write_raw)rf   r“   r’   rr   Úcurrent_lines        r   ÚwritezTerminalWriter.writeš   s‰   € Øð 		-ØŸ:š: d¨AÑ.Ô.¨rÔ2ˆLØ�sˆ{ˆ{Ø%1�Ô"Ð"àÐ"Ô" lÑ2Ð"Ô"à�$”+˜cÐ,Ð, VÐ,Ð,ˆCà�NŠN˜3 eˆNÑ,Ô,Ð,Ð,Ð,ð		-ð 		-r   c               ó  — 	 | j                              |¦  «         nR# t          $ rE |                     d¦  «                             d¦  «        }| j                              |¦  «         Y nw xY w|r|                      ¦   «          d S d S )Nzunicode-escapeÚascii)ra   rš   ÚUnicodeEncodeErrorÚencodeÚdecoder’   )rf   r“   r’   s      r   r˜   zTerminalWriter.write_raw¦   sž   € ð
	"ØŒJ×Ò˜SÑ!Ô!Ð!Ð!øÝ!ð 	"ð 	"ð 	"ð —*’*Ð-Ñ.Ô.×5Ò5°gÑ>Ô>ˆCØŒJ×Ò˜SÑ!Ô!Ð!Ð!Ð!ð	"øøøð ð 	Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	s   ‚ �AA,Á+A,rY   Úsc                óL   —  | j         |fi |¤Ž |                       d¦  «         d S )Nr•   )rš   )rf   r    rr   s      r   r�   zTerminalWriter.line¶   s4   € ØˆŒ
�1ÐÐ˜ÐÐÐØ�
Š
�4ÑÔÐÐÐr   c                ó8   — | j                              ¦   «          d S ri   )ra   r’   rj   s    r   r’   zTerminalWriter.flushº   s   € ØŒ
×ÒÑÔÐÐÐr   ru   ÚlinesúSequence[str]Úindentsc                ó¬  — |rPt          |¦  «        t          |¦  «        k    r0t          dt          |¦  «        › dt          |¦  «        › d�¦  «        ‚|sdgt          |¦  «        z  }d                     |¦  «        }|                      |¦  «                             ¦   «         }t          ||d¬¦  «        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 (ú)rY   r•   F)ÚstrictN)r‹   r€   r‚   Ú
_highlightÚ
splitlinesÚzipr�   )rf   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¸uÐ EÑ EÔ Eð 	)ð 	)ÑˆF�HØ�IŠI�f˜xÑ'Ñ(Ô(Ð(Ð(ð	)ð 	)r   ÚlexerúLiteral['python', 'diff']r	   c                ót   — |dk    rt          ¦   «         S |dk    rt          ¦   «         S t          |¦  «         d S )NÚpythonÚdiff)r   r
   r   )rf   r±   s     r   Ú_get_pygments_lexerz"TerminalWriter._get_pygments_lexerÐ   s>   € Ø�HÒÐÝ‘=”=Ð Ø�fŠ_ˆ_Ý‘;”;Ðå˜ÑÔÐÐÐr   r   c                ó*  — ddl m} t          j        d¦  «        }t          j        dd¦  «        }	 t	          ||¬¦  «        S # t
          j        j        $ r} |d|› d�¦  «        |‚d }~wt
          j        j        $ r} |d	|› d
�¦  «        |‚d }~ww xY w)Nr   )Ú
UsageErrorÚPYTEST_THEMEÚPYTEST_THEME_MODEÚdark)Ú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'.)	Ú_pytest.config.exceptionsr¸   r)   Úgetenvr   ÚpygmentsÚutilÚClassNotFoundÚOptionError)rf   r¸   ÚthemeÚ
theme_modeÚes        r   Ú_get_pygments_formatterz&TerminalWriter._get_pygments_formatterØ   sõ   € Ø8Ð8Ð8Ð8Ð8Ð8å”	˜.Ñ)Ô)ˆÝ”YÐ2°FÑ;Ô;ˆ
ð	Ý$¨
¸%Ð@Ñ@Ô@Ð@øÝŒ}Ô*ð 	ð 	ð 	Ø�*ðSÈEð Sð Sð Sñô ð ðøøøøõ Œ}Ô(ð 	ð 	ð 	Ø�*ðGÐQ[ð Gð Gð Gñô ð ðøøøøð	øøøs#   ±A ÁBÁA&Á&BÁ=BÂBr´   r¬   úLiteral['diff', 'python']c                óö   — |r| j         r| j        s|S |                      |¦  «        }|                      ¦   «         }t	          j        |||¦  «        }|d         dk    r|d         dk    r
|dd…         }d|z   }|S )z5Highlight the given source if we have markup support.r–   r•   Nr   )rb   re   r¶   rÇ   rÀ   Ú	highlight)rf   r¬   r±   Úpygments_lexerÚpygments_formatterÚhighlighteds         r   r©   zTerminalWriter._highlightë   s¢   € ð ð 	˜Tœ^ð 	°4Ô3Fð 	ØˆMà×1Ò1°%Ñ8Ô8ˆØ!×9Ò9Ñ;Ô;Ðå#Ô-Ø�NÐ$6ñ
ô 
ˆð
 �rŒ?˜dÒ"Ð" v¨b¤z°TÒ'9Ð'9Ø% c r cÔ*ˆKð
   +Ñ-ˆàÐr   ri   )r   rU   r   rV   ©r   r   )rl   r   r   rV   )rp   rq   rr   r   r   rq   )NN)
r„   rq   r…   r†   rk   r‡   rr   r   r   rV   )r“   rq   r’   r   rr   r   r   rV   )r“   rq   r’   r   r   rV   )rY   )r    rq   rr   r   r   rV   )r   rV   )ru   )r£   r¤   r¥   r¤   r   rV   )r±   r²   r   r	   )r   r   )r´   )r¬   rq   r±   rÈ   r   rq   )Ú__name__Ú
__module__Ú__qualname__Údictrv   rg   Úpropertyrk   Úsetterro   rr   r�   rš   r˜   r�   r’   r°   r¶   rÇ   r©   ru   r   r   r/   r/   2   sœ  € € € € € à�ð ð ð ØˆbðàˆBðð ˆbðð ˆrð	ð
 ˆRðð ˆrðð ˆRðð ˆbðð ˆbðð ˆBðð ˆbðð ˆrðð ˆRðð ˆrðð ˆRðð  ˆbð!ð" ˆQð#ð$ ˆað%ð& ˆað'ð( ˆqð)€Ið.#ð #ð #ð #ð #ð" ð$ð $ð $ñ „Xð$ð
 Ôð%ð %ð %ñ Ôð%ð ð,ð ,ð ,ñ „Xð,ðð ð ð ð !Ø $ð	#"ð #"ð #"ð #"ð #"ðJ 05ð 
-ð 
-ð 
-ð 
-ð 
-ð 
-ð 49ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð)ð )ð )ð )ð )ð& ð  ð  ð  ðð ð ð ð( ?Gðð ð ð ð ð ð r   r/   rÎ   )r   r   r   r   )Ú__doc__Ú
__future__r   Úcollections.abcr   r)   r   rZ   Útypingr   r   r   rÀ   Úpygments.formatters.terminalr   Úpygments.lexerr	   Úpygments.lexers.diffr
   Úpygments.lexers.pythonr   Úcompatr   Úwcwidthr   r   r-   r/   ru   r   r   ú<module>rß      se  ðØ :Ð :à "Ð "Ð "Ð "Ð "Ð "à $Ð $Ð $Ð $Ð $Ð $Ø 	€	€	€	Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à €€€Ø :Ð :Ð :Ð :Ð :Ð :Ø  Ð  Ð  Ð  Ð  Ð  Ø *Ð *Ð *Ð *Ð *Ð *Ø .Ð .Ð .Ð .Ð .Ð .à !Ð !Ð !Ð !Ð !Ð !Ø Ð Ð Ð Ð Ð ðð ð ð ðð ð ð ð ðOð Oð Oð Oð Oñ Oô Oñ „ðOð Oð Or   