ó
    áÅŸg1à  ã                  ób  • S 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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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)rSSK*J+r+  SSK,J-r-  SSK,J.r.  SSK,J/r/  SSK,J0r0  SSK1J2r2  SSK3J4r4  SSK3J5r5  SS K6J7r7  SS!K6J8r8  SS"K9J:r:  SS#K9J;r;  SS$K9J<r<  \(       a  SS%K=J>r>  S&r?S'r@S(rA " S) S*\R„                  5      rC " S+ S,\5      rDSCS- jrESDS. jrFSES/ jrG\0" S0S19SFS2 j5       rH\R’                   " S3 S45      5       rJ\ " S5 S65      5       rKSGS7 jrLSHS8 jrM          SIS9 jrN      SJS: jrOS;S;S<S=S>.rPS<rQSKS? jrRSLS@ jrSSMSA jrTSNSB jrUg)OzsTerminal reporting of the full testing process.

This is a good source for looking at the various reporting hooks.
é    )ÚannotationsN)ÚCounter)Úpartial)ÚPath)ÚAny)ÚCallable)ÚClassVar)Úfinal)Ú	Generator)ÚLiteral)ÚMapping)Ú
NamedTuple)ÚSequence)ÚTextIO)ÚTYPE_CHECKING)Ú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Ú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éL   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__)Úselfr3   r4   r6   r7   r8   Ú	__class__s         €ÚQ/var/www/blue/EV-Temp_rev04/venv/lib/python3.13/site-packages/_pytest/terminal.pyr:   ÚMoreQuietAction.__init__S   s)   ø€ ô 	‰ÑØ)ØØØØØð 	ò 	
ó    c                óŒ   • [        X R                  S5      S-
  n[        X R                  U5        [        USS5      S-   Ul        g )Nr   é   Úquiet)Úgetattrr4   ÚsetattrrB   )r;   ÚparserÚ	namespaceÚvaluesÚoption_stringÚ	new_counts         r=   Ú__call__ÚMoreQuietAction.__call__d   s<   € ô ˜I§y¡y°!Ó4°qÑ8ˆ	Ü�	Ÿ9™9 iÔ0ä! )¨W°aÓ8¸1Ñ<ˆ	�r?   © )NFN)r3   zSequence[str]r4   Ústrr6   Úobjectr7   Úboolr8   ú
str | NoneÚreturnÚNone©N)
rE   zargparse.ArgumentParserrF   zargparse.NamespacerG   zstr | Sequence[object] | NonerH   rP   rQ   rR   )	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r:   rJ   Ú__static_attributes__Ú__classcell__)r<   s   @r=   r0   r0   L   s–   ø† ñð ØØð
à%ð
ð ð
ð ð	
ð
 ð
ð ð
ð 
÷
ð 
ð, %)ð
=à'ð
=ð &ð
=ð .ð	
=ð
 "ð
