Ë
    •Kêj ã                  ó¤  — 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 l7m8Z8 dd!l9m:Z: dd"l9m;Z; dd#l<m=Z= dd$l<m>Z> dd%l?m@Z@ dd&l?mAZA dd'l?mBZB erdd(lCmDZD d)ZEd*ZFd+ZGed,   ZH G d-„ d.ej’                  «      ZJ G d/„ d0e«      ZKdJd1„ZLdKd2„ZMdLd3„ZN e2d4¬5«      dMd6„«       ZOej                    G d7„ d8«      «       ZQe G d9„ d:«      «       ZR	 	 	 	 	 	 	 	 dNd;„ZSdOd<„ZT	 	 	 	 	 	 	 	 	 	 dPd=„ZU	 	 	 	 	 	 dQd>„ZVd?d?d@dAdAd?dBœZWd@ZXdRdC„ZYdSdD„ZZdTdE„Z[dTdF„Z\dUdG„Z] G dH„ dI«      Z^y)VzsTerminal 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)ÚTERMINAL_WRITE_LINE_BYTES)ÚNodeId)ÚItem)ÚNode)Úabsolutepath)Úbestrelpath)Ú
BaseReport)ÚCollectReport)Ú
TestReport)ÚSessiong      à?)ÚfailedÚpassedÚskippedÚ
deselectedÚxfailedÚxpassedÚwarningsÚerrorúsubtests passedúsubtests failedzsubtests skippedÚfE)ÚclassicÚprogressÚcountÚtimesúprogress-even-when-capture-noc                  ó`   ‡ — 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__)Úselfr<   r=   r?   r@   rA   Ú	__class__s         €úU/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/_pytest/terminal.pyrC   zMoreQuietAction.__init__]   s)   ø€ ô 	‰ÑØ)ØØØØØð 	õ 	
ó    c                ó�   — t        || j                  d«      dz
  }t        || j                  |«       t        |dd«      dz   |_        y )Nr   é   Úquiet)Úgetattrr=   ÚsetattrrJ   )rD   ÚparserÚ	namespaceÚvaluesÚoption_stringÚ	new_counts         rF   Ú__call__zMoreQuietAction.__call__n   s@   € ô ˜I t§y¡y°!Ó4°qÑ8ˆ	Ü�	˜4Ÿ9™9 iÔ0ä! )¨W°aÓ8¸1Ñ<ˆ	�rG   )NFN)r<   zSequence[str]r=   Ústrr?   Úobjectr@   ÚboolrA   ú
str | NoneÚreturnÚNone©N)
rM   zargparse.ArgumentParserrN   zargparse.NamespacerO   zstr | Sequence[object] | NonerP   rV   rW   rX   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   rR   Ú__classcell__)rE   s   @rF   r:   r:   V   sŒ   ø„ ñð ØØð
à%ð
ð ð
ð ð	
ð
 ð
ð ð
ð 
õ
ð, %)ð
=à'ð
=ð &ð
=ð .ð	
=ð
 "ð
=ð 
÷
=rG   r:   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.
    rS   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordN)rZ   r[   r\   r]   Ú__annotations__© rG   rF   r`   r`   {   s   … ñð ƒMØƒKØ
.Ô.rG   r`   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                  dSdTt        dU¬V«       t        j                  | t        j                  dW¬X«       y )YNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboser6   r   ÚverbosezIncrease verbosity)Úactionr?   r=   rA   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.)rk   r=   r?   rA   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.)r=   Útyper?   rA   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').)rk   r=   r?   ÚmetavarrA   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r?   r=   rk   rA   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))rk   r=   rA   z--tbÚstyleÚtbstyleÚauto)r{   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rv   rk   r=   r?   ÚchoicesrA   z
--xfail-tbÚxfail_tbz1Show tracebacks for xfail (as long as --tb != no)z--show-captureÚshowcapture)r~   ÚstdoutÚstderrÚlogÚallr‡   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)rk   r=   r�   r?   rA   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))rk   r?   rA   z--colorÚcolor)Úyesr~   r{   z#Color terminal output (yes/no/auto)z--code-highlightr‰   r~   zSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r?   r�   rA   Úconsole_output_stylez¸Console output: "classic", or with additional progress information ("progress" (percentage) | "count" | "times" | "progress-even-when-capture-no" (forces progress even when capture=no)r5   )rA   rr   r?   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.)rA   )ÚgetgroupÚ
_addoptionÚ	addoptionr:   ÚintÚ_REPORTCHARS_DEFAULTÚaddiniÚ_ConsoleOutputStyler   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rM   Úgroups     rF   Ú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Øð1ô !Øð ô ô ×ÑØÜ×#Ñ#ðbö	rG   c                ó   ‡— | j                  d«       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 )NrŠ   Úterminalreporterc                ól   •— dj                  t        t        |«      «      }‰j                  d|z   «       y )Nú z[traceconfig] )ÚjoinÚmaprS   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €rF   Úmywriterz"pytest_configure.<locals>.mywriter1  s+   ø€ Ø—(‘(œ3œs D›>Ó*ˆCØ×ÑÐ 0°3Ñ 6Õ7rG   zpytest:configÚwin32Úterminalprogress)ÚgetiniÚTerminalReporterÚsysr„   ÚpluginmanagerÚregisterÚoptionÚdebugÚtraceconfigÚtraceÚrootÚsetprocessorÚplatformÚimport_plugin)Úconfigr¡   r    s     @rF   Úpytest_configurer²   *  s™   ø€ à
‡M�MÐ(Ô)Ü ¬¯
©
Ó3€HØ
×Ñ×!Ñ! (Ð,>Ô?Ø‡}�}×Ò˜fŸm™m×7Ò7ô	8ð 	�‰×Ñ×&Ñ& ¸ÔAô ‡|�|�wÒØ×Ñ×*Ñ*Ð+=Õ>ð rG   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©   rt   Úlowerrw   Úreplace)r±   rt   Úold_aliasesÚ
reportoptsÚchars        rF   ÚgetreportoptrÂ   =  sÍ   € Ø—}‘}×0Ñ0€Kà˜�*€KØ€JØò 
ˆØ�;ÑØ—:‘:“<ˆDØ�3Š;Ø ‰JØ�SŠ[Ø"‰JØ�SŠ[Ø‰JØ˜Ò#Ø˜$Ñ‰Jð
ð �=‰=×)Ò)¨c¸Ñ.CØ˜:Ñ%ˆ
ð Ðð 
�‰×	'Ò	'¨C°:Ñ,=Ø×'Ñ'¨¨RÓ0ˆ
àÐrG   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)   r0   ÚE)r*   r+   ÚoutcomeÚwhenÚupper)Úreportrb   rÌ   s      rF   Úpytest_report_teststatusrÐ   V  sY   € à€FØ‡}‚}Ø‰Ø	�ŠØˆà—>‘>€GØ‡{�{Ð6Ñ6¸7ÀhÒ;NØˆØˆà�F˜GŸM™M›OÐ+Ð+rG   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``).
    rS   ÚmessageNrV   Ú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#   )rD   r±   ÚfilenameÚlinenumÚrelpaths        rF   Úget_locationzWarningReport.get_locationx  sY   € à�;Š;Ø—;‘;ÐØ�?Š?Ø $§¡ÑˆH�gÜ! &×":Ñ":×">Ñ">ÄÈXÓ@VÓWˆGØ�Y˜a ˜yÐ)Ð)ØrG   )r±   r   rW   rV   )	rZ   r[   r\   r]   rd   rÔ   rÕ   rÖ   rÞ   re   rG   rF   rÒ   rÒ   f  s3   … ñð ƒLØ€FˆJÓØ)-€JÐ&Ó-à&*Ð˜8Ó*ôrG   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        «       | _        d | _        | j?                  «       | _         tC        jD                  «       | _#        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Â   rt   r©   rp   ÚfoldskippedÚ	hasmarkupr   ÚCallableBoolÚisattyÚsetÚ_progress_nodeids_reportedÚ_timing_nodeids_reportedÚ_current_logreportÚ_determine_show_progress_infoÚ_show_progress_infor   ÚInstantÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)rD   r±   ÚfileÚ_pytests       rF   rC   zTerminalReporter.__init__…  s#  € ÛàˆŒØˆÔØ(,ˆŒØ(,ˆÔà+-ˆŒ
Ø'+ˆÔØ.2ˆÔØ×1Ñ1×5Ñ5ˆŒØˆ<Ü—:‘:ˆDØ—>‘>×8Ñ8¸ÀÓFˆŒØ!ŸX™X×/Ñ/ˆÔØ6:ˆÔÜ'¨Ó/ˆÔØ!Ÿ=™=×5Ñ5ˆÔØŸ™×+Ñ+ˆŒô ×)Ñ)¨$¯+©+«-Ó8ˆŒÜ7:³uˆÔ'Ü58³UˆÔ%Ø59ˆÔØ#'×#EÑ#EÓ#GˆÔ Ü*0¯.©.Ó*:ˆÔ'Ø7;ˆÔ(Ø=AˆÕ$rG   c                ól  — | j                   j                  dd«      dk(  r| j                   j                  d«      dk7  ry| j                   j                  dd«      ry| j                   j                  d«      }|xxdk(  r  yxdk(  r  y xdk(  r yxd	k(  r y	xd
k(  r y}t        j                  |«       y)zRReturn whether we should display progress information based on the current config.Úcapturer~   rŠ   r8   FÚ	setupshowr5   r6   r7   r4   N)r±   Ú	getoptionr¤   r   Úassert_never)rD   ÚcfgÚunreachables      rF   r÷   z.TerminalReporter._determine_show_progress_info¤  sª   € ð �K‰K×!Ñ! )¨TÓ2°dÒ:Ø—‘×"Ñ"Ð#9Ó:Ø.ò/ð à�;‰;× Ñ  ¨eÔ4ØØ#'§;¡;×#5Ñ#5Ð6LÓ#MˆØØ=”Ñ=Ø!ô >Ñ=Ø!ð >åØÝØÝØØÜ×#Ñ# KÕ0rG   c                óF   — | j                   j                  j                  }|S rY   )r±   r©   rj   )rD   Ú	verbositys     rF   r  zTerminalReporter.verbosityÀ  s   € àŸ™×+Ñ+×3Ñ3ˆ	ØÐrG   c                ó    — | j                   dk\  S rá   )r  ©rD   s    rF   Ú
showheaderzTerminalReporter.showheaderÅ  s   € à�~‰~ Ñ"Ð"rG   c                óT   — t        | j                  j                  j                  «      S rY   )rU   r±   r©   rm   r	  s    rF   rm   zTerminalReporter.no_headerÉ  s   € ä�D—K‘K×&Ñ&×0Ñ0Ó1Ð1rG   c                óT   — t        | j                  j                  j                  «      S rY   )rU   r±   r©   rn   r	  s    rF   rn   zTerminalReporter.no_summaryÍ  s   € ä�D—K‘K×&Ñ&×1Ñ1Ó2Ð2rG   c                óŠ   — | j                   €,| j                  j                  t        j                  «      dk\  S | j                   S rá   )rå   r±   Úget_verbosityr   r“   r	  s    rF   Ú
showfspathzTerminalReporter.showfspathÑ  s:   € à×ÑÐ#Ø—;‘;×,Ñ,¬V×-HÑ-HÓIÈQÑNÐNØ×ÑÐrG   c                ó   — || _         y rY   )rå   )rD   Úvalues     rF   r  zTerminalReporter.showfspath×  s
   € à ˆÕrG   c                óZ   — | j                   j                  t        j                  «      dkD  S rá   )r±   r  r   r“   r	  s    rF   Úshowlongtestinfoz!TerminalReporter.showlongtestinfoÛ  s"   € à�{‰{×(Ñ(¬×)DÑ)DÓEÈÑIÐIrG   c                ó,   — t        | j                  «      S )zUThe amount of items reported in the progress so far.

        :meta private:
        )Úlenrô   r	  s    rF   Úreported_progressz"TerminalReporter.reported_progressß  s   € ô �4×2Ñ2Ó3Ð3rG   c                óH   — dddœj                  ||«      }|| j                  v S )NÚxrÇ   )r-   r+   )Úgetrt   )rD   rÁ   s     rF   ÚhasoptzTerminalReporter.hasoptç  s*   € Ø¨3Ñ/×3Ñ3°D¸$Ó?ˆØ�t×'Ñ'Ð'Ð'rG   c                óÞ  — | j                   j                  t        j                  |«      j                  z  }| j
                  �|| j
                  k7  r}| j
                  �| j                  r| j                  «        || _        t        | j                  |«      }| j                  j                  «        | j                  j                  |dz   «        | j                  j                  |fddi|¤Ž y )Nr™   ÚflushT)r±   Úrootpathr    ÚparseÚpathrî   rø   Ú)_write_progress_information_filling_spacer$   ré   rë   r   Úwrite)rD   rÔ   ÚresÚmarkupÚfspathÚ	relfspaths         rF   Úwrite_fspath_resultz$TerminalReporter.write_fspath_resultë  s³   € Ø—‘×%Ñ%¬¯©°VÓ(<×(AÑ(AÑAˆØ×ÑÐ%¨°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¨&Ó1rG   c                óè   — | j                   |k7  r<| j                  j                  «        || _         | j                  j                  |«       |r% | j                  j                  |fi |¤Ž d| _         y y )Néþÿÿÿ)rî   rë   r   r!  )rD   ÚprefixÚextraÚkwargss       rF   Ú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Õð rG   c                ó`   — | j                   r"| j                  j                  «        d | _         y y rY   )rî   rë   r   r	  s    rF   Úensure_newlinezTerminalReporter.ensure_newlineÿ  s%   € Ø×ÒØ�H‰H�M‰MŒOØ!%ˆDÕð rG   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!  )rD   Úcontentr  r1  r2  r#  r7  Úwrappeds           rF   Ú
wrap_writezTerminalReporter.wrap_write  s|   € ð !%§¡× >Ñ >ÐØ—-‘-Ü�M‰MØÐ+Ñ+¨gÑ5Ø×(Ñ(¨6Ñ1Ø $Ø#(ô	ó
ˆð Ð/Ð0Ð1ˆØˆ�‰�‰�wÑ6 eÐ6¨vÓ6rG   ©r  c               óB   —  | j                   j                  |fd|i|¤Ž y )Nr  )rë   r!  )rD   r:  r  r#  s       rF   r!  zTerminalReporter.write  s   € Øˆ�‰�‰�wÑ6 eÐ6¨vÓ6rG   c               ó>   — | j                   j                  ||¬«       y )Nr=  )rë   Ú	write_raw)rD   r:  r  s      rF   r@  zTerminalReporter.write_raw  s   € Ø�‰×Ñ˜7¨%ÐÕ0rG   c                ó8   — | j                   j                  «        y rY   )rë   r  r	  s    rF   r  zTerminalReporter.flush   s   € Ø�‰�‰ÕrG   c                óê   — t        |t        «      s6t        j                  t	        j
                  «       d¬«       t        |d¬«      }| j                  «         | j                  j                  |fi |¤Ž y )Né   )Ú
stacklevelr¾   )Úerrors)	Ú
isinstancerS   r/   Úwarnr   Úformatr.  rë   r   )rD   r   r#  s      rF   rœ   zTerminalReporter.write_line#  sS   € Ü˜$¤Ô$Ü�M‰MÔ3×:Ñ:Ó<ÈÕKÜ�t IÔ.ˆDØ×ÑÔØˆ�‰�‰�dÑ%˜fÓ%rG   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.
        ÚeraseFrI   r™   r¶   úN)Úpoprë   rì   r  rS   r!  )rD   r   r#  rJ  Ú
fill_countÚfills         rF   ÚrewritezTerminalReporter.rewrite*  sl   € ð —
‘
˜7 EÓ*ˆÙØŸ™×+Ñ+¬c°$«iÑ7¸!Ñ;ˆJØ˜Ñ#‰DàˆDÜ�4‹yˆØˆ�‰�‰�t˜d‘{ TÑ)Ñ4¨VÓ4rG   c                ób   — | j                  «         | j                  j                  |||fi |¤Ž y rY   )r.  rë   Úsep)rD   rQ  Útitlerì   r#  s        rF   Ú	write_sepzTerminalReporter.write_sep<  s+   € ð 	×ÑÔØˆ�‰�‰�S˜% Ñ5¨fÓ5rG   c                ó@   —  | j                   j                  ||fi |¤Ž y rY   )rë   rQ  )rD   rR  rQ  Úkws       rF   ÚsectionzTerminalReporter.sectionF  s   € Øˆ�‰�‰�S˜%Ñ& 2Ó&rG   c                ó>   —  | j                   j                  |fi |¤Ž y rY   )rë   r   )rD   rŸ   rU  s      rF   r   zTerminalReporter.lineI  s   € Øˆ�‰�‰�cÑ ˜RÓ rG   c                óœ   — || j                   v}| j                   j                  |g «      j                  |«       |r| j                  «        y y rY   )ræ   Ú
setdefaultÚextendÚ_set_main_color)rD   ra   ÚitemsÚset_main_colors       rF   Ú
_add_statszTerminalReporter._add_statsL  sC   € Ø!¨¯©Ð3ˆØ�
‰
×Ñ˜h¨Ó+×2Ñ2°5Ô9ÙØ× Ñ Õ"ð rG   c                ój   — t        |«      j                  d«      D ]  }| j                  d|z   «       Œ y)Nr0  zINTERNALERROR> T)rS   Úsplitrœ   )rD   Úexcreprr   s      rF   Úpytest_internalerrorz%TerminalReporter.pytest_internalerrorR  s5   € Ü˜“L×&Ñ& tÓ,ò 	6ˆDØ�O‰OÐ-°Ñ4Õ5ð	6àrG   c                ó’   — ddl m} |j                  |j                  f} ||«      }t	        |||¬«      }| j                  d|g«       y )Nr   )Úwarning_record_to_str)rÕ   rÓ   rÔ   r/   )Ú_pytest.warningsrd  rÛ   ÚlinenorÒ   r^  )rD   Úwarning_messagerÔ   rd  rÕ   rÓ   Úwarning_reports          rF   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recordedW  sK   € õ
 	;à$×-Ñ-¨×/EÑ/EÐEˆ
Ù'¨Ó8ˆä&Ø!¨7¸6ô
ˆð 	�‰˜
 ^Ð$4Õ5rG   c                ór   — | j                   j                  j                  rd|› �}| j                  |«       y y )NzPLUGIN registered: )r±   r©   r«   rœ   )rD   ÚpluginrŸ   s      rF   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registeredf  s4   € Ø�;‰;×Ñ×)Ò)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *rG   c                ó(   — | j                  d|«       y )Nr,   )r^  )rD   r\  s     rF   Úpytest_deselectedz"TerminalReporter.pytest_deselectedn  s   € Ø�‰˜ eÕ,rG   c                ó  — |\  }}}| j                   rJ| j                  t        j                  |«      |||«      }| j	                  |d«       | j                  «        y | j                  r#| j                  |d«       | j                  «        y y )Nr¶   )r  Ú_locationliner    r  r,  r  r  r&  )rD   rÔ   Úlocationr$  rf  Údomainr   s          rF   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstartq  sx   € ð "*Ñˆ�˜ð × Ò Ø×%Ñ%¤f§l¡l°6Ó&:¸FÀFÈFÓSˆDØ×$Ñ$ T¨2Ô.Ø�J‰J�LØ�_Š_Ø×$Ñ$ V¨RÔ0Ø�J‰J�Lð rG   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 |¤Ž | j0                  �r| j2                  �s| j5                  «        �nÿ | j6                  |j$                  g|j8                  ¢­Ž }	t        |d«      }
|
så | j:                  |	|fi |¤Ž |j                  st        |d«      rœt=        |«      }| j                  j'                  t(        j*                  «      d	k  rJ| j,                  j>                  | j,                  j@                  z
  tC        d
«      z
  dz
  }tE        d||«      }nd|› d�}|r|�| jG                  |«       | j0                  rö| jI                  «        nå| jK                  «        | j,                  j/                  d|jL                  jN                  j$                  › d�«       | j0                  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   ÚnoderC  ú [100%]rI   z ({})z (ú)ú[ú]r™   )Úcyanr(  )+rö   Ú
_tests_ranr`   r±   ÚhookrÐ   ra   rb   rc   rF  Útupler^  Úhasattrr*   r)   r+   rô   ÚaddÚidr  r   r“   rë   r!  rø   Ú_is_last_itemÚ(_write_progress_information_if_past_edgerp  rq  r,  Ú_get_raw_skip_reasonrì   r7  r  Ú_format_trimmedr<  r   r.  ry  ÚgatewayÚ!_get_progress_information_messagerî   r  )rD   rÏ   Úrepr"  ra   rb   rc   r#  Ú	was_xfailr   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 rF   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreport  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¯F©FÔ3Ø�;‰;×$Ñ$¤V×%@Ñ%@ÓAÀQÒFØˆD�H‰H�N‰N˜6Ñ, VÒ,ð ×'Ó'°×0BÓ0BØ×=Ñ=Ö?à%�4×%Ñ% c§f¡fÐ<¨s¯|©|Ò<ˆ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Ô*Ø%'�Ô"Ø�
‰
�rG   c                ód   — | j                   €J ‚| j                  | j                   j                  k(  S rY   )rä   r  Útestscollectedr	  s    rF   r…  zTerminalReporter._is_last_itemÌ  s-   € à�}‰}Ð(Ð(Ð(Ø×%Ñ%¨¯©×)EÑ)EÑEÐErG   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   )rD   Úresults     rF   Ú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(  �r¼|sy
ddlm} t        | j                  |«      r,| j                  rt        | j                  j                  «      S y
| j                  d«      | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d«      z   | j                  d
«      z   }| j                  }|�|j                  d   Šn|r|d   j                  d   nd
Š|D �cg c](  }t        ||«      s|j                   | j"                  vr|‘Œ* }	}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 )Nr6   z{:zd}ú [z/{}]z [ ú / z ]r7   r¶   r   )ÚSubtestReportr*   r.   r)   r-   r+   r0   éÿÿÿÿc              3  óB   •K  — | ]  }|j                   d    ‰k(  –— Œ y­w)r   N)rq  )Ú.0ÚiÚcurrent_locations     €rF   ú	<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)rq  rÍ   )rž  Úrr   s     €rF   r¡  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>  s3   øè ø€ ò "àØ—:‘:˜a‘=Ð$4Ò4ð —‘˜'Õ!ñ"ùs   ƒ+.c              3  ó4   K  — | ]  }|j                   –— Œ y ­wrY   )r„  ©rž  r£  s     rF   r¡  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>  s   è ø€ Ò4P¸a°Q·TµTÑ4Pùs   ‚c              3  óV   K  — | ]!  }t        |t        «      sŒ|j                  –— Œ# y ­wrY   )rF  r'   Údurationr¥  s     rF   r¡  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>  s   è ø€ ÒV q¼JÀqÌ*Õ<U˜Ÿ
�
ÑVùs   ‚)˜)éd   Ú3dz%]rz  )rä   r“  rø   r  r  rS   rH  Ú_pytest.subtestsr›  rF  rö   r  Úformat_node_durationr§  Ú_get_reports_to_displayrq  r„  rõ   Úsumr\  Úupdate)rD   Ú	collectedr5   Úcounter_formatÚformat_stringr›  Úall_reportsrÏ   r£  Únot_reportedÚtests_in_moduleÚtests_completedÚlast_in_moduler   s                @rF   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Ó.ÙØÝ6ä˜$×1Ñ1°=ÔAØ×(Ò(Ü/°×0GÑ0G×0PÑ0PÓQÐQØð ×,Ñ,¨XÓ6Ø×.Ñ.¨yÓ9ñ:à×.Ñ.¨xÓ8ñ9ð ×.Ñ.¨yÓ9ñ:ð ×.Ñ.¨yÓ9ñ	:ð
 ×.Ñ.¨wÓ7ñ8ð ×.Ñ.¨rÓ2ñ3ð ð ×,Ñ,ˆFØÐ!Ø#)§?¡?°1Ñ#5Ñ áBM ;¨r¡?×#;Ñ#;¸AÒ#>ÐSUÐ ð %öàÜ! ! ]Ô3Ø—D‘D × =Ñ =Ñ=ò ðˆLð ô "ó "Ø;?¿=¹=×;NÑ;Nô"ó ˆOô "ó "à%ô"ó ˆOð
 -°Ñ?ˆNØ×$Ò$©Ø×-Ñ-×4Ñ4Ñ4PÀ<Ô4PÔPÜ+ÜÑV¨LÔVÓVóð ð ÙØ˜×.Ñ.°Ñ4¸	ÑAÀ"ÐEÀRÐHÐHØùò/s   Æ-I"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 )Nr6   r™  ú/r}  r7   z 99h 59mrz  rI   r0  T)
