§
    øÛg@T  ã                   óÀ   — d Z ddlmZmZmZmZmZ ddlZddlZddl	Z	ddl
Z
ddlZddlmZ d„ Zd„ Zd„ Zd„ Z G d„ d	¦  «        Z G d
„ d¦  «        Zdd„Zd„ Zd„ Zd„ ZdS )zt terminal reporting of the full testing process.

This is a good source for looking at the various reporting hooks.
é    )ÚEXIT_OKÚEXIT_TESTSFAILEDÚEXIT_INTERRUPTEDÚEXIT_USAGEERRORÚEXIT_NOTESTSCOLLECTEDNc           	      óò  — |                       ddd¬¦  «        }|                     ddddd	d
¬¦  «        f |                     ddddd	d¬¦  «        f |                     dddddd¬¦  «         |                     ddddd¬¦  «         |                     dddddd ¬¦  «         |                     d!d"dd#d$g d%¢d&¬'¦  «         |                     d(d)ddd*¬+¦  «         |                     d,d-dd-d$g d.¢d/¬'¦  «         d S )0Nzterminal reportingÚ	reportingÚgeneral)Úafterz-vz	--verboseÚcountÚverboser   zincrease verbosity.)ÚactionÚdestÚdefaultÚhelpz-qz--quietÚquietzdecrease verbosity.z-rÚstoreÚreportcharsÚ Úcharszøshow extra test summary info as specified by chars (f)ailed, (E)error, (s)skipped, (x)failed, (X)passed, (p)passed, (P)passed with output, (a)all except pP. The pytest warnings are displayed at all times except when --disable-pytest-warnings is set)r   r   r   Úmetavarr   z--disable-pytest-warningsFÚdisablepytestwarningsÚ
store_truez-disable warnings summary, overrides -r w flag)r   r   r   r   z-lz--showlocalsÚ
showlocalsz0show locals in tracebacks (disabled by default).z--tbÚstyleÚtbstyleÚauto)r   ÚlongÚshortÚnoÚlineÚnativez6traceback print mode (auto/long/short/line/native/no).)r   r   r   r   Úchoicesr   z--fulltracez--full-tracez-don't cut any tracebacks (default is to cut).)r   r   r   z--colorÚcolor)Úyesr    r   z$color terminal output (yes/no/auto).)ÚgetgroupÚ
_addoption)ÚparserÚgroups     úF/granary/edev/quantum/lib/python3.11/site-packages/_pytest/terminal.pyÚpytest_addoptionr+      sµ  € Ø�OŠOÐ0°+ÀYˆOÑOÔO€EØ	×Ò�T˜;¨wØ qÐ/Dð ñ Fô Fð Gð Gà	×Ò�T˜9¨WØ QÐ-Bð ñ Dô Dð Eð Eà	×Ò�TØ˜m°RÀð1ð ñ 2ô 2ð 2ð 
×ÒÐ0¸%Ø1¸,ØIð ñ Kô Kð Kð 
×Ò�T˜>Ø <¸Ø@ð ñ Bô Bð Bð 
×Ò�V WØ I°vØHÐHÐHØLð ñ Nô Nð Nð 
×Ò�] NØ"¨EØCð ñ Eô Eð Eð 
×Ò�Y¨Ø G°VØ,Ð,Ð,Ø:ð ñ <ô <ð <ð <ð <ó    c                 ó.  ‡— | j         xj        | j         j        z  c_        t          | t          j        ¦  «        Š| j                             ‰d¦  «         | j         j        s| j         j	        r'ˆfd„}| j
        j                             d|¦  «         d S d S )NÚterminalreporterc                 óˆ   •— d                      t          t          |¦  «        ¦  «        }‰                     d|z   ¦  «         d S )Nú z[traceconfig] )ÚjoinÚmapÚstrÚ
