Ë
    V.j1à  ã                  óF  — d Z ddlmZ ddlZddlmZ ddlZddlZddlm	Z	 ddl
Z
ddlmZ ddlZddlZddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlmZ ddlm Z  ddl!m"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)Zddl*m+Z+ ddl,m-Z- ddl,m.Z. ddl,m/Z/ ddl,m0Z0 ddl1m2Z2 ddl3m4Z4 ddl3m5Z5 dd l6m7Z7 dd!l6m8Z8 dd"l9m:Z: dd#l9m;Z; dd$l9m<Z< erdd%l=m>Z> d&Z?d'Z@d(ZA G d)„ d*ej„                  «      ZC G d+„ d,e«      ZDdCd-„ZEdDd.„ZFdEd/„ZG e0d0¬1«      dFd2„«       ZHej’                   G d3„ d4«      «       ZJe G d5„ d6«      «       ZKdGd7„ZLdHd8„ZM	 	 	 	 	 	 	 	 	 	 dId9„ZN	 	 	 	 	 	 dJd:„ZOd;d;d<d=d>œZPd<ZQdKd?„ZRdLd@„ZSdMdA„ZTdNdB„ZUy)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                  ó`   ‡ — e Zd ZdZ	 	 	 d	 	 	 	 	 	 	 	 	 	 	 dˆ fd„Z	 d	 	 	 	 	 	 	 	 	 dd„Zˆ xZS )ÚMoreQuietActionz§A modified copy of the argparse count action which counts down and updates
    the legacy quiet attribute at the same time.

    Used to unify verbosity handling.
    c                ó0   •— t         ‰| �  ||d|||¬«       y )Nr   )Úoption_stringsÚdestÚnargsÚdefaultÚrequiredÚhelp)ÚsuperÚ__init__)Úselfr2   r3   r5   r6   r7   Ú	__class__s         €úRC:\xampp\htdocs\tradingbinance\backend\.venv\Lib\site-packages\_pytest/terminal.pyr9   zMoreQuietAction.__init__S   s)   ø€ ô 	‰ÑØ)ØØØØØð 	õ 	
ó    c                ó�   — t        || j                  d«      dz
  }t        || j                  |«       t        |dd«      dz   |_        y )Nr   é   Úquiet)Úgetattrr3   Úsetattrr@   )r:   ÚparserÚ	namespaceÚvaluesÚoption_stringÚ	new_counts         r<   Ú__call__zMoreQuietAction.__call__d   s@   € ô ˜I t§y¡y°!Ó4°qÑ8ˆ	Ü�	˜4Ÿ9™9 iÔ0ä! )¨W°aÓ8¸1Ñ<ˆ	�r=   )NFN)r2   zSequence[str]r3   Ústrr5   Úobjectr6   Úboolr7   ú
str | NoneÚreturnÚNone©N)
rC   zargparse.ArgumentParserrD   zargparse.NamespacerE   zstr | Sequence[object] | NonerF   rL   rM   rN   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r9   rH   Ú__classcell__)r;   s   @r<   r0   r0   L   sŒ   ø„ ñð ØØð
à%ð
ð ð
ð ð	
ð
 ð
ð ð
ð 
õ
ð, %)ð
=à'ð
=ð &ð
=ð .ð	
=ð
 "ð
=ð 
÷
=r=   r0   c                  ó0   — e Zd ZU dZded<   ded<   ded<   y)ÚTestShortLogReportuG  Used to store the test status result category, shortletter and verbose word.
    For example ``"rerun", "R", ("RERUN", {"yellow": True})``.

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

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

    :ivar word:
        Verbose word is shown as testing progresses in verbose mode, for example ``"PASSED"``, ``"SKIPPED"``,
        ``"ERROR"``, or the empty string.
    rI   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordN)rP   rQ   rR   rS   Ú__annotations__© r=   r<   rV   rV   q   s   … ñð ƒMØƒKØ
.Ô.r=   rV   c           	     ó˜  — | j                  ddd¬«      }|j                  ddddd	d
¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  ddddd¬«       |j                  ddt        dd	d¬«       |j                  dd	t        dd¬«       |j                  d d!d"t        d#d$¬%«       |j                  d&d'dd(dd)¬*«       |j                  d+d,dd-dd.¬«       |j                  d/dd-d0¬1«       |j                  d2d3d!d4d5g d6¢d7¬8«       |j                  d9dd:dd;¬«       |j                  d<d!d=g d>¢d?d@¬A«       |j                  dBdCdddD¬E«       |j                  dFdGd!dGd5g dH¢dI¬8«       |j                  dJdKdKdLgdM¬N«       | j                  dOdPdQ¬R«       t        j                  | t        j                  dS¬T«       y )UNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr5   r3   r7   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.)rb   r3   r5   r7   z-qz--quietzDecrease verbosityz--verbosityzSet verbosity. Default: 0.)r3   Útyper5   r7   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').)rb   r3   r5   Úmetavarr7   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r5   r3   rb   r7   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))rb   r3   r7   z--tbÚstyleÚtbstyleÚauto)rq   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rl   rb   r3   r5   Úchoicesr7   z
--xfail-tbÚxfail_tbz1Show tracebacks for xfail (as long as --tb != no)z--show-captureÚshowcapture)rt   ÚstdoutÚstderrÚlogÚallr}   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)rb   r3   rw   r5   r7   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))rb   r5   r7   z--colorÚcolor)Úyesrt   rq   z#Color terminal output (yes/no/auto)z--code-highlightr   rt   zSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r5   rw   r7   Ú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)r7   r5   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.)r7   )	ÚgetgroupÚ
_addoptionr0   ÚintÚ_REPORTCHARS_DEFAULTÚaddinir   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rC   Úgroups     r<   Úpytest_addoptionrŠ   …   s¹  € Ø�O‰OÐ0°+ÀYˆOÓO€EØ	×ÑØØØØØØ!ð ô ð 
×ÑØØØØØð ô ð 
×ÑØØØØØð ô ð 
×ÑØØØØØ:ð ô ð 
×ÑØØÜØØØ!ð ô ð 
×ÑØØÜØØ)ð ô ð 
×ÑØØØÜ$Øð>ð ô ð 
×ÑØØ#ØØØØ'ð ô ð 
×ÑØØØØØØ>ð ô ð 
×ÑØØØØUð	 ô ð 
×ÑØØØØØÚAØDð ô ð 
×ÑØØØØØ@ð ô ð 
×ÑØØØÚ8Øðð ô ð 
×ÑØØØØØ;ð ô ð 
×ÑØØØØØÚ%Ø2ð ô ð 
×ÑØØØ˜�ðð	 ô ð ‡M�MØð)ð ð ô ô ×ÑØÜ×#Ñ#ðbö	r=   c                ó"  ‡— t        | t        j                  «      Š| j                  j	                  ‰d«       | j
                  j                  s| j
                  j                  r,ˆfd„}| j                  j                  j                  d|«       y y )NÚterminalreporterc                ól   •— dj                  t        t        |«      «      }‰j                  d|z   «       y )NÚ z[traceconfig] )ÚjoinÚmaprI   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €r<   Úmywriterz"pytest_configure.<locals>.mywriter  s+   ø€ Ø—(‘(œ3œs D›>Ó*ˆCØ×ÑÐ 0°3Ñ 6Õ7r=   zpytest:config)ÚTerminalReporterÚsysrz   Ú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                óR  — | j                   j                  }ddh}d}|D ]8  }||v r|j                  «       }|dk(  rd}Œ|dk(  rd}Œ'|dk(  rd}Œ/||vsŒ4||z  }Œ: | j                   j                  sd	|vrd	|z   }|S | j                   j                  rd	|v r|j	                  d	d«      }|S )
NÚFÚSÚ ÚaÚsxXEfÚAÚPpsxXEfÚNÚw)r›   rj   Úlowerrm   Úreplace)r¡   rj   Ú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                ó¬   — d}| j                   rd}n| j                  rd}| j                  }| j                  dv r	|dk(  rd}d}|||j	                  «       fS )Nr¤   Ú.Ús)ÚcollectÚsetupÚteardownr&   r-   ÚE)r'   r(   ÚoutcomeÚwhenÚupper)ÚreportrX   r¼   s      r<   Úpytest_report_teststatusrÀ   <  sY   € à€FØ‡}‚}Ø‰Ø	�ŠØˆà—>‘>€GØ‡{�{Ð6Ñ6¸7ÀhÒ;NØˆØˆà�F˜GŸM™M›OÐ+Ð+r=   c                  óN   — e Zd ZU dZded<   dZded<   dZded<   d	Zd
ed<   dd„Zy)ÚWarningReportao  Simple structure to hold warnings information captured by ``pytest_warning_recorded``.

    :ivar str message:
        User friendly message about the warning.
    :ivar str|None nodeid:
        nodeid that generated the warning (see ``get_location``).
    :ivar tuple fslocation:
        File system location of the source of the warning (see ``get_location``).
    rI   ÚmessageNrL   Únodeidztuple[str, int] | NoneÚ