Ú_width_of_current_linerø   rä   r“  r  rí   Ú_get_main_colorrŠ  rë   r!  )rD   r¼   Ú	num_testsÚprogress_lengthÚ	past_edgeÚ
main_colorÚ_rŸ   s           rF   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Ð);Ó<ð rG   c                óæ   — | j                  «       \  }}| j                  «       }| j                  }| j                  j                  |z
  dz
  } | j
                  |j                  |«      fddi|di¤Ž y )NrI   r  T)rº  rŠ  r¹  rë   rì   r!  Úrjust)rD   rˆ   r¿  rŸ   r¼   rN  s         rF   r   z:TerminalReporter._write_progress_information_filling_space,  sj   € Ø×'Ñ'Ó)‰ˆˆqØ×4Ñ4Ó6ˆØ×'Ñ'ˆØ�x‰x×!Ñ! AÑ%¨Ñ)ˆØˆ�
‰
�3—9‘9˜T“?Ñ@¨$Ð@°5¸$°-Ó@rG   c                ó.   — | j                   j                  S )z%Return the width of the current line.)rë   r7  r	  s    rF   r¹  z'TerminalReporter._width_of_current_line3  s   € ð �x‰x×-Ñ-Ð-rG   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  ÚboldrI   )rò   r±   r©   rj   r!  r	  s    rF   Úpytest_collectionz"TerminalReporter.pytest_collection8  sk   € Ø�;‰;Œ=Ø�{‰{×!Ñ!×)Ñ)¨QÒ.Ø—
‘
Ð,°D¸t�
ÕDð /à�[‰[×Ñ×'Ñ'¨1Ò,Ø�J‰JÐ(°¸4ˆJÕ@ð -rG   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 )Nr0   r+   )
r)   r^  r+   r–  rF  r!   rã   r  rò   Úreport_collect)rD   rÏ   r  r\  s       rF   Ú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   r0   r+   r,   z
collected zcollecting z itemrI   r¶   rÇ   rš  z errorz deselectedz skippedz	 selectedT)rÄ  rJ  r0  )r±   r©   rj   rú   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rù   r  ræ   r  rã   rS   rò   rO  r!  rœ   )rD   r   rE  r+   r,   Úselectedr   s          rF   rÇ  zTerminalReporter.report_collectI  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Õ!rG   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-ú-r}  z	, pytest-z	, pluggy-r   Úpastebinz -- )r±   Ú
start_path)rä   r   rù   Ú_session_startr
  rS  r¯   Úpython_versionrm   r¦   rK   rš   r›   rS   rþ   Ú_versionÚversionÚpluggyÚ__version__r  r±   r©   rª   Ú
