§
    4›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         €úM/home/lighthouse/health/venv/lib/python3.11/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           	     óZ  — |                       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%t
          d&d'¬(¦  «         |                     d)d*dd+dd,¬-¦  «         |                     d.d/dd0dd1¬¦  «         |                     d2dd0d3¬4¦  «         |                     d5d6d$d7d8g d9¢d:¬;¦  «         |                     d<dd=dd>¬¦  «         |                     d?d$d@g dA¢dBdC¬D¦  «         |                     dEdFdddG¬H¦  «         |                     dIdJd$dJd8g dK¢dL¬;¦  «         |                     dMdNdNdOgdP¬Q¦  «         |                      dRdSdT¬U¦  «         t          j        | t          j	        dV¬W¦  «         d S )XNz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-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').)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¿   3  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Î   L  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_locationn  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�œdÎd�„ZCd«d�„ZDdÏd’„ZEd«d“„ZFd«d”„ZGdÐd–„ZHdÑd˜„ZId«d™„ZJdÒd›„ZKdÓdž„ZLdÒdŸ„ZMdÒd „ZNd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         z  }| j        �|| j        k    rt| j        �| j        r|                      ¦   «          || _        t          | j        |¦  «        }| j         	                    ¦   «          | j         
                    |dz   ¦  «          | j        j
        |fddi|¤Ž d S )Nú::r   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Ñ(:Ô(:¸1Ô(=Ñ=ˆØÔÐ%¨°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   r2  r3  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   r4  r   r2  r3  r  r9  Ú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   r4  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   r4  r   s      rF   rA  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   r/  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  rH  Ú
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   )r/  rë   rN  )rD   rN  rO  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ë   rN  )rD   rO  rN  rT  s       rF   ÚsectionzTerminalReporter.section7  s&   € ØˆŒŒ�S˜%Ð&Ð& 2Ð&Ð&Ð&Ð&Ð&rG   rž   c                ó,   —  | j         j        |fi |¤Ž d S rV   )rë   r}   )rD   rž   rT  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^   rX  Ú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 )Nr1  zINTERNALERROR> T)r7   r"  r›   )rD   r`  r}   s      rF   Úpytest_internalerrorz%TerminalReporter.pytest_internalerrorC  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.warningsrf  rÙ   ÚlinenorÐ   r_  )rD   rc  rÒ   rf  rÓ   rÑ   Úwarning_reports          rF   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recordedH  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   rk  rž   s      rF   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registeredW  sC   € ØŒ;ÔÔ)ð 	!Ø0¨Ð0Ð0ˆCð �OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!rG   úSequence[Item]c                ó2   — |                       d|¦  «         d S )Nr*   )r_  )rD   rX  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Ò   rq  r%  rh  Údomainr}   s          rF   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstartb  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`   rF  Útupler_  Úhasattrr(   r'   r)   rô   ÚaddrÒ   r  r   r‘   rë   r$  r÷   Ú_is_last_itemÚ(_write_progress_information_if_past_edgert  rq  r-  Ú_get_raw_skip_reasonrì   r9  r  Ú_format_trimmedr=  r#  r/  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_logreportp  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)rq  )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)rq  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   )rF  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_displayrq  ÚsumrX  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   r1  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¹   rL  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ë   r9  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   )rF  r   ©r¢  r  s     rF   r¤  z9TerminalReporter.pytest_collectreport.<locals>.<listcomp>$  s'   € ÐAÐAÐA�q­Z¸½4Ñ-@Ô-@ÐA�ÐAÐAÐArG   )r'   r_  r)   r›  rã   r  rò   Úreport_collect)rD   rÂ   rX  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Ê  rH  r1  )r”   r§   rh   rù   ÚelapsedÚsecondsÚREPORT_COLLECTING_RESOLUTIONr   rø   r  ræ   r  rã   r7   rò   rM  r$  r›   )rD   r   rE  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 )NrS  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
  rR  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_sessionstartM  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   )ÚreversedrF  r7   r›   )rD   rè  Úline_or_linesr}   s       rF   ræ  z/TerminalReporter._write_report_lines_from_hooksh  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_headerr  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Ý  rX  Úcollectonlyr   r³   r'   ú!zcollection failures)rÏ  r”   r„  Úpytest_report_collectionfinishré   rX  ræ  r  r§   rh   rë   r}   Ú_printcollecteditemsræ   r  rN  Ú
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   ÚsortedrX  rë   r}   rÒ   Ú	listchainr  rJ  rô  rR   ÚinspectÚgetdocÚ
splitlinesr°  )rD   rX  Ú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        f}||v r.| j        s'| j	        j
                             | || j	        ¬¦  «         |j        r*|                      dt          |j        ¦  «        d¬¦  «         |t          j        k    r|                      ¦   «          d | _        n1|j        r*|                      dt          |j        ¦  «        d¬¦  «         |                      ¦   «          |S )Nr³   )r–   r  r”   rþ  T)r{  )rë   r}   r   ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDrl   r”   r„  Úpytest_terminal_summaryÚ