fslocationTr	   Úcount_towards_summaryc                óÊ   — | j                   r| j                   S | j                  r?| j                  \  }}t        |j                  j                  t        |«      «      }|› d|› �S y)zSReturn the more user-friendly information about the location of a warning, or None.Ú:N)rÄ   rÅ   r!   Úinvocation_paramsÚdirr    )r:   r¡   ÚfilenameÚlinenumÚrelpaths        r<   Úget_locationzWarningReport.get_location^  sY   € à�;Š;Ø—;‘;ÐØ�?Š?Ø $§¡ÑˆH�gÜ! &×":Ñ":×">Ñ">ÄÈXÓ@VÓWˆGØ�Y˜a ˜yÐ)Ð)Ør=   )r¡   r   rM   rL   )	rP   rQ   rR   rS   rZ   rÄ   rÅ   rÆ   rÎ   r[   r=   r<   rÂ   rÂ   L  s3   … ñð ƒLØ€FˆJÓØ)-€JÐ&Ó-à&*Ð˜8Ó*ôr=   rÂ   c                  óÌ  — e Zd ZdSdTd„ZdUd„ZedVd„«       ZedWd„«       ZedWd„«       ZedWd„«       Z	edWd„«       Z
e
j                  dXd	„«       Z
edWd
„«       ZdYd„ZdZd„Zd[d\d„Zd]d„Zddddœ	 	 	 	 	 	 	 	 	 	 	 d^d„Zddœd_d„Zd]d„Zd`d„Zdad„Z	 	 db	 	 	 	 	 	 	 	 	 dcd„Zddded„Zdfd„Zdgd„Zdhd„Z	 	 	 	 	 	 did„Zdjd„Zdkd „Z	 	 	 	 	 	 dld!„Zdmd"„ZedWd#„«       Z  e!d$¬%«      dnd&„«       Z"dod'„Z#d]d(„Z$d]d)„Z%edVd*„«       Z&d]d+„Z'dpd,„Z(dqdrd-„Z) e!d$¬.«      dsd/„«       Z*	 	 	 	 dtd0„Z+dud1„Z,dsd2„Z-dkd3„Z. e!d$¬%«      	 	 	 	 	 	 dvd4„«       Z/ e!d$¬%«      dwd5„«       Z0dxd6„Z1d]d7„Z2d]d8„Z3	 	 	 	 	 	 	 	 	 	 dyd9„Z4d:„ Z5d;„ Z6dzd<„Z7d]d=„Z8d]d>„Z9d]d?„Z:	 	 	 	 	 	 	 	 d{d@„Z;d|dA„Z<d}dB„Z=d~dC„Z>d]dD„Z?d]dE„Z@ddFœ	 	 	 	 	 	 	 	 	 ddG„ZAd]dH„ZBd€dI„ZCd]dJ„ZDd]dK„ZEd�dL„ZFd‚dM„ZGd]dN„ZHdƒdO„ZId„dP„ZJ	 	 dƒdQ„ZK	 	 dƒdR„ZLy)…r—   Nc                óv  — dd l }|| _        d| _        d | _        d | _        i | _        d | _        d | _        |j                  j                  | _
        |€t        j                  }|j                  j                  ||«      | _        | j                  j                  | _        d | _        t%        |«      | _        |j(                  j*                  | _        | j                  j.                  | _        |j1                  «       | _        t3        «       | _        | j7                  «       | _        d | _        d | _        d | _        y ©Nr   ) Ú_pytest.configr¡   Ú_numcollectedÚ_sessionÚ_showfspathÚstatsÚ_main_colorÚ_known_typesrÉ   rÊ   Ú	startpathr˜   rz   Úcreate_terminal_writerÚ_twÚ	fullwidthÚ_screen_widthÚcurrentfspathr²   rj   r›   rg   Ú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<   r9   z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                ó  — | j                   j                  dd«      dk(  r| j                   j                  d«      dk7  ry| j                   j                  dd«      ry| j                   j                  d«      }|dv ry|d	k(  ry	y)
zRReturn whether we should display progress information based on the current config.Úcapturert   r€   úprogress-even-when-capture-noFÚ	setupshow>   r�   rí   r�   r`   )r¡   Ú	getoptionÚgetini)r:   Úcfgs     r<   rä   z.TerminalReporter._determine_show_progress_info†  s‚   € ð
 �K‰K×!Ñ! )¨TÓ2°dÒ:Ø—‘×"Ñ"Ð#9Ó:Ø.ò/ð à�;‰;× Ñ  ¨eÔ4ØØ—;‘;×%Ñ%Ð&<Ó=ˆØÐ?Ñ?ØØ�GŠ^Øàr=   c                óF   — | j                   j                  j                  }|S rO   )r¡   r›   ra   )r:   Ú	verbositys     r<   ró   zTerminalReporter.verbosity›  s   € àŸ™×+Ñ+×3Ñ3ˆ	ØÐr=   c                ó    — | j                   dk\  S rÑ   )ró   ©r:   s    r<   Ú
showheaderzTerminalReporter.showheader   s   € à�~‰~ Ñ"Ð"r=   c                óT   — t        | j                  j                  j                  «      S rO   )rK   r¡   r›   rd   rõ   s    r<   rd   zTerminalReporter.no_header¤  s   € ä�D—K‘K×&Ñ&×0Ñ0Ó1Ð1r=   c                óT   — t        | j                  j                  j                  «      S rO   )rK   r¡   r›   re   rõ   s    r<   re   zTerminalReporter.no_summary¨  s   € ä�D—K‘K×&Ñ&×1Ñ1Ó2Ð2r=   c                óŠ   — | j                   €,| j                  j                  t        j                  «      dk\  S | j                   S rÑ   )rÕ   r¡   Úget_verbosityr   rˆ   rõ   s    r<   Ú
showfspathzTerminalReporter.showfspath¬  s:   € à×ÑÐ#Ø—;‘;×,Ñ,¬V×-HÑ-HÓIÈQÑNÐNØ×ÑÐr=   c                ó   — || _         y rO   )rÕ   )r:   Úvalues     r<   rû   zTerminalReporter.showfspath²  s
   € à ˆÕr=   c                óZ   — | j                   j                  t        j                  «      dkD  S rÑ   )r¡   rú   r   rˆ   rõ   s    r<   Úshowlongtestinfoz!TerminalReporter.showlongtestinfo¶  s"   € à�{‰{×(Ñ(¬×)DÑ)DÓEÈÑIÐIr=   c                óH   — dddœj                  ||«      }|| j                  v S )NÚxr·   )r*   r(   )Úgetrj   )r:   r±   s     r<   ÚhasoptzTerminalReporter.hasoptº  s*   € Ø¨3Ñ/×3Ñ3°D¸$Ó?ˆØ�t×'Ñ'Ð'Ð'r=   c                óÈ  — | j                   j                  |j                  d«      d   z  }| j                  �|| j                  k7  r}| j                  �| j                  r| j                  «        || _        t        | j                  |«      }| j                  j                  «        | j                  j                  |dz   «        | j                  j                  |fddi|¤Ž y )Nú::r   rŽ   ÚflushT)r¡   ÚrootpathÚsplitrÞ   rå   Ú)_write_progress_information_filling_spacer!   rÙ   rÛ   ru   Úwrite)r:   rÄ   ÚresÚmarkupÚfspathÚ	relfspaths         r<   Úwrite_fspath_resultz$TerminalReporter.write_fspath_result¾  s²   € Ø—‘×%Ñ%¨¯©°TÓ(:¸1Ñ(=Ñ=ˆØ×ÑÐ%¨°4×3EÑ3EÒ)EØ×!Ñ!Ð-°$×2JÒ2JØ×>Ñ>Ô@Ø!'ˆDÔÜ# D§N¡N°FÓ;ˆIØ�H‰H�M‰MŒOØ�H‰H�N‰N˜9 s™?Ô+Øˆ�‰�‰�sÑ1 $Ð1¨&Ó1r=   c                óè   — | j                   |k7  r<| j                  j                  «        || _         | j                  j                  |«       |r% | j                  j                  |fi |¤Ž d| _         y y )Néþÿÿÿ)rÞ   rÛ   ru   r
  )r:   ÚprefixÚextraÚkwargss       r<   Úwrite_ensure_prefixz$TerminalReporter.write_ensure_prefixÉ  s\   € Ø×Ñ Ò'Ø�H‰H�M‰MŒOØ!'ˆDÔØ�H‰H�N‰N˜6Ô"ÙØˆD�H‰H�N‰N˜5Ñ+ FÒ+Ø!#ˆDÕð r=   c                ó`   — | j                   r"| j                  j                  «        d | _         y y rO   )rÞ   rÛ   ru   rõ   s    r<   Úensure_newlinezTerminalReporter.ensure_newlineÒ  s%   € Ø×ÒØ�H‰H�M‰MŒOØ!%ˆDÕð r=   Fé   Ú
)r  ÚmarginÚline_sepc               óî   — | j                   j                  }|j                  t        j                  d|z  |z   | j
                  |z
  dd¬«      «      }||d } | j                   j                  |fd|i|¤Ž y)z+Wrap message with margin for progress info.rŽ   TF)ÚwidthÚdrop_whitespaceÚreplace_whitespaceNr  )rÛ   Úwidth_of_current_liner�   ÚtextwrapÚwraprÝ   r
  )r:   Úcontentr  r  r  r  r   Úwrappeds           r<   Ú
wrap_writezTerminalReporter.wrap_write×  s|   € ð !%§¡× >Ñ >ÐØ—-‘-Ü�M‰MØÐ+Ñ+¨gÑ5Ø×(Ñ(¨6Ñ1Ø $Ø#(ô	ó
ˆð Ð/Ð0Ð1ˆØˆ�‰�‰�wÑ6 eÐ6¨vÓ6r=   )r  c               óB   —  | j                   j                  |fd|i|¤Ž y )Nr  )rÛ   r
  )r:   r#  r  r  s       r<   r
  zTerminalReporter.writeí  s   € Øˆ�‰�‰�wÑ6 eÐ6¨vÓ6r=   c                ó8   — | j                   j                  «        y rO   )rÛ   r  rõ   s    r<   r  zTerminalReporter.flushð  s   € Ø�‰�‰Õr=   c                ó˜   — t        |t        «      st        |d¬«      }| j                  «         | j                  j                  |fi |¤Ž y )Nr®   )Úerrors)Ú
isinstancerI   r  rÛ   ru   )r:   ru   r  s      r<   r‘   zTerminalReporter.write_lineó  s;   € Ü˜$¤Ô$Ü�t IÔ.ˆDØ×ÑÔØˆ�‰�‰�dÑ%˜fÓ%r=   c                óâ   — |j                  dd«      }|r+| j                  j                  t        |«      z
  dz
  }d|z  }nd}t	        |«      } | j                  j
                  d|z   |z   fi |¤Ž y)a-  Rewinds the terminal cursor to the beginning and writes the given line.

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

        The rest of the keyword arguments are markup instructions.
        ÚeraseFr?   rŽ   r¦   ÚN)ÚpoprÛ   rÜ   ÚlenrI   r
  )r:   ru   r  r,  Ú
