Ë
    æØjjÑÿ  ã                  ór  — d 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ZddlZdd	lmZ ddl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mZ ddlmZ ddlmZ ddlm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dl+Zddl,m-Z- ddl.m/Z/ ddl.m0Z0 ddl.m1Z1 ddl.m2Z2 ddl3m4Z4 ddl5m6Z6 dd l5m7Z7 dd!l8m9Z9 dd"l8m:Z: dd#l;m<Z< dd$l;m=Z= dd%l;m>Z> erdd&l?m@Z@ d'ZAd(ZBd)ZC G d*„ d+ejˆ                  «      ZE G d,„ d-e«      ZFdGd.„ZGdHd/„ZHdId0„ZI e2d1¬2«      dJd3„«       ZJej–                   G d4„ d5«      «       ZLe G d6„ d7«      «       ZMdKd8„ZNdLd9„ZO	 	 	 	 	 	 	 	 	 	 dMd:„ZP	 	 	 	 	 	 dNd;„ZQd<d<d=d>d>d<d?œZRd=ZSdOd@„ZTdPdA„ZUdQdB„ZVdQdC„ZWdRdD„ZX G dE„ dF«      ZYy)SzsTerminal reporting of the full testing process.

This is a good source for looking at the various reporting hooks.
é    )ÚannotationsN)ÚCounter)ÚCallable)Ú	Generator)ÚMapping)ÚSequence)Úpartial)ÚPath)ÚAny)ÚClassVar)Úfinal)ÚLiteral)Ú
NamedTuple)ÚTextIO)ÚTYPE_CHECKING)Úcompat)Únodes)Útiming)ÚExceptionInfo)ÚExceptionRepr)ÚTerminalWriter)Úwcswidth)Úrunning_on_ci)Ú_PluggyPlugin)ÚConfig)ÚExitCode)Úhookimpl)ÚParser)ÚItem)ÚNode)Úabsolutepath)Úbestrelpath)Ú
BaseReport)ÚCollectReport)Ú
TestReport)ÚSessiong      à?)ÚfailedÚpassedÚskippedÚ
deselectedÚxfailedÚxpassedÚwarningsÚerrorúsubtests passedúsubtests failedzsubtests skippedÚfEc                  ó`   ‡ — e Zd ZdZ	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 d	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚMoreQuietActionz§A modified copy of the argparse count action which counts down and updates
    the legacy quiet attribute at the same time.

    Used to unify verbosity handling.
    c                ó0   •— t         ‰| �  ||d|||¬«       y )Nr   )Úoption_stringsÚdestÚnargsÚdefaultÚrequiredÚhelp)ÚsuperÚ__init__)Úselfr5   r6   r8   r9   r:   Ú	__class__s         €úR/opt/eval-harness/bench_task/venv/lib/python3.12/site-packages/_pytest/terminal.pyr<   zMoreQuietAction.__init__W   s)   ø€ ô 	‰ÑØ)ØØØØØð 	õ 	
ó    c                ó�   — t        || j                  d«      dz
  }t        || j                  |«       t        |dd«      dz   |_        y )Nr   é   Úquiet)Úgetattrr6   ÚsetattrrC   )r=   ÚparserÚ	namespaceÚvaluesÚoption_stringÚ	new_counts         r?   Ú__call__zMoreQuietAction.__call__h   s@   € ô ˜I t§y¡y°!Ó4°qÑ8ˆ	Ü�	˜4Ÿ9™9 iÔ0ä! )¨W°aÓ8¸1Ñ<ˆ	�r@   )NFN)r5   zSequence[str]r6   Ústrr8   Úobjectr9   Úboolr:   ú
str | NoneÚreturnÚNone©N)
rF   zargparse.ArgumentParserrG   zargparse.NamespacerH   zstr | Sequence[object] | NonerI   rO   rP   rQ   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r<   rK   Ú__classcell__)r>   s   @r?   r3   r3   P   sŒ   ø„ ñð ØØð
à%ð
ð ð
ð ð	
ð
 ð
ð ð
ð 
õ
ð, %)ð
=à'ð
=ð &ð
=ð .ð	
=ð
 "ð
=ð 
÷
=r@   r3   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)ÚTestShortLogReportuG  Used to store the test status result category, shortletter and verbose word.
    For example ``"rerun", "R", ("RERUN", {"yellow": True})``.

    :ivar category:
        The class of result, for example ``â€œpassedâ€�``, ``â€œskippedâ€�``, ``â€œerrorâ€�``, or the empty string.

    :ivar letter:
        The short letter shown as testing progresses, for example ``"."``, ``"s"``, ``"E"``, or the empty string.

    :ivar word:
        Verbose word is shown as testing progresses in verbose mode, for example ``"PASSED"``, ``"SKIPPED"``,
        ``"ERROR"``, or the empty string.
    rL   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordN)rS   rT   rU   rV   Ú__annotations__© r@   r?   rY   rY   u   s   … ñð ƒMØƒKØ
.Ô.r@   rY   c           	     óÆ  — | j                  ddd¬«      }|j                  ddddd	d
¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  ddt        dd	d¬«       |j                  d d	t        dd!¬"«       |j                  d#d$d%d&t
        d'd(¬)«       |j                  d*d+dd,dd-¬.«       |j                  d/d0dd1dd2¬«       |j                  d3dd1d4¬5«       |j                  d6d7d%d8d9g d:¢d;¬<«       |j                  d=dd>dd?¬«       |j                  d@d%dAg dB¢dCdD¬E«       |j                  dFdGdddH¬I«       |j                  dJdKd%dKd9g dL¢dM¬<«       |j                  dNdOdOdPgdQ¬R«       | j                  dSdTdU¬V«       t        j                  | t        j                  dW¬X«       y )YNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr8   r6   r:   z--no-headerÚ
store_trueFÚ	no_headerzDisable headerz--no-summaryÚ
no_summaryzDisable summaryz--no-fold-skippedÚstore_falseÚfold_skippedTz+Do not fold skipped tests in short summary.)re   r6   r8   r:   z--force-short-summaryÚforce_short_summaryz=Force condensed summary output regardless of verbosity level.z-qz--quietzDecrease verbosityz--verbosityzSet verbosity. Default: 0.)r6   Útyper8   r:   z-rz--report-charsÚstoreÚreportcharsÚcharsa  Show extra test summary info as specified by chars: (f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed, (p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. (w)arnings are enabled by default (see --disable-warnings), 'N' can be used to reset the list. (default: 'fE').)re   r6   r8   Úmetavarr:   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r8   r6   re   r:   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))re   r6   r:   z--tbÚstyleÚtbstyleÚauto)ru   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rp   re   r6   r8   Úchoicesr:   z
--xfail-tbÚxfail_tbz1Show tracebacks for xfail (as long as --tb != no)z--show-captureÚshowcapture)rx   ÚstdoutÚstderrÚlogÚallr�   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)re   r6   r{   r8   r:   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))re   r8   r:   z--colorÚcolor)Úyesrx   ru   z#Color terminal output (yes/no/auto)z--code-highlightrƒ   rx   zSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r8   r{   r:   Úconsole_output_stylez®Console output: "classic", or with additional progress information ("progress" (percentage) | "count" | "progress-even-when-capture-no" (forces progress even when capture=no)Úprogress)r:   r8   z¡Specify a verbosity level for test case execution, overriding the main level. Higher levels will provide more detailed information about each test case executed.)r:   )
ÚgetgroupÚ
_addoptionÚ	addoptionr3   ÚintÚ_REPORTCHARS_DEFAULTÚaddinir   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rF   Úgroups     r?   Úpytest_addoptionr�   ‰   sÆ  € Ø�O‰OÐ0°+ÀYˆOÓO€EØ	×ÑØØØØØØ!ð ô ð 
‡O�OØØØØØð ô ð 
‡O�OØØØØØð ô ð 
‡O�OØØØØØ:ð ô ð 
‡O�OØØØ"ØØLð ô ð 
×ÑØØÜØØØ!ð ô ð 
‡O�OØØÜØØ)ð ô ð 
×ÑØØØØÜ$Øð>ð ô ð 
‡O�OØØ#ØØØØ'ð ô ð 
×ÑØØØØØØ>ð ô ð 
‡O�OØØØØUð	 ô ð 
‡O�OØØØØØÚAØDð ô ð 
‡O�OØØØØØ@ð ô ð 
‡O�OØØØÚ8Øðð ô ð 
‡O�OØØØØØ;ð ô ð 
‡O�OØØØØØÚ%Ø2ð ô ð 
‡O�OØØØ˜�ðð	 ô ð ‡M�MØð)ð ð ô ô ×ÑØÜ×#Ñ#ðbö	r@   c                ó~  ‡— t        | t        j                  «      Š| j                  j	                  ‰d«       | j
                  j                  s| j
                  j                  r+ˆfd„}| j                  j                  j                  d|«       t        j                  dk(  r| j                  j                  d«       y y )NÚterminalreporterc                ól   •— dj                  t        t        |«      «      }‰j                  d|z   «       y )Nú z[traceconfig] )ÚjoinÚmaprL   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €r?   Úmywriterz"pytest_configure.<locals>.mywriter(  s+   ø€ Ø—(‘(œ3œs D›>Ó*ˆCØ×ÑÐ 0°3Ñ 6Õ7r@   zpytest:configÚwin32Úterminalprogress)ÚTerminalReporterÚsysr~   ÚpluginmanagerÚregisterÚoptionÚdebugÚtraceconfigÚtraceÚrootÚsetprocessorÚplatformÚimport_plugin)Úconfigr›   rš   s     @r?   Úpytest_configurer«   #  sŒ   ø€ Ü ¬¯
©
Ó3€HØ
×Ñ×!Ñ! (Ð,>Ô?Ø‡}�}×Ò˜fŸm™m×7Ò7ô	8ð 	�‰×Ñ×&Ñ& ¸ÔAô ‡|�|�wÒØ×Ñ×*Ñ*Ð+=Õ>ð r@   c                óR  — | j                   j                  }ddh}d}|D ]8  }||v r|j                  «       }|dk(  rd}Œ|dk(  rd}Œ'|dk(  rd}Œ/||vsŒ4||z  }Œ: | j                   j                  sd	|vrd	|z   }|S | j                   j                  rd	|v r|j	                  d	d«      }|S )
NÚFÚSÚ ÚaÚsxXEfÚAÚPpsxXEfÚNÚw)r¢   rn   Úlowerrq   Úreplace)rª   rn   Úold_aliasesÚ
reportoptsÚchars        r?   Úgetreportoptr»   4  sÍ   € Ø—}‘}×0Ñ0€Kà˜�*€KØ€JØò 
ˆØ�;ÑØ—:‘:“<ˆDØ�3Š;Ø ‰JØ�SŠ[Ø"‰JØ�SŠ[Ø‰JØ˜Ò#Ø˜$Ñ‰Jð
ð �=‰=×)Ò)¨c¸Ñ.CØ˜:Ñ%ˆ
ð Ðð 
�‰×	'Ò	'¨C°:Ñ,=Ø×'Ñ'¨¨RÓ0ˆ
àÐr@   T©Útrylastc                ó¬   — d}| j                   rd}n| j                  rd}| j                  }| j                  dv r	|dk(  rd}d}|||j	                  «       fS )Nr­   ú.Ús)ÚcollectÚsetupÚteardownr'   r.   ÚE)r(   r)   ÚoutcomeÚwhenÚupper)Úreportr[   rÅ   s      r?   Úpytest_report_teststatusrÉ   M  sY   € à€FØ‡}‚}Ø‰Ø	�ŠØˆà—>‘>€GØ‡{�{Ð6Ñ6¸7ÀhÒ;NØˆØˆà�F˜GŸM™M›OÐ+Ð+r@   c                  óN   — e Zd ZU dZded<   dZded<   dZded<   d	Zd
ed<   dd„Zy)ÚWarningReportao  Simple structure to hold warnings information captured by ``pytest_warning_recorded``.

    :ivar str message:
        User friendly message about the warning.
    :ivar str|None nodeid:
        nodeid that generated the warning (see ``get_location``).
    :ivar tuple fslocation:
        File system location of the source of the warning (see ``get_location``).
    rL   ÚmessageNrO   Únodeidztuple[str, int] | NoneÚ
fslocationTr   Úcount_towards_summaryc                óÊ   — | j                   r| j                   S | j                  r?| j                  \  }}t        |j                  j                  t        |«      «      }|› d|› �S y)zSReturn the more user-friendly information about the location of a warning, or None.ú:N)rÍ   rÎ   r"   Úinvocation_paramsÚdirr!   )r=   rª   ÚfilenameÚlinenumÚrelpaths        r?   Úget_locationzWarningReport.get_locationo  sY   € à�;Š;Ø—;‘;ÐØ�?Š?Ø $§¡ÑˆH�gÜ! &×":Ñ":×">Ñ">ÄÈXÓ@VÓWˆGØ�Y˜a ˜yÐ)Ð)Ør@   )rª   r   rP   rO   )	rS   rT   rU   rV   r]   rÍ   rÎ   rÏ   r×   r^   r@   r?   rË   rË   ]  s3   … ñð ƒLØ€FˆJÓØ)-€JÐ&Ó-à&*Ð˜8Ó*ôr@   rË   c                  óø  — e Zd ZdVdWd„Z	 	 dXd„ZedYd„«       ZedZd„«       ZedZd„«       ZedZd„«       Z	edZd„«       Z
e
j                  d[d	„«       Z
edZd
„«       ZedYd„«       Zd\d„Zd]d„Zd^d_d„Zd`d„Zddddœ	 	 	 	 	 	 	 	 	 	 	 dad„Zddœdbd„Zddœdcd„Zd`d„Zddd„Zded„Z	 	 df	 	 	 	 	 	 	 	 	 dgd„Zdhdid„Zdjd„Zdkd„Zdld„Z	 	 	 	 	 	 dmd „Zdnd!„Zdod"„Z	 	 	 	 	 	 dpd#„Z dqd$„Z!edZd%„«       Z" e#d&¬'«      drd(„«       Z$dsd)„Z%d`d*„Z&d`d+„Z'edYd,„«       Z(d`d-„Z)dtd.„Z*dudvd/„Z+ e#d&¬0«      dwd1„«       Z,	 	 	 	 dxd2„Z-dyd3„Z.dwd4„Z/dod5„Z0 e#d&¬'«      	 	 	 	 	 	 dzd6„«       Z1 e#d&¬'«      d{d7„«       Z2d|d8„Z3d`d9„Z4d`d:„Z5	 	 	 	 	 	 	 	 	 	 d}d;„Z6d<„ Z7d=„ Z8d~d>„Z9dd?„Z:d`d@„Z;d`dA„Z<d`dB„Z=	 	 	 	 	 	 	 	 d€dC„Z>d�dD„Z?d‚dE„Z@dƒdF„ZAd`dG„ZBd`dH„ZCddIœ	 	 	 	 	 	 	 	 	 d„dJ„ZDd`dK„ZEd…dL„ZFd`dM„ZGd`dN„ZHd†dO„ZId‡dP„ZJd`dQ„ZKdˆdR„ZLd‰dS„ZM	 	 dˆdT„ZN	 	 dˆdU„ZOy)Šrž   Nc                óÞ  — dd l }|| _        d| _        d | _        d | _        i | _        d | _        d | _        |j                  j                  | _
        |€t        j                  }|j                  j                  ||«      | _        | j                  j                  | _        d | _        t%        |«      | _        |j(                  j*                  | _        | j                  j.                  | _        t1        j2                  |j5                  «       «      | _        t7        «       | _        t7        «       | _        | j=                  «       | _        tA        jB                  «       | _"        d | _#        d | _$        y ©Nr   )%Ú_pytest.configrª   Ú_numcollectedÚ_sessionÚ_showfspathÚstatsÚ_main_colorÚ_known_typesrÒ   rÓ   Ú	startpathrŸ   r~   Úcreate_terminal_writerÚ_twÚ	fullwidthÚ_screen_widthÚcurrentfspathr»   rn   r¢   rj   ÚfoldskippedÚ	hasmarkupr   ÚCallableBoolÚisattyÚsetÚ_progress_nodeids_reportedÚ_timing_nodeids_reportedÚ_determine_show_progress_infoÚ_show_progress_infor   ÚInstantÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)r=   rª   ÚfileÚ_pytests       r?   r<   zTerminalReporter.__init__|  s  € ÛàˆŒØˆÔØ(,ˆŒØ(,ˆÔà+-ˆŒ
Ø'+ˆÔØ.2ˆÔØ×1Ñ1×5Ñ5ˆŒØˆ<Ü—:‘:ˆDØ—>‘>×8Ñ8¸ÀÓFˆŒØ!ŸX™X×/Ñ/ˆÔØ6:ˆÔÜ'¨Ó/ˆÔØ!Ÿ=™=×5Ñ5ˆÔØŸ™×+Ñ+ˆŒô ×)Ñ)¨$¯+©+«-Ó8ˆŒÜ47³EˆÔ'Ü25³%ˆÔ%Ø#'×#EÑ#EÓ#GˆÔ Ü*0¯.©.Ó*:ˆÔ'Ø7;ˆÔ(Ø=AˆÕ$r@   c                ó  — | j                   j                  dd«      dk(  r| j                   j                  d«      dk7  ry| j                   j                  dd«      ry| j                   j                  d«      }|dv ry|d	k(  ry	|d
k(  ry
y)zRReturn whether we should display progress information based on the current config.Úcapturerx   r„   úprogress-even-when-capture-noFÚ	setupshow>   r…   rù   r…   rc   Útimes)rª   Ú	getoptionÚgetini)r=   Úcfgs     r?   rï   z.TerminalReporter._determine_show_progress_infoš  sŒ   € ð �K‰K×!Ñ! )¨TÓ2°dÒ:Ø—‘×"Ñ"Ð#9Ó:Ø.ò/ð à�;‰;× Ñ  ¨eÔ4ØØ—;‘;×%Ñ%Ð&<Ó=ˆØÐ?Ñ?ØØ�GŠ^ØØ�GŠ^Øàr@   c                óF   — | j                   j                  j                  }|S rR   )rª   r¢   rd   )r=   Ú	verbositys     r?   r   zTerminalReporter.verbosity³  s   € àŸ™×+Ñ+×3Ñ3ˆ	ØÐr@   c                ó    — | j                   dk\  S rÚ   )r   ©r=   s    r?   Ú
showheaderzTerminalReporter.showheader¸  s   € à�~‰~ Ñ"Ð"r@   c                óT   — t        | j                  j                  j                  «      S rR   )rN   rª   r¢   rg   r  s    r?   rg   zTerminalReporter.no_header¼  s   € ä�D—K‘K×&Ñ&×0Ñ0Ó1Ð1r@   c                óT   — t        | j                  j                  j                  «      S rR   )rN   rª   r¢   rh   r  s    r?   rh   zTerminalReporter.no_summaryÀ  s   € ä�D—K‘K×&Ñ&×1Ñ1Ó2Ð2r@   c                óŠ   — | j                   €,| j                  j                  t        j                  «      dk\  S | j                   S rÚ   )rÞ   rª   Úget_verbosityr   r�   r  s    r?   Ú
showfspathzTerminalReporter.showfspathÄ  s:   € à×ÑÐ#Ø—;‘;×,Ñ,¬V×-HÑ-HÓIÈQÑNÐNØ×ÑÐr@   c                ó   — || _         y rR   )rÞ   )r=   Úvalues     r?   r  zTerminalReporter.showfspathÊ  s
   € à ˆÕr@   c                óZ   — | j                   j                  t        j                  «      dkD  S rÚ   )rª   r  r   r�   r  s    r?   Úshowlongtestinfoz!TerminalReporter.showlongtestinfoÎ  s"   € à�{‰{×(Ñ(¬×)DÑ)DÓEÈÑIÐIr@   c                ó,   — t        | j                  «      S )zUThe amount of items reported in the progress so far.

        :meta private:
        )Úlenrí   r  s    r?   Úreported_progressz"TerminalReporter.reported_progressÒ  s   € ô �4×2Ñ2Ó3Ð3r@   c                óH   — dddœj                  ||«      }|| j                  v S )NÚxrÀ   )r+   r)   )Úgetrn   )r=   rº   s     r?   ÚhasoptzTerminalReporter.hasoptÚ  s*   € Ø¨3Ñ/×3Ñ3°D¸$Ó?ˆØ�t×'Ñ'Ð'Ð'r@   c                óÌ  — | j                   j                  |j                  dd¬«      d   z  }| j                  �|| j                  k7  r}| j                  �| j                  r| j                  «        || _        t        | j                  |«      }| j                  j                  «        | j                  j                  |dz   «        | j                  j                  |fddi|¤Ž y )Nú::rB   ©Úmaxsplitr   r“   ÚflushT)rª   ÚrootpathÚsplitrç   rð   Ú)_write_progress_information_filling_spacer"   râ   rä   ry   Úwrite)r=   rÍ   ÚresÚmarkupÚfspathÚ	relfspaths         r?   Úwrite_fspath_resultz$TerminalReporter.write_fspath_resultÞ  s¶   € Ø—‘×%Ñ%¨¯©°TÀA¨Ó(FÀqÑ(IÑIˆØ×ÑÐ%¨°4×3EÑ3EÒ)EØ×!Ñ!Ð-°$×2JÒ2JØ×>Ñ>Ô@Ø!'ˆDÔÜ# D§N¡N°FÓ;ˆIØ�H‰H�M‰MŒOØ�H‰H�N‰N˜9 s™?Ô+Øˆ�‰�‰�sÑ1 $Ð1¨&Ó1r@   c                óè   — | j                   |k7  r<| j                  j                  «        || _         | j                  j                  |«       |r% | j                  j                  |fi |¤Ž d| _         y y )Néþÿÿÿ)rç   rä   ry   r  )r=   ÚprefixÚextraÚkwargss       r?   Úwrite_ensure_prefixz$TerminalReporter.write_ensure_prefixé  s\   € Ø×Ñ Ò'Ø�H‰H�M‰MŒOØ!'ˆDÔØ�H‰H�N‰N˜6Ô"ÙØˆD�H‰H�N‰N˜5Ñ+ FÒ+Ø!#ˆDÕð r@   c                ó`   — | j                   r"| j                  j                  «        d | _         y y rR   )rç   rä   ry   r  s    r?   Úensure_newlinezTerminalReporter.ensure_newlineò  s%   € Ø×ÒØ�H‰H�M‰MŒOØ!%ˆDÕð r@   Fé   ú
)r  ÚmarginÚline_sepc               óî   — | j                   j                  }|j                  t        j                  d|z  |z   | j
                  |z
  dd¬«      «      }||d } | j                   j                  |fd|i|¤Ž y)z+Wrap message with margin for progress info.r“   TF)ÚwidthÚdrop_whitespaceÚreplace_whitespaceNr  )rä   Úwidth_of_current_liner”   ÚtextwrapÚwrapræ   r  )r=   Úcontentr  r,  r-  r  r2  Úwrappeds           r?   Ú