write_line)ÚtagsÚargsÚmsgÚreporters      €r*   Úmywriterz"pytest_configure.<locals>.mywriter4   s<   ø€ Ø—(’(�3�s D™>œ>Ñ*Ô*ˆCØ×ÒÐ 0°3Ñ 6Ñ7Ô7Ð7Ð7Ð7r,   zpytest:config)Úoptionr   r   ÚTerminalReporterÚsysÚstdoutÚpluginmanagerÚregisterÚdebugÚtraceconfigÚtraceÚrootÚsetprocessor)Úconfigr9   r8   s     @r*   Úpytest_configurerF   /   s¬   ø€ Ø
„MÐÔ˜Vœ]Ô0Ñ0ÐÔÝ ­¬
Ñ3Ô3€HØ
Ô×!Ò! (Ð,>Ñ?Ô?Ð?Ø„}Ôð B˜fœmÔ7ð Bð	8ð 	8ð 	8ð 	8ð 	8ð 	ŒÔ×&Ò& ¸ÑAÔAÐAÐAÐAð	Bð Br,   c                 óØ   — d}| j         j        }| j         j        s
d|vr|dz  }n&| j         j        rd|v r|                     dd¦  «        }|r|D ]}||vr|dk    r||z  }Œ|dk    rd}Œ|S )Nr   ÚwÚaÚfEsxXw)r:   r   r   Úreplace)rE   Ú
reportoptsr   Úchars       r*   ÚgetreportoptrN   9   s«   € Ø€JØ”-Ô+€KØŒ=Ô.ð 3°3¸kÐ3IÐ3IØ�sÑˆˆØ	ŒÔ	,ð 3°¸Ð1CÐ1CØ!×)Ò)¨#¨rÑ2Ô2ˆØð &Øð 	&ð 	&ˆDØ˜:Ð%Ð%¨$°#ª+¨+Ø˜dÑ"�
�
Ø˜’�Ø%�
øØÐr,   c                 ó˜   — | j         rd}n | j        rd}n| j        rd}| j        dk    rd}| j        || j                             ¦   «         fS )Nú.ÚsÚFÚcallÚf)ÚpassedÚskippedÚfailedÚwhenÚoutcomeÚupper)ÚreportÚletters     r*   Úpytest_report_teststatusr]   H   sb   € Ø„}ð ØˆˆØ	Œð ØˆˆØ	Œð ØˆØŒ;˜&Ò Ð ØˆFØŒ>˜6 6¤>×#7Ò#7Ñ#9Ô#9Ð9Ð9r,   c                   ó   — e Zd Zdd„ZdS )ÚWarningReportNc                 ó>   — || _         || _        || _        || _        d S ©N)ÚcodeÚmessageÚnodeidÚ
fslocation)Úselfrb   rc   rd   re   s        r*   Ú__init__zWarningReport.__init__T   s"   € ØˆŒ	ØˆŒØˆŒØ$ˆŒˆˆr,   )NN)Ú__name__Ú
__module__Ú__qualname__rg   © r,   r*   r_   r_   S   s(   € € € € € ð%ð %ð %ð %ð %ð %r,   r_   c                   ód  — e Zd Zd0d„Zd„ Zd„ Zd1d„Zd„ Zd„ Zd	„ Z	d
„ Z
d0d„Zd2d„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd3d„Zd„ Z ej        d¬¦  «        d„ ¦   «         Zd„ Zd„ Zd„ Z ej        d¬ ¦  «        d!„ ¦   «         Zd"„ Zd#„ Z d$„ Z!d%„ Z"d&„ Z#d'„ Z$d(„ Z%d)„ Z&d*„ Z'd+„ Z(d,„ Z)d-„ Z*d.„ Z+d/„ Z,dS )4r;   Nc                 óþ  — dd l }|| _        | j        j        j        | _        | j        dk    | _        | j        dk    | _        | j        dk    | _        d| _        i | _	        t          j                             ¦   «         | _        |€t          j        }|j                             ||¦  «        x| _        | _        d | _        t)          |¦  «        | _        | j        j        | _        |                     ¦   «         | _        d S )Nr   )Ú_pytest.configrE   r:   r   Ú	verbosityÚ
showheaderÚ
showfspathÚshowlongtestinfoÚ_numcollectedÚstatsÚpyÚpathÚlocalÚstartdirr<   r=   Úcreate_terminal_writerÚ_twÚwriterÚcurrentfspathrN   r   Ú	hasmarkupÚisatty)rf   rE   ÚfileÚ_pytests       r*   rg   zTerminalReporter.__init__\   sÜ   € ØÐÐÐØˆŒØœÔ+Ô3ˆŒØœ.¨AÒ-ˆŒØœ.¨AÒ-ˆŒØ $¤°Ò 2ˆÔØˆÔàˆŒ
ÝœŸš™œˆŒØˆ<Ý”:ˆDØ!(¤×!FÒ!FÀvØGKñ"Mô "Mð 	MˆŒ�4”;à!ˆÔÝ'¨Ñ/Ô/ˆÔØœÔ+ˆŒØ—k’k‘m”mˆŒˆˆr,   c                 óF   — dddœ                      ||¦  «        }|| j        v S )NÚxrQ   )ÚxfailedrV   )Úgetr   )rf   rM   s     r*   ÚhasoptzTerminalReporter.hasoptp   s-   € Ø¨3Ð/Ð/×3Ò3°D¸$Ñ?Ô?ˆØ�tÔ'Ð'Ð'r,   c                 ón  — | j         j                             |                     d¦  «        d         ¦  «        }|| j        k    rW|| _        | j                             |¦  «        }| j                             ¦   «          | j         	                    |dz   ¦  «         | j         	                    |¦  «         d S )Nú::r   r0   )
rE   Úrootdirr1   Úsplitr|   rx   Úbestrelpathrz   r!   Úwrite)rf   rd   ÚresÚfspaths       r*   Úwrite_fspath_resultz$TerminalReporter.write_fspath_resultt   s—   € Ø”Ô$×)Ò)¨&¯,ª,°tÑ*<Ô*<¸QÔ*?Ñ@Ô@ˆØ�TÔ'Ò'Ð'Ø!'ˆDÔØ”]×.Ò.¨vÑ6Ô6ˆFØŒH�MŠM‰OŒOˆOØŒH�NŠN˜6 C™<Ñ(Ô(Ð(ØŒ�Š�sÑÔÐÐÐr,   r   c                 óÌ   — | j         |k    r:| j                             ¦   «          || _         | j                             |¦  «         |r | j        j        |fi |¤Ž d| _         d S d S )Néþÿÿÿ)r|   rz   r!   r‹   )rf   ÚprefixÚextraÚkwargss       r*   Úwrite_ensure_prefixz$TerminalReporter.write_ensure_prefix}   sw   € ØÔ Ò'Ð'ØŒH�MŠM‰OŒOˆOØ!'ˆDÔØŒH�NŠN˜6Ñ"Ô"Ð"Øð 	$ØˆDŒHŒN˜5Ð+Ð+ FÐ+Ð+Ð+Ø!#ˆDÔÐÐð	$ð 	$r,   c                 óX   — | j         r"| j                             ¦   «          d | _         d S d S ra   )r|   rz   r!   ©rf   s    r*   Úensure_newlinezTerminalReporter.ensure_newline†   s4   € ØÔð 	&ØŒH�MŠM‰OŒOˆOØ!%ˆDÔÐÐð	&ð 	&r,   c                 ó,   —  | j         j        |fi |¤Ž d S ra   )rz   r‹   )rf   ÚcontentÚmarkups      r*   r‹   zTerminalReporter.write‹   s$   € ØˆŒŒ�wÐ)Ð) &Ð)Ð)Ð)Ð)Ð)r,   c                 óÔ   — t           j                             |¦  «        s!t           j                             |d¬¦  «        }|                      ¦   «           | j        j        |fi |¤Ž d S )NrK   )Úerrors)ru   ÚbuiltinÚ_istextÚtextr—   rz   r!   ©rf   r!   rš   s      r*   r4   zTerminalReporter.write_lineŽ   se   € ÝŒz×!Ò! $Ñ'Ô'ð 	;Ý”:—?’? 4°	�?Ñ:Ô:ˆDØ×ÒÑÔÐØˆŒŒ�dÐ%Ð%˜fÐ%Ð%Ð%Ð%Ð%r,   c                 óP   — t          |¦  «        } | j        j        d|z   fi |¤Ž d S )Nú)r3   rz   r‹   r    s      r*   ÚrewritezTerminalReporter.rewrite”   s3   € Ý�4‰yŒyˆØˆŒŒ�t˜d‘{Ð-Ð- fÐ-Ð-Ð-Ð-Ð-r,   c                 óV   — |                       ¦   «           | j        j        ||fi |¤Ž d S ra   )r—   rz   Úsep)rf   r¥   Útitlerš   s       r*   Ú	write_sepzTerminalReporter.write_sep˜   s8   € Ø×ÒÑÔÐØˆŒŒ�S˜%Ð*Ð* 6Ð*Ð*Ð*Ð*Ð*r,   ú=c                 ó.   —  | j         j        ||fi |¤Ž d S ra   )rz   r¥   )rf   r¦   r¥   Úkws       r*   ÚsectionzTerminalReporter.sectionœ   s&   € ØˆŒŒ�S˜%Ð&Ð& 2Ð&Ð&Ð&Ð&Ð&r,   c                 ó,   —  | j         j        |fi |¤Ž d S ra   )rz   r!   )rf   r7   rª   s      r*   r!   zTerminalReporter.lineŸ   s$   € ØˆŒŒ�cÐ Ð ˜RÐ Ð Ð Ð Ð r,   c                 ó    — t           j                             |¦  «                             d¦  «        D ]}|                      d|z   ¦  «         ŒdS )Nú
zINTERNALERROR> é   )ru   r�   rŸ   r‰   r4   )rf   Úexcreprr!   s      r*   Úpytest_internalerrorz%TerminalReporter.pytest_internalerror¢   sM   € Ý”J—O’O GÑ,Ô,×2Ò2°4Ñ8Ô8ð 	6ð 	6ˆDØ�OŠOÐ-°Ñ4Ñ5Ô5Ð5Ð5Øˆqr,   c                 óÀ   — | j                              dg ¦  «        }t          |t          ¦  «        rd|z  }t	          ||||¬¦  «        }|                     |¦  «         d S )NÚwarningsz%s:%d)rb   re   rc   rd   )rt   Ú
setdefaultÚ
isinstanceÚtupler_   Úappend)rf   rb   re   rc   rd   r³   Úwarnings          r*   Úpytest_logwarningz"TerminalReporter.pytest_logwarning§   sm   € Ø”:×(Ò(¨°RÑ8Ô8ˆÝ�j¥%Ñ(Ô(ð 	.Ø  :Ñ-ˆJÝ T°jØ(/¸ð@ñ @ô @ˆà�Š˜Ñ Ô Ð Ð Ð r,   c                 ó`   — | j         j        j        rd|›�}|                      |¦  «         d S d S )NzPLUGIN registered: )rE   r:   rA   r4   )rf   Úpluginr7   s      r*   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registered¯   sE   € ØŒ;ÔÔ)ð 	!ð 	!Ø-3¨VÐ5ˆCð �OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!r,   c                 ób   — | j                              dg ¦  «                             |¦  «         d S )NÚ
deselected)rt   r´   Úextend)rf   Úitemss     r*   Úpytest_deselectedz"TerminalReporter.pytest_deselected·   s.   € ØŒ
×Ò˜l¨BÑ/Ô/×6Ò6°uÑ=Ô=Ð=Ð=Ð=r,   c                 óÔ   — | j         r& | j        |g|¢R Ž }|                      |d¦  «         d S | j        r3|                     d¦  «        d         }|                      |d¦  «         d S d S )Nr   r‡   r   )rr   Ú_locationliner”   rq   r‰   rŽ   )rf   rd   Úlocationr!   Úfsids        r*   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstartº   s‹   € ð Ô ð 	/Ø%�4Ô% fÐ8¨xÐ8Ð8Ð8ˆDØ×$Ò$ T¨2Ñ.Ô.Ð.Ð.Ð.ØŒ_ð 	/Ø—<’< Ñ%Ô% aÔ(ˆDØ×$Ò$ T¨2Ñ.Ô.Ð.Ð.Ð.ð	/ð 	/r,   c                 ó~  — |}| j         j                             |¬¦  «        }|\  }}}| j                             |g ¦  «                             |¦  «         d| _        |s|sd S | j        dk    rPt          |d¦  «        s$| j	        r|  
                    |j        |¦  «         d S | j                             |¦  «         d S t          |t          ¦  «        r|\  }}n#|j        rddi}n|j        rddi}n|j        rddi} | j        |j        g|j        ¢R Ž }t          |d¦  «        s | j        ||fi |¤Ž d S |                      ¦   «          t          |d¦  «        r,| j                             d|j        j        j        z  ¦  «          | j        j        |fi |¤Ž | j                             d	|z   ¦  «         d