fill_countÚfills         r<   ÚrewritezTerminalReporter.rewriteù  sl   € ð —
‘
˜7 EÓ*ˆÙØŸ™×+Ñ+¬c°$«iÑ7¸!Ñ;ˆJØ˜Ñ#‰DàˆDÜ�4‹yˆØˆ�‰�‰�t˜d‘{ TÑ)Ñ4¨VÓ4r=   c                ób   — | j                  «         | j                  j                  |||fi |¤Ž y rO   )r  rÛ   Úsep)r:   r4  ÚtitlerÜ   r  s        r<   Ú	write_sepzTerminalReporter.write_sep  s+   € ð 	×ÑÔØˆ�‰�‰�S˜% Ñ5¨fÓ5r=   c                ó@   —  | j                   j                  ||fi |¤Ž y rO   )rÛ   r4  )r:   r5  r4  Úkws       r<   ÚsectionzTerminalReporter.section  s   € Øˆ�‰�‰�S˜%Ñ& 2Ó&r=   c                ó>   —  | j                   j                  |fi |¤Ž y rO   )rÛ   ru   )r:   r”   r8  s      r<   ru   zTerminalReporter.line  s   € Øˆ�‰�‰�cÑ ˜RÓ r=   c                óœ   — || j                   v}| j                   j                  |g «      j                  |«       |r| j                  «        y y rO   )rÖ   Ú
setdefaultÚextendÚ_set_main_color)r:   rW   ÚitemsÚset_main_colors       r<   Ú
_add_statszTerminalReporter._add_stats  sC   € Ø!¨¯©Ð3ˆØ�
‰
×Ñ˜h¨Ó+×2Ñ2°5Ô9ÙØ× Ñ Õ"ð r=   c                ój   — t        |«      j                  d«      D ]  }| j                  d|z   «       Œ y)Nr  zINTERNALERROR> T)rI   r  r‘   )r:   Úexcreprru   s      r<   Úpytest_internalerrorz%TerminalReporter.pytest_internalerror!  s0   € Ü˜“L×&Ñ& tÖ,ˆDØ�O‰OÐ-°Ñ4Õ5ð -àr=   c                ó’   — ddl m} |j                  |j                  f} ||«      }t	        |||¬«      }| j                  d|g«       y )Nr   )Úwarning_record_to_str)rÅ   rÃ   rÄ   r,   )Ú_pytest.warningsrF  rË   ÚlinenorÂ   rA  )r:   Úwarning_messagerÄ   rF  rÅ   rÃ   Úwarning_reports          r<   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recorded&  sK   € õ
 	;à$×-Ñ-¨×/EÑ/EÐEˆ
Ù'¨Ó8ˆä&Ø!¨7¸6ô
ˆð 	�‰˜
 ^Ð$4Õ5r=   c                ór   — | j                   j                  j                  rd|› �}| j                  |«       y y )NzPLUGIN registered: )r¡   r›   r�   r‘   )r:   Úpluginr”   s      r<   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registered5  s4   € Ø�;‰;×Ñ×)Ò)Ø'¨ xÐ0ˆCð �O‰O˜CÕ ð *r=   c                ó(   — | j                  d|«       y )Nr)   )rA  )r:   r?  s     r<   Úpytest_deselectedz"TerminalReporter.pytest_deselected=  s   € Ø�‰˜ eÕ,r=   c                óô   — |\  }}}| j                   r7| j                  ||||«      }| j                  |d«       | j                  «        y | j                  r#| j                  |d«       | j                  «        y y )Nr¦   )rÿ   Ú_locationliner  r  rû   r  )r:   rÄ   Úlocationr  rH  Údomainru   s          r<   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstart@  so   € ð "*Ñˆ�˜ð × Ò Ø×%Ñ% f¨f°f¸fÓEˆDØ×$Ñ$ T¨2Ô.Ø�J‰J�LØ�_Š_Ø×$Ñ$ V¨RÔ0Ø�J‰J�Lð r=   c                ó.  — d| _         |}t        | j                  j                  j	                  || j                  ¬«      Ž }|j
                  |j                  |j                  }}}t        |t        «      sd }n|\  }}| j                  ||g«       |s|sy |€Vt        |d«      }|j                  r|sddi}n7|j                  r|rddi}n$|j                  rddi}n|j                  rddi}ni }| j                  j!                  |j"                  «       | j                  j%                  t&        j(                  «      dk  rI | j*                  j,                  |fi |¤Ž | j.                  �r| j0                  �s| j3                  «        �nÿ | j4                  |j"                  g|j6                  ¢­Ž }	t        |d«      }
|
så | j8                  |	|fi |¤Ž |j                  st        |d«      rœt;        |«      }| j                  j%                  t&        j(                  «      d	k  rJ| j*                  j<                  | j*                  j>                  z
  tA        d
«      z
  dz
  }tC        d||«      }nd|› d�}|r|�| jE                  |«       | j.                  rö| jG                  «        nå| jI                  «        | j*                  j-                  d|jJ                  jL                  jN                  › d�«       | j.                  r/| j*                  j-                  | jQ                  «       dz   d¬«       n| j*                  j-                  d«        | j*                  j,                  |fi |¤Ž | j*                  j-                  d|	z   «       d| _)        | jU                  «        y )NT)r¿   r¡   ÚwasxfailÚgreenÚyellowÚredr   Únodeé   ú [100%]r?   z ({})z (Ú)Ú[Ú]rŽ   )Úcyanr  )+Ú
_tests_ranrV   r¡   ÚhookrÀ   rW   rX   rY   r*  ÚtuplerA  Úhasattrr'   r&   r(   rã   ÚaddrÄ   rú   r   rˆ   rÛ   r
  rå   Ú_is_last_itemÚ(_write_progress_information_if_past_edgerR  rS  r  Ú_get_raw_skip_reasonrÜ   r   r/  Ú_format_trimmedr%  r	  r  r[  ÚgatewayÚidÚ!_get_progress_information_messagerÞ   r  )r:   r¿   Úrepr  rW   rX   rY   r  Ú	was_xfailru   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 r<   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreportN  s  € ØˆŒØˆä Ø�[‰[×Ñ×6Ñ6¸cÈ$Ï+É+Ð6ÓVð
ˆð "%§¡¨s¯z©z¸3¿8¹8˜$�&ˆÜ˜$¤Ô&Ø‰Fà‰LˆD�&Ø�‰˜ 3 %Ô(Ù™dàØˆ>Ü ¨
Ó3ˆIØ�zŠz¡)Ø! 4˜‘Ø—’¡	Ø" DÐ)‘Ø—’Ø ˜‘Ø—’Ø" DÐ)‘à�Ø×'Ñ'×+Ñ+¨C¯J©JÔ7Ø�;‰;×$Ñ$¤V×%@Ñ%@ÓAÀQÒFØˆD�H‰H�N‰N˜6Ñ, VÒ,ð ×'Ó'°×0BÓ0BØ×=Ñ=Ö?à%�4×%Ñ% c§j¡jÐ@°3·<±<Ò@ˆDÜ# C¨Ó0ˆMÙ Ø(�×(Ñ(¨¨tÑ>°vÒ>Ø—;’;¤'¨&°*Ô"=Ü1°#Ó6�FØ—{‘{×0Ñ0´×1LÑ1LÓMÐPQÒQà!ŸX™X×/Ñ/°$·(±(×2PÑ2PÑPÜ! )›nñ-àñ ð (ô
 ,;Ø# V¨_ó,Ñ(ð .0°¨x°q¨>Ð(áÐ"2Ð">ØŸ™Ð(8Ô9Ø×+Ò+Ø×BÑBÕDà×#Ñ#Ô%Ø—‘—‘  3§8¡8×#3Ñ#3×#6Ñ#6Ð"7°qÐ9Ô:Ø×+Ò+Ø—H‘H—N‘NØ×>Ñ>Ó@À3ÑFÈTð #õ ð —H‘H—N‘N 3Ô'Ø�—‘—‘˜tÑ. vÒ.Ø—‘—‘˜s T™zÔ*Ø%'�Ô"Ø�
‰
�r=   c                óv   — | j                   €J ‚t        | j                  «      | j                   j                  k(  S rO   )rÔ   r/  rã   Útestscollectedrõ   s    r<   rg  zTerminalReporter._is_last_itemš  s2   € à�}‰}Ð(Ð(Ð(Ü�4×2Ñ2Ó3°t·}±}×7SÑ7SÑSÐSr=   T)Úwrapperc              #  ó¾   K  — d –—}| j                   j                  t        j                  «      dk  r(| j                  r| j
                  r| j                  «        |S ­wrÑ   )r¡   rú   r   rˆ   rå   rã   r	  )r:   Úresults     r<   Úpytest_runtestloopz#TerminalReporter.pytest_runtestloopŸ  sM   è ø€ âˆð �K‰K×%Ñ%¤f×&AÑ&AÓBÀaÒGØ×(Ò(Ø×/Ò/à×:Ñ:Ô<àˆùs   ‚AAc                óN  — | j                   sJ ‚| j                   j                  }| j                  dk(  rP|rEt        | j                  «      }dt        t        |«      «      › d�}d|› d�}|j                  ||«      S d|› d|› d�S |r dt        | j                  «      d	z  |z  d