wrap_writezTerminalReporter.wrap_write÷  s|   € ð !%§¡× >Ñ >ÐØ—-‘-Ü�M‰MØÐ+Ñ+¨gÑ5Ø×(Ñ(¨6Ñ1Ø $Ø#(ô	ó
ˆð Ð/Ð0Ð1ˆØˆ�‰�‰�wÑ6 eÐ6¨vÓ6r@   ©r  c               óB   —  | j                   j                  |fd|i|¤Ž y )Nr  )rä   r  )r=   r5  r  r  s       r?   r  zTerminalReporter.write  s   € Øˆ�‰�‰�wÑ6 eÐ6¨vÓ6r@   c               ó>   — | j                   j                  ||¬«       y )Nr8  )rä   Ú	write_raw)r=   r5  r  s      r?   r;  zTerminalReporter.write_raw  s   € Ø�‰×Ñ˜7¨%ÐÕ0r@   c                ó8   — | j                   j                  «        y rR   )rä   r  r  s    r?   r  zTerminalReporter.flush  s   € Ø�‰�‰Õr@   c                ó˜   — t        |t        «      st        |d¬«      }| j                  «         | j                  j                  |fi |¤Ž y )Nr·   )Úerrors)Ú
isinstancerL   r)  rä   ry   )r=   ry   r  s      r?   r–   zTerminalReporter.write_line  s;   € Ü˜$¤Ô$Ü�t IÔ.ˆDØ×ÑÔØˆ�‰�‰�dÑ%˜fÓ%r@   c                óâ   — |j                  dd«      }|r+| j                  j                  t        |«      z
  dz
  }d|z  }nd}t	        |«      } | j                  j
                  d|z   |z   fi |¤Ž y)a-  Rewinds the terminal cursor to the beginning and writes the given line.

        :param erase:
            If True, will also add spaces until the full terminal width to ensure
            previous lines are properly erased.

        The rest of the keyword arguments are markup instructions.
        ÚeraseFrB   r“   r¯   úN)Úpoprä   rå   r  rL   r  )r=   ry   r  rA  Ú
fill_countÚfills         r?   ÚrewritezTerminalReporter.rewrite  sl   € ð —
‘
˜7 EÓ*ˆÙØŸ™×+Ñ+¬c°$«iÑ7¸!Ñ;ˆJØ˜Ñ#‰DàˆDÜ�4‹yˆØˆ�‰�‰�t˜d‘{ TÑ)Ñ4¨VÓ4r@   c                ób   — | j                  «         | j                  j                  |||fi |¤Ž y rR   )r)  rä   Úsep)r=   rH  Útitlerå   r  s        r?   Ú	write_sepzTerminalReporter.write_sep.  s+   € ð 	×ÑÔØˆ�‰�‰�S˜% Ñ5¨fÓ5r@   c                ó@   —  | j                   j                  ||fi |¤Ž y rR   )rä   rH  )r=   rI  rH  Úkws       r?   ÚsectionzTerminalReporter.section8  s   € Øˆ�‰�‰�S˜%Ñ& 2Ó&r@   c                ó>   —  | j                   j                  |fi |¤Ž y rR   )rä   ry   )r=   r™   rL  s      r?   ry   zTerminalReporter.line;  s   € Øˆ�‰�‰�cÑ ˜RÓ r@   c                óœ   — || j                   v}| j                   j                  |g «      j                  |«       |r| j                  «        y y rR   )rß   Ú
setdefaultÚextendÚ_set_main_color)r=   rZ   ÚitemsÚset_main_colors       r?   Ú
_add_statszTerminalReporter._add_stats>  sC   € Ø!¨¯©Ð3ˆØ�
‰
×Ñ˜h¨Ó+×2Ñ2°5Ô9ÙØ× Ñ Õ"ð r@   c                ój   — t        |«      j                  d«      D ]  }| j                  d|z   «       Œ y)Nr+  zINTERNALERROR> T)rL   r  r–   )r=   Úexcreprry   s      r?   Úpytest_internalerrorz%TerminalReporter.pytest_internalerrorD  s5   € Ü˜“L×&Ñ& tÓ,ò 	6ˆDØ�O‰OÐ-°Ñ4Õ5ð	6àr@   c                ó’   — ddl m} |j                  |j                  f} ||«      }t	        |||¬«      }| j                  d|g«       y )Nr   )Úwarning_record_to_str)rÎ   rÌ   rÍ   r-   )Ú_pytest.warningsrZ  rÔ   ÚlinenorË   rU  )r=   Úwarning_messagerÍ   rZ  rÎ   rÌ   Úwarning_reports          r?   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recordedI  sK   € õ
 	;à$×-Ñ-¨×/EÑ/EÐEˆ