| _        d S )N)r[   Tr   ÚnodeÚgreenÚredÚyellowz[%s] r0   r�   )rE   Úhookr]   rt   r´   r·   Ú
_tests_ranro   Úhasattrrq   rŽ   rd   rz   r‹   rµ   r¶   rU   rW   rV   rÃ   rÄ   r”   r—   rÈ   ÚgatewayÚidr|   )	rf   r[   ÚreprŒ   Úcatr\   Úwordrš   r!   s	            r*   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreportÄ   s  € ØˆØŒkÔ×7Ò7¸sÐ7ÑCÔCˆØÑˆˆV�TØŒ
×Ò˜c 2Ñ&Ô&×-Ò-¨cÑ2Ô2Ð2ØˆŒØð 	˜dð 	àˆFØŒ>˜QÒÐÝ˜3 Ñ'Ô'ð '¨D¬Oð 'Ø×(Ò(¨¬°VÑ<Ô<Ð<Ð<Ð<à”—’˜vÑ&Ô&Ð&Ð&Ð&å˜$¥Ñ&Ô&ð -Ø#‘��f�fà”:ð -Ø% d˜^�F�FØ”Zð -Ø# D˜\�F�FØ”[ð -Ø& t˜_�FØ%�4Ô% c¤jÐ@°3´<Ð@Ð@Ð@ˆDÝ˜3 Ñ'Ô'ð 	(Ø(�Ô(¨¨tÐ>Ð>°vÐ>Ð>Ð>Ð>Ð>ð ×#Ò#Ñ%Ô%Ð%Ý˜3 Ñ'Ô'ð BØ”H—N’N 7¨S¬XÔ-=Ô-@Ñ#@ÑAÔAÐAØ�””˜tÐ.Ð. vÐ.Ð.Ð.Ø”—’˜s T™zÑ*Ô*Ð*Ø%'�Ô"Ð"Ð"r,   c                 ót   — | j         s.| j        j        j        dk    r|                      dd¬¦  «         d S d S d S )Nr¯   zcollecting ... T©Úbold)r~   rE   r:   r   r‹   r–   s    r*   Úpytest_collectionz"TerminalReporter.pytest_collectionè   sK   € ØŒ{ð 	5˜tœ{Ô1Ô9¸QÒ>Ð>Ø�JŠJÐ(¨tˆJÑ4Ô4Ð4Ð4Ð4ð	5ð 	5Ð>Ð>r,   c                 ór  — |j         r/| j                             dg ¦  «                             |¦  «         n5|j        r.| j                             dg ¦  «                             |¦  «         d„ |j        D ¦   «         }| xj        t          |¦  «        z  c_        | j        r|  	                    ¦   «          d S d S )NÚerrorrV   c                 óF   — g | ]}t          |t          j        ¦  «        ¯|‘ŒS rk   )rµ   ÚpytestÚItem)Ú.0r‚   s     r*   ú
<listcomp>z9TerminalReporter.pytest_collectreport.<locals>.<listcomp>ñ   s)   € ÐHÐHÐH�q­Z¸½6¼;Ñ-GÔ-GÐH�ÐHÐHÐHr,   )
rW   rt   r´   r·   rV   Úresultrs   Úlenr~   Úreport_collect)rf   r[   rÀ   s      r*   Úpytest_collectreportz%TerminalReporter.pytest_collectreportì   sÂ   € ØŒ=ð 	@ØŒJ×!Ò! '¨2Ñ.Ô.×5Ò5°fÑ=Ô=Ð=Ð=ØŒ^ð 	@ØŒJ×!Ò! )¨RÑ0Ô0×7Ò7¸Ñ?Ô?Ð?ØHÐH˜FœMÐHÑHÔHˆØÐÔ�c %™jœjÑ(ÐÔØŒ;ð 	"à×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"r,   Fc                 ó¶  — | j         j        j        dk     rd S t          | j                             dg ¦  «        ¦  «        }t          | j                             dg ¦  «        ¦  «        }|rd}nd}|t          | j        ¦  «        dz   z  }|r|d|z  z  }|r|d|z  z  }| j        r |r|d	z  }|  	                    |d
¬¦  «         d S |  
                    |¦  «         d S )Nr   rÚ   rV   z