›d�S y)Nr`   z{:zd}ú [z/{}]z [ z / z ]éd   Ú3dz%]r]  )rÔ   rv  rå   r/  rã   rI   Úformat)r:   Ú	collectedr�   Úcounter_formatÚformat_strings        r<   rm  z2TerminalReporter._get_progress_information_message­  sÀ   € Ø�}Š}Ðˆ}Ø—M‘M×0Ñ0ˆ	Ø×#Ñ# wÒ.ÙÜ˜t×>Ñ>Ó?�Ø#&¤s¬3¨y«>Ó':Ð&;¸3Ð!?�Ø"$ ^Ð$4°FÐ ;�Ø$×+Ñ+¨H°iÓ@Ð@Ø˜˜ 3 y k°Ð4Ð4áàœ˜T×<Ñ<Ó=ÀÑCÀyÑPÐQSÐTÐTVÐWðð r=   c                óx  — | j                   }| j                  dk(  r7| j                  sJ ‚| j                  j                  }t	        d|› d|› d�«      }nt	        d«      }||z   dz   | j
                  k\  }|rF| j                  «       \  }}| j                  «       } | j                  j                  |dz   fi |di¤Ž y y )	Nr`   r|  Ú/r`  r]  r?   r  T)
Ú_width_of_current_linerå   rÔ   rv  r/  rÝ   Ú_get_main_colorrm  rÛ   r
  )r:   r¬   Ú	num_testsÚprogress_lengthÚ	past_edgeÚ
main_colorÚ_r”   s           r<   rh  z9TerminalReporter._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ØˆD�H‰H�N‰N˜3 ™:Ñ<¨*°dÐ);Ó<ð r=   c                óæ   — | j                  «       \  }}| j                  «       }| j                  }| j                  j                  |z
  dz
  } | j
                  |j                  |«      fddi|di¤Ž y )Nr?   r  T)r†  rm  r…  rÛ   rÜ   r
  Úrjust)r:   r~   r‹  r”   r¬   r1  s         r<   r	  z:TerminalReporter._write_progress_information_filling_spaceÌ  sj   € Ø×'Ñ'Ó)‰ˆˆqØ×4Ñ4Ó6ˆØ×'Ñ'ˆØ�x‰x×!Ñ! AÑ%¨Ñ)ˆØˆ�
‰
�3—9‘9˜T“?Ñ@¨$Ð@°5¸$°-Ó@r=   c                ó.   — | j                   j                  S )z%Return the width of the current line.)rÛ   r   rõ   s    r<   r…  z'TerminalReporter._width_of_current_lineÓ  s   € ð �x‰x×-Ñ-Ð-r=   c                ó0  — | j                   rR| j                  j                  j                  dk\  r.| j	                  ddd¬«       t        j                  «       | _        y y | j                  j                  j                  dk\  r| j	                  ddd¬«       y y )Nr   zcollecting ... T)r  Úboldr?   )rá   r¡   r›   ra   r
  r   Útimeræ   rõ   s    r<   Úpytest_collectionz"TerminalReporter.pytest_collectionØ  sy   € Ø�;Š;Ø�{‰{×!Ñ!×)Ñ)¨QÒ.Ø—
‘
Ð,°D¸t�
ÔDÜ28·+±+³-�Õ/ð /ð �[‰[×Ñ×'Ñ'¨1Ò,Ø�J‰JÐ(°¸4ˆJÕ@ð -r=   c                óV  — |j                   r| j                  d|g«       n|j                  r| j                  d|g«       |j                  D �cg c]  }t	        |t
        «      sŒ|‘Œ }}| xj                  t        |«      z  c_        | j                  r| j                  «        y y c c}w )Nr-   r(   )
r&   rA  r(   ry  r*  r   rÓ   r/  rá   Úreport_collect)r:   r¿   r  r?  s       r<   Úpytest_collectreportz%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&Á$B&c                ó:  — | j                   j                  j                  dk  ry |s>t        j                  «       }| j
                  �| j
                  |t        z
  kD  ry || _        t        | j                  j                  dg «      «      }t        | j                  j                  dg «      «      }t        | j                  j                  dg «      «      }| j                  |z
  }|rdnd}|t        | j                  «      dz   | j                  dk(  rd	nd
z   z  }|r|d||dk7  rd
nd	fz  z  }|r|d|z  z  }|r|d|z  z  }| j                  |kD  r|d|z  z  }| j                  r)| j                  |dd¬«       |r| j                  d«       y y | j                  |«       y )Nr   r-   r(   r)   z
collected zcollecting z itemr?   r¦   r·   z / %d error%sz / %d deselectedz / %d skippedz / %d selectedT)r�  r,  r  )r¡   r›   ra   r   r‘  ræ   ÚREPORT_COLLECTING_RESOLUTIONr/  rÖ   r  rÓ   rI   rá   r2  r
  r‘   )r:   r
   Útr)  r(   r)   Úselectedru   s           r<   r”  zTerminalReporter.report_collectê  s‹  € Ø�;‰;×Ñ×%Ñ%¨Ò)Øáä—‘“ˆAà×/Ñ/Ð;Ø×3Ñ3°aÔ:VÑ6VÒVàØ./ˆ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ñ	
ˆñ Ø�O v°fÀ²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  — || _         t        j                  «       | _        | j                  sy | j                  ddd¬«       t        j                  «       }| j                  �sXdt        j                  › d|› �}t        t        dd «      }|r1dj                  t        t        |d d	 «      «      }|d
|› d|d	   › d�z  }|dt        j                  j                   › dt"        j$                  › �z  }| j&                  dkD  sA| j(                  j*                  j,                  s!t        | j(                  j*                  dd «      r|dt        t        j.                  «      z   z  }| j1                  |«       | j(                  j2                  j5                  | j(                  | j6                  ¬«      }| j9                  |«       y y )NÚ=ztest session startsT©r�  z	platform z -- Python Úpypy_version_infor¶   é   z[pypy-Ú-r`  z	, pytest-z	, pluggy-r   Úpastebinz -- )r¡   Ú
start_path)rÔ   r   r‘  Ú_sessionstarttimerö   r6  ÚplatformÚpython_versionrd   r˜   rA   r�   r�   rI   rê   Ú_versionÚversionÚpluggyÚ__version__ró   r¡   r›   rœ   Ú
executabler‘   rc  Úpytest_report_headerrÙ   Ú_write_report_lines_from_hooks)r:   ÚsessionÚverinfor”   r�  Úliness         r<   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstart  st  € àˆŒÜ!'§¡£ˆÔØ�ŠØØ�‰�sÐ1¸ˆÔ=Ü×)Ñ)Ó+ˆØ�~‹~ØœcŸl™l˜^¨;°w°iÐ@ˆCÜ '¬Ð-@À$Ó GÐÙ ØŸ(™(¤3¤sÐ,=¸b¸qÐ,AÓ#BÓC�Ø˜ ˜y¨Ð*;¸AÑ*>Ð)?¸qÐAÑA�Ø�Yœw×/Ñ/×7Ñ7Ð8¸	Ä&×BTÑBTÐAUÐVÑVˆCà—‘ Ò"Ø—;‘;×%Ñ%×+Ò+Ü˜4Ÿ;™;×-Ñ-¨z¸4Ô@à�v¤¤C§N¡NÓ 3Ñ3Ñ3�Ø�O‰O˜CÔ Ø—K‘K×$Ñ$×9Ñ9Ø—{‘{¨t¯~©~ð :ó ˆEð ×/Ñ/°Õ6ð# r=   c                ó˜   — t        |«      D ]<  }t        |t        «      r| j                  |«       Œ%|D ]  }| j                  |«       Œ Œ> y rO   )Úreversedr*  rI   r‘   )r:   r®  Úline_or_linesru   s       r<   r«  z/TerminalReporter._write_report_lines_from_hooks*  s>   € ô & ež_ˆMÜ˜-¬Ô-Ø—‘ Õ.ã)�DØ—O‘O DÕ)ñ *ñ	 -r=   c           	     ó  — d|j                   › �g}|j                  r2|j                  dt        |j                   |j                  «      z   «       |j                  t
        j                  j                  k(  r@|j                  d«      }|j                  dj                  dj                  |«      «      «       |j                  j                  «       }|r8|j                  dj                  dj                  t        |«      «      «      «       |S )Nz	rootdir: zconfigfile: Ú	testpathsztestpaths: {}ú, zplugins: {})r  ÚinipathÚappendr!   Úargs_sourcer   Ú
ArgsSourceÚ	TESTPATHSrð   r  r�   r™   Úlist_plugin_distinfoÚ_plugin_nameversions)r:   r¡   ry  r´  Ú
plugininfos        r<   rª  z%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                óŽ  — | j                  d«       | j                  j                  j                  | j                  | j                  |j
                  ¬«      }| j                  |«       | j                  j                  d«      rÂ|j
                  rY| j                  j                  j                  dkD  r| j                  j                  d«       | j                  |j
                  «       | j                  j                  d«      }|r?| j                  j                  dd«       |D ]  }|j!                  | j                  «       Œ y y y )	NT)r¡   r¡  r?  Úcollectonlyéÿÿÿÿr¦   r&   Ú!zcollection failures)r”  r¡   rc  Úpytest_report_collectionfinishrÙ   r?  r«  rï   r›   ra   rÛ   ru   Ú_printcollecteditemsrÖ   r  r4  Ú
toterminal)r:   r¬  r®  r&   rn  s        r<   Úpytest_collection_finishz)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           	     ó†  — | j                   j                  t        j                  «      }|dk  r†|dk  rTt	        d„ |D «       «      }t        |j                  «       «      D ]%  \  }}| j                  j                  d||fz  «       Œ' y |D ]'  }| j                  j                  |j                  «       Œ) y g }d}|D �]  }|j                  «       dd  }	|r%||	d t        |«       k(  rn|j                  «        |rŒ%|	t        |«      d  D ]µ  }
|j                  |
«       t        |«      dz
  dz  }| j                  j                  |› |
