§
    s
ÊjÑÿ  ã                  óv  — d Z ddlmZ ddlZddlmZ ddlmZ ddlmZ ddlm	Z	 ddlm
Z
 ddlZddlZdd	lmZ ddlZdd
lmZ ddlZddlZddlZddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlZddlZddlm Z  ddlm!Z! ddlm"Z" ddl#m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+Zddl,m-Z- ddl.m/Z/ ddl.m0Z0 ddl.m1Z1 ddl.m2Z2 ddl3m4Z4 ddl5m6Z6 dd l5m7Z7 dd!l8m9Z9 dd"l8m:Z: dd#l;m<Z< dd$l;m=Z= dd%l;m>Z> erdd&l?m@Z@ d'ZAd(ZBd)ZC G d*„ d+ejD        ¦  «        ZE G d,„ d-e¦  «        ZFdgd2„ZGdhd5„ZHdid7„ZI e2d8¬9¦  «        djd=„¦   «         ZJejK         G d>„ d?¦  «        ¦   «         ZLe G d@„ dA¦  «        ¦   «         ZMdkdE„ZNdldK„ZOdmdN„ZPdndT„ZQdUdUdVdWdWdUdXœZRdVZSdod\„ZTdpd^„ZUdqda„ZVdqdb„ZWdrdd„ZX G de„ df¦  «        ZYdS )szsTerminal reporting of the full testing process.

This is a good source for looking at the various reporting hooks.
é    )ÚannotationsN)ÚCounter)ÚCallable)Ú	Generator)ÚMapping)ÚSequence)Úpartial)ÚPath)ÚAny)ÚClassVar)Úfinal)ÚLiteral)Ú
NamedTuple)ÚTextIO)ÚTYPE_CHECKING)Úcompat)Únodes)Útiming)ÚExceptionInfo)ÚExceptionRepr)ÚTerminalWriter)Úwcswidth)Úrunning_on_ci)Ú_PluggyPlugin)ÚConfig)ÚExitCode)Úhookimpl)ÚParser)ÚItem)ÚNode)Úabsolutepath)Úbestrelpath)Ú
BaseReport)ÚCollectReport)Ú
TestReport)ÚSessiong      à?)ÚfailedÚpassedÚskippedÚ
deselectedÚxfailedÚxpassedÚwarningsÚerrorúsubtests passedúsubtests failedzsubtests skippedÚfEc                  ó8   ‡ — 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.
    NFÚoption_stringsúSequence[str]ÚdestÚstrÚdefaultÚobjectÚrequiredÚboolÚhelpú
str | NoneÚreturnÚNonec                óV   •— t          ¦   «                              ||d|||¬¦  «         d S )Nr   )r4   r6   Únargsr8   r:   r<   )ÚsuperÚ__init__)Úselfr4   r6   r8   r:   r<   Ú	__class__s         €ú@C:\Projects\Muse2API\.venv\Lib\site-packages\_pytest/terminal.pyrC   zMoreQuietAction.__init__W   sB   ø€ õ 	‰Œ×ÒØ)ØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    Úparserúargparse.ArgumentParserÚ	namespaceúargparse.NamespaceÚvaluesústr | Sequence[object] | NoneÚoption_stringc                ó–   — t          || j        d¦  «        dz
  }t          || j        |¦  «         t          |dd¦  «        dz   |_        d S )Nr   é   Úquiet)Úgetattrr6   ÚsetattrrQ   )rD   rH   rJ   rL   rN   Ú	new_counts         rF   Ú__call__zMoreQuietAction.__call__h   sL   € õ ˜I t¤y°!Ñ4Ô4°qÑ8ˆ	Ý�	˜4œ9 iÑ0Ô0Ð0å! )¨W°aÑ8Ô8¸1Ñ<ˆ	ŒˆˆrG   )NFN)r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   ©N)
rH   rI   rJ   rK   rL   rM   rN   r=   r>   r?   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__rC   rU   Ú__classcell__)rE   s   @rF   r3   r3   P   su   ø€ € € € € ðð ð ØØð
ð 
ð 
ð 
ð 
ð 
ð 
ð, %)ð
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=rG   r3   c                  ó2   — e Zd ZU dZded<   ded<   ded<   dS )Ú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.
    r7   ÚcategoryÚletterz$str | tuple[str, Mapping[str, bool]]ÚwordN)rW   rX   rY   rZ   Ú__annotations__© rG   rF   r]   r]   u   s<   € € € € € € ðð ð €M€M�MØ€K€K�KØ.Ð.Ð.Ñ.Ð.Ð.rG   r]   rH   r   r>   r?   c           	     ó\  — |                       ddd¬¦  «        }|                     ddddd	d
¬¦  «         |                     ddddd¬¦  «         |                     ddddd¬¦  «         |                     ddddd¬¦  «         |                     ddddd¬¦  «         |                     ddt          dd	d¬¦  «         |                     d d	t          dd!¬"¦  «         |                     d#d$d%d&t
          d'd(¬)¦  «         |                     d*d+dd,dd-¬.¦  «         |                     d/d0dd1dd2¬¦  «         |                     d3dd1d4¬5¦  «         |                     d6d7d%d8d9g d:¢d;¬<¦  «         |                     d=dd>dd?¬¦  «         |                     d@d%dAg dB¢dCdD¬E¦  «         |                     dFdGdddH¬I¦  «         |                     dJdKd%dKd9g dL¢dM¬<¦  «         |                     dNdOdOdPgdQ¬R¦  «         |                      dSdTdU¬V¦  «         t          j        | t          j	        dW¬X¦  «         d S )YNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr8   r6   r<   z--no-headerÚ
store_trueFÚ	no_headerzDisable headerz--no-summaryÚ
no_summaryzDisable summaryz--no-fold-skippedÚstore_falseÚfold_skippedTz+Do not fold skipped tests in short summary.)ri   r6   r8   r<   z--force-short-summaryÚforce_short_summaryz=Force condensed summary output regardless of verbosity level.z-qz--quietzDecrease verbosityz--verbosityzSet verbosity. Default: 0.)r6   Útyper8   r<   z-rz--report-charsÚstoreÚreportcharsÚcharsa  Show extra test summary info as specified by chars: (f)ailed, (E)rror, (s)kipped, (x)failed, (X)passed, (p)assed, (P)assed with output, (a)ll except passed (p/P), or (A)ll. (w)arnings are enabled by default (see --disable-warnings), 'N' can be used to reset the list. (default: 'fE').)ri   r6   r8   Úmetavarr<   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r8   r6   ri   r<   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default)z--no-showlocalszFHide locals in tracebacks (negate --showlocals passed through addopts))ri   r6   r<   z--tbÚstyleÚtbstyleÚauto)ry   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rt   ri   r6   r8   Úchoicesr<   z
--xfail-tbÚxfail_tbz1Show tracebacks for xfail (as long as --tb != no)z--show-captureÚshowcapture)r|   ÚstdoutÚstderrÚlogÚallr…   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)ri   r6   r   r8   r<   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))ri   r8   r<   z--colorÚcolor)Úyesr|   ry   z#Color terminal output (yes/no/auto)z--code-highlightr‡   r|   zSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r8   r   r<   Úconsole_output_stylez®Console output: "classic", or with additional progress information ("progress" (percentage) | "count" | "progress-even-when-capture-no" (forces progress even when capture=no)Úprogress)r<   r8   z¡Specify a verbosity level for test case execution, overriding the main level. Higher levels will provide more detailed information about each test case executed.)r<   )
ÚgetgroupÚ
_addoptionÚ	addoptionr3   ÚintÚ_REPORTCHARS_DEFAULTÚaddinir   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rH   Úgroups     rF   Úpytest_addoptionr“   ‰   s¢  € Ø�OŠOÐ0°+ÀYˆOÑOÔO€EØ	×ÒØØØØØØ!ð ñ ô ð ð 
‡O‚OØØØØØð ñ ô ð ð 
‡O‚OØØØØØð ñ ô ð ð 
‡O‚OØØØØØ:ð ñ ô ð ð 
‡O‚OØØØ"ØØLð ñ ô ð ð 
×ÒØØÝØØØ!ð ñ ô ð ð 
‡O‚OØØÝØØ)ð ñ ô ð ð 
×ÒØØØØÝ$Øð>ð ñ ô ð ð 
‡O‚OØØ#ØØØØ'ð ñ ô ð ð 
×ÒØØØØØØ>ð ñ ô ð ð 
‡O‚OØØØØUð	 ñ ô ð ð 
‡O‚OØØØØØØAÐAÐAØDð ñ ô ð ð 
‡O‚OØØØØØ@ð ñ ô ð ð 
‡O‚OØØØØ8Ð8Ð8Øðð ñ ô ð ð 
‡O‚OØØØØØ;ð ñ ô ð ð 
‡O‚OØØØØØØ%Ð%Ð%Ø2ð ñ ô ð ð 
‡O‚OØØØ˜�ðð	 ñ ô ð ð ‡M‚MØð)ð ð ñ ô ð õ ÔØÝÔ#ðbð	ñ ô ð ð ð rG   Úconfigr   c                óD  ‡— t          | t          j        ¦  «        Š| j                             ‰d¦  «         | j        j        s| j        j        r%ˆfd„}| j        j	         
                    d|¦  «         t          j        dk    r| j                             d¦  «         d S d S )NÚterminalreporterc                óˆ   •— d                      t          t          |¦  «        ¦  «        }‰                     d|z   ¦  «         d S )Nú z[traceconfig] )ÚjoinÚmapr7   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €rF   Úmywriterz"pytest_configure.<locals>.mywriter(  s<   ø€ Ø—(’(�3�s D™>œ>Ñ*Ô*ˆCØ×ÒÐ 0°3Ñ 6Ñ7Ô7Ð7Ð7Ð7rG   zpytest:configÚwin32Úterminalprogress)ÚTerminalReporterÚsysr‚   ÚpluginmanagerÚregisterÚoptionÚdebugÚtraceconfigÚtraceÚrootÚsetprocessorÚplatformÚimport_plugin)r”   r    rŸ   s     @rF   Úpytest_configurer¯   #  s´   ø€ Ý ­¬
Ñ3Ô3€HØ
Ô×!Ò! (Ð,>Ñ?Ô?Ð?Ø„}Ôð B˜fœmÔ7ð Bð	8ð 	8ð 	8ð 	8ð 	8ð 	ŒÔ×&Ò& ¸ÑAÔAÐAõ „|�wÒÐØÔ×*Ò*Ð+=Ñ>Ô>Ð>Ð>Ð>ð ÐrG   r7   c                ó$  — | j         j        }ddh}d}|D ]>}||v r|                     ¦   «         }|dk    rd}Œ#|dk    rd}Œ,|dk    rd}Œ5||vr||z  }Œ?| j         j        s
d	|vrd	|z   }n&| j         j        rd	|v r|                     d	d¦  «        }|S )
NÚFÚSÚ ÚaÚsxXEfÚAÚPpsxXEfÚNÚw)r§   rr   Úlowerru   Úreplace)r”   rr   Úold_aliasesÚ
reportoptsÚchars        rF   Úgetreportoptr¿   4  sÜ   € Ø”}Ô0€Kà˜�*€KØ€JØð 
ð 
ˆØ�;ÐÐØ—:’:‘<”<ˆDØ�3Š;ˆ;Ø ˆJˆJØ�SŠ[ˆ[Ø"ˆJˆJØ�SŠ[ˆ[ØˆJˆJØ˜Ð#Ð#Ø˜$ÑˆJøàŒ=Ô)ð 1¨c¸Ð.CÐ.CØ˜:Ñ%ˆ
ˆ
Ø	ŒÔ	'ð 1¨C°:Ð,=Ð,=Ø×'Ò'¨¨RÑ0Ô0ˆ
àÐrG   T©ÚtrylastÚreportr#   útuple[str, str, str]c                óŽ   — d}| j         rd}n	| j        rd}| j        }| j        dv r
|dk    rd}d}|||                     ¦   «         fS )Nr±   ú.Ús)ÚcollectÚsetupÚteardownr'   r.   ÚE)r(   r)   ÚoutcomeÚwhenÚupper)rÂ   r_   rË   s      rF   Úpytest_report_teststatusrÎ   M  se   € à€FØ„}ð ØˆˆØ	Œð Øˆà”>€GØ„{Ð6Ð6Ð6¸7ÀhÒ;NÐ;NØˆØˆà�F˜GŸMšM™OœOÐ+Ð+rG   c                  óP   — 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dS )Ú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``).
    r7   ÚmessageNr=   Únodeidztuple[str, int] | NoneÚ
fslocationTr   Úcount_towards_summaryr”   r   r>   c                ó    — | j         r| j         S | j        r8| j        \  }}t          |j        j        t          |¦  «        ¦  «        }|› d|› �S dS )zSReturn the more user-friendly information about the location of a warning, or None.ú:N)rÒ   rÓ   r"   Úinvocation_paramsÚdirr!   )rD   r”   ÚfilenameÚlinenumÚrelpaths        rF   Úget_locationzWarningReport.get_locationo  s`   € àŒ;ð 	Ø”;ÐØŒ?ð 	*Ø $¤ÑˆH�gÝ! &Ô":Ô">ÅÈXÑ@VÔ@VÑWÔWˆGØÐ)Ð) Ð)Ð)Ð)ØˆtrG   )r”   r   r>   r=   )	rW   rX   rY   rZ   ra   rÒ   rÓ   rÔ   rÜ   rb   rG   rF   rÐ   rÐ   ]  ss   € € € € € € ðð ð €L€L�LØ€FÐÐÐÑØ)-€JÐ-Ð-Ð-Ñ-à&*ÐÐ*Ð*Ð*Ñ*ðð ð ð ð ð rG   rÐ   c                  óÆ  — e Zd Zd¢d£d„Zd¤d
„Zed¥d„¦   «         Zed¦d„¦   «         Zed¦d„¦   «         Zed¦d„¦   «         Z	ed¦d„¦   «         Z
e
j        d§d„¦   «         Z
ed¦d„¦   «         Zed¥d„¦   «         Zd¨d„Zd©d„Zdªd«d!„Zd¬d"„Zd#d$d%d&œd­d+„Zd#d,œd®d-„Zd#d,œd¯d.„Zd¬d/„Zd°d2„Zd±d3„Z	 	 d²d³d9„Zd´dµd<„Zd¶d>„Zd·dB„Zd¸dE„Zd¹dH„ZdºdK„Zd»dM„Zd¼dP„Z d½dS„Z!ed¦dT„¦   «         Z" e#dU¬V¦  «        d¾dX„¦   «         Z$d¿dY„Z%d¬dZ„Z&d¬d[„Z'ed¥d\„¦   «         Z(d¬d]„Z)dÀd_„Z*dÁdÂda„Z+ e#dU¬b¦  «        dÃde„¦   «         Z,dÄdh„Z-dÅdj„Z.dÃdk„Z/d»dl„Z0 e#dU¬V¦  «        dÆdp„¦   «         Z1 e#dU¬V¦  «        dÇdq„¦   «         Z2dÈdt„Z3d¬du„Z4d¬dv„Z5dÉdz„Z6d{„ Z7d|„ Z8dÊd}„Z9dËd„Z:d¬d€„Z;d¬d�„Z<d¬d‚„Z=dÌd†„Z>dÍdˆ„Z?dÎd‰„Z@dÏd‹„ZAd¬dŒ„ZBd¬d�„ZCddŽœdÐd�„ZDd¬d‘„ZEdÑd“„ZFd¬d”„ZGd¬d•„ZHdÒd—„ZIdÓd™„ZJd¬dš„ZKdÔdœ„ZLdÕdŸ„ZMdÔd „ZNdÔd¡„ZOdS )Ör£   Nr”   r   ÚfileúTextIO | Noner>   r?   c                óª  — dd l }|| _        d| _        d | _        d | _        i | _        d | _        d | _        |j        j	        | _
        |€t          j        }|j                             ||¦  «        | _        | j        j        | _        d | _        t%          |¦  «        | _        |j        j        | _        | j        j        | _        t1          j        |                     ¦   «         ¦  «        | _        t7          ¦   «         | _        t7          ¦   «         | _        |                      ¦   «         | _        tA          j!        ¦   «         | _"        d | _#        d | _$        d S ©Nr   )%Ú_pytest.configr”   Ú_numcollectedÚ_sessionÚ_showfspathÚstatsÚ_main_colorÚ_known_typesr×   rØ   Ú	startpathr¤   r‚   Úcreate_terminal_writerÚ_twÚ	fullwidthÚ_screen_widthÚcurrentfspathr¿   rr   r§   rn   ÚfoldskippedÚ	hasmarkupr   ÚCallableBoolÚisattyÚsetÚ_progress_nodeids_reportedÚ_timing_nodeids_reportedÚ_determine_show_progress_infoÚ_show_progress_infor   ÚInstantÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)rD   r”   rÞ   Ú_pytests       rF   rC   zTerminalReporter.__init__|  s!  € ØÐÐÐàˆŒØˆÔØ(,ˆŒØ(,ˆÔà+-ˆŒ