executablerœ   r€  Úpytest_report_headerré   Ú_write_report_lines_from_hooks)rD   ÚsessionÚverinforŸ   rÑ  Úliness         rF   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstartm  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ð# rG   c                ó˜   — t        |«      D ]<  }t        |t        «      r| j                  |«       Œ%|D ]  }| j                  |«       Œ Œ> y rY   )ÚreversedrF  rS   rœ   )rD   rá  Úline_or_linesr   s       rF   rÞ  z/TerminalReporter._write_report_lines_from_hooksˆ  sH   € ô & e›_ò 	*ˆMÜ˜-¬Ô-Ø—‘ Õ.à)ò *�DØ—O‘O DÕ)ñ*ñ		*rG   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¤   rH  r§   Úlist_plugin_distinfoÚ_plugin_nameversions)rD   r±   r–  Úwarningrè  Ú
plugininfos         rF   rÝ  z%TerminalReporter.pytest_report_header’  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ôð ˆrG   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Õ  r\  Úcollectonlyrœ  r¶   r)   ú!zcollection failures)rÇ  r±   r€  Úpytest_report_collectionfinishré   r\  rÞ  r  r©   rj   rë   r   Ú_printcollecteditemsræ   r  rQ  Ú
toterminal)rD   rß  rá  r)   r‹  s        rF   Ú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Õ,ñ-ð ð 0rG   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  óH   K  — | ]  }|j                   j                  –— Œ y ­wrY   )r„  r  )rž  Úitems     rF   r¡  z8TerminalReporter._printcollecteditems.<locals>.<genexpr>Â  s   è ø€ Ò @°$ §¡§¥Ñ @ùs   ‚ "ú: r¶   rI   ú  Úobjz{}{})r±   r  r   r“   r   Úsortedr\  rë   r   rÔ   Ú	listchainr  rL  rë  rK   ÚinspectÚgetdocÚ
splitlinesrH  )rD   r\  Útest_cases_verbosityÚcountsÚnamer6   rü  ÚstackÚindentÚneeded_collectorsÚcolrÿ  Údocr   s                 rF   r÷  z%TerminalReporter._printcollecteditems¾  s±  € Ø#Ÿ{™{×8Ñ8¼×9TÑ9TÓUÐØ !Ò#Ø# bÒ(Ü Ñ @¸%Ô @Ó@�Ü#)¨&¯,©,«.Ó#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rG   c              #  óÀ  K  — d –—}| j                   j                  d«       t        j                  t        j                  t        j
                  t        j                  t        j                  t        j                  f}||v r2| 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|j.                  r'| j'                  dt)        |j.                  «      d¬«       | j1                  «        |S ­w)	Nr¶   )r—   Ú