› �«       |dk\  sŒJt        |
dd «      }|rt        j                   |«      nd }|sŒs|j#                  «       D ]0  }| j                  j                  d	j%                  |dz   |«      «       Œ2 Œ· �Œ y )
Nr   rÀ  c              3  óZ   K  — | ]#  }|j                   j                  d d«      d   –— Œ% y­w©r  r?   r   N)rÄ   r  )Ú.0Úitems     r<   Ú	<genexpr>z8TerminalReporter._printcollecteditems.<locals>.<genexpr>_  s'   è ø€ Ð QÉ5À4 §¡×!2Ñ!2°4¸Ó!;¸AÕ!>É5ùs   ‚)+z%s: %dr¦   r?   ú  Úobjz{}{})r¡   rú   r   rˆ   r   Úsortedr?  rÛ   ru   rÄ   Ú	listchainr/  r.  r·  rA   ÚinspectÚgetdocÚ
splitlinesr  )r:   r?  Útest_cases_verbosityÚcountsÚnamer`   rÊ  ÚstackÚindentÚneeded_collectorsÚcolrÍ  Údocru   s                 r<   rÃ  z%TerminalReporter._printcollecteditems[  s�  € Ø#Ÿ{™{×8Ñ8¼×9TÑ9TÓUÐØ !Ò#Ø# bÒ(Ü Ñ QÉ5Ó QÓQ�Ü#)¨&¯,©,«.Ö#9‘K�D˜%Ø—H‘H—M‘M (¨d°E¨]Ñ":Õ;ð $:ð
 ó "�DØ—H‘H—M‘M $§+¡+Õ.ð "àØˆØˆÜˆDØ $§¡Ó 0°°Ð 4ÐÙØÐ-¨l´°E³
Ð;Ò;ØØ—	‘	”ò ð )¬¨U«¨Ó6�Ø—‘˜SÔ!Ü˜e›* q™.¨DÑ0�Ø—‘—‘  ¨¨Ð.Ô/Ø'¨1Ó,Ü! # u¨dÓ3�CÙ14œ'Ÿ.™.¨Ô-¸$�CÚØ$'§N¡NÖ$4˜DØ ŸH™HŸM™M¨&¯-©-¸À¹ÀtÓ*LÕMñ %5ò 7ñ r=   c              #  ó¬  K  — d –—}| j                   j                  d«       t        j                  t        j                  t        j
                  t        j                  t        j                  f}||v r>| j                  s2| j                  j                  j                  | || j                  ¬«       |j                  r'| j                  dt        |j                  «      d¬«       |t        j
                  k(  r| j                  «        d | _        n3|j"                  r'| j                  dt        |j"                  «      d¬«       | j%                  «        |S ­w)Nr¦   )rŒ   Ú
exitstatusr¡   rÁ  T)rZ  )rÛ   ru   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDre   r¡   rc  Úpytest_terminal_summaryÚ
shouldfailr6  rI   Ú_report_keyboardinterruptrè   Ú
shouldstopÚsummary_stats)r:   r¬  rÜ  ry  Úsummary_exit_codess        r<   Úpytest_sessionfinishz%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              #  ó^  K  — | j                  «        | j                  «        | j                  «        | j                  «        | j	                  «        | j                  «        	 d –—| j                  «        | j                  «        S # | j                  «        | j                  «        w xY w­wrO   )Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summaryrõ   s    r<   râ  z(TerminalReporter.pytest_terminal_summary”  s‰   è ø€ à×ÑÔØ×ÑÔØ×ÑÔ Ø×ÑÔØ×ÑÔØ×ÑÔð	$Úà×#Ñ#Ô%à×!Ñ!Õ#øð ×#Ñ#Ô%à×!Ñ!Õ#üs   ‚A!B-Á$B Á'!B-Â"B*Â*B-c                ó2   — |j                  d¬«      | _        y )NT)Úfuncargs)Úgetreprrè   )r:   Úexcinfos     r<   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interrupt£  s   € Ø'.§¡À Ó'EˆÕ$r=   c                ó>   — | j                   �| j                  «        y y rO   )rè   rä  rõ   s    r<   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigure¦  s   € Ø×'Ñ'Ð3Ø×*Ñ*Õ,ð 4r=   c                ó–  — | j                   }|€J ‚|j                  €J ‚|j                  j                  }| j                  d|«       d|v r| j                  j
                  j                  r|j                  | j                  «       y |j                  j                  | j                  «       | j                  j                  dd¬«       y y )NrÁ  ÚKeyboardInterruptz@(to show a full traceback on KeyboardInterrupt use --full-trace)T)rY  )
rè   Ú	reprcrashrÃ   r6  r¡   r›   Ú	fulltracerÄ  rÛ   ru   )r:   rC  r”   s      r<   rä  z*TerminalReporter._report_keyboardinterruptª  s¯   € Ø×.Ñ.ˆØÐ"Ð"Ð"Ø× Ñ Ð,Ð,Ð,Ø×Ñ×'Ñ'ˆØ�‰�s˜CÔ Ø #Ñ%Ø�{‰{×!Ñ!×+Ò+Ø×"Ñ" 4§8¡8Õ,à×!Ñ!×,Ñ,¨T¯X©XÔ6Ø—‘—‘ØVØð õ ð &r=   c                ó  ‡ ‡— d	ˆˆ fd„}|rv ||«      }‰ j                   dk\  rZ|j                  d«      d   |j                  dt        j                  «      k7  r%|dt        ‰ j                  t        |«      «      z   z  }|dz   S d}|dz   S )
Nc                óü   •— ‰j                   j                  | «      }‰r]|j                  ‰«      rL|d t        ‰«        }‰j	                  d«      }|d   j                  dd«      |d<   |dj                  |«      z  }|S )Nr_  r   r¶   r  )r¡   Úcwd_relative_nodeidÚendswithr/  r  r®   r�   )rÄ   ru   rE   rT  r:   s      €€r<   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel½  sw   ø€ Ø—;‘;×2Ñ2°6Ó:ˆDÙ˜$Ÿ-™-¨Ô/Ø˜Nœs 6›{˜lÐ+�ØŸ™ cÓ*�Ø" 1™I×-Ñ-¨c°4Ó8��q‘	Ø˜Ÿ™ Ó(Ñ(�ØˆKr=   r\  r  r   Ú\z <- z
[location]rŽ   )rÄ   rI   rM   rI   )ró   r  r®   r   ÚSEPr!   rÙ   r   )r:   rÄ   r  rH  rT  r   r  s   `   `  r<   rR  z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                ó$   — |j                   }|r|S y)Nztest session)Ú	head_line)r:   rn  r  s      r<   Ú_getfailureheadlinez$TerminalReporter._getfailureheadlineÑ  s   € Ø—M‘Mˆ	ÙØÐØr=   c                ó²   — 	 t        |j                  j                  «      S # t        $ r, 	 t        |j                  «      d d cY S # t        $ r Y Y yw xY ww xY w)Né2   r¦   )rI   Úlongreprrú  ÚAttributeError)r:   rn  s     r<   Ú_getcrashlinezTerminalReporter._getcrashline×  sX   € ð	Ü�s—|‘|×-Ñ-Ó.Ð.øÜò 	ðÜ˜3Ÿ<™<Ó(¨¨"Ð-Ò-øÜ!ò Úðúð	ús,   ‚! ¡	A«AÁAÁ	AÁAÁAÁAc                óz   — | j                   j                  |d«      D �cg c]  }t        |d«      rŒ|‘Œ c}S c c}w )Nr[   Ú	_pdbshown)rÖ   r  re  )r:   rÕ  r  s      r<   Ú
getreportszTerminalReporter.getreportsã  s4   € ØŸ:™:Ÿ>™>¨$°Ô3ÓSÑ3�a¼7À1ÀkÕ;R’Ð3ÑSÐSùÒSs   Ÿ8±8c                ó(  ‡ — ‰ j                  d«      �r‰ j                  j                  d«      }|sy ‰ j                  d u}|r|‰ j                  d  }n|}t	        |«      ‰ _        |sy i }|D ]-  }|j                  |j                  g «      j                  |«       Œ/ dˆ fd„}|rdnd}‰ j                  d|dd¬	«       |j                  «       D ]¨  \  }}	 ||	«      }
|
rT‰ j                  j                  |
«       |j                  «       }d
j                  d„ |D «       «      }|j                  «       }n|j                  «       }‰ j                  j                  |«       ‰ j                  j                  «        Œª ‰ j                  j                  d«       y y )Nr¬   r,   c                ó>  •— g }| D ]1  }|j                  ‰j                  «      }|sŒ!|j                  |«       Œ3 t        |«      dk  rdj	                  t        t        |«      «      S t        d„ |D «       «      }dj	                  d„ |j                  «       D «       «      S )Né
   r  c              3  óX   K  — | ]"  }t        |«      j                  d d«      d   –— Œ$ y­wrÈ  )rI   r  )rÉ  Úlocs     r<   rË  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>  s(   è ø€ ð -Ù:C°3”C˜“H—N‘N 4¨Ó+¨AÕ.¹)ùs   ‚(*c              3  óV   K  — | ]!  \  }}d j                  |||dkD  rdnd«      –— Œ# y­w)z{}: {} warning{}r?   r·   r¦   N)r  )rÉ  ÚkÚvs      r<   rË  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>  s3   è ø€ ð !á :™˜˜1ð '×-Ñ-¨a°¸1¸qº5±CÀb×IÙ :ùs   ‚'))	rÎ   r¡   r·  r/  r�   r�   rI   r   r?  )ÚreportsÚ	locationsr¬   rS  Úcounts_by_filenamer:   s        €r<   Úcollapsed_location_reportzDTerminalReporter.summary_warnings.<locals>.collapsed_location_reportù  sš   ø€ Ø�	Û �AØ Ÿ~™~¨d¯k©kÓ:�HÚØ!×(Ñ(¨Õ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)rY  r�  r  c              3  ó&   K  — | ]	  }d |z   –— Œ y­w)rÌ  Nr[   )rÉ  r  s     r<   rË  z4TerminalReporter.summary_warnings.<locals>.<genexpr>  s   è ø€ Ð(A¹5°a¨°­¹5ùs   ‚zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)r  zlist[WarningReport]rM   rI   )r  rÖ   r  rç   r/  r<  rÃ   r·  r6  r?  rÛ   ru   rÒ  r�   Úrstrip)r:   Úall_warningsr
   Úwarning_reportsÚreports_grouped_by_messageÚwrr  r5  rÃ   Úmessage_reportsÚmaybe_locationr®  Úindenteds   `            r<   rí  z!TerminalReporter.summary_warningsæ  sb  ø€ Ø�;‰;�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                ó*   — | j                  ddd«       y )Nr'   ÚPASSESÚP©Úsummary_passes_combinedrõ   s    r<   rî  zTerminalReporter.summary_passes  s   € Ø×$Ñ$ X¨x¸Õ=r=   c                ó*   — | j                  ddd«       y )Nr+   ÚXPASSESÚXr&  rõ   s    r<   rï  z TerminalReporter.summary_xpasses  s   € Ø×$Ñ$ Y°	¸3Õ?r=   c                ó†  — | j                   j                  j                  dk7  rž| j                  |«      rŒ| j	                  |«      }|sy | j                  d|«       |D ]`  }|j                  r7| j                  |«      }| j                  d|dd¬«       | j                  |«       | j                  |j                  «       Œb y y y )Nrt   r›  r‹  T)rX  r�  )r¡   r›   rp   r  r  r6  Úsectionsr  Ú_outrep_summaryÚ_handle_teardown_sectionsrÄ   )r:   Úwhich_reportsÚ	sep_titleÚ