Ø'+ˆÔØ.2ˆÔØÔ1Ô5ˆŒØˆ<Ý”:ˆDØ”>×8Ò8¸ÀÑFÔFˆŒØ!œXÔ/ˆÔØ6:ˆÔÝ'¨Ñ/Ô/ˆÔØ!œ=Ô5ˆÔØœÔ+ˆŒõ Ô)¨$¯+ª+©-¬-Ñ8Ô8ˆŒÝ47±E´EˆÔ'Ý25±%´%ˆÔ%Ø#'×#EÒ#EÑ#GÔ#GˆÔ Ý*0¬.Ñ*:Ô*:ˆÔ'Ø7;ˆÔ(Ø=AˆÔ$Ð$Ð$rG   ú,Literal['progress', 'count', 'times', False]c                ó  — | j                              dd¦  «        dk    r | j                              d¦  «        dk    rdS | j                              dd¦  «        rdS | j                              d¦  «        }|dv rdS |d	k    rd	S |d
k    rd
S dS )zRReturn whether we should display progress information based on the current config.Úcapturer|   rˆ   úprogress-even-when-capture-noFÚ	setupshow>   r‰   r   r‰   rg   Útimes)r”   Ú	getoptionÚgetini)rD   Úcfgs     rF   rö   z.TerminalReporter._determine_show_progress_infoš  s°   € ð ŒK×!Ò! )¨TÑ2Ô2°dÒ:Ð:Ø”×"Ò"Ð#9Ñ:Ô:Ø.ò/ð /ð �5àŒ;× Ò  ¨eÑ4Ô4ð 	Ø�5Ø”;×%Ò%Ð&<Ñ=Ô=ˆØÐ?Ð?Ð?Ø�:Ø�GŠ^ˆ^Ø�7Ø�GŠ^ˆ^Ø�7à�5rG   r�   c                ó(   — | j         j        j        }|S rV   )r”   r§   rh   )rD   Ú	verbositys     rF   r  zTerminalReporter.verbosity³  s   € àœÔ+Ô3ˆ	ØÐrG   r;   c                ó   — | j         dk    S rá   )r  ©rD   s    rF   Ú
showheaderzTerminalReporter.showheader¸  s   € àŒ~ Ò"Ð"rG   c                ó>   — t          | j        j        j        ¦  «        S rV   )r;   r”   r§   rk   r	  s    rF   rk   zTerminalReporter.no_header¼  s   € å�D”KÔ&Ô0Ñ1Ô1Ð1rG   c                ó>   — t          | j        j        j        ¦  «        S rV   )r;   r”   r§   rl   r	  s    rF   rl   zTerminalReporter.no_summaryÀ  s   € å�D”KÔ&Ô1Ñ2Ô2Ð2rG   c                ón   — | j         €(| j                             t          j        ¦  «        dk    S | j         S rá   )rå   r”   Úget_verbosityr   r‘   r	  s    rF   Ú
showfspathzTerminalReporter.showfspathÄ  s2   € àÔÐ#Ø”;×,Ò,­VÔ-HÑIÔIÈQÒNÐNØÔÐrG   Úvalueúbool | Nonec                ó   — || _         d S rV   )rå   )rD   r  s     rF   r  zTerminalReporter.showfspathÊ  s   € à ˆÔÐÐrG   c                óR   — | j                              t          j        ¦  «        dk    S rá   )r”   r  r   r‘   r	  s    rF   Úshowlongtestinfoz!TerminalReporter.showlongtestinfoÎ  s    € àŒ{×(Ò(­Ô)DÑEÔEÈÒIÐIrG   c                ó*   — t          | j        ¦  «        S )zUThe amount of items reported in the progress so far.

        :meta private:
        )Úlenrô   r	  s    rF   Úreported_progressz"TerminalReporter.reported_progressÒ  s   € õ �4Ô2Ñ3Ô3Ð3rG   r¾   r7   c                óF   — dddœ                      ||¦  «        }|| j        v S )NÚxrÆ   )r+   r)   )Úgetrr   )rD   r¾   s     rF   ÚhasoptzTerminalReporter.hasoptÚ  s-   € Ø¨3Ð/Ð/×3Ò3°D¸$Ñ?Ô?ˆØ�tÔ'Ð'Ð'rG   rÒ   ÚresÚmarkupc                ó�  — | j         j        |                     dd¬¦  «        d         z  }| j        �|| j        k    rt| j        �| j        r|                      ¦   «          || _        t          | j        |¦  «        }| j         	                    ¦   «          | j         
                    |dz   ¦  «          | j        j
        |fddi|¤Ž d S )Nú::rP   ©Úmaxsplitr   r˜   ÚflushT)r”   ÚrootpathÚsplitrî   r÷   Ú)_write_progress_information_filling_spacer"   ré   rë   r}   Úwrite)rD   rÒ   r  r  ÚfspathÚ	relfspaths         rF   Úwrite_fspath_resultz$TerminalReporter.write_fspath_resultÞ  sÆ   € Ø”Ô%¨¯ª°TÀA¨Ñ(FÔ(FÀqÔ(IÑIˆØÔÐ%¨°4Ô3EÒ)EÐ)EØÔ!Ð-°$Ô2JÐ-Ø×>Ò>Ñ@Ô@Ð@Ø!'ˆDÔÝ# D¤N°FÑ;Ô;ˆIØŒH�MŠM‰OŒOˆOØŒH�NŠN˜9 s™?Ñ+Ô+Ð+ØˆŒŒ�sÐ1Ð1 $Ð1¨&Ð1Ð1Ð1Ð1Ð1rG   r³   ÚprefixÚextrac                óÌ   — | j         |k    r:| j                             ¦   «          || _         | j                             |¦  «         |r | j        j        |fi |¤Ž d| _         d S d S )Néþÿÿÿ)rî   rë   r}   r&  )rD   r*  r+  Úkwargss       rF   Úwrite_ensure_prefixz$TerminalReporter.write_ensure_prefixé  sw   € ØÔ Ò'Ð'ØŒH�MŠM‰OŒOˆOØ!'ˆDÔØŒH�NŠN˜6Ñ"Ô"Ð"Øð 	$ØˆDŒHŒN˜5Ð+Ð+ FÐ+Ð+Ð+Ø!#ˆDÔÐÐð	$ð 	$rG   c                óX   — | j         r"| j                             ¦   «          d | _         d S d S rV   )rî   rë   r}   r	  s    rF   Úensure_newlinezTerminalReporter.ensure_newlineò  s4   € ØÔð 	&ØŒH�MŠM‰OŒOˆOØ!%ˆDÔÐÐð	&ð 	&rG   Fé   ú
)r"  ÚmarginÚline_sepÚcontentr"  r4  r5  c               óÎ   — | j         j        }|                     t          j        d|z  |z   | j        |z
  dd¬¦  «        ¦  «        }||d…         } | j         j        |fd|i|¤Ž dS )z+Wrap message with margin for progress info.r˜   TF)ÚwidthÚdrop_whitespaceÚreplace_whitespaceNr"  )rë   Úwidth_of_current_liner™   ÚtextwrapÚwraprí   r&  )rD   r6  r"  r4  r5  r  r;  Úwrappeds           rF   Ú
wrap_writezTerminalReporter.wrap_write÷  s�   € ð !%¤Ô >ÐØ—-’-ÝŒMØÐ+Ñ+¨gÑ5ØÔ(¨6Ñ1Ø $Ø#(ð	ñ ô ñ
ô 
ˆð Ð/Ð0Ð0Ô1ˆØˆŒŒ�wÐ6Ð6 eÐ6¨vÐ6Ð6Ð6Ð6Ð6rG   ©r"  c               ó0   —  | j         j        |fd|i|¤Ž d S )Nr"  )rë   r&  )rD   r6  r"  r  s       rF   r&  zTerminalReporter.write  s)   € ØˆŒŒ�wÐ6Ð6 eÐ6¨vÐ6Ð6Ð6Ð6Ð6rG   c               ó>   — | j                              ||¬¦  «         d S )Nr@  )rë   Ú	write_raw)rD   r6  r"  s      rF   rC  zTerminalReporter.write_raw  s#   € ØŒ×Ò˜7¨%ÐÑ0Ô0Ð0Ð0Ð0rG   c                ó8   — | j                              ¦   «          d S rV   )rë   r"  r	  s    rF   r"  zTerminalReporter.flush  s   € ØŒ�ŠÑÔÐÐÐrG   r}   ústr | bytesc                ó    — t          |t          ¦  «        st          |d¬¦  «        }|                      ¦   «           | j        j        |fi |¤Ž d S )Nr»   )Úerrors)Ú
isinstancer7   r1  rë   r}   )rD   r}   r  s      rF   r›   zTerminalReporter.write_line  sZ   € Ý˜$¥Ñ$Ô$ð 	/Ý�t IÐ.Ñ.Ô.ˆDØ×ÒÑÔÐØˆŒŒ�dÐ%Ð%˜fÐ%Ð%Ð%Ð%Ð%rG   c                óÔ   — |                      dd¦  «        }|r%| j        j        t          |¦  «        z
  dz
  }d|z  }nd}t	          |¦  «        } | j        j        d|z   |z   fi |¤Ž dS )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.
        ÚeraseFrP   r˜   r³   úN)Úpoprë   rì   r  r7   r&  )rD   r}   r  rJ  Ú
fill_countÚfills         rF   ÚrewritezTerminalReporter.rewrite  s€   € ð —
’
˜7 EÑ*Ô*ˆØð 	ØœÔ+­c°$©i¬iÑ7¸!Ñ;ˆJØ˜Ñ#ˆDˆDàˆDÝ�4‰yŒyˆØˆŒŒ�t˜d‘{ TÑ)Ð4Ð4¨VÐ4Ð4Ð4Ð4Ð4rG   ÚsepÚtitler=   rì   ú
int | Nonec                óX   — |                       ¦   «           | j        j        |||fi |¤Ž d S rV   )r1  rë   rP  )rD   rP  rQ  rì   r  s        rF   Ú	write_sepzTerminalReporter.write_sep.  s<   € ð 	×ÒÑÔÐØˆŒŒ�S˜% Ð5Ð5¨fÐ5Ð5Ð5Ð5Ð5rG   ú=Úkwc                ó.   —  | j         j        ||fi |¤Ž d S rV   )rë   rP  )rD   rQ  rP  rV  s       rF   ÚsectionzTerminalReporter.section8  s&   € ØˆŒŒ�S˜%Ð&Ð& 2Ð&Ð&Ð&Ð&Ð&rG   rž   c                ó,   —  | j         j        |fi |¤Ž d S rV   )rë   r}   )rD   rž   rV  s      rF   r}   zTerminalReporter.line;  s$   € ØˆŒŒ�cÐ Ð ˜RÐ Ð Ð Ð Ð rG   r^   ÚitemsúSequence[Any]c                ó¤   — || j         v}| j                              |g ¦  «                             |¦  «         |r|                      ¦   «          d S d S rV   )ræ   Ú
setdefaultÚextendÚ_set_main_color)rD   r^   rZ  Úset_main_colors       rF   Ú
_add_statszTerminalReporter._add_stats>  s^   € Ø!¨¬Ð3ˆØŒ
×Ò˜h¨Ñ+Ô+×2Ò2°5Ñ9Ô9Ð9Øð 	#Ø× Ò Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#rG   Úexcreprr   c                ó€   — t          |¦  «                             d¦  «        D ]}|                      d|z   ¦  «         ŒdS )Nr3  zINTERNALERROR> T)r7   r$  r›   )rD   rb  r}   s      rF   Úpytest_internalerrorz%TerminalReporter.pytest_internalerrorD  sE   € Ý˜‘L”L×&Ò& tÑ,Ô,ð 	6ð 	6ˆDØ�OŠOÐ-°Ñ4Ñ5Ô5Ð5Ð5ØˆtrG   Úwarning_messageúwarnings.WarningMessagec                ó–   — ddl m} |j        |j        f} ||¦  «        }t	          |||¬¦  «        }|                      d|g¦  «         d S )Nr   )Úwarning_record_to_str)rÓ   rÑ   rÒ   r-   )Ú_pytest.warningsrh  rÙ   ÚlinenorÐ   ra  )rD   re  rÒ   rh  rÓ   rÑ   Úwarning_reports          rF   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recordedI  sp   € ð
 	;Ð:Ð:Ð:Ð:Ð:à$Ô-¨Ô/EÐEˆ