exitstatusr±   r/   z3Tests pass, but maximum allowed warnings exceeded: z > T)rx  rõ  )rë   r   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDÚMAX_WARNINGS_ERRORr±   r€  Úpytest_terminal_summaryÚ_get_max_warningsr  r  ræ   r  rœ   Ú
shouldfailrS  rS   Ú_report_keyboardinterruptrü   Ú
shouldstopÚsummary_stats)rD   rß  r  r–  Úsummary_exit_codesÚmax_warningsÚwarning_counts          rF   Úpytest_sessionfinishz%TerminalReporter.pytest_sessionfinishÜ  sŠ  è ø€ ò ˆØ�‰�‰�bÔä�K‰KÜ×!Ñ!Ü× Ñ Ü× Ñ Ü×'Ñ'Ü×'Ñ'ð
Ðð Ð+Ñ+Ø�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                    }|r`| j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        | j                  «        	 d –—|r!| j                  «        | j	                  «        S S # |r!| j                  «        | j	                  «        w w xY w­wrY   )rn   Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summary)rD   Úshow_summarys     rF   r  z(TerminalReporter.pytest_terminal_summary  s§   è ø€ ð  Ÿ?™?Ð*ˆÙØ×ÑÔ!Ø×!Ñ!Ô#Ø×"Ñ"Ô$Ø×!Ñ!Ô#Ø×ÑÔ!Ø× Ñ Ô"ð	(ÚáØ×'Ñ'Ô)à×%Ñ%Õ'ð ø‰|Ø×'Ñ'Ô)à×%Ñ%Õ'ð üs   ‚A0CÁ3B Á6$CÂ%B?Â?Cc                ó2   — |j                  d¬«      | _        y )NT)Úfuncargs)Úgetreprrü   )rD   Úexcinfos     rF   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interrupt  s   € Ø'.§¡À Ó'EˆÕ$rG   c                ó>   — | j                   �| j                  «        y y rY   )rü   r  r	  s    rF   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigure  s   € Ø×'Ñ'Ð3Ø×*Ñ*Õ,ð 4rG   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)rw  )
rü   Ú	reprcrashrÓ   rS  r±   r©   Ú	fulltracerø  rë   r   )rD   ra  rŸ   s      rF   r  z*TerminalReporter._report_keyboardinterrupt!  s¯   € Ø×.Ñ.ˆØÐ"Ð"Ð"Ø× Ñ Ð,Ð,Ð,Ø×Ñ×'Ñ'ˆØ�‰�s˜CÔ Ø #Ñ%Ø�{‰{×!Ñ!×+Ò+Ø×"Ñ" 4§8¡8Õ,à×!Ñ!×,Ñ,¨T¯X©XÔ6Ø—‘—‘ØVØð õ ð &rG   c                óî   ‡ ‡‡— dˆˆˆ fd„}|rb |«       }‰ j                   dk\  rG‰j                  t        j                  |«      k7  r%|dt	        ‰ j
                  t        |«      «      z   z  }|dz   S d}|dz   S )Nc                 ó  •— t        ‰j                  j                  ‰«      «      } ‰r]| j                  ‰«      rL| d t	        ‰«        } ‰j                  d«      }|d   j                  dd«      |d<   | dj                  |«      z  } | S )Nr|  r   rÆ   ú::)rS   r±   Úcwd_relative_nodeidÚendswithr  r`  r¾   rš   )r   rO   rr  rÔ   rD   s     €€€rF   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel4  s|   ø€ Ü�t—{‘{×6Ñ6°vÓ>Ó?ˆDÙ˜$Ÿ-™-¨Ô/Ø˜Nœs 6›{˜lÐ+�ØŸ™ cÓ*�Ø" 1™I×-Ñ-¨c°4Ó8��q‘	Ø˜Ÿ™ Ó(Ñ(�ØˆKrG   rC  z <- z
[location]r™   ©rW   rS   )r  r  r   Únorm_sepr$   ré   r
   )rD   rÔ   r$  rf  rr  r8  r"  s   ``  `  rF   rp  zTerminalReporter._locationline1  so   ú€ ÷	ñ Ù“'ˆCØ�~‰~ Ò"¨¯©´u·~±~ÀfÓ7MÒ(MØ�v¤¨D¯N©N¼DÀ»LÓ IÑIÑI�ð �S‰yÐð ˆCØ�S‰yÐrG   c                ó$   — |j                   }|r|S y)Nztest session)Ú	head_line)rD   r‹  r<  s      rF   Ú_getfailureheadlinez$TerminalReporter._getfailureheadlineF  s   € Ø—M‘Mˆ	ÙØÐØrG   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¶   )rS   Úlongreprr1  ÚAttributeError)rD   r‹  s     rF   Ú_getcrashlinezTerminalReporter._getcrashlineL  sX   € ð	Ü�s—|‘|×-Ñ-Ó.Ð.øÜò 	ðÜ˜3Ÿ<™<Ó(¨¨"Ð-Ò-øÜ!ò Úðúð	ús,   ‚! ¡	A«AÁAÁ	AÁAÁAÁAc                óÌ   — | j                   j                  j                  }|�t        |«      S | j                   j	                  d«      }t        |t        «      rt        |«      S |S )zEReturn the max_warnings threshold, from CLI or INI, or None if unset.r  )r±   r©   r  rŽ   r¤   rF  rS   )rD   r  Ú	ini_values      rF   r  z"TerminalReporter._get_max_warningsU  sU   € à—‘×"Ñ"×/Ñ/ˆØÐÜ�u“:ÐØ&*§k¡k×&8Ñ&8¸Ó&Hˆ	Ü�i¤Ô%Ü�y“>Ð!ØÐrG   c                óz   — | j                   j                  |d«      D �cg c]  }t        |d«      rŒ|‘Œ c}S c c}w )Nre   Ú	_pdbshown)ræ   r  r‚  )rD   r  r  s      rF   Ú