collected zcollecting z itemsz / %d errorsz / %d skippedz 
TrÖ   )rE   r:   r   rá   rt   r„   r3   rs   r~   r£   r4   )rf   Úfinalrœ   rV   r!   s        r*   râ   zTerminalReporter.report_collect÷   sÿ   € ØŒ;ÔÔ%¨Ò)Ð)ØˆFå�T”Z—^’^ G¨RÑ0Ô0Ñ1Ô1ˆÝ�d”j—n’n Y°Ñ3Ô3Ñ4Ô4ˆØð 	!ØˆDˆDà ˆDØ•�DÔ&Ñ'Ô'¨(Ñ2Ñ2ˆØð 	,Ø�N VÑ+Ñ+ˆDØð 	.Ø�O gÑ-Ñ-ˆDØŒ;ð 	"Øð Ø˜‘�Ø�LŠL˜ DˆLÑ)Ô)Ð)Ð)Ð)à�OŠO˜DÑ!Ô!Ð!Ð!Ð!r,   c                 ó0   — |                       d¦  «         d S )NT)râ   r–   s    r*   Úpytest_collection_modifyitemsz.TerminalReporter.pytest_collection_modifyitems  s   € Ø×Ò˜DÑ!Ô!Ð!Ð!Ð!r,   T)Útrylastc                 ó’  — t          j         ¦   «         | _        | j        sd S |                      ddd¬¦  «         t	          j        ¦   «         }dt          j        ›d|›�}t          t          d¦  «        rVd                     t          t          t          j        d d	…         ¦  «        ¦  «        }|d
|›dt          j        d	         ›d�z  }|dt          j        ›dt          j        ›dt          j        ›�z  }| j        dk    s,| j        j        j        st)          | j        j        dd ¦  «        r|dt          t          j        ¦  «        z   z  }|                      |¦  «         | j        j                             | j        | j        ¬¦  «        }|                     ¦   «          t7          |¦  «        D ]}|                      |¦  «         Œd S )Nr¨   ztest session startsTrÖ   z	platform z -- Python Úpypy_version_inforP   é   z[pypy-ú-ú]z	, pytest-z, py-z	, pluggy-r   Úpastebinz -- )rE   rx   )ÚtimeÚ_sessionstarttimerp   r§   ÚplatformÚpython_versionr<   rÎ   r1   r2   r3   rê   rÜ   Ú__version__ru   Úpluggyro   rE   r:   r@   ÚgetattrÚ
executabler4   rÌ   Úpytest_report_headerrx   ÚreverseÚflatten)rf   ÚsessionÚverinfor7   Úlinesr!   s         r*   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstart  s®  € å!%¤¡¤ˆÔØŒð 	ØˆFØ�Š�sÐ1¸ˆÑ=Ô=Ð=ÝÔ)Ñ+Ô+ˆˆÝ,/¬L¨L¨L¸'¸'ÐBˆÝ•3Ð+Ñ,Ô,ð 	HØ—h’h�s¥3­Ô(=¸b¸q¸bÔ(AÑBÔBÑCÔCˆGØˆC W W W­cÔ.CÀAÔ.FÐ.FÐ.FÐGÑGˆCØˆÝÔ!Ð!Ð!¥2¤> > >µ6Ô3EÐ3EðGñ 	GˆàŒ>˜AÒÐ ¤Ô!3Ô!9ÐÝ�4”;Ô% z°4Ñ8Ô8ð à�6�C¥¤Ñ/Ô/Ñ/Ñ/ˆCØ�Š˜ÑÔÐØ”Ô ×5Ò5Ø”;¨¬ð 6ñ 8ô 8ˆà�Š‰ŒˆÝ˜E‘N”Nð 	"ð 	"ˆDØ�OŠO˜DÑ!Ô!Ð!Ð!ð	"ð 	"r,   c                 ó  — d}|j         r|j                             |j         ¦  «        }d|j        ›d|›�g}|j                             ¦   «         }|r8|                     dd                     t          |¦  «        ¦  «        z  ¦  «         |S )Nr   z	rootdir: z, inifile: zplugins: %sú, )Úinifilerˆ   rŠ   r>   Úlist_plugin_distinfor·   r1   Ú_plugin_nameversions)rf   rE   r   rü   Ú
plugininfos        r*   r÷   z%TerminalReporter.pytest_report_header'  s—   € ØˆØŒ>ð 	AØ”n×0Ò0°´Ñ@Ô@ˆGøØ.4¬n¨n¨n¸g¸gÐFÐGˆàÔ)×>Ò>Ñ@Ô@ˆ
Øð 	Mà�LŠLØ §	¢	Õ*>¸zÑ*JÔ*JÑ KÔ KÑKñMô Mð Màˆr,   c                 óN  — | j         j        j        rŠ|                      |j        ¦  «         | j                             d¦  «        rT| j                             dd¦  «         | j                             d¦  «        D ]}| 	                    | j        ¦  «         ŒdS dS | j
        sd S d S )NrW   ú!zcollection failuresr¯   r   )rE   r:   ÚcollectonlyÚ_printcollecteditemsrÀ   rt   r„   rz   r¥   Ú