Ø'Ð'¨Ñ8Ô8ˆå&Ø!¨7¸6ð
ñ 
ô 
ˆð 	�Š˜
 ^Ð$4Ñ5Ô5Ð5Ð5Ð5rG   Úpluginr   c                ó`   — | j         j        j        rd|› �}|                      |¦  «         d S d S )NzPLUGIN registered: )r”   r§   r©   r›   )rD   rm  rž   s      rF   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registeredX  sC   € ØŒ;ÔÔ)ð 	!Ø0¨Ð0Ð0ˆCð �OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!rG   úSequence[Item]c                ó2   — |                       d|¦  «         d S )Nr*   )ra  )rD   rZ  s     rF   Úpytest_deselectedz"TerminalReporter.pytest_deselected`  s   € Ø�Š˜ eÑ,Ô,Ð,Ð,Ð,rG   Úlocationútuple[str, int | None, str]c                ó  — |\  }}}| j         rD|                      ||||¦  «        }|                      |d¦  «         |                      ¦   «          d S | j        r,|                      |d¦  «         |                      ¦   «          d S d S )Nr³   )r  Ú_locationliner/  r"  r  r)  )rD   rÒ   rs  r'  rj  Údomainr}   s          rF   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstartc  s˜   € ð "*Ñˆ�˜ð Ô ð 	Ø×%Ò% f¨f°f¸fÑEÔEˆDØ×$Ò$ T¨2Ñ.Ô.Ð.Ø�JŠJ‰LŒLˆLˆLˆLØŒ_ð 	Ø×$Ò$ V¨RÑ0Ô0Ð0Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	rG   rÂ   r%   c                óZ  — d| _         |}t          | j        j                             || j        ¬¦  «        Ž }|j        |j        |j        }}}t          |t          ¦  «        sd }n|\  }}|  
                    ||g¦  «         |s|sd S |€Ft          |d¦  «        }|j        r|sddi}n(|j        r|rddi}n|j        rddi}n|j        rddi}ni }| j                             |j        ¦  «         | j                             t&          j        ¦  «        dk    r7 | j        j        |fi |¤Ž | j        r| j        s|                      ¦   «          �nË | j        |j        g|j        ¢R Ž }	t          |d¦  «        }
|
sÖ | j        |	|fi |¤Ž |j        st          |d¦  «        r”t;          |¦  «        }| j                             t&          j        ¦  «        d	k     r>| j        j        | j        j        z
  tA          d
¦  «        z
  dz
  }tC          d||¦  «        }nd|› d�}|r|�|  "                    |¦  «         | j        r|  #                    ¦   «          nË|  $                    ¦   «          | j                             d|j%        j&        j'        › d�¦  «         | j        r2| j                             |  (                    ¦   «         dz   d¬¦  «         n| j                             d¦  «          | j        j        |fi |¤Ž | j                             d|	z   ¦  «         d| _)        |  *                    ¦   «          d S )NT)rÂ   r”   ÚwasxfailÚgreenÚyellowÚredr   Únodeé   ú [100%]rP   z ({})z (ú)ú[ú]r˜   )Úcyanr-  )+Ú
_tests_ranr]   r”   ÚhookrÎ   r^   r_   r`   rH  Útuplera  Úhasattrr(   r'   r)   rô   ÚaddrÒ   r  r   r‘   rë   r&  r÷   Ú_is_last_itemÚ(_write_progress_information_if_past_edgerv  rs  r/  Ú_get_raw_skip_reasonrì   r;  r  Ú_format_trimmedr?  r%  r1  r~  ÚgatewayÚidÚ!_get_progress_information_messagerî   r"  )rD   rÂ   Úrepr  r^   r_   r`   r  Ú	was_xfailr}   Úrunning_xdistÚreasonÚavailable_widthÚformatted_reasons                 rF   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreportq  s¤  € ØˆŒØˆå ØŒ[Ô×6Ò6¸cÈ$Ì+Ð6ÑVÔVð
ˆð "%¤¨s¬z¸3¼8˜$�&ˆÝ˜$¥Ñ&Ô&ð 	 ØˆFˆFà‰LˆD�&Ø�Š˜ 3 %Ñ(Ô(Ð(Øð 	˜dð 	àˆFØˆ>Ý ¨
Ñ3Ô3ˆIØŒzð 	 )ð 	Ø! 4˜��Ø”ð  	ð Ø" DÐ)��Ø”ð Ø ˜��Ø”ð Ø" DÐ)��à�ØÔ'×+Ò+¨C¬JÑ7Ô7Ð7ØŒ;×$Ò$¥VÔ%@ÑAÔAÀQÒFÐFØˆDŒHŒN˜6Ð,Ð, VÐ,Ð,Ð,ð Ô'ð @°Ô0Bð @Ø×=Ò=Ñ?Ô?Ð?ùà%�4Ô% c¤jÐ@°3´<Ð@Ð@Ð@ˆDÝ# C¨Ñ0Ô0ˆMØ ð (Ø(�Ô(¨¨tÐ>Ð>°vÐ>Ð>Ð>Ø”;ð :¥'¨&°*Ñ"=Ô"=ð :Ý1°#Ñ6Ô6�FØ”{×0Ò0µÔ1LÑMÔMÐPQÒQÐQà!œXÔ/°$´(Ô2PÑPÝ! )™nœnñ-àñ ð (õ
 ,;Ø# V¨_ñ,ô ,Ð(Ð(ð ,:°¨>¨>¨>Ð(àð :Ð"2Ð">ØŸšÐ(8Ñ9Ô9Ð9ØÔ+ð EØ×BÒBÑDÔDÐDøà×#Ò#Ñ%Ô%Ð%Ø”—’Ð9 3¤8Ô#3Ô#6Ð9Ð9Ð9Ñ:Ô:Ð:ØÔ+ð (Ø”H—N’NØ×>Ò>Ñ@Ô@À3ÑFÈTð #ñ ô ð ð ð ”H—N’N 3Ñ'Ô'Ð'Ø�””˜tÐ.Ð. vÐ.Ð.Ð.Ø”—’˜s T™zÑ*Ô*Ð*Ø%'�Ô"Ø�
Š
‰ŒˆˆˆrG   c                ó>   — | j         €J ‚| j        | j         j        k    S rV   )rä   r  Útestscollectedr	  s    rF   rŠ  zTerminalReporter._is_last_item½  s#   € àŒ}Ð(Ð(Ð(ØÔ%¨¬Ô)EÒEÐErG   T)ÚwrapperúGenerator[None, object, object]c              #  ó¦   K  — d V —}| j                              t          j        ¦  «        dk    r"| j        r| j        r|                      ¦   «          |S rá   )r”   r  r   r‘   r÷   r  r%  )rD   Úresults     rF   Úpytest_runtestloopz#TerminalReporter.pytest_runtestloopÂ  s`   è è € à��ˆð ŒK×%Ò%¥fÔ&AÑBÔBÀaÒGÐGØÔ(ð HàÔ&ð Hð ×:Ò:Ñ<Ô<Ð<àˆrG   c                óØ  ‡ ‡
— ‰ j         sJ ‚‰ j         j        }‰ j        dk    rN|rC‰ j        }dt	          t          |¦  «        ¦  «        › d�}d|› d�}|                     ||¦  «        S d|› d|› d�S ‰ j        d	k    �rY|sd
S ‰                      d¦  «        ‰                      d¦  «        z   ‰                      d¦  «        z   ‰                      d¦  «        z   ‰                      d¦  «        z   ‰                      d¦  «        z   ‰                      d
¦  «        z   }|d         j        d         Š
ˆ fd„|D ¦   «         }t          ˆ
fd„‰ j         j
        D ¦   «         ¦  «        }t          ˆ