needed_optr  rn  r”   s          r<   r'  z(TerminalReporter.summary_passes_combined"  s©   € ð �;‰;×Ñ×%Ñ%¨Ò-Ø�{‰{˜:Ô&Ø,0¯O©O¸MÓ,J�ÙØØ—‘˜s IÔ.Û"�CØ—|’|Ø"×6Ñ6°sÓ;˜ØŸ™ s¨C°tÀ$˜ÔGØ×,Ñ,¨SÔ1Ø×2Ñ2°3·:±:Õ>ñ #ð 'ð .r=   c                óŠ   — | j                  d«      }|D �cg c]"  }|j                  dk(  r|j                  |k(  r|‘Œ$ c}S c c}w )Nr¦   rº   )r  r½   rÄ   )r:   rÄ   r  r¿   s       r<   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reports2  sN   € Ø—/‘/ "Ó%ˆñ "ó
á!�Ø�{‰{˜jÒ(¨V¯]©]¸fÒ-Dò Ø!ñ
ð 	
ùò 
s   –'A c                óR   — | j                  |«      D ]  }| j                  |«       Œ y rO   )r3  Úprint_teardown_sections)r:   rÄ   r¿   s      r<   r.  z*TerminalReporter._handle_teardown_sections:  s%   € Ø×0Ñ0°Ö8ˆFØ×(Ñ(¨Õ0ñ 9r=   c                ó  — | j                   j                  j                  }|dk(  ry |j                  D ]X  \  }}|dk7  r||vrŒd|v sŒ| j                  j                  d|«       |dd  dk(  r|d d }| j                  j                  |«       ŒZ y )Nrt   r}   rº   rŸ  rÀ  r  )r¡   r›   ry   r,  rÛ   r4  ru   ©r:   rn  ry   Úsecnamer#  s        r<   r5  z(TerminalReporter.print_teardown_sections>  sŠ   € Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÒØØ #§¤ÑˆG�WØ˜eÒ#¨¸7Ñ(BØØ˜WÒ$Ø—‘—‘˜S 'Ô*Ø˜2˜3�< 4Ò'Ø% c r˜l�GØ—‘—‘˜gÕ&ñ !-r=   c                ól   — | j                   j                  j                  }| j                  dd|¬«       y )Nr&   ÚFAILURES©ro   )r¡   r›   rp   Úsummary_failures_combined)r:   ro   s     r<   rë  z!TerminalReporter.summary_failuresK  s,   € Ø—‘×"Ñ"×*Ñ*ˆØ×&Ñ& x°À5Ð&ÕIr=   c                ó´   — | j                   j                  j                  }|r | j                   j                  j                  nd}| j	                  dd|¬«       y )Nrt   r*   Ú	XFAILURESr;  )r¡   r›   rx   rp   r<  )r:   Úshow_tbro   s      r<   rì  z"TerminalReporter.summary_xfailuresO  sE   € Ø—+‘+×$Ñ$×-Ñ-ˆÙ.5�—‘×"Ñ"×*Ò*¸4ˆØ×&Ñ& y°+ÀUÐ&ÕKr=   )r1  c               ó”  — |dk7  rÃ|r| j                  |«      r¯| j                  |«      }|sy | j                  d|«       |dk(  r*|D ]$  }| j                  |«      }| j	                  |«       Œ& y |D ]T  }| j                  |«      }| j                  d|dd¬«       | j                  |«       | j                  |j                  «       ŒV y y y )Nrt   r›  ru   r‹  T©rZ  r�  )	r  r  r6  r
  r‘   r  r-  r.  rÄ   )	r:   r/  r0  ro   r1  r  rn  ru   r”   s	            r<   r<  z*TerminalReporter.summary_failures_combinedT  sÂ   € ð �DŠ=Ù §¡¨ZÔ!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                ó|  — | j                   j                  j                  dk7  r™| j                  d«      }|sy | j	                  dd«       | j
                  d   D ]`  }| j                  |«      }|j                  dk(  rd|z   }nd|j                  › d|› �}| j	                  d	|d
d
¬«       | j                  |«       Œb y y )Nrt   r-   r›  ÚERRORSr¸   zERROR collecting z	ERROR at z of r‹  TrA  )	r¡   r›   rp   r  r6  rÖ   r  r½   r-  )r:   r  rn  r”   s       r<   rê  z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                óJ  — |j                  | j                  «       | j                  j                  j                  }|dk(  ry |j
                  D ]S  \  }}|dk7  r||vrŒ| j                  j                  d|«       |dd  dk(  r|d d }| j                  j                  |«       ŒU y )Nrt   r}   rŸ  rÀ  r  )rÄ  rÛ   r¡   r›   ry   r,  r4  ru   r7  s        r<   r-  z TerminalReporter._outrep_summary|  s’   € Ø�‰�t—x‘xÔ Ø—k‘k×(Ñ(×4Ñ4ˆØ˜$ÒØØ #§¤ÑˆG�WØ˜eÒ#¨¸7Ñ(BØØ�H‰H�L‰L˜˜gÔ&Ø�r�sˆ|˜tÒ#Ø! # 2˜,�Ø�H‰H�M‰M˜'Õ"ñ !-r=   c                ó.  — | j                   dk  ry t        j                  «       | j                  z
  }| j	                  «       \  }}g }| j                   dk\  }|r| j
                  j                  }|D ]O  \  }} | j
                  j                  |fi |¤Ž}	|rt        |	«      t        |«      z
  z  }|j                  |	«       ŒQ dj                  |«      }
|di}dt        |«      › �} | j
                  j                  |fi |¤Ž}|rt        |«      t        |«      z
  z  }|
|z  }
|rE | j
                  j                  d
i |¤Ž}|j                  d«      r|d d }t        |«      z  }|
|z  }
|r | j                  d|
fd	i|¤Ž y  | j                  |
fi |¤Ž y )NrÀ  r   rµ  Tz in z[0méüÿÿÿr›  rÜ   ©r¦   )ró   r   r‘  r¢  Úbuild_summary_stats_linerÛ   rÜ   r  r/  r·  r�   Úformat_session_durationrÿ  r6  r‘   )r:   Úsession_durationÚpartsrŠ  Ú
line_partsÚdisplay_seprÜ   Útextr  Úwith_markupr”   Úmain_markupÚdurationÚduration_with_markupÚmarkup_for_end_seps                  r<   ræ  z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ˆØ.˜tŸx™xŸ™¨xÑG¸;ÑGÐÙØœÐ1Ó2´S¸³]ÑBÑBˆIØÐ#Ñ#ˆáØ!0 §¡§¡Ñ!C°{Ñ!CÐØ!×*Ñ*¨9Ô5Ø%7¸¸Ð%<Ð"ØœÐ/Ó0Ñ0ˆIØÐ%Ñ%ˆCáØˆD�N‰N˜3 ÑH¨yÐH¸KÓHàˆD�O‰O˜CÑ/ ;Ó/r=   c           	     ó‚  ‡ ‡
‡— ‰ j                   sy dˆ fd„}dˆ fd„}dˆ fd„}dˆ fd„Š
dˆ fd„Šdˆ ˆ
ˆfd„}||t        |d¬«      |t        |d	¬«      t        |d
¬«      dœ}g }‰ j                   D ]  }|j                  |«      }|sŒ ||«       Œ  |r.‰ j                  dddd¬«       |D ]  }	‰ j	                  |	«       Œ y y )Nc               óô   •— ‰j                   j                  |g «      }|sy ‰j                  }|D ]G  }t        j                  |t        «      }t        ||‰j                  |di«      }| j                  |«       ŒI y )NT)rÖ   r  r¡   Ú_color_for_typeÚ_color_for_type_defaultÚ _get_line_with_reprcrash_messagerÛ   r·  )r®  Ústatr&   r¡   rn  r~   ru   r:   s          €r<   Úshow_simplez8TerminalReporter.short_test_summary.<locals>.show_simple²  sl   ø€ Ø—Z‘Z—^‘^ D¨"Ó-ˆFÙØØ—[‘[ˆFÛ�Ü'×+Ñ+¨DÔ2IÓJ�Ü7Ø˜C §¡¨E°4¨=ó�ð —‘˜TÕ"ñ r=   c                ó†  •— ‰	j                   j                  dg «      }|D ]Ÿ  }|j                  ‰	j                  t        d   di«      \  }} ‰	j
                  j                  |fi |¤Ž}t        ‰	j
                  ‰	j                  |«      }|› d|› �}|j                  }|r|dt        |«      z   z  }| j                  |«       Œ¡ y )Nr*   r,   TrŽ   ú - ©rÖ   r  Ú_get_verbose_word_with_markupr¡   rV  rÛ   r  Ú_get_node_id_with_markuprW  rI   r·  )
r®  r*   rn  Úverbose_wordÚverbose_markupÚmarkup_wordrÄ   ru   rq  r:   s
            €r<   Úshow_xfailedz9TerminalReporter.short_test_summary.<locals>.show_xfailed¾  sµ   ø€ Ø—j‘j—n‘n Y°Ó3ˆGÛ�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÙØ˜E¤C¨£KÑ/Ñ/�Dà—‘˜TÕ"ñ r=   c                ó†  •— ‰	j                   j                  dg «      }|D ]Ÿ  }|j                  ‰	j                  t        d   di«      \  }} ‰	j
                  j                  |fi |¤Ž}t        ‰	j
                  ‰	j                  |«      }|› d|› �}|j                  }|r|dt        |«      z   z  }| j                  |«       Œ¡ y )Nr+   r,   TrŽ   r\  r]  )
r®  r+   rn  r`  ra  rb  rÄ   ru   rq  r:   s
            €r<   Úshow_xpassedz9TerminalReporter.short_test_summary.<locals>.show_xpassedÍ  sµ   ø€ Ø—j‘j—n‘n Y°Ó3ˆGÛ�Ø/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™�ÙØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜TÕ"ñ r=   c           	     óÊ  •— ‰j                   j                  dg «      }|rt        ‰j                  |«      ng }|sy |d   j	                  ‰j
                  t        d   di«      \  }} ‰j                  j                  |fi |¤Ž}d}|D ]Z  \  }}}	}
