ó
    Eñi¼û  ã                  ó�  • 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         €ÚM/home/mande/repo/quber/.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           
     óN  • 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(9  UR                  S)S*SS+SS,S-9  UR                  S.S/SS0SS1S9  UR                  S2SS0S3S49  UR                  S5S6S$S7S8/ S9QS:S;9  UR                  S<SS=SS>S9  UR                  S?S$S@/ SAQSBSCSD9  UR                  SESFSSSGSH9  UR                  SISJS$SJS8/ SKQSLS;9  UR                  SMSNSNSO/SPSQ9  U R                  SRSSSTSU9  [        R                  " U [        R                  SVSW9  g )XNz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-rÚ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Â   3  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Ð   L  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_locationn  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SWSXS jjr  SYS jr\SZS 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\SZS j5       rS]S jrS^S jrS_S`S jjrSaS jrSSSS.           SbS jjrSS.ScS jjrSS.SdS jjrSaS jrSeS jrSfS jr  Sg         ShS jjrSiSjS jjrSkS jrSlS jrSmS  jr      SnS! jrSoS" jrSpS# jr       SqS$ jr!SrS% jr"\S[S& j5       r#\$" S'S(9SsS) j5       r%StS* jr&SaS+ jr'SaS, jr(\SZS- j5       r)SaS. jr*SuS/ jr+SvSwS0 jjr,\$" S'S19SxS2 j5       r-    SyS3 jr.SzS4 jr/SxS5 jr0SpS6 jr1\$" S'S(9      S{S7 j5       r2\$" S'S(9S|S8 j5       r3S}S9 jr4SaS: jr5SaS; jr6          S~S< jr7S= r8S> r9SS? jr:SaS@ jr;SaSA jr<SaSB jr=        S€SC jr>S�SD jr?S‚SE jr@SƒSF jrASaSG jrBSaSH jrCSSI.         S„SJ jjrDSaSK jrES…SL jrFSaSM jrGSaSN jrHS†SO jrIS‡SP jrJSaSQ jrKSˆSR jrLS‰SS jrM  SˆST jrN  SˆSU jrOSVrPg)Šr¥   iy  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5      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ú::r   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Ó(:¸1Ñ(=Ñ=ˆØ×ÑÑ%¨×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(  r?  r@  r.  rE  Ú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>   rH  r(  r.  s       r@   r,  ÚTerminalReporter.write  s   € Ø�‰�Š�wÑ6 eÐ6¨vÓ6rB   c               ó6   • U R                   R                  XS9  g )NrL  )rì   Ú	write_raw)r>   rH  r(  s      r@   rP  Ú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   r.  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   r.  rY  Ú
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>   ra  Útitlerí   r.  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ì   ra  )r>   rb  ra  Úkws       r@   ÚsectionÚTerminalReporter.section7  s   € Ø�‰�Š�SÑ& 2Ó&rB   c                ó>   • U R                   R                  " U40 UD6  g rV   )rì   r   )r>   rŸ   rf  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_internalerrorC  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.warningsrx  rÛ   ÚlinenorÒ   rq  )r>   Úwarning_messagerÔ   rx  rÕ   rÓ   Úwarning_reports          r@   Úpytest_warning_recordedÚ(TerminalReporter.pytest_warning_recordedH  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_registeredW  s4   € Ø�;‰;×Ñ×)×)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *rB   c                ó(   • U R                  SU5        g )Nr*   )rq  )r>   ro  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  Ú_locationliner8  r(  r  r1  )r>   rÔ   Úlocationr/  rz  Údomainr   s          r@   Úpytest_runtest_logstartÚ(TerminalReporter.pytest_runtest_logstartb  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™   )Úcyanr4  )+Ú
_tests_ranr_   r±   ÚhookrÐ   ra   rb   rc   rV  Útuplerq  Úhasattrr(   r'   r)   rõ   ÚaddrÔ   r  r   r“   rì   r,  rø   Ú_is_last_itemÚ(_write_progress_information_if_past_edger‡  rˆ  r8  Ú_get_raw_skip_reasonrí   rE  r  Ú_format_trimmedrJ  r+  r;  r‘  ÚgatewayÚidÚ!_get_progress_information_messagerï   r(  )r>   rÏ   Úrepr-  ra   rb   rc   r.  Ú	was_xfailr   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 r@   Úpytest_runtest_logreportÚ)TerminalReporter.pytest_runtest_logreportp  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  óF   >#   • 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  ól   >#   • 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   ƒ4ž4c              3  ó8   #   • U  H  oR                   v •  M     g 7frV   )rÔ   ©r¹  r¿  s     r@   r¼  r½  ó  s   é € Ð4TÂ|À!·X¶XÂ|ùs   ‚c              3  óh   #   • U  H(  n[        U[        5      (       d  M  UR                  v •  M*     g 7frV   )rV  r%   ÚdurationrÁ  s     r@   r¼  r½  õ  s   é € ÐVªL q¼JÀqÌ*×<U›
˜Ÿ
ž
ªLùs   ‚2Ÿ2éd   Ú3dz%]r“  )rå   r­  rø   r  r  rP   ÚformatÚ_get_reports_to_displayrˆ  rÔ   rö   Úsumro  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ì   rE  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'   rq  r)   r±  rV  r   rä   r  ró   Úreport_collect)r>   rÏ   r"  ro  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Á5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ä  rY  r>  )r±   r©   rj   rú   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rù   r  rç   r#  rä   rP   ró   r^  r,  rœ   )r>   r   rU  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  rc  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_sessionstartM  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   )ÚreversedrV  rP   rœ   )r>   r  Úline_or_linesr   s       r@   r  Ú/TerminalReporter._write_report_lines_from_hooksh  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_headerr  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ø  ro  Úcollectonlyr·  r¶   r'   Ú!zcollection failures)rè  r±   r™  Úpytest_report_collectionfinishrê   ro  r  r  r©   rj   rì   r   Ú_printcollecteditemsrç   r#  ra  Ú
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   Úsortedro  rì   r   rÔ   Ú	listchainr  r[  r  rF   ÚinspectÚgetdocÚ
splitlinesrÆ  )r>   ro  Ú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                  4nX$;   a?  U R                  (       d.  U R                  R                  R                  XU R                  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R"                  (       a$  U R                  S[        UR"                  5      SS9  U R%                  5         U$ 7f)Nr¶   )r—   Ú
exitstatusr±   r  T)r�  )rì   r   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDrn   r±   r™  Úpytest_terminal_summaryÚ
shouldfailrc  rP   Ú_report_keyboardinterruptrü   Ú
shouldstopÚsummary_stats)r>   r  r9  r±  Úsummary_exit_codess        r@   Úpytest_sessionfinishÚ%TerminalReporter.pytest_sessionfinish¼  s  é € ò ˆØ�‰�‰�bÔä�K‰KÜ×!Ñ!Ü× Ñ Ü× Ñ Ü×'Ñ'ð
Ðð Ó+°D·O·OØ�K‰K×Ñ×4Ñ4Ø!%ÀTÇ[Á[ð 5ñ ð ××Ø�N‰N˜3¤ G×$6Ñ$6Ó 7¸TˆNÑBØœ×-Ñ-Ó-Ø×*Ñ*Ô,Ø+/ˆDÕ(Ø××Ø�N‰N˜3¤ G×$6Ñ$6Ó 7¸TˆNÑBØ×ÑÔØˆùs   ‚EE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@   r?  Ú(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ü   rA  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Ó   rc  r±   r©   Ú	fulltracer  rì   r   )r>   rt  rŸ   s      r@   rA  Ú*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(       ax  U" U5      nT R                   S:¼  a[  UR                  S5      S   UR                  S[        R                  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'  r   Ú\z <- z
[location]r™   )rÔ   rP   rT   rP   )r
  r*  r¾   r   ÚSEPr"   rê   r
   )r>   rÔ   r/  rz  r‰  rb  r-  s   `   `  r@   r‡  ÚTerminalReporter._locationlineý  sŽ   ù€ ÷	ð 	ö Ù˜“-ˆCØ�~‰~ Ó" v§|¡|°DÓ'9¸!Ñ'<ÀÇÁØ”e—i‘ióAó (ð �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¤  rh  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   Úlongreprr[  ÚAttributeError)r>   r¤  s     r@   Ú_getcrashlineÚTerminalReporter._getcrashline  sX   € ð	Ü�s—|‘|×-Ñ-Ó.Ð.øÜó 	ðÜ˜3Ÿ<™<Ó(¨¨"Ð-Ò-øÜ!ó Úðúð	ús,   ‚! ¡
A¬AÁAÁ
AÁAÁAÁA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>   r1  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>F  s'   é € ð -Ú:C°3”C˜“H—N‘N 4¨Ó+¨AÖ.º)ùr&  c              3  óZ   #   • 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¼  rz  I  s1   é € ð !â :™˜ð '×-Ñ-¨a¸1¸q»5±CÀb×IÐIÚ :ùs   ‚)+)	rÞ   r±   r  r  rš   r›   rP   r   ro  )ÚreportsÚ	locationsr¼   rˆ  Úcounts_by_filenamer>   s        €r@   Úcollapsed_location_reportÚDTerminalReporter.summary_warnings.<locals>.collapsed_location_report<  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>U  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  rl  rÓ   r  rc  ro  rì   r   r.  rš   Úrstrip)r>   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrr�  rb  rÓ   Úmessage_reportsÚmaybe_locationr  Úindenteds   `            r@   rK  Ú!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@   rL  ÚTerminalReporter.summary_passes_  s   € Ø×$Ñ$ X¨x¸Õ=rB   c                ó*   • U R                  SSS5        g )Nr,   ÚXPASSESÚXr‘  r  s    r@   rM  Ú TerminalReporter.summary_xpassesb  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$  rs  rc  Úsectionsri  Ú_outrep_summaryÚ_handle_teardown_sectionsrÔ   )r>   Úwhich_reportsÚ	sep_titleÚ
needed_optr~  r¤  rŸ   s          r@   r’  Ú(TerminalReporter.summary_passes_combinede  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Ê   )rs  rÍ   rÔ   )r>   rÔ   r~  rÏ   s       r@   Ú_get_teardown_reportsÚ&TerminalReporter._get_teardown_reportsu  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ì   ra  r   ©r>   r¤  rƒ   ÚsecnamerH  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@   rI  Ú!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@   rJ  Ú"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$  rs  rc  ro  rš  rœ   ri  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   rs  rc  rç   ri  rÍ   rš  )r>   r~  r¤  rŸ   s       r@   rH  Ú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™  ra  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í   r.  r  r  rš   Úformat_session_durationrí  ra  rc  rœ   )r>   Úsession_durationÚpartsrÛ  Ú
line_partsÚdisplay_seprí   Útextr.  Úwith_markuprŸ   Úmain_markuprÃ  Úduration_with_markupÚmarkup_for_end_seps                  r@   rC  Ú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ì   r.  Ú_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ì   r.  Ú
startswithr  r  )r  r)   Úfskipsr×  rØ  rÙ  r5  Únumr/  rz  r§  r>   s              €r@   Úshow_skipped_foldedÚ@TerminalReporter.short_test_summary.<locals>.show_skipped_folded  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#  rm  rV  rš  r  rÕ  r±   rÌ  rì   r.  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_unfolded1  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_skippedD  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#  rc  rœ   )r>   rÐ  rÚ  rÝ  rë  ÚREPORTCHAR_ACTIONSr  rÁ   rk   r   rå  rè  s   `         @@r@   rN  Ú#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�  rn  r  s    r@   r×  Ú TerminalReporter._get_main_color^  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_colore  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@   rn  Ú TerminalReporter._set_main_colorq  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_linez  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ˆ   r.  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*   rU  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   r.  rR   rT   rU   r½  )r5  rP   r6  rP   rT   rU   ©rT   rU   )rH  rP   r(  rR   r?  r�   r@  rP   r.  rR   rT   rU   )rH  rP   r(  rR   r.  rR   rT   rU   )rH  rP   r(  rR   rT   rU   )r   zstr | bytesr.  rR   rT   rU   )r   rP   r.  rR   rT   rU   )NN)
ra  rP   rb  rS   rí   ú
int | Noner.  rR   rT   rU   )rò  )rb  rP   ra  rP   rf  rR   rT   rU   )rŸ   rP   rf  rR   rT   rU   )ra   rP   ro  zSequence[Any]rT   rU   )rt  r   rT   rR   )r{  zwarnings.WarningMessagerÔ   rP   rT   rU   )r€  r   rT   rU   )ro  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&   r9  zint | ExitCoderT   úGenerator[None])rT   r  )rS  zExceptionInfo[BaseException]rT   rU   )
rÔ   rP   r/  rP   rz  r  r‰  rP   rT   rP   )r1  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])QrW   rX   rY   rZ   r=   r÷   Úpropertyr
  r  rm   rn   r  Úsetterr  r  r$  r1  r8  r;  rJ  r,  rP  r(  rœ   r^  rc  rg  r   rq  ru  r}  r�  r„  rŠ  rª  r�  r   r²  r£  rž  r+  rÖ  rå  ré  rè  r  r  r   r  r  rE  r?  rT  rW  rA  r‡  ri  ro  rs  rK  rL  rM  r’  r¡  r›  r¤  rI  rJ  r­  rH  rš  rC  rN  r×  rö  rn  r¾  rÇ  r   rÿ  r\   rO   rB   r@   r¥   r¥   y  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ÑðØðØ,:ðà	óó ðñ4 �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ó  )r`  rÔ   r*  r.  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Õ  r.  rÖ  r   rV  rm  rP   r[  rÓ   r   r©   rj   rq   rí   r   rn  )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)rm  rV  rš  r  r"   r
   rF   rÍ   rl  r  ro  )rê   r)   ÚdÚeventr/  rz  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  =  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€  Údistr1  s        r@   r  r  J  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¿  X  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?r0  gü©ñÒMbP?z.1fg{®Gáz„?iè  Úmsgš™™™™™¹?rD   r/  rÇ   i  z.0fzm zh ÚmrO   r1  s    r@   rÊ  rÊ  a  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)   rV  rm  rš  )rÏ   r§  rÜ  s      r@   rŸ  rŸ  x  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;\TrL  )r>  rP  )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 )NrE  )rå   rI  )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   rD  )rå   r­  rI  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.   rD  )	r'   r?  rÍ   rå   r­  r>  r  ÚminrI  )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 )NrC  )rI  r  s    r@   rE  Ú+TerminalProgressPlugin.pytest_sessionfinishá  s   € à×Ñ˜HÕ%rB   )r?  rå   r>  )r@  r¥   rT   rU   rV   )rG  z?Literal['remove', 'normal', 'error', 'indeterminate', 'paused']r‹   r  rT   rU   r  r  r  )rW   rX   rY   rZ   r[   r=   rI  r   r  r  rª  rE  r\   rO   rB   r@   r<  r<  �  s…   † ñô#ð  $ð$1àNð$1ð ð$1ð 
õ	$1ðL ó-ó ð-ð
 ó-ó ð-ð óWó ðWð  ó&ó ó&rB   r<  )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�   r)  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   Údataclassesr2  Ú	functoolsr	   r,  Úpathlibr
   r¯   r¦   rF  Ú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Ÿ  r<  rO   rB   r@   Ú<module>rl     sÖ  ðñõ
 #ã Ý Ý $Ý %Ý #Ý $Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý Ý 'Ý ,Ý &Ý (Û Ý (Ý (Ý !Ý #Ý #Ý ,Ý Ý Ý (Ý 'Ý &Ý )Ý &ö Ý$ð  #Ð ð€ð Ð ô"=�h—o‘oô "=ôJ/˜ô /ô(Vôr?ô"ñ2 
�$Ñó,ó ð,ð ×Ñ÷ð ó ðð8 ÷O!ð O!ó ðO!ôd"ôð2!Øð!Ø#ð!Ø)7ð!ØFUð!àô!ðHØðà$ðð ,ôð@ ØØØØØñ€ð #Ð ô
5ôô(ôDô.÷*V&ò V&rB   