fd„|D ¦   «         ¦  «        }||k    }	‰ j        s|	rJ‰ j                             d„ |D ¦   «         ¦  «         t          t          d„ |D ¦   «         ¦  «        ¦  «        S d
S |rd‰ j        dz  |z  d›d�S dS )Nrg   z{:zd}ú [z/{}]z [ ú / z ]r  r³   r(   r,   r'   r+   r)   r.   éÿÿÿÿr   c                ó0   •— g | ]}|j         ‰j        v¯|‘ŒS rb   )rÒ   rõ   )Ú.0ÚrrD   s     €rF   ú
<listcomp>zFTerminalReporter._get_progress_information_message.<locals>.<listcomp>ç  s/   ø€ ð ð ð Ø¨!¬(¸$Ô:WÐ*WÐ*W�Ð*WÐ*WÐ*WrG   c              3  ó:   •K  — | ]}|j         d          ‰k    V — ŒdS )r   N)rs  )r¤  ÚiÚcurrent_locations     €rF   ú	<genexpr>zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ê  s@   øè è € ð "ð "Ø67�”
˜1”Ð!1Ò1ð"ð "ð "ð "ð "ð "rG   c              3  óP   •K  — | ] }|j         d          ‰k    ¯|j        dk    V — Œ!dS )r   rÈ   N)rs  rÌ   )r¤  r¥  r©  s     €rF   rª  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>í  sH   øè è € ð "ð "àØ”:˜a”=Ð$4Ò4Ð4ð ”˜'Ò!à4Ð4Ð4Ð4ð"ð "rG   c              3  ó$   K  — | ]}|j         V — Œd S rV   )rÒ   ©r¤  r¥  s     rF   rª  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ô  s$   è è € Ð4TÐ4TÀ!°Q´XÐ4TÐ4TÐ4TÐ4TÐ4TÐ4TrG   c              3  óN   K  — | ] }t          |t          ¦  «        ¯|j        V — Œ!d S rV   )rH  r%   Údurationr­  s     rF   rª  zETerminalReporter._get_progress_information_message.<locals>.<genexpr>ö  s3   è è € ÐVÐV q½JÀqÍ*Ñ<UÔ<UÐV˜œ
ÐVÐVÐVÐVÐVÐVrG   éd   Ú3dz%]r€  )rä   r™  r÷   r  r  r7   ÚformatÚ_get_reports_to_displayrs  ÚsumrZ  r  rõ   ÚupdateÚformat_node_duration)rD   Ú	collectedr‰   Úcounter_formatÚformat_stringÚall_reportsÚnot_reportedÚtests_in_moduleÚtests_completedÚlast_in_moduler©  s   `         @rF   r�  z2TerminalReporter._get_progress_information_messageÐ  s©  øø€ ØŒ}ÐÐˆ}Ø”MÔ0ˆ	ØÔ# wÒ.Ð.Øð AØÔ1�Ø!?¥s­3¨y©>¬>Ñ':Ô':Ð!?Ð!?Ð!?�Ø ; ^Ð ;Ð ;Ð ;�Ø$×+Ò+¨H°iÑ@Ô@Ð@Ø4˜Ð4Ð4 yÐ4Ð4Ð4Ð4ØÔ# wÒ.Ñ.Øð Ø�rà×,Ò,¨XÑ6Ô6Ø×.Ò.¨yÑ9Ô9ñ:à×.Ò.¨xÑ8Ô8ñ9ð ×.Ò.¨yÑ9Ô9ñ:ð ×.Ò.¨yÑ9Ô9ñ	:ð
 ×.Ò.¨wÑ7Ô7ñ8ð ×.Ò.¨rÑ2Ô2ñ3ð ð  +¨2œÔ7¸Ô:Ððð ð ð Ø&ðñ ô ˆLõ "ð "ð "ð "ð "Ø;?¼=Ô;Nð"ñ "ô "ñ ô ˆOõ "ð "ð "ð "ð "à%ð"ñ "ô "ñ ô ˆOð
 -°Ò?ˆNØÔ$ð ¨ð ØÔ-×4Ò4Ð4TÐ4TÀ|Ð4TÑ4TÔ4TÑTÔTÐTÝ+ÝÐVÐV¨LÐVÑVÔVÑVÔVñô ð ð �2Øð 	IØH˜Ô.°Ñ4¸	ÑAÐHÐHÐHÐHÐHØˆyrG   c                ó†  — | j         }| j        dk    r,| j        sJ ‚| j        j        }t	          d|› d|› d�¦  «        }n*| j        dk    rt	          d¦  «        }nt	          d¦  «        }||z   dz   | j        k    }|rE|                      ¦   «         \  }}|                      ¦   «         } | j        j	        |d	z   fi |d
i¤Ž d S d S )Nrg   r   ú/rƒ  r  z 99h 59mr€  rP   r3  T)
Ú_width_of_current_liner÷   rä   r™  r  rí   Ú_get_main_colorr�  rë   r&  )rD   r¹   Ú	num_testsÚprogress_lengthÚ	past_edgeÚ
main_colorÚ_rž   s           rF   r‹  z9TerminalReporter._write_progress_information_if_past_edgeý  sò   € ØÔ'ˆØÔ# wÒ.Ð.Ø”=Ð Ð �=ØœÔ4ˆIÝ!Ð"? yÐ"?Ð"?°9Ð"?Ð"?Ð"?Ñ@Ô@ˆOˆOØÔ%¨Ò0Ð0Ý! *™oœoˆOˆOå! )™nœnˆOØ˜Ñ'¨!Ñ+¨tÔ/AÒAˆ	Øð 	=Ø ×0Ò0Ñ2Ô2‰MˆJ˜Ø×8Ò8Ñ:Ô:ˆCØˆDŒHŒN˜3 ™:Ð<Ð<¨*°dÐ);Ð<Ð<Ð<Ð<Ð<ð	=ð 	=rG   c                óØ   — |                       ¦   «         \  }}|                      ¦   «         }| j        }| j        j        |z
  dz
  } | j        |                     |¦  «        fddi|di¤Ž d S )NrP   r"  T)rÂ  r�  rÁ  rë   rì   r&  Úrjust)rD   r†   rÇ  rž   r¹   rN  s         rF   r%  z:TerminalReporter._write_progress_information_filling_space  sw   € Ø×'Ò'Ñ)Ô)‰ˆˆqØ×4Ò4Ñ6Ô6ˆØÔ'ˆØŒxÔ! AÑ%¨Ñ)ˆØˆŒ
�3—9’9˜T‘?”?Ð@Ð@¨$Ð@°5¸$°-Ð@Ð@Ð@Ð@Ð@rG   c                ó   — | j         j        S )z%Return the width of the current line.)rë   r;  r	  s    rF   rÁ  z'TerminalReporter._width_of_current_line  s   € ð ŒxÔ-Ð-rG   c                óî   — |                       ¦   «         r1| j        j        j        dk    r|                      ddd¬¦  «         d S d S | j        j        j        dk    r|                      ddd¬¦  «         d S d S )Nr   zcollecting ... T)r"  ÚboldrP   )rò   r”   r§   rh   r&  r	  s    rF   Úpytest_collectionz"TerminalReporter.pytest_collection  s‡   € Ø�;Š;‰=Œ=ð 	AØŒ{Ô!Ô)¨QÒ.Ð.Ø—
’
Ð,°D¸t�
ÑDÔDÐDÐDÐDð /Ð.àŒ[ÔÔ'¨1Ò,Ð,Ø�JŠJÐ(°¸4ˆJÑ@Ô@Ð@Ð@Ð@ð -Ð,rG   r$   c                ó0  — |j         r|                      d|g¦  «         n|j        r|                      d|g¦  «         d„ |j        D ¦   «         }| xj        t          |¦  «        z  c_        |                      ¦   «         r|                      ¦   «          d S d S )Nr.   r)   c                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rb   )rH  r   ©r¤  r  s     rF   r¦  z9TerminalReporter.pytest_collectreport.<locals>.<listcomp>%  s'   € ÐAÐAÐA�q­Z¸½4Ñ-@Ô-@ÐA�ÐAÐAÐArG   )r'   ra  r)   r�  rã   r  rò   Úreport_collect)rD   rÂ   rZ  s      rF   Úpytest_collectreportz%TerminalReporter.pytest_collectreport   s¦   € ØŒ=ð 	1Ø�OŠO˜G f XÑ.Ô.Ð.Ð.ØŒ^ð 	1Ø�OŠO˜I¨ xÑ0Ô0Ð0ØAÐA˜FœMÐAÑAÔAˆØÐÔ�c %™jœjÑ(ÐÔØ�;Š;‰=Œ=ð 	"Ø×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"rG   r   c                óT  — | j         j        j        dk     rd S |sA| j                             ¦   «         j        t          k     rd S t          j        ¦   «         | _        t          | j
                             dg ¦  «        ¦  «        }t          | j
                             dg ¦  «        ¦  «        }t          | j
                             dg ¦  «        ¦  «        }| j        |z
  }|rdnd}|t          | j        ¦  «        dz   | j        dk    rd	nd
z   z  }|r|d|› d|dk    rd
nd	› �z  }|r	|d|› d�z  }|r	|d|› d�z  }| j        |k    r	|d|› d�z  }|                      ¦   «         r3|                      |dd¬¦  «         |r|                      d¦  «         d S d S |                      |¦  «         d S )Nr   r.   r)   r*   z
collected zcollecting z itemrP   r³   rÆ   r¡  z errorz deselectedz skippedz	 selectedT)rÌ  rJ  r3  )r”   r§   rh   rù   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rø   r  ræ   r  rã   r7   rò   rO  r&  r›   )rD   r   rG  r)   r*   Úselectedr}   s          rF   rÑ  zTerminalReporter.report_collect*  s  € ØŒ;ÔÔ%¨Ò)Ð)ØˆFàð 	?ð Ô/×7Ò7Ñ9Ô9ÔAÝ.ò/ð /ð �Ý.4¬nÑ.>Ô.>ˆDÔ+å�T”Z—^’^ G¨RÑ0Ô0Ñ1Ô1ˆÝ�d”j—n’n Y°Ñ3Ô3Ñ4Ô4ˆÝ˜œŸš¨°bÑ9Ô9Ñ:Ô:ˆ
ØÔ%¨
Ñ2ˆØ$Ð7ˆ|ˆ|¨-ˆØÝ�Ô"Ñ#Ô# gÑ-°tÔ7IÈQÒ7NÐ7N°°ÐTWÑXñ	
ˆð ð 	EØÐD˜&ÐDÐD¨v¸ª{¨{¨¨ÀÐDÐDÑDˆDØð 	2ØÐ1˜*Ð1Ð1Ð1Ñ1ˆDØð 	,ØÐ+˜'Ð+Ð+Ð+Ñ+ˆDØÔ Ò(Ð(ØÐ-˜(Ð-Ð-Ð-Ñ-ˆDØ�;Š;‰=Œ=ð 	"Ø�LŠL˜ D°ˆLÑ5Ô5Ð5Øð !Ø—
’
˜4Ñ Ô Ð Ð Ð ð!ð !ð �OŠO˜DÑ!Ô!Ð!Ð!Ð!rG   rÀ   Úsessionr&   c                ó6  — || _         t          j        ¦   «         | _        | j        sd S |                      ddd¬¦  «         t          j        ¦   «         }| j        �s=dt          j        › d|› �}t          t          dd ¦  «        }|rBd                     t          t          |d d	…         ¦  «        ¦  «        }|d
|› d|d	         › d�z  }|dt          j        j        › dt"          j        › �z  }| j        dk    s,| j        j        j        st          | j        j        dd ¦  «        r|dt          t          j        ¦  «        z   z  }|                      |¦  «         | j        j                             | j        | j        ¬¦  «        }|                      |¦  «         d S d S )NrU  ztest session startsT©rÌ  z	platform z -- Python Úpypy_version_inforÅ   é   z[pypy-ú-rƒ  z	, pytest-z	, pluggy-r   Úpastebinz -- )r”   Ú
start_path)rä   r   rø   Ú_session_startr
  rT  r­   Úpython_versionrk   r¤   rR   r™   rš   r7   rü   Ú_versionÚversionÚpluggyÚ__version__r  r”   r§   r¨   Ú
executabler›   r†  Úpytest_report_headerré   Ú_write_report_lines_from_hooks)rD   rØ  Úverinforž   rÛ  Úliness         rF   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstartN  sª  € àˆŒÝ$œnÑ.Ô.ˆÔØŒð 	ØˆFØ�Š�sÐ1¸ˆÑ=Ô=Ð=ÝÔ)Ñ+Ô+ˆØŒ~ñ 	7Ø@�cœlÐ@Ð@°wÐ@Ð@ˆCÝ '­Ð-@À$Ñ GÔ GÐØ ð BØŸ(š(¥3¥sÐ,=¸b¸q¸bÔ,AÑ#BÔ#BÑCÔC�ØÐA ÐAÐAÐ*;¸AÔ*>ÐAÐAÐAÑA�ØÐV�wÔ/Ô7ÐVÐVÅ&ÔBTÐVÐVÑVˆCà” Ò"Ð"Ø”;Ô%Ô+ð #å˜4œ;Ô-¨z¸4Ñ@Ô@ð #ð �v¥¥C¤NÑ 3Ô 3Ñ3Ñ3�Ø�OŠO˜CÑ Ô Ð Ø”KÔ$×9Ò9Ø”{¨t¬~ð :ñ ô ˆEð ×/Ò/°Ñ6Ô6Ð6Ð6Ð6ð#	7ð 	7rG   rê  úSequence[str | Sequence[str]]c                ó´   — t          |¦  «        D ]G}t          |t          ¦  «        r|                      |¦  «         Œ-|D ]}|                      |¦  «         ŒŒHd S rV   )ÚreversedrH  r7   r›   )rD   rê  Úline_or_linesr}   s       rF   rè  z/TerminalReporter._write_report_lines_from_hooksi  ss   € õ & e™_œ_ð 	*ð 	*ˆMÝ˜-­Ñ-Ô-ð *Ø—’ Ñ.Ô.Ð.Ð.à)ð *ð *�DØ—O’O DÑ)Ô)Ð)Ð)ð*ð		*ð 	*rG   ú	list[str]c           	     óx  — d|j         › �g}|j        rZd}|j        rdd                     |j        ¦  «        › d�}|                     dt          |j         |j        ¦  «        z   |z   ¦  «         |j        t          j        j	        k    rP| 
                    d¦  «        }|                     d                     d                     |¦  «        ¦  «        ¦  «         |j                             ¦   «         }|rH|                     d	                     d                     t          |¦  «        ¦  «        ¦  «        ¦  «         |S )
Nz	rootdir: r³   z% (WARNING: ignoring pytest config in ú, z!)zconfigfile: Ú	testpathsztestpaths: {}zplugins: {})r#  ÚinipathÚ_ignored_config_filesr™   Úappendr"   Úargs_sourcer   Ú
ArgsSourceÚ	TESTPATHSr  r²  r¥   Úlist_plugin_distinfoÚ_plugin_nameversions)rD   r”   r�  Úwarningró  Ú
plugininfos         rF   rç  z%TerminalReporter.pytest_report_headers  s2  € Ø/˜fœoÐ/Ð/Ð0ˆàŒ>ð 	ØˆGØÔ+ð nØmÀ$Ç)Â)ÈFÔLhÑBiÔBiÐmÐmÐm�Ø�MŠMØ¥¨V¬_¸f¼nÑ!MÔ!MÑMÐPWÑWñô ð ð Ô¥Ô!2Ô!<Ò<Ð<Ø#)§=¢=°Ñ#=Ô#=ˆIØ�MŠM˜/×0Ò0°·²¸9Ñ1EÔ1EÑFÔFÑGÔGÐGàÔ)×>Ò>Ñ@Ô@ˆ
Øð 	Ø�MŠMØ×$Ò$ T§Y¢YÕ/CÀJÑ/OÔ/OÑ%PÔ%PÑQÔQñô ð ð ˆrG   c                óD  — |                       d¦  «         | j        j                             | j        | j        |j        ¬¦  «        }|                      |¦  «         | j                             d¦  «        r¦|j        rI| j        j        j	        dk    r| j
                             d¦  «         |                      |j        ¦  «         | j                             d¦  «        }|r<| j
                             dd¦  «         |D ] }|                     | j
        ¦  «         Œd S d S d S )	NT)r”   rß  rZ  Úcollectonlyr¢  r³   r'   ú!zcollection failures)rÑ  r”   r†  Úpytest_report_collectionfinishré   rZ  rè  r  r§   rh   rë   r}   Ú_printcollecteditemsræ   r  rP  Ú
toterminal)rD   rØ  rê  r'   r‘  s        rF   Úpytest_collection_finishz)TerminalReporter.pytest_collection_finish‰  s0  € Ø×Ò˜DÑ!Ô!Ð!à”Ô ×?Ò?Ø”;Ø”~Ø”-ð @ñ 
ô 
ˆð
 	×+Ò+¨EÑ2Ô2Ð2àŒ;× Ò  Ñ/Ô/ð 
	-ØŒ}ð 9Ø”;Ô%Ô-°Ò2Ð2Ø”H—M’M "Ñ%Ô%Ð%Ø×)Ò)¨'¬-Ñ8Ô8Ð8à”Z—^’^ HÑ-Ô-ˆFØð -Ø”—’˜SÐ"7Ñ8Ô8Ð8Ø!ð -ð -�CØ—N’N 4¤8Ñ,Ô,Ð,Ð,ð
	-ð 
	-ð-ð -ð-ð -rG   c           	     óÞ  — | j                              t          j        ¦  «        }|dk     rŒ|dk     r`t	          d„ |D ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        D ]$\  }}| j                             |› d|› �¦  «         Œ%n$|D ]!}| j                             |j	        ¦  «         Œ"d S g }d}|D �].}| 
                    ¦   «         dd …         }	|r2||	d t          |¦  «        …         k    rn|                     ¦   «          |°2|	t          |¦  «        d …         D ]Ã}
|                     |
¦  «         t          |¦  «        dz
  dz  }| j                             |› |
› �¦  «         |dk    rst          |
dd ¦  «        }|rt          j        |¦  «        nd }|rH|                     ¦   «         D ]3}| j                             d	                     |dz   |¦  «        ¦  «         Œ4ŒÄ�Œ0d S )
Nr   r¢  c              3  óX   K  — | ]%}|j                              d d¦  «        d         V — Œ&dS ©r  rP   r   N)rÒ   r$  )r¤  Úitems     rF   rª  z8TerminalReporter._printcollecteditems.<locals>.<genexpr>£  s9   è è € Ð QÐ QÀ4 ¤×!2Ò!2°4¸Ñ!;Ô!;¸AÔ!>Ð QÐ QÐ QÐ QÐ QÐ QrG   ú: r³   rP   ú  Úobjz{}{})r”   r  r   r‘   r   ÚsortedrZ  rë   r}   rÒ   Ú	listchainr  rL  rö  rR   ÚinspectÚgetdocÚ
splitlinesr²  )rD   rZ  Útest_cases_verbosityÚcountsÚnamerg   r  ÚstackÚindentÚneeded_collectorsÚcolr  Údocr}   s                 rF   r  z%TerminalReporter._printcollecteditemsŸ  s6  € Ø#œ{×8Ò8½Ô9TÑUÔUÐØ !Ò#Ð#Ø# bÒ(Ð(Ý Ð QÐ QÈ5Ð QÑ QÔ QÑQÔQ�Ý#)¨&¯,ª,©.¬.Ñ#9Ô#9ð 6ð 6‘K�D˜%Ø”H—M’M TÐ"4Ð"4¨UÐ"4Ð"4Ñ5Ô5Ð5Ð5ð6ð "ð /ð /�DØ”H—M’M $¤+Ñ.Ô.Ð.Ð.ØˆFØˆØˆØð 	Nñ 	NˆDØ $§¢Ñ 0Ô 0°°°Ô 4ÐØð ØÐ-¨lµ°E±
´
¨lÔ;Ò;Ð;ØØ—	’	‘”�ð ð ð )­¨U©¬¨¨Ô6ð 	Nð 	N�Ø—’˜SÑ!Ô!Ð!Ý˜e™*œ* q™.¨DÑ0�Ø”—’ Ð.¨Ð.Ð.Ñ/Ô/Ð/Ø'¨1Ò,Ð,Ý! # u¨dÑ3Ô3�CØ14Ð>�'œ.¨Ñ-Ô-Ð-¸$�CØð NØ$'§N¢NÑ$4Ô$4ð Nð N˜DØ œHŸMšM¨&¯-ª-¸À¹ÀtÑ*LÔ*LÑMÔMÐMÐMøñ	Nð	Nð 	NrG   Ú
exitstatusúint | ExitCodeúGenerator[None]c              #  ó„  K  — d V —}| j                              d¦  «         t          j        t          j        t          j        t          j        t          j        t          j        f}||v r.| j	        s'| j
        j                             | || j
        ¬¦  «         |                      ¦   «         }|�q|j        t          j        k    r\t          | j                             dg ¦  «        ¦  «        }||k    r.t          j        |_        |                      d|› d|› �d¬¦  «         |j        r*|                      dt+          |j        ¦  «        d¬¦  «         |t          j        k    r|                      ¦   «          d | _        n1|j        r*|                      dt+          |j        ¦  «        d¬¦  «         |                      ¦   «          |S )	Nr³   )r–   r  r”   r-   z3Tests pass, but maximum allowed warnings exceeded: z > T)r}  r   )rë   r}   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDÚMAX_WARNINGS_ERRORrl   r”   r†  Úpytest_terminal_summaryÚ_get_max_warningsr  r  ræ   r  r›   Ú