Ù'¨Ó8ˆä&Ø!¨7¸6ô
ˆð 	�‰˜
 ^Ð$4Õ5r@   c                ór   — | j                   j                  j                  rd|› �}| j                  |«       y y )NzPLUGIN registered: )rª   r¢   r¤   r–   )r=   Úpluginr™   s      r?   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registeredX  s4   € Ø�;‰;×Ñ×)Ò)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *r@   c                ó(   — | j                  d|«       y )Nr*   )rU  )r=   rS  s     r?   Úpytest_deselectedz"TerminalReporter.pytest_deselected`  s   € Ø�‰˜ eÕ,r@   c                óô   — |\  }}}| j                   r7| j                  ||||«      }| j                  |d«       | j                  «        y | j                  r#| j                  |d«       | j                  «        y y )Nr¯   )r  Ú_locationliner'  r  r  r!  )r=   rÍ   Úlocationr  r\  Údomainry   s          r?   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstartc  so   € ð "*Ñˆ�˜ð × Ò Ø×%Ñ% f¨f°f¸fÓEˆDØ×$Ñ$ T¨2Ô.Ø�J‰J�LØ�_Š_Ø×$Ñ$ V¨RÔ0Ø�J‰J�Lð r@   c                ó.  — d| _         |}t        | j                  j                  j	                  || j                  ¬«      Ž }|j
                  |j                  |j                  }}}t        |t        «      sd }n|\  }}| j                  ||g«       |s|sy |€Vt        |d«      }|j                  r|sddi}n7|j                  r|rddi}n$|j                  rddi}n|j                  rddi}ni }| j                  j!                  |j"                  «       | j                  j%                  t&        j(                  «      dk  rI | j*                  j,                  |fi |¤Ž | j.                  �r| j0                  �s| j3                  «        �nÿ | j4                  |j"                  g|j6                  ¢­Ž }	t        |d«      }
|
så | j8                  |	|fi |¤Ž |j                  st        |d«      rœt;        |«      }| j                  j%                  t&        j(                  «      d	k  rJ| j*                  j<                  | j*                  j>                  z
  tA        d
«      z
  dz
  }tC        d||«      }nd|› d�}|r|�| jE                  |«       | j.                  rö| jG                  «        nå| jI                  «        | j*                  j-                  d|jJ                  jL                  jN                  › d�«       | j.                  r/| j*                  j-                  | jQ                  «       dz   d¬«       n| j*                  j-                  d«        | j*                  j,                  |fi |¤Ž | j*                  j-                  d|	z   «       d| _)        | jU                  «        y )NT)rÈ   rª   ÚwasxfailÚgreenÚyellowÚredr   Únodeé   ú [100%]rB   z ({})z (ú)ú[ú]r“   )Úcyanr#  )+Ú
_tests_ranrY   rª   ÚhookrÉ   rZ   r[   r\   r?  ÚtuplerU  Úhasattrr(   r'   r)   rí   ÚaddrÍ   r  r   r�   rä   r  rð   Ú_is_last_itemÚ(_write_progress_information_if_past_edgerf  rg  r'  Ú_get_raw_skip_reasonrå   r2  r  Ú_format_trimmedr7  r  r)  ro  ÚgatewayÚidÚ!_get_progress_information_messagerç   r  )r=   rÈ   Úrepr  rZ   r[   r\   r  Ú	was_xfailry   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 r?   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreportq  s  € ØˆŒØˆä Ø�[‰[×Ñ×6Ñ6¸cÈ$Ï+É+Ð6ÓVð
ˆð "%§¡¨s¯z©z¸3¿8¹8˜$�&ˆÜ˜$¤Ô&Ø‰Fà‰LˆD�&Ø�‰˜ 3 %Ô(Ù™dàØˆ>Ü ¨
Ó3ˆIØ�zŠz¡)Ø! 4˜‘Ø—’¡	Ø" DÐ)‘Ø—’Ø ˜‘Ø—’Ø" DÐ)‘à�Ø×'Ñ'×+Ñ+¨C¯J©JÔ7Ø�;‰;×$Ñ$¤V×%@Ñ%@ÓAÀQÒFØˆD�H‰H�N‰N˜6Ñ, VÒ,ð ×'Ó'°×0BÓ0BØ×=Ñ=Ö?à%�4×%Ñ% c§j¡jÐ@°3·<±<Ò@ˆDÜ# C¨Ó0ˆMÙ Ø(�×(Ñ(¨¨tÑ>°vÒ>Ø—;’;¤'¨&°*Ô"=Ü1°#Ó6�FØ—{‘{×0Ñ0´×1LÑ1LÓMÐPQÒQà!ŸX™X×/Ñ/°$·(±(×2PÑ2PÑPÜ! )›nñ-àñ ð (ô
 ,;Ø# V¨_ó,Ñ(ð .0°¨x°q¨>Ð(áÐ"2Ð">ØŸ™Ð(8Ô9Ø×+Ò+Ø×BÑBÕDà×#Ñ#Ô%Ø—‘—‘  3§8¡8×#3Ñ#3×#6Ñ#6Ð"7°qÐ9Ô:Ø×+Ò+Ø—H‘H—N‘NØ×>Ñ>Ó@À3ÑFÈTð #õ ð —H‘H—N‘N 3Ô'Ø�—‘—‘˜tÑ. vÒ.Ø—‘—‘˜s T™zÔ*Ø%'�Ô"Ø�
‰
�r@   c                ód   — | j                   €J ‚| j                  | j                   j                  k(  S rR   )rÝ   r  Útestscollectedr  s    r?   r{  zTerminalReporter._is_last_item½  s-   € à�}‰}Ð(Ð(Ð(Ø×%Ñ%¨¯©×)EÑ)EÑEÐEr@   T)Úwrapperc              #  ó¾   K  — d –—}| j                   j                  t        j                  «      dk  r(| j                  r| j
                  r| j                  «        |S ­wrÚ   )rª   r  r   r�   rð   r  r  )r=   Úresults     r?   Úpytest_runtestloopz#TerminalReporter.pytest_runtestloopÂ  sM   è ø€ âˆð �K‰K×%Ñ%¤f×&AÑ&AÓBÀaÒGØ×(Ò(Ø×&Ò&à×:Ñ:Ô<àˆùs   ‚AAc                óä  ‡— | j                   sJ ‚| j                   j                  }| j                  dk(  rG|r<| j                  }dt	        t        |«      «      › d�}d|› d�}|j                  ||«      S d|› d|› d�S | j                  d	k(  �rG|sy
| j                  d«      | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d
«      z   }|d   j                  d   Š|D �cg c]  }|j                  | j                  vsŒ|‘Œ }}t        ˆfd„| j                   j                  D «       «      }t        ˆfd„|D «       «      }	|	|k(  }
| j                  s|
r=| j                  j                  d„ |D «       «       t        t        d„ |D «       «      «      S y
|rd| j                  dz  |z  d›d�S yc c}w )Nrc   z{:zd}ú [z/{}]z [ ú / z ]rû   r¯   r(   r,   r'   r+   r)   r.   éÿÿÿÿr   c              3  óB   •K  — | ]  }|j                   d    ‰k(  –— Œ y­w)r   N)rg  )Ú.0ÚiÚcurrent_locations     €r?   ú	<genexpr>zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ê  s$   øè ø€ ò "Ø67�—
‘
˜1‘Ð!1Õ1ñ"ùs   ƒc              3  ó`   •K  — | ]%  }|j                   d    ‰k(  r|j                  dk(  –— Œ' y­w)r   rÂ   N)rg  rÆ   )r”  Úrr–  s     €r?   r—  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>í  s3   øè ø€ ò "àØ—:‘:˜a‘=Ð$4Ò4ð —‘˜'Õ!ñ"ùs   ƒ+.c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrR   )rÍ   ©r”  r™  s     r?   r—  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ô  s   è ø€ Ò4TÀ!°Q·XµXÑ4Tùs   ‚c              3  óV   K  — | ]!  }t        |t        «      sŒ|j                  –— Œ# y ­wrR   )r?  r%   Údurationr›  s     r?   r—  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ö  s   è ø€ ÒV q¼JÀqÌ*Õ<U˜Ÿ
�
ÑVùs   ‚)˜)éd   Ú3dz%]rq  )rÝ   rŠ  rð   r  r  rL   ÚformatÚ_get_reports_to_displayrg  rÍ   rî   ÚsumrS  r  ÚupdateÚformat_node_duration)r=   Ú	collectedr…   Úcounter_formatÚformat_stringÚall_reportsr™  Únot_reportedÚtests_in_moduleÚtests_completedÚlast_in_moduler–  s              @r?   r�  z2TerminalReporter._get_progress_information_messageÐ  s&  ø€ Ø�}Š}Ðˆ}Ø—M‘M×0Ñ0ˆ	Ø×#Ñ# wÒ.ÙØ×1Ñ1�Ø#&¤s¬3¨y«>Ó':Ð&;¸3Ð!?�Ø"$ ^Ð$4°FÐ ;�Ø$×+Ñ+¨H°iÓ@Ð@Ø˜˜ 3 y k°Ð4Ð4Ø×#Ñ# wÓ.ÙØà×,Ñ,¨XÓ6Ø×.Ñ.¨yÓ9ñ:à×.Ñ.¨xÓ8ñ9ð ×.Ñ.¨yÓ9ñ:ð ×.Ñ.¨yÓ9ñ	:ð
 ×.Ñ.¨wÓ7ñ8ð ×.Ñ.¨rÓ2ñ3ð ð  +¨2™×7Ñ7¸Ñ:Ðà&öØ¨!¯(©(¸$×:WÑ:WÒ*W’ðˆLð ô "ó "Ø;?¿=¹=×;NÑ;Nô"ó ˆOô "ó "à%ô"ó ˆOð
 -°Ñ?ˆNØ×$Ò$©Ø×-Ñ-×4Ñ4Ñ4TÀ|Ô4TÔTÜ+ÜÑV¨LÔVÓVóð ð ÙØ˜×.Ñ.°Ñ4¸	ÑAÀ"ÐEÀRÐHÐHØùò)s   Ä"G-Å G-c                ó®  — | j                   }| j                  dk(  r7| j                  sJ ‚| j                  j                  }t	        d|› d|› d�«      }n&| j                  dk(  rt	        d«      }nt	        d«      }||z   dz   | j
                  k\  }|rF| j                  «       \  }}| j                  «       } | j                  j                  |d	z   fi |d
i¤Ž y y )Nrc   r�  ú/rt  rû   z 99h 59mrq  rB   r+  T)
Ú_width_of_current_linerð   rÝ   rŠ  r  ræ   Ú_get_main_colorr�  rä   r  )r=   rµ   Ú	num_testsÚprogress_lengthÚ	past_edgeÚ
main_colorÚ_r™   s           r?   r|  z9TerminalReporter._write_progress_information_if_past_edgeý  sÑ   € Ø×'Ñ'ˆØ×#Ñ# wÒ.Ø—=’=Ð �=ØŸ™×4Ñ4ˆIÜ! B y k°°9°+¸QÐ"?Ó@‰OØ×%Ñ%¨Ò0Ü! *›o‰Oä! )›nˆOØ˜Ñ'¨!Ñ+¨t×/AÑ/AÑAˆ	ÙØ ×0Ñ0Ó2‰MˆJ˜Ø×8Ñ8Ó:ˆCØˆD�H‰H�N‰N˜3 ™:Ñ<¨*°dÐ);Ó<ð r@   c                óæ   — | j                  «       \  }}| j                  «       }| j                  }| j                  j                  |z
  dz
  } | j
                  |j                  |«      fddi|di¤Ž y )NrB   r  T)r°  r�  r¯  rä   rå   r  Úrjust)r=   r‚   rµ  r™   rµ   rE  s         r?   r  z:TerminalReporter._write_progress_information_filling_space  sj   € Ø×'Ñ'Ó)‰ˆˆqØ×4Ñ4Ó6ˆØ×'Ñ'ˆØ�x‰x×!Ñ! AÑ%¨Ñ)ˆØˆ�
‰
�3—9‘9˜T“?Ñ@¨$Ð@°5¸$°-Ó@r@   c                ó.   — | j                   j                  S )z%Return the width of the current line.)rä   r2  r  s    r?   r¯  z'TerminalReporter._width_of_current_line  s   € ð �x‰x×-Ñ-Ð-r@   c                ó  — | j                  «       r9| j                  j                  j                  dk\  r| j	                  ddd¬«       y y | j                  j                  j                  dk\  r| j	                  ddd¬«       y y )Nr   zcollecting ... T)r  ÚboldrB   )rë   rª   r¢   rd   r  r  s    r?   Úpytest_collectionz"TerminalReporter.pytest_collection  sk   € Ø�;‰;Œ=Ø�{‰{×!Ñ!×)Ñ)¨QÒ.Ø—
‘
Ð,°D¸t�
ÕDð /à�[‰[×Ñ×'Ñ'¨1Ò,Ø�J‰JÐ(°¸4ˆJÕ@ð -r@   c                ó^  — |j                   r| j                  d|g«       n|j                  r| j                  d|g«       |j                  D �cg c]  }t	        |t
        «      sŒ|‘Œ }}| xj                  t        |«      z  c_        | j                  «       r| j                  «        y y c c}w )Nr.   r)   )
r'   rU  r)   r�  r?  r   rÜ   r  rë   Úreport_collect)r=   rÈ   r  rS  s       r?   Úpytest_collectreportz%TerminalReporter.pytest_collectreport   s…   € Ø�=Š=Ø�O‰O˜G f XÕ.Ø�^Š^Ø�O‰O˜I¨ xÔ0Ø"ŸM™MÖA�q¬Z¸¼4Õ-@’ÐAˆÐAØ×Òœc %›jÑ(ÕØ�;‰;Œ=Ø×ÑÕ!ð ùò Bs   ÁB*Á$B*c                óX  — | j                   j                  j                  dk  ry |sE| j                  j	                  «       j
                  t        k  ry t        j                  «       | _        t        | j                  j                  dg «      «      }t        | j                  j                  dg «      «      }t        | j                  j                  dg «      «      }| j                  |z
  }|rdnd}|t        | j                  «      dz   | j                  dk(  rd	nd
z   z  }|r|d|› d|dk7  rd
nd	› �z  }|r	|d|› d�z  }|r	|d|› d�z  }| j                  |kD  r	|d|› d�z  }| j                  «       r)| j                  |dd¬«       |r| j!                  d«       y y | j#                  |«       y )Nr   r.   r)   r*   z
collected zcollecting z itemrB   r¯   rÀ   r‘  z errorz deselectedz skippedz	 selectedT)rº  rA  r+  )rª   r¢   rd   rò   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rñ   r  rß   r  rÜ   rL   rë   rF  r  r–   )r=   r   r>  r)   r*   Úselectedry   s          r?   r½  zTerminalReporter.report_collect*  s›  € Ø�;‰;×Ñ×%Ñ%¨Ò)Øáð ×/Ñ/×7Ñ7Ó9×AÑAÜ.ò/ð Ü.4¯n©nÓ.>ˆDÔ+ä�T—Z‘Z—^‘^ G¨RÓ0Ó1ˆÜ�d—j‘j—n‘n Y°Ó3Ó4ˆÜ˜Ÿ™Ÿ™¨°bÓ9Ó:ˆ
Ø×%Ñ%¨
Ñ2ˆÙ$‰|¨-ˆØÜ�×"Ñ"Ó# gÑ-°t×7IÑ7IÈQÒ7N±ÐTWÑXñ	
ˆñ Ø�c˜&˜ ¨v¸ª{©ÀÐ'CÐDÑDˆDÙØ�c˜*˜ [Ð1Ñ1ˆDÙØ�c˜'˜ (Ð+Ñ+ˆDØ×Ñ Ò(Ø�c˜(˜ 9Ð-Ñ-ˆDØ�;‰;Œ=Ø�L‰L˜ D°ˆLÔ5ÙØ—
‘
˜4Õ ð ð �O‰O˜DÕ!r@   r¼   c                óx  — || _         t        j                  «       | _        | j                  sy | j                  ddd¬«       t        j                  «       }| j                  �sXdt        j                  › d|› �}t        t        dd «      }|r1dj                  t        t        |d d	 «      «      }|d
|› d|d	   › d�z  }|dt        j                  j                   › dt"        j$                  › �z  }| j&                  dkD  sA| j(                  j*                  j,                  s!t        | j(                  j*                  dd «      r|dt        t        j.                  «      z   z  }| j1                  |«       | j(                  j2                  j5                  | j(                  | j6                  ¬«      }| j9                  |«       y y )Nú=ztest session startsT©rº  z	platform z -- Python Úpypy_version_infor¿   é   z[pypy-ú-rt  z	, pytest-z	, pluggy-r   Úpastebinz -- )rª   Ú
start_path)rÝ   r   rñ   Ú_session_startr  rJ  r¨   Úpython_versionrg   rŸ   rD   r”   r•   rL   rö   Ú_versionÚversionÚpluggyÚ__version__r   rª   r¢   r£   Ú
executabler–   rw  Úpytest_report_headerrâ   Ú_write_report_lines_from_hooks)r=   ÚsessionÚverinfor™   rÇ  Úliness         r?   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstartN  su  € àˆŒÜ$Ÿn™nÓ.ˆÔØ�ŠØØ�‰�sÐ1¸ˆÔ=Ü×)Ñ)Ó+ˆØ�~‹~ØœcŸl™l˜^¨;°w°iÐ@ˆCÜ '¬Ð-@À$Ó GÐÙ ØŸ(™(¤3¤sÐ,=¸b¸qÐ,AÓ#BÓC�Ø˜ ˜y¨Ð*;¸AÑ*>Ð)?¸qÐAÑA�Ø�Yœw×/Ñ/×7Ñ7Ð8¸	Ä&×BTÑBTÐAUÐVÑVˆCà—‘ Ò"Ø—;‘;×%Ñ%×+Ò+Ü˜4Ÿ;™;×-Ñ-¨z¸4Ô@à�v¤¤C§N¡NÓ 3Ñ3Ñ3�Ø�O‰O˜CÔ Ø—K‘K×$Ñ$×9Ñ9Ø—{‘{¨t¯~©~ð :ó ˆEð ×/Ñ/°Õ6ð# r@   c                ó˜   — t        |«      D ]<  }t        |t        «      r| j                  |«       Œ%|D ]  }| j                  |«       Œ Œ> y rR   )Úreversedr?  rL   r–   )r=   r×  Úline_or_linesry   s       r?   rÔ  z/TerminalReporter._write_report_lines_from_hooksi  sH   € ô & e›_ò 	*ˆMÜ˜-¬Ô-Ø—‘ Õ.à)ò *�DØ—O‘O DÕ)ñ*ñ		*r@   c           	     óx  — d|j                   › �g}|j                  rbd}|j                  rddj                  |j                  «      › d�}|j	                  dt        |j                   |j                  «      z   |z   «       |j                  t        j                  j                  k(  r@|j                  d«      }|j	                  dj                  dj                  |«      «      «       |j                  j                  «       }|r8|j	                  d	j                  dj                  t        |«      «      «      «       |S )
Nz	rootdir: r¯   z% (WARNING: ignoring pytest config in ú, z!)zconfigfile: Ú	testpathsztestpaths: {}zplugins: {})r  ÚinipathÚ_ignored_config_filesr”   Úappendr"   Úargs_sourcer   Ú
ArgsSourceÚ	TESTPATHSrý   r   r    Úlist_plugin_distinfoÚ_plugin_nameversions)r=   rª   r�  ÚwarningrÞ  Ú
plugininfos         r?   rÓ  z%TerminalReporter.pytest_report_headers  s  € Ø˜fŸo™oÐ.Ð/Ð0ˆà�>Š>ØˆGØ×+Ò+ØAÀ$Ç)Á)ÈF×LhÑLhÓBiÐAjÐjlÐm�Ø�M‰MØ¤¨V¯_©_¸f¿n¹nÓ!MÑMÐPWÑWôð ×Ñ¤×!2Ñ!2×!<Ñ!<Ò<Ø#)§=¡=°Ó#=ˆIØ�M‰M˜/×0Ñ0°·±¸9Ó1EÓFÔGà×)Ñ)×>Ñ>Ó@ˆ
ÙØ�M‰MØ×$Ñ$ T§Y¡YÔ/CÀJÓ/OÓ%PÓQôð ˆr@   c                óŽ  — | j                  d«       | j                  j                  j                  | j                  | j                  |j
                  ¬«      }| j                  |«       | j                  j                  d«      rÂ|j
                  rY| j                  j                  j                  dkD  r| j                  j                  d«       | j                  |j
                  «       | j                  j                  d«      }|r?| j                  j                  dd«       |D ]  }|j!                  | j                  «       Œ y y y )	NT)rª   rË  rS  Úcollectonlyr’  r¯   r'   ú!zcollection failures)r½  rª   rw  Úpytest_report_collectionfinishrâ   rS  rÔ  rü   r¢   rd   rä   ry   Ú_printcollecteditemsrß   r  rH  Ú
toterminal)r=   rÕ  r×  r'   r‚  s        r?   Úpytest_collection_finishz)TerminalReporter.pytest_collection_finish‰  sù   € Ø×Ñ˜DÔ!à—‘× Ñ ×?Ñ?Ø—;‘;Ø—~‘~Ø—-‘-ð @ó 
ˆð
 	×+Ñ+¨EÔ2à�;‰;× Ñ  Ô/Ø�}Š}Ø—;‘;×%Ñ%×-Ñ-°Ò2Ø—H‘H—M‘M "Ô%Ø×)Ñ)¨'¯-©-Ô8à—Z‘Z—^‘^ HÓ-ˆFÙØ—‘—‘˜SÐ"7Ô8Ø!ò -�CØ—N‘N 4§8¡8Õ,ñ-ð ð 0r@   c           	     ó†  — | j                   j                  t        j                  «      }|dk  r†|dk  rTt	        d„ |D «       «      }t        |j                  «       «      D ]%  \  }}| j                  j                  |› d|› �«       Œ' y |D ]'  }| j                  j                  |j                  «       Œ) y g }d}|D �]  }|j                  «       dd  }	|r%||	d t        |«       k(  rn|j                  «        |rŒ%|	t        |«      d  D ]µ  }
|j                  |
«       t        |«      dz
  dz  }| j                  j                  |› |
› �«       |dk\  sŒJt        |
dd «      }|rt        j                   |«      nd }|sŒs|j#                  «       D ]0  }| j                  j                  d	j%                  |dz   |«      «       Œ2 Œ· �Œ y )
Nr   r’  c              3  óZ   K  — | ]#  }|j                   j                  d d«      d   –— Œ% y­w©r  rB   r   N)rÍ   r  )r”  Úitems     r?   r—  z8TerminalReporter._printcollecteditems.<locals>.<genexpr>£  s&   è ø€ Ò QÀ4 §¡×!2Ñ!2°4¸Ó!;¸AÕ!>Ñ Qùs   ‚)+ú: r¯   rB   ú  Úobjz{}{})rª   r  r   r�   r   ÚsortedrS  rä   ry   rÍ   Ú	listchainr  rC  rá  rD   ÚinspectÚgetdocÚ
splitlinesr   )r=   rS  Útest_cases_verbosityÚcountsÚnamerc   ró  ÚstackÚindentÚneeded_collectorsÚcolrö  Údocry   s                 r?   rí  z%TerminalReporter._printcollecteditemsŸ  s±  € Ø#Ÿ{™{×8Ñ8¼×9TÑ9TÓUÐØ !Ò#Ø# bÒ(Ü Ñ QÈ5Ô QÓQ�Ü#)¨&¯,©,«.Ó#9ò 6‘K�D˜%Ø—H‘H—M‘M T F¨"¨U¨GÐ"4Õ5ð6ð
 ð "ò /�DØ—H‘H—M‘M $§+¡+Õ.ð/àØˆØˆØó 	NˆDØ $§¡Ó 0°°Ð 4ÐÙØÐ-¨l´°E³