|
j                  |«      r|
t        |«      d  }
|	�| j                  d||||	|
fz  «       ŒC| j                  d||||
fz  «       Œ\ y )Nr(   r   r,   Tú	Skipped: z%s [%d] %s:%d: %sz%s [%d] %s: %s)rÖ   r  Ú_folded_skipsrÙ   r^  r¡   rV  rÛ   r  Ú
startswithr/  r·  )r®  r(   Úfskipsr`  ra  rb  r  Únumr  rH  rq  r:   s              €r<   Úshow_skipped_foldedz@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 VØ×$Ñ$ VÔ,Ø#¤C¨£K MÐ2�FØÐ%Ø—L‘LØ+¨{¸CÀÈÐQWÐ.XÑXõð —L‘LÐ!1°[À#ÀvÈvÐ4VÑ!VÕWñ 06r=   c                ó\  •— ‰	j                   j                  dg «      }|D �]	  }|j                  €J ‚t        |j                  t        «      sJ ||j                  f«       ‚t        |j                  «      dk(  sJ ||j                  f«       ‚|j                  ‰	j                  t        d   di«      \  }} ‰	j                  j                  |fi |¤Ž}t        ‰	j                  ‰	j                  |«      }|› d|› �}|j                  d   }|r|dt        |«      z   z  }| j                  |«       �Œ y )Nr(   rž  r,   TrŽ   r\  r\  )rÖ   r  r  r*  rd  r/  r^  r¡   rV  rÛ   r  r_  rI   r·  )
r®  r(   rn  r`  ra  rb  rÄ   ru   rq  r:   s
            €r<   Úshow_skipped_unfoldedzBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedï  s  ø€ Ø+/¯:©:¯>©>¸)ÀRÓ+HˆGä�Ø—|‘|Ð/Ð/Ð/Ü! #§,¡,´Ô6ÐK¸¸c¿l¹lÐ8KÓKÐ6Ü˜3Ÿ<™<Ó(¨AÒ-ÐB°°S·\±\Ð/BÓBÐ-à/2×/PÑ/PØ—K‘K¤/°*Ñ"=¸tÐ!Dó0Ñ,�˜nð .˜dŸh™hŸo™o¨lÑM¸nÑM�Ü1°$·(±(¸D¿K¹KÈÓM�Ø%˜ a¨ xÐ0�ØŸ™ a™�ÙØ˜E¤C¨£KÑ/Ñ/�DØ—‘˜TÖ"ñ r=   c                ó@   •— ‰j                   r	 ‰| «       y  ‰| «       y rO   )rß   )r®  r:   rl  rn  s    €€€r<   Úshow_skippedz9TerminalReporter.short_test_summary.<locals>.show_skipped  s   ø€ Ø×ÒÙ# EÕ*á% eÕ,r=   r&   )rY  r'   r-   )r  r*  Úfr·   Úpr»   r›  zshort test summary infoT)ra  r�  )r®  ú	list[str]rY  rI   rM   rN   )r®  rs  rM   rN   )rj   r   r  r6  r‘   )r:   rZ  rc  re  rp  ÚREPORTCHAR_ACTIONSr®  r±   rb   ru   rl  rn  s   `         @@r<   rð  z#TerminalReporter.short_test_summary®  sÆ   ú€ Ø×ÒØõ
	#õ	#õ	#õ	Xõ(	#÷&	-ð ØÜ˜¨8Ô4ØÜ˜¨8Ô4Ü˜¨7Ô3ñI
Ðð ˆØ×$Ô$ˆDØ'×+Ñ+¨DÓ1ˆFÚÙ�u•ð %ñ
 Ø�N‰N˜3Ð 9ÀÈ4ˆNÔPÛ�Ø—‘ Õ%ñ ð r=   c                óÒ   — | j                   �| j                  �| j                  r,| j                  «        | j                   sJ ‚| j                  sJ ‚| j                   | j                  fS rO   )r×   rØ   rg  r>  rõ   s    r<   r†  z TerminalReporter._get_main_color  sb   € Ø×ÑÐ# t×'8Ñ'8Ð'@ÀD×DVÒDVØ× Ñ Ô"Ø×#Ò#Ð#Ð#Ø×$Ò$Ð$Ð$Ø×Ñ ×!2Ñ!2Ð2Ð2r=   c                ó~   — | j                   }d|v sd|v rd}|S d|v sd|v s|rd}|S d|v s| j                  sd}|S d}|S )	Nr&   r-   rZ  r,   r+   rY  r'   rX  )rÖ   rg  )r:   Úunknown_type_seenrÖ   rŠ  s       r<   Ú_determine_main_colorz&TerminalReporter._determine_main_color#  st   € Ø—
‘
ˆØ�uÑ ¨5Ñ 0ØˆJð Ðð ˜5Ñ  I°Ñ$6Ñ:KØ!ˆJð
 Ðð	 ˜Ñ d×&8Ò&8Ø ˆJð Ðð "ˆJØÐr=   c                óÚ   — g }| j                   D ]$  }|sŒ|t        vsŒ||vsŒ|j                  |«       Œ& t        t        «      |z   | _        | j                  t        |«      «      | _        y rO   )rÖ   ÚKNOWN_TYPESr·  ÚlistrØ   rx  rK   r×   )r:   Úunknown_typesÚ