shouldfailrT  r7   Ú_report_keyboardinterruptrû   Ú
shouldstopÚsummary_stats)rD   rØ  r  r�  Úsummary_exit_codesÚmax_warningsÚwarning_counts          rF   Úpytest_sessionfinishz%TerminalReporter.pytest_sessionfinish½  sÊ  è è € ð ��ˆØŒ�Š�bÑÔÐåŒKÝÔ!ÝÔ ÝÔ ÝÔ'ÝÔ'ð
Ðð Ð+Ð+Ð+°D´OÐ+ØŒKÔ×4Ò4Ø!%°*ÀTÄ[ð 5ñ ô ð ð ×-Ò-Ñ/Ô/ˆØÐ#¨Ô(:½h¼kÒ(IÐ(IÝ ¤
§¢¨z¸2Ñ >Ô >Ñ?Ô?ˆMØ˜|Ò+Ð+Ý%-Ô%@�Ô"Ø—’ð8Ø$ð8ð 8Ø)5ð8ð 8àð  ñ ô ð ð
 Ôð 	CØ�NŠN˜3¥ GÔ$6Ñ 7Ô 7¸TˆNÑBÔBÐBØ�Ô-Ò-Ð-Ø×*Ò*Ñ,Ô,Ð,Ø+/ˆDÔ(Ð(ØÔð 	CØ�NŠN˜3¥ GÔ$6Ñ 7Ô 7¸TˆNÑBÔBÐBØ×ÒÑÔÐØˆrG   c              #  óª  K  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          	 d V —|                      ¦   «          |                      ¦   «          S # |                      ¦   «          |                      ¦   «          w xY wrV   )Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summaryr	  s    rF   r#  z(TerminalReporter.pytest_terminal_summaryä  sÒ   è è € à×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑ Ô Ð Ø×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐð	$Ø�E�Eà×#Ò#Ñ%Ô%Ð%à×!Ò!Ñ#Ô#Ð#Ð#øð ×#Ò#Ñ%Ô%Ð%à×!Ò!Ñ#Ô#Ð#Ð#øøøs   Á<B( Â(*CÚexcinfoúExceptionInfo[BaseException]c                ó<   — |                      d¬¦  «        | _        d S )NT)Úfuncargs)Úgetreprrû   )rD   r5  s     rF   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interruptó  s   € Ø'.§¢À Ñ'EÔ'EˆÔ$Ð$Ð$rG   c                ó@   — | j         �|                      ¦   «          d S d S rV   )rû   r&  r	  s    rF   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigureö  s+   € ØÔ'Ð3Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð 4Ð3rG   c                óN  — | j         }|€J ‚|j        €J ‚|j        j        }|                      d|¦  «         d|v rj| j        j        j        r|                     | j        ¦  «         d S |j                             | j        ¦  «         | j         	                    dd¬¦  «         d S d S )Nr   ÚKeyboardInterruptz@(to show a full traceback on KeyboardInterrupt use --full-trace)T)r|  )
rû   Ú	reprcrashrÑ   rT  r”   r§   Ú	fulltracer  rë   r}   )rD   rb  rž   s      rF   r&  z*TerminalReporter._report_keyboardinterruptú  sÉ   € ØÔ.ˆØÐ"Ð"Ð"ØÔ Ð,Ð,Ð,ØÔÔ'ˆØ�Š�s˜CÑ Ô Ð Ø #Ð%Ð%ØŒ{Ô!Ô+ð Ø×"Ò" 4¤8Ñ,Ô,Ð,Ð,Ð,àÔ!×,Ò,¨T¬XÑ6Ô6Ð6Ø”—’ØVØð ñ ô ð ð ð ð &Ð%rG   r'  rj  rw  c                ó
  ‡ ‡— dˆˆ fd„}|rr ||¦  «        }‰ j         dk    r[|                     dd¬¦  «        d	         t          j        |¦  «        k    r(|d
t	          ‰ j        t          |¦  «        ¦  «        z   z  }nd}|dz   S )NrÒ   r7   r>   c                ó2  •— ‰j                              | ¦  «        }‰ry|                     ‰¦  «        rd|d t          ‰¦  «         …         }‰                     d¦  «        }|d                              dd¦  «        |d<   |d                     |¦  «        z  }|S )Nr‚  r   rÅ   r  )r”   Úcwd_relative_nodeidÚendswithr  r$  r»   r™   )rÒ   r}   rL   rw  rD   s      €€rF   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel  s’   ø€ Ø”;×2Ò2°6Ñ:Ô:ˆDØð )˜$Ÿ-š-¨Ñ/Ô/ð )Ø˜N�s 6™{œ{˜l˜NÔ+�ØŸš cÑ*Ô*�Ø" 1œI×-Ò-¨c°4Ñ8Ô8��q‘	Ø˜Ÿš Ñ(Ô(Ñ(�ØˆKrG   r  r  rP   r   r   z <- z
[location]r˜   )rÒ   r7   r>   r7   )r  r$  r   Únorm_sepr"   ré   r
   )rD   rÒ   r'  rj  rw  rE  r  s   `   `  rF   rv  zTerminalReporter._locationline
  s¦   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ð 	Ø�%˜‘-”-ˆCØŒ~ Ò"Ð"Ø—’˜T¨A�Ñ.Ô.¨qÔ1µU´^ÀFÑ5KÔ5KÒKÐKà�v¥¨D¬N½DÀ¹L¼LÑ IÔ IÑIÑI�øàˆCØ�S‰yÐrG   c                ó   — |j         }|r|S dS )Nztest session)Ú	head_line)rD   r‘  rH  s      rF   Ú_getfailureheadlinez$TerminalReporter._getfailureheadline!  s   € Ø”Mˆ	Øð 	ØÐØˆ~rG   c                ó´   — 	 t          |j        j        ¦  «        S # t          $ r2 	 t          |j        ¦  «        d d…         cY S # t          $ r Y Y dS w xY ww xY w)Né2   r³   )r7   Úlongreprr?  ÚAttributeError)rD   r‘  s     rF   Ú_getcrashlinezTerminalReporter._getcrashline'  s}   € ð	Ý�s”|Ô-Ñ.Ô.Ð.øÝð 	ð 	ð 	ðÝ˜3œ<Ñ(Ô(¨¨"¨Ô-Ð-Ð-Ð-øÝ!ð ð ð Ø�r�r�rðøøøð	øøøs,   ‚ ›
A¦AÁAÁ
AÁAÁAÁAc                ó    — | j         j        j        }|�t          |¦  «        S | j                              d¦  «        }|rt          |¦  «        S dS )zEReturn the max_warnings threshold, from CLI or INI, or None if unset.Nr*  )r”   r§   r*  r�   r  )rD   r  Ú	ini_values      rF   r$  z"TerminalReporter._get_max_warnings0  sO   € à”Ô"Ô/ˆØÐÝ�u‘:”:ÐØ”K×&Ò& ~Ñ6Ô6ˆ	Øð 	"Ý�y‘>”>Ð!ØˆtrG   r  c                óL   — d„ | j                              |d¦  «        D ¦   «         S )Nc                ó2   — g | ]}t          |d ¦  «        °|‘ŒS )Ú	_pdbshown)rˆ  rÐ  s     rF   r¦  z/TerminalReporter.getreports.<locals>.<listcomp>>  s'   € ÐSÐSÐS�a½7À1ÀkÑ;RÔ;RÐS�ÐSÐSÐSrG   rb   ©ræ   r  )rD   r  s     rF   Ú
getreportszTerminalReporter.getreports=  s&   € ØSÐS˜4œ:Ÿ>š>¨$°Ñ3Ô3ÐSÑSÔSÐSrG   c                óf  ‡ — ‰                       d¦  «        �r™‰ j                             d¦  «        }|sd S ‰ j        d u}|r|‰ j        d …         }n|}t	          |¦  «        ‰ _        |sd S i }|D ]0}|                     |j        g ¦  «                             |¦  «         Œ1dˆ fd„}|rdnd	}‰                      d
|dd¬¦  «         | 	                    ¦   «         D ]»\  }}	 ||	¦  «        }
|
rb‰ j
                             |
¦  «         |                     ¦   «         }d                     d„ |D ¦   «         ¦  «        }|                     ¦   «         }n|                     ¦   «         }‰ j
                             |¦  «         ‰ j
                             ¦   «          Œ¼‰ j
                             d¦  «         d S d S )Nr¹   r-   Úreportsúlist[WarningReport]r>   r7   c                ó~  •— g }| D ]3}|                      ‰j        ¦  «        }|r|                     |¦  «         Œ4t          |¦  «        dk     r(d                     t          t          |¦  «        ¦  «        S t          d„ |D ¦   «         ¦  «        }d                     d„ |                     ¦   «         D ¦   «         ¦  «        S )Né
   r3  c              3  óh   K  — | ]-}t          |¦  «                             d d¦  «        d         V — Œ.dS r  )r7   r$  )r¤  Úlocs     rF   rª  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>]  sL   è è € ð -ð -Ø36•C˜‘H”H—N’N 4¨Ñ+Ô+¨AÔ.ð-ð -ð -ð -ð -ð -rG   c              3  óZ   K  — | ]&\  }}d                       |||dk    rdnd¦  «        V — Œ'dS )z{}: {} warning{}rP   rÆ   r³   N)r²  )r¤  ÚkÚvs      rF   rª  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>`  sX   è è € ð !ð !á˜˜1ð '×-Ò-¨a°¸1¸qº5¸5°C°CÀbÑIÔIð!ð !ð !ð !ð !ð !rG   )	rÜ   r”   rö  r  r™   rš   r7   r   rZ  )rW  Ú	locationsr¹   rs  Úcounts_by_filenamerD   s        €rF   Úcollapsed_location_reportzDTerminalReporter.summary_warnings.<locals>.collapsed_location_reportS  sà   ø€ Ø�	Ø ð 3ð 3�AØ Ÿ~š~¨d¬kÑ:Ô:�HØð 3Ø!×(Ò(¨Ñ2Ô2Ð2øå�y‘>”> BÒ&Ð&ØŸ9š9¥S­¨iÑ%8Ô%8Ñ9Ô9Ð9å%,ð -ð -Ø:Cð-ñ -ô -ñ &ô &Ð"ð —y’yð !ð !à 2× 8Ò 8Ñ :Ô :ð!ñ !ô !ñ ô ð rG   zwarnings summary (final)zwarnings summaryrU  TF)r|  rÌ  r3  c              3  ó    K  — | ]	}d |z   V — Œ
dS )r
  Nrb   rÐ  s     rF   rª  z4TerminalReporter.summary_warnings.<locals>.<genexpr>l  s&   è è € Ð(AÐ(A°a¨°©Ð(AÐ(AÐ(AÐ(AÐ(AÐ(ArG   zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rW  rX  r>   r7   )r  ræ   r  rú   r  r]  rÑ   rö  rT  rZ  rë   r}   r  r™   Úrstrip)rD   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrrb  rQ  rÑ   Úmessage_reportsÚmaybe_locationrê  Úindenteds   `            rF   r1  z!TerminalReporter.summary_warnings@  s   ø€ Ø�;Š;�sÑÔñ 3	Ø7;´z·~²~ÀjÑ7QÔ7QˆLØð Ø�àÔ4¸DÐ@ˆEØð /Ø".¨tÔ/OÐ/QÐ/QÔ"R��à".�Ý/2°?Ñ/CÔ/CˆDÔ,Ø"ð Ø�àIKÐ&Ø%ð Qð Q�Ø*×5Ò5°b´jÀ"ÑEÔE×LÒLÈRÑPÔPÐPÐPðð ð ð ð ð ð$ 38ÐOÐ.Ð.Ð=OˆEØ�NŠN˜3 ¨d¸ˆNÑ?Ô?Ð?Ø,F×,LÒ,LÑ,NÔ,Nð 
 ð 
 Ñ(�˜Ø!:Ð!:¸?Ñ!KÔ!K�Ø!ð /Ø”H—M’M .Ñ1Ô1Ð1Ø#×.Ò.Ñ0Ô0�EØ#ŸyšyÐ(AÐ(A¸5Ð(AÑ(AÔ(AÑAÔA�HØ&ŸošoÑ/Ô/�G�Gà%ŸnšnÑ.Ô.�GØ”—’˜gÑ&Ô&Ð&Ø”—’‘”��ØŒH�MŠMØYñô ð ð ð ðc3	ð 3	rG   c                ó4   — |                       ddd¦  «         d S )Nr(   ÚPASSESÚP©Úsummary_passes_combinedr	  s    rF   r2  zTerminalReporter.summary_passesv  s    € Ø×$Ò$ X¨x¸Ñ=Ô=Ð=Ð=Ð=rG   c                ó4   — |                       ddd¦  «         d S )Nr,   ÚXPASSESÚXro  r	  s    rF   r3  z TerminalReporter.summary_xpassesy  s    € Ø×$Ò$ Y°	¸3Ñ?Ô?Ð?Ð?Ð?rG   Úwhich_reportsÚ	sep_titleÚ
needed_optc                ó’  — | j         j        j        dk    r­|                      |¦  «        rš|                      |¦  «        }|sd S |                      d|¦  «         |D ]j}|j        rC|                      |¦  «        }|                      d|dd¬¦  «         |                      |¦  «         |  	                    |j
        ¦  «         Œgd S d S d S )Nr|   rU  rÇ  T)r{  rÌ  )r”   r§   rx   r  rU  rT  ÚsectionsrI  Ú_outrep_summaryÚ_handle_teardown_sectionsrÒ   )rD   rt  ru  rv  rW  r‘  rž   s          rF   rp  z(TerminalReporter.summary_passes_combined|  sì   € ð Œ;ÔÔ%¨Ò-Ð-Ø�{Š{˜:Ñ&Ô&ð 
?Ø,0¯OªO¸MÑ,JÔ,J�Øð Ø�FØ—’˜s IÑ.Ô.Ð.Ø"ð ?ð ?�CØ”|ð 2Ø"×6Ò6°sÑ;Ô;˜ØŸš s¨C°tÀ$˜ÑGÔGÐGØ×,Ò,¨SÑ1Ô1Ð1Ø×2Ò2°3´:Ñ>Ô>Ð>Ð>ð .Ð-ð
?ð 
?ð
?ð ?rG   úlist[TestReport]c                óJ   ‡— |                       d¦  «        }ˆfd„|D ¦   «         S )Nr³   c                ó@   •— g | ]}|j         d k    ¯|j        ‰k    ¯|‘ŒS )rÉ   )rÌ   rÒ   )r¤  rÂ   rÒ   s     €rF   r¦  z:TerminalReporter._get_teardown_reports.<locals>.<listcomp>Ž  s<   ø€ ð 
ð 
ð 
àØŒ{˜jÒ(Ð(¨V¬]¸fÒ-DÐ-Dð à-DÐ-DÐ-DrG   )rU  )rD   rÒ   rW  s    ` rF   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reportsŒ  s?   ø€ Ø—/’/ "Ñ%Ô%ˆð
ð 
ð 
ð 
à!ð
ñ 
ô 
ð 	
rG   c                ó`   — |                       |¦  «        D ]}|                      |¦  «         Œd S rV   )r~  Úprint_teardown_sections)rD   rÒ   rÂ   s      rF   rz  z*TerminalReporter._handle_teardown_sections”  s@   € Ø×0Ò0°Ñ8Ô8ð 	1ð 	1ˆFØ×(Ò(¨Ñ0Ô0Ð0Ð0ð	1ð 	1rG   r‘  c                ó
  — | j         j        j        }|dk    rd S |j        D ]a\  }}|dk    r||vrŒd|v rM| j                             d|¦  «         |dd …         dk    r
|d d…         }| j                             |¦  «         Œbd S )Nr|   r…   rÉ   rÝ  r¢  r3  )r”   r§   r�   rx  rë   rP  r}   ©rD   r‘  r�   Úsecnamer6  s        rF   r€  z(TerminalReporter.print_teardown_sections˜  s­   € Ø”kÔ(Ô4ˆØ˜$ÒÐØˆFØ #¤ð 	'ð 	'ÑˆG�WØ˜eÒ#Ð#¨¸7Ð(BÐ(BØØ˜WÐ$Ð$Ø”—’˜S 'Ñ*Ô*Ð*Ø˜2˜3˜3”< 4Ò'Ð'Ø% c r cœl�GØ”—’˜gÑ&Ô&Ð&øð	'ð 	'rG   c                óX   — | j         j        j        }|                      dd|¬¦  «         d S )Nr'   ÚFAILURES©rw   )r”   r§   rx   Úsummary_failures_combined)rD   rw   s     rF   r/  z!TerminalReporter.summary_failures¥  s0   € Ø”Ô"Ô*ˆØ×&Ò& x°À5Ð&ÑIÔIÐIÐIÐIrG   c                ó‚   — | j         j        j        }|r| j         j        j        nd}|                      dd|¬¦  «         d S )Nr|   r+   Ú	XFAILURESr†  )r”   r§   r€   rx   r‡  )rD   Úshow_tbrw   s      rF   r0  z"TerminalReporter.summary_xfailures©  sG   € Ø”+Ô$Ô-ˆØ.5Ð?�”Ô"Ô*Ð*¸4ˆØ×&Ò& y°+ÀUÐ&ÑKÔKÐKÐKÐKrG   )rv  rw   c               ó  — |dk    rô|r|                       |¦  «        rß|                      |¦  «        }|sd S |                      d|¦  «         |dk    rF|D ]A}|                      |¦  «        }|                      |¦  «         |                      |¦  «         ŒBd S |D ]c}|                      |¦  «        }|                      d|dd¬¦  «         |                      |¦  «         |                      |j        ¦  «         Œ`d S d S d S )Nr|   rU  r}   rÇ  T©r}  rÌ  )	r  rU  rT  rN  ry  r›   rI  rz  rÒ   )	rD   rt  ru  rw   rv  rW  r‘  r}   rž   s	            rF   r‡  z*TerminalReporter.summary_failures_combined®  sF  € ð �DŠ=ˆ=Øð C §¢¨ZÑ!8Ô!8ð CØ,0¯OªO¸MÑ,JÔ,J�Øð Ø�FØ—’˜s IÑ.Ô.Ð.Ø˜F’?�?Ø&ð .ð .˜Ø#×1Ò1°#Ñ6Ô6˜Ø×,Ò,¨SÑ1Ô1Ð1ØŸš¨Ñ-Ô-Ð-Ð-ð.ð .ð
  'ð Cð C˜Ø"×6Ò6°sÑ;Ô;˜ØŸš s¨C°TÀ˜ÑEÔEÐEØ×,Ò,¨SÑ1Ô1Ð1Ø×6Ò6°s´zÑBÔBÐBÐBð! ˆ=ðCð CðCð CrG   c                ót  — | j         j        j        dk    r |                      d¦  «        }|sd S |                      dd¦  «         | j        d         D ]e}|                      |¦  «        }|j        dk    rd|z   }nd|j        › d|› �}|                      d	|d