toterminalrp   )rf   rú   rÑ   s      r*   Úpytest_collection_finishz)TerminalReporter.pytest_collection_finish4  s¬   € ØŒ;ÔÔ)ð 	Ø×%Ò% g¤mÑ4Ô4Ð4ØŒz�~Š~˜hÑ'Ô'ð Ø”—’˜SÐ"7Ñ8Ô8Ð8Øœ:Ÿ>š>¨(Ñ3Ô3ð -ð -�CØ—N’N 4¤8Ñ,Ô,Ð,Ð,Ø�qØ�1ØŒð 	ØˆFð	ð 	r,   c                 ób  — | j         j        j        dk     rÞ| j         j        j        dk     r‹i }|D ]?}|j                             dd¦  «        d         }|                     |d¦  «        dz   ||<   Œ@t          |                     ¦   «         ¦  «        D ]$\  }}| j         	                    d||fz  ¦  «         Œ%n<|D ]9}|j        }| 
                    dd¦  «        }| j         	                    |¦  «         Œ:d S g }d}|D ]´}|                     ¦   «         dd …         }	|r2||	d t          |¦  «        …         k    rn|                     ¦   «          |°2|	t          |¦  «        d …         D ]J}
|                     |
¦  «         t          |¦  «        dz
  dz  }| j         	                    |›|