getreportszTerminalReporter.getreportsb  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                ó2  •— | D �cg c]"  }|j                  ‰j                  «      x}sŒ!|‘Œ$ }}t        |«      dk  rdj                  t	        t
        |«      «      S t        d„ |D «       «      }dj                  d„ |j                  «       D «       «      S c c}w )Né
   r0  c              3  óX   K  — | ]"  }t        |«      j                  d d«      d   –— Œ$ y­w)r5  rI   r   N)rS   r`  )rž  Úlocs     rF   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{}rI   rÇ   r¶   N)rH  )rž  ÚkÚvs      rF   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›   rS   r   r\  )Úreportsr¼   r  Ú	locationsÚcounts_by_filenamerD   s        €rF   Úcollapsed_location_reportzDTerminalReporter.summary_warnings.<locals>.collapsed_location_reportx  s–   ø€ Ø(/ÖV 1¸¿¹ÈÏÉÓ9TÐ4T°AÑ4TšQÐV�	ÐVÜ�y“> BÒ&ØŸ9™9¤S¬¨iÓ%8Ó9Ð9ä%,ñ -Ø:Cô-ó &Ð"ð —y‘yñ !à 2× 8Ñ 8Ó :ô!ó ð ùò Ws
   †"B©Bzwarnings summary (final)zwarnings summaryrÏ  TF)rw  rÄ  r0  c              3  ó&   K  — | ]	  }d |z   –— Œ y­w)rþ  Nre   )rž  r  s     rF   r¡  z4TerminalReporter.summary_warnings.<locals>.<genexpr>Œ  s   è ø€ Ò(A°a¨°­Ñ(Aùs   ‚zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rP  zlist[WarningReport]rW   rS   )r  ræ   r  rû   r  rY  rÓ   rë  rS  r\  rë   r   r  rš   Úrstrip)rD   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrrS  rR  rÓ   Úmessage_reportsÚmaybe_locationrá  Úindenteds   `            rF   r#  z!TerminalReporter.summary_warningse  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õðY rG   c                ó*   — | j                  ddd«       y )Nr*   ÚPASSESÚP©Úsummary_passes_combinedr	  s    rF   r$  zTerminalReporter.summary_passes–  s   € Ø×$Ñ$ X¨x¸Õ=rG   c                ó*   — | j                  ddd«       y )Nr.   ÚXPASSESÚXr`  r	  s    rF   r%  z TerminalReporter.summary_xpasses™  s   € Ø×$Ñ$ Y°	¸3Õ?rG   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 )Nr~   rÏ  r¿  T)rv  rÄ  )r±   r©   rz   r  rG  rS  Úsectionsr=  Ú_outrep_summaryÚ_handle_teardown_sectionsr„  )rD   Úwhich_reportsÚ	sep_titleÚ