d
¬¦  «         |                      |¦  «         Œdd S d S )Nr|   r.   rU  ÚERRORSrÇ   zERROR collecting z	ERROR at z of rÇ  TrŒ  )	r”   r§   rx   rU  rT  ræ   rI  rÌ   ry  )rD   rW  r‘  rž   s       rF   r.  zTerminalReporter.summary_errorsÈ  sã   € ØŒ;ÔÔ%¨Ò-Ð-Ø(,¯ª¸Ñ(@Ô(@ˆGØð Ø�Ø�NŠN˜3 Ñ)Ô)Ð)Ø”z 'Ô*ð *ð *�Ø×.Ò.¨sÑ3Ô3�Ø”8˜yÒ(Ð(Ø-°Ñ3�C�Cà9 c¤hÐ9Ð9°CÐ9Ð9�CØ—’˜s C¨T¸�Ñ=Ô=Ð=Ø×$Ò$ SÑ)Ô)Ð)Ð)ð .Ð-ð
*ð *rG   r#   c                ó6  — |                      | j        ¦  «         | j        j        j        }|dk    rd S |j        D ]]\  }}|dk    r||vrŒ| j                             d|¦  «         |dd …         dk    r
|d d…         }| j                             |¦  «         Œ^d S )Nr|   r…   rÝ  r¢  r3  )r  rë   r”   r§   r�   rx  rP  r}   r‚  s        rF   ry  z TerminalReporter._outrep_summary×  s¸   € Ø�Š�t”xÑ Ô Ð Ø”kÔ(Ô4ˆØ˜$ÒÐØˆFØ #¤ð 	#ð 	#ÑˆG�WØ˜eÒ#Ð#¨¸7Ð(BÐ(BØØŒH�LŠL˜˜gÑ&Ô&Ð&Ø�r�s�sŒ|˜tÒ#Ð#Ø! # 2 #œ,�ØŒH�MŠM˜'Ñ"Ô"Ð"Ð"ð	#ð 	#rG   c                ó  — | j         dk     rd S | j                             ¦   «         }|                      ¦   «         \  }}g }| j         dk    }|r| j        j        }|D ]Q\  }} | j        j        |fi |¤Ž}	|r"|t          |	¦  «        t          |¦  «        z
  z  }|                     |	¦  «         ŒRd 	                    |¦  «        }
|di}dt          |j        ¦  «        › �} | j        j        |fi |¤Ž}|r"|t          |¦  «        t          |¦  «        z
  z  }|
|z  }
|rH | j        j        di |¤Ž}|                     d¦  «        r
|d d…         }|t          |¦  «        z  }|
|z  }
|r | j        d	|
fd
|i|¤Ž d S  | j        |
fi |¤Ž d S )Nr¢  r   rò  Tz in r³   z[0méüÿÿÿrU  rì   ©r³   )r  rà  rÔ  Úbuild_summary_stats_linerë   rì   r  r  rö  r™   Úformat_session_durationrÕ  rD  rT  r›   )rD   Úsession_durationÚpartsrÆ  Ú
line_partsÚdisplay_seprì   Útextr  Úwith_markuprž   Úmain_markupr¯  Úduration_with_markupÚmarkup_for_end_seps                  rF   r(  zTerminalReporter.summary_statsä  s  € ØŒ>˜BÒÐØˆFàÔ.×6Ò6Ñ8Ô8ÐØ"×;Ò;Ñ=Ô=Ñˆ�
Øˆ
à”n¨Ò)ˆØð 	+ØœÔ*ˆIØ!ð 	+ð 	+‰LˆD�&Ø)˜$œ(œ/¨$Ð9Ð9°&Ð9Ð9ˆKØð :Ø�S Ñ-Ô-µ°D±	´	Ñ9Ñ9�	Ø×Ò˜kÑ*Ô*Ð*Ð*Ø�iŠi˜
Ñ#Ô#ˆà! 4Ð(ˆØMÕ1Ð2BÔ2JÑKÔKÐMÐMˆØ.˜tœxœ¨xÐGÐG¸;ÐGÐGÐØð 	CØ�Ð1Ñ2Ô2µS¸±]´]ÑBÑBˆIØÐ#Ñ#ˆàð 	&Ø!0 ¤¤Ð!CÐ!C°{Ð!CÐ!CÐØ!×*Ò*¨9Ñ5Ô5ð =Ø%7¸¸¸Ô%<Ð"Ø�Ð/Ñ0Ô0Ñ0ˆIØÐ%Ñ%ˆCàð 	0ØˆDŒN˜3 ÐHÐH¨yÐH¸KÐHÐHÐHÐHÐHàˆDŒO˜CÐ/Ð/ ;Ð/Ð/Ð/Ð/Ð/rG   c           	     ó   ‡ ‡
‡— ‰ j         sd S 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 ]$}|                     |¦  «        }|r ||¦  «         Œ%|r3‰                      dddd¬¦  «         |D ]}	‰                      |	¦  «         Œd S d S )Nrê  rð  Ústatr7   r>   r?   c               óú   •— ‰j                              |g ¦  «        }|sd S ‰j        }|D ]P}t                               |t          ¦  «        }t          ||‰j        |di¦  «        }|                      |¦  «         ŒQd S )NT)ræ   r  r”   Ú_color_for_typeÚ_color_for_type_defaultÚ _get_line_with_reprcrash_messagerë   rö  )rê  rŸ  r'   r”   r‘  r†   r}   rD   s          €rF   Úshow_simplez8TerminalReporter.short_test_summary.<locals>.show_simple  s�   ø€ Ø”Z—^’^ D¨"Ñ-Ô-ˆFØð Ø�Ø”[ˆFØð #ð #�Ý'×+Ò+¨DÕ2IÑJÔJ�Ý7Ø˜C ¤¨E°4¨=ñô �ð —’˜TÑ"Ô"Ð"Ð"ð#ð #rG   c                ón  •— ‰	j                              dg ¦  «        }|D ]•}|                     ‰	j        t          d         di¦  «        \  }} ‰	j        j        |fi |¤Ž}t          ‰	j        ‰	j        |¦  «        }|› d|› �}|j        }|r|dt          |¦  «        z   z  }|  
                    |¦  «         Œ–d S )Nr+   r-   Tr˜   ú - ©ræ   r  Ú_get_verbose_word_with_markupr”   r¡  rë   r  Ú_get_node_id_with_markuprz  r7   rö  )
rê  r+   r‘  Úverbose_wordÚverbose_markupÚmarkup_wordrÒ   r}   r”  rD   s
            €rF   Úshow_xfailedz9TerminalReporter.short_test_summary.<locals>.show_xfailed  sÚ   ø€ Ø”j—n’n Y°Ñ3Ô3ˆGØð #ð #�Ø/2×/PÒ/PØ”K¥/°*Ô"=¸tÐ!Dñ0ô 0Ñ,�˜nð .˜dœhœo¨lÐMÐM¸nÐMÐM�Ý1°$´(¸D¼KÈÑMÔM�Ø%Ð0Ð0¨Ð0Ð0�Øœ�Øð 0Ø˜E¥C¨¡K¤KÑ/Ñ/�Dà—’˜TÑ"Ô"Ð"Ð"ð#ð #rG   c                ón  •— ‰	j                              dg ¦  «        }|D ]•}|                     ‰	j        t          d         di¦  «        \  }} ‰	j        j        |fi |¤Ž}t          ‰	j        ‰	j        |¦  «        }|› d|› �}|j        }|r|dt          |¦  «        z   z  }|  
                    |¦  «         Œ–d S )Nr,   r-   Tr˜   r¦  r§  )
rê  r,   r‘  rª  r«  r¬  rÒ   r}   r”  rD   s
            €rF   Úshow_xpassedz9TerminalReporter.short_test_summary.<locals>.show_xpassed(  sÚ   ø€ Ø”j—n’n Y°Ñ3Ô3ˆGØð 
#ð 
#�Ø/2×/PÒ/PØ”K¥/°*Ô"=¸tÐ!Dñ0ô 0Ñ,�˜nð .˜dœhœo¨lÐMÐM¸nÐMÐM�Ý1°$´(¸D¼KÈÑMÔM�Ø%Ð0Ð0¨Ð0Ð0�Øœ�Øð 0Ø˜E¥C¨¡K¤KÑ/Ñ/�DØ—’˜TÑ"Ô"Ð"Ð"ð
#ð 
#rG   c                óü  •— ‰j                              dg ¦  «        }|rt          ‰j        |¦  «        ng }|sd S |d                              ‰j        t          d         di¦  «        \  }} ‰j        j        |fi |¤Ž}d}|D ]y\  }}}	}
|
 	                    |¦  «        r|
t          |¦  «        d …         }
|	�$|                      |› d|› d|› d|	› d	|
› �	¦  «         ŒY|                      |› d|› d|› d	|
› �¦  «         Œzd S )
Nr)   r   r-   Tú	Skipped: r   z] rÖ   r	  )ræ   r  Ú_folded_skipsré   r¨  r”   r¡  rë   r  Ú
startswithr  rö  )rê  r)   Úfskipsrª  r«  r¬  r*  Únumr'  rj  r”  rD   s              €rF   Úshow_skipped_foldedz@TerminalReporter.short_test_summary.<locals>.show_skipped_folded6  sU  ø€ Ø+/¬:¯>ª>¸)ÀRÑ+HÔ+HˆGØ?FÐN•] 4¤>°7Ñ;Ô;Ð;ÈBˆFØð Ø�Ø+2°1¬:×+SÒ+SØ”�o¨jÔ9¸4Ð@ñ,ô ,Ñ(ˆL˜.ð *˜$œ(œ/¨,ÐIÐI¸.ÐIÐIˆKØ ˆFØ/5ð Nð NÑ+��V˜V VØ×$Ò$ VÑ,Ô,ð 3Ø#¥C¨¡K¤K M MÔ2�FØÐ%Ø—L’L KÐ!UÐ!U°3Ð!UÐ!U¸&Ð!UÐ!UÀ6Ð!UÐ!UÈVÐ!UÐ!UÑVÔVÐVÐVà—L’L KÐ!LÐ!L°3Ð!LÐ!L¸&Ð!LÐ!LÀFÐ!LÐ!LÑMÔMÐMÐMðNð NrG   c                ó4  •— ‰	j                              dg ¦  «        }|D ]ø}|j        €J ‚t          |j        t          ¦  «        sJ ||j        f¦   «         ‚t          |j        ¦  «        dk    sJ ||j        f¦   «         ‚|                     ‰	j        t          d         di¦  «        \  }} ‰	j	        j
        |fi |¤Ž}t          ‰	j	        ‰	j        |¦  «        }|› d|› �}|j        d         }|r|dt          |¦  «        z   z  }|                      |¦  «         Œùd S )Nr)   rÜ  r-   Tr˜   r  r¦  )ræ   r  rL  rH  r‡  r  r¨  r”   r¡  rë   r  r©  r7   rö  )