Ð;Ò;ØØ—	‘	”ò ð )¬¨U«¨Ð6ò 	N�Ø—‘˜SÔ!Ü˜e›* q™.¨DÑ0�Ø—‘—‘  ¨¨Ð.Ô/Ø'¨1Ó,Ü! # u¨dÓ3�CÙ14œ'Ÿ.™.¨Ô-¸$�CÚØ$'§N¡NÓ$4ò N˜DØ ŸH™HŸM™M¨&¯-©-¸À¹ÀtÓ*LÕMñNò	Nñ	Nr@   c              #  óØ  K  — d –—}| j                   j                  d«       t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  f}||v r>| j                  s2| j                  j                  j                  | || j                  ¬«       | j                  «       }|�u|j                  t        j                  k(  rXt        | j                   j#                  dg «      «      }||kD  r.t        j                  |_        | j%                  d|› d|› �d¬«       |j&                  r'| j)                  dt+        |j&                  «      d¬«       |t        j
                  k(  r| j-                  «        d | _        n3|j0                  r'| j)                  dt+        |j0                  «      d¬«       | j3                  «        |S ­w)	Nr¯   )r‘   Ú
exitstatusrª   r-   z3Tests pass, but maximum allowed warnings exceeded: z > T)rn  rë  )rä   ry   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDÚMAX_WARNINGS_ERRORrh   rª   rw  Úpytest_terminal_summaryÚ_get_max_warningsr  r  rß   r  r–   Ú
shouldfailrJ  rL   Ú_report_keyboardinterruptrô   Ú
shouldstopÚsummary_stats)r=   rÕ  r  r�  Úsummary_exit_codesÚmax_warningsÚwarning_counts          r?   Úpytest_sessionfinishz%TerminalReporter.pytest_sessionfinish½  s�  è ø€ ò ˆØ�‰�‰�bÔä�K‰KÜ×!Ñ!Ü× Ñ Ü× Ñ Ü×'Ñ'Ü×'Ñ'ð
Ðð Ð+Ñ+°D·O²OØ�K‰K×Ñ×4Ñ4Ø!%°*ÀTÇ[Á[ð 5ô ð ×-Ñ-Ó/ˆØÐ#¨×(:Ñ(:¼h¿k¹kÒ(IÜ §
¡
§¡¨z¸2Ó >Ó?ˆMØ˜|Ò+Ü%-×%@Ñ%@�Ô"Ø—‘ØIØ$�o S¨¨ð8àð  ô ð
 ×ÒØ�N‰N˜3¤ G×$6Ñ$6Ó 7¸TˆNÔBØœ×-Ñ-Ò-Ø×*Ñ*Ô,Ø+/ˆDÕ(Ø×ÒØ�N‰N˜3¤ G×$6Ñ$6Ó 7¸TˆNÔBØ×ÑÔØˆùs   ‚G(G*c              #  ó^  K  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        	 d –—| j                  «        | j                  «        S # | j                  «        | j                  «        w xY w­wrR   )Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summaryr  s    r?   r  z(TerminalReporter.pytest_terminal_summaryä  s‰   è ø€ à×ÑÔØ×ÑÔØ×ÑÔ Ø×ÑÔØ×ÑÔØ×ÑÔð	$Úà×#Ñ#Ô%à×!Ñ!Õ#øð ×#Ñ#Ô%à×!Ñ!Õ#üs   ‚A!B-Á$B Á'!B-Â"B*Â*B-c                ó2   — |j                  d¬«      | _        y )NT)Úfuncargs)Úgetreprrô   )r=   Úexcinfos     r?   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interruptó  s   € Ø'.§¡À Ó'EˆÕ$r@   c                ó>   — | j                   �| j                  «        y y rR   )rô   r  r  s    r?   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigureö  s   € Ø×'Ñ'Ð3Ø×*Ñ*Õ,ð 4r@   c                ó–  — | j                   }|€J ‚|j                  €J ‚|j                  j                  }| j                  d|«       d|v r| j                  j
                  j                  r|j                  | j                  «       y |j                  j                  | j                  «       | j                  j                  dd¬«       y y )Nrë  ÚKeyboardInterruptz@(to show a full traceback on KeyboardInterrupt use --full-trace)T)rm  )
rô   Ú	reprcrashrÌ   rJ  rª   r¢   Ú	fulltracerî  rä   ry   )r=   rW  r™   s      r?   r  z*TerminalReporter._report_keyboardinterruptú  s¯   € Ø×.Ñ.ˆØÐ"Ð"Ð"Ø× Ñ Ð,Ð,Ð,Ø×Ñ×'Ñ'ˆØ�‰�s˜CÔ Ø #Ñ%Ø�{‰{×!Ñ!×+Ò+Ø×"Ñ" 4§8¡8Õ,à×!Ñ!×,Ñ,¨T¯X©XÔ6Ø—‘—‘ØVØð õ ð &r@   c                ó   ‡ ‡— d
ˆˆ fd„}|rm ||«      }‰ j                   dk\  rQ|j                  dd¬«      d   t        j                  |«      k7  r%|dt	        ‰ j
                  t        |«      «      z   z  }|d	z   S d}|d	z   S )Nc                óü   •— ‰j                   j                  | «      }‰r]|j                  ‰«      rL|d t        ‰«        }‰j	                  d«      }|d   j                  dd«      |d<   |dj                  |«      z  }|S )Nrs  r   r¿   r  )rª   Úcwd_relative_nodeidÚendswithr  r  r·   r”   )rÍ   ry   rH   rh  r=   s      €€r?   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel  sw   ø€ Ø—;‘;×2Ñ2°6Ó:ˆDÙ˜$Ÿ-™-¨Ô/Ø˜Nœs 6›{˜lÐ+�ØŸ™ cÓ*�Ø" 1™I×-Ñ-¨c°4Ó8��q‘	Ø˜Ÿ™ Ó(Ñ(�ØˆKr@   rp  r  rB   r  r   z <- z
[location]r“   )rÍ   rL   rP   rL   )r   r  r   Únorm_sepr"   râ   r
   )r=   rÍ   r  r\  rh  r-  r  s   `   `  r?   rf  zTerminalReporter._locationline
  s€   ù€ ö	ñ Ù˜“-ˆCØ�~‰~ Ò"Ø—‘˜T¨A�Ó.¨qÑ1´U·^±^ÀFÓ5KÒKà�v¤¨D¯N©N¼DÀ»LÓ IÑIÑI�ð �S‰yÐð ˆCØ�S‰yÐr@   c                ó$   — |j                   }|r|S y)Nztest session)Ú	head_line)r=   r‚  r0  s      r?   Ú_getfailureheadlinez$TerminalReporter._getfailureheadline!  s   € Ø—M‘Mˆ	ÙØÐØr@   c                ó²   — 	 t        |j                  j                  «      S # t        $ r, 	 t        |j                  «      d d cY S # t        $ r Y Y yw xY ww xY w)Né2   r¯   )rL   Úlongreprr'  ÚAttributeError)r=   r‚  s     r?   Ú_getcrashlinezTerminalReporter._getcrashline'  sX   € ð	Ü�s—|‘|×-Ñ-Ó.Ð.øÜò 	ðÜ˜3Ÿ<™<Ó(¨¨"Ð-Ò-øÜ!ò Úðúð	ús,   ‚! ¡	A«AÁAÁ	AÁAÁAÁAc                ó®   — | j                   j                  j                  }|�t        |«      S | j                   j	                  d«      }|rt        |«      S y)zEReturn the max_warnings threshold, from CLI or INI, or None if unset.Nr  )rª   r¢   r  r‰   rý   )r=   r
  Ú	ini_values      r?   r  z"TerminalReporter._get_max_warnings0  sK   € à—‘×"Ñ"×/Ñ/ˆØÐÜ�u“:ÐØ—K‘K×&Ñ& ~Ó6ˆ	ÙÜ�y“>Ð!Ør@   c                óz   — | j                   j                  |d«      D �cg c]  }t        |d«      rŒ|‘Œ c}S c c}w )Nr^   Ú	_pdbshown)rß   r  ry  )r=   rþ  r  s      r?   Ú
getreportszTerminalReporter.getreports=  s.   € ØŸ:™:Ÿ>™>¨$°Ó3ÖS�a¼7À1ÀkÕ;R’ÒSÐSùÒSs   Ÿ8±8c                ó(  ‡ — ‰ j                  d«      �r‰ j                  j                  d«      }|sy ‰ j                  d u}|r|‰ j                  d  }n|}t	        |«      ‰ _        |sy i }|D ]-  }|j                  |j                  g «      j                  |«       Œ/ dˆ fd„}|rdnd}‰ j                  d|dd¬	«       |j                  «       D ]¨  \  }}	 ||	«      }
|
rT‰ j                  j                  |
«       |j                  «       }d
j                  d„ |D «       «      }|j                  «       }n|j                  «       }‰ j                  j                  |«       ‰ j                  j                  «        Œª ‰ j                  j                  d«       y y )Nrµ   r-   c                ó>  •— g }| D ]1  }|j                  ‰j                  «      }|sŒ!|j                  |«       Œ3 t        |«      dk  rdj	                  t        t        |«      «      S t        d„ |D «       «      }dj	                  d„ |j                  «       D «       «      S )Né
   r+  c              3  óX   K  — | ]"  }t        |«      j                  d d«      d   –— Œ$ y­wrò  )rL   r  )r”  Úlocs     r?   r—  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>]  s)   è ø€ ò -Ø36”C˜“H—N‘N 4¨Ó+¨AÕ.ñ-ùs   ‚(*c              3  óV   K  — | ]!  \  }}d j                  |||dkD  rdnd«      –— Œ# y­w)z{}: {} warning{}rB   rÀ   r¯   N)r   )r”  ÚkÚvs      r?   r—  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>`  s3   è ø€ ò !á˜˜1ð '×-Ñ-¨a°¸1¸qº5±CÀb×Iñ!ùs   ‚'))	r×   rª   rá  r  r”   r•   rL   r   rS  )ÚreportsÚ	locationsrµ   rg  Úcounts_by_filenamer=   s        €r?   Úcollapsed_location_reportzDTerminalReporter.summary_warnings.<locals>.collapsed_location_reportS  sŸ   ø€ Ø�	Ø ò 3�AØ Ÿ~™~¨d¯k©kÓ:�HÚØ!×(Ñ(¨Õ2ð3ô
 �y“> BÒ&ØŸ9™9¤S¬¨iÓ%8Ó9Ð9ä%,ñ -Ø:Cô-ó &Ð"ð —y‘yñ !à 2× 8Ñ 8Ó :ô!ó ð r@   zwarnings summary (final)zwarnings summaryrÅ  TF)rm  rº  r+  c              3  ó&   K  — | ]	  }d |z   –— Œ y­w)rõ  Nr^   )r”  r  s     r?   r—  z4TerminalReporter.summary_warnings.<locals>.<genexpr>l  s   è ø€ Ò(A°a¨°­Ñ(Aùs   ‚zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rD  zlist[WarningReport]rP   rL   )r  rß   r  ró   r  rP  rÌ   rá  rJ  rS  rä   ry   rû  r”   Úrstrip)r=   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrrG  rI  rÌ   Úmessage_reportsÚmaybe_locationr×  Úindenteds   `            r?   r  z!TerminalReporter.summary_warnings@  sm  ø€ Ø�;‰;�sÕØ7;·z±z·~±~ÀjÓ7QˆLÙØà×4Ñ4¸DÐ@ˆEÙØ".¨t×/OÑ/OÐ/QÐ"R‘à".�Ü/2°?Ó/CˆDÔ,Ù"ØàIKÐ&Ø%ò Q�Ø*×5Ñ5°b·j±jÀ"ÓE×LÑLÈRÕPðQõñ$ 38Ñ.Ð=OˆEØ�N‰N˜3 ¨d¸ˆNÔ?Ø,F×,LÑ,LÓ,Nò 
 Ñ(�˜Ù!:¸?Ó!K�Ù!Ø—H‘H—M‘M .Ô1Ø#×.Ñ.Ó0�EØ#Ÿy™yÑ(A¸5Ô(AÓA�HØ&Ÿo™oÓ/‘Gà%Ÿn™nÓ.�GØ—‘—‘˜gÔ&Ø—‘—‘•ð
 ð �H‰H�M‰MØYõðc r@   c                ó*   — | j                  ddd«       y )Nr(   ÚPASSESÚP©Úsummary_passes_combinedr  s    r?   r  zTerminalReporter.summary_passesv  s   € Ø×$Ñ$ X¨x¸Õ=r@   c                ó*   — | j                  ddd«       y )Nr,   ÚXPASSESÚXrT  r  s    r?   r  z TerminalReporter.summary_xpassesy  s   € Ø×$Ñ$ Y°	¸3Õ?r@   c                ó†  — | j                   j                  j                  dk7  rž| j                  |«      rŒ| j	                  |«      }|sy | j                  d|«       |D ]`  }|j                  r7| j                  |«      }| j                  d|dd¬«       | j                  |«       | j                  |j                  «       Œb y y y )Nrx   rÅ  rµ  T)rl  rº  )rª   r¢   rt   r  r;  rJ  Úsectionsr1  Ú_outrep_summaryÚ_handle_teardown_sectionsrÍ   )r=   Úwhich_reportsÚ	sep_titleÚ
needed_optrD  r‚  r™   s          r?   rU  z(TerminalReporter.summary_passes_combined|  s®   € ð �;‰;×Ñ×%Ñ%¨Ò-Ø�{‰{˜:Ô&Ø,0¯O©O¸MÓ,J�ÙØØ—‘˜s IÔ.Ø"ò ?�CØ—|’|Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°tÀ$˜ÔGØ×,Ñ,¨SÔ1Ø×2Ñ2°3·:±:Õ>ñ?ð 'ð .r@   c                óŠ   — | j                  d«      }|D �cg c]"  }|j                  dk(  r|j                  |k(  r|‘Œ$ c}S c c}w )Nr¯   rÃ   )r;  rÆ   rÍ   )r=   rÍ   rD  rÈ   s       r?   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reportsŒ  sI   € Ø—/‘/ "Ó%ˆð "ö
àØ�{‰{˜jÒ(¨V¯]©]¸fÒ-Dò ò
ð 	
ùò 
s   –'A c                óR   — | j                  |«      D ]  }| j                  |«       Œ y rR   )ra  Úprint_teardown_sections)r=   rÍ   rÈ   s      r?   r\  z*TerminalReporter._handle_teardown_sections”  s*   € Ø×0Ñ0°Ó8ò 	1ˆFØ×(Ñ(¨Õ0ñ	1r@   c                ó  — | j                   j                  j                  }|dk(  ry |j                  D ]X  \  }}|dk7  r||vrŒd|v sŒ| j                  j                  d|«       |dd  dk(  r|d d }| j                  j                  |«       ŒZ y )Nrx   r�   rÃ   rÉ  r’  r+  )rª   r¢   r}   rZ  rä   rH  ry   ©r=   r‚  r}   Úsecnamer5  s        r?   rc  z(TerminalReporter.print_teardown_sections˜  s�   € Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÒØØ #§¡ò 	'ÑˆG�WØ˜eÒ#¨¸7Ñ(BØØ˜WÒ$Ø—‘—‘˜S 'Ô*Ø˜2˜3�< 4Ò'Ø% c r˜l�GØ—‘—‘˜gÕ&ñ	'r@   c                ól   — | j                   j                  j                  }| j                  dd|¬«       y )Nr'   ÚFAILURES©rs   )rª   r¢   rt   Úsummary_failures_combined)r=   rs   s     r?   r  z!TerminalReporter.summary_failures¥  s,   € Ø—‘×"Ñ"×*Ñ*ˆØ×&Ñ& x°À5Ð&ÕIr@   c                ó´   — | j                   j                  j                  }|r | j                   j                  j                  nd}| j	                  dd|¬«       y )Nrx   r+   Ú	XFAILURESri  )rª   r¢   r|   rt   rj  )r=   Úshow_tbrs   s      r?   r  z"TerminalReporter.summary_xfailures©  sE   € Ø—+‘+×$Ñ$×-Ñ-ˆÙ.5�—‘×"Ñ"×*Ò*¸4ˆØ×&Ñ& y°+ÀUÐ&ÕKr@   )r_  c               ó¶  — |dk7  rÔ|r| j                  |«      rÀ| j                  |«      }|sy | j                  d|«       |dk(  r;|D ]5  }| j                  |«      }| j	                  |«       | j                  |«       Œ7 y |D ]T  }| j                  |«      }| j                  d|dd¬«       | j	                  |«       | j                  |j                  «       ŒV y y y )Nrx   rÅ  ry   rµ  T©rn  rº  )	r  r;  rJ  r6  r[  r–   r1  r\  rÍ   )	r=   r]  r^  rs   r_  rD  r‚  ry   r™   s	            r?   rj  z*TerminalReporter.summary_failures_combined®  sÜ   € ð �DŠ=Ù §¡¨ZÔ!8Ø,0¯O©O¸MÓ,J�ÙØØ—‘˜s IÔ.Ø˜F’?Ø&ò .˜Ø#×1Ñ1°#Ó6˜Ø×,Ñ,¨SÔ1ØŸ™¨Õ-ñ.ð
  'ò C˜Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°TÀ˜ÔEØ×,Ñ,¨SÔ1Ø×6Ñ6°s·z±zÕBñ	Cð "9ð r@   c                ó|  — | j                   j                  j                  dk7  r™| j                  d«      }|sy | j	                  dd«       | j
                  d   D ]`  }| j                  |«      }|j                  dk(  rd|z   }nd|j                  › d|› �}| j	                  d	|d