=ð 
÷
=ó 
=r?   r0   c                  ó8   • \ rS rSr% SrS\S'   S\S'   S\S'   Srg	)
ÚTestShortLogReportéq   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.
rM   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordrL   N)rT   rU   rV   rW   rX   Ú__annotations__rY   rL   r?   r=   r\   r\   q   s   ‡ ñð ƒMØƒKØ
.Ö.r?   r\   c           
     ó(  • 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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S-SS.S9  UR                  S/SS-S0S19  UR                  S2S3S!S4S5/ S6QS7S89  UR                  S9SS:SS;S9  UR                  S<S!S=/ S>QS?S@SA9  UR                  SBSCSSSDSE9  UR                  SFSGS!SGS5/ SHQSIS89  UR                  SJSKSKSL/SMSN9  U R                  SOSPSQSR9  [        R                  " U [        R                  SSST9  g )UNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr6   r4   r8   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.)rh   r4   r6   r8   z-qz--quietzDecrease verbosityz--verbosityzSet verbosity. Default: 0.)r4   Útyper6   r8   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').)rh   r4   r6   Úmetavarr8   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r6   r4   rh   r8   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))rh   r4   r8   z--tbÚstyleÚtbstyleÚauto)rw   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rr   rh   r4   r6   Úchoicesr8   z
--xfail-tbÚxfail_tbz1Show tracebacks for xfail (as long as --tb != no)z--show-captureÚshowcapture)rz   ÚstdoutÚstderrÚlogÚallrƒ   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)rh   r4   r}   r6   r8   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))rh   r6   r8   z--colorÚcolor)Úyesrz   rw   z#Color terminal output (yes/no/auto)z--code-highlightr…   rz   zSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r6   r}   r8   Ú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)r8   r6   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.)r8   )	ÚgetgroupÚ
_addoptionr0   ÚintÚ_REPORTCHARS_DEFAULTÚaddinir   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rE   Úgroups     r=   Úpytest_addoptionr�   …   s¹  € Ø�O‰OÐ0°+ÀYˆOÐO€EØ	×ÑØØØØØØ!ð ñ ð 
×ÑØØØØØð ñ ð 
×ÑØØØØØð ñ ð 
×ÑØØØØØ:ð ñ ð 
×ÑØØÜØØØ!ð ñ ð 
×ÑØØÜØØ)ð ñ ð 
×ÑØØØÜ$Øð>ð ñ ð 
×ÑØØ#ØØØØ'ð ñ ð 
×ÑØØØØØØ>ð ñ ð 
×ÑØØØØUð	 ñ ð 
×ÑØØØØØÚAØDð ñ ð 
×ÑØØØØØ@ð ñ ð 
×ÑØØØÚ8Øðð ñ ð 
×ÑØØØØØ;ð ñ ð 
×ÑØØØØØÚ%Ø2ð ñ ð 
×ÑØØØ˜�ðð	 ñ ð ‡M�MØð)ð ð ñ ô ×ÒØÜ×#Ñ#ðbó	r?   c                ó8  ^• [        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        g g )NÚterminalreporterc                ól   >• SR                  [        [        U5      5      nTR                  SU-   5        g )NÚ z[traceconfig] )ÚjoinÚmaprM   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €r=   ÚmywriterÚ"pytest_configure.<locals>.mywriter  s+   ø€ Ø—(‘(œ3œs D›>Ó*ˆCØ×ÑÐ 0°3Ñ 6Õ7r?   zpytest:config)ÚTerminalReporterÚsysr€   ÚpluginmanagerÚregisterÚoptionÚdebugÚtraceconfigÚtraceÚrootÚsetprocessor)Úconfigrœ   r›   s     @r=   Úpytest_configurer©     si   ø€ Ü ¬¯
©
Ó3€HØ
×Ñ×!Ñ! (Ð,>Ô?Ø‡}�}××˜fŸm™m×7×7õ	8ð 	�‰×Ñ×&Ñ& ¸ÕAð 8r?   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¢   rp   Úlowerrs   Úreplace)r¨   rp   Úold_aliasesÚ
reportoptsÚchars        r=   Úgetreportoptr¹   #  sÂ   € Ø—}‘}×0Ñ0€Kà˜�*€KØ€JÛˆØÓØ—:‘:“<ˆDØ�3‹;Ø ŠJØ�S‹[Ø"ŠJØ�S‹[ØŠJØÕ#ØÑŠJñ ð �=‰=×)×)¨c¸Ó.CØ˜:Ñ%ˆ
ð Ðð 
�‰×	'×	'¨C°:Ó,=Ø×'Ñ'¨¨RÓ0ˆ
àÐr?   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)Úreportr_   rÃ   s      r=   Úpytest_report_teststatusrÇ   <  sW   € à€FØ‡}‡}Ø‰Ø	��Øˆà—>‘>€GØ‡{�{Ð6Ó6¸7ÀhÓ;NØˆØˆà˜GŸM™M›OÐ+Ð+r?   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)ÚWarningReportiL  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``).
rM   ÚmessageNrP   Ú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_location^  sW   € à�;�;Ø—;‘;ÐØ�?�?Ø $§¡ÑˆHÜ! &×":Ñ":×">Ñ">ÄÈXÓ@VÓWˆGØ�Y˜a ˜yÐ)Ð)Ør?   rL   )r¨   r   rQ   rP   )rT   rU   rV   rW   rX   ra   rË   rÌ   rÍ   rÕ   rY   rL   r?   r=   rÉ   rÉ   L  s3   ‡ ñð ƒLØ€FˆJÓØ)-€JÐ&Ó-à&*Ð˜8Ó*÷r?   rÉ   c                  óX  • \ rS rSrSUSVS jjrSWS jr\SXS j5       r\SYS j5       r\SYS j5       r	\SYS j5       r
\SYS	 j5       r\R                  SZS
 j5       r\SYS j5       rS[S jrS\S jrS]S^S jjrS_S jrSSSS.           S`S jjrSS.SaS jjrS_S jrSbS jrScS jr  Sd         SeS jjrSfSgS jjrShS jrSiS jrSjS jr      SkS jrSlS  jrSmS! jr      SnS" jrSoS# jr \SYS$ j5       r!\"" S%S&9SpS' j5       r#SqS( jr$S_S) jr%S_S* jr&\SXS+ j5       r'S_S, jr(SrS- jr)SsStS. jjr*\"" S%S/9SuS0 j5       r+    SvS1 jr,SwS2 jr-SuS3 jr.SmS4 jr/\"" S%S&9      SxS5 j5       r0\"" S%S&9SyS6 j5       r1SzS7 jr2S_S8 jr3S_S9 jr4          S{S: jr5S; r6S< r7S|S= jr8S_S> jr9S_S? jr:S_S@ jr;        S}SA jr<S~SB jr=SSC jr>S€SD jr?S_SE jr@S_SF jrASSG.         S�SH jjrBS_SI jrCS‚SJ jrDS_SK jrES_SL jrFSƒSM jrGS„SN jrHS_SO jrIS…SP jrJS†SQ jrK  S…SR jrL  S…SS jrMSTrNg)‡rž   ii  Nc                ót  • 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        UR1                  5       U l        [3        5       U l        U R7                  5       U l        S 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¹   rp   r¢   rm   ÚfoldskippedÚ	hasmarkupÚisattyÚsetÚ_progress_nodeids_reportedÚ_determine_show_progress_infoÚ_show_progress_infoÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)r;   r¨   ÚfileÚ_pytests       r=   r:   ÚTerminalReporter.__init__k  sù   € ÛàŒØˆÔØ(,ˆŒØ(,ˆÔà+-ˆŒ
Ø'+ˆÔØ.2ˆÔØ×1Ñ1×5Ñ5ˆŒØ‰<Ü—:‘:ˆDØ—>‘>×8Ñ8¸ÓFˆŒØ!ŸX™X×/Ñ/ˆÔØ6:ˆÔÜ'¨Ó/ˆÔØ!Ÿ=™=×5Ñ5ˆÔØŸ™×+Ñ+ˆŒØ—k‘k“mˆŒÜ47³EˆÔ'Ø#'×#EÑ#EÓ#GˆÔ Ø8<ˆÔ'Ø7;ˆÔ(Ø=AˆÕ$r?   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	g)
zRReturn whether we should display progress information based on the current config.Úcapturerz   r†   úprogress-even-when-capture-noFÚ	setupshow>   r‡   rö   r‡   rf   )r¨   Ú	getoptionÚgetini)r;   Úcfgs     r=   rì   Ú.TerminalReporter._determine_show_progress_info†  s…   € ð
 �K‰K×!Ñ! )¨TÓ2°dÓ:Ø—‘×"Ñ"Ð#9Ó:Ø.ó/ð à�;‰;× Ñ  ¨e×4Ñ4ØØ—;‘;×%Ñ%Ð&<Ó=ˆØÐ?Ó?ØØ�G‹^Øàr?   c                óF   • U R                   R                  R                  nU$ rS   )r¨   r¢   rg   )r;   Ú	verbositys     r=   rý   ÚTerminalReporter.verbosity›  s   € àŸ™×+Ñ+×3Ñ3ˆ	ØÐr?   c                ó    • U R                   S:¬  $ rÙ   )rý   ©r;   s    r=   Ú
showheaderÚTerminalReporter.showheader   s   € à�~‰~ Ñ"Ð"r?   c                óT   • [        U R                  R                  R                  5      $ rS   )rO   r¨   r¢   rj   r   s    r=   rj   ÚTerminalReporter.no_header¤  s   € ä�D—K‘K×&Ñ&×0Ñ0Ó1Ð1r?   c                óT   • [        U R                  R                  R                  5      $ rS   )rO   r¨   r¢   rk   r   s    r=   rk   ÚTerminalReporter.no_summary¨  s   € ä�D—K‘K×&Ñ&×1Ñ1Ó2Ð2r?   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Ø×ÑÐr?   c                ó   • Xl         g rS   )rÝ   )r;   Úvalues     r=   r	  r
  ²  s   € à Õr?   c                óZ   • U R                   R                  [        R                  5      S:„  $ rÙ   )r¨   r  r   rŽ   r   s    r=   ÚshowlongtestinfoÚ!TerminalReporter.showlongtestinfo¶  s"   € à�{‰{×(Ñ(¬×)DÑ)DÓEÈÑIÐIr?   c                óF   • SSS.R                  X5      nXR                  ;   $ )NÚxr¾   )r*   r(   )Úgetrp   )r;   r¸   s     r=   ÚhasoptÚTerminalReporter.hasoptº  s&   € Ø¨3Ñ/×3Ñ3°DÓ?ˆØ×'Ñ'Ñ'Ð'r?   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¨&Ó1r?   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Õð r?   c                ój   • U R                   (       a"  U R                  R                  5         S U l         g g rS   )ræ   rã   r{   r   s    r=   Úensure_newlineÚTerminalReporter.ensure_newlineÒ  s%   € Ø××Ø�H‰H�M‰MŒOØ!%ˆDÕð r?   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  r4  Úwrappeds           r=   Ú
wrap_writeÚTerminalReporter.wrap_write×  sw   € ð !%§¡× >Ñ >ÐØ—-‘-Ü�MŠMØÐ+Ñ+¨gÑ5Ø×(Ñ(¨6Ñ1Ø $Ø#(ñ	ó
ˆð Ð0Ð1ˆØ�‰�Š�wÑ6 eÐ6¨vÓ6r?   )r  c               óB   • U R                   R                  " U4SU0UD6  g )Nr  )rã   r  )r;   r7  r  r  s       r=   r  ÚTerminalReporter.writeí  s   € Ø�‰�Š�wÑ6 eÐ6¨vÓ6r?   c                ó8   • U R                   R                  5         g rS   )rã   r  r   s    r=   r  ÚTerminalReporter.flushð  s   € Ø�‰�‰Õr?   c                óœ   • [        U[        5      (       d
  [        USS9nU R                  5         U R                  R                  " U40 UD6  g )Nrµ   )Úerrors)Ú
isinstancerM   r*  rã   r{   )r;   r{   r  s      r=   r—   ÚTerminalReporter.write_lineó  s<   € Ü˜$¤×$Ñ$Ü�t IÑ.ˆDØ×ÑÔØ�‰�Š�dÑ%˜fÓ%r?   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.
ÚeraseFrA   r”   r­   ÚN)Úpoprã   rä   ÚlenrM   r  )r;   r{   r  rD  Ú
fill_countÚfills         r=   ÚrewriteÚTerminalReporter.rewriteù  sj   € ð —
‘
˜7 EÓ*ˆÞØŸ™×+Ñ+¬c°$«iÑ7¸!Ñ;ˆJØ˜Ñ#‰DàˆDÜ�4‹yˆØ�‰�Š�t˜d‘{ TÑ)Ñ4¨VÓ4r?   c                ó`   • U R                  5         U R                  R                  " XU40 UD6  g rS   )r*  rã   Úsep)r;   rM  Útitlerä   r  s        r=   Ú	write_sepÚTerminalReporter.write_sep  s'   € ð 	×ÑÔØ�‰�Š�S Ñ5¨fÓ5r?   c                ó>   • U R                   R                  " X!40 UD6  g rS   )rã   rM  )r;   rN  rM  Úkws       r=   ÚsectionÚTerminalReporter.section  s   € Ø�‰�Š�SÑ& 2Ó&r?   c                ó>   • U R                   R                  " U40 UD6  g rS   )rã   r{   )r;   rš   rR  s      r=   r{   ÚTerminalReporter.line  s   € Ø�‰�Š�cÑ ˜RÓ r?   c                ó¦   • XR                   ;  nU R                   R                  U/ 5      R                  U5        U(       a  U R                  5         g g rS   )rÞ   Ú
setdefaultÚextendÚ_set_main_color)r;   r^   ÚitemsÚset_main_colors       r=   Ú
_add_statsÚTerminalReporter._add_stats  sA   € Ø!¯©Ñ3ˆØ�
‰
×Ñ˜h¨Ó+×2Ñ2°5Ô9ÞØ× Ñ Õ"ð r?   c                ón   • [        U5      R                  S5       H  nU R                  SU-   5        M     g)Nr-  zINTERNALERROR> T)rM   r  r—   )r;   Úexcreprr{   s      r=   Úpytest_internalerrorÚ%TerminalReporter.pytest_internalerror!  s0   € Ü˜“L×&Ñ& tÖ,ˆDØ�O‰OÐ-°Ñ4Ö5ñ -àr?   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.warningsrd  rÒ   ÚlinenorÉ   r]  )r;   Úwarning_messagerË   rd  rÌ   rÊ   Úwarning_reports          r=   Úpytest_warning_recordedÚ(TerminalReporter.pytest_warning_recorded&  sI   € õ
 	;à$×-Ñ-¨×/EÑ/EÐEˆ