rê  r)   r‘  rª  r«  r¬  rÒ   r}   r”  rD   s
            €rF   Úshow_skipped_unfoldedzBTerminalReporter.short_test_summary.<locals>.show_skipped_unfoldedH  s=  ø€ Ø+/¬:¯>ª>¸)ÀRÑ+HÔ+HˆGàð #ð #�Ø”|Ð/Ð/Ð/Ý! #¤,µÑ6Ô6ÐKÐK¸¸c¼lÐ8KÑKÔKÐ6Ý˜3œ<Ñ(Ô(¨AÒ-Ð-Ð-°°S´\Ð/BÑ-Ô-Ð-à/2×/PÒ/PØ”K¥/°*Ô"=¸tÐ!Dñ0ô 0Ñ,�˜nð .˜dœhœo¨lÐMÐM¸nÐMÐM�Ý1°$´(¸D¼KÈÑMÔM�Ø%Ð0Ð0¨Ð0Ð0�Øœ aœ�Øð 0Ø˜E¥C¨¡K¤KÑ/Ñ/�DØ—’˜TÑ"Ô"Ð"Ð"ð#ð #rG   c                óF   •— ‰j         r ‰| ¦  «         d S  ‰| ¦  «         d S rV   )rï   )rê  rD   r¶  r¸  s    €€€rF   Úshow_skippedz9TerminalReporter.short_test_summary.<locals>.show_skipped[  s<   ø€ ØÔð -Ø#Ð# EÑ*Ô*Ð*Ð*Ð*à%Ð% eÑ,Ô,Ð,Ð,Ð,rG   r'   )rŸ  r(   r.   )r  rs  ÚfrÆ   ÚprÊ   rU  zshort test summary infoT)r„  rÌ  )rê  rð  rŸ  r7   r>   r?   )rê  rð  r>   r?   )rr   r	   r  rT  r›   )rD   r¤  r­  r¯  rº  ÚREPORTCHAR_ACTIONSrê  r¾   ri   r}   r¶  r¸  s   `         @@rF   r4  z#TerminalReporter.short_test_summary	  sÀ  øøø€ ØÔð 	ØˆFð
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	Nð 	Nð 	Nð 	Nð 	Nð 	Nð$	#ð 	#ð 	#ð 	#ð 	#ð 	#ð&	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð ØÝ˜¨8Ð4Ñ4Ô4ØÝ˜¨8Ð4Ñ4Ô4Ý˜¨7Ð3Ñ3Ô3ðI
ð I
Ðð ˆØÔ$ð 	ð 	ˆDØ'×+Ò+¨DÑ1Ô1ˆFØð Ø��u‘”�øàð 	&Ø�NŠN˜3Ð 9ÀÈ4ˆNÑPÔPÐPØð &ð &�Ø—’ Ñ%Ô%Ð%Ð%ð	&ð 	&ð&ð &rG   útuple[str, list[str]]c                ó”   — | j         �| j        �| j        r&|                      ¦   «          | j         sJ ‚| j        sJ ‚| j         | j        fS rV   )rç   rè   rŠ  r_  r	  s    rF   rÂ  z TerminalReporter._get_main_coloru  s\   € ØÔÐ# tÔ'8Ð'@ÀDÔDVÐ'@Ø× Ò Ñ"Ô"Ð"ØÔ#Ð#Ð#Ð#ØÔ$Ð$Ð$Ð$ØÔ Ô!2Ð2Ð2rG   Úunknown_type_seenc                ód   — | j         }d|v sd|v rd}nd|v sd|v s|rd}nd|v s| j        sd}nd}|S )	Nr'   r.   r}  r-   r,   r|  r(   r{  )ræ   rŠ  )rD   rÀ  ræ   rÆ  s       rF   Ú_determine_main_colorz&TerminalReporter._determine_main_color|  sl   € Ø”
ˆØ�uÐÐ ¨5Ð 0Ð 0ØˆJˆJØ˜5Ð Ð  I°Ð$6Ð$6Ð:KÐ$6Ø!ˆJˆJØ˜ÐÐ dÔ&8ÐØ ˆJˆJà!ˆJØÐrG   c                óì   — g }| j         D ]&}|r"|t          vr||vr|                     |¦  «         Œ't          t          ¦  «        |z   | _        |                      t          |¦  «        ¦  «        | _        d S rV   )ræ   ÚKNOWN_TYPESrö  Úlistrè   rÂ  r;   rç   )rD   Úunknown_typesÚ
found_types      rF   r_  z TerminalReporter._set_main_colorˆ  sƒ   € Ø#%ˆØœ*ð 	5ð 	5ˆJØð 5Ø¥[Ð0Ð0°ZÀ}Ð5TÐ5TØ!×(Ò(¨Ñ4Ô4Ð4øÝ ¥Ñ-Ô-°Ñ=ˆÔØ×5Ò5µd¸=Ñ6IÔ6IÑJÔJˆÔÐÐrG   ú-tuple[list[tuple[str, dict[str, bool]]], str]c                ó†   — | j                              d¦  «        r|                      ¦   «         S |                      ¦   «         S )aš  
        Build the parts used in the last summary stats line.

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

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

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

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

        The final color of the line is also determined by this function, and is the second
        element of the returned tuple.
        rÿ  )r”   r  Ú&_build_collect_only_summary_stats_lineÚ _build_normal_summary_stats_liner	  s    rF   r“  z)TerminalReporter.build_summary_stats_line‘  s@   € ð( Œ;× Ò  Ñ/Ô/ð 	;Ø×>Ò>Ñ@Ô@Ð@à×8Ò8Ñ:Ô:Ð:rG   Úkeyú	list[Any]c                óP   — | j                              |g ¦  «        }d„ |D ¦   «         S )zRGet test/collection reports for the given status key, such as `passed` or `error`.c                ó4   — g | ]}t          |d d¦  «        ¯|‘ŒS )rÔ   T)rR   rÐ  s     rF   r¦  z<TerminalReporter._get_reports_to_display.<locals>.<listcomp>­  s*   € ÐPÐPÐP�a¥g¨aÐ1HÈ$Ñ&OÔ&OÐP�ÐPÐPÐPrG   rT  )rD   rÌ  rW  s      rF   r³  z(TerminalReporter._get_reports_to_displayª  s+   € à”*—.’.  bÑ)Ô)ˆØPÐP˜7ÐPÑPÔPÐPrG   c                óR  — |                       ¦   «         \  }}g }|D ]z}|                      |¦  «        }|rat          |¦  «        }t                               |t
          ¦  «        }|dd||k    i}|                     dt          ||¦  «        z  |f¦  «         Œ{|sdt
          difg}||fS )NTrÌ  ú%d %szno tests ran)rÂ  r³  r  r¡  r  r¢  rö  Ú	pluralize)	rD   rÆ  Úknown_typesr–  rÌ  rW  rg   r†   r  s	            rF   rË  z1TerminalReporter._build_normal_summary_stats_line¯  sÎ   € ð #'×"6Ò"6Ñ"8Ô"8Ñˆ
�KØˆàð 	Hð 	HˆCØ×2Ò2°3Ñ7Ô7ˆGØð HÝ˜G™œ�Ý'×+Ò+¨CÕ1HÑIÔI�Ø  v¨u¸
Ò/BÐC�Ø—’˜g­	°%¸Ñ(=Ô(=Ñ=¸vÐFÑGÔGÐGøàð 	HØ$Õ'>ÀÐ&EÐFÐGˆEà�jÐ Ð rG   c                óÒ  — t          |                      d¦  «        ¦  «        }t          |                      d¦  «        ¦  «        }| j        dk    r
dddifg}d}na|dk    r"d}dt          | j        d	¦  «        z  }||difg}n9| 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 collectedr|  Tr{  z%d %s collectedÚtestzno tests collected (z deselected)rÀ  z tests collected (rÑ  )r  r³  rã   rÒ  r¡  )rD   r*   rG  r–  rÆ  Úcollected_outputÚall_tests_were_deselectedr×  s           rF   rÊ  z7TerminalReporter._build_collect_only_summary_stats_lineÂ  sW  € õ ˜×5Ò5°lÑCÔCÑDÔDˆ
Ý�T×1Ò1°'Ñ:Ô:Ñ;Ô;ˆàÔ Ò"Ð"Ø*¨X°tÐ,<Ð=Ð>ˆEØ!ˆJˆJà˜1Š_ˆ_Ø ˆJØ0µ9¸TÔ=OÐQWÑ3XÔ3XÑXÐØ&¨°TÐ(:Ð;Ð<ˆEˆEà(,Ô(:¸jÒ(HÐ%Ø(ð pØ%�
Ø#R¸*Ð#RÐ#RÐ#RÐ Ð à$�
ØÔ-°
Ñ:�Ø&.Ð#oÐ#o°Ô1CÐ#oÐ#oÐWaÐ#oÐ#oÐ#oÐ à&¨°TÐ(:Ð;Ð<ˆEàð 	RÝ(¨Ô1ˆJØ�w¥¨6°7Ñ!;Ô!;Ñ;¸jÈ$Ð=OÐPÐQÑQˆEà�jÐ Ð rG   rV   )r”   r   rÞ   rß   r>   r?   )r>   rý   )r>   r�   )r>   r;   )r  r  r>   r?   )r¾   r7   r>   r;   )rÒ   r7   r  r7   r  r;   r>   r?   r’  )r*  r7   r+  r7   r>   r?   ©r>   r?   )r6  r7   r"  r;   r4  r�   r5  r7   r  r;   r>   r?   )r6  r7   r"  r;   r  r;   r>   r?   )r6  r7   r"  r;   r>   r?   )r}   rE  r  r;   r>   r?   )r}   r7   r  r;   r>   r?   )NN)
rP  r7   rQ  r=   rì   rR  r  r;   r>   r?   )rU  )rQ  r7   rP  r7   rV  r;   r>   r?   )rž   r7   rV  r;   r>   r?   )r^   r7   rZ  r[  r>   r?   )rb  r   r>   r;   )re  rf  rÒ   r7   r>   r?   )rm  r   r>   r?   )rZ  rp  r>   r?   )rÒ   r7   rs  rt  r>   r?   ©rÂ   r%   r>   r?   )r>   r›  )r>   r7   )rÂ   r$   r>   r?   )F)r   r;   r>   r?   ©rØ  r&   r>   r?   )rê  rì  r>   r?   )r”   r   r>   rð  )rØ  r&   r  r  r>   r  )r>   r  )r5  r6  r>   r?   )
rÒ   r7   r'  r7   rj  rR  rw  r7   r>   r7   )r>   rR  )r  r7   )rt  r7   ru  r7   rv  r7   r>   r?   )rÒ   r7   r>   r{  )rÒ   r7   r>   r?   )r‘  r%   r>   r?   )
rt  r7   ru  r7   rw   r7   rv  r=   r>   r?   )r‘  r#   r>   r?   )r>   r¾  )rÀ  r;   r>   r7   )r>   rÈ  )rÌ  r7   r>   rÍ  )PrW   rX   rY   rC   rö   Úpropertyr  r
  rk   rl   r  Úsetterr  r  r  r)  r/  r1  r?  r&  rC  r"  r›   rO  rT  rX  r}   ra  rd  rl  ro  rr  rx  r—  rŠ  r   rž  r�  r‹  r%  rÁ  rÍ  rÒ  rÑ  rë  rè  rç  r  r  r,  r#  r:  r<  r&  rv  rI  rN  r$  rU  r1  r2  r3  rp  r~  rz  r€  r/  r0  r‡  r.  ry  r(  r4  rÂ  rÂ  r_  r“  r³  rË  rÊ  rb   rG   rF   r£   r£   z  sw  € € € € € ðBð Bð Bð Bð Bð<ð ð ð ð2 ðð ð ñ „Xðð ð#ð #ð #ñ „Xð#ð ð2ð 2ð 2ñ „Xð2ð ð3ð 3ð 3ñ „Xð3ð ð ð  ð  ñ „Xð ð
 Ôð!ð !ð !ñ Ôð!ð ðJð Jð Jñ „XðJð ð4ð 4ð 4ñ „Xð4ð(ð (ð (ð (ð	2ð 	2ð 	2ð 	2ð$ð $ð $ð $ð $ð&ð &ð &ð &ð ØØð7ð 7ð 7ð 7ð 7ð 7ð, 49ð 7ð 7ð 7ð 7ð 7ð 7ð 8=ð 1ð 1ð 1ð 1ð 1ð 1ðð ð ð ð&ð &ð &ð &ð5ð 5ð 5ð 5ð* !Ø $ð	6ð 6ð 6ð 6ð 6ð'ð 'ð 'ð 'ð 'ð!ð !ð !ð !ð#ð #ð #ð #ðð ð ð ð
6ð 6ð 6ð 6ð!ð !ð !ð !ð-ð -ð -ð -ðð ð ð ðJð Jð Jð JðX ðFð Fð Fñ „XðFð €X�dÐÑÔðð ð ñ Ôðð+ð +ð +ð +ðZ=ð =ð =ð =ð Að Að Að Að ð.ð .ð .ñ „Xð.ðAð Að Að Að"ð "ð "ð "ð""ð ""ð ""ð ""ð ""ðH €X�dÐÑÔð7ð 7ð 7ñ Ôð7ð4*ð *ð *ð *ðð ð ð ð,-ð -ð -ð -ð,Nð Nð Nð Nð< €X�dÐÑÔð$ð $ð $ñ Ôð$ðL €X�dÐÑÔð$ð $ð $ñ Ôð$ðFð Fð Fð Fð-ð -ð -ð -ðð ð ð ð ð ð ð ð.ð ð ðð ð ðð ð ð ðTð Tð Tð Tð4ð 4ð 4ð 4ðl>ð >ð >ð >ð@ð @ð @ð @ð?ð ?ð ?ð ?ð 
ð 
ð 
ð 
ð1ð 1ð 1ð 1ð'ð 'ð 'ð 'ðJð Jð Jð JðLð Lð Lð Lð "&ðCð Cð Cð Cð Cð Cð4*ð *ð *ð *ð#ð #ð #ð #ð#0ð #0ð #0ð #0ðJj&ð j&ð j&ð j&ðX3ð 3ð 3ð 3ð
ð 
ð 
ð 
ðKð Kð Kð Kð;ð ;ð ;ð ;ð2Qð Qð Qð Qð
!ð !ð !ð !ð&!ð !ð !ð !ð !ð !rG   r£   Útwr   r‘  c                óÐ   — |                      |j        ¦  «        }|                     d¦  «        ^}}|r2|                      d                     |¦  «        d¬¦  «        }|dz   |z   S |S )Nr  TrÚ  )rC  rÒ   r$  r  r™   )rÝ  r”   r‘  rÒ   Úpathr–  Úparts_markups          rF   r©  r©  ã  si   € Ø×'Ò'¨¬
Ñ3Ô3€FØ—<’< Ñ%Ô%€L€Dˆ5Øð Ø—y’y §¢¨5Ñ!1Ô!1¸�yÑ=Ô=ˆØ�d‰{˜\Ñ)Ð)àˆrG   r²  rž   r•  r�   r=   c                óÈ  — |                      d¦  «        }|dk    r
|d|…         }d}t          |                      d¦  «        ¦  «        }|t          |¦  «        z   |k    rdS |t          |¦  «        z   |k    rW|t          |¦  «        z  }|d|…         }|t          |¦  «        z   |k    r |dd…         }|t          |¦  «        z   |k    ° ||z  }|                      |¦  «        S )z€Format msg into format, ellipsizing it if doesn't fit in available_width.

    Returns None if even the ellipsis can't fit.
    r3  r¢  Nz...r³   )Úfindr   r²  r  )r²  rž   r•  r¨  ÚellipsisÚformat_widths         rF   r�  r�  í  sî   € ð 	�Š�‰Œ€AØˆB‚w€wØ�"�1�"Œgˆà€HÝ˜FŸMšM¨"Ñ-Ô-Ñ.Ô.€LØ•c˜(‘m”mÑ# oÒ5Ð5Øˆtà•h˜s‘m”mÑ# oÒ5Ð5Ø�3˜x™=œ=Ñ(ˆØÐ"�?Ð"Ô#ˆØ�X c™]œ]Ñ*¨_Ò<Ð<Ø�c�r�c”(ˆCð �X c™]œ]Ñ*¨_Ò<Ð<àˆx‰ˆà�=Š=˜ÑÔÐrG   Úword_markupúdict[str, bool]c                óÐ  — |                      | |¦  «        \  }} |j        |fi |¤Ž}t          || |¦  «        }|› d|› �}t          |¦  «        }		 t	          |j        t          ¦  «        r|j        }