found_types      r<   r>  z TerminalReporter._set_main_color/  sa   € Ø#%ˆØŸ*œ*ˆJÚØ¤[Ò0°ZÀ}Ò5TØ!×(Ñ(¨Õ4ð %ô !¤Ó-°Ñ=ˆÔØ×5Ñ5´d¸=Ó6IÓJˆÕr=   c                óx   — | j                   j                  d«      r| j                  «       S | j                  «       S )a™  
        Build the parts used in the last summary stats line.

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

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

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

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

        The final color of the line is also determined by this function, and is the second
        element of the returned tuple.
        r¿  )r¡   rï   Ú&_build_collect_only_summary_stats_lineÚ _build_normal_summary_stats_linerõ   s    r<   rH  z)TerminalReporter.build_summary_stats_line8  s4   € ð( �;‰;× Ñ  Ô/Ø×>Ñ>Ó@Ð@à×8Ñ8Ó:Ð:r=   c                ó€   — | j                   j                  |g «      }|D �cg c]  }t        |dd«      sŒ|‘Œ c}S c c}w )zRGet test/collection reports for the given status key, such as `passed` or `error`.rÆ   T)rÖ   r  rA   )r:   Úkeyr  r  s       r<   Ú_get_reports_to_displayz(TerminalReporter._get_reports_to_displayQ  s:   € à—*‘*—.‘.  bÓ)ˆÙ"ÓP™7�a¤g¨aÐ1HÈ$Õ&O’˜7ÑPÐPùÒPs   ¡;´;c                ó   — | j                  «       \  }}g }|D ]d  }| j                  |«      }|sŒt        |«      }t        j	                  |t
        «      }|dd||k(  i}|j                  dt        ||«      z  |f«       Œf |sdt
        difg}||fS )NTr�  ú%d %szno tests ran)r†  rƒ  r/  rV  r  rW  r·  Ú	pluralize)	r:   rŠ  Úknown_typesrK  r‚  r  r`   r~   r  s	            r<   r€  z1TerminalReporter._build_normal_summary_stats_lineV  s¨   € ð #'×"6Ñ"6Ó"8Ñˆ
�KØˆãˆCØ×2Ñ2°3Ó7ˆGÚÜ˜G›�Ü'×+Ñ+¨CÔ1HÓI�Ø  v¨u¸
Ñ/BÐC�Ø—‘˜g¬	°%¸Ó(=Ñ=¸vÐFÕGð ñ Ø$Ô'>ÀÐ&EÐFÐGˆEà�jÐ Ð r=   c                óÆ  — t        | j                  d«      «      }t        | j                  d«      «      }| j                  dk(  r
dddifg}d}no|dk(  r#d}dt        | j                  d	«      z  }||difg}nG| j                  |k(  }|r	d}d
|› d�}n&d}| j                  |z
  }|› d| j                  › d|› d�}||difg}|r t        d   }|dt        |d«      z  |difgz  }||fS )Nr)   r-   r   zno tests collectedrY  TrX  z%d %s collectedÚtestzno tests collected (z deselected)r„  z tests collected (r…  )r/  rƒ  rÓ   r†  rV  )r:   r)   r)  rK  rŠ  Úcollected_outputÚall_tests_were_deselectedr™  s           r<   r  z7TerminalReporter._build_collect_only_summary_stats_linei  s8  € ô ˜×5Ñ5°lÓCÓDˆ
Ü�T×1Ñ1°'Ó:Ó;ˆà×Ñ Ò"Ø*¨X°tÐ,<Ð=Ð>ˆEØ!‰Jà˜1Š_Ø ˆJØ0´9¸T×=OÑ=OÐQWÓ3XÑXÐØ&¨°TÐ(:Ð;Ð<‰Eà(,×(:Ñ(:¸jÑ(HÐ%Ù(Ø%�
Ø%9¸*¸À\Ð#RÑ à$�
Ø×-Ñ-°
Ñ:�Ø&. Z¨q°×1CÑ1CÐ0DÐDVÐWaÐVbÐbnÐ#oÐ à&¨°TÐ(:Ð;Ð<ˆEáÜ(¨Ñ1ˆJØ�w¤¨6°7Ó!;Ñ;¸jÈ$Ð=OÐPÐQÑQˆEà�jÐ Ð r=   rO   )r¡   r   ré   zTextIO | NonerM   rN   )rM   z#Literal['progress', 'count', False])rM   r„   )rM   rK   )rý   zbool | NonerM   rN   )r±   rI   rM   rK   )rÄ   rI   r  rI   r  rK   rM   rN   rG  )r  rI   r  rI   rM   rN   )rM   rN   )r#  rI   r  rK   r  r„   r  rI   r  rK   rM   rN   )r#  rI   r  rK   r  rK   rM   rN   )ru   zstr | bytesr  rK   rM   rN   )ru   rI   r  rK   rM   rN   )NN)
r4  rI   r5  rL   rÜ   ú
int | Noner  rK   rM   rN   )r›  )r5  rI   r4  rI   r8  rK   rM   rN   )r”   rI   r8  rK   rM   rN   )rW   rI   r?  zSequence[Any]rM   rN   )rC  r   rM   rK   )rI  zwarnings.WarningMessagerÄ   rI   rM   rN   )rM  r   rM   rN   )r?  zSequence[Item]rM   rN   )rÄ   rI   rS  ztuple[str, int | None, str]rM   rN   )r¿   r$   rM   rN   )rM   zGenerator[None, object, object])rM   rI   )r¿   r#   rM   rN   )F)r
   rK   rM   rN   )r¬  r%   rM   rN   )r®  zSequence[str | Sequence[str]]rM   rN   )r¡   r   rM   rs  )r¬  r%   rÜ  zint | ExitCoderM   úGenerator[None])rM   r�  )rô  zExceptionInfo[BaseException]rM   rN   )
rÄ   rI   r  rI   rH  rŒ  rT  rI   rM   rI   )rÕ  rI   )r/  rI   r0  rI   r1  rI   rM   rN   )rÄ   rI   rM   zlist[TestReport])rÄ   rI   rM   rN   )rn  r$   rM   rN   )
r/  rI   r0  rI   ro   rI   r1  rL   rM   rN   )rn  r"   rM   rN   )rM   ztuple[str, list[str]])rw  rK   rM   rI   )rM   z-tuple[list[tuple[str, dict[str, bool]]], str])r‚  rI   rM   z	list[Any])MrP   rQ   rR   r9   rä   Úpropertyró   rö   rd   re   rû   Úsetterrÿ   r  r  r  r  r%  r
  r  r‘   r2  r6  r9  ru   rA  rD  rK  rN  rP  rU  rt  rg  r   rz  rm  rh  r	  r…  r’  r•  r”  r¯  r«  rª  rÅ  rÃ  rè  râ  rõ  r÷  rä  rR  r  r
  r  rí  rî  rï  r'  r3  r.  r5  rë  rì  r<  rê  r-  ræ  rð  r†  rx  r>  rH  rƒ  r€  r  r[   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                óº   — |j                  |j                  «      }|j                  d«      ^}}|r*| j                  dj	                  |«      d¬«      }|dz   |z   S |S )Nr  Trœ  )rþ  rÄ   r  r  r�   )Útwr¡   rn  rÄ   ÚpathrK  Úparts_markups          r<   r_  r_  Š  sZ   € Ø×'Ñ'¨¯
©
Ó3€FØ—<‘< Ó%€L€Dˆ5ÙØ—y‘y §¡¨5Ó!1¸�yÓ=ˆØ�d‰{˜\Ñ)Ð)àˆr=   c                óX  — |j                  d«      }|dk7  r|d| }d}t        | j                  d«      «      }|t        |«      z   |kD  ry|t        |«      z   |kD  r@|t        |«      z  }|d| }|t        |«      z   |kD  r|dd }|t        |«      z   |kD  rŒ||z  }| j                  |«      S )z€Format msg into format, ellipsizing it if doesn't fit in available_width.

    Returns None if even the ellipsis can't fit.
    r  rÀ  Nz...r¦   )Úfindr   r  r/  )r  r”   rr  ÚiÚellipsisÚformat_widths         r<   rj  rj  ”  sÂ   € ð 	�‰�‹€AØˆB‚wØ�"�1ˆgˆà€HÜ˜FŸM™M¨"Ó-Ó.€LØ”c˜(“mÑ# oÒ5Øà”h˜s“mÑ# oÒ5Øœ3˜x›=Ñ(ˆØÐ"�?Ð#ˆØœX c›]Ñ*¨_Ò<Ø�c�r�(ˆCð œX c›]Ñ*¨_Ó<àˆx‰ˆà�=‰=˜ÓÐr=   c                óŽ  — |j                  | |«      \  }} |j                  |fi |¤Ž}t        || |«      }|› d|› �}t        |«      }		 |j                  j
                  j                  }
t        «       s| j                  j                  dk\  rd|
› �}
n|j                  |	z
  }t        d|
|«      }
|
�||
z  }|S # t        $ r Y |S w xY w)z?Get summary line for a report, trying to add reprcrash message.rŽ   r\  r\  z - {})r^  r  r_  r   r  rú  rÃ   r   r›   ra   rÜ   rj  r	  )r¡   rn  r‘  Úword_markupr`  ra  rY   r[  ru   Ú
line_widthr”   rr  s               r<   rX  rX  ­  sã   € ð $'×#DÑ#DØ�ó$Ñ €L�.ð ˆ2�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Øˆ?Ø�C‰KˆDà€Køô ò Øð €Kðús   Á	 B7 Â7	CÃCc                ó>  — i }|D ]Ý  }|j                   €J ‚t        |j                   t        «      sJ ||j                   f«       ‚t        |j                   «      dk(  sJ ||j                   f«       ‚|j                   \  }}}t	        | t        |«      «      }t        |di «      }|j                  dk(  rd|v r
d|vr|d |f}n|||f}|j                  |g «      j                  |«       Œß g }	|j                  «       D ]#  \  }}
|	j                  t        |
«      g|¢­«       Œ% |	S )Nrž  Úkeywordsr¹   ÚskipÚ
pytestmark)r  r*  rd  r/  r!   r   rA   r½   r<  r·  r?  )rÙ   r(   ÚdÚeventr  rH  rq  r�  r‚  rE   Úeventss              r<   rh  rh  Ë  s!  € ð AC€AÛˆØ�~‰~Ð)Ð)Ð)Ü˜%Ÿ.™.¬%Ô0ÐI°5¸%¿.¹.Ð2IÓIÐ0Ü�5—>‘>Ó" aÒ'Ð@¨%°·±Ð)@Ó@Ð'Ø!&§¡Ñˆ�˜ä˜Y¬¨V«Ó5ˆÜ˜5 *¨bÓ1ˆð
 �J‰J˜'Ò!Ø˜(Ñ"Ø HÑ,à06¸¸fÐ/E‰Cà˜6 6Ð*ˆCØ	�‰�S˜"Ó×$Ñ$ UÕ+ð' ð( 68€FØ—w‘w–y‰ˆˆVØ�‰”s˜6“{Ð) SÑ)Õ*ð !à€Mr=   rZ  rY  rX  )r&   r-   r,   r'   c                óT   — |dvr| |fS |j                  dd«      }| | dk7  r|dz   fS |fS )N)r-   r,   r‰  r,   Úwarningr?   r·   )r®   )r`   Únouns     r<   r†  r†  ó  sD   € àÐ0Ñ0Ø�dˆ{Ðð
 �<‰<˜
 IÓ.€Dà ¨¢
�$˜‘*Ð4Ð4°Ð4Ð4r=   c                ó¬   — g }| D ]L  \  }}|j                   › d|j                  › �}|j                  d«      r|dd  }||vsŒ<|j                  |«       ŒN |S )NrŸ  zpytest-é   )Úproject_namer¦  ri  r·  )r½  rE   rM  ÚdistrÕ  s        r<   r¼  r¼     sb   € Ø€FÛ"‰ˆ�à×#Ñ#Ð$ A d§l¡l ^Ð4ˆà�?‰?˜9Ô%Ø˜˜�8ˆDà�vÒØ�M‰M˜$Õð #ð €Mr=   c                óh   — | dk  r| d›d�S t        j                  t        | «      ¬«      }| d›d|› d�S )zQFormat the given seconds in a human readable manner to show in the final summary.é<   z.2fr·   )Úsecondszs (r^  )ÚdatetimeÚ	timedeltar„   )r¬  Údts     r<   rI  rI    sA   € à�‚|Ø˜#�˜aÐ Ð ä×Ñ¬¨G«Ô5ˆØ˜#�˜c "  QÐ'Ð'r=   c                ó<  — t        | d«      r-| j                  }|j                  d«      r|t        d«      d }|S | j                  sJ ‚t        | j                  t        «      sJ ‚| j                  \  }}}|j                  d«      r|t        d«      d }|S |dk(  rd}|S )zqGet the reason string of a skip/xfail/xpass test report.

    The string is just the part given by the user.
    rW  zreason: Nrg  ÚSkippedr¦   )re  rW  ri  r/  r(   r*  r  rd  )r¿   rq  r‹  s      r<   ri  ri    s¥   € ô
 ˆv�zÔ"Ø—‘ˆØ×Ñ˜ZÔ(ØœC 
›OÐ-Ð.ˆFØˆà�~Š~Ðˆ~Ü˜&Ÿ/™/¬5Ô1Ð1Ð1Ø—‘‰ˆˆ1ˆfØ×Ñ˜[Ô)ØœC Ó,Ð.Ð/ˆFð ˆð �yÒ ØˆFØˆr=   )rC   r   rM   rN   )r¡   r   rM   rN   )r¡   r   rM   rI   )r¿   r"   rM   ztuple[str, str, str])r‘  r   r¡   r   rn  r"   )r  rI   r”   rI   rr  r„   rM   rL   )
r¡   r   rn  r"   r‘  r   rš  zdict[str, bool]rM   rI   )rÙ   r   r(   zSequence[CollectReport]rM   z&list[tuple[int, str, int | None, str]])r`   r„   r¥  rI   rM   ztuple[int, str])rM   rs  )r¬  ÚfloatrM   rI   )r¿   r$   rM   rI   )VrS   Ú
__future__r   ÚargparseÚcollectionsr   Údataclassesr­  Ú	functoolsr   rÐ  Úpathlibr   r£  r˜   r!  Ú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—  rz  r…   ÚActionr0   rV   rŠ   r¢   r²   rÀ   Ú	dataclassrÂ   r—   r_  rj  rX  rh  rV  rW  r†  r¼  rI  ri  r[   r=   r<   Ú<module>rÇ     s»  ðñõ
 #ã Ý Û Û Ý Û Ý Û Û 
Û Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý  Û ã å Ý Ý 'Ý ,Ý &Ý (Û Ý 0Ý (Ý !Ý #Ý #Ý ,Ý Ý Ý (Ý 'Ý &Ý )Ý &ñ Ý$ð  #Ð ð	€ð Ð ô"=�h—o‘oô "=ôJ/˜ô /ó(Oód	Bóñ2 
�$Ôò,ó ð,ð ×Ñ÷ð ó ðð8 ÷]!ð ]!ó ð]!ó@!óð2ØðØ#ðØ)7ðØFUðàóð<Øðà$ðð ,óð@ ØØØñ	€ð #Ð ó
5óó(ôr=   