d
¬«       | j                  |«       Œb y y )Nrx   r.   rÅ  ÚERRORSrÁ   zERROR collecting z	ERROR at z of rµ  Tro  )	rª   r¢   rt   r;  rJ  rß   r1  rÆ   r[  )r=   rD  r‚  r™   s       r?   r  zTerminalReporter.summary_errorsÈ  s·   € Ø�;‰;×Ñ×%Ñ%¨Ò-Ø(,¯©¸Ó(@ˆGÙØØ�N‰N˜3 Ô)Ø—z‘z 'Ñ*ò *�Ø×.Ñ.¨sÓ3�Ø—8‘8˜yÒ(Ø-°Ñ3‘Cà% c§h¡h Z¨t°C°5Ð9�CØ—‘˜s C¨T¸�Ô=Ø×$Ñ$ SÕ)ñ*ð .r@   c                óJ  — |j                  | j                  «       | j                  j                  j                  }|dk(  ry |j
                  D ]S  \  }}|dk7  r||vrŒ| j                  j                  d|«       |dd  dk(  r|d d }| j                  j                  |«       ŒU y )Nrx   r�   rÉ  r’  r+  )rî  rä   rª   r¢   r}   rZ  rH  ry   re  s        r?   r[  z TerminalReporter._outrep_summary×  s—   € Ø�‰�t—x‘xÔ Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÒØØ #§¡ò 	#ÑˆG�WØ˜eÒ#¨¸7Ñ(BØØ�H‰H�L‰L˜˜gÔ&Ø�r�sˆ|˜tÒ#Ø! # 2˜,�Ø�H‰H�M‰M˜'Õ"ñ	#r@   c                ó4  — | j                   dk  ry | j                  j                  «       }| j                  «       \  }}g }| j                   dk\  }|r| j                  j
                  }|D ]O  \  }} | j                  j                  |fi |¤Ž}	|rt        |	«      t        |«      z
  z  }|j                  |	«       ŒQ dj                  |«      }
|di}dt        |j                  «      › �} | j                  j                  |fi |¤Ž}|rt        |«      t        |«      z
  z  }|
|z  }
|rE | j                  j                  d
i |¤Ž}|j                  d«      r|d d }t        |«      z  }|
|z  }
|r | j                  d|
fd	i|¤Ž y  | j                  |
fi |¤Ž y )Nr’  r   rÝ  Tz in z[0méüÿÿÿrÅ  rå   ©r¯   )r   rÌ  rÀ  Úbuild_summary_stats_linerä   rå   r  r  rá  r”   Úformat_session_durationrÁ  r,  rJ  r–   )r=   Úsession_durationÚpartsr´  Ú
line_partsÚdisplay_seprå   Útextr  Úwith_markupr™   Úmain_markupr�  Úduration_with_markupÚmarkup_for_end_seps                  r?   r  zTerminalReporter.summary_statsä  s©  € Ø�>‰>˜BÒØà×.Ñ.×6Ñ6Ó8ÐØ"×;Ñ;Ó=Ñˆ�
Øˆ
à—n‘n¨Ñ)ˆÙØŸ™×*Ñ*ˆIØ!ò 	+‰LˆD�&Ø)˜$Ÿ(™(Ÿ/™/¨$Ñ9°&Ñ9ˆKÙØœS Ó-´°D³	Ñ9Ñ9�	Ø×Ñ˜kÕ*ð		+ð
 �i‰i˜
Ó#ˆà! 4Ð(ˆØÔ1Ð2B×2JÑ2JÓKÐLÐMˆØ.˜tŸx™xŸ™¨xÑG¸;ÑGÐÙØœÐ1Ó2´S¸³]ÑBÑBˆIØÐ#Ñ#ˆáØ!0 §¡§¡Ñ!C°{Ñ!CÐØ!×*Ñ*¨9Ô5Ø%7¸¸Ð%<Ð"ØœÐ/Ó0Ñ0ˆIØÐ%Ñ%ˆCáØˆD�N‰N˜3 ÑH¨yÐH¸KÓHàˆD�O‰O˜CÑ/ ;Ó/r@   c           	     ó‚  ‡ ‡
‡— ‰ j                   sy dˆ fd„}dˆ fd„}dˆ fd„}dˆ fd„Š
dˆ fd„Šdˆ ˆ
ˆfd„}||t        |d¬«      |t        |d	¬«      t        |d
¬«      dœ}g }‰ j                   D ]  }|j                  |«      }|sŒ ||«       Œ  |r.‰ j                  dddd¬«       |D ]  }	‰ j	                  |	«       Œ y y )Nc               óô   •— ‰j                   j                  |g «      }|sy ‰j                  }|D ]G  }t        j                  |t        «      }t        ||‰j                  |di«      }| j                  |«       ŒI y )NT)rß   r  rª   Ú_color_for_typeÚ_color_for_type_defaultÚ _get_line_with_reprcrash_messagerä   rá  )r×  Ústatr'   rª   r‚  r‚   ry   r=   s          €r?   Úshow_simplez8TerminalReporter.short_test_summary.<locals>.show_simple  sq   ø€ Ø—Z‘Z—^‘^ D¨"Ó-ˆFÙØØ—[‘[ˆFØò #�Ü'×+Ñ+¨DÔ2IÓJ�Ü7Ø˜C §¡¨E°4¨=ó�ð —‘˜TÕ"ñ#r@   c                ó†  •— ‰	j                   j                  dg «      }|D ]Ÿ  }|j                  ‰	j                  t        d   di«      \  }} ‰	j
                  j                  |fi |¤Ž}t        ‰	j
                  ‰	j                  |«      }|› d|› �}|j                  }|r|dt        |«      z   z  }| j                  |«       Œ¡ y )Nr+   r-   Tr“   ú - ©rß   r  Ú_get_verbose_word_with_markuprª   rƒ  rä   r  Ú_get_node_id_with_markuprk  rL   rá  )
r×  r+   r‚  Úverbose_wordÚverbose_markupÚmarkup_wordrÍ   ry   r…  r=   s
            €r?   Úshow_xfailedz9TerminalReporter.short_test_summary.<locals>.show_xfailed  sº   ø€ Ø—j‘j—n‘n Y°Ó3ˆGØò #�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÙØ˜E¤C¨£KÑ/Ñ/�Dà—‘˜TÕ"ñ#r@   c                ó†  •— ‰	j                   j                  dg «      }|D ]Ÿ  }|j                  ‰	j                  t        d   di«      \  }} ‰	j
                  j                  |fi |¤Ž}t        ‰	j
                  ‰	j                  |«      }|› d|› �}|j                  }|r|dt        |«      z   z  }| j                  |«       Œ¡ y )Nr,   r-   Tr“   r‰  rŠ  )
r×  r,   r‚  r�  rŽ  r�  rÍ   ry   r…  r=   s
            €r?   Úshow_xpassedz9TerminalReporter.short_test_summary.<locals>.show_xpassed(  sº   ø€ Ø—j‘j—n‘n Y°Ó3ˆGØò 
#�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÙØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜TÕ"ñ
#r@   c                óÞ  •— ‰j                   j                  dg «      }|rt        ‰j                  |«      ng }|sy |d   j	                  ‰j
                  t        d   di«      \  }} ‰j                  j                  |fi |¤Ž}d}|D ]d  \  }}}	}