Ù'¨Ó8ˆä&Ø!¸6ñ
ˆð 	�‰˜
 ^Ð$4Õ5r?   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_registered5  s4   € Ø�;‰;×Ñ×)×)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *r?   c                ó(   • U R                  SU5        g )Nr)   )r]  )r;   r[  s     r=   Úpytest_deselectedÚ"TerminalReporter.pytest_deselected=  s   € Ø�‰˜ eÕ,r?   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	  r   )r;   rË   Úlocationr  rf  Údomainr{   s          r=   Úpytest_runtest_logstartÚ(TerminalReporter.pytest_runtest_logstart@  si   € ð "*Ñˆ˜ð × × Ø×%Ñ% f°fÓEˆDØ×$Ñ$ T¨2Ô.Ø�J‰J�LØ�_�_Ø×$Ñ$ V¨RÔ0Ø�J‰J�Lð r?   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%]rA   z ({})z (Ú)Ú[Ú]r”   )Úcyanr#  )+Ú
_tests_ranr\   r¨   ÚhookrÇ   r^   r_   r`   rA  Útupler]  Úhasattrr'   r&   r(   rë   ÚaddrË   r  r   rŽ   rã   r  rí   Ú_is_last_itemÚ(_write_progress_information_if_past_edgers  rt  r'  Ú_get_raw_skip_reasonrä   r4  rG  Ú_format_trimmedr9  r  r*  r}  ÚgatewayÚidÚ!_get_progress_information_messageræ   r  )r;   rÆ   Úrepr  r^   r_   r`   r  Ú	was_xfailr{   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 r=   Úpytest_runtest_logreportÚ)TerminalReporter.pytest_runtest_logreportN  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Ô*Ø%'�Ô"Ø�
‰
�r?   c                óx   • U R                   c   e[        U R                  5      U R                   R                  :H  $ rS   )rÜ   rG  rë   Útestscollectedr   s    r=   r‰  ÚTerminalReporter._is_last_itemš  s2   € à�}‰}Ñ(Ð(Ð(Ü�4×2Ñ2Ó3°t·}±}×7SÑ7SÑSÐSr?   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                ól  • U R                   (       d   eU R                   R                  nU R                  S:X  aT  U(       aD  [        U R                  5      nS[        [        U5      5       S3nSU S3nUR                  X!5      $ SU SU S3$ U(       a   S[        U R                  5      S	-  U-  S
 S3$ g)Nrf   z{:zd}ú [z/{}]z [ z / z ]éd   Ú3dz%]r  )rÜ   r™  rí   rG  rë   rM   Úformat)r;   Ú	collectedr‡   Úcounter_formatÚformat_strings        r=   r�  Ú2TerminalReporter._get_progress_information_message­  s¾   € Ø�}�}Ðˆ}Ø—M‘M×0Ñ0ˆ	Ø×#Ñ# wÓ.ÞÜ˜t×>Ñ>Ó?�Ø#&¤s¬3¨y«>Ó':Ð&;¸3Ð!?�Ø"$ ^Ð$4°FÐ ;�Ø$×+Ñ+¨HÓ@Ð@Ø˜˜ 3 y k°Ð4Ð4æàœ˜T×<Ñ<Ó=ÀÑCÀyÑPÐQSÐTÐTVÐWðð r?   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[	        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 )	Nrf   r¡  Ú/r‚  r  rA   r-  T)
Ú_width_of_current_linerí   rÜ   r™  rG  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ä! )›nˆOØÑ'¨!Ñ+¨t×/AÑ/AÑAˆ	ÞØ ×0Ñ0Ó2‰MˆJØ×8Ñ8Ó:ˆCØ�H‰H�NŠN˜3 ™:Ñ<¨*°dÐ);Ó<ð r?   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 )NrA   r  T)r¬  r�  r«  rã   rä   r  Úrjust)r;   r„   r±  rš   r³   rI  s         r=   r  Ú:TerminalReporter._write_progress_information_filling_spaceÌ  sf   € Ø×'Ñ'Ó)‰ˆØ×4Ñ4Ó6ˆØ×'Ñ'ˆØ�x‰x×!Ñ! AÑ%¨Ñ)ˆØ�
Š
�3—9‘9˜T“?Ñ@¨$Ð@°5¸$°-Ó@r?   c                ó.   • U R                   R                  $ )z%Return the width of the current line.)rã   r4  r   s    r=   r«  Ú'TerminalReporter._width_of_current_lineÓ  s   € ð �x‰x×-Ñ-Ð-r?   c                ó4  • U R                   (       aQ  U R                  R                  R                  S:¼  a,  U R	                  SSSS9  [
        R                  " 5       U l        g g U R                  R                  R                  S:¼  a  U R	                  SSSS9  g g )Nr   zcollecting ... T)r  ÚboldrA   )ré   r¨   r¢   rg   r  r   Útimerî   r   s    r=   Úpytest_collectionÚ"TerminalReporter.pytest_collectionØ  sy   € Ø�;�;Ø�{‰{×!Ñ!×)Ñ)¨QÓ.Ø—