›�¦  «         ŒKŒµd S )	Nr   éÿÿÿÿr‡   r¯   z%s: %dz::()::r   z  )rE   r:   r   rd   r‰   r„   ÚsortedrÀ   rz   r!   rK   Ú	listchainrá   Úpopr·   )rf   rÀ   ÚcountsÚitemÚnamer   rd   ÚstackÚindentÚneeded_collectorsÚcols              r*   r  z%TerminalReporter._printcollecteditemsB  sí  € ð Œ;ÔÔ%¨Ò)Ð)ØŒ{Ô!Ô)¨BÒ.Ð.Ø�Ø!ð ;ð ;�DØœ;×,Ò,¨T°1Ñ5Ô5°aÔ8�DØ#)§:¢:¨d°AÑ#6Ô#6¸Ñ#:�F˜4‘L�LÝ#)¨&¯,ª,©.¬.Ñ#9Ô#9ð <ð <‘K�D˜%Ø”H—M’M (¨d°E¨]Ñ":Ñ;Ô;Ð;Ð;ð<ð "ð *ð *�DØ!œ[�FØ#Ÿ^š^¨H°dÑ;Ô;�FØ”H—M’M &Ñ)Ô)Ð)Ð)ØˆFØˆØˆØð 	6ð 	6ˆDØ $§¢Ñ 0Ô 0°°°Ô 4ÐØð ØÐ-¨k­s°5©z¬z¨kÔ:Ò:Ð:ØØ—	’	‘”�ð ð ð )­¨U©¬¨¨Ô5ð 6ð 6�Ø—’˜SÑ!Ô!Ð!õ ˜e™*œ* q™.¨DÑ0�Ø”—’¨¨°°Ð4Ñ5Ô5Ð5Ð5ð6ð	6ð 	6r,   )Úhookwrapperc              #   ó*  K  — d V —}|                      ¦   «          | j                             d¦  «         t          t          t
          t          t          f}||v rq| j        j	         
                    | |¬¦  «         |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |t
          k    r|                      ¦   «          | `|                      ¦   «          |                      ¦   «          d S )Nr   )r.   Ú
exitstatus)Ú
get_resultrz   r!   r   r   r   r   r   rE   rÌ   Úpytest_terminal_summaryÚsummary_errorsÚsummary_failuresÚsummary_warningsÚsummary_passesÚ_report_keyboardinterruptÚ_keyboardinterrupt_memoÚsummary_deselectedÚsummary_stats)rf   r  rY   Úsummary_exit_codess       r*   Úpytest_sessionfinishz%TerminalReporter.pytest_sessionfinishc  s  è è € à�%�%ˆØ×ÒÑÔÐØŒ�Š�bÑÔÐåÕ%Õ'7½Ý!ð#Ðð Ð+Ð+Ð+ØŒKÔ×4Ò4ÀdØ@Jð 5ñ Lô Lð Là×ÒÑ!Ô!Ð!Ø×!Ò!Ñ#Ô#Ð#Ø×!Ò!Ñ#Ô#Ð#Ø×ÒÑ!Ô!Ð!ØÕ)Ò)Ð)Ø×*Ò*Ñ,Ô,Ð,ØÐ,Ø×ÒÑ!Ô!Ð!Ø×ÒÑÔÐÐÐr,   c                 ó<   — |                      d¬¦  «        | _        d S )NT)Úfuncargs)Úgetreprr   )rf   Úexcinfos     r*   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interruptx  s   € Ø'.§¢À Ñ'EÔ'EˆÔ$Ð$Ð$r,   c                 óR   — t          | d¦  «        r|                      ¦   «          d S d S )Nr   )rÎ   r  r–   s    r*   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigure{  s7   € Ý�4Ð2Ñ3Ô3ð 	-Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð	-ð 	-r,   c                 ó4  — | j         }|j        j        }|                      d|¦  «         d|v rj| j        j        j        r|                     | j        ¦  «         d S | j         	                    dd¬¦  «         |j                             | j        ¦  «         d S d S )Nr  ÚKeyboardInterruptz=to show a full traceback on KeyboardInterrupt use --fulltraceT)rË   )
r   Ú	reprcrashrc   r§   rE   r:   Ú	fulltracer  rz   r!   )rf   r°   r7   s      r*   r  z*TerminalReporter._report_keyboardinterrupt  s¡   € ØÔ.ˆØÔÔ'ˆØ�Š�s˜CÑ Ô Ð Ø #Ð%Ð%ØŒ{Ô!Ô+ð 7Ø×"Ò" 4¤8Ñ,Ô,Ð,Ð,Ð,à”—’Ð]Ðfj�ÑkÔkÐkØÔ!×,Ò,¨T¬XÑ6Ô6Ð6Ð6Ð6ð &Ð%r,   c                 ó
  ‡ ‡— ˆˆ fd„}|rs ||¦  «                              dd¦  «        }|                     d¦  «        d         |                      dd¦  «        k    r |d‰ j                             |¦  «        z   z  }nd	}|d
z   S )Nc                 ó2  •— ‰j                              | ¦  «        }‰ry|                     ‰¦  «        rd|d t          ‰¦  «         …         }‰                     d¦  «        }|d                              dd¦  «        |d<   |d                     |¦  «        z  }|S )Nú[r   rP   r‡   )rE   Úcwd_relative_nodeidÚendswithrá   r‰   rK   r1   )rd   r!   ÚlÚdomainrf   s      €€r*   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel‹  sŽ   ø€ Ø”;×2Ò2°6Ñ:Ô:ˆDØð $˜$Ÿ-š-¨Ñ/Ô/ð $Ø˜M�c &™kœk˜\˜MÔ*�Ø—L’L Ñ%Ô%�Ø˜”t—|’| C¨Ñ.Ô.��!‘Ø˜Ÿš ™œÑ#�ØˆKr,   z::()r   r‡   r   ú\ú/z <- z
[location]r0   )rK   r‰   rx   rŠ   )rf   rd   r�   Úlinenor6  r7  rŒ   s   `   `  r*   rÃ   zTerminalReporter._locationlineŠ  s¢   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð ð 	Ø�%˜‘-”-×'Ò'¨°Ñ3Ô3ˆCØ�|Š|˜DÑ!Ô! !Ô$¨¯ª°t¸SÑ(AÔ(AÒAÐAØ�v ¤× 9Ò 9¸&Ñ AÔ AÑAÑA�øàˆCØ�S‰yÐr,   c                 ó@   — t          |d¦  «        r|j        \  }}}|S dS )NrÄ   ztest session)rÎ   rÄ   )rf   rÑ   r�   r:  r6  s        r*   Ú_getfailureheadlinez$TerminalReporter._getfailureheadline�  s,   € Ý�3˜
Ñ#Ô#ð 	"Ø%(¤\Ñ"ˆF�F˜FØˆMà!�>r,   c                 ó´   — 	 t          |j        j        ¦  «        S # t          $ r2 	 t          |j        ¦  «        d d…         cY S # t          $ r Y Y dS w xY ww xY w)Né2   r   )r3   Úlongreprr.  ÚAttributeError)rf   rÑ   s     r*   Ú_getcrashlinezTerminalReporter._getcrashline¤  s}   € ð	Ý�s”|Ô-Ñ.Ô.Ð.øÝð 	ð 	ð 	ðÝ˜3œ<Ñ(Ô(¨¨"¨Ô-Ð-Ð-Ð-øÝ!ð ð ð Ø�r�r�rðøøøð	øøøs,   ‚ ›
A¦AÁAÁ
AÁAÁAÁAc                 ó�   — g }| j                              |g ¦  «        D ]'}t          |d¦  «        s|                     |¦  «         Œ(|S )NÚ	_pdbshown)rt   r„   rÎ   r·   )rf   r  r5  r‚   s       r*   Ú
getreportszTerminalReporter.getreports°  sM   € ØˆØ”—’  bÑ)Ô)ð 	ð 	ˆAÝ˜1˜kÑ*Ô*ð Ø—’˜‘”�øØˆr,   c           	      ó
  — |                       d¦  «        rk| j                             d¦  «        }|sd S |                      dd¦  «         |D ]6}| j                             d|j        ›d|j        ›d|j        ›�¦  «         Œ5d S d S )NrH   r³   r¨   zpytest-warning summaryÚWr0   )	r…   rt   r„   r§   rz   r!   rb   re   rc   )rf   r³   rH   s      r*   r  z!TerminalReporter.summary_warnings·  s©   € Ø�;Š;�sÑÔð 	8Ø”z—~’~ jÑ1Ô1ˆHØð Ø�Ø�NŠN˜3Ð 8Ñ9Ô9Ð9Øð 8ð 8�Ø”—’�¨Q¬V¨V¨VØœl˜l˜l¨A¬I¨Ið7ñ 8ô 8ð 8ð 8ð	8ð 	8ð
8ð 8r,   c                 óJ  — | j         j        j        dk    r‰|                      d¦  «        rv|                      d¦  «        }|sd S |                      dd¦  «         |D ]F}|                      |¦  «        }|                      d|¦  «         |                      |¦  «         ŒCd S d S d S )Nr    ÚPrU   r¨   ÚPASSESÚ_)rE   r:   r   r…   rD  r§   r<  Ú_outrep_summary©rf   ÚreportsrÑ   r7   s       r*   r  zTerminalReporter.summary_passesÁ  sÄ   € ØŒ;ÔÔ%¨Ò-Ð-Ø�{Š{˜3ÑÔð .ØŸ/š/¨(Ñ3Ô3�Øð Ø�FØ—’˜s HÑ-Ô-Ð-Ø"ð .ð .�CØ×2Ò2°3Ñ7Ô7�CØ—N’N 3¨Ñ,Ô,Ð,Ø×(Ò(¨Ñ-Ô-Ð-Ð-ð .Ð-ð.ð .ð
.ð .r,   c                 ó˜  — | j         j        j        dk    r²|                      d¦  «        }|sd S |                      dd¦  «         |D ]‚}| j         j        j        dk    r+|                      |¦  «        }|                      |¦  «         ŒB|                      |¦  «        }dddœ} | j        d|fi |¤Ž |                      |¦  «         Œ�d S d S )	Nr    rW   r¨   ÚFAILURESr!   T)rÊ   r×   rJ  )	rE   r:   r   rD  r§   rA  r4   r<  rK  )rf   rM  rÑ   r!   r7   rš   s         r*   r  z!TerminalReporter.summary_failuresÍ  sö   € ØŒ;ÔÔ%¨Ò-Ð-Ø—o’o hÑ/Ô/ˆGØð Ø�Ø�NŠN˜3 
Ñ+Ô+Ð+Øð .ð .�Ø”;Ô%Ô-°Ò7Ð7Ø×-Ò-¨cÑ2Ô2�DØ—O’O DÑ)Ô)Ð)Ð)à×2Ò2°3Ñ7Ô7�CØ%)°4Ð8Ð8�FØ"�D”N 3¨Ð6Ð6¨vÐ6Ð6Ð6Ø×(Ò(¨Ñ-Ô-Ð-Ð-ð .Ð-ð
.ð .r,   c                 ó   — | j         j        j        dk    r¶|                      d¦  «        }|sd S |                      dd¦  «         | j        d         D ]{}|                      |¦  «        }t          |d¦  «        sd|z   }n!|j        dk    rd|z   }n|j        d	k    rd
|z   }|                      d|¦  «         |  	                    |¦  «         Œzd S d S )Nr    rÚ   r¨   ÚERRORSrX   zERROR collecting ÚsetupzERROR at setup of ÚteardownzERROR at teardown of rJ  )
rE   r:   r   rD  r§   rt   r<  rÎ   rX   rK  rL  s       r*   r  zTerminalReporter.summary_errorsÝ  sû   € ØŒ;ÔÔ%¨Ò-Ð-Ø—o’o gÑ.Ô.ˆGØð Ø�Ø�NŠN˜3 Ñ)Ô)Ð)Ø”z 'Ô*ð 
*ð 
*�Ø×.Ò.¨sÑ3Ô3�Ý˜s FÑ+Ô+ð 8à-°Ñ3�C�CØ”X Ò(Ð(Ø.°Ñ4�C�CØ”X Ò+Ð+Ø1°CÑ7�CØ—’˜s CÑ(Ô(Ð(Ø×$Ò$ SÑ)Ô)Ð)Ð)ð .Ð-ð

*ð 
*r,   c                 óî   — |                      | j        ¦  «         |j        D ]R\  }}| j                             d|¦  «         |dd …         dk    r
|d d…         }| j                             |¦  «         ŒSd S )Nrì   r  r®   )r  rz   Úsectionsr¥   r!   )rf   rÑ   Úsecnamer™   s       r*   rK  z TerminalReporter._outrep_summaryï  sƒ   € Ø�Š�t”xÑ Ô Ð Ø #¤ð 	#ð 	#ÑˆG�WØŒH�LŠL˜˜gÑ&Ô&Ð&Ø�r�s�sŒ|˜tÒ#Ð#Ø! # 2 #œ,�ØŒH�MŠM˜'Ñ"Ô"Ð"Ð"ð		#ð 	#r,   c                 óî   — t          j         ¦   «         | j        z
  }t          | j        ¦  «        \  }}d||fz  }|dddi}| j        dk    r | j        d|fi |¤Ž | j        dk    r | j        |fi |¤Ž d S d S )Nz%s in %.2f secondsTr×   r   r¨   r  )rï   rð   Úbuild_summary_stats_linert   ro   r§   r4   )rf   Úsession_durationr!   r$   r7   rš   s         r*   r"  zTerminalReporter.summary_stats÷  s¥   € Ýœ9™;œ;¨Ô)?Ñ?ÐÝ0°´Ñ<Ô<‰ˆˆuØ" dÐ,<Ð%=Ñ=ˆØ˜˜v tÐ,ˆàŒ>˜QÒÐØˆDŒN˜3 Ð.Ð. vÐ.Ð.Ð.ØŒ>˜RÒÐØˆDŒO˜CÐ*Ð* 6Ð*Ð*Ð*Ð*Ð*ð  Ðr,   c                 ó‚   — d| j         v r5|                      ddt          | j         d         ¦  «        z  d¬¦  «         d S d S )Nr¾   r¨   z%d tests deselectedTrÖ   )rt   r§   rá   r–   s    r*   r!  z#TerminalReporter.summary_deselected  s[   € Ø˜4œ:Ð%Ð%Ø�NŠN˜3Ð 5Ý�D”J˜|Ô,Ñ-Ô-ñ!/Ø59ð ñ ;ô ;ð ;ð ;ð ;ð &Ð%r,   ra   )r   )r¨   )F)-rh   ri   rj   rg   r…   rŽ   r”   r—   r‹   r4   r£   r§   r«   r!   r±   r¹   r¼   rÁ   rÆ   rÔ   rØ   rã   râ   rç   rÜ   Úhookimplrý   r÷   r	  r  r$  r)  r+  r  rÃ   r<  rA  rD  r  r  r  r  rK  r"  r!  rk   r,   r*   r;   r;   [   sÂ  € € € € € ð$ð $ð $ð $ð((ð (ð (ðð ð ð$ð $ð $ð $ð&ð &ð &ð
*ð *ð *ð&ð &ð &ð.ð .ð .ð+ð +ð +ð +ð'ð 'ð 'ð 'ð!ð !ð !ðð ð ð
!ð !ð !ð!ð !ð !ð>ð >ð >ð/ð /ð /ð"(ð "(ð "(ðH5ð 5ð 5ð	"ð 	"ð 	"ð"ð "ð "ð "ð,"ð "ð "ð €V„_˜TÐ"Ñ"Ô"ð"ð "ñ #Ô"ð"ð,ð ð ð
ð 
ð 
ð6ð 6ð 6ðB €V„_ Ð&Ñ&Ô&ðð ñ 'Ô&ðð(Fð Fð Fð-ð -ð -ð	7ð 	7ð 	7ðð ð ð&"ð "ð "ðð ð ðð ð ð8ð 8ð 8ð
.ð 
.ð 
.ð.ð .ð .ð *ð *ð *ð$#ð #ð #ð	+ð 	+ð 	+ð;ð ;ð ;ð ;ð ;r,   r;   c                 óv   — | €t           j        } 	 d| z  S # t          t          f$ r t	          | ¦  «        cY S w xY w)Nz%s.%s.%s-%s-%s)r<   Úversion_infoÚ	TypeErrorÚ
ValueErrorr3   )Úvs    r*   Úrepr_pythonversionra    sN   € Ø€yÝÔˆðØ !Ñ#Ð#øÝ•zÐ"ð ð ð Ý�1‰vŒvˆˆˆðøøøs   � • 8·8c              #   ó‚   K  — | D ]9}t          |t          t          f¦  «        rt          |¦  «        D ]}|V — ŒŒ5|V — Œ:d S ra   )rµ   Úlistr¶   rù   )r5  r‚   Úys      r*   rù   rù     sg   è è € Øð ð ˆÝ�a�$¥˜Ñ'Ô'ð 	Ý˜Q‘Z”Zð ð �Ø����ðð ˆGˆGˆGˆGðð r,   c                 óÌ  — d                      ¦   «         }ddi}d}|                      ¦   «         D ]}||vr|r|                     |¦  «         d}Œ g }|D ]W}|                      |d ¦  «        }|r=|                     ||¦  «        }|                     dt	          |¦  «        |fz  ¦  «         ŒX|rd                     |¦  «        }nd}d	| v sd
| v rd}	nd| v s|rd}	n	d| v rd}	nd}	||	fS )Nz?failed passed skipped deselected xfailed xpassed warnings errorr³   zpytest-warningsFTz%d %srÿ   zno tests ranrW   rÚ   rÊ   rË   rU   rÉ   )r‰   Úkeysr·   r„   rá   r1   )
rt   rf  Úkey_translationÚunknown_key_seenÚkeyÚpartsÚvalÚkey_namer!   r$   s
             r*   rX  rX    sC  € ð,ß-2ªU©W¬Wð 	à!Ð#4Ð5€OØÐØ�zŠz‰|Œ|ð (ð (ˆØ�dˆ?ˆ?Øð (Ø—’˜CÑ Ô Ð Ø#'Ð øØ€EØð 9ð 9ˆØ�iŠi˜˜TÑ"Ô"ˆØð 	9Ø&×*Ò*¨3°Ñ4Ô4ˆHØ�LŠL˜¥C¨¡H¤H¨hÐ#7Ñ7Ñ8Ô8Ð8øàð Ø�yŠy˜ÑÔˆˆàˆà�5ÐÐ˜G uÐ,Ð,ØˆˆØ	�uÐ	Ð	Ð 0Ð	ØˆˆØ	�UÐ	Ð	Øˆˆàˆà�%ˆ=Ðr,   c                 ó¶   — g }| D ]S\  }}d                      |¬¦  «        }|                     d¦  «        r
|dd …         }||vr|                     |¦  «         ŒT|S )Nz"{dist.project_name}-{dist.version})Údistzpytest-é   )ÚformatÚ
startswithr·   )r  r5  r»   rn  r  s        r*   r  r  9  sq   € Ø
€AØ"ð 	ð 	‰ˆ�à3×:Ò:ÀÐ:ÑEÔEˆà�?Š?˜9Ñ%Ô%ð 	Ø˜˜˜”8ˆDð �qˆ=ˆ=Ø�HŠH�T‰NŒNˆNøØ€Hr,   ra   )Ú__doc__Ú_pytest.mainr   r   r   r   r   rÜ   ru   r<   rï   rñ   Ú_pytest._pluggyÚ_pluggyrô   r+   rF   rN   r]   r_   r;   ra  rù   rX  r  rk   r,   r*   ú<module>rv     sx  ððð ð+ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +ð +à €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø €€€à  Ð  Ð  Ð  Ð  Ð  ð<ð <ð <ð>Bð Bð Bðð ð ð	:ð 	:ð 	:ð%ð %ð %ð %ð %ñ %ô %ð %ðj;ð j;ð j;ð j;ð j;ñ j;ô j;ð j;ðXð ð ð ðð ð ðð ð ðDð ð ð ð r,   