|
j                  |«      r|
t        |«      d  }
|	� | j                  |› d|› d|› d|	› d	|
› �	«       ŒI| j                  |› d|› d|› d	|
› �«       Œf y )
Nr)   r   r-   Tú	Skipped: r�  z] rÑ   rô  )rß   r  Ú_folded_skipsrâ   r‹  rª   rƒ  rä   r  Ú
startswithr  rá  )r×  r)   Úfskipsr�  rŽ  r�  r$  Únumr  r\  r…  r=   s              €r?   Úshow_skipped_foldedz@TerminalReporter.short_test_summary.<locals>.show_skipped_folded6  s  ø€ Ø+/¯:©:¯>©>¸)ÀRÓ+HˆGÙ?F”] 4§>¡>°7Ô;ÈBˆFÙØØ+2°1©:×+SÑ+SØ—‘œo¨jÑ9¸4Ð@ó,Ñ(ˆL˜.ð *˜$Ÿ(™(Ÿ/™/¨,ÑI¸.ÑIˆKØ ˆFØ/5ò NÑ+��V˜V VØ×$Ñ$ VÔ,Ø#¤C¨£K MÐ2�FØÐ%Ø—L‘L K =°°3°%°r¸&¸ÀÀ6À(È"ÈVÈHÐ!UÕVà—L‘L K =°°3°%°r¸&¸ÀÀFÀ8Ð!LÕMñNr@   c                ó\  •— ‰	j                   j                  dg «      }|D �]	  }|j                  €J ‚t        |j                  t        «      sJ ||j                  f«       ‚t        |j                  «      dk(  sJ ||j                  f«       ‚|j                  ‰	j                  t        d   di«      \  }} ‰	j                  j                  |fi |¤Ž}t        ‰	j                  ‰	j                  |«      }|› d|› �}|j                  d   }|r|dt        |«      z   z  }| j                  |«       �Œ y )Nr)   rÈ  r-   Tr“   rp  r‰  )rß   r  r4  r?  rx  r  r‹  rª   rƒ  rä   r  rŒ  rL   rá  )
r×  r)   r‚  r�  rŽ  r�  rÍ   ry   r…  r=   s
            €r?   Úshow_skipped_unfoldedzBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedH  s  ø€ Ø+/¯:©:¯>©>¸)ÀRÓ+HˆGàó #�Ø—|‘|Ð/Ð/Ð/Ü! #§,¡,´Ô6ÐK¸¸c¿l¹lÐ8KÓKÐ6Ü˜3Ÿ<™<Ó(¨AÒ-ÐB°°S·\±\Ð/BÓBÐ-à/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™ a™�ÙØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜TÖ"ñ#r@   c                ó@   •— ‰j                   r	 ‰| «       y  ‰| «       y rR   )rè   )r×  r=   r™  r›  s    €€€r?   Úshow_skippedz9TerminalReporter.short_test_summary.<locals>.show_skipped[  s   ø€ Ø×ÒÙ# EÕ*á% eÕ,r@   r'   )r†  r(   r.   )r  rX  ÚfrÀ   ÚprÄ   rÅ  zshort test summary infoT)ru  rº  )r×  ú	list[str]r†  rL   rP   rQ   )r×  r   rP   rQ   )rn   r	   r  rJ  r–   )r=   r‡  r�  r’  r�  ÚREPORTCHAR_ACTIONSr×  rº   re   ry   r™  r›  s   `         @@r?   r  z#TerminalReporter.short_test_summary	  sÐ   ú€ Ø×ÒØõ
	#õ	#õ	#õ	Nõ$	#÷&	-ð ØÜ˜¨8Ô4ØÜ˜¨8Ô4Ü˜¨7Ô3ñI
Ðð ˆØ×$Ñ$ò 	ˆDØ'×+Ñ+¨DÓ1ˆFÚÙ�u•ð	ñ
 Ø�N‰N˜3Ð 9ÀÈ4ˆNÔPØò &�Ø—‘ Õ%ñ&ð r@   c                óÒ   — | j                   �| j                  �| j                  r,| j                  «        | j                   sJ ‚| j                  sJ ‚| j                   | j                  fS rR   )rà   rá   r{  rR  r  s    r?   r°  z TerminalReporter._get_main_coloru  sb   € Ø×ÑÐ# t×'8Ñ'8Ð'@ÀD×DVÒDVØ× Ñ Ô"Ø×#Ò#Ð#Ð#Ø×$Ò$Ð$Ð$Ø×Ñ ×!2Ñ!2Ð2Ð2r@   c                ó~   — | j                   }d|v sd|v rd}|S d|v sd|v s|rd}|S d|v s| j                  sd}|S d}|S )	Nr'   r.   rn  r-   r,   rm  r(   rl  )rß   r{  )r=   Úunknown_type_seenrß   r´  s       r?   Ú_determine_main_colorz&TerminalReporter._determine_main_color|  st   € Ø—
‘
ˆØ�uÑ ¨5Ñ 0ØˆJð Ðð ˜5Ñ  I°Ñ$6Ñ:KØ!ˆJð
 Ðð	 ˜Ñ d×&8Ò&8Ø ˆJð Ðð "ˆJØÐr@   c                óÚ   — g }| j                   D ]$  }|sŒ|t        vsŒ||vsŒ|j                  |«       Œ& t        t        «      |z   | _        | j                  t        |«      «      | _        y rR   )rß   ÚKNOWN_TYPESrá  Úlistrá   r¥  rN   rà   )r=   Úunknown_typesÚ
found_types      r?   rR  z TerminalReporter._set_main_colorˆ  sf   € Ø#%ˆØŸ*™*ò 	5ˆJÚØ¤[Ò0°ZÀ}Ò5TØ!×(Ñ(¨Õ4ð	5ô !¤Ó-°Ñ=ˆÔØ×5Ñ5´d¸=Ó6IÓJˆÕr@   c                óx   — | j                   j                  d«      r| j                  «       S | j                  «       S )aš  
        Build the parts used in the last summary stats line.

        The summary stats line is the line shown at the end, "=== 12 passed, 2 errors in Xs===".

        This function builds a list of the "parts" that make up for the text in that line, in
        the example above it would be::

            [
                ("12 passed", {"green": True}),
                ("2 errors", {"red": True}
            ]

        That last dict for each line is a "markup dictionary", used by TerminalWriter to
        color output.

        The final color of the line is also determined by this function, and is the second
        element of the returned tuple.
        rê  )rª   rü   Ú&_build_collect_only_summary_stats_lineÚ _build_normal_summary_stats_liner  s    r?   rv  z)TerminalReporter.build_summary_stats_line‘  s4   € ð( �;‰;× Ñ  Ô/Ø×>Ñ>Ó@Ð@à×8Ñ8Ó:Ð:r@   c                ó€   — | j                   j                  |g «      }|D �cg c]  }t        |dd«      sŒ|‘Œ c}S c c}w )zRGet test/collection reports for the given status key, such as `passed` or `error`.rÏ   T)rß   r  rD   )r=   ÚkeyrD  r  s       r?   r¡  z(TerminalReporter._get_reports_to_displayª  s6   € à—*‘*—.‘.  bÓ)ˆØ"ÖP�a¤g¨aÐ1HÈ$Õ&O’ÒPÐPùÒPs   ¡;´;c                ó   — | j                  «       \  }}g }|D ]d  }| j                  |«      }|sŒt        |«      }t        j	                  |t
        «      }|dd||k(  i}|j                  dt        ||«      z  |f«       Œf |sdt
        difg}||fS )NTrº  ú%d %szno tests ran)r°  r¡  r  rƒ  r  r„  rá  Ú	pluralize)	r=   r´  Úknown_typesry  r¯  rD  rc   r‚   r  s	            r?   r­  z1TerminalReporter._build_normal_summary_stats_line¯  s¯   € ð #'×"6Ñ"6Ó"8Ñˆ
�KØˆàò 	HˆCØ×2Ñ2°3Ó7ˆGÚÜ˜G›�Ü'×+Ñ+¨CÔ1HÓI�Ø  v¨u¸
Ñ/BÐC�Ø—‘˜g¬	°%¸Ó(=Ñ=¸vÐFÕGð	Hñ Ø$Ô'>ÀÐ&EÐFÐGˆEà�jÐ Ð r@   c                óÆ  — t        | j                  d«      «      }t        | j                  d«      «      }| j                  dk(  r
dddifg}d}no|dk(  r#d}dt        | j                  d	«      z  }||difg}nG| j                  |k(  }|r	d}d
|› d�}n&d}| j                  |z
  }|› d| j                  › d|› d�}||difg}|r t        d   }|dt        |d«      z  |difgz  }||fS )Nr*   r.   r   zno tests collectedrm  Trl  z%d %s collectedÚtestzno tests collected (z deselected)r®  z tests collected (r±  )r  r¡  rÜ   r²  rƒ  )r=   r*   r>  ry  r´  Úcollected_outputÚall_tests_were_deselectedrÃ  s           r?   r¬  z7TerminalReporter._build_collect_only_summary_stats_lineÂ  s8  € ô ˜×5Ñ5°lÓCÓDˆ
Ü�T×1Ñ1°'Ó:Ó;ˆà×Ñ Ò"Ø*¨X°tÐ,<Ð=Ð>ˆEØ!‰Jà˜1Š_Ø ˆJØ0´9¸T×=OÑ=OÐQWÓ3XÑXÐØ&¨°TÐ(:Ð;Ð<‰Eà(,×(:Ñ(:¸jÑ(HÐ%Ù(Ø%�
Ø%9¸*¸À\Ð#RÑ à$�
Ø×-Ñ-°
Ñ:�Ø&. Z¨q°×1CÑ1CÐ0DÐDVÐWaÐVbÐbnÐ#oÐ à&¨°TÐ(:Ð;Ð<ˆEáÜ(¨Ñ1ˆJØ�w¤¨6°7Ó!;Ñ;¸jÈ$Ð=OÐPÐQÑQˆEà�jÐ Ð r@   rR   )rª   r   rõ   zTextIO | NonerP   rQ   )rP   z,Literal['progress', 'count', 'times', False])rP   r‰   )rP   rN   )r
  zbool | NonerP   rQ   )rº   rL   rP   rN   )rÍ   rL   r  rL   r  rN   rP   rQ   ru  )r$  rL   r%  rL   rP   rQ   ©rP   rQ   )r5  rL   r  rN   r,  r‰   r-  rL   r  rN   rP   rQ   )r5  rL   r  rN   r  rN   rP   rQ   )r5  rL   r  rN   rP   rQ   )ry   zstr | bytesr  rN   rP   rQ   )ry   rL   r  rN   rP   rQ   )NN)
rH  rL   rI  rO   rå   ú
int | Noner  rN   rP   rQ   )rÅ  )rI  rL   rH  rL   rL  rN   rP   rQ   )r™   rL   rL  rN   rP   rQ   )rZ   rL   rS  zSequence[Any]rP   rQ   )rW  r   rP   rN   )r]  zwarnings.WarningMessagerÍ   rL   rP   rQ   )ra  r   rP   rQ   )rS  zSequence[Item]rP   rQ   )rÍ   rL   rg  ztuple[str, int | None, str]rP   rQ   ©rÈ   r%   rP   rQ   )rP   zGenerator[None, object, object])rP   rL   )rÈ   r$   rP   rQ   )F)r   rN   rP   rQ   ©rÕ  r&   rP   rQ   )r×  zSequence[str | Sequence[str]]rP   rQ   )rª   r   rP   r   )rÕ  r&   r  zint | ExitCoderP   úGenerator[None])rP   r¼  )r!  zExceptionInfo[BaseException]rP   rQ   )
rÍ   rL   r  rL   r\  r¹  rh  rL   rP   rL   )rP   r¹  )rþ  rL   )r]  rL   r^  rL   r_  rL   rP   rQ   )rÍ   rL   rP   zlist[TestReport])rÍ   rL   rP   rQ   )r‚  r%   rP   rQ   )
r]  rL   r^  rL   rs   rL   r_  rO   rP   rQ   )r‚  r#   rP   rQ   )rP   ztuple[str, list[str]])r¤  rN   rP   rL   )rP   z-tuple[list[tuple[str, dict[str, bool]]], str])r¯  rL   rP   z	list[Any])PrS   rT   rU   r<   rï   Úpropertyr   r  rg   rh   r  Úsetterr  r  r  r!  r'  r)  r7  r  r;  r  r–   rF  rJ  rM  ry   rU  rX  r_  rb  rd  ri  rˆ  r{  r   rŽ  r�  r|  r  r¯  r»  r¾  r½  rØ  rÔ  rÓ  rï  rí  r  r  r"  r$  r  rf  r1  r6  r  r;  r  r  r  rU  ra  r\  rc  r  r  rj  r  r[  r  r  r°  r¥  rR  rv  r¡  r­  r¬  r^   r@   r?   rž   rž   z  sû  „ ôBð<à	5óð2 òó ðð ò#ó ð#ð ò2ó ð2ð ò3ó ð3ð ò ó ð ð
 ×Ñò!ó ð!ð òJó ðJð ò4ó ð4ó(ó	2ô$ó&ð ØØñ7àð7ð ð	7ð
 ð7ð ð7ð ð7ð 
ó7ð, 49õ 7ð 8=õ 1óó&ó5ð* !Ø $ð	6àð6ð ð6ð ð	6ð
 ð6ð 
ó6ô'ó!ó#óð
6à0ð6ð ð6ð 
ó	6ó!ó-ðØðØ%@ðà	óóJðX òFó ðFñ �dÔòó ðó+óZ=ó Að ò.ó ð.óAó"ô""ñH �dÔò7ó ð7ð4*Ø2ð*à	ó*óó,-ó,Nñ< �dÔð$Øð$Ø,:ð$à	ò$ó ð$ñL �dÔò$ó ð$óFó-óð ØðØ#&ðØ0:ðØDGðà	óò.òóóTó4ól>ó@ð?Ø ð?Ø-0ð?Ø>Að?à	ó?ó 
ó1ó'óJóLð "&ñCàðCð ðCð
 ðCð ðCð 
óCó4*ó#ó#0óJj&óX3ó
óKó;ó2Qð
!à	6ó!ð&!à	6ô!r@   rž   c                óº   — |j                  |j                  «      }|j                  d«      ^}}|r*| j                  dj	                  |«      d¬«      }|dz   |z   S |S )Nr  TrÆ  )r+  rÍ   r  r  r”   )Útwrª   r‚  rÍ   Úpathry  Úparts_markups          r?   rŒ  rŒ  ã  sZ   € Ø×'Ñ'¨¯
©
Ó3€FØ—<‘< Ó%€L€Dˆ5ÙØ—y‘y §¡¨5Ó!1¸�yÓ=ˆØ�d‰{˜\Ñ)Ð)àˆr@   c                óX  — |j                  d«      }|dk7  r|d| }d}t        | j                  d«      «      }|t        |«      z   |kD  ry|t        |«      z   |kD  r@|t        |«      z  }|d| }|t        |«      z   |kD  r|dd }|t        |«      z   |kD  rŒ||z  }| j                  |«      S )z€Format msg into format, ellipsizing it if doesn't fit in available_width.

    Returns None if even the ellipsis can't fit.
    r+  r’  Nz...r¯   )Úfindr   r   r  )r   r™   r†  r•  ÚellipsisÚformat_widths         r?   r~  r~  í  sÂ   € ð 	�‰�‹€AØˆB‚wØ�"�1ˆgˆà€HÜ˜FŸM™M¨"Ó-Ó.€LØ”c˜(“mÑ# oÒ5Øà”h˜s“mÑ# oÒ5Øœ3˜x›=Ñ(ˆØÐ"�?Ð#ˆØœX c›]Ñ*¨_Ò<Ø�c�r�(ˆCð œX c›]Ñ*¨_Ó<àˆx‰ˆà�=‰=˜ÓÐr@   c                ó  — |j                  | |«      \  }} |j                  |fi |¤Ž}t        || |«      }|› d|› �}t        |«      }		 t	        |j
                  t        «      r|j
                  }
n |j
                  j                  j                  }
t        «       s| j                  j                  dk\  r| j                  j                  sd|
› �}
n|j                  |	z
  }t        d|