‘
Ð,°D¸t�
ÑDÜ28·+²+³-�Õ/ð /ð �[‰[×Ñ×'Ñ'¨1Ó,Ø�J‰JÐ(°¸4ˆJÒ@ð -r?   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                  (       a  U R                  5         g g s  snf )Nr-   r(   )
r&   r]  r(   r�  rA  r   rÛ   rG  ré   Úreport_collect)r;   rÆ   r  r[  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   ÁB=Á4B=c                ó„  • U R                   R                  R                  S:  a  g U(       d@  [        R                  " 5       nU R
                  b  U R
                  U[        -
  :”  a  g X 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X3S:w  a  S
OS	4-  -  nU(       a  USU-  -  nU(       a  USU-  -  nU R                  U:”  a  USU-  -  nU R                  (       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 itemrA   r­   r¾   z / %d error%sz / %d deselectedz / %d skippedz / %d selectedT)r¹  rD  r-  )r¨   r¢   rg   r   rº  rî   ÚREPORT_COLLECTING_RESOLUTIONrG  rÞ   r  rÛ   rM   ré   rJ  r  r—   )r;   r
   Útr@  r(   r)   Úselectedr{   s           r=   r¾  ÚTerminalReporter.report_collectê  s‡  € Ø�;‰;×Ñ×%Ñ%¨Ó)Øæä—’“ˆAà×/Ñ/Ñ;Ø×3Ñ3°aÔ:VÑ6VÓVàØ./Ô+ä�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ñ	
ˆö Ø�O vÀ³k©sÀrÐ&JÑJÑJˆDÞØÐ&¨Ñ3Ñ3ˆDÞØ�O gÑ-Ñ-ˆDØ×Ñ Ó(ØÐ$ xÑ/Ñ/ˆDØ�;�;Ø�L‰L˜ D°ˆLÑ5ÞØ—
‘
˜4Õ ð ð �O‰O˜DÕ!r?   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º  Ú_sessionstarttimer  rO  ÚplatformÚpython_versionrj   rŸ   rC   r•   r–   rM   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_sessionstart  sw  € àŒÜ!'§¢£ˆÔØ��ØØ�‰�sÐ1¸ˆÑ=Ü×)Ò)Ó+ˆØ�~�~ˆ~ØœcŸl™l˜^¨;°w°iÐ@ˆCÜ '¬Ð-@À$Ó GÐÞ ØŸ(™(¤3¤sÐ,=¸b¸qÐ,AÓ#BÓC�Ø˜ ˜y¨Ð*;¸AÑ*>Ð)?¸qÐAÑA�Ø�Yœw×/Ñ/×7Ñ7Ð8¸	Ä&×BTÑBTÐAUÐVÑVˆCà—‘ Ó"Ø—;‘;×%Ñ%×+×+Ü˜4Ÿ;™;×-Ñ-¨z¸4×@Ñ@à�v¤¤C§N¡NÓ 3Ñ3Ñ3�Ø�O‰O˜CÔ Ø—K‘K×$Ñ$×9Ñ9Ø—{‘{¨t¯~©~ð :ð ˆEð ×/Ñ/°Õ6ð# r?   c                ó¬   • [        U5       HE  n[        U[        5      (       a  U R                  U5        M+  U H  nU R                  U5        M     MG     g rS   )ÚreversedrA  rM   r—   )r;   rÚ  Úline_or_linesr{   s       r=   r×  Ú/TerminalReporter._write_report_lines_from_hooks*  sA   € ô & ež_ˆMÜ˜-¬×-Ñ-Ø—‘ Ö.ã)�DØ—O‘O DÖ)ó *ò	 -r?   c           	     ó.  • SUR                    3/nUR                  (       a2  UR                  S[        UR                   UR                  5      -   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: zconfigfile: Ú	testpathsztestpaths: {}ú, zplugins: {})r  ÚinipathÚappendr!   Úargs_sourcer   Ú
ArgsSourceÚ	TESTPATHSrù   r¤  r•   r    Úlist_plugin_distinfoÚ_plugin_nameversions)r;   r¨   r�  râ  Ú
plugininfos        r=   rÖ  Ú%TerminalReporter.pytest_report_header4  sÌ   € Ø˜fŸo™oÐ.Ð/Ð0ˆà�>�>Ø�M‰M˜.¬;°v·±ÈÏÉÓ+WÑWÔXà×Ñ¤×!2Ñ!2×!<Ñ!<Ó<Ø#)§=¡=°Ó#=ˆIØ�M‰M˜/×0Ñ0°·±¸9Ó1EÓFÔGà×)Ñ)×>Ñ>Ó@ˆ
ÞØ�M‰MØ×$Ñ$ T§Y¡YÔ/CÀJÓ/OÓ%PÓQôð ˆr?   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Í  r[  Úcollectonlyéÿÿÿÿr­   r&   Ú!zcollection failures)r¾  r¨   r…  Úpytest_report_collectionfinishrá   r[  r×  rø   r¢   rg   rã   r{   Ú_printcollecteditemsrÞ   r  rM  Ú
toterminal)r;   rØ  rÚ  r&   r�  s        r=   Úpytest_collection_finishÚ)TerminalReporter.pytest_collection_finishE  s÷   € Ø×Ñ˜DÔ!à—‘× Ñ ×?Ñ?Ø—;‘;Ø—~‘~Ø—-‘-ð @ð 
ˆð
 	×+Ñ+¨EÔ2à�;‰;× Ñ  ×/Ñ/Ø�}�}Ø—;‘;×%Ñ%×-Ñ-°Ó2Ø—H‘H—M‘M "Ô%Ø×)Ñ)¨'¯-©-Ô8à—Z‘Z—^‘^ HÓ-ˆFÞØ—‘—‘˜SÐ"7Ô8Û!�CØ—N‘N 4§8¡8Ö,ò "ð ð 0r?   c           	     óÌ  • U R                   R                  [        R                  5      nUS:  a‰  US:  aT  [	        S U 5       5      n[        UR                  5       5       H$  u  pEU R                  R                  SXE4-  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  rA   r   N)rË   r  )Ú.0Úitems     r=   Ú	<genexpr>Ú8TerminalReporter._printcollecteditems.<locals>.<genexpr>_  s$   é € Ð QÉ5À4§¡×!2Ñ!2°4¸Ó!;¸AÖ!>Ê5ùó   ‚*,z%s: %dr­   rA   ú  Úobjz{}{})r¨   r  r   rŽ   r   Úsortedr[  rã   r{   rË   Ú	listchainrG  rF  rå  rC   ÚinspectÚgetdocÚ
splitlinesr¤  )r;   r[  Útest_cases_verbosityÚcountsÚnamerf   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 (¨d¨]Ñ":Ö;ñ $:ð
 ó "�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ò r?   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_COLLECTEDrk   r¨   r…  Úpytest_terminal_summaryÚ
shouldfailrO  rM   Ú_report_keyboardinterruptrð   Ú
shouldstopÚsummary_stats)r;   rØ  r  r�  Úsummary_exit_codess        r=   Úpytest_sessionfinishÚ%TerminalReporter.pytest_sessionfinishy  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rS   )Ú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ˆÕ$r?   c                ó@   • U R                   b  U R                  5         g g rS   )rð   r  r   s    r=   Úpytest_unconfigureÚ#TerminalReporter.pytest_unconfigure¦  s   € Ø×'Ñ'Ñ3Ø×*Ñ*Õ,ð 4r?   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Ê   rO  r¨   r¢   Ú	fulltraceró  rã   r{   )r;   r`  rš   s      r=   r  Ú*TerminalReporter._report_keyboardinterruptª  s¯   € Ø×.Ñ.ˆØÑ"Ð"Ð"Ø× Ñ Ñ,Ð,Ð,Ø×Ñ×'Ñ'ˆØ�‰�s˜CÔ Ø #Ó%Ø�{‰{×!Ñ!×+×+Ø×"Ñ" 4§8¡8Õ,à×!Ñ!×,Ñ,¨T¯X©XÔ6Ø—‘—‘ØVØð ò ð &r?   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ÚendswithrG  r  rµ   r•   )rË   r{   rG   ru  r;   s      €€r=   ÚmkrelÚ-TerminalReporter._locationline.<locals>.mkrel½  sz   ø€ Ø—;‘;×2Ñ2°6Ó:ˆDÞ˜$Ÿ-™-¨×/Ñ/Ø˜Nœs 6›{˜lÐ+�ØŸ™ cÓ*�Ø" 1™I×-Ñ-¨c°4Ó8��q‘	Ø˜Ÿ™ Ó(Ñ(�ØˆKr?   r~  r  r   Ú\z <- z
[location]r”   )rË   rM   rQ   rM   )rý   r  rµ   r   ÚSEPr!   rá   r   )r;   rË   r  rf  ru  r8  r  s   `   `  r=   rs  Ú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Ðr?   c                ó.   • UR                   nU(       a  U$ g)Nztest session)Ú	head_line)r;   r�  r>  s      r=   Ú_getfailureheadlineÚ$TerminalReporter._getfailureheadlineÑ  s   € Ø—M‘Mˆ	ÞØÐØr?   c                ó¶   •  [        UR                  R                  5      $ ! [         a-     [        UR                  5      S S s $ ! [         a      gf = ff = f)Né2   r­   )rM   Úlongreprr1  Ú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 )NrL   Ú	_pdbshown)rÞ   r  r‡  )r;   r  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ø  )rM   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{}rA   r¾   r­   N)r¤  )rù  ÚkÚvs      r=   rû  rP    s1   é € ð !á :™˜ð '×-Ñ-¨a¸1¸q»5±CÀb×IÐIÚ :ùs   ‚(*)	rÕ   r¨   rå  rG  r•   r–   rM   r   r[  )ÚreportsÚ	locationsr³   rt  Ú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Ô :ó!ó ð r?   zwarnings summary (final)zwarnings summaryrÇ  TF)r{  r¹  r-  c              3  ó*   #   • U H
  nS U-   v •  M     g7f)rþ  NrL   )rù  r  s     r=   rû  Ú4TerminalReporter.summary_warnings.<locals>.<genexpr>  s   é € Ð(A¹5°a¨°®º5ùs   ‚zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rT  zlist[WarningReport]rQ   rM   )r  rÞ   r  rï   rG  rX  rÊ   rå  rO  r[  rã   r{   r  r•   Úrstrip)r;   Úall_warningsr
   Úwarning_reportsÚreports_grouped_by_messageÚwrrW  rN  rÊ   Úmessage_reportsÚmaybe_locationrÚ  Úindenteds   `            r=   r!  Ú!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 r?   c                ó*   • U R                  SSS5        g )Nr'   ÚPASSESÚP©Úsummary_passes_combinedr   s    r=   r"  ÚTerminalReporter.summary_passes  s   € Ø×$Ñ$ X¨x¸Õ=r?   c                ó*   • U R                  SSS5        g )Nr+   ÚXPASSESÚXrg  r   s    r=   r#  Ú TerminalReporter.summary_xpasses  s   € Ø×$Ñ$ Y°	¸3Õ?r?   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 )Nrz   rÇ  r±  T)rz  r¹  )r¨   r¢   rv   r  rI  rO  Úsectionsr?  Ú_outrep_summaryÚ_handle_teardown_sectionsrË   )r;   Úwhich_reportsÚ	sep_titleÚ
needed_optrT  r�  rš   s          r=   rh  Ú(TerminalReporter.summary_passes_combined"  s¬   € ð �;‰;×Ñ×%Ñ%¨Ó-Ø�{‰{˜:×&Ñ&Ø,0¯O©O¸MÓ,J�ÞØØ—‘˜s IÔ.Û"�CØ—|—|Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°tÀ$˜ÑGØ×,Ñ,¨SÔ1Ø×2Ñ2°3·:±:Ö>ò #ð 'ð .r?   c                óš   • 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Á   )rI  rÄ   rË   )r;   rË   rT  rÆ   s       r=   Ú_get_teardown_reportsÚ&TerminalReporter._get_teardown_reports2  sT   € Ø—/‘/ "Ó%ˆñ "ó
á!�Ø�{‰{˜jÑ(ó à-3¯]©]¸fÑ-D÷ Ù!ñ
ð 	
ùò 
s   –A­A¿Ac                óV   • U R                  U5       H  nU R                  U5        M     g rS   )rw  Úprint_teardown_sections)r;   rË   rÆ   s      r=   rq  Ú*TerminalReporter._handle_teardown_sections:  s%   € Ø×0Ñ0°Ö8ˆFØ×(Ñ(¨Ö0ò 9r?   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 )Nrz   rƒ   rÁ   rË  rï  r-  )r¨   r¢   r   ro  rã   rM  r{   ©r;   r�  r   Úsecnamer7  s        r=   rz  Ú(TerminalReporter.print_teardown_sections>  s†   € Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÓØØ #§¤ÑˆGØ˜eÓ#¨Ó(BÙØ˜WÕ$Ø—‘—‘˜S 'Ô*Ø˜2˜3�< 4Ó'Ø% c r˜l�GØ—‘—‘˜gÖ&ò !-r?   c                óf   • U R                   R                  R                  nU R                  SSUS9  g )Nr&   ÚFAILURES©ru   )r¨   r¢   rv   Úsummary_failures_combined)r;   ru   s     r=   r  Ú!TerminalReporter.summary_failuresK  s,   € Ø—‘×"Ñ"×*Ñ*ˆØ×&Ñ& x°À5Ð&ÒIr?   c                ó¸   • U R                   R                  R                  nU(       a   U R                   R                  R                  OSnU R	                  SSUS9  g )Nrz   r*   Ú	XFAILURESr‚  )r¨   r¢   r~   rv   rƒ  )r;   Úshow_tbru   s      r=   r   Ú"TerminalReporter.summary_xfailuresO  sE   € Ø—+‘+×$Ñ$×-Ñ-ˆÞ.5�—‘×"Ñ"×*Ò*¸4ˆØ×&Ñ& y°+ÀUÐ&ÒKr?   )rt  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 H%  nU R                  U5      nU R	                  U5        M'     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 )Nrz   rÇ  r{   r±  T©r|  r¹  )	r  rI  rO  rE  r—   r?  rp  rq  rË   )	r;   rr  rs  ru   rt  rT  r�  r{   rš   s	            r=   rƒ  Ú*TerminalReporter.summary_failures_combinedT  sÅ   € ð �D‹=Þ §¡¨Z×!8Ñ!8Ø,0¯O©O¸MÓ,J�ÞØØ—‘˜s IÔ.Ø˜F“?Û&˜Ø#×1Ñ1°#Ó6˜ØŸ™¨Ö-ò  'ó  '˜Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°TÀ˜ÑEØ×,Ñ,¨SÔ1Ø×6Ñ6°s·z±zÖBò	  'ð "9ð r?   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 )Nrz   r-   rÇ  ÚERRORSr¿   zERROR collecting z	ERROR at z of r±  TrŠ  )	r¨   r¢   rv   rI  rO  rÞ   r?  rÄ   rp  )r;   rT  r�  rš   s       r=   r  ÚTerminalReporter.summary_errorsm  s²   € Ø�;‰;×Ñ×%Ñ%¨Ó-Ø(,¯©¸Ó(@ˆGÞØØ�N‰N˜3 Ô)Ø—z‘z 'Ô*�Ø×.Ñ.¨sÓ3�Ø—8‘8˜yÓ(Ø-°Ñ3‘Cà% c§h¡h Z¨t°C°5Ð9�CØ—‘˜s C¨T¸�Ñ=Ø×$Ñ$ SÖ)ò +ð .r?   c                ó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 )Nrz   rƒ   rË  rï  r-  )ró  rã   r¨   r¢   r   ro  rM  r{   r}  s        r=   rp  Ú 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˜'Ö"ò !-r?   c                ój  • U R                   S:  a  g [        R                  " 5       U R                  -
  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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º  rÎ  Úbuild_summary_stats_linerã   rä   r  rG  rå  r•   Úformat_session_durationr7  rO  r—   )r;   Úsession_durationÚpartsr°  Ú
line_partsÚdisplay_seprä   Útextr  Úwith_markuprš   Úmain_markupÚdurationÚduration_with_markupÚmarkup_for_end_seps                  r=   r  ÚTerminalReporter.summary_stats‰  s�  € Ø�>‰>˜BÓØä!Ÿ;š;›=¨4×+AÑ+AÑAÐØ"×;Ñ;Ó=ÑˆØˆ
à—n‘n¨Ñ)ˆÞØŸ™×*Ñ*ˆIÛ!‰LˆDØŸ(™(Ÿ/š/¨$Ñ9°&Ñ9ˆKÞØœS Ó-´°D³	Ñ9Ñ9�	Ø×Ñ˜kÖ*ñ	 "ð
 �i‰i˜
Ó#ˆà! 4Ð(ˆØÔ1Ð2BÓCÐDÐEˆØ#Ÿ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Ñ/ ;Ó/r?   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Ö"ò r?   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_markupry  rM   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Ö"ò r?   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Ö"ò r?   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 H\  u  pxpšU
R                  U5      (       a  U
[        U5      S  n
U	b  U R                  SXWX‰U
4-  5        MF  U R                  SXWXŠ4-  5        M^     g )Nr(   r   r,   Tú	Skipped: z%s [%d] %s:%d: %sz%s [%d] %s: %s)rÞ   r  Ú_folded_skipsrá   r¬  r¨   r£  rã   r  Ú
startswithrG  rå  )rÚ  r(   Úfskipsr®  r¯  r°  r$  Únumr  rf  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Ø+¨{ÀÐQWÐ.XÑXöð —L‘LÐ!1°[ÀvÐ4VÑ!VÖWò 06r?   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  rC  rA  r†  rG  r¬  r¨   r£  rã   r  r­  rM   rå  )
rÚ  r(   r�  r®  r¯  r°  rË   r{   r“  r;   s
            €r=   Úshow_skipped_unfoldedÚBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedï  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×"ò r?   c                óJ   >• TR                   (       a	  T" U 5        g T" U 5        g rS   )rç   )rÚ  r;   r¼  r¿  s    €€€r=   Úshow_skippedÚ9TerminalReporter.short_test_summary.<locals>.show_skipped  s   ø€ Ø××Ù# EÕ*á% eÕ,r?   r&   )r¦  r'   r-   )r  rl  Úfr¾   ÚprÂ   rÇ  zshort test summary infoT)rƒ  r¹  )rÚ  ú	list[str]r¦  rM   rQ   rR   )rÚ  rÆ  rQ   rR   )rp   r   r  rO  r—   )r;   r§  r±  r´  rÂ  ÚREPORTCHAR_ACTIONSrÚ  r¸   rh   r{   r¼  r¿  s   `         @@r=   r$  Ú#TerminalReporter.short_test_summary®  sÍ   ú€ Ø××Ø÷
	#÷	#÷	#÷	X÷(	#÷&	-ñ 	-ð ØÜ˜¨8Ñ4ØÜ˜¨8Ñ4Ü˜¨7Ñ3ñI
Ðð ˆØ×$Ô$ˆDØ'×+Ñ+¨DÓ1ˆFßˆvÙ�u–ñ %ö
 Ø�N‰N˜3Ð 9ÀÈ4ˆNÑPÛ�Ø—‘ Ö%ò ð r?   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$ rS   )rß   rà   r‰  rZ  r   s    r=   r¬  Ú TerminalReporter._get_main_color  sb   € Ø×ÑÑ# t×'8Ñ'8Ñ'@ÀD×DV×DVØ× Ñ Ô"Ø×#×#Ð#Ð#Ø×$×$Ð$Ð$Ø×Ñ ×!2Ñ!2Ð2Ð2r?   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'   rz  )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ØÐr?   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 rS   )rÞ   ÚKNOWN_TYPESrå  Úlistrà   rÍ  rO   rß   )r;   Úunknown_typesÚ