shouldfailrR  r7   Ú_report_keyboardinterruptrû   Ú
shouldstopÚsummary_stats)rD   rÖ  r  r›  Úsummary_exit_codess        rF   Úpytest_sessionfinishz%TerminalReporter.pytest_sessionfinish¼  s,  è è € ð ��ˆØŒ�Š�bÑÔÐåŒKÝÔ!ÝÔ ÝÔ ÝÔ'ð
Ðð Ð+Ð+Ð+°D´OÐ+ØŒKÔ×4Ò4Ø!%°*ÀTÄ[ð 5ñ ô ð ð Ôð 	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   r/  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)rz  )
rû   Ú	reprcrashrÑ   rR  r”   r§   Ú	fulltracer  rë   r}   )rD   r`  rž   s      rF   r"  z*TerminalReporter._report_keyboardinterruptí  sÉ   € ØÔ.ˆØÐ"Ð"Ð"ØÔ Ð,Ð,Ð,ØÔÔ'ˆØ�Š�s˜CÑ Ô Ð Ø #Ð%Ð%ØŒ{Ô!Ô+ð Ø×"Ò" 4¤8Ñ,Ô,Ð,Ð,Ð,àÔ!×,Ò,¨T¬XÑ6Ô6Ð6Ø”—’ØVØð ñ ô ð ð ð ð &Ð%rG   r%  rh  ru  c                ó  ‡ ‡— dˆˆ fd„}|r| ||¦  «        }‰ j         dk    re|                     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   ru  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  r   ú\z <- z
[location]r˜   )rÒ   r7   r>   r7   )r  r"  r»   r   ÚSEPr"   ré   r
   )rD   rÒ   r%  rh  ru  r?  r  s   `   `  rF   rt  zTerminalReporter._locationlineý  s´   øø€ ð	ð 	ð 	ð 	ð 	ð 	ð 	ð ð 	Ø�%˜‘-”-ˆCØŒ~ Ò"Ð" v§|¢|°DÑ'9Ô'9¸!Ô'<ÀÇÂØ•e”iñAô Aò (ð (ð �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�  rC  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   Úlongreprr9  ÚAttributeError)rD   r�  s     rF   Ú_getcrashlinezTerminalReporter._getcrashline  s}   € ð	Ý�s”|Ô-Ñ.Ô.Ð.øÝð 	ð 	ð 	ðÝ˜3œ<Ñ(Ô(¨¨"¨Ô-Ð-Ð-Ð-øÝ!ð ð ð Ø�r�r�rðøøøð	øøøs,   ‚ ›
A¦AÁAÁ
AÁAÁAÁA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é
   r1  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>F  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>I  sX   è è € ð !ð !á˜˜1ð '×-Ò-¨a°¸1¸qº5¸5°C°CÀbÑIÔIð!ð !ð !ð !ð !ð !rG   )	rÜ   r”   rô  r  r™   rš   r7   r   rX  )rP  Ú	locationsr¹   rq  Úcounts_by_filenamerD   s        €rF   Úcollapsed_location_reportzDTerminalReporter.summary_warnings.<locals>.collapsed_location_report<  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 summaryrS  TF)rz  rÊ  r1  c              3  ó    K  — | ]	}d |z   V — Œ
dS )r  Nrb   rÎ  s     rF   r¨  z4TerminalReporter.summary_warnings.<locals>.<genexpr>U  s&   è è € Ð(AÐ(A°a¨°©Ð(AÐ(AÐ(AÐ(AÐ(AÐ(ArG   zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rP  rQ  r>   r7   )r  ræ   r  rú   r  r[  rÑ   rô  rR  rX  rë   r}   r  r™   Úrstrip)rD   Úall_warningsr   Úwarning_reportsÚreports_grouped_by_messageÚwrr[  rO  rÑ   Úmessage_reportsÚmaybe_locationrè  Úindenteds   `            rF   r+  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   r,  zTerminalReporter.summary_passes_  s    € Ø×$Ò$ X¨x¸Ñ=Ô=Ð=Ð=Ð=rG   c                ó4   — |                       ddd¦  «         d S )Nr,   ÚXPASSESÚXrh  r	  s    rF   r-  z TerminalReporter.summary_xpassesb  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|   rS  rÅ  T)ry  rÊ  )r”   r§   rx   r  rN  rR  ÚsectionsrD  Ú_outrep_summaryÚ_handle_teardown_sectionsrÒ   )rD   rm  rn  ro  rP  r�  rž   s          rF   ri  z(TerminalReporter.summary_passes_combinede  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>w  s<   ø€ ð 
ð 
ð 
àØŒ{˜jÒ(Ð(¨V¬]¸fÒ-DÐ-Dð à-DÐ-DÐ-DrG   )rN  )rD   rÒ   rP  s    ` rF   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reportsu  s?   ø€ Ø—/’/ "Ñ%Ô%ˆð
ð 
ð 
ð 
à!ð
ñ 
ô 
ð 	
rG   c                ó`   — |                       |¦  «        D ]}|                      |¦  «         Œd S rV   )rw  Úprint_teardown_sections)rD   rÒ   rÂ   s      rF   rs  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   r1  )r”   r§   r�   rq  rë   rN  r}   ©rD   r�  r�   Úsecnamer4  s        rF   ry  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   r*  z"TerminalReporter.summary_xfailures’  sG   € Ø”+Ô$Ô-ˆØ.5Ð?�”Ô"Ô*Ð*¸4ˆØ×&Ò& y°+ÀUÐ&ÑKÔKÐKÐKÐKrG   )ro  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|   rS  r}   rÅ  T©r{  rÊ  )	r  rN  rR  rI  rr  r›   rD  rs  rÒ   )	rD   rm  rn  rw   ro  rP  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.   rS  ÚERRORSrÇ   zERROR collecting z	ERROR at z of rÅ  Tr…  )	r”   r§   rx   rN  rR  ræ   rD  rÌ   rr  )rD   rP  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   r1  )r  rë   r”   r§   r�   rq  rN  r}   r{  s        rF   rr  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éüÿÿÿrS  rì   ©r³   )r  rÞ  rÒ  Úbuild_summary_stats_linerë   rì   r  r  rô  r™   Úformat_session_durationrÓ  r>  rR  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_markuprx  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%  rh  r’  rD   s              €rF   Úshow_skipped_foldedz@TerminalReporter.short_test_summary.<locals>.show_skipped_folded  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  rG  rF  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_unfolded1  s=  ø€ Ø+/¬:¯>ª>¸)ÀRÑ+HÔ+HˆGàð #ð #�Ø”|Ð/Ð/Ð/Ý! #¤,µÑ6Ô6ÐKÐK¸¸c¼lÐ8KÑKÔKÐKÝ˜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_skippedD  s<   ø€ ØÔð -Ø#Ð# EÑ*Ô*Ð*Ð*Ð*à%Ð% eÑ,Ô,Ð,Ð,Ð,rG   r'   )r˜  r(   r.   )r  rl  ÚfrÆ   ÚprÊ   rS  zshort test summary infoT)r‚  rÊ  )rè  rî  r˜  r7   r>   r?   )rè  rî  r>   r?   )rr   r	   r  rR  r›   )rD   r�  r¦  r¨  r³  ÚREPORTCHAR_ACTIONSrè  r¾   ri   r}   r¯  r±  s   `         @@rF   r.  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_color^  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,   rz  r(   ry  )ræ   rˆ  )rD   r¹  ræ   rÄ  s       rF   Ú_determine_main_colorz&TerminalReporter._determine_main_colore  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_colorq  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_linez  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   rM  )rD   rÅ  rP  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Å  rP  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 collectedrz  Try  z%d %s collectedÚtestzno tests collected (z deselected)r¾  z tests collected (rÊ  )r  r±  rã   rË  rš  )rD   r*   rE  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?   )r4  r7   r   r;   r2  r�   r3  r7   r  r;   r>   r?   )r4  r7   r   r;   r  r;   r>   r?   )r4  r7   r   r;   r>   r?   )r}   rC  r  r;   r>   r?   )r}   r7   r  r;   r>   r?   )NN)
rN  r7   rO  r=   rì   rP  r  r;   r>   r?   )rS  )rO  r7   rN  r7   rT  r;   r>   r?   )rž   r7   rT  r;   r>   r?   )r^   r7   rX  rY  r>   r?   )r`  r   r>   r;   )rc  rd  rÒ   r7   r>   r?   )rk  r   r>   r?   )rX  rn  r>   r?   )rÒ   r7   rq  rr  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  )r/  r0  r>   r?   )
rÒ   r7   r%  r7   rh  rP  ru  r7   r>   r7   )r  r7   )rm  r7   rn  r7   ro  r7   r>   r?   )rÒ   r7   r>   rt  )rÒ   r7   r>   r?   )r�  r%   r>   r?   )
rm  r7   rn  r7   rw   r7   ro  r=   r>   r?   )r�  r#   r>   r?   )r>   r·  )r¹  r;   r>   r7   )r>   rÁ  )rÅ  r7   r>   rÆ  )OrW   rX   rY   rC   rö   Úpropertyr  r
  rk   rl   r  Úsetterr  r  r  r'  r-  r/  r=  r$  rA  r   r›   rM  rR  rV  r}   r_  rb  rj  rm  rp  rv  r•  rˆ  r   rœ  rŽ  r‰  r#  r¿  rË  rÐ  rÏ  ré  ræ  rå  r  r   r&  r   r4  r6  r"  rt  rD  rI  rN  r+  r,  r-  ri  rw  rs  ry  r)  r*  r€  r(  rr  r$  r.  rÀ  r»  r]  rŒ  r±  rÄ  rÃ  rb   rG   rF   r£   r£   y  sb  € € € € € ð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ÐÑÔðð ð ñ Ôðð4 €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Ø  )r=  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.
    r1  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   rF  rG  r7   r9  rÑ   r   r§   rh   ro   rì   r‹  rH  )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)rG  rF  r…  r  r"   r
   rR   rÌ   r[  rô  rX  )ré   r)   ÚdÚeventr%  rh  r’  rå  rÅ  rL   Úeventss              rF   r«  r«    s\  € ð AC€AØð ,ð ,ˆØŒ~Ð)Ð)Ð)Ý˜%œ.­%Ñ0Ô0ÐIÐI°5¸%¼.Ð2IÑIÔIÐIÝ�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{  rz  ry  )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Ë  =  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   rk  Údistr  s        rF   rù  rù  J  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�  X  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´  a  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.
    rx  zreason: Nrª  ÚSkippedr³   )r†  rx  r¬  r  r)   rF  rG  r…  )rÂ   r’  rÅ  s      rF   rŠ  rŠ  x  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‰   rP  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  rA  )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‰   rP  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>r+     ss  ððð ð
 #Ð "Ð "Ð "Ð "Ð "à €€€Ø Ð Ð Ð Ð Ð Ø $Ð $Ð $Ð $Ð $Ð $Ø %Ð %Ð %Ð %Ð %Ð %Ø #Ð #Ð #Ð #Ð #Ð #Ø $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø €€€à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &ð ð %Ø$Ð$Ð$Ð$Ð$Ð$ð  #Ð ð€ð Ð ð"=ð "=ð "=ð "=ð "=�h”oñ "=ô "=ð "=ðJ/ð /ð /ð /ð /˜ñ /ô /ð /ð(Vð Vð Vð Vðr?ð ?ð ?ð ?ð"ð ð ð ð2 
€�$ÐÑÔð,ð ,ð ,ñ Ôð,ð Ôðð ð ð ð ñ ô ñ Ôðð8 ðO!ð O!ð O!ð O!ð O!ñ O!ô O!ñ „ðO!ðd"ð ð ð ðð ð ð ð2!ð !ð !ð !ðHð ð ð ð@ ØØØØØðð €ð #Ð ð
5ð 
5ð 
5ð 
5ðð ð ð ð(ð (ð (ð (ðDð Dð Dð Dð.ð ð ð ð*V&ð V&ð V&ð V&ð V&ñ V&ô V&ð V&ð V&ð V&rG   