|«      }
|
�||
z  }|S # t        $ r Y |S w xY w)z?Get summary line for a report, trying to add reprcrash message.r“   rp  r‰  z - {})r‹  r  rŒ  r   r?  r4  rL   r'  rÌ   r   r¢   rd   rk   rå   r~  r5  )rª   r‚  rÀ  Úword_markupr�  rŽ  r\   ro  ry   Ú
line_widthr™   r†  s               r?   r…  r…    s	  € ð $'×#DÑ#DØ�ó$Ñ €L�.ð ˆ2�9‰9�\Ñ4 ^Ñ4€DÜ# B¨°Ó4€DàˆV�1�T�FÐ€DÜ˜$“€JðÜ�c—l‘l¤CÔ(Ø—,‘,‰Cð —,‘,×(Ñ(×0Ñ0ˆCô
 ŒO˜vŸ}™}×4Ñ4¸Ò9Ø—-‘-×3Ò3Ø˜�u�+‰Cà Ÿl™l¨ZÑ7ˆOÜ! '¨3°Ó@ˆCØˆ?Ø�C‰KˆDà€Køô ò Øð €Kðús   Á	AC4 Ã4	DÄ Dc                ó>  — i }|D ]Ý  }|j                   €J ‚t        |j                   t        «      sJ ||j                   f«       ‚t        |j                   «      dk(  sJ ||j                   f«       ‚|j                   \  }}}t	        | t        |«      «      }t        |di «      }|j                  dk(  rd|v r
d|vr|d |f}n|||f}|j                  |g «      j                  |«       Œß g }	|j                  «       D ]#  \  }}
|	j                  t        |
«      g|¢­«       Œ% |	S )NrÈ  ÚkeywordsrÂ   ÚskipÚ
pytestmark)r4  r?  rx  r  r"   r
   rD   rÆ   rP  rá  rS  )râ   r)   ÚdÚeventr  r\  r…  rË  r¯  rH   Úeventss              r?   r•  r•  *  s+  € ð AC€AØò ,ˆØ�~‰~Ð)Ð)Ð)Ü˜%Ÿ.™.¬%Ô0ÐI°5¸%¿.¹.Ð2IÓIÐ0Ü�5—>‘>Ó" aÒ'Ð@¨%°·±Ð)@Ó@Ð'Ø!&§¡Ñˆ�˜ä˜Y¬¨V«Ó5ˆÜ˜5 *¨bÓ1ˆð
 �J‰J˜'Ò!Ø˜(Ñ"Ø HÑ,à06¸¸fÐ/E‰Cà˜6 6Ð*ˆCØ	�‰�S˜"Ó×$Ñ$ UÕ+ð',ð( 68€FØ—w‘w“yò +‰ˆˆVØ�‰”s˜6“{Ð) SÑ)Õ*ð+à€Mr@   rn  rm  rl  )r'   r.   r-   r(   r/   r0   c                óT   — |dvr| |fS |j                  dd«      }| | dk7  r|dz   fS |fS )N)r.   r-   rµ  r-   rç  rB   rÀ   )r·   )rc   Únouns     r?   r²  r²  T  sD   € àÐ0Ñ0Ø�dˆ{Ðð
 �<‰<˜
 IÓ.€Dà ¨¢
�$˜‘*Ð4Ð4°Ð4Ð4r@   c                ó¬   — g }| D ]L  \  }}|j                   › d|j                  › �}|j                  d«      r|dd  }||vsŒ<|j                  |«       ŒN |S )NrÉ  zpytest-é   )Úproject_namerÏ  r–  rá  )rè  rH   ra  Údistrþ  s        r?   ræ  ræ  a  sg   € Ø€FØ"ò  ‰ˆ�à×#Ñ#Ð$ A d§l¡l ^Ð4ˆà�?‰?˜9Ô%Ø˜˜�8ˆDà�vÒØ�M‰M˜$Õð ð €Mr@   c                óh   — | dk  r| d›d�S t        j                  t        | «      ¬«      }| d›d|› d�S )zQFormat the given seconds in a human readable manner to show in the final summary.é<   ú.2frÀ   ©rÁ  zs (rr  )ÚdatetimeÚ	timedeltar‰   )rÁ  Údts     r?   rw  rw  o  sA   € à�‚|Ø˜#�˜aÐ Ð ä×Ñ¬¨G«Ô5ˆØ˜#�˜c "  QÐ'Ð'r@   c                ó"  — | dk  r
d| dz  d›d�S | dk  r
d| dz  d›d�S | dk  r
d| dz  d	›d�S | d
k  r
d| dz  d›d�S | dk  r
d| dz  d›d�S | dk  r
d| dz  d	›d�S | dk  rd| d›d�S | dk  rd| dz  d›d| dz  d›d�S d| dz  d›d| dz  dz  d›d�S )zQFormat the given seconds in a human readable manner to show in the test progress.gñhãˆµøä>r“   i@B z.3fÚusg-Cëâ6?rÙ  gü©ñÒMbP?z.1fg{®Gáz„?iè  Úmsgš™™™™™¹?rB   rØ  rÀ   i  z.0fzm zh Úmr^   rÚ  s    r?   r¤  r¤  x  s!  € ð �ÒØ�7˜WÑ$ SÐ)¨Ð,Ð,Ø�ÒØ�7˜WÑ$ SÐ)¨Ð,Ð,Ø�‚Ø�7˜WÑ$ SÐ)¨Ð,Ð,Ø�‚~Ø�7˜T‘> #Ð& bÐ)Ð)Ø�‚}Ø�7˜T‘> #Ð& bÐ)Ð)Ø�‚{Ø�7˜T‘> #Ð& bÐ)Ð)Ø�‚|Ø�7˜3�-˜qÐ!Ð!Ø�‚~Ø�7˜b‘= Ð% R¨°"©°SÐ'9¸Ð;Ð;Øˆw˜$‰˜sÐ# 2 w°¡~¸"Ñ&<¸SÐ%AÀÐCÐCr@   c                ó<  — t        | d«      r-| j                  }|j                  d«      r|t        d«      d }|S | j                  sJ ‚t        | j                  t        «      sJ ‚| j                  \  }}}|j                  d«      r|t        d«      d }|S |dk(  rd}|S )zqGet the reason string of a skip/xfail/xpass test report.

    The string is just the part given by the user.
    rk  zreason: Nr”  ÚSkippedr¯   )ry  rk  r–  r  r)   r?  r4  rx  )rÈ   r…  rµ  s      r?   r}  r}  �  s¥   € ô
 ˆv�zÔ"Ø—‘ˆØ×Ñ˜ZÔ(ØœC 
›OÐ-Ð.ˆFØˆà�~Š~Ðˆ~Ü˜&Ÿ/™/¬5Ô1Ð1Ð1Ø—‘‰ˆˆ1ˆfØ×Ñ˜[Ô)ØœC Ó,Ð.Ð/ˆFð ˆð �yÒ ØˆFØˆr@   c                  óv   — e Zd ZdZd	d„Z	 d
	 	 	 	 	 dd„Zedd„«       Zedd„«       Zedd„«       Z	edd„«       Z
y)ÚTerminalProgressPlugina#  Terminal progress reporting plugin using OSC 9;4 ANSI sequences.

    Emits OSC 9;4 sequences to indicate test progress to terminal
    tabs/windows/etc.

    Not all terminal emulators support this feature.

    Ref: https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC
    c                ó.   — || _         d | _        d| _        y )NF)Ú_trrÝ   Ú_has_failures)r=   Útrs     r?   r<   zTerminalProgressPlugin.__init__¯  s   € ØˆŒØ(,ˆŒØ"ˆÕr@   Nc                óî   — |�d|cxk  rdk  sJ ‚ J ‚|xdk(  r d}n<xdk(  r |€J ‚d|› d�}n+xd	k(  r |�d
|› d�}nd}nxdk(  r d}ndk(  r|�d|› d�}nd}	 | j                   j                  d¬«       y)a  Emit OSC 9;4 sequence for indicating progress to the terminal.

        :param state:
            Progress state to set.
        :param progress:
            Progress value 0-100. Required for "normal", optional for "error"
            and "paused", otherwise ignored.
        Nr   rž  Úremovez
]9;4;0;\Únormalz]9;4;1;z\r.   z]9;4;2;z
]9;4;2;\Úindeterminatez
]9;4;3;\Úpausedz]9;4;4;z
]9;4;4;\Tr8  )rç  r;  )r=   Ústater…   Úsequences       r?   Ú_emit_progressz%TerminalProgressPlugin._emit_progress´  s¦   € ð Ð 1¨Ô#7°CÒ#7Ð7Ð7Ð#7Ð7Ð7ð ÝØ.‘ÝØÐ+Ð+Ð+Ø(¨¨
°&Ð9‘ÝØÐ'Ø!,¨X¨J°fÐ=‘Hà2‘HÝ Ø.‘ÛØÐ'Ø!,¨X¨J°fÐ=‘Hà2‘Hà�‰×Ñ˜8¨4ÐÕ0r@   c                ó4   — || _         | j                  d«       y )Nrí  )rÝ   rñ  )r=   rÕ  s     r?   rØ  z*TerminalProgressPlugin.pytest_sessionstartÚ  s   € àˆŒà×Ñ˜OÕ,r@   c                óx   — | j                   €J ‚| j                   j                  dkD  r| j                  dd«       y y )Nr   rì  )rÝ   rŠ  rñ  r  s    r?   rï  z/TerminalProgressPlugin.pytest_collection_finishà  s9   € à�}‰}Ð(Ð(Ð(Ø�=‰=×'Ñ'¨!Ò+à×Ñ ¨!Õ,ð ,r@   c                ó.  — |j                   rd| _        |j                  dk7  ry | j                  €J ‚| j                  j                  }|dkD  rI| j
                  j                  }t        |dz  |z  d«      }| j                  | j                  rdnd|«       y y )NTÚcallr   rž  r.   rì  )	r'   rè  rÆ   rÝ   rŠ  rç  r  Úminrñ  )r=   rÈ   r¥  Úreportedr…   s        r?   rˆ  z/TerminalProgressPlugin.pytest_runtest_logreportç  s�   € à�=Š=Ø!%ˆDÔð �;‰;˜&Ò Øð �}‰}Ð(Ð(Ð(Ø—M‘M×0Ñ0ˆ	Ø�qŠ=Ø—x‘x×1Ñ1ˆHÜ˜8 c™>¨YÑ6¸Ó<ˆHØ×Ñ¨4×+=Ò+=¡À8ÈXÕVð r@   c                ó&   — | j                  d«       y )Nrë  )rñ  r  s    r?   r  z+TerminalProgressPlugin.pytest_sessionfinishø  s   € à×Ñ˜HÕ%r@   )ré  rž   rP   rQ   rR   )rï  z?Literal['remove', 'normal', 'error', 'indeterminate', 'paused']r…   r¹  rP   rQ   r»  r¸  rº  )rS   rT   rU   rV   r<   rñ  r   rØ  rï  rˆ  r  r^   r@   r?   rå  rå  ¤  s…   „ ñó#ð  $ð$1àNð$1ð ð$1ð 
ó	$1ðL ò-ó ð-ð
 ò-ó ð-ð òWó ðWð  ò&ó ñ&r@   rå  )rF   r   rP   rQ   )rª   r   rP   rQ   )rª   r   rP   rL   )rÈ   r#   rP   ztuple[str, str, str])rÀ  r   rª   r   r‚  r#   )r   rL   r™   rL   r†  r‰   rP   rO   )
rª   r   r‚  r#   rÀ  r   rÈ  zdict[str, bool]rP   rL   )râ   r
   r)   zSequence[CollectReport]rP   z&list[tuple[int, str, int | None, str]])rc   r‰   rÒ  rL   rP   ztuple[int, str])rP   r   )rÁ  ÚfloatrP   rL   )rÈ   r%   rP   rL   )ZrV   Ú
__future__r   ÚargparseÚcollectionsr   Úcollections.abcr   r   r   r   ÚdataclassesrÛ  Ú	functoolsr	   rù  Úpathlibr
   r¨   rŸ   r3  Útypingr   r   r   r   r   r   r   r-   rÐ  rö   r   r   r   Ú_pytest._coder   Ú_pytest._code.coder   Ú_pytest._ior   Ú_pytest._io.wcwidthr   Ú_pytest._versionÚ_pytest.compatr   rÛ   r   r   r   r   Ú_pytest.config.argparsingr   Ú_pytest.nodesr   r    Ú_pytest.pathlibr!   r"   Ú_pytest.reportsr#   r$   r%   Ú_pytest.mainr&   rÂ  r§  rŠ   ÚActionr3   rY   r�   r«   r»   rÉ   Ú	dataclassrË   rž   rŒ  r~  r…  r•  rƒ  r„  r²  ræ  rw  r¤  r}  rå  r^   r@   r?   ú<module>r     sÖ  ðñõ
 #ã Ý Ý $Ý %Ý #Ý $Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý Ý 'Ý ,Ý &Ý (Û Ý (Ý (Ý !Ý #Ý #Ý ,Ý Ý Ý (Ý 'Ý &Ý )Ý &ñ Ý$ð  #Ð ð€ð Ð ô"=�h—o‘oô "=ôJ/˜ô /ó(Wót?ó"ñ2 
�$Ôò,ó ð,ð ×Ñ÷ð ó ðð8 ÷e!ð e!ó ðe!óP#óð2!Øð!Ø#ð!Ø)7ð!ØFUð!àó!ðHØðà$ðð ,óð@ ØØØØØñ€ð #Ð ó
5óó(óDó.÷*V&ò V&r@   