found_types      r=   rZ  Ú TerminalReporter._set_main_color/  sa   € Ø#%ˆØŸ*œ*ˆJßˆzØ¤[Õ0°ZÕ5TØ!×(Ñ(¨Ö4ñ %ô !¤Ó-°Ñ=ˆÔØ×5Ñ5´d¸=Ó6IÓJˆÕr?   c                ó‚   • U R                   R                  S5      (       a  U R                  5       $ U R                  5       $ )a1  
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_line8  s7   € ð( �;‰;× Ñ  ×/Ñ/Ø×>Ñ>Ó@Ð@à×8Ñ8Ó:Ð:r?   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  rC   )r;   ÚkeyrT  r  s       r=   Ú_get_reports_to_displayÚ(TerminalReporter._get_reports_to_displayQ  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Û  rG  r£  r  r¤  rå  Ú	pluralize)	r;   r°  Úknown_typesr—  rÚ  rT  rf   r„   r  s	            r=   r×  Ú1TerminalReporter._build_normal_summary_stats_lineV  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àÐ Ð r?   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{  Trz  z%d %s collectedÚtestzno tests collected (z deselected)rª  z tests collected (rÞ  )rG  rÛ  rÛ   rß  r£  )r;   r)   r@  r—  r°  Úcollected_outputÚall_tests_were_deselectedrÄ  s           r=   rÖ  Ú7TerminalReporter._build_collect_only_summary_stats_linei  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àÐ Ð r?   )rï   rî   rð   rà   rß   rÛ   rë   rå   rÜ   rÎ  rí   rÝ   r„  rã   r¨   ræ   rç   rè   ré   rp   rá   rÞ   rS   )r¨   r   rñ   zTextIO | NonerQ   rR   )rQ   z#Literal['progress', 'count', False])rQ   rŠ   )rQ   rO   )r  zbool | NonerQ   rR   )r¸   rM   rQ   rO   )rË   rM   r  rM   r  rO   rQ   rR   r“  )r$  rM   r%  rM   rQ   rR   )rQ   rR   )r7  rM   r  rO   r.  rŠ   r/  rM   r  rO   rQ   rR   )r7  rM   r  rO   r  rO   rQ   rR   )r{   zstr | bytesr  rO   rQ   rR   )r{   rM   r  rO   rQ   rR   )NN)
rM  rM   rN  rP   rä   ú
int | Noner  rO   rQ   rR   )rÇ  )rN  rM   rM  rM   rR  rO   rQ   rR   )rš   rM   rR  rO   rQ   rR   )r^   rM   r[  zSequence[Any]rQ   rR   )r`  r   rQ   rO   )rg  zwarnings.WarningMessagerË   rM   rQ   rR   )rl  r   rQ   rR   )r[  zSequence[Item]rQ   rR   )rË   rM   rt  ztuple[str, int | None, str]rQ   rR   )rÆ   r$   rQ   rR   )rQ   zGenerator[None, object, object])rQ   rM   )rÆ   r#   rQ   rR   )F)r
   rO   rQ   rR   )rØ  r%   rQ   rR   )rÚ  zSequence[str | Sequence[str]]rQ   rR   )r¨   r   rQ   rÆ  )rØ  r%   r  zint | ExitCoderQ   úGenerator[None])rQ   rè  )r)  zExceptionInfo[BaseException]rQ   rR   )
rË   rM   r  rM   rf  rç  ru  rM   rQ   rM   )r  rM   )rr  rM   rs  rM   rt  rM   rQ   rR   )rË   rM   rQ   zlist[TestReport])rË   rM   rQ   rR   )r�  r$   rQ   rR   )
rr  rM   rs  rM   ru   rM   rt  rP   rQ   rR   )r�  r"   rQ   rR   )rQ   ztuple[str, list[str]])rÌ  rO   rQ   rM   )rQ   z-tuple[list[tuple[str, dict[str, bool]]], str])rÚ  rM   rQ   z	list[Any])OrT   rU   rV   rW   r:   rì   Úpropertyrý   r  rj   rk   r	  Úsetterr  r  r   r'  r*  r9  r  r  r—   rJ  rO  rS  r{   r]  ra  ri  rm  rp  rv  r–  r‰  r   rž  r�  rŠ  r  r«  r»  r¿  r¾  rÛ  r×  rÖ  rô  rò  r  r  r*  r-  r  rs  r?  rE  rI  r!  r"  r#  rh  rw  rq  rz  r  r   rƒ  r  rp  r  r$  r¬  rÍ  rZ  r”  rÛ  r×  rÖ  rY   rL   r?   r=   rž   rž   i  sÎ  † öBô6ð* óó ðð ó#ó ð#ð ó2ó ð2ð ó3ó ð3ð ó ó ð ð
 ×Ñó!ó ð!ð óJó ðJô(ô	2ö$ô&ð ØØñ7àð7ð ð	7ð
 ð7ð ð7ð ð7ð 
õ7ð, 49÷ 7ôô&ô5ð* !Ø $ð	6àð6ð ð6ð ð	6ð
 ð6ð 
õ6ö'ô!ô#ôð
6à0ð6ð ð6ð 
ô	6ô!ô-ðØðØ%@ðà	ôôJðX óTó ðTñ �dÑóó ðôô"=ôAð ó.ó ð.ôAô"ö#"ñJ �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ô2*ô#ô#0ôJl&ô\3ô
ôKô;ô2Qð
!à	6ô!ð&!à	6÷!r?   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È  )r6  rË   r  r  r•   )Útwr¨   r�  rË   Úpathr—  Úparts_markups          r=   r­  r­  Š  sX   € Ø×'Ñ'¨¯
©
Ó3€FØ—<‘< Ó%€L€DÞØ—y‘y §¡¨5Ó!1¸�yÐ=ˆØ�d‰{˜\Ñ)Ð)àˆr?   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¤  rG  )r¤  rš   r”  ÚiÚ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›]Ñ*¨_Õ<à‰ˆà�=‰=˜ÓÐr?   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                  R
                  R                  n
[        5       (       d  U R                  R                  S:¼  a  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   rC  r1  rÊ   r   r¢   rg   rä   rŒ  rD  )r¨   r�  rì  Úword_markupr®  r¯  r`   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ðà�l‰l×$Ñ$×,Ñ,ˆô �?‰?˜fŸm™m×3Ñ3°qÓ8Ø˜�u�+‰Cà Ÿl™l¨ZÑ7ˆOÜ! '¨3Ó@ˆCØ‰?Ø‰KˆDà€Køô ó Øð €Kðús   Á B9 Â9
CÃC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)rC  rA  r†  rG  r!   r   rC   rÄ   rX  rå  r[  )rá   r(   ÚdÚeventr  rf  r“  rø  rÚ  rG   Ú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Ñ)Ö*ñ !à€Mr?   r|  r{  rz  )r&   r-   r,   r'   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,   ÚwarningrA   r¾   )rµ   )rf   Únouns     r=   rß  rß  ó  s@   € àÐ0Ó0Øˆ{Ðð
 �<‰<˜
 IÓ.€Dà¨£