needed_optrP  r‹  rŸ   s          rF   ra  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·6±6Õ:ñ;ð 'ð .rG   c                óŠ   — | j                  d«      }|D �cg c]"  }|j                  dk(  r|j                  |k(  r|‘Œ$ c}S c c}w )Nr¶   rÊ   )rG  rÍ   r„  )rD   Únode_idrP  rÏ   s       rF   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reports¬  sI   € Ø—/‘/ "Ó%ˆð "ö
àØ�{‰{˜jÒ(¨V¯Y©Y¸'Ò-Aò ò
ð 	
ùò 
s   –'A c                óR   — | j                  |«      D ]  }| j                  |«       Œ y rY   )rn  Úprint_teardown_sections)rD   rm  rÏ   s      rF   rh  z*TerminalReporter._handle_teardown_sections´  s*   € Ø×0Ñ0°Ó9ò 	1ˆFØ×(Ñ(¨Õ0ñ	1rG   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 )Nr~   r‡   rÊ   rÓ  rœ  r0  )r±   r©   rƒ   rf  rë   rQ  r   ©rD   r‹  rƒ   Úsecnamer:  s        rF   rp  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Õ&ñ	'rG   c                ól   — | j                   j                  j                  }| j                  dd|¬«       y )Nr)   ÚFAILURES©ry   )r±   r©   rz   Úsummary_failures_combined)rD   ry   s     rF   r!  z!TerminalReporter.summary_failuresÅ  s,   € Ø—‘×"Ñ"×*Ñ*ˆØ×&Ñ& x°À5Ð&ÕIrG   c                ó´   — | j                   j                  j                  }|r | j                   j                  j                  nd}| j	                  dd|¬«       y )Nr~   r-   Ú	XFAILURESrv  )r±   r©   r‚   rz   rw  )rD   Úshow_tbry   s      rF   r"  z"TerminalReporter.summary_xfailuresÉ  sE   € Ø—+‘+×$Ñ$×-Ñ-ˆÙ.5�—‘×"Ñ"×*Ò*¸4ˆØ×&Ñ& y°+ÀUÐ&ÕKrG   )rk  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 )Nr~   rÏ  r   r¿  T©rx  rÄ  )	r  rG  rS  rB  rg  rœ   r=  rh  r„  )	rD   ri  rj  ry   rk  rP  r‹  r   rŸ   s	            rF   rw  z*TerminalReporter.summary_failures_combinedÎ  sÚ   € ð �DŠ=Ù §¡¨ZÔ!8Ø,0¯O©O¸MÓ,J�ÙØØ—‘˜s IÔ.Ø˜F’?Ø&ò .˜Ø#×1Ñ1°#Ó6˜Ø×,Ñ,¨SÔ1ØŸ™¨Õ-ñ.ð
  'ò ?˜Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°TÀ˜ÔEØ×,Ñ,¨SÔ1Ø×6Ñ6°s·v±vÕ>ñ	?ð "9ð rG   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 )Nr~   r0   rÏ  ÚERRORSrÈ   zERROR collecting z	ERROR at ú of r¿  Tr|  )	r±   r©   rz   rG  rS  ræ   r=  rÍ   rg  )rD   rP  r‹  rŸ   s       rF   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Õ)ñ*ð .rG   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 )Nr~   r‡   rÓ  rœ  r0  )rø  rë   r±   r©   rƒ   rf  rQ  r   rr  s        rF   rg  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˜'Õ"ñ	#rG   c                ó*  — | 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  }
|r@ | j                  j                  d	i |¤Ž}|j                  d«      }t        |«      z  }|
|z  }
|r | j                  d|
fdi|¤Ž y  | j                  |
fi |¤Ž y )
Nrœ  r   rç  Tz in z[0mrÏ  rì   ©r¶   )r  rÖ  rÊ  Úbuild_summary_stats_linerë   rì   r#  r  rë  rš   Úformat_session_durationrË  ÚremovesuffixrS  rœ   )rD   Úsession_durationÚpartsr¾  Ú
line_partsÚdisplay_seprì   Útextr#  Úwith_markuprŸ   Úmain_markupr§  Úduration_with_markupÚmarkup_for_end_seps                  rF   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ÐØ!3×!@Ñ!@ÀÓ!KÐØœÐ/Ó0Ñ0ˆIØÐ%Ñ%ˆCáØˆD�N‰N˜3 ÑH¨yÐH¸KÓHàˆD�O‰O˜CÑ/ ;Ó/rG   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ˆ   r   rD   s          €rF   Úshow_simplez8TerminalReporter.short_test_summary.<locals>.show_simple,  sq   ø€ Ø—Z‘Z—^‘^ D¨"Ó-ˆFÙØØ—[‘[ˆFØò #�Ü'×+Ñ+¨DÔ2IÓJ�Ü7Ø˜C §¡¨E°4¨=ó�ð —‘˜TÕ"ñ#rG   c                óÎ  •— ‰	j                   j                  dg «      }|D ]Ã  }|j                  ‰	j                  t        d   di«      \  }} ‰	j
                  j                  |fi |¤Ž}t        ‰	j
                  ‰	j                  |«      }|j                  dk(  r|› d|› �}n|› d|j                  › d|› �}|j                  }|r|dt        |«      z   z  }| j                  |«       ŒÅ y )	Nr-   r/   TÚcallr™   z at r  ú - )ræ   r  Ú_get_verbose_word_with_markupr±   r‘  rë   r#  Ú_get_node_id_with_markuprÍ   ru  rS   rë  )
rá  r-   r‹  Úverbose_wordÚverbose_markupÚmarkup_wordrÔ   r   rŽ  rD   s
            €rF   Úshow_xfailedz9TerminalReporter.short_test_summary.<locals>.show_xfailed8  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�à—8‘8˜vÒ%Ø)˜]¨!¨F¨8Ð4‘Dà)˜]¨$¨s¯x©x¨j¸¸V¸HÐE�DàŸ™�ÙØ˜E¤C¨£KÑ/Ñ/�Dà—‘˜TÕ"ñ!#rG   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š  ru  rS   rë  )
rá  r.   r‹  r›  rœ  r�  rÔ   r   rŽ  rD   s
            €rF   Úshow_xpassedz9TerminalReporter.short_test_summary.<locals>.show_xpassedL  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Õ"ñ
#rG   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 ]V  \  }}}	}
|
j                  |«      }
|	� | j                  |› d|› d|› d|	› d	|
› �	«       Œ;| j                  |› d|› d|› d	|
› �«       ŒX y )
Nr+   r   r/   Tú	Skipped: r™  z] rØ   rý  )ræ   r  Ú_folded_skipsré   r™  r±   r‘  rë   r#  Úremoveprefixrë  )rá  r+   Úfskipsr›  rœ  r�  r)  Únumr$  rf  rŽ  rD   s              €rF   Úshow_skipped_foldedz@TerminalReporter.short_test_summary.<locals>.show_skipped_foldedZ  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Ó4�ØÐ%Ø—L‘L K =°°3°%°r¸&¸ÀÀ6À(È"ÈVÈHÐ!UÕVà—L‘L K =°°3°%°r¸&¸ÀÀFÀ8Ð!LÕMñNrG   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™   rC  r˜  )ræ   r  r@  rF  r�  r  r™  r±   r‘  rë   r#  rš  rS   rë  )
rá  r+   r‹  r›  rœ  r�  rÔ   r   rŽ  rD   s
            €rF   Úshow_skipped_unfoldedzBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedk  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Ö"ñ#rG   c                ó@   •— ‰j                   r	 ‰| «       y  ‰| «       y rY   )rï   )rá  rD   r§  r©  s    €€€rF   Úshow_skippedz9TerminalReporter.short_test_summary.<locals>.show_skipped~  s   ø€ Ø×ÒÙ# EÕ*á% eÕ,rG   r)   )r”  r*   r0   )r  rd  ÚfrÇ   ÚprË   rÏ  zshort test summary infoT)r~  rÄ  )rá  ú	list[str]r”  rS   rW   rX   )rá  r®  rW   rX   )rt   r	   r  rS  rœ   )rD   r•  rž  r   r«  ÚREPORTCHAR_ACTIONSrá  rÁ   rk   r   r§  r©  s   `         @@rF   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Øò &�Ø—‘ Õ%ñ&ð rG   c                óÒ   — | j                   �| j                  �| j                  r,| j                  «        | j                   sJ ‚| j                  sJ ‚| j                   | j                  fS rY   )rç   rè   r…  r[  r	  s    rF   rº  z TerminalReporter._get_main_color˜  sb   € Ø×ÑÐ# t×'8Ñ'8Ð'@ÀD×DVÒDVØ× Ñ Ô"Ø×#Ò#Ð#Ð#Ø×$Ò$Ð$Ð$Ø×Ñ ×!2Ñ!2Ð2Ð2rG   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)   r0   rx  r/   r.   rw  r*   rv  )ræ   r…  )rD   Úunknown_type_seenræ   r¾  s       rF   Ú_determine_main_colorz&TerminalReporter._determine_main_colorŸ  st   € Ø—