n|j        j        j        }
t          ¦   «         s| j
        j        dk    r| j
        j        sd|
› �}
n|j        |	z
  }t          d|
|¦  «        }
|
�||
z  }n# t          $ r Y nw xY w|S )z?Get summary line for a report, trying to add reprcrash message.r˜   r  r¦  z - {})r¨  r  r©  r   rH  rL  r7   r?  rÑ   r   r§   rh   ro   rì   r�  rM  )r”   r‘  rÝ  rå  rª  r«  r`   r~  r}   Ú
line_widthrž   r•  s               rF   r£  r£    s,  € ð $'×#DÒ#DØ�ñ$ô $Ñ €L�.ð ˆ2Œ9�\Ð4Ð4 ^Ð4Ð4€DÝ# B¨°Ñ4Ô4€DàÐÐ�TÐÐ€DÝ˜$‘”€JðÝ�c”l¥CÑ(Ô(ð 	1Ø”,ˆCˆCð ”,Ô(Ô0ˆCõ
 ‰OŒOð	AØ%œ}Ô4¸Ò9Ð9Ø”-Ô3ð  :à˜�+�+ˆCˆCà œl¨ZÑ7ˆOÝ! '¨3°Ñ@Ô@ˆCØˆ?Ø�C‰KˆDøøõ ð ð ð Øˆðøøøð €Ks   Á3C Ã
C#Ã"C#ré   r
   r)   úSequence[CollectReport]ú&list[tuple[int, str, int | None, str]]c                óR  — 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}|                     |g ¦  «         	                    |¦  «         Œàg }	| 
                    ¦   «         D ]+\  }}
|	 	                    t          |
¦  «        g|¢R ¦  «         Œ,|	S )NrÜ  ÚkeywordsrÈ   ÚskipÚ
pytestmark)rL  rH  r‡  r  r"   r
   rR   rÌ   r]  rö  rZ  )ré   r)   ÚdÚeventr'  rj  r”  rì  rÌ  rL   Úeventss              rF   r²  r²  *  s\  € ð AC€AØð ,ð ,ˆØŒ~Ð)Ð)Ð)Ý˜%œ.­%Ñ0Ô0ÐIÐI°5¸%¼.Ð2IÑIÔIÐ0Ý�5”>Ñ"Ô" aÒ'Ð'Ð'¨%°´Ð)@Ñ'Ô'Ð'Ø!&¤Ñˆ�˜å˜Y­¨V©¬Ñ5Ô5ˆÝ˜5 *¨bÑ1Ô1ˆð
 ŒJ˜'Ò!Ð!Ø˜(Ð"Ð"Ø HÐ,Ð,à06¸¸fÐ/EˆCˆCà˜6 6Ð*ˆCØ	�Š�S˜"ÑÔ×$Ò$ UÑ+Ô+Ð+Ð+Ø57€FØ—w’w‘y”yð +ð +‰ˆˆVØ�Š•s˜6‘{”{Ð) SÐ)Ð)Ñ*Ô*Ð*Ð*Ø€MrG   r}  r|  r{  )r'   r.   r-   r(   r/   r0   rg   Únounútuple[int, str]c                ó\   — |dvr| |fS |                      dd¦  «        }| | dk    r|dz   n|fS )N)r.   r-   rÕ  r-   rü  rP   rÆ   )r»   )rg   rò  s     rF   rÒ  rÒ  T  sH   € àÐ0Ð0Ð0Ø�dˆ{Ðð
 �<Š<˜
 IÑ.Ô.€Dà ¨¢
 
�$˜‘*�*°Ð4Ð4rG   rð  c                ó¬   — g }| D ]N\  }}|j         › d|j        › �}|                     d¦  «        r
|dd …         }||vr|                     |¦  «         ŒO|S )NrÝ  zpytest-é   )Úproject_namerã  r³  rö  )rý  rL   rm  Údistr  s        rF   rû  rû  a  sv   € Ø€FØ"ð  ð  ‰ˆ�àÔ#Ð4Ð4 d¤lÐ4Ð4ˆà�?Š?˜9Ñ%Ô%ð 	Ø˜˜˜”8ˆDà�vÐÐØ�MŠM˜$ÑÔÐøØ€MrG   rÕ  Úfloatc                óp   — | 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.é<   ú.2frÆ   ©rÕ  zs (r�  )ÚdatetimeÚ	timedeltar�   )rÕ  Údts     rF   r”  r”  o  sP   € à�‚|€|ØÐ Ð Ð Ð Ð åÔ­¨G©¬Ð5Ñ5Ô5ˆØÐ'Ð'Ð' "Ð'Ð'Ð'Ð'rG   c                ó2  — | dk     r
d| dz  d›d�S | dk     r
d| dz  d›d�S | dk     r
d| dz  d	›d�S | d
k     r
d| dz  d›d�S | dk     r
d| dz  d›d�S | dk     r
d| dz  d	›d�S | dk     rd| d›d�S | dk     rd| dz  d›d| dz  d›d�S d| dz  d›d| dz  dz  d›d�S )zQFormat the given seconds in a human readable manner to show in the test progress.gñhãˆµøä>r˜   i@B z.3fÚusg-Cëâ6?rü  gü©ñÒMbP?z.1fg{®Gáz„?iè  Úmsgš™™™™™¹?rP   rû  rÆ   i  z.0fzm zh Úmrb   rý  s    rF   r¶  r¶  x  sJ  € ð �ÒÐØ,�7˜WÑ$Ð,Ð,Ð,Ð,Ð,Ø�ÒÐØ,�7˜WÑ$Ð,Ð,Ð,Ð,Ð,Ø�‚€Ø,�7˜WÑ$Ð,Ð,Ð,Ð,Ð,Ø�‚~€~Ø)�7˜T‘>Ð)Ð)Ð)Ð)Ð)Ø�‚}€}Ø)�7˜T‘>Ð)Ð)Ð)Ð)Ð)Ø�‚{€{Ø)�7˜T‘>Ð)Ð)Ð)Ð)Ð)Ø�‚|€|Ø!�7Ð!Ð!Ð!Ð!Ð!Ø�‚~€~Ø;�7˜b‘=Ð;Ð;Ð;¨°"©Ð;Ð;Ð;Ð;Ð;ØCˆw˜$‰ÐCÐCÐC w°¡~¸"Ñ&<ÐCÐCÐCÐCÐCrG   r%   c                óZ  — t          | d¦  «        r5| j        }|                     d¦  «        r|t          d¦  «        d…         }|S | j        sJ ‚t          | j        t          ¦  «        sJ ‚| j        \  }}}|                     d¦  «        r|t          d¦  «        d…         }n|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.
    rz  zreason: Nr±  ÚSkippedr³   )rˆ  rz  r³  r  r)   rH  rL  r‡  )rÂ   r”  rÇ  s      rF   rŒ  rŒ  �  sÅ   € õ
 ˆv�zÑ"Ô"ð Ø”ˆØ×Ò˜ZÑ(Ô(ð 	/Ø�C 
™OœOÐ-Ð-Ô.ˆFØˆàŒ~ÐÐˆ~Ý˜&œ/­5Ñ1Ô1Ð1Ð1Ð1Ø”‰ˆˆ1ˆfØ×Ò˜[Ñ)Ô)ð 	Ø�C Ñ,Ô,Ð.Ð.Ô/ˆFˆFØ�yÒ Ð ØˆFØˆrG   c                  ó†   — e Zd ZdZdd„Z	 ddd„Zedd„¦   «         Zedd„¦   «         Zedd„¦   «         Z	edd„¦   «         Z
dS )ÚTerminalProgressPlugina#  Terminal progress reporting plugin using OSC 9;4 ANSI sequences.

    Emits OSC 9;4 sequences to indicate test progress to terminal
    tabs/windows/etc.

    Not all terminal emulators support this feature.

    Ref: https://conemu.github.io/en/AnsiEscapeCodes.html#ConEmu_specific_OSC
    Útrr£   r>   r?   c                ó0   — || _         d | _        d| _        d S )NF)Ú_trrä   Ú_has_failures)rD   r	  s     rF   rC   zTerminalProgressPlugin.__init__¯  s   € ØˆŒØ(,ˆŒØ"ˆÔÐÐrG   NÚstateú?Literal['remove', 'normal', 'error', 'indeterminate', 'paused']r‰   rR  c                óú   — |�d|cxk    rdk    sn J ‚|xdk    r d}n@xdk    r |€J ‚d|› d�}n.xd	k    r |�d
|› d�}nd}nxdk    r d}ndk    r|�d|› d�}nd}	 | j                              |d¬¦  «         dS )a  Emit OSC 9;4 sequence for indicating progress to the terminal.

        :param state:
            Progress state to set.
        :param progress:
            Progress value 0-100. Required for "normal", optional for "error"
            and "paused", otherwise ignored.
        Nr   r°  Úremovez
]9;4;0;\Únormalz]9;4;1;z\r.   z]9;4;2;z
]9;4;2;\Úindeterminatez
]9;4;3;\Úpausedz]9;4;4;z
]9;4;4;\Tr@  )r  rC  )rD   r  r‰   Úsequences       rF   Ú_emit_progressz%TerminalProgressPlugin._emit_progress´  sñ   € ð Ð 1¨Ð#7Ð#7Ò#7Ð#7°CÒ#7Ð#7Ð#7Ð#7Ð#7Ð7ð Ø�’��Ø.��Ø�’��ØÐ+Ð+Ð+Ø9¨Ð9Ð9Ð9��Ø�’��ØÐ'Ø=¨XÐ=Ð=Ð=�H�Hà2�H�HØ �’��Ø.��Ø’�ØÐ'Ø=¨XÐ=Ð=Ð=�H�Hà2�H�HàŒ×Ò˜8¨4ÐÑ0Ô0Ð0Ð0Ð0rG   rØ  r&   c                ó>   — || _         |                      d¦  «         d S )Nr  )rä   r  )rD   rØ  s     rF   rë  z*TerminalProgressPlugin.pytest_sessionstartÚ  s#   € àˆŒà×Ò˜OÑ,Ô,Ð,Ð,Ð,rG   c                óh   — | j         €J ‚| j         j        dk    r|                      dd¦  «         d S d S )Nr   r  )rä   r™  r  r	  s    rF   r  z/TerminalProgressPlugin.pytest_collection_finishà  sD   € àŒ}Ð(Ð(Ð(ØŒ=Ô'¨!Ò+Ð+à×Ò ¨!Ñ,Ô,Ð,Ð,Ð,ð ,Ð+rG   rÂ   r%   c                óø   — |j         rd| _        |j        dk    rd S | j        €J ‚| j        j        }|dk    rC| j        j        }t          |dz  |z  d¦  «        }|                      | j        rdnd|¦  «         d S d S )NTÚcallr   r°  r.   r  )	r'   r  rÌ   rä   r™  r  r  Úminr  )rD   rÂ   r·  Úreportedr‰   s        rF   r—  z/TerminalProgressPlugin.pytest_runtest_logreportç  sœ   € àŒ=ð 	&Ø!%ˆDÔð Œ;˜&Ò Ð ØˆFð Œ}Ð(Ð(Ð(Ø”MÔ0ˆ	Ø�qŠ=ˆ=Ø”xÔ1ˆHÝ˜8 c™>¨YÑ6¸Ñ<Ô<ˆHØ×Ò¨4Ô+=Ð K  À8ÈXÑVÔVÐVÐVÐVð ˆ=rG   c                ó0   — |                       d¦  «         d S )Nr  )r  r	  s    rF   r,  z+TerminalProgressPlugin.pytest_sessionfinishø  s   € à×Ò˜HÑ%Ô%Ð%Ð%Ð%rG   )r	  r£   r>   r?   rV   )r  r  r‰   rR  r>   r?   rÚ  rØ  rÙ  )rW   rX   rY   rZ   rC   r  r   rë  r  r—  r,  rb   rG   rF   r  r  ¤  sÕ   € € € € € ðð ð#ð #ð #ð #ð  $ð$1ð $1ð $1ð $1ð $1ðL ð-ð -ð -ñ „Xð-ð
 ð-ð -ð -ñ „Xð-ð ðWð Wð Wñ „XðWð  ð&ð &ð &ñ „Xð&ð &ð &rG   r  )rH   r   r>   r?   )r”   r   r>   r?   )r”   r   r>   r7   )rÂ   r#   r>   rÃ   )rÝ  r   r”   r   r‘  r#   )r²  r7   rž   r7   r•  r�   r>   r=   )
r”   r   r‘  r#   rÝ  r   rå  ræ  r>   r7   )ré   r
   r)   ré  r>   rê  )rg   r�   rò  r7   r>   ró  )r>   rð  )rÕ  rù  r>   r7   )rÂ   r%   r>   r7   )ZrZ   Ú
__future__r   ÚargparseÚcollectionsr   Úcollections.abcr   r   r   r   Údataclassesrþ  Ú	functoolsr	   r  Úpathlibr
   r­   r¤   r<  Útypingr   r   r   r   r   r   r   r-   rä  rü   r   r   r   Ú_pytest._coder   Ú_pytest._code.coder   Ú_pytest._ior   Ú_pytest._io.wcwidthr   Ú_pytest._versionÚ_pytest.compatr   râ   r   r   r   r   Ú_pytest.config.argparsingr   Ú_pytest.nodesr   r    Ú_pytest.pathlibr!   r"   Ú_pytest.reportsr#   r$   r%   Ú_pytest.mainr&   rÖ  rÄ  rŽ   ÚActionr3   r]   r“   r¯   r¿   rÎ   Ú	dataclassrÐ   r£   r©  r�  r£  r²  r¡  r¢  rÒ  rû  r”  r¶  rŒ  r  rb   rG   rF   ú<module>r2     ss  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &ð ð %Ø$Ð$Ð$Ð$Ð$Ð$ð  #Ð ð€ð Ð ð"=ð "=ð "=ð "=ð "=�h”oñ "=ô "=ð "=ðJ/ð /ð /ð /ð /˜ñ /ô /ð /ð(Wð Wð Wð Wðt?ð ?ð ?ð ?ð"ð ð ð ð2 
€�$ÐÑÔð,ð ,ð ,ñ Ôð,ð Ôðð ð ð ð ñ ô ñ Ôðð8 ðe!ð e!ð e!ð e!ð e!ñ e!ô e!ñ „ðe!ðP#ð ð ð ðð ð ð ð2!ð !ð !ð !ðHð ð ð ð@ ØØØØØðð €ð #Ð ð
5ð 
5ð 
5ð 
5ðð ð ð ð(ð (ð (ð (ðDð Dð Dð Dð.ð ð ð ð*V&ð V&ð V&ð V&ð V&ñ V&ô V&ð V&ð V&ð V&rG   