ó
    ùÞ jÑÿ  ã                  ó�  • S r SSKJr  SSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  SSKJ
r
  SSKrSSKrSS	KJr  SSKrSS
KJr  SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJ r   SSKJ!r!  SSKJ"r"  SSK#J$r$  SSK%J&r&  SSK'J(r(  SSK)J*r*  SSK+rSSK,J-r-  SSK.J/r/  SSK.J0r0  SSK.J1r1  SSK.J2r2  SSK3J4r4  SSK5J6r6  SS K5J7r7  SS!K8J9r9  SS"K8J:r:  SS#K;J<r<  SS$K;J=r=  SS%K;J>r>  \(       a  SS&K?J@r@  S'rAS(rBS)rC " S* S+\Rˆ                  5      rE " S, S-\5      rFSGS. jrGSHS/ jrHSIS0 jrI\2" S1S29SJS3 j5       rJ\R–                   " S4 S55      5       rL\ " S6 S75      5       rMSKS8 jrNSLS9 jrO          SMS: jrP      SNS; jrQS<S<S=S>S>S<S?.rRS=rSSOS@ jrTSPSA jrUSQSB jrVSQSC jrWSRSD jrX " SE SF5      rYg)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                  ór   ^ • \ rS rSrSr   S           SU 4S jjjr S         S	S jjrSrU =r$ )
ÚMoreQuietActionéP   z›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           	     ó*   >• [         TU ]  UUSUUUS9  g )Nr   )Úoption_stringsÚdestÚnargsÚdefaultÚrequiredÚhelp)ÚsuperÚ__init__)Úselfr6   r7   r9   r:   r;   Ú	__class__s         €ÚJ/var/www/html/gaurav/venv/lib/python3.13/site-packages/_pytest/terminal.pyr=   ÚMoreQuietAction.__init__W   s)   ø€ ô 	‰ÑØ)ØØØØØð 	ò 	
ó    c                óŒ   • [        X R                  S5      S-
  n[        X R                  U5        [        USS5      S-   Ul        g )Nr   é   Úquiet)Úgetattrr7   ÚsetattrrE   )r>   ÚparserÚ	namespaceÚvaluesÚoption_stringÚ	new_counts         r@   Ú__call__ÚMoreQuietAction.__call__h   s<   € ô ˜I§y¡y°!Ó4°qÑ8ˆ	Ü�	Ÿ9™9 iÔ0ä! )¨W°aÓ8¸1Ñ<ˆ	�rB   © )NFN)r6   zSequence[str]r7   Ústrr9   Úobjectr:   Úboolr;   ú
str | NoneÚreturnÚNone©N)
rH   zargparse.ArgumentParserrI   zargparse.NamespacerJ   zstr | Sequence[object] | NonerK   rS   rT   rU   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r=   rM   Ú__static_attributes__Ú__classcell__)r?   s   @r@   r3   r3   P   s–   ø† ñð ØØð
à%ð
ð ð
ð ð	
ð
 ð
ð ð
ð 
÷
ð 
ð, %)ð
=à'ð
=ð &ð
=ð .ð	
=ð
 "ð