‘
ˆØ�uÑ ¨5Ñ 0ØˆJð Ðð ˜5Ñ  I°Ñ$6Ñ:KØ!ˆJð
 Ðð	 ˜Ñ d×&8Ò&8Ø ˆJð Ðð "ˆJØÐrG   c                óÚ   — g }| j                   D ]$  }|sŒ|t        vsŒ||vsŒ|j                  |«       Œ& t        t        «      |z   | _        | j                  t        |«      «      | _        y rY   )ræ   ÚKNOWN_TYPESrë  Úlistrè   r³  rU   rç   )rD   Úunknown_typesÚ
found_types      rF   r[  z TerminalReporter._set_main_color«  sf   € Ø#%ˆØŸ*™*ò 	5ˆJÚØ¤[Ò0°ZÀ}Ò5TØ!×(Ñ(¨Õ4ð	5ô !¤Ó-°Ñ=ˆÔØ×5Ñ5´d¸=Ó6IÓJˆÕrG   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    rF   rƒ  z)TerminalReporter.build_summary_stats_line´  s4   € ð( �;‰;× Ñ  Ô/Ø×>Ñ>Ó@Ð@à×8Ñ8Ó:Ð:rG   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  rK   )rD   ÚkeyrP  r  s       rF   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)	rD   r¾  Úknown_typesr‡  r½  rP  r6   rˆ   r#  s	            rF   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Ð Ð rG   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,   r0   r   zno tests collectedrw  Trv  z%d %s collectedÚtestzno tests collected (z deselected)r¸  z tests collected (r¿  )r  r¬  rã   rÀ  r‘  )rD   r,   rE  r‡  r¾  Úcollected_outputÚall_tests_were_deselectedrÍ  s           rF   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Ð Ð rG   rY   )r±   r   rý   zTextIO | NonerW   rX   )rW   z,Literal['progress', 'count', 'times', False])rW   rŽ   )rW   rU   )r  zbool | NonerW   rX   )rÁ   rS   rW   rU   )rÔ   rS   r"  rS   r#  rU   rW   rX   r‚  )r)  rS   r*  rS   rW   rX   ©rW   rX   )r:  rS   r  rU   r1  rŽ   r2  rS   r#  rU   rW   rX   )r:  rS   r  rU   r#  rU   rW   rX   )r:  rS   r  rU   rW   rX   )r   zstr | bytesr#  rU   rW   rX   )r   rS   r#  rU   rW   rX   )NN)
rQ  rS   rR  rV   rì   ú
int | Noner#  rU   rW   rX   )rÏ  )rR  rS   rQ  rS   rU  rU   rW   rX   )rŸ   rS   rU  rU   rW   rX   )ra   rS   r\  zSequence[Any]rW   rX   )ra  r   rW   rU   )rg  zwarnings.WarningMessagerÔ   rS   rW   rX   )rk  r   rW   rX   )r\  zSequence[Item]rW   rX   )rÔ   rS   rq  ztuple[str, int | None, str]rW   rX   ©rÏ   r'   rW   rX   )rW   zGenerator[None, object, object]r9  )rÏ   r&   rW   rX   )F)r   rU   rW   rX   ©rß  r(   rW   rX   )rá  zSequence[str | Sequence[str]]rW   rX   )r±   r   rW   r®  )rß  r(   r  zint | ExitCoderW   úGenerator[None])rW   rÊ  )r+  zExceptionInfo[BaseException]rW   rX   )
rÔ   r    r$  rS   rf  rÇ  rr  rS   rW   rS   )rW   rÇ  )r  rS   )ri  rS   rj  rS   rk  rS   rW   rX   )rm  r    rW   zlist[TestReport])rm  r    rW   rX   )r‹  r'   rW   rX   )
ri  rS   rj  rS   ry   rS   rk  rV   rW   rX   )r‹  r%   rW   rX   )rW   ztuple[str, list[str]])r²  rU   rW   rS   )rW   z-tuple[list[tuple[str, dict[str, bool]]], str])r½  rS   rW   z	list[Any])PrZ   r[   r\   rC   r÷   Úpropertyr  r
  rm   rn   r  Úsetterr  r  r  r&  r,  r.  r<  r!  r@  r  rœ   rO  rS  rV  r   r^  rb  ri  rl  rn  rs  r‘  r…  r   r—  rŠ  r†  r   r¹  rÅ  rÈ  rÇ  râ  rÞ  rÝ  rù  r÷  r  r  r,  r.  r  rp  r=  rB  r  rG  r#  r$  r%  ra  rn  rh  rp  r!  r"  rw  r   rg  r  r&  rº  r³  r[  rƒ  r¬  r»  rº  re   rG   rF   r¥   r¥   ƒ  sõ  „ ôBð>1à	5ó1ð8 òó ðð ò#ó ð#ð ò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ó!ó-ðØðØ%@ðà	óóKðZ òFó ðFñ �dÔòó ðó;óz=ó Að ò.ó ð.óAó"ô""ñH �dÔò7ó ð7ð4*Ø2ð*à	ó*óó,-ó,Nñ< �dÔð'Øð'Ø,:ð'à	ò'ó ð'ñR �dÔò(ó ð(ó&Fó-óð ØðØ&)ðØ3=ðØGJðà	óò*òóóTó/ób>ó@ð;Ø ð;Ø-0ð;Ø>Að;à	ó;ó 
ó1ó'óJóLð "&ñ?àð?ð ð?ð
 ð?ð ð?ð 
ó?ó4*ó#ó"0óHn&ó`3ó
óKó;ó2Qð
!à	6ó!ð&!à	6ô!rG   r¥   c                óÀ   — |j                  |j                  «      }|j                  �,|j                  › d| j	                  |j                  d¬«      › �S |j                  S )Nr5  TrÐ  )r6  r„  Úrestr  r#  )Útwr±   r‹  rÔ   s       rF   rš  rš    sS   € ð ×'Ñ'¨¯©Ó/€FØ‡{�{ÐØ—+‘+�˜b §¡¨6¯;©;¸T Ó!BÐ CÐDÐDØ�;‰;ÐrG   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.
    r0  rœ  Nz...r¶   )Úfindr   rH  r  )rH  rŸ   r�  rŸ  ÚellipsisÚformat_widths         rF   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‰ˆà�=‰=˜ÓÐrG   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™   rC  r˜  z - {})r™  r#  rš  r   rF  r@  rS   r1  rÓ   r   r©   rj   rq   rì   rˆ  rA  )r±   r‹  rÏ  Úword_markupr›  rœ  rc   ry  r   Ú