�$˜‘*Ð4Ð4°Ð4Ð4r?   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ë  rG   rl  Údistr  s        r=   rê  rê     sa   € Ø€FÛ"‰ˆà×#Ñ#Ð$ A d§l¡l ^Ð4ˆà�?‰?˜9×%Ñ%Ø˜˜�8ˆDàÕØ�M‰M˜$Öñ #ð €Mr?   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.é<   z.2fr¾   )Úsecondszs (r€  )ÚdatetimeÚ	timedeltarŠ   )r  Údts     r=   r•  r•    sA   € à�ƒ|Ø˜#�˜aÐ Ð ä×Ò¬¨G«Ñ5ˆØ˜#�˜c "  QÐ'Ð'r?   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.
ry  zreason: Nr·  ÚSkippedr­   )r‡  ry  r¹  rG  r(   rA  rC  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Øˆr?   )rE   r   rQ   rR   )r¨   r   rQ   rR   )r¨   r   rQ   rM   )rÆ   r"   rQ   ztuple[str, str, str])rì  r   r¨   r   r�  r"   )r¤  rM   rš   rM   r”  rŠ   rQ   rP   )
r¨   r   r�  r"   rì  r   rõ  zdict[str, bool]rQ   rM   )rá   r   r(   zSequence[CollectReport]rQ   z&list[tuple[int, str, int | None, str]])rf   rŠ   r   rM   rQ   ztuple[int, str])rQ   rÆ  )r  ÚfloatrQ   rM   )rÆ   r$   rQ   rM   )VrX   Ú
__future__r   ÚargparseÚcollectionsr   Údataclassesr  Ú	functoolsr   r  Úpathlibr   rÏ  rŸ   r5  Útypingr   r   r	   r
   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.assertion.utilr   rÚ   r   r   r   r   Ú_pytest.config.argparsingr   Ú_pytest.nodesr   r   Ú_pytest.pathlibr    r!   Ú_pytest.reportsr"   r#   r$   Ú_pytest.mainr%   rÂ  rÐ  r‹   ÚActionr0   r\   r�   r©   r¹   rÇ   Ú	dataclassrÉ   rž   r­  rŒ  r¥  r¸  r£  r¤  rß  rê  r•  r‹  rL   r?   r=   Ú<module>r"     s»  ðñõ
 #ã Ý Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý 'Ý ,Ý &Ý (Û Ý 0Ý (Ý !Ý #Ý #Ý ,Ý Ý Ý (Ý 'Ý &Ý )Ý &ö Ý$ð  #Ð ð	€ð Ð ô"=�h—o‘oô "=ôJ/˜ô /ô(Oôd	Bôñ2 
�$Ñó,ó ð,ð ×Ñ÷ð ó ðð8 ÷]!ð ]!ó ð]!ô@!ôð2ØðØ#ðØ)7ðØFUðàôð<Øðà$ðð ,ôð@ ØØØñ	€ð #Ð ô
5ôô(õr?   