=ð 
÷
=ó 
=rB   r3   c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
ÚTestShortLogReportéu   u#  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.
rP   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordrO   N)rW   rX   rY   rZ   r[   Ú__annotations__r\   rO   rB   r@   r_   r_   u   s   ‡ ñð ƒMØƒKØ
.Ö.rB   r_   c           
     óP  • U R                  SSSS9nUR                  SSSSS	S
S9  UR                  SSSSSS9  UR                  SSSSSS9  UR                  SSSSSS9  UR                  SSSSSS9  UR                  SS[        SS	SS9  UR                  S S	[        SS!S"9  UR                  S#S$S%S&[
        S'S(S)9  UR                  S*S+SS,SS-S.9  UR                  S/S0SS1SS2S9  UR                  S3SS1S4S59  UR                  S6S7S%S8S9/ S:QS;S<9  UR                  S=SS>SS?S9  UR                  S@S%SA/ SBQSCSDSE9  UR                  SFSGSSSHSI9  UR                  SJSKS%SKS9/ SLQSMS<9  UR                  SNSOSOSP/SQSR9  U R                  SSSTSUSV9  [        R                  " U [        R                  SWSX9  g )YNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr9   r7   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.)rk   r7   r9   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.)r7   Útyper9   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').)rk   r7   r9   Úmetavarr;   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r9   r7   rk   r;   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))rk   r7   r;   z--tbÚstyleÚtbstyleÚauto)r{   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rv   rk   r7   r9   Úchoicesr;   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   r7   r�   r9   r;   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))rk   r9   r;   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.)r9   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;   r9   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)rH   Ú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ó	rB   c                ó–  ^• [        U [        R                  5      mU R                  R	                  TS5        U R
                  R                  (       d  U R
                  R                  (       a,  U4S jnU R                  R                  R                  SU5        [        R                  S:X  a  U R                  R                  S5        g g )NÚterminalreporterc                ól   >• SR                  [        [        U5      5      nTR                  SU-   5        g )NÚ z[traceconfig] )ÚjoinÚmaprP   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €r@   ÚmywriterÚ"pytest_configure.<locals>.mywriter(  s+   ø€ Ø—(‘(œ3œs D›>Ó*ˆCØ×ÑÐ 0°3Ñ 6Õ7rB   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ÓØ×Ñ×*Ñ*Ð+=Õ>ð rB   c                ó‚  • U R                   R                  nSS1nSnU HA  nXB;   a  UR                  5       nUS:X  a  SnM"  US:X  a  SnM,  US:X  a  SnM6  XC;  d  M=  X4-  nMC     U R                   R                  (       d  S	U;  a  S	U-   nU$ U R                   R                  (       a  S	U;   a  UR	                  S	S5      nU$ )
NÚFÚSÚ ÚaÚsxXEfÚAÚPpsxXEfÚNÚw)r©   rt   Úlowerrw   Úreplace)r±   rt   Ú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ˆ
àÐrB   T©Útrylastc                óÄ   • SnU R                   (       a  SnOU R                  (       a  SnU R                  nU R                  S;   a
  US:X  a  SnSnX!UR	                  5       4$ )Nr´   Ú.Ús)ÚcollectÚsetupÚteardownr'   r.   ÚE)r(   r)   ÚoutcomeÚwhenÚupper)Úreportrb   rÌ   s      r@   Úpytest_report_teststatusrÐ   M  sW   € à€FØ‡}‡}Ø‰Ø	��Øˆà—>‘>€GØ‡{�{Ð6Ó6¸7ÀhÓ;NØˆØˆà˜GŸM™M›OÐ+Ð+rB   c                  óX   • \ rS rSr% SrS\S'   SrS\S'   SrS\S	'   S
rS\S'   SS jr	Sr
g)ÚWarningReporti]  aS  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``).
rP   ÚmessageNrS   Únodeidztuple[str, int] | NoneÚ
fslocationTr   Úcount_towards_summaryc                óÜ   • U R                   (       a  U R                   $ U R                  (       a>  U R                  u  p#[        UR                  R                  [        U5      5      nU SU 3$ g)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_locationÚWarningReport.get_locationo  sW   € à�;�;Ø—;‘;ÐØ�?�?Ø $§¡ÑˆHÜ! &×":Ñ":×">Ñ">ÄÈXÓ@VÓWˆGØ�Y˜a ˜yÐ)Ð)ØrB   rO   )r±   r   rT   rS   )rW   rX   rY   rZ   r[   rd   rÔ   rÕ   rÖ   rÞ   r\   rO   rB   r@   rÒ   rÒ   ]  s3   ‡ ñð ƒLØ€FˆJÓØ)-€JÐ&Ó-à&*Ð˜8Ó*÷rB   rÒ   c                  óŒ  • \ rS rSrSXSYS jjr  SZS jr\S[S j5       r\S\S j5       r\S\S j5       r	\S\S j5       r
\S\S	 j5       r\R                  S]S
 j5       r\S\S j5       r\S[S j5       rS^S jrS_S jrS`SaS jjrSbS jrSSSS.           ScS jjrSS.SdS jjrSS.SeS jjrSbS jrSfS jrSgS jr  Sh         SiS jjrSjSkS jjrSlS jrSmS jrSnS  jr      SoS! jrSpS" jrSqS# jr       SrS$ jr!SsS% jr"\S\S& j5       r#\$" S'S(9StS) j5       r%SuS* jr&SbS+ jr'SbS, jr(\S[S- j5       r)SbS. jr*SvS/ jr+SwSxS0 jjr,\$" S'S19SyS2 j5       r-    SzS3 jr.S{S4 jr/SyS5 jr0SqS6 jr1\$" S'S(9      S|S7 j5       r2\$" S'S(9S}S8 j5       r3S~S9 jr4SbS: jr5SbS; jr6          SS< jr7S= r8S> r9S€S? jr:S�S@ jr;SbSA jr<SbSB jr=SbSC jr>        S‚SD jr?SƒSE jr@S„SF jrAS…SG jrBSbSH jrCSbSI jrDSSJ.         S†SK jjrESbSL jrFS‡SM jrGSbSN jrHSbSO jrISˆSP jrJS‰SQ jrKSbSR jrLSŠSS jrMS‹ST jrN  SŠSU jrO  SŠSV jrPSWrQg)Œr¥   iz  Nc                óà  • SS K nXl        SU l        S U l        S U l        0 U l        S U l        S U l        UR                  R                  U l
        Uc  [        R                  nUR                  R                  X5      U l        U R                  R                  U l        S U l        [%        U5      U l        UR(                  R*                  U l        U R                  R.                  U l        [0        R2                  " UR5                  5       5      U l        [7        5       U l        [7        5       U l        U R=                  5       U l        [@        RB                  " 5       U l"        S U l#        S U l$        g ©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Ú_determine_show_progress_infoÚ_show_progress_infor   ÚInstantÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)r>   r±   ÚfileÚ_pytests       r@   r=   Ú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ˆÕ$rB   c                ó(  • U R                   R                  SS5      S:X  a   U R                   R                  S5      S:w  a  gU R                   R                  SS5      (       a  gU R                   R                  S5      nUS;   a  gUS	:X  a  g	US
:X  a  g
g)zRReturn whether we should display progress information based on the current config.Úcapturer~   rŠ   úprogress-even-when-capture-noFÚ	setupshow>   r‹   r  r‹   ri   Útimes)r±   Ú	getoptionÚgetini)r>   Úcfgs     r@   r÷   Ú.TerminalReporter._determine_show_progress_infoš  s�   € ð �K‰K×!Ñ! )¨TÓ2°dÓ:Ø—‘×"Ñ"Ð#9Ó:Ø.ó/ð à�;‰;× Ñ  ¨e×4Ñ4ØØ—;‘;×%Ñ%Ð&<Ó=ˆØÐ?Ó?ØØ�G‹^ØØ�G‹^ØàrB   c                óF   • U R                   R                  R                  nU$ rV   )r±   r©   rj   )r>   Ú	verbositys     r@   r
  ÚTerminalReporter.verbosity³  s   € àŸ™×+Ñ+×3Ñ3ˆ	ØÐrB   c                ó    • U R                   S:¬  $ râ   )r
  ©r>   s    r@   Ú
showheaderÚTerminalReporter.showheader¸  s   € à�~‰~ Ñ"Ð"rB   c                óT   • [        U R                  R                  R                  5      $ rV   )rR   r±   r©   rm   r  s    r@   rm   ÚTerminalReporter.no_header¼  s   € ä�D—K‘K×&Ñ&×0Ñ0Ó1Ð1rB   c                óT   • [        U R                  R                  R                  5      $ rV   )rR   r±   r©   rn   r  s    r@   rn   ÚTerminalReporter.no_summaryÀ  s   € ä�D—K‘K×&Ñ&×1Ñ1Ó2Ð2rB   c                óŒ   • U R                   c,  U R                  R                  [        R                  5      S:¬  $ U R                   $ râ   )ræ   r±   Úget_verbosityr   r“   r  s    r@   Ú
showfspathÚTerminalReporter.showfspathÄ  s:   € à×ÑÑ#Ø—;‘;×,Ñ,¬V×-HÑ-HÓIÈQÑNÐNØ×ÑÐrB   c                ó   • Xl         g rV   )ræ   )r>   Úvalues     r@   r  r  Ê  s   € à ÕrB   c                óZ   • U R                   R                  [        R                  5      S:„  $ râ   )r±   r  r   r“   r  s    r@   ÚshowlongtestinfoÚ!TerminalReporter.showlongtestinfoÎ  s"   € à�{‰{×(Ñ(¬×)DÑ)DÓEÈÑIÐIrB   c                ó,   • [        U R                  5      $ )zEThe amount of items reported in the progress so far.

:meta private:
)Úlenrõ   r  s    r@   Úreported_progressÚ"TerminalReporter.reported_progressÒ  s   € ô �4×2Ñ2Ó3Ð3rB   c                óF   • SSS.R                  X5      nXR                  ;   $ )NÚxrÇ   )r+   r)   )Úgetrt   )r>   rÁ   s     r@   ÚhasoptÚTerminalReporter.hasoptÚ  s&   € Ø¨3Ñ/×3Ñ3°DÓ?ˆØ×'Ñ'Ñ'Ð'rB   c                óÒ  • U R                   R                  UR                  SSS9S   -  nU R                  b  X@R                  :w  a‚  U R                  b!  U R                  (       a  U R                  5         X@l        [        U R                  U5      nU R                  R                  5         U R                  R                  US-   5        U R                  R                  " U4SS0UD6  g )Nú::rD   ©Úmaxsplitr   r™   ÚflushT)r±   ÚrootpathÚsplitrï   rø   Ú)_write_progress_information_filling_spacer"   rê   rì   r   Úwrite)r>   rÔ   ÚresÚmarkupÚfspathÚ	relfspaths         r@   Úwrite_fspath_resultÚ$TerminalReporter.write_fspath_resultÞ  s°   € Ø—‘×%Ñ%¨¯©°TÀA¨Ð(FÀqÑ(IÑIˆØ×ÑÑ%¨×3EÑ3EÓ)EØ×!Ñ!Ñ-°$×2J×2JØ×>Ñ>Ô@Ø!'ÔÜ# D§N¡N°FÓ;ˆIØ�H‰H�M‰MŒOØ�H‰H�N‰N˜9 s™?Ô+Ø�‰�Š�sÑ1 $Ð1¨&Ó1rB   c                óò   • U R                   U:w  a;  U R                  R                  5         Xl         U R                  R                  U5        U(       a%  U R                  R                  " U40 UD6  SU l         g g )Néþÿÿÿ)rï   rì   r   r.  )r>   ÚprefixÚextraÚkwargss       r@   Úwrite_ensure_prefixÚ$TerminalReporter.write_ensure_prefixé  sX   € Ø×Ñ Ó'Ø�H‰H�M‰MŒOØ!'ÔØ�H‰H�N‰N˜6Ô"ÞØ�H‰H�NŠN˜5Ñ+ FÒ+Ø!#ˆDÕð rB   c                ój   • U R                   (       a"  U R                  R                  5         S U l         g g rV   )rï   rì   r   r  s    r@   Úensure_newlineÚTerminalReporter.ensure_newlineò  s%   € Ø××Ø�H‰H�M‰MŒOØ!%ˆDÕð rB   Fé   Ú
)r*  ÚmarginÚline_sepc          	     óè   • U R                   R                  nUR                  [        R                  " SU-  U-   U R
                  U-
  SSS95      nXvS nU R                   R                  " U4SU0UD6  g)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*  rA  rB  r0  rG  Úwrappeds           r@   Ú
wrap_writeÚTerminalReporter.wrap_write÷  sw   € ð !%§¡× >Ñ >ÐØ—-‘-Ü�MŠMØÐ+Ñ+¨gÑ5Ø×(Ñ(¨6Ñ1Ø $Ø#(ñ	ó
ˆð Ð0Ð1ˆØ�‰�Š�wÑ6 eÐ6¨vÓ6rB   ©r*  c               óB   • U R                   R                  " U4SU0UD6  g )Nr*  )rì   r.  )r>   rJ  r*  r0  s       r@   r.  ÚTerminalReporter.write  s   € Ø�‰�Š�wÑ6 eÐ6¨vÓ6rB   c               ó6   • U R                   R                  XS9  g )NrN  )rì   Ú	write_raw)r>   rJ  r*  s      r@   rR  ÚTerminalReporter.write_raw  s   € Ø�‰×Ñ˜7ÐÒ0rB   c                ó8   • U R                   R                  5         g rV   )rì   r*  r  s    r@   r*  ÚTerminalReporter.flush  s   € Ø�‰�‰ÕrB   c                óœ   • [        U[        5      (       d
  [        USS9nU R                  5         U R                  R                  " U40 UD6  g )Nr¾   )Úerrors)Ú
isinstancerP   r=  rì   r   )r>   r   r0  s      r@   rœ   ÚTerminalReporter.write_line  s<   € Ü˜$¤×$Ñ$Ü�t IÑ.ˆDØ×ÑÔØ�‰�Š�dÑ%˜fÓ%rB   c                óì   • UR                  SS5      nU(       a+  U R                  R                  [        U5      -
  S-
  nSU-  nOSn[	        U5      nU R                  R
                  " SU-   U-   40 UD6  g)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.
ÚeraseFrD   r™   r¶   ÚN)Úpoprì   rí   r  rP   r.  )r>   r   r0  r[  Ú
fill_countÚfills         r@   ÚrewriteÚTerminalReporter.rewrite  sj   € ð —
‘
˜7 EÓ*ˆÞØŸ™×+Ñ+¬c°$«iÑ7¸!Ñ;ˆJØ˜Ñ#‰DàˆDÜ�4‹yˆØ�‰�Š�t˜d‘{ TÑ)Ñ4¨VÓ4rB   c                ó`   • U R                  5         U R                  R                  " XU40 UD6  g rV   )r=  rì   Úsep)r>   rc  Útitlerí   r0  s        r@   Ú	write_sepÚTerminalReporter.write_sep.  s'   € ð 	×ÑÔØ�‰�Š�S Ñ5¨fÓ5rB   c                ó>   • U R                   R                  " X!40 UD6  g rV   )rì   rc  )r>   rd  rc  Úkws       r@   ÚsectionÚTerminalReporter.section8  s   € Ø�‰�Š�SÑ& 2Ó&rB   c                ó>   • U R                   R                  " U40 UD6  g rV   )rì   r   )r>   rŸ   rh  s      r@   r   ÚTerminalReporter.line;  s   € Ø�‰�Š�cÑ ˜RÓ rB   c                ó¦   • XR                   ;  nU R                   R                  U/ 5      R                  U5        U(       a  U R                  5         g g rV   )rç   Ú
setdefaultÚextendÚ_set_main_color)r>   ra   ÚitemsÚset_main_colors       r@   Ú
_add_statsÚTerminalReporter._add_stats>  sA   € Ø!¯©Ñ3ˆØ�
‰
×Ñ˜h¨Ó+×2Ñ2°5Ô9ÞØ× Ñ Õ"ð rB   c                ón   • [        U5      R                  S5       H  nU R                  SU-   5        M     g)Nr@  zINTERNALERROR> T)rP   r,  rœ   )r>   Úexcreprr   s      r@   Úpytest_internalerrorÚ%TerminalReporter.pytest_internalerrorD  s0   € Ü˜“L×&Ñ& tÖ,ˆDØ�O‰OÐ-°Ñ4Ö5ñ -àrB   c                óŠ   • SSK Jn  UR                  UR                  4nU" U5      n[	        XEUS9nU R                  SU/5        g )Nr   )Úwarning_record_to_str)rÕ   rÓ   rÔ   r-   )Ú_pytest.warningsrz  rÛ   ÚlinenorÒ   rs  )r>   Úwarning_messagerÔ   rz  rÕ   rÓ   Úwarning_reports          r@   Úpytest_warning_recordedÚ(TerminalReporter.pytest_warning_recordedI  sI   € õ
 	;à$×-Ñ-¨×/EÑ/EÐEˆ
Ù'¨Ó8ˆä&Ø!¸6ñ
ˆð 	�‰˜
 ^Ð$4Õ5rB   c                ó|   • U R                   R                  R                  (       a  SU 3nU R                  U5        g g )NzPLUGIN registered: )r±   r©   r«   rœ   )r>   ÚpluginrŸ   s      r@   Úpytest_plugin_registeredÚ)TerminalReporter.pytest_plugin_registeredX  s4   € Ø�;‰;×Ñ×)×)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *rB   c                ó(   • U R                  SU5        g )Nr*   )rs  )r>   rq  s     r@   Úpytest_deselectedÚ"TerminalReporter.pytest_deselected`  s   € Ø�‰˜ eÕ,rB   c                ó  • Uu  p4nU R                   (       a5  U R                  XXE5      nU R                  US5        U R                  5         g U R                  (       a#  U R                  US5        U R                  5         g g )Nr¶   )r  Ú_locationliner:  r*  r  r3  )r>   rÔ   Úlocationr1  r|  Údomainr   s          r@   Úpytest_runtest_logstartÚ(TerminalReporter.pytest_runtest_logstartc  si   € ð "*Ñˆ˜ð × × Ø×%Ñ% f°fÓEˆDØ×$Ñ$ T¨2Ô.Ø�J‰J�LØ�_�_Ø×$Ñ$ V¨RÔ0Ø�J‰J�Lð rB   c                óÄ  • SU l         Un[        U R                  R                  R	                  X R                  S96 nUR
                  UR                  UR                  pen[        U[        5      (       d  S nOUu  pgU R                  XB/5        U(       d  U(       d  g Uct  [        US5      nUR                  (       a  U(       d  SS0nOKUR                  (       a  U(       a  SS0nO.UR                  (       a  SS0nOUR                  (       a  SS0nO0 nU R                  R!                  UR"                  5        U R                  R%                  [&        R(                  5      S::  aQ  U R*                  R,                  " U40 UD6  U R.                  (       a!  U R0                  (       d  U R3                  5         GOU R4                  " UR"                  /UR6                  Q76 n	[        US5      n
U
(       dù  U R8                  " X–40 UD6  UR                  (       d  [        US5      (       a¢  [;        U5      nU R                  R%                  [&        R(                  5      S	:  aI  U R*                  R<                  U R*                  R>                  -
  [A        S
5      -
  S-
  n[C        SX¼5      nOSU S3nU(       a  Ub  U RE                  U5        U R.                  (       a  U RG                  5         OçU RI                  5         U R*                  R-                  SURJ                  RL                  RN                   S35        U R.                  (       a,  U R*                  R-                  U RQ                  5       S-   SS9  OU R*                  R-                  S5        U R*                  R,                  " U40 UD6  U R*                  R-                  SU	-   5        SU l)        U RU                  5         g )NT)rÏ   r±   ÚwasxfailÚgreenÚyellowÚredr   Únodeé   ú [100%]rD   z ({})z (Ú)Ú[Ú]r™   )Úcyanr6  )+Ú
_tests_ranr_   r±   ÚhookrÐ   ra   rb   rc   rX  Útuplers  Úhasattrr(   r'   r)   rõ   ÚaddrÔ   r  r   r“   rì   r.  rø   Ú_is_last_itemÚ(_write_progress_information_if_past_edger‰  rŠ  r:  Ú_get_raw_skip_reasonrí   rG  r  Ú_format_trimmedrL  r-  r=  r“  ÚgatewayÚidÚ!_get_progress_information_messagerï   r*  )r>   rÏ   Úrepr/  ra   rb   rc   r0  Ú	was_xfailr   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 r@   Úpytest_runtest_logreportÚ)TerminalReporter.pytest_runtest_logreportq  sõ  € ØˆŒØˆä Ø�[‰[×Ñ×6Ñ6¸cÏ+É+Ð6ÐVð
ˆð "%§¡¨s¯z©z¸3¿8¹8˜$ˆÜ˜$¤×&Ñ&Ø‰Fà‰LˆDØ�‰˜ %Ô(ÞždàØ‰>Ü ¨
Ó3ˆIØ�z�z¦)Ø! 4˜‘Ø——¦	Ø" DÐ)‘Ø——Ø ˜‘Ø——Ø" DÐ)‘à�Ø×'Ñ'×+Ñ+¨C¯J©JÔ7Ø�;‰;×$Ñ$¤V×%@Ñ%@ÓAÀQÓFØ�H‰H�NŠN˜6Ñ, VÒ,ð ×'×'°×0B×0BØ×=Ñ=Ô?ùà×%Ò% c§j¡jÐ@°3·<±<Ò@ˆDÜ# C¨Ó0ˆMÞ Ø×(Ò(¨Ñ>°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Ô*Ø%'�Ô"Ø�
‰
�rB   c                óf   • U R                   c   eU R                  U R                   R                  :H  $ rV   )rå   r  Útestscollectedr  s    r@   rŸ  ÚTerminalReporter._is_last_item½  s-   € à�}‰}Ñ(Ð(Ð(Ø×%Ñ%¨¯©×)EÑ)EÑEÐErB   T)Úwrapperc              #  óÔ   #   • S v •nU R                   R                  [        R                  5      S::  a2  U R                  (       a!  U R
                  (       a  U R                  5         U$ 7frâ   )r±   r  r   r“   rø   r  r-  )r>   Úresults     r@   Úpytest_runtestloopÚ#TerminalReporter.pytest_runtestloopÂ  sL   é € âˆð �K‰K×%Ñ%¤f×&AÑ&AÓBÀaÓGØ×(×(Ø×&×&à×:Ñ:Ô<àˆùs   ‚A&A(c                ó,  ^• U R                   (       d   eU R                   R                  nU R                  S:X  aK  U(       a;  U R                  nS[	        [        U5      5       S3nSU S3nUR                  X!5      $ SU SU S3$ U R                  S	:X  Ga[  U(       d  g
U R                  S5      U R                  S5      -   U R                  S5      -   U R                  S5      -   U R                  S5      -   U R                  S5      -   U R                  S
5      -   nUS   R                  S   mU Vs/ sH   ofR                  U R                  ;  d  M  UPM"     nn[        U4S jU R                   R                   5       5      n[        U4S jU 5       5      n	X˜:H  n
U R                  (       d  U
(       a=  U R                  R                  S U 5       5        [        [        S U 5       5      5      $ g
U(       a  SU R                  S-  U-  S S3$ gs  snf )Nri   z{:zd}ú [z/{}]z [ ú / z ]r  r¶   r(   r,   r'   r+   r)   r.   éÿÿÿÿr   c              3  óD   >#   • U H  oR                   S    T:H  v •  M     g7f)r   N)rŠ  )Ú.0ÚiÚcurrent_locations     €r@   Ú	<genexpr>ÚETerminalReporter._get_progress_information_message.<locals>.<genexpr>ê  s!   øé € ð "Ù;N°a—
‘
˜1‘Ð!1Ö1Ò;Nùs   ƒ c              3  ój   >#   • U H)  nUR                   S    T:X  d  M  UR                  S:H  v •  M+     g7f)r   rÉ   N)rŠ  rÍ   )r»  Úrr½  s     €r@   r¾  r¿  í  s4   øé € ð "á%�AØ—:‘:˜a‘=Ð$4Ñ4ó "�—‘˜'Ö!Ú%ùs   ƒ3�3c              3  ó6   #   • U H  oR                   v •  M     g 7frV   )rÔ   ©r»  rÁ  s     r@   r¾  r¿  ô  s   é € Ð4TÁ|À!·X¶XÂ|ùs   ‚c              3  óf   #   • U H(  n[        U[        5      (       d  M  UR                  v •  M*     g 7frV   )rX  r%   ÚdurationrÃ  s     r@   r¾  r¿  ö  s   é € ÐV©L q¼JÀqÌ*×<U›
˜Ÿ
ž
ªLùs   ‚1ž1éd   Ú3dz%]r•  )rå   r¯  rø   r  r  rP   ÚformatÚ_get_reports_to_displayrŠ  rÔ   rö   Úsumrq  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¥  Ú2TerminalReporter._get_progress_information_messageÐ  s"  ø€ Ø�}�}Ðˆ}Ø—M‘M×0Ñ0ˆ	Ø×#Ñ# wÓ.ÞØ×1Ñ1�Ø#&¤s¬3¨y«>Ó':Ð&;¸3Ð!?�Ø"$ ^Ð$4°FÐ ;�Ø$×+Ñ+¨HÓ@Ð@Ø˜˜ 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¸Ñ:Ðá&óÙ&�a¯(©(¸$×:WÑ:WÑ*W—™;ð ð ô "ô "Ø;?¿=¹=×;NÒ;Nó"ó ˆOô "ô "á%ó"ó ˆOð
 -Ñ?ˆNØ×$×$®Ø×-Ñ-×4Ñ4Ñ4TÁ|Ó4TÔTÜ+ÜÑV©LÓVÓVóð ð ÞØ˜×.Ñ.°Ñ4¸	ÑAÀ"ÐEÀRÐHÐHØùò)s   Ä2HÅHc                óÂ  • U R                   nU R                  S:X  a<  U R                  (       d   eU R                  R                  n[	        SU SU S35      nO'U R                  S:X  a  [	        S5      nO[	        S5      nX-   S-   U R
                  :¬  nU(       aE  U R                  5       u  pVU R                  5       nU R                  R                  " US	-   40 US
0D6  g g )Nri   r·  Ú/r˜  r  z 99h 59mr•  rD   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   Ú9TerminalReporter._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Ø�H‰H�NŠN˜3 ™:Ñ<¨*°dÐ);Ó<ð rB   c                óä   • U R                  5       u  pU R                  5       nU R                  nU R                  R                  U-
  S-
  nU R
                  " UR                  U5      4SS0US0D6  g )NrD   r*  T)rÙ  r¥  rØ  rì   rí   r.  Úrjust)r>   rˆ   rÞ  rŸ   r¼   r_  s         r@   r-  Ú:TerminalReporter._write_progress_information_filling_space  sf   € Ø×'Ñ'Ó)‰ˆØ×4Ñ4Ó6ˆØ×'Ñ'ˆØ�x‰x×!Ñ! AÑ%¨Ñ)ˆØ�
Š
�3—9‘9˜T“?Ñ@¨$Ð@°5¸$°-Ó@rB   c                ó.   • U R                   R                  $ )z%Return the width of the current line.)rì   rG  r  s    r@   rØ  Ú'TerminalReporter._width_of_current_line  s   € ð �x‰x×-Ñ-Ð-rB   c                ó  • U R                  5       (       a7  U R                  R                  R                  S:¼  a  U R	                  SSSS9  g g U R                  R                  R                  S:¼  a  U R	                  SSSS9  g g )Nr   zcollecting ... T)r*  ÚboldrD   )ró   r±   r©   rj   r.  r  s    r@   Úpytest_collectionÚ"TerminalReporter.pytest_collection  sm   € Ø�;‰;�=‰=Ø�{‰{×!Ñ!×)Ñ)¨QÓ.Ø—
‘
Ð,°D¸t�
ÒDð /à�[‰[×Ñ×'Ñ'¨1Ó,Ø�J‰JÐ(°¸4ˆJÒ@ð -rB   c                óŒ  • UR                   (       a  U R                  SU/5        O$UR                  (       a  U R                  SU/5        UR                   Vs/ sH  n[	        U[
        5      (       d  M  UPM     nnU =R                  [        U5      -  sl        U R                  5       (       a  U R                  5         g g s  snf )Nr.   r)   )
r'   rs  r)   r³  rX  r   rä   r  ró   Úreport_collect)r>   rÏ   r"  rq  s       r@   Úpytest_collectreportÚ%TerminalReporter.pytest_collectreport   sˆ   € Ø�=�=Ø�O‰O˜G f XÕ.Ø�^�^Ø�O‰O˜I¨ xÔ0Ø"ŸMšMÓA™M�q¬Z¸¼4×-@—™MˆÐAØ×Òœc %›jÑ(ÕØ�;‰;�=‰=Ø×ÑÕ!ð ùò Bs   ÁCÁ4Cc                ó¤  • U R                   R                  R                  S:  a  g U(       dG  U R                  R	                  5       R
                  [        :  a  g [        R                  " 5       U l        [        U R                  R                  S/ 5      5      n[        U R                  R                  S/ 5      5      n[        U R                  R                  S/ 5      5      nU R                  U-
  nU(       a  SOSnU[        U R                  5      S-   U R                  S:X  a  S	OS
-   -  nU(       a  USU SUS:w  a  S
OS	 3-  nU(       a	  USU S3-  nU(       a	  USU S3-  nU R                  U:”  a	  USU S3-  nU R                  5       (       a+  U R                  USSS9  U(       a  U R!                  S5        g g U R#                  U5        g )Nr   r.   r)   r*   z
collected zcollecting z itemrD   r¶   rÇ   r¸  z errorz deselectedz skippedz	 selectedT)ræ  r[  r@  )r±   r©   rj   rú   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rù   r  rç   r#  rä   rP   ró   r`  r.  rœ   )r>   r   rW  r)   r*   Úselectedr   s          r@   rê  Ú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Õ!rB   rÃ   c                ó¢  • Xl         [        R                  " 5       U l        U R                  (       d  g U R                  SSSS9  [        R                  " 5       nU R                  (       Gde  S[        R                   SU 3n[        [        SS 5      nU(       a1  SR                  [        [        US S	 5      5      nUS
U SUS	    S3-  nUS[        R                  R                    S["        R$                   3-  nU R&                  S:”  dK  U R(                  R*                  R,                  (       d&  [        U R(                  R*                  SS 5      (       a  US[        [        R.                  5      -   -  nU R1                  U5        U R(                  R2                  R5                  U R(                  U R6                  S9nU R9                  U5        g g )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  re  r¯   Úpython_versionrm   r¦   rF   rš   r›   rP   rþ   Ú_versionÚversionÚpluggyÚ__version__r
  r±   r©   rª   Ú
executablerœ   r›  Úpytest_report_headerrê   Ú_write_report_lines_from_hooks)r>   ÚsessionÚverinforŸ   rö  Úliness         r@   Úpytest_sessionstartÚ$TerminalReporter.pytest_sessionstartN  sx  € àŒÜ$Ÿ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ð# rB   c                ó¬   • [        U5       HE  n[        U[        5      (       a  U R                  U5        M+  U H  nU R                  U5        M     MG     g rV   )ÚreversedrX  rP   rœ   )r>   r  Úline_or_linesr   s       r@   r  Ú/TerminalReporter._write_report_lines_from_hooksi  sA   € ô & ež_ˆMÜ˜-¬×-Ñ-Ø—‘ Ö.ã)�DØ—O‘O DÖ)ó *ò	 -rB   c           	     ó˜  • SUR                    3/nUR                  (       ag  SnUR                  (       a  SSR                  UR                  5       S3nUR	                  S[        UR                   UR                  5      -   U-   5        UR                  [        R                  R                  :X  a@  UR                  S5      nUR	                  SR                  SR                  U5      5      5        UR                  R                  5       nU(       a8  UR	                  S	R                  SR                  [        U5      5      5      5        U$ )
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  Ú%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ôð ˆrB   c                ó¬  • U R                  S5        U R                  R                  R                  U R                  U R                  UR
                  S9nU R                  U5        U R                  R                  S5      (       aÏ  UR
                  (       aZ  U R                  R                  R                  S:”  a  U R                  R                  S5        U R                  UR
                  5        U R                  R                  S5      nU(       aA  U R                  R                  SS5        U H  nUR!                  U R                  5        M      g g g )	NT)r±   rú  rq  Úcollectonlyr¹  r¶   r'   Ú!zcollection failures)rê  r±   r›  Úpytest_report_collectionfinishrê   rq  r  r  r©   rj   rì   r   Ú_printcollecteditemsrç   r#  rc  Ú
toterminal)r>   r  r  r'   r¦  s        r@   Úpytest_collection_finishÚ)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Ö,ò "ð ð 0rB   c           	     óÎ  • U R                   R                  [        R                  5      nUS:  aŠ  US:  aU  [	        S U 5       5      n[        UR                  5       5       H%  u  pEU R                  R                  U SU 35        M'     g U H(  nU R                  R                  UR                  5        M*     g / nSnU GH!  nUR                  5       SS  n	U(       a+  XyS [        U5       :X  a  OUR                  5         U(       a  M+  U	[        U5      S   HÆ  n
UR                  U
5        [        U5      S-
  S-  nU R                  R                  U U
 35        US:¼  d  ML  [        U
SS 5      nU(       a  [        R                   " U5      OS nU(       d  M�  UR#                  5        H1  nU R                  R                  S	R%                  US-   U5      5        M3     MÈ     GM$     g )
Nr   r¹  c              3  ó\   #   • U H#  oR                   R                  S S5      S   v •  M%     g7f©r'  rD   r   N)rÔ   r,  )r»  Úitems     r@   r¾  Ú8TerminalReporter._printcollecteditems.<locals>.<genexpr>£  s$   é € Ð QÉ5À4§¡×!2Ñ!2°4¸Ó!;¸AÖ!>Ê5ùó   ‚*,ú: r¶   rD   ú  Úobjz{}{})r±   r  r   r“   r   Úsortedrq  rì   r   rÔ   Ú	listchainr  r]  r  rF   ÚinspectÚgetdocÚ
splitlinesrÈ  )r>   rq  Útest_cases_verbosityÚcountsÚnameri   r&  ÚstackÚindentÚneeded_collectorsÚcolr+  Údocr   s                 r@   r  Ú%TerminalReporter._printcollecteditemsŸ  s‘  € Ø#Ÿ{™{×8Ñ8¼×9TÑ9TÓUÐØ !Ó#Ø# bÓ(Ü Ñ QÉ5Ó QÓQ�Ü#)¨&¯,©,«.Ö#9‘K�DØ—H‘H—M‘M T F¨"¨U¨GÐ"4Ö5ñ $:ð
 ó "�DØ—H‘H—M‘M $§+¡+Ö.ñ "àØˆØˆÜˆDØ $§¡Ó 0°°Ð 4ÐÞØ¨l´°E³
Ð;Ó;ØØ—	‘	”÷ �%ð )¬¨U«¨Ó6�Ø—‘˜SÔ!Ü˜e›* q™.¨DÑ0�Ø—‘—‘  ¨¨Ð.Ô/Ø'¨1Õ,Ü! # u¨dÓ3�CÞ14œ'Ÿ.š.¨Ô-¸$�Cß�sØ$'§N¡NÖ$4˜DØ ŸH™HŸM™M¨&¯-©-¸À¹ÀtÓ*LÖMó %5ô 7ò rB   c              #  óä  #   • S v •nU R                   R                  S5        [        R                  [        R                  [        R
                  [        R                  [        R                  [        R                  4nX$;   a?  U R                  (       d.  U R                  R                  R                  XU R                  S9  U R                  5       nUbs  UR                  [        R                  :X  aU  [        U R                   R#                  S/ 5      5      nXe:”  a+  [        R                  Ul        U R%                  SU SU 3SS9  UR&                  (       a$  U R)                  S[+        UR&                  5      SS9  U[        R
                  :X  a  U R-                  5         S U l        O5UR0                  (       a$  U R)                  S[+        UR0                  5      SS9  U R3                  5         U$ 7f)	Nr¶   )r—   Ú
exitstatusr±   r-   z3Tests pass, but maximum allowed warnings exceeded: z > T)r’  r  )rì   r   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDÚMAX_WARNINGS_ERRORrn   r±   r›  Úpytest_terminal_summaryÚ_get_max_warningsr;  r  rç   r#  rœ   Ú
shouldfailre  rP   Ú_report_keyboardinterruptrü   Ú
shouldstopÚsummary_stats)r>   r  r;  r³  Úsummary_exit_codesÚmax_warningsÚwarning_counts          r@   Úpytest_sessionfinishÚ%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.G0c              #  ó^  #   • U R                  5         U R                  5         U R                  5         U R                  5         U R	                  5         U R                  5          S v •U R                  5         U R                  5         $ ! U R                  5         U R                  5         f = f7frV   )Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summaryr  s    r@   rB  Ú(TerminalReporter.pytest_terminal_summaryä  sˆ   é € à×ÑÔØ×ÑÔØ×ÑÔ Ø×ÑÔØ×ÑÔØ×ÑÔð	$Úà×#Ñ#Ô%à×!Ñ!Õ#øð ×#Ñ#Ô%à×!Ñ!Õ#üs   ‚A!B-Á$B Á'!B-Â"B*Â*B-c                ó,   • UR                  SS9U l        g )NT)Úfuncargs)Úgetreprrü   )r>   Úexcinfos     r@   Úpytest_keyboard_interruptÚ*TerminalReporter.pytest_keyboard_interruptó  s   € Ø'.§¡À Ð'EˆÕ$rB   c                ó@   • U R                   b  U R                  5         g g rV   )rü   rE  r  s    r@   Úpytest_unconfigureÚ#TerminalReporter.pytest_unconfigureö  s   € Ø×'Ñ'Ñ3Ø×*Ñ*Õ,ð 4rB   c                ó¢  • U R                   nUc   eUR                  c   eUR                  R                  nU R                  SU5        SU;   a�  U R                  R
                  R                  (       a  UR                  U R                  5        g UR                  R                  U R                  5        U R                  R                  SSS9  g g )Nr  ÚKeyboardInterruptz@(to show a full traceback on KeyboardInterrupt use --full-trace)T)r‘  )
rü   Ú	reprcrashrÓ   re  r±   r©   Ú	fulltracer   rì   r   )r>   rv  rŸ   s      r@   rE  Ú*TerminalReporter._report_keyboardinterruptú  s¯   € Ø×.Ñ.ˆØÑ"Ð"Ð"Ø× Ñ Ñ,Ð,Ð,Ø×Ñ×'Ñ'ˆØ�‰�s˜CÔ Ø #Ó%Ø�{‰{×!Ñ!×+×+Ø×"Ñ" 4§8¡8Õ,à×!Ñ!×,Ñ,¨T¯X©XÔ6Ø—‘—‘ØVØð ò ð &rB   c                ó  ^ ^• S
UU 4S jjnU(       am  U" U5      nT R                   S:¼  aP  UR                  SSS9S   [        R                  " U5      :w  a%  US[	        T R
                  [        U5      5      -   -  nUS	-   $ SnUS	-   $ )Nc                ó  >• TR                   R                  U 5      nT(       ab  UR                  T5      (       aL  US [        T5      *  nTR	                  S5      nUS   R                  SS5      US'   USR                  U5      -  nU$ )Nr—  r   rÆ   r'  )r±   Úcwd_relative_nodeidÚendswithr  r,  r¾   rš   )rÔ   r   rJ   r‹  r>   s      €€r@   ÚmkrelÚ-TerminalReporter._locationline.<locals>.mkrel  sz   ø€ Ø—;‘;×2Ñ2°6Ó:ˆDÞ˜$Ÿ-™-¨×/Ñ/Ø˜Nœs 6›{˜lÐ+�ØŸ™ cÓ*�Ø" 1™I×-Ñ-¨c°4Ó8��q‘	Ø˜Ÿ™ Ó(Ñ(�ØˆKrB   r”  r'  rD   r(  r   z <- z
[location]r™   )rÔ   rP   rT   rP   )r
  r,  r   Únorm_sepr"   rê   r
   )r>   rÔ   r1  r|  r‹  rh  r/  s   `   `  r@   r‰  Ú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ÐrB   c                ó.   • UR                   nU(       a  U$ g)Nztest session)Ú	head_line)r>   r¦  rm  s      r@   Ú_getfailureheadlineÚ$TerminalReporter._getfailureheadline!  s   € Ø—M‘Mˆ	ÞØÐØrB   c                ó¶   •  [        UR                  R                  5      $ ! [         a-     [        UR                  5      S S s $ ! [         a      gf = ff = f)Né2   r¶   )rP   Úlongreprra  ÚAttributeError)r>   r¦  s     r@   Ú_getcrashlineÚTerminalReporter._getcrashline'  sX   € ð	Ü�s—|‘|×-Ñ-Ó.Ð.øÜó 	ðÜ˜3Ÿ<™<Ó(¨¨"Ð-Ò-øÜ!ó Úðúð	ús,   ‚! ¡
A¬AÁAÁ
AÁAÁAÁAc                óº   • U R                   R                  R                  nUb  [        U5      $ U R                   R	                  S5      nU(       a  [        U5      $ g)zEReturn the max_warnings threshold, from CLI or INI, or None if unset.NrI  )r±   r©   rI  r�   r  )r>   r  Ú	ini_values      r@   rC  Ú"TerminalReporter._get_max_warnings0  sK   € à—‘×"Ñ"×/Ñ/ˆØÑÜ�u“:ÐØ—K‘K×&Ñ& ~Ó6ˆ	ÞÜ�y“>Ð!ØrB   c                óŠ   • U R                   R                  US5       Vs/ sH  n[        US5      (       a  M  UPM     sn$ s  snf )NrO   Ú	_pdbshown)rç   r#  r�  )r>   r3  r"  s      r@   Ú
getreportsÚTerminalReporter.getreports=  s4   € ØŸ:™:Ÿ>™>¨$°Ô3ÓSÑ3�a¼7À1Àk×;R—Ñ3ÑSÐSùÒSs
   ŸA ·A c                óh  ^ • T R                  S5      (       Gaš  T R                  R                  S5      nU(       d  g T R                  S LnU(       a  UT R                  S  nOUn[	        U5      T l        U(       d  g 0 nU H.  nUR                  UR                  / 5      R                  U5        M0     SU 4S jjnU(       a  SOSnT R                  SUSSS	9  UR                  5        H­  u  p‰U" U	5      n
U
(       aT  T R                  R                  U
5        UR                  5       nS
R                  S U 5       5      nUR                  5       nOUR                  5       nT R                  R                  U5        T R                  R                  5         M¯     T R                  R                  S5        g g )Nr¼   r-   c                óP  >• / nU  H8  nUR                  TR                  5      nU(       d  M'  UR                  U5        M:     [        U5      S:  a  SR	                  [        [        U5      5      $ [        S U 5       5      nSR	                  S UR                  5        5       5      $ )Né
   r@  c              3  ó\   #   • U H#  n[        U5      R                  S S5      S   v •  M%     g7fr%  )rP   r,  )r»  Úlocs     r@   r¾  ÚWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>]  s'   é € ð -Ù:C°3”C˜“H—N‘N 4¨Ó+¨AÖ.º)ùr(  c              3  óX   #   • U H!  u  pS R                  XUS:”  a  SOS5      v •  M#     g7f)z{}: {} warning{}rD   rÇ   r¶   N)rÈ  )r»  ÚkÚvs      r@   r¾  r‚  `  s1   é € ð !á :™˜ð '×-Ñ-¨a¸1¸q»5±CÀb×IÐIÚ :ùs   ‚(*)	rÞ   r±   r  r  rš   r›   rP   r   rq  )ÚreportsÚ	locationsr¼   rŠ  Úcounts_by_filenamer>   s        €r@   Úcollapsed_location_reportÚDTerminalReporter.summary_warnings.<locals>.collapsed_location_reportS  sœ   ø€ Ø�	Û �AØ Ÿ~™~¨d¯k©kÓ:�Hß�xØ!×(Ñ(¨Ö2ñ !ô
 �y“> BÓ&ØŸ9™9¤S¬¨iÓ%8Ó9Ð9ä%,ñ -Ù:Có-ó &Ð"ð —y‘yñ !à 2× 8Ñ 8Ô :ó!ó ð rB   zwarnings summary (final)zwarnings summaryrô  TF)r‘  ræ  r@  c              3  ó*   #   • U H
  nS U-   v •  M     g7f)r*  NrO   )r»  r"  s     r@   r¾  Ú4TerminalReporter.summary_warnings.<locals>.<genexpr>l  s   é € Ð(A¹5°a¨°®º5ùs   ‚zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)r†  zlist[WarningReport]rT   rP   )r$  rç   r#  rû   r  rn  rÓ   r  re  rq  rì   r   r0  rš   Úrstrip)r>   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrr‰  rd  rÓ   Úmessage_reportsÚmaybe_locationr  Úindenteds   `            r@   rQ  Ú!TerminalReporter.summary_warnings@  sc  ø€ Ø�;‰;�s×ÒØ7;·z±z·~±~ÀjÓ7QˆLÞØà×4Ñ4¸DÐ@ˆEÞØ".¨t×/OÑ/OÐ/QÐ"R‘à".�Ü/2°?Ó/CˆDÔ,Þ"ØàIKÐ&Û%�Ø*×5Ñ5°b·j±jÀ"ÓE×LÑLÈRÖPñ &÷ö$ 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Ô&Ø—‘—‘–ñ -Oð �H‰H�M‰MØYõðc rB   c                ó*   • U R                  SSS5        g )Nr(   ÚPASSESÚP©Úsummary_passes_combinedr  s    r@   rR  ÚTerminalReporter.summary_passesv  s   € Ø×$Ñ$ X¨x¸Õ=rB   c                ó*   • U R                  SSS5        g )Nr,   ÚXPASSESÚXr™  r  s    r@   rS  Ú TerminalReporter.summary_xpassesy  s   € Ø×$Ñ$ Y°	¸3Õ?rB   c                ó¤  • U R                   R                  R                  S:w  a¬  U R                  U5      (       a•  U R	                  U5      nU(       d  g U R                  SU5        U Hc  nUR                  (       a4  U R                  U5      nU R                  SUSSS9  U R                  U5        U R                  UR                  5        Me     g g g )Nr~   rô  rÞ  T)r�  ræ  )r±   r©   rz   r$  r{  re  Úsectionsrn  Ú_outrep_summaryÚ_handle_teardown_sectionsrÔ   )r>   Úwhich_reportsÚ	sep_titleÚ
needed_optr†  r¦  rŸ   s          r@   rš  Ú(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·:±:Ö>ò #ð 'ð .rB   c                óš   • U R                  S5      nU Vs/ sH)  nUR                  S:X  d  M  UR                  U:X  d  M'  UPM+     sn$ s  snf )Nr¶   rÊ   )r{  rÍ   rÔ   )r>   rÔ   r†  rÏ   s       r@   Ú_get_teardown_reportsÚ&TerminalReporter._get_teardown_reportsŒ  sT   € Ø—/‘/ "Ó%ˆñ "ó
á!�Ø�{‰{˜jÑ(ó à-3¯]©]¸fÑ-D÷ Ù!ñ
ð 	
ùò 
s   –A­A¿Ac                óV   • U R                  U5       H  nU R                  U5        M     g rV   )r©  Úprint_teardown_sections)r>   rÔ   rÏ   s      r@   r£  Ú*TerminalReporter._handle_teardown_sections”  s%   € Ø×0Ñ0°Ö8ˆFØ×(Ñ(¨Ö0ò 9rB   c                ó0  • U R                   R                  R                  nUS:X  a  g UR                   H_  u  p4US:w  a  X#;  a  M  SU;   d  M  U R                  R                  SU5        USS  S:X  a  US S nU R                  R                  U5        Ma     g )Nr~   r‡   rÊ   rø  r¹  r@  )r±   r©   rƒ   r¡  rì   rc  r   ©r>   r¦  rƒ   ÚsecnamerJ  s        r@   r¬  Ú(TerminalReporter.print_teardown_sections˜  s†   € Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÓØØ #§¤ÑˆGØ˜eÓ#¨Ó(BÙØ˜WÕ$Ø—‘—‘˜S 'Ô*Ø˜2˜3�< 4Ó'Ø% c r˜l�GØ—‘—‘˜gÖ&ò !-rB   c                óf   • U R                   R                  R                  nU R                  SSUS9  g )Nr'   ÚFAILURES©ry   )r±   r©   rz   Úsummary_failures_combined)r>   ry   s     r@   rO  Ú!TerminalReporter.summary_failures¥  s,   € Ø—‘×"Ñ"×*Ñ*ˆØ×&Ñ& x°À5Ð&ÒIrB   c                ó¸   • U R                   R                  R                  nU(       a   U R                   R                  R                  OSnU R	                  SSUS9  g )Nr~   r+   Ú	XFAILURESr´  )r±   r©   r‚   rz   rµ  )r>   Úshow_tbry   s      r@   rP  Ú"TerminalReporter.summary_xfailures©  sE   € Ø—+‘+×$Ñ$×-Ñ-ˆÞ.5�—‘×"Ñ"×*Ò*¸4ˆØ×&Ñ& y°+ÀUÐ&ÒKrB   )r¦  c               óÚ  • US:w  aå  U(       a  U R                  U5      (       aÇ  U R                  U5      nU(       d  g U R                  SU5        US:X  a=  U H6  nU R                  U5      nU R	                  U5        U R                  U5        M8     g U HR  nU R                  U5      nU R                  SUSSS9  U R	                  U5        U R                  UR                  5        MT     g g g )Nr~   rô  r   rÞ  T©r’  ræ  )	r$  r{  re  rt  r¢  rœ   rn  r£  rÔ   )	r>   r¤  r¥  ry   r¦  r†  r¦  r   rŸ   s	            r@   rµ  Ú*TerminalReporter.summary_failures_combined®  sÓ   € ð �D‹=Þ §¡¨Z×!8Ñ!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·z±zÖBò	  'ð "9ð rB   c                óˆ  • U R                   R                  R                  S:w  až  U R                  S5      nU(       d  g U R	                  SS5        U R
                  S    H_  nU R                  U5      nUR                  S:X  a  SU-   nOSUR                   SU 3nU R	                  S	US
S
S9  U R                  U5        Ma     g g )Nr~   r.   rô  ÚERRORSrÈ   zERROR collecting z	ERROR at z of rÞ  Tr¼  )	r±   r©   rz   r{  re  rç   rn  rÍ   r¢  )r>   r†  r¦  rŸ   s       r@   rN  Ú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Ö)ò +ð .rB   c                óV  • UR                  U R                  5        U R                  R                  R                  nUS:X  a  g UR
                   HW  u  p4US:w  a  X#;  a  M  U R                  R                  SU5        USS  S:X  a  US S nU R                  R                  U5        MY     g )Nr~   r‡   rø  r¹  r@  )r   rì   r±   r©   rƒ   r¡  rc  r   r¯  s        r@   r¢  Ú TerminalReporter._outrep_summary×  sŽ   € Ø�‰�t—x‘xÔ Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÓØØ #§¤ÑˆGØ˜eÓ#¨Ó(BÙØ�H‰H�L‰L˜˜gÔ&Ø�r�sˆ|˜tÓ#Ø! # 2˜,�Ø�H‰H�M‰M˜'Ö"ò !-rB   c                ón  • U R                   S:  a  g U R                  R                  5       nU R                  5       u  p#/ nU R                   S:¬  nU(       a  U R                  R
                  nU HT  u  pxU R                  R                  " U40 UD6n	U(       a  W[        U	5      [        U5      -
  -  nUR                  U	5        MV     SR                  U5      n
US0nS[        UR                  5       3nU R                  R                  " U40 UD6nU(       a  W[        U5      [        U5      -
  -  nX­-  n
U(       aI  U R                  R                  " S
0 UD6nUR                  S5      (       a  US S nW[        U5      -  nX®-  n
U(       a  U R                  " SU
4S	W0UD6  g U R                  " U
40 UD6  g )Nr¹  r   r  Tz in z[0méüÿÿÿrô  rí   ©r¶   )r
  rû  rî  Úbuild_summary_stats_linerì   rí   r0  r  r  rš   Úformat_session_durationrï  rg  re  rœ   )r>   Úsession_durationÚpartsrÝ  Ú
line_partsÚdisplay_seprí   Útextr0  Úwith_markuprŸ   Úmain_markuprÅ  Úduration_with_markupÚmarkup_for_end_seps                  r@   rG  Ú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ˆØ#Ÿx™xŸš¨xÑG¸;ÑGÐÞØœÐ1Ó2´S¸³]ÑBÑBˆIØÑ#ˆæØ!%§¡§¢Ñ!C°{Ñ!CÐØ!×*Ñ*¨9×5Ñ5Ø%7¸¸Ð%<Ð"ØœÐ/Ó0Ñ0ˆIØÑ%ˆCæØ�NŠN˜3 ÑH¨yÐH¸KÓHà�OŠO˜CÑ/ ;Ó/rB   c           
     óª  ^ ^
^• T R                   (       d  g SU 4S jjnSU 4S jjnSU 4S jjnSU 4S jjm
SU 4S jjmSU U
U4S jjnUU[        USS9U[        US	S9[        US
S9S.n/ nT R                    H%  nUR                  U5      nU(       d  M  U" U5        M'     U(       a-  T R                  SSSSS9  U H  n	T R	                  U	5        M     g g )Nc               ó   >• TR                   R                  U/ 5      nU(       d  g TR                  nU HG  n[        R                  U[        5      n[        X4TR                  US05      nU R                  U5        MI     g )NT)rç   r#  r±   Ú_color_for_typeÚ_color_for_type_defaultÚ _get_line_with_reprcrash_messagerì   r  )r  Ústatr'   r±   r¦  rˆ   r   r>   s          €r@   Úshow_simpleÚ8TerminalReporter.short_test_summary.<locals>.show_simple  sj   ø€ Ø—Z‘Z—^‘^ D¨"Ó-ˆFÞØØ—[‘[ˆFÛ�Ü'×+Ñ+¨DÔ2IÓJ�Ü7Ø §¡¨E°4¨=ó�ð —‘˜TÖ"ò rB   c                ó’  >• T	R                   R                  S/ 5      nU H¤  nUR                  T	R                  [        S   S05      u  p4T	R
                  R                  " U40 UD6n[        T	R
                  T	R                  U5      nU SU 3nUR                  nU(       a  US[        U5      -   -  nU R                  U5        M¦     g )Nr+   r-   Tr™   ú - ©rç   r#  Ú_get_verbose_word_with_markupr±   rÔ  rì   r0  Ú_get_node_id_with_markupr�  rP   r  )
r  r+   r¦  Úverbose_wordÚverbose_markupÚmarkup_wordrÔ   r   r©  r>   s
            €r@   Úshow_xfailedÚ9TerminalReporter.short_test_summary.<locals>.show_xfailed  s±   ø€ Ø—j‘j—n‘n Y°Ó3ˆGÛ�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�ð #Ÿh™hŸošo¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÞØ˜E¤C¨£KÑ/Ñ/�Dà—‘˜TÖ"ò rB   c                ó’  >• T	R                   R                  S/ 5      nU H¤  nUR                  T	R                  [        S   S05      u  p4T	R
                  R                  " U40 UD6n[        T	R
                  T	R                  U5      nU SU 3nUR                  nU(       a  US[        U5      -   -  nU R                  U5        M¦     g )Nr,   r-   Tr™   rÛ  rÜ  )
r  r,   r¦  rß  rà  rá  rÔ   r   r©  r>   s
            €r@   Úshow_xpassedÚ9TerminalReporter.short_test_summary.<locals>.show_xpassed(  s±   ø€ Ø—j‘j—n‘n Y°Ó3ˆGÛ�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�ð #Ÿh™hŸošo¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÞØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜TÖ"ò rB   c                óþ  >• TR                   R                  S/ 5      nU(       a  [        TR                  U5      O/ nU(       d  g US   R	                  TR
                  [        S   S05      u  p4TR                  R                  " U40 UD6nSnU Hj  u  pxpšU
R                  U5      (       a  U
[        U5      S  n
U	b!  U R                  U SU SU SU	 S	U
 3	5        MN  U R                  U SU SU S	U
 35        Ml     g )
Nr)   r   r-   Tú	Skipped: r·  z] rØ   r)  )rç   r#  Ú_folded_skipsrê   rÝ  r±   rÔ  rì   r0  Ú
startswithr  r  )r  r)   Úfskipsrß  rà  rá  r7  Únumr1  r|  r©  r>   s              €r@   Úshow_skipped_foldedÚ@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Ñ+�˜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ò 06rB   c                ór  >• T	R                   R                  S/ 5      nU GH  nUR                  c   e[        UR                  [        5      (       d   X"R                  45       e[        UR                  5      S:X  d   X"R                  45       eUR                  T	R                  [        S   S05      u  p4T	R                  R                  " U40 UD6n[        T	R                  T	R                  U5      nU SU 3nUR                  S   nU(       a  US[        U5      -   -  nU R                  U5        GM     g )Nr)   r÷  r-   Tr™   r”  rÛ  )rç   r#  rr  rX  rœ  r  rÝ  r±   rÔ  rì   r0  rÞ  rP   r  )
r  r)   r¦  rß  rà  rá  rÔ   r   r©  r>   s
            €r@   Úshow_skipped_unfoldedÚBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedH  s  ø€ Ø+/¯:©:¯>©>¸)ÀRÓ+HˆGä�Ø—|‘|Ñ/Ð/Ð/Ü! #§,¡,´×6Ñ6ÐK¸¿l¹lÐ8KÓKÐ6Ü˜3Ÿ<™<Ó(¨AÓ-ÐB°·\±\Ð/BÓBÐ-à/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�ð #Ÿh™hŸošo¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™ a™�ÞØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜T×"ò rB   c                óJ   >• TR                   (       a	  T" U 5        g T" U 5        g rV   )rð   )r  r>   rí  rð  s    €€€r@   Úshow_skippedÚ9TerminalReporter.short_test_summary.<locals>.show_skipped[  s   ø€ Ø××Ù# EÕ*á% eÕ,rB   r'   )r×  r(   r.   )r"  rž  ÚfrÇ   ÚprË   rô  zshort test summary infoT)r™  ræ  )r  ú	list[str]r×  rP   rT   rU   )r  r÷  rT   rU   )rt   r	   r#  re  rœ   )r>   rØ  râ  rå  ró  ÚREPORTCHAR_ACTIONSr  rÁ   rk   r   rí  rð  s   `         @@r@   rT  Ú#TerminalReporter.short_test_summary	  sÍ   ú€ Ø××Ø÷
	#÷	#÷	#÷	N÷$	#÷&	-ñ 	-ð ØÜ˜¨8Ñ4ØÜ˜¨8Ñ4Ü˜¨7Ñ3ñI
Ðð ˆØ×$Ô$ˆDØ'×+Ñ+¨DÓ1ˆFßˆvÙ�u–ñ %ö
 Ø�N‰N˜3Ð 9ÀÈ4ˆNÑPÛ�Ø—‘ Ö%ò ð rB   c                óô   • U R                   b  U R                  b  U R                  (       a6  U R                  5         U R                   (       d   eU R                  (       d   eU R                   U R                  4$ rV   )rè   ré   rŸ  rp  r  s    r@   rÙ  Ú TerminalReporter._get_main_coloru  sb   € Ø×ÑÑ# t×'8Ñ'8Ñ'@ÀD×DV×DVØ× Ñ Ô"Ø×#×#Ð#Ð#Ø×$×$Ð$Ð$Ø×Ñ ×!2Ñ!2Ð2Ð2rB   c                ó¦   • U R                   nSU;   d  SU;   a  SnU$ SU;   d  SU;   d  U(       a  SnU$ SU;   d  U R                  (       d  SnU$ SnU$ )	Nr'   r.   r’  r-   r,   r‘  r(   r�  )rç   rŸ  )r>   Úunknown_type_seenrç   rÝ  s       r@   Ú_determine_main_colorÚ&TerminalReporter._determine_main_color|  st   € Ø—
‘
ˆØ�uÓ ¨5Ó 0ØˆJð Ðð ˜5Ó  I°Ó$6Ö:KØ!ˆJð
 Ðð	 ˜Ó d×&8×&8Ø ˆJð Ðð "ˆJØÐrB   c                óô   • / nU R                    H0  nU(       d  M  U[        ;  d  M  X!;  d  M  UR                  U5        M2     [        [        5      U-   U l        U R                  [        U5      5      U l        g rV   )rç   ÚKNOWN_TYPESr  Úlistré   rþ  rR   rè   )r>   Úunknown_typesÚ
found_types      r@   rp  Ú TerminalReporter._set_main_colorˆ  sa   € Ø#%ˆØŸ*œ*ˆJßˆzØ¤[Õ0°ZÕ5TØ!×(Ñ(¨Ö4ñ %ô !¤Ó-°Ñ=ˆÔØ×5Ñ5´d¸=Ó6IÓJˆÕrB   c                ó‚   • U R                   R                  S5      (       a  U R                  5       $ U R                  5       $ )a2  
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@   rÆ  Ú)TerminalReporter.build_summary_stats_line‘  s7   € ð( �;‰;× Ñ  ×/Ñ/Ø×>Ñ>Ó@Ð@à×8Ñ8Ó:Ð:rB   c                ó�   • U R                   R                  U/ 5      nU Vs/ sH  n[        USS5      (       d  M  UPM     sn$ s  snf )zRGet test/collection reports for the given status key, such as `passed` or `error`.rÖ   T)rç   r#  rF   )r>   Úkeyr†  r"  s       r@   rÉ  Ú(TerminalReporter._get_reports_to_displayª  s:   € à—*‘*—.‘.  bÓ)ˆÙ"ÓP™7�a¤g¨aÐ1HÈ$×&O—™7ÑPÐPùÒPs
   ¡AºAc                ó2  • U R                  5       u  p/ nU Hi  nU R                  U5      nU(       d  M  [        U5      n[        R	                  U[
        5      nUSSXq:H  0nUR                  S[        Xd5      -  U45        Mk     U(       d  S[
        S04/nX14$ )NTræ  ú%d %szno tests ran)rÙ  rÉ  r  rÔ  r#  rÕ  r  Ú	pluralize)	r>   rÝ  Úknown_typesrÉ  r  r†  ri   rˆ   r0  s	            r@   r  Ú1TerminalReporter._build_normal_summary_stats_line¯  s¢   € ð #'×"6Ñ"6Ó"8Ñˆ
ØˆãˆCØ×2Ñ2°3Ó7ˆGßˆwÜ˜G›�Ü'×+Ñ+¨CÔ1HÓI�Ø  v¨uÑ/BÐC�Ø—‘˜g¬	°%Ó(=Ñ=¸vÐFÖGñ ö Ø$Ô'>ÀÐ&EÐFÐGˆEàÐ Ð rB   c                óØ  • [        U R                  S5      5      n[        U R                  S5      5      nU R                  S:X  a
  SSS04/nSnOsUS:X  a"  SnS[        U R                  S	5      -  nXTS04/nOKU R                  U:H  nU(       a	  SnS
U S3nO&SnU R                  U-
  nU SU R                   SU S3nXTS04/nU(       a   [        S   nUS[        US5      -  US04/-  nX44$ )Nr*   r.   r   zno tests collectedr‘  Tr�  z%d %s collectedÚtestzno tests collected (z deselected)r×  z tests collected (r  )r  rÉ  rä   r  rÔ  )r>   r*   rW  rÉ  rÝ  Úcollected_outputÚall_tests_were_deselectedrñ  s           r@   r  Ú7TerminalReporter._build_collect_only_summary_stats_lineÂ  s2  € ô ˜×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àÐ Ð rB   )rû   rú   rü   ré   rè   rä   rõ   rî   rå   rû  rø   ræ   rš  rö   rì   r±   rï   rð   rñ   ró   rt   rê   rç   rV   )r±   r   rý   zTextIO | NonerT   rU   )rT   z,Literal['progress', 'count', 'times', False])rT   r�   )rT   rR   )r  zbool | NonerT   rU   )rÁ   rP   rT   rR   )rÔ   rP   r/  rP   r0  rR   rT   rU   rÅ  )r7  rP   r8  rP   rT   rU   ©rT   rU   )rJ  rP   r*  rR   rA  r�   rB  rP   r0  rR   rT   rU   )rJ  rP   r*  rR   r0  rR   rT   rU   )rJ  rP   r*  rR   rT   rU   )r   zstr | bytesr0  rR   rT   rU   )r   rP   r0  rR   rT   rU   )NN)
rc  rP   rd  rS   rí   ú
int | Noner0  rR   rT   rU   )rô  )rd  rP   rc  rP   rh  rR   rT   rU   )rŸ   rP   rh  rR   rT   rU   )ra   rP   rq  zSequence[Any]rT   rU   )rv  r   rT   rR   )r}  zwarnings.WarningMessagerÔ   rP   rT   rU   )r‚  r   rT   rU   )rq  zSequence[Item]rT   rU   )rÔ   rP   rŠ  ztuple[str, int | None, str]rT   rU   ©rÏ   r%   rT   rU   )rT   zGenerator[None, object, object])rT   rP   )rÏ   r$   rT   rU   )F)r   rR   rT   rU   ©r  r&   rT   rU   )r  zSequence[str | Sequence[str]]rT   rU   )r±   r   rT   r÷  )r  r&   r;  zint | ExitCoderT   úGenerator[None])rT   r  )rY  zExceptionInfo[BaseException]rT   rU   )
rÔ   rP   r1  rP   r|  r  r‹  rP   rT   rP   )rT   r  )r3  rP   )r¤  rP   r¥  rP   r¦  rP   rT   rU   )rÔ   rP   rT   zlist[TestReport])rÔ   rP   rT   rU   )r¦  r%   rT   rU   )
r¤  rP   r¥  rP   ry   rP   r¦  rS   rT   rU   )r¦  r#   rT   rU   )rT   ztuple[str, list[str]])rý  rR   rT   rP   )rT   z-tuple[list[tuple[str, dict[str, bool]]], str])r  rP   rT   z	list[Any])RrW   rX   rY   rZ   r=   r÷   Úpropertyr
  r  rm   rn   r  Úsetterr  r  r$  r3  r:  r=  rL  r.  rR  r*  rœ   r`  re  ri  r   rs  rw  r  rƒ  r†  rŒ  r¬  rŸ  r   r´  r¥  r   r-  rØ  rç  rë  rê  r  r  r  r!  r  rK  rB  rZ  r]  rE  r‰  rn  rt  rC  r{  rQ  rR  rS  rš  r©  r£  r¬  rO  rP  rµ  rN  r¢  rG  rT  rÙ  rþ  rp  rÆ  rÉ  r  r  r\   rO   rB   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÷!rB   r¥   c                ó¼   • UR                  UR                  5      nUR                  S5      tpEU(       a'  U R                  SR	                  U5      SS9nUS-   U-   $ U$ )Nr'  Trõ  )rf  rÔ   r,  r0  rš   )Útwr±   r¦  rÔ   ÚpathrÉ  Úparts_markups          r@   rÞ  rÞ  ã  sX   € Ø×'Ñ'¨¯
©
Ó3€FØ—<‘< Ó%€L€DÞØ—y‘y §¡¨5Ó!1¸�yÐ=ˆØ�d‰{˜\Ñ)Ð)àˆrB   c                ób  • UR                  S5      nUS:w  a  USU nSn[        U R                  S5      5      nU[        U5      -   U:”  a  gU[        U5      -   U:”  aB  U[        U5      -  nUSU nU[        U5      -   U:”  a  USS nU[        U5      -   U:”  a  M  X-  nU R                  U5      $ )zxFormat 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›]Ñ*¨_Õ<à‰ˆà�=‰=˜ÓÐrB   c                ó"  • UR                  X5      u  pEUR                  " U40 UD6n[        X U5      nU SU 3n[        U5      n	 [	        UR
                  [        5      (       a  UR
                  n
O UR
                  R                  R                  n
[        5       (       d  U R                  R                  S:¼  a!  U R                  R                  (       d  SU
 3n
OUR                  U	-
  n[        SX«5      n
U
b  XŠ-  nU$ ! [         a     U$ f = f)z?Get summary line for a report, trying to add reprcrash message.r™   r”  rÛ  z - {})rÝ  r0  rÞ  r   rX  rr  rP   ra  rÓ   r   r©   rj   rq   rí   r¢  rs  )r±   r¦  r  Úword_markuprß  rà  rc   r“  r   Ú
line_widthrŸ   rª  s               r@   rÖ  rÖ    s  € ð $'×#DÑ#DØó$Ñ €Lð �9Š9�\Ñ4 ^Ñ4€DÜ# B°Ó4€DàˆV�1�T�FÐ€DÜ˜$“€JðÜ�c—l‘l¤C×(Ñ(Ø—,‘,‰Cð —,‘,×(Ñ(×0Ñ0ˆCô
 �O‰O˜vŸ}™}×4Ñ4¸Ó9Ø—-‘-×3×3Ø˜�u�+‰Cà Ÿl™l¨ZÑ7ˆOÜ! '¨3Ó@ˆCØ‰?Ø‰KˆDà€Køô ó Øð €Kðús   ÁAD  Ä 
DÄDc                óT  • 0 nU Hæ  nUR                   c   e[        UR                   [        5      (       d   X3R                   45       e[        UR                   5      S:X  d   X3R                   45       eUR                   u  pEn[	        U [        U5      5      n[        US0 5      nUR                  S:X  a  SU;   a  SU;  a  US U4nOXEU4nUR                  U/ 5      R                  U5        Mè     / n	UR                  5        H#  u  pŠU	R                  [        U
5      /UQ75        M%     U	$ )Nr÷  ÚkeywordsrÉ   ÚskipÚ
pytestmark)rr  rX  rœ  r  r"   r
   rF   rÍ   rn  r  rq  )rê   r)   ÚdÚeventr1  r|  r©  r*  r  rJ   Úeventss              r@   ré  ré  *  s  € ð AC€AÛˆØ�~‰~Ñ)Ð)Ð)Ü˜%Ÿ.™.¬%×0Ñ0ÐI°5¿.¹.Ð2IÓIÐ0Ü�5—>‘>Ó" aÓ'Ð@¨%·±Ð)@Ó@Ð'Ø!&§¡Ñˆ˜ä˜Y¬¨V«Ó5ˆÜ˜5 *¨bÓ1ˆð
 �J‰J˜'Ó!Ø˜(Ó"Ø HÓ,à06¸¸fÐ/E‰Cà 6Ð*ˆCØ	�‰�S˜"Ó×$Ñ$ UÖ+ñ' ð( 68€FØ—w‘w–y‰ˆØ�‰”s˜6“{Ð) SÑ)Ö*ñ !à€MrB   r’  r‘  r�  )r'   r.   r-   r(   r/   r0   c                óV   • US;  a  X4$ UR                  SS5      nX S:w  a  US-   4$ U4$ )N)r.   r-   r  r-   r  rD   rÇ   )r¾   )ri   Únouns     r@   r  r  T  s@   € àÐ0Ó0Øˆ{Ðð
 �<‰<˜
 IÓ.€Dà¨£
�$˜‘*Ð4Ð4°Ð4Ð4rB   c                ó¼   • / nU  HS  u  p#UR                    SUR                   3nUR                  S5      (       a  USS  nXA;  d  MB  UR                  U5        MU     U$ )Nrø  zpytest-é   )Úproject_namerþ  rê  r  )r  rJ   r‚  Údistr3  s        r@   r  r  a  sa   € Ø€FÛ"‰ˆà×#Ñ#Ð$ A d§l¡l ^Ð4ˆà�?‰?˜9×%Ñ%Ø˜˜�8ˆDàÕØ�M‰M˜$Öñ #ð €MrB   c                óf   • U S:  a  U S S3$ [         R                  " [        U 5      S9nU S SU S3$ )zQFormat the given seconds in a human readable manner to show in the final summary.é<   ú.2frÇ   ©rï  zs (r–  )ÚdatetimeÚ	timedeltar�   )rï  Údts     r@   rÇ  rÇ  o  sA   € à�ƒ|Ø˜#�˜aÐ Ð ä×Ò¬¨G«Ñ5ˆØ˜#�˜c "  QÐ'Ð'rB   c                ó2  • U S:  a
  SU S-  S S3$ U S:  a
  SU S-  S S3$ U S:  a
  SU S-  S	 S3$ U S
:  a
  SU S-  S S3$ U S:  a
  SU S-  S S3$ U S:  a
  SU S-  S	 S3$ U S:  a  SU S S3$ U S:  a  SU S-  S SU S-  S S3$ SU S-  S SU S-  S-  S S3$ )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?r8  gü©ñÒMbP?z.1fg{®Gáz„?iè  Úmsgš™™™™™¹?rD   r7  rÇ   i  z.0fzm zh ÚmrO   r9  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ÐCrB   c                ón  • [        U S5      (       a2  U R                  nUR                  S5      (       a  U[        S5      S nU$ U R                  (       d   e[        U R                  [        5      (       d   eU R                  u    p!UR                  S5      (       a  U[        S5      S nU$ US:X  a  SnU$ )ziGet the reason string of a skip/xfail/xpass test report.

The string is just the part given by the user.
r�  zreason: Nrè  ÚSkippedr¶   )r�  r�  rê  r  r)   rX  rr  rœ  )rÏ   r©  rÞ  s      r@   r¡  r¡  �  s¯   € ô
 ˆv�z×"Ñ"Ø—‘ˆØ×Ñ˜Z×(Ñ(ØœC 
›OÐ-Ð.ˆFØˆà�~�~Ðˆ~Ü˜&Ÿ/™/¬5×1Ñ1Ð1Ð1Ø—‘‰ˆˆ1Ø×Ñ˜[×)Ñ)ØœC Ó,Ð.Ð/ˆFð ˆð �yÓ ØˆFØˆrB   c                  óŒ   • \ rS rSrSrSS jr S     SS jjr\SS j5       r\SS j5       r	\SS j5       r
\SS	 j5       rS
rg)ÚTerminalProgressPlugini¤  a  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                ó,   • Xl         S U l        SU l        g )NF)Ú_trrå   Ú_has_failures)r>   Útrs     r@   r=   ÚTerminalProgressPlugin.__init__¯  s   € ØŒØ(,ˆŒØ"ˆÕrB   Nc                óþ   • Ub  SUs=::  a  S::  d   e   eU=S:X  a    SnOC=S:X  a    Uc   eSU S3nO0=S	:X  a    Ub  S
U S3nOSnO=S:X  a    SnOS:X  a  Ub  SU S3nOSn U R                   R                  WSS9  g)zå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;\TrN  )rF  rR  )r>   Ústater‹   Úsequences       r@   Ú_emit_progressÚ%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ÐÒ0rB   c                ó2   • Xl         U R                  S5        g )NrM  )rå   rQ  )r>   r  s     r@   r  Ú*TerminalProgressPlugin.pytest_sessionstartÚ  s   € àŒà×Ñ˜OÕ,rB   c                ó|   • U R                   c   eU R                   R                  S:”  a  U R                  SS5        g g )Nr   rL  )rå   r¯  rQ  r  s    r@   r!  Ú/TerminalProgressPlugin.pytest_collection_finishà  s9   € à�}‰}Ñ(Ð(Ð(Ø�=‰=×'Ñ'¨!Ó+à×Ñ ¨!Õ,ð ,rB   c                óH  • UR                   (       a  SU l        UR                  S:w  a  g U R                  c   eU R                  R                  nUS:”  aN  U R
                  R                  n[        US-  U-  S5      nU R                  U R                  (       a  SOSU5        g g )NTÚcallr   rÆ  r.   rL  )	r'   rG  rÍ   rå   r¯  rF  r  ÚminrQ  )r>   rÏ   rÍ  Úreportedr‹   s        r@   r¬  Ú/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ð rB   c                ó&   • U R                  S5        g )NrK  )rQ  r  s    r@   rK  Ú+TerminalProgressPlugin.pytest_sessionfinishø  s   € à×Ñ˜HÕ%rB   )rG  rå   rF  )rH  r¥   rT   rU   rV   )rO  z?Literal['remove', 'normal', 'error', 'indeterminate', 'paused']r‹   r  rT   rU   r  r  r  )rW   rX   rY   rZ   r[   r=   rQ  r   r  r!  r¬  rK  r\   rO   rB   r@   rD  rD  ¤  s…   † ñô#ð  $ð$1àNð$1ð ð$1ð 
õ	$1ðL ó-ó ð-ð
 ó-ó ð-ð óWó ðWð  ó&ó ó&rB   rD  )rH   r   rT   rU   )r±   r   rT   rU   )r±   r   rT   rP   )rÏ   r#   rT   ztuple[str, str, str])r  r   r±   r   r¦  r#   )rÈ  rP   rŸ   rP   rª  r�   rT   rS   )
r±   r   r¦  r#   r  r   r'  zdict[str, bool]rT   rP   )rê   r
   r)   zSequence[CollectReport]rT   z&list[tuple[int, str, int | None, str]])ri   r�   r1  rP   rT   ztuple[int, str])rT   r÷  )rï  ÚfloatrT   rP   )rÏ   r%   rT   rP   )Zr[   Ú
__future__r   ÚargparseÚcollectionsr   Úcollections.abcr   r   r   r   Údataclassesr:  Ú	functoolsr	   r.  Úpathlibr
   r¯   r¦   rH  Ú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   r_   r•   r²   rÂ   rÐ   Ú	dataclassrÒ   r¥   rÞ  r¢  rÖ  ré  rÔ  rÕ  r  r  rÇ  rÌ  r¡  rD  rO   rB   r@   Ú<module>rt     sÖ  ðñõ
 #ã Ý Ý $Ý %Ý #Ý $Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý Ý 'Ý ,Ý &Ý (Û Ý (Ý (Ý !Ý #Ý #Ý ,Ý Ý Ý (Ý 'Ý &Ý )Ý &ö Ý$ð  #Ð ð€ð Ð ô"=�h—o‘oô "=ôJ/˜ô /ô(Wôt?ô"ñ2 
�$Ñó,ó ð,ð ×Ñ÷ð ó ðð8 ÷e!ð e!ó ðe!ôP#ôð2!Øð!Ø#ð!Ø)7ð!ØFUð!àô!ðHØðà$ðð ,ôð@ ØØØØØñ€ð #Ð ô
5ôô(ôDô.÷*V&ò V&rB   