line_widthrŸ   r�  s               rF   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)r@  rF  r�  r  r$   r
   rK   rÍ   rY  rë  r\  )ré   r+   ÚdÚeventr$  rf  rŽ  rØ  r½  rO   Úeventss              rF   r£  r£  L  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Ñ)Õ*ð+à€MrG   rx  rw  rv  )r)   r0   r/   r*   r1   r2   c                óT   — |dvr| |fS |j                  dd«      }| | dk7  r|dz   fS |fS )N)r0   r/   rÃ  r/   rñ  rI   rÇ   )r¾   )r6   Únouns     rF   rÀ  rÀ  v  sD   € àÐ0Ñ0Ø�dˆ{Ðð
 �<‰<˜
 IÓ.€Dà ¨¢
�$˜‘*Ð4Ð4°Ð4Ð4rG   c                ó¢   — g }| D ]G  \  }}|j                   › d|j                  › �}|j                  d«      }||vsŒ7|j                  |«       ŒI |S )NrÓ  zpytest-)Úproject_namerÙ  r¤  rë  )rò  rO   rk  Údistr  s        rF   rð  rð  ƒ  s`   € Ø€FØ"ò  ‰ˆ�à×#Ñ#Ð$ A d§l¡l ^Ð4ˆà× Ñ  Ó+ˆà�vÒØ�M‰M˜$Õð ð €MrG   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.é<   z.2frÇ   )rË  zs (r{  )ÚdatetimeÚ	timedeltarŽ   )rË  Údts     rF   r„  r„  �  sA   € à�‚|Ø˜#�˜aÐ Ð ä×Ñ¬¨G«Ô5ˆØ˜#�˜c "  QÐ'Ð'rG   c                óÀ   — dD ])  \  }}}}| |z  d|› d�›}t        |«      |k  sŒ"d|› |› �c S  t        | «      }|dk  rd|dz  › d|dz  › d�S d|dz  › d	|dz  dz  › d
�S )zQFormat the given seconds in a human readable manner to show in the test progress.))é@B ÚusrÒ  rJ  )ré  rê  rC  r¨  )ré  rê  rI   éè  )rë  ÚmsrÒ  rJ  )rë  rì  rC  r¨  )rë  rì  rI   rë  )rI   rÇ   rÒ  rä  rÆ   r¬  r™   i  rä  zm rÇ   zh Úm)ÚfloatÚround)rË  ÚscaleÚunitÚ	precisionÚlimitrŠ  Úwhole_secondss          rF   r«  r«  ™  s«   € ð*ò $Ñ%ˆˆt�Y ð ˜E‘/ ! I ;¨a Ð0ˆÜ�‹;˜ÓØ�t�f˜T˜FÐ#Ò#ð$ô ˜'“N€MØ�tÒØ�= BÑ&Ð' r¨-¸"Ñ*<Ð)=¸QÐ?Ð?Øˆ} Ñ$Ð% R¨¸Ñ)=À"Ñ(DÐ'EÀQÐGÐGrG   c                ó   — t        | d«      r| j                  }|j                  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.
    ru  zreason: r¢  NÚSkippedr¶   )	r‚  ru  r¤  r+   rF  r@  r�  Ú
startswithr  )rÏ   rŽ  r¿  s      rF   r‡  r‡  ±  s–   € ô
 ˆv�zÔ"Ø—‘ˆØ×$Ñ$ ZÓ0ˆØˆà�~Š~Ðˆ~Ü˜&Ÿ/™/¬5Ô1Ð1Ð1Ø—‘‰ˆˆ1ˆfØ×Ñ˜[Ô)ØœC Ó,Ð.Ð/ˆFð ˆð �yÒ ØˆFØˆrG   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)rD   Útrs     rF   rC   zTerminalProgressPlugin.__init__Ð  s   € ØˆŒØ(,ˆŒØ"ˆÕrG   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\r0   z]9;4;2;z
]9;4;2;\Úindeterminatez
]9;4;3;\Úpausedz]9;4;4;z
]9;4;4;\Tr=  )rû  r@  )rD   Ústater5   Úsequences       rF   Ú_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ÐÕ0rG   c                ó4   — || _         | j                  d«       y )Nr  )rä   r  )rD   rß  s     rF   râ  z*TerminalProgressPlugin.pytest_sessionstartû  s   € àˆŒà×Ñ˜OÕ,rG   c                óx   — | j                   €J ‚| j                   j                  dkD  r| j                  dd«       y y )Nr   r   )rä   r“  r  r	  s    rF   rù  z/TerminalProgressPlugin.pytest_collection_finish  s9   € à�}‰}Ð(Ð(Ð(Ø�=‰=×'Ñ'¨!Ò+à×Ñ ¨!Õ,ð ,rG   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 )NTr—  r   r¨  r0   r   )	r)   rü  rÍ   rä   r“  rû  r  Úminr  )rD   rÏ   r¯  Úreportedr5   s        rF   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ð rG   c                ó&   — | j                  d«       y )Nrÿ  )r  r	  s    rF   r  z+TerminalProgressPlugin.pytest_sessionfinish  s   € à×Ñ˜HÕ%rG   )rý  r¥   rW   rX   rY   )r  z?Literal['remove', 'normal', 'error', 'indeterminate', 'paused']r5   rÇ  rW   rX   rÉ  rÆ  rÈ  )rZ   r[   r\   r]   rC   r  r   râ  rù  r‘  r  re   rG   rF   rù  rù  Å  s…   „ ñó#ð  $ð$1àNð$1ð ð$1ð 
ó	$1ðL ò-ó ð-ð
 ò-ó ð-ð òWó ðWð  ò&ó ñ&rG   rù  )rM   r   rW   rX   )r±   r   rW   rX   )r±   r   rW   rS   )rÏ   r%   rW   ztuple[str, str, str])rÏ  r   r±   r   r‹  r%   rW   rS   )rH  rS   rŸ   rS   r�  rŽ   rW   rV   )
r±   r   r‹  r%   rÏ  r   rÕ  zdict[str, bool]rW   rS   )ré   r
   r+   zSequence[CollectReport]rW   z&list[tuple[int, str, int | None, str]])r6   rŽ   rß  rS   rW   ztuple[int, str])rW   r®  )rË  rî  rW   rS   )rÏ   r'   rW   rS   )_r]   Ú
__future__r   ÚargparseÚcollectionsr   Úcollections.abcr   r   r   r   Údataclassesrå  Ú	functoolsr	   r  Úpathlibr
   r¯   r¦   r8  Ú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.deprecatedr   Ú_pytest.nodeidr    Ú_pytest.nodesr!   r"   Ú_pytest.pathlibr#   r$   Ú_pytest.reportsr%   r&   r'   Ú_pytest.mainr(   rÌ  rµ  r�   r‘   ÚActionr:   r`   r•   r²   rÂ   rÐ   Ú	dataclassrÒ   r¥   rš  rˆ  r“  r£  r‘  r’  rÀ  rð  r„  r«  r‡  rù  re   rG   rF   ú<module>r#     s
  ðñõ
 #ã Ý Ý $Ý %Ý #Ý $Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý Ý 'Ý ,Ý &Ý (Û Ý (Ý (Ý !Ý #Ý #Ý ,Ý 8Ý !Ý Ý Ý (Ý 'Ý &Ý )Ý &ñ Ý$ð  #Ð ð€ð Ð àØLñÐ ô
"=�h—o‘oô "=ôJ/˜ô /ó(Xóv?ó&ñ2 
�$Ôò,ó ð,ð ×Ñ÷ð ó ðð8 ÷!ð !ó ð!ðD$ØðØ &ðØ-7ðàóóð2!Øð!Ø#ð!Ø)7ð!ØFUð!àó!ðHØðà$ðð ,óð@ ØØØØØñ€ð #Ð ó
5ó
ó(óHó0÷(V&ò V&rG   