§
    öyIfºÖ  ã                   ó~  — d Z ddlZddlmZ ddlZddlZddlmZ ddlZddl	m
Z
 ddlZddlZddlZddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddl Z ddl!Z!ddl"m#Z# ddl"m$Z$ ddl%m&Z& ddl'm(Z( ddl)m*Z* ddl+m,Z, ddl-Z"ddl.m/Z/ ddl0m1Z1 ddl0m2Z2 dd l0m3Z3 dd!l0m4Z4 dd"l5m6Z6 dd#l7m8Z8 dd$l7m9Z9 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@ erdd*lAmBZB d+ZCd,ZDd-ZE G d.„ d/ejF        ¦  «        ZG G d0„ d1e¦  «        ZHd2e6d3dfd4„ZId5e2d3dfd6„ZJd5e2d3eKfd7„ZL e4d8¬9¦  «        d:e>d3eeKeKeKf         fd;„¦   «         ZMejN         G d<„ d=¦  «        ¦   «         ZOe G d>„ d?¦  «        ¦   «         ZPd@e*d5e2dAe>fdB„ZQdCeKdDeKdEeRd3eeK         fdF„ZSd5e2dAe>d@e*dGeeKeTf         d3eKf
dH„ZUdIe
dJee?         d3eeeReKeeR         eKf                  fdK„ZVdLdLdMdNdOœZWdMZXdPeRdQeKd3eeReKf         fdR„ZYd3eeK         fdS„ZZdTe[d3eKfdU„Z\d:e@d3eKfdV„Z]dS )WzsTerminal reporting of the full testing process.

This is a good source for looking at the various reporting hooks.
é    N)ÚCounter)Úpartial)ÚPath)ÚAny)ÚCallable)ÚClassVar)ÚDict)Úfinal)Ú	Generator)ÚList)ÚLiteral)ÚMapping)Ú
NamedTuple)ÚOptional)ÚSequence)ÚSet)ÚTextIO)ÚTuple)ÚTYPE_CHECKING)ÚUnion)Únodes)Útiming)ÚExceptionInfo)ÚExceptionRepr)ÚTerminalWriter)Úwcswidth)Úrunning_on_ci)Ú_PluggyPlugin)ÚConfig)ÚExitCode)Úhookimpl)ÚParser)ÚItem)ÚNode)Úabsolutepath)Úbestrelpath)Ú
BaseReport)ÚCollectReport)Ú
TestReport)ÚSessiong      à?)ÚfailedÚpassedÚskippedÚ
deselectedÚxfailedÚxpassedÚwarningsÚerrorÚfEc                   óº   ‡ — e Zd ZdZ	 	 	 ddee         dedededee         d	dfˆ fd
„Z		 dde
j        de
j        deeee         df         dee         d	df
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ÚdestÚdefaultÚrequiredÚhelpÚreturnc                 óV   •— t          ¦   «                              ||d|||¬¦  «         d S )Nr   )r6   r7   Únargsr8   r9   r:   )ÚsuperÚ__init__)Úselfr6   r7   r8   r9   r:   Ú	__class__s         €úD/var/www/piapp/venv/lib/python3.11/site-packages/_pytest/terminal.pyr?   zMoreQuietAction.__init__W   sB   ø€ õ 	‰Œ×ÒØ)ØØØØØð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    ÚparserÚ	namespaceÚvaluesÚoption_stringc                 ó–   — t          || j        d¦  «        dz
  }t          || j        |¦  «         t          |dd¦  «        dz   |_        d S )Nr   é   Úquiet)Úgetattrr7   ÚsetattrrJ   )r@   rD   rE   rF   rG   Ú	new_counts         rB   Ú__call__zMoreQuietAction.__call__h   sL   € õ ˜I t¤y°!Ñ4Ô4°qÑ8ˆ	Ý�	˜4œ9 iÑ0Ô0Ð0å! )¨W°aÑ8Ô8¸1Ñ<ˆ	ŒˆˆrC   )NFN©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   ÚstrÚobjectÚboolr   r?   ÚargparseÚArgumentParserÚ	Namespacer   rN   Ú__classcell__)rA   s   @rB   r5   r5   P   s  ø€ € € € € ðð ð ØØ"ð
ð 
à  œð
ð ð
ð ð	
ð
 ð
ð �sŒmð
ð 
ð
ð 
ð 
ð 
ð 
ð 
ð, (,ð
=ð 
=àÔ'ð
=ð Ô%ð
=ð �c˜8 FÔ+¨TÐ1Ô2ð	
=ð
   ”}ð
=ð 
ð
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=ð 
=rC   r5   c                   ób   — e Zd ZU dZeed<   eed<   eeeeeee	f         f         f         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.
    ÚcategoryÚletterÚwordN)
rP   rQ   rR   rS   rT   Ú__annotations__r   r   r   rV   © rC   rB   r\   r\   u   sY   € € € € € € ðð ð €M€M�MØ€K€K�KØ
��U˜3 ¨¨T¨	Ô 2Ð2Ô3Ð3Ô
4Ð4Ð4Ñ4Ð4Ð4rC   r\   rD   r;   c           	      ó¾  — |                       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d'dd(¬)¦  «         |                     d*d+d'd,¬-¦  «         |                     d.d/dd0d1g d2¢d3¬4¦  «         |                     d5dd6g d7¢d8d9¬:¦  «         |                     d;d<ddd=¬>¦  «         |                     d?d@dd@d1g dA¢dB¬4¦  «         |                     dCdDdDdEgdF¬G¦  «         |                      dHdIdJ¬K¦  «         t          j        | t          j        dL¬M¦  «         d S )NNzterminal reportingÚ	ReportingÚgeneral)Úafterz-vz	--verboseÚcountr   ÚverbosezIncrease verbosity)Úactionr8   r7   r:   z--no-headerÚ
store_trueFÚ	no_headerzDisable headerz--no-summaryÚ
no_summaryzDisable summaryz-qz--quietzDecrease verbosityz--verbosityzSet verbosity. Default: 0.)r7   Ú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').)rh   r7   r8   Úmetavarr:   z--disable-warningsz--disable-pytest-warningsÚdisable_warningszDisable warnings summary)r8   r7   rh   r:   z-lz--showlocalsÚ
showlocalsz/Show locals in tracebacks (disabled by default))rh   r7   r8   r:   z--no-showlocalsÚstore_falsezFHide locals in tracebacks (negate --showlocals passed through addopts))rh   r7   r:   z--tbÚstyleÚtbstyleÚauto)rv   ÚlongÚshortÚnoÚlineÚnativez5Traceback print mode (auto/long/short/line/native/no))rp   rh   r7   r8   Úchoicesr:   z--show-captureÚshowcapture)ry   ÚstdoutÚstderrÚlogÚallr�   zOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)rh   r7   r|   r8   r:   z--fulltracez--full-tracez,Don't cut any tracebacks (default is to cut))rh   r8   r:   z--colorÚcolor)Úyesry   rv   z#Color terminal output (yes/no/auto)z--code-highlightrƒ   ry   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Ú
_addoptionr5   ÚintÚ_REPORTCHARS_DEFAULTÚaddinir   Ú_add_verbosity_iniÚVERBOSITY_TEST_CASES)rD   Úgroups     rB   Úpytest_addoptionrŽ   ‰   s/  € Ø�OŠOÐ0°+ÀYˆOÑOÔO€EØ	×ÒØØØØØØ!ð ñ ô ð ð 
×ÒØØØØØð ñ ô ð ð 
×ÒØØØØØð ñ ô ð ð 
×ÒØØÝØØØ!ð ñ ô ð ð 
×ÒØØÝØØ)ð ñ ô ð ð 
×ÒØØØÝ$Øð>ð ñ ô ð ð 
×ÒØØ#ØØØØ'ð ñ ô ð ð 
×ÒØØØØØØ>ð ñ ô ð ð 
×ÒØØØØUð	 ñ ô ð ð 
×ÒØØØØØØAÐAÐAØDð ñ ô ð ð 
×ÒØØØØ8Ð8Ð8Øðð ñ ô ð ð 
×ÒØØØØØ;ð ñ ô ð ð 
×ÒØØØØØØ%Ð%Ð%Ø2ð ñ ô ð ð 
×ÒØØØ˜�ðð	 ñ ô ð ð ‡M‚MØð)ð ð ñ ô ð õ ÔØÝÔ#ðbð	ñ ô ð ð ð rC   Úconfigc                 óð   ‡— t          | t          j        ¦  «        Š| j                             ‰d¦  «         | j        j        s| j        j        r'ˆfd„}| j        j	         
                    d|¦  «         d S d S )NÚterminalreporterc                 óˆ   •— d                      t          t          |¦  «        ¦  «        }‰                     d|z   ¦  «         d S )Nú z[traceconfig] )ÚjoinÚmaprT   Ú
write_line)ÚtagsÚargsÚmsgÚreporters      €rB   Úmywriterz"pytest_configure.<locals>.mywriter  s<   ø€ Ø—(’(�3�s D™>œ>Ñ*Ô*ˆCØ×ÒÐ 0°3Ñ 6Ñ7Ô7Ð7Ð7Ð7rC   zpytest:config)ÚTerminalReporterÚsysr~   ÚpluginmanagerÚregisterÚoptionÚdebugÚtraceconfigÚtraceÚrootÚsetprocessor)r�   r›   rš   s     @rB   Úpytest_configurer¦     s‘   ø€ Ý ­¬
Ñ3Ô3€HØ
Ô×!Ò! (Ð,>Ñ?Ô?Ð?Ø„}Ôð B˜fœmÔ7ð Bð	8ð 	8ð 	8ð 	8ð 	8ð 	ŒÔ×&Ò& ¸ÑAÔAÐAÐAÐAðBð BrC   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    rn   Úlowerrq   Úreplace)r�   rn   Úold_aliasesÚ
reportoptsÚchars        rB   Úgetreportoptr¶     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ˆ
àÐrC   T©ÚtrylastÚreportc                 óŽ   — 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+   r2   ÚE)r,   r-   ÚoutcomeÚwhenÚupper)r¹   r^   rÁ   s      rB   Úpytest_report_teststatusrÄ   2  se   € à€FØ„}ð ØˆˆØ	Œð Øˆà”>€GØ„{Ð6Ð6Ð6¸7ÀhÒ;NÐ;NØˆØˆà�F˜GŸMšM™OœOÐ+Ð+rC   c                   óŒ   — e Zd ZU dZeed<   dZee         ed<   dZee	ee
f                  ed<   dZeed<   ded	ee         f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``).
    ÚmessageNÚnodeidÚ
fslocationTÚcount_towards_summaryr�   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%   )r@   r�   ÚfilenameÚlinenumÚrelpaths        rB   Úget_locationzWarningReport.get_locationT  s`   € àŒ;ð 	Ø”;ÐØŒ?ð 	*Ø $¤ÑˆH�gÝ! &Ô":Ô">ÅÈXÑ@VÔ@VÑWÔWˆGØÐ)Ð) Ð)Ð)Ð)ØˆtrC   )rP   rQ   rR   rS   rT   r`   rÈ   r   rÉ   r   rˆ   rÊ   r   r   rÒ   ra   rC   rB   rÆ   rÆ   B  s“   € € € € € € ðð ð €L€L�LØ €FˆH�SŒMÐ Ð Ñ Ø,0€J�˜˜s C˜xœÔ)Ð0Ð0Ñ0à&*Ð˜8Ð*Ð*Ñ*ð 6ð ¨h°s¬mð ð ð ð ð ð rC   rÆ   c                   ó:  — e Zd Zddedee         ddfd„Zded         fd„Ze	de
fd„¦   «         Ze	defd	„¦   «         Ze	defd
„¦   «         Ze	defd„¦   «         Ze	defd„¦   «         Zej        dee         ddfd„¦   «         Ze	defd„¦   «         Zdedefd„Zdededdfd„Zd€dededdfd„Zd�d„Zddddœdeded e
d!ededdfd"„Zdd#œdedededdfd$„Zd�d%„Zd&eeef         deddfd'„Zd&ededdfd(„Z	 	 d‚d)ed*ee         d+ee
         deddf
d,„Zdƒd*ed)ed.eddfd/„Z d0ed.eddfd1„Z!d2ed3e"e#         ddfd4„Z$d5e%defd6„Z&d7e'j(        deddfd8„Z)d9e*ddfd:„Z+d3e"e,         ddfd;„Z-ded<e.eee
         ef         ddfd=„Z/d>e0ddfd?„Z1e	defd@„¦   «         Z2deddfdA„Z3defdB„Z4d�dC„Z5e	de
fdD„¦   «         Z6d�dE„Z7d>e8ddfdF„Z9d„dGeddfdH„Z: e;dI¬J¦  «        d…dM„¦   «         Z<dNe"eee"e         f                  ddfdO„Z=dede>e         fdP„Z?d…dQ„Z@d3e"e,         ddfdR„ZA e;dI¬S¦  «        dKdLdTee
eBf         deCdU         fdV„¦   «         ZD e;dI¬S¦  «        deCdU         fdW„¦   «         ZEdXeFeG         ddfdY„ZHd�dZ„ZId�d[„ZJded\ed]ee
         d^edef
d_„ZKd`„ ZLda„ ZMdbefdc„ZNd�dd„ZOd�de„ZPd�df„ZQdgedhedieddfdj„ZRdede>e0         fdk„ZSdeddfdl„ZTdme0ddfdn„ZUd�do„ZVd�dp„ZW	 ddgedhediee         ddfdq„ZXd�dr„ZYdmeZddfds„Z[d�dt„Z\d�du„Z]de.ee>e         f         fdv„Z^dwedefdx„Z_d�dy„Z`de.e>e.eeaeef         f                  ef         fdz„Zbd{ede>e#         fd|„Zcde.e>e.eeaeef         f                  ef         fd}„Zdde.e>e.eeaeef         f                  ef         fd~„ZedS )†rœ   Nr�   Úfiler;   c                 ó  — dd l }|| _        d| _        d | _        d | _        i | _        d | _        d | _        |j        j	        | _
        |€t          j        }|j                             ||¦  «        | _        | j        j        | _        d | _        t%          |¦  «        | _        | j        j        | _        |                     ¦   «         | _        t-          ¦   «         | _        |                      ¦   «         | _        d | _        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¶   rn   Ú	hasmarkupÚisattyÚsetÚ_progress_nodeids_reportedÚ_determine_show_progress_infoÚ_show_progress_infoÚ_collect_report_last_writeÚ_already_displayed_warningsÚ_keyboardinterrupt_memo)r@   r�   rÔ   Ú_pytests       rB   r?   zTerminalReporter.__init__a  só   € ØÐÐÐàˆŒØˆÔØ+/ˆŒØ+/ˆÔà+-ˆŒ
Ø*.ˆÔØ15ˆÔØÔ1Ô5ˆŒØˆ<Ý”:ˆDØ”>×8Ò8¸ÀÑFÔFˆŒØ!œXÔ/ˆÔØ:>ˆÔÝ'¨Ñ/Ô/ˆÔØœÔ+ˆŒØ—k’k‘m”mˆŒÝ47±E´EˆÔ'Ø#'×#EÒ#EÑ#GÔ#GˆÔ Ø;?ˆÔ'Ø:>ˆÔ(Ø@DˆÔ$Ð$Ð$rC   )r…   rf   Fc                 ó  — | 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S )
zRReturn whether we should display progress information based on the current config.Úcapturery   r„   úprogress-even-when-capture-noFÚ	setupshow>   r…   rð   r…   rf   )r�   Ú	getoptionÚgetini)r@   Úcfgs     rB   rè   z.TerminalReporter._determine_show_progress_info{  s¢   € ð
 ŒK×!Ò! )¨TÑ2Ô2°dÒ:Ð:Ø”×"Ò"Ð#9Ñ:Ô:Ø.ò/ð /ð �5àŒ;× Ò  ¨eÑ4Ô4ð 	Ø�5Ø”;×%Ò%Ð&<Ñ=Ô=ˆØÐ?Ð?Ð?Ø�:Ø�GŠ^ˆ^Ø�7à�5rC   c                 ó(   — | j         j        j        }|S rO   )r�   r    rg   )r@   Ú	verbositys     rB   rö   zTerminalReporter.verbosity�  s   € àœÔ+Ô3ˆ	ØÐrC   c                 ó   — | j         dk    S rÖ   )rö   ©r@   s    rB   Ú
showheaderzTerminalReporter.showheader•  s   € àŒ~ Ò"Ð"rC   c                 ó>   — t          | j        j        j        ¦  «        S rO   )rV   r�   r    rj   rø   s    rB   rj   zTerminalReporter.no_header™  s   € å�D”KÔ&Ô0Ñ1Ô1Ð1rC   c                 ó>   — t          | j        j        j        ¦  «        S rO   )rV   r�   r    rk   rø   s    rB   rk   zTerminalReporter.no_summary�  s   € å�D”KÔ&Ô1Ñ2Ô2Ð2rC   c                 ón   — | j         €(| j                             t          j        ¦  «        dk    S | j         S rÖ   )rÚ   r�   Úget_verbosityr   rŒ   rø   s    rB   Ú
showfspathzTerminalReporter.showfspath¡  s2   € àÔÐ#Ø”;×,Ò,­VÔ-HÑIÔIÈQÒNÐNØÔÐrC   Úvaluec                 ó   — || _         d S rO   )rÚ   )r@   rÿ   s     rB   rþ   zTerminalReporter.showfspath§  s   € à ˆÔÐÐrC   c                 óR   — | j                              t          j        ¦  «        dk    S rÖ   )r�   rý   r   rŒ   rø   s    rB   Úshowlongtestinfoz!TerminalReporter.showlongtestinfo«  s    € àŒ{×(Ò(­Ô)DÑEÔEÈÒIÐIrC   rµ   c                 óF   — dddœ                      ||¦  «        }|| j        v S )NÚxr¼   )r/   r-   )Úgetrn   )r@   rµ   s     rB   ÚhasoptzTerminalReporter.hasopt¯  s-   € Ø¨3Ð/Ð/×3Ò3°D¸$Ñ?Ô?ˆØ�tÔ'Ð'Ð'rC   rÈ   Ú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à   rz   Úwrite)r@   rÈ   Úresr  ÚfspathÚ	relfspaths         rB   Ú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Ð1rC   rª   ÚprefixÚextrac                 óÌ   — | j         |k    r:| j                             ¦   «          || _         | j                             |¦  «         |r | j        j        |fi |¤Ž d| _         d S d S )Néþÿÿÿ)rã   rà   rz   r  )r@   r  r  Úkwargss       rB   Ú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ÔÐÐð	$ð 	$rC   c                 óX   — | j         r"| j                             ¦   «          d | _         d S d S rO   )rã   rà   rz   rø   s    rB   Úensure_newlinezTerminalReporter.ensure_newlineÇ  s4   € ØÔð 	&ØŒH�MŠM‰OŒOˆOØ!%ˆDÔÐÐð	&ð 	&rC   Fé   ú
)r
  ÚmarginÚline_sepÚcontentr
  r  r  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  )r@   r  r
  r  r  r  r$  Úwrappeds           rB   Ú
wrap_writezTerminalReporter.wrap_writeÌ  s�   € ð !%¤Ô >ÐØ—-’-ÝŒMØÐ+Ñ+¨gÑ5ØÔ(¨6Ñ1Ø $Ø#(ð	ñ ô ñ
ô 
ˆð Ð/Ð0Ð0Ô1ˆØˆŒŒ�wÐ6Ð6 eÐ6¨vÐ6Ð6Ð6Ð6Ð6rC   )r
  c                ó0   —  | j         j        |fd|i|¤Ž d S )Nr
  )rà   r  )r@   r  r
  r  s       rB   r  zTerminalReporter.writeâ  s)   € ØˆŒŒ�wÐ6Ð6 eÐ6¨vÐ6Ð6Ð6Ð6Ð6rC   c                 ó8   — | j                              ¦   «          d S rO   )rà   r
  rø   s    rB   r
  zTerminalReporter.flushå  s   € ØŒ�ŠÑÔÐÐÐrC   rz   c                 ó    — t          |t          ¦  «        st          |d¬¦  «        }|                      ¦   «           | j        j        |fi |¤Ž d S )Nr²   )Úerrors)Ú
isinstancerT   r  rà   rz   )r@   rz   r  s      rB   r–   zTerminalReporter.write_lineè  sZ   € Ý˜$¥Ñ$Ô$ð 	/Ý�t IÐ.Ñ.Ô.ˆDØ×ÒÑÔÐØˆŒŒ�dÐ%Ð%˜fÐ%Ð%Ð%Ð%Ð%rC   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.
        ÚeraseFrI   r“   rª   úN)Úpoprà   rá   ÚlenrT   r  )r@   rz   r  r/  Ú
fill_countÚfills         rB   Ú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Ð4rC   ÚsepÚtitlerá   c                 óX   — |                       ¦   «           | j        j        |||fi |¤Ž d S rO   )r  rà   r6  )r@   r6  r7  rá   r  s        rB   Ú	write_sepzTerminalReporter.write_sep   s<   € ð 	×ÒÑÔÐØˆŒŒ�S˜% Ð5Ð5¨fÐ5Ð5Ð5Ð5Ð5rC   ú=Úkwc                 ó.   —  | j         j        ||fi |¤Ž d S rO   )rà   r6  )r@   r7  r6  r;  s       rB   ÚsectionzTerminalReporter.section
  s&   € ØˆŒŒ�S˜%Ð&Ð& 2Ð&Ð&Ð&Ð&Ð&rC   r™   c                 ó,   —  | j         j        |fi |¤Ž d S rO   )rà   rz   )r@   r™   r;  s      rB   rz   zTerminalReporter.line  s$   € ØˆŒŒ�cÐ Ð ˜RÐ Ð Ð Ð Ð rC   r]   Úitemsc                 ó¤   — || j         v}| j                              |g ¦  «                             |¦  «         |r|                      ¦   «          d S d S rO   )rÛ   Ú
setdefaultÚextendÚ_set_main_color)r@   r]   r?  Úset_main_colors       rB   Ú
_add_statszTerminalReporter._add_stats  s^   € Ø!¨¬Ð3ˆØŒ
×Ò˜h¨Ñ+Ô+×2Ò2°5Ñ9Ô9Ð9Øð 	#Ø× Ò Ñ"Ô"Ð"Ð"Ð"ð	#ð 	#rC   Úexcreprc                 ó€   — t          |¦  «                             d¦  «        D ]}|                      d|z   ¦  «         ŒdS )Nr  zINTERNALERROR> T)rT   r  r–   )r@   rF  rz   s      rB   Úpytest_internalerrorz%TerminalReporter.pytest_internalerror  sE   € Ý˜‘L”L×&Ò& tÑ,Ô,ð 	6ð 	6ˆDØ�OŠOÐ-°Ñ4Ñ5Ô5Ð5Ð5ØˆtrC   Úwarning_messagec                 ó–   — ddl m} |j        |j        f} ||¦  «        }t	          |||¬¦  «        }|                      d|g¦  «         d S )Nr   )Úwarning_record_to_str)rÉ   rÇ   rÈ   r1   )Ú_pytest.warningsrK  rÏ   ÚlinenorÆ   rE  )r@   rI  rÈ   rK  rÉ   rÇ   Úwarning_reports          rB   Úpytest_warning_recordedz(TerminalReporter.pytest_warning_recorded  sp   € ð
 	;Ð:Ð:Ð:Ð:Ð:à$Ô-¨Ô/EÐEˆ
Ø'Ð'¨Ñ8Ô8ˆå&Ø!¨7¸6ð
ñ 
ô 
ˆð 	�Š˜
 ^Ð$4Ñ5Ô5Ð5Ð5Ð5rC   Úpluginc                 ó`   — | j         j        j        rd|› �}|                      |¦  «         d S d S )NzPLUGIN registered: )r�   r    r¢   r–   )r@   rP  r™   s      rB   Úpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registered*  sC   € ØŒ;ÔÔ)ð 	!Ø0¨Ð0Ð0ˆCð �OŠO˜CÑ Ô Ð Ð Ð ð	!ð 	!rC   c                 ó2   — |                       d|¦  «         d S )Nr.   )rE  )r@   r?  s     rB   Úpytest_deselectedz"TerminalReporter.pytest_deselected2  s   € Ø�Š˜ eÑ,Ô,Ð,Ð,Ð,rC   Úlocationc                 óî   — | j         r: | j        |g|¢R Ž }|                      |d¦  «         |                      ¦   «          d S | j        r,|                      |d¦  «         |                      ¦   «          d S d S )Nrª   )r  Ú_locationliner  r
  rþ   r  )r@   rÈ   rU  rz   s       rB   Úpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstart5  s‹   € ð
 Ô ð 	Ø%�4Ô% fÐ8¨xÐ8Ð8Ð8ˆDØ×$Ò$ T¨2Ñ.Ô.Ð.Ø�JŠJ‰LŒLˆLˆLˆLØŒ_ð 	Ø×$Ò$ V¨RÑ0Ô0Ð0Ø�JŠJ‰LŒLˆLˆLˆLð	ð 	rC   r¹   c                 ó  — d| _         |}t          | j        j                             || j        ¬¦  «        Ž }|j        |j        |j        }}}t          |t          ¦  «        sd }n|\  }}|  
                    ||g¦  «         |s|sd S t          |d¦  «        }|€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                             t           j        ¦  «        dk    r | j        j        |fi |¤Ž �nÙ| j                             |j        ¦  «          | j        |j        g|j        ¢R Ž }
|sÖ | j        |
|fi |¤Ž |j        st          |d¦  «        r”t5          |¦  «        }| j                             t           j        ¦  «        d	k     r>| j        j        | j        j        z
  t;          d
¦  «        z
  dz
  }t=          d||¦  «        }nd|› d�}|r|�|                      |¦  «         | j         r|  !                    ¦   «          nÊ|  "                    ¦   «          | j                             d|j#        j$        j%        z  ¦  «         | j         r2| j                             |  &                    ¦   «         dz   d¬¦  «         n| j                             d¦  «          | j        j        |fi |¤Ž | j                             d|
z   ¦  «         d| _'        |  (                    ¦   «          d S )NT)r¹   r�   ÚnodeÚwasxfailÚgreenÚyellowÚredr   é   ú [100%]rI   z ({})z (ú)z[%s]r“   )Úcyanr  ))Ú
_tests_ranr\   r�   ÚhookrÄ   r]   r^   r_   r-  ÚtuplerE  Úhasattrr,   r+   r-   rý   r   rŒ   rà   r  rç   ÚaddrÈ   rW  rU  r  Ú_get_raw_skip_reasonrá   r$  r2  Ú_format_trimmedr(  ré   r  r  rZ  ÚgatewayÚidÚ!_get_progress_information_messagerã   r
  )r@   r¹   Úrepr  r]   r^   r_   r  Úrunning_xdistÚ	was_xfailrz   ÚreasonÚavailable_widthÚformatted_reasons                 rB   Úpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreportB  st  € ØˆŒØˆå ØŒ[Ô×6Ò6¸cÈ$Ì+Ð6ÑVÔVð
ˆð "%¤¨s¬z¸3¼8˜$�&ˆÝ˜$¥Ñ&Ô&ð 	 ØˆFˆFà‰LˆD�&Ø�Š˜ 3 %Ñ(Ô(Ð(Øð 	˜dð 	àˆFÝ  VÑ,Ô,ˆØˆ>Ý ¨
Ñ3Ô3ˆIØŒzð 	 )ð 	Ø! 4˜��Ø”ð  	ð Ø" DÐ)��Ø”ð Ø ˜��Ø”ð Ø" DÐ)��à�ØŒ;×$Ò$¥VÔ%@ÑAÔAÀQÒFÐFØˆDŒHŒN˜6Ð,Ð, VÐ,Ð,Ð,Ñ,àÔ+×/Ò/°´
Ñ;Ô;Ð;Ø%�4Ô% c¤jÐ@°3´<Ð@Ð@Ð@ˆDØ ð (Ø(�Ô(¨¨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øà×#Ò#Ñ%Ô%Ð%Ø”—’˜v¨¬Ô(8Ô(;Ñ;Ñ<Ô<Ð<ØÔ+ð (Ø”H—N’NØ×>Ò>Ñ@Ô@À3ÑFÈTð #ñ ô ð ð ð ”H—N’N 3Ñ'Ô'Ð'Ø�””˜tÐ.Ð. vÐ.Ð.Ð.Ø”—’˜s T™zÑ*Ô*Ð*Ø%'�Ô"Ø�
Š
‰ŒˆˆˆrC   c                 óX   — | j         €J ‚t          | j        ¦  «        | j         j        k    S rO   )rÙ   r2  rç   Útestscollectedrø   s    rB   Ú_is_last_itemzTerminalReporter._is_last_item†  s+   € àŒ}Ð(Ð(Ð(Ý�4Ô2Ñ3Ô3°t´}Ô7SÒSÐSrC   c                 ó$  — | j         sJ ‚| j                             t          j        ¦  «        dk    rÚ| j        rÕ| j        dk    r#| j         j        }t          d|› d|› d�¦  «        }nt          d¦  «        }| j         	                    |¦  «         | j
        r|                      ¦   «          d S |                      ¦   «         \  }}| j        }||z   dz   | j        k    }|r2|                      ¦   «         } | j        j        |dz   fi |d	i¤Ž d S d S d S d S )
Nr   rf   ú [ú/ú]r`  rI   r  T)rÙ   r�   rý   r   rŒ   ré   ru  r2  rç   rg  rv  r  Ú_get_main_colorÚ_width_of_current_linerâ   rl  rà   r  )	r@   rÈ   Ú	num_testsÚprogress_lengthÚ
main_colorÚ_r°   Ú	past_edger™   s	            rB   Úpytest_runtest_logfinishz)TerminalReporter.pytest_runtest_logfinish‹  sQ  € ØŒ}ÐÐÐàŒK×%Ò%¥fÔ&AÑBÔBÀaÒGÐGØÔ(ð Hð Ô'¨7Ò2Ð2Ø œMÔ8�	Ý"%Ð&C¨9Ð&CÐ&C°yÐ&CÐ&CÐ&CÑ"DÔ"D��å"% i¡.¤.�àÔ+×/Ò/°Ñ7Ô7Ð7àÔ!ð EØ×>Ò>Ñ@Ô@Ð@Ð@Ð@à $× 4Ò 4Ñ 6Ô 6‘�
˜AØÔ/�Ø Ñ/°!Ñ3°tÔ7IÒI�	Øð EØ×@Ò@ÑBÔB�CØ"�D”H”N 3¨¡:ÐDÐD°*¸dÐ1CÐDÐDÐDÐDÐDð' HÐGÐGÐGð"Eð ErC   c                 ó>  — | j         sJ ‚| j         j        }| j        dk    r[|rP| j        }dt	          t          |¦  «        ¦  «        › d�}d|› d�}|                     t	          |¦  «        |¦  «        S d|› d|› d�S |rdt	          | j        ¦  «        d	z  |z  d
›d�S dS )Nrf   z{:zd}rx  z/{}]z [ z / z ]éd   Ú3dz%]r`  )rÙ   ru  ré   rç   r2  rT   Úformat)r@   Ú	collectedr…   Úcounter_formatÚformat_strings        rB   rl  z2TerminalReporter._get_progress_information_message£  sÖ   € ØŒ}ÐÐÐØ”MÔ0ˆ	ØÔ# wÒ.Ð.Øð FØÔ:�Ø!?¥s­3¨y©>¬>Ñ':Ô':Ð!?Ð!?Ð!?�Ø ; ^Ð ;Ð ;Ð ;�Ø$×+Ò+­C°©M¬M¸9ÑEÔEÐEØ4˜Ð4Ð4 yÐ4Ð4Ð4Ð4àð àW�˜TÔ<Ñ=Ô=ÀÑCÀyÑPÐWÐWÐWÐWðð �9rC   c                 óØ   — |                       ¦   «         \  }}|                      ¦   «         }| j        }| j        j        |z
  dz
  } | j        |                     |¦  «        fddi|di¤Ž d S )NrI   r
  T)r{  rl  r|  rà   rá   r  Úrjust)r@   r‚   r€  r™   r°   r4  s         rB   r  z:TerminalReporter._write_progress_information_filling_space´  sw   € Ø×'Ò'Ñ)Ô)‰ˆˆqØ×4Ò4Ñ6Ô6ˆØÔ'ˆØŒxÔ! AÑ%¨Ñ)ˆØˆŒ
�3—9’9˜T‘?”?Ð@Ð@¨$Ð@°5¸$°-Ð@Ð@Ð@Ð@Ð@rC   c                 ó   — | j         j        S )z%Return the width of the current line.)rà   r$  rø   s    rB   r|  z'TerminalReporter._width_of_current_line»  s   € ð ŒxÔ-Ð-rC   c                 ó  — | j         rI| j        j        j        dk    r2|                      ddd¬¦  «         t          j        ¦   «         | _        d S d S | j        j        j        dk    r|                      ddd¬¦  «         d S d S )Nr   zcollecting ... T)r
  ÚboldrI   )rå   r�   r    rg   r  r   Útimerê   rø   s    rB   Úpytest_collectionz"TerminalReporter.pytest_collectionÀ  s‘   € ØŒ;ð 	AØŒ{Ô!Ô)¨QÒ.Ð.Ø—
’
Ð,°D¸t�
ÑDÔDÐDÝ28´+±-´-�Ô/Ð/Ð/ð /Ð.ð Œ[ÔÔ'¨1Ò,Ð,Ø�JŠJÐ(°¸4ˆJÑ@Ô@Ð@Ð@Ð@ð -Ð,rC   c                 ó  — |j         r|                      d|g¦  «         n|j        r|                      d|g¦  «         d„ |j        D ¦   «         }| xj        t          |¦  «        z  c_        | j        r|                      ¦   «          d S d S )Nr2   r-   c                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS ra   )r-  r#   ©Ú.0r  s     rB   ú
<listcomp>z9TerminalReporter.pytest_collectreport.<locals>.<listcomp>Í  s'   € ÐAÐAÐA�q­Z¸½4Ñ-@Ô-@ÐA�ÐAÐAÐArC   )r+   rE  r-   ÚresultrØ   r2  rå   Úreport_collect)r@   r¹   r?  s      rB   Ú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Ñ(ÐÔØŒ;ð 	"Ø×ÒÑ!Ô!Ð!Ð!Ð!ð	"ð 	"rC   r
   c                 ó  — | j         j        j        dk     rd S |s6t          j        ¦   «         }| j        �| j        |t          z
  k    rd S || _        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k    rd
nd	fz  z  }|r|d|z  z  }|r|d|z  z  }| j
        |k    r|d|z  z  }| j        r3|                      |dd¬¦  «         |r|                      d¦  «         d S d S |                      |¦  «         d S )Nr   r2   r-   r.   z
collected zcollecting z itemrI   rª   r¼   z / %d error%sz / %d deselectedz / %d skippedz / %d selectedT)rŽ  r/  r  )r�   r    rg   r   r�  rê   ÚREPORT_COLLECTING_RESOLUTIONr2  rÛ   r  rØ   rT   rå   r5  r  r–   )r@   r
   Útr,  r-   r.   Úselectedrz   s           rB   r—  zTerminalReporter.report_collectÒ  sÛ  € ØŒ;ÔÔ%¨Ò)Ð)ØˆFàð 	0å”‘”ˆAàÔ/Ð;ØÔ3°aÕ:VÑ6VÒVÐVà�Ø./ˆ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ñ	
ˆð ð 	KØ�O v°fÀ²k°k¨s¨sÀrÐ&JÑJÑJˆDØð 	4ØÐ&¨Ñ3Ñ3ˆDØð 	.Ø�O gÑ-Ñ-ˆDØÔ Ò(Ð(ØÐ$ xÑ/Ñ/ˆDØŒ;ð 	"Ø�LŠL˜ D°ˆLÑ5Ô5Ð5Øð !Ø—
’
˜4Ñ Ô Ð Ð Ð ð!ð !ð �OŠO˜DÑ!Ô!Ð!Ð!Ð!rC   Tr·   Ú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 )Nr:  ztest session startsT©rŽ  z	platform z -- Python Úpypy_version_infor»   é   z[pypy-ú-rz  z	, pytest-z	, pluggy-r   Úpastebinz -- )r�   Ú
start_path)rÙ   r   r�  Ú_sessionstarttimerù   r9  ÚplatformÚpython_versionrj   r�   rK   r”   r•   rT   rí   Ú_versionÚversionÚpluggyÚ__version__rö   r�   r    r¡   Ú
executabler–   rd  Úpytest_report_headerrÞ   Ú_write_report_lines_from_hooks)r@   r�  Úverinfor™   r   Úliness         rB   Úpytest_sessionstartz$TerminalReporter.pytest_sessionstart÷  s¨  € àˆŒÝ!'¤¡¤ˆÔØŒð 	Øˆ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ð 	7rC   r°  c                 ó´   — t          |¦  «        D ]G}t          |t          ¦  «        r|                      |¦  «         Œ-|D ]}|                      |¦  «         ŒŒHd S rO   )Úreversedr-  rT   r–   )r@   r°  Úline_or_linesrz   s       rB   r®  z/TerminalReporter._write_report_lines_from_hooks  ss   € õ & e™_œ_ð 	*ð 	*ˆMÝ˜-­Ñ-Ô-ð *Ø—’ Ñ.Ô.Ð.Ð.à)ð *ð *�DØ—O’O DÑ)Ô)Ð)Ð)ð*ð		*ð 	*rC   c                 ó  — d|j         › �g}|j        r0|                     dt          |j         |j        ¦  «        z   ¦  «         |j        t
          j        j        k    rP|                     d¦  «        }|                     d 	                    d 
                    |¦  «        ¦  «        ¦  «         |j                             ¦   «         }|r8|                     dd 
                    t          |¦  «        ¦  «        z  ¦  «         |S )Nz	rootdir: zconfigfile: Ú	testpathsztestpaths: {}ú, zplugins: %s)r  ÚinipathÚappendr&   Úargs_sourcer   Ú
ArgsSourceÚ	TESTPATHSró   r†  r”   rž   Úlist_plugin_distinfoÚ_plugin_nameversions)r@   r�   r–  r¶  Ú
plugininfos        rB   r­  z%TerminalReporter.pytest_report_header  sã   € Ø/˜fœoÐ/Ð/Ð0ˆàŒ>ð 	YØ�MŠM˜.­;°v´ÈÌÑ+WÔ+WÑWÑXÔXÐXàÔ¥Ô!2Ô!<Ò<Ð<Ø#)§=¢=°Ñ#=Ô#=ˆIØ�MŠM˜/×0Ò0°·²¸9Ñ1EÔ1EÑFÔFÑGÔGÐGàÔ)×>Ò>Ñ@Ô@ˆ
Øð 	WØ�MŠM˜-¨$¯)ª)Õ4HÈÑ4TÔ4TÑ*UÔ*UÑUÑVÔVÐVØˆrC   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¤  r?  Úcollectonlyéÿÿÿÿrª   r+   ú!zcollection failures)r—  r�   rd  Úpytest_report_collectionfinishrÞ   r?  r®  rò   r    rg   rà   rz   Ú_printcollecteditemsrÛ   r  r6  Ú
toterminal)r@   r�  r°  r+   rm  s        rB   Ú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Ñ,Ô,Ð,Ð,ð
	-ð 
	-ð-ð -ð-ð -rC   c           	      óÞ  — | j                              t          j        ¦  «        }|dk     rŒ|dk     r`t	          d„ |D ¦   «         ¦  «        }t          |                     ¦   «         ¦  «        D ]$\  }}| j                             d||fz  ¦  «         Œ%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	  rI   r   N)rÈ   r  )r”  Úitems     rB   ú	<genexpr>z8TerminalReporter._printcollecteditems.<locals>.<genexpr>E  s9   è è € Ð QÐ QÀ4 ¤×!2Ò!2°4¸Ñ!;Ô!;¸AÔ!>Ð QÐ QÐ QÐ QÐ QÐ QrC   z%s: %drª   rI   ú  Úobjz{}{})r�   rý   r   rŒ   r   Úsortedr?  rà   rz   rÈ   Ú	listchainr2  r1  r¹  rK   ÚinspectÚgetdocÚ
splitlinesr†  )r@   r?  Útest_cases_verbosityÚcountsÚnamerf   rË  ÚstackÚindentÚneeded_collectorsÚcolrÎ  Údocrz   s                 rB   rÅ  z%TerminalReporter._printcollecteditemsA  s1  € Ø#œ{×8Ò8½Ô9TÑUÔUÐØ !Ò#Ð#Ø# bÒ(Ð(Ý Ð QÐ QÈ5Ð QÑ QÔ QÑQÔQ�Ý#)¨&¯,ª,©.¬.Ñ#9Ô#9ð <ð <‘K�D˜%Ø”H—M’M (¨d°E¨]Ñ":Ñ;Ô;Ð;Ð;ð<ð "ð /ð /�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rC   )ÚwrapperÚ
exitstatus)NNNc              #   ó`  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à   rz   r    ÚOKÚTESTS_FAILEDÚINTERRUPTEDÚUSAGE_ERRORÚNO_TESTS_COLLECTEDrk   r�   rd  Úpytest_terminal_summaryÚ
shouldfailr9  rT   Ú_report_keyboardinterruptrì   Ú
shouldstopÚsummary_stats)r@   r�  rÝ  r–  Úsummary_exit_codess        rB   Ú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Ø×ÒÑÔÐØˆrC   c              #   óª  K  — |                       ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          |                      ¦   «          	 d V —|                      ¦   «          |                      ¦   «          S # |                      ¦   «          |                      ¦   «          w xY wrO   )Úsummary_errorsÚsummary_failuresÚsummary_xfailuresÚsummary_warningsÚsummary_passesÚsummary_xpassesÚshort_test_summaryrø   s    rB   rä  z(TerminalReporter.pytest_terminal_summaryz  sÒ   è è € à×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑ Ô Ð Ø×ÒÑÔÐØ×ÒÑÔÐØ×ÒÑÔÐð	$Ø�E�Eà×#Ò#Ñ%Ô%Ð%à×!Ò!Ñ#Ô#Ð#Ð#øð ×#Ò#Ñ%Ô%Ð%à×!Ò!Ñ#Ô#Ð#Ð#øøøs   Á<B( Â(*CÚexcinfoc                 ó<   — |                      d¬¦  «        | _        d S )NT)Úfuncargs)Úgetreprrì   )r@   ró  s     rB   Úpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interrupt‰  s   € Ø'.§¢À Ñ'EÔ'EˆÔ$Ð$Ð$rC   c                 ó@   — | j         �|                      ¦   «          d S d S rO   )rì   ræ  rø   s    rB   Úpytest_unconfigurez#TerminalReporter.pytest_unconfigureŒ  s+   € ØÔ'Ð3Ø×*Ò*Ñ,Ô,Ð,Ð,Ð,ð 4Ð3rC   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Ç   r9  r�   r    Ú	fulltracerÆ  rà   rz   )r@   rF  r™   s      rB   ræ  z*TerminalReporter._report_keyboardinterrupt�  sÉ   € ØÔ.ˆØÐ"Ð"Ð"ØÔ Ð,Ð,Ð,ØÔÔ'ˆØ�Š�s˜CÑ Ô Ð Ø #Ð%Ð%ØŒ{Ô!Ô+ð Ø×"Ò" 4¤8Ñ,Ô,Ð,Ð,Ð,àÔ!×,Ò,¨T¬XÑ6Ô6Ð6Ø”—’ØVØð ñ ô ð ð ð ð &Ð%rC   r  rM  Údomainc                 ó:  ‡ ‡— dt           dt           fˆˆ 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È   r;   c                 ó2  •— ‰j                              | ¦  «        }‰ry|                     ‰¦  «        rd|d t          ‰¦  «         …         }‰                     d¦  «        }|d                              dd¦  «        |d<   |d                     |¦  «        z  }|S )Nú[r   r»   r	  )r�   Úcwd_relative_nodeidÚendswithr2  r  r²   r”   )rÈ   rz   rF   rþ  r@   s      €€rB   Úmkrelz-TerminalReporter._locationline.<locals>.mkrel£  s’   ø€ Ø”;×2Ò2°6Ñ:Ô:ˆDØð )˜$Ÿ-š-¨Ñ/Ô/ð )Ø˜N�s 6™{œ{˜l˜NÔ+�ØŸš cÑ*Ô*�Ø" 1œI×-Ò-¨c°4Ñ8Ô8��q‘	Ø˜Ÿš Ñ(Ô(Ñ(�ØˆKrC   r_  r	  r   ú\z <- z
[location]r“   )	rT   rö   r  r²   r   ÚSEPr&   rÞ   r   )r@   rÈ   r  rM  rþ  r  r  s   `   `  rB   rW  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ÐrC   c                 ó   — |j         }|r|S dS )Nztest session)Ú	head_line)r@   rm  r  s      rB   Ú_getfailureheadlinez$TerminalReporter._getfailureheadline·  s   € Ø”Mˆ	Øð 	ØÐØˆ~rC   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ª   )rT   Úlongreprrü  ÚAttributeError)r@   rm  s     rB   Ú_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)rf  r“  s     rB   r•  z/TerminalReporter.getreports.<locals>.<listcomp>Ê  s'   € ÐSÐSÐS�a½7À1ÀkÑ;RÔ;RÐS�ÐSÐSÐSrC   ra   ©rÛ   r  )r@   rÖ  s     rB   Ú
getreportszTerminalReporter.getreportsÉ  s&   € ØSÐS˜4œ:Ÿ>š>¨$°Ñ3Ô3ÐSÑSÔSÐSrC   c                 ó˜  ‡ — ‰                       d¦  «        �r²‰ j                             d¦  «        }|sd S ‰ j        d u}|r|‰ j        d …         }n|}t	          |¦  «        ‰ _        |sd S i }|D ]0}|                     |j        g ¦  «                             |¦  «         Œ1dt          t                   dt          fˆ 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°   r1   Úreportsr;   c                 ó~  •— g }| D ]3}|                      ‰j        ¦  «        }|r|                     |¦  «         Œ4t          |¦  «        dk     r(d                     t          t          |¦  «        ¦  «        S t          d„ |D ¦   «         ¦  «        }d                     d„ |                     ¦   «         D ¦   «         ¦  «        S )Né
   r  c              3   óh   K  — | ]-}t          |¦  «                             d d¦  «        d         V — Œ.dS rÊ  )rT   r  )r”  Úlocs     rB   rÌ  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>é  sL   è è € ð -ð -Ø36•C˜‘H”H—N’N 4¨Ñ+Ô+¨AÔ.ð-ð -ð -ð -ð -ð -rC   c              3   óZ   K  — | ]&\  }}d                       |||dk    rdnd¦  «        V — Œ'dS )z{}: {} warning{}rI   r¼   rª   N)r†  )r”  ÚkÚvs      rB   rÌ  zWTerminalReporter.summary_warnings.<locals>.collapsed_location_report.<locals>.<genexpr>ì  sX   è è € ð !ð !á˜˜1ð '×-Ò-¨a°¸1¸qº5¸5°C°CÀbÑIÔIð!ð !ð !ð !ð !ð !rC   )	rÒ   r�   r¹  r2  r”   r•   rT   r   r?  )r  Ú	locationsr°   rU  Úcounts_by_filenamer@   s        €rB   Ú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Ñ :Ô :ð!ñ !ô !ñ ô ð rC   zwarnings summary (final)zwarnings summaryr:  TF)r]  rŽ  r  c              3   ó    K  — | ]	}d |z   V — Œ
dS )rÍ  Nra   r“  s     rB   rÌ  z4TerminalReporter.summary_warnings.<locals>.<genexpr>ø  s&   è è € Ð(AÐ(A°a¨°©Ð(AÐ(AÐ(AÐ(AÐ(AÐ(ArC   zG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)r  rÛ   r  rë   r2  rA  rÇ   r¹  r   rÆ   rT   r9  r?  rà   rz   rÓ  r”   Úrstrip)r@   Úall_warningsr
   Úwarning_reportsÚreports_grouped_by_messageÚwrr  r7  rÇ   Úmessage_reportsÚmaybe_locationr°  Úindenteds   `            rB   rï  z!TerminalReporter.summary_warningsÌ  s  ø€ Ø�;Š;�sÑÔñ 3	Ø:>¼*¿.º.ÈÑ:TÔ:Tˆ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ðµ4½Ô3Fð Í3ð ð ð ð ð ð ð$ 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	rC   c                 ó4   — |                       ddd¦  «         d S )Nr,   ÚPASSESÚP©Úsummary_passes_combinedrø   s    rB   rð  zTerminalReporter.summary_passes  s    € Ø×$Ò$ X¨x¸Ñ=Ô=Ð=Ð=Ð=rC   c                 ó4   — |                       ddd¦  «         d S )Nr0   ÚXPASSESÚXr,  rø   s    rB   rñ  z TerminalReporter.summary_xpasses  s    € Ø×$Ò$ Y°	¸3Ñ?Ô?Ð?Ð?Ð?rC   Ú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 )Nry   r:  r€  T)r\  rŽ  )r�   r    ru   r  r  r9  Úsectionsr	  Ú_outrep_summaryÚ_handle_teardown_sectionsrÈ   )r@   r1  r2  r3  r  rm  r™   s          rB   r-  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´:Ñ>Ô>Ð>Ð>ð .Ð-ð
?ð 
?ð
?ð ?rC   c                 óJ   ‡— |                       d¦  «        }ˆfd„|D ¦   «         S )Nrª   c                 ó@   •— g | ]}|j         d k    ¯|j        ‰k    ¯|‘ŒS )r¿   )rÂ   rÈ   )r”  r¹   rÈ   s     €rB   r•  z:TerminalReporter._get_teardown_reports.<locals>.<listcomp>  s<   ø€ ð 
ð 
ð 
àØŒ{˜jÒ(Ð(¨V¬]¸fÒ-DÐ-Dð à-DÐ-DÐ-DrC   )r  )r@   rÈ   r  s    ` rB   Ú_get_teardown_reportsz&TerminalReporter._get_teardown_reports  s?   ø€ Ø—/’/ "Ñ%Ô%ˆð
ð 
ð 
ð 
à!ð
ñ 
ô 
ð 	
rC   c                 ó`   — |                       |¦  «        D ]}|                      |¦  «         Œd S rO   )r:  Úprint_teardown_sections)r@   rÈ   r¹   s      rB   r7  z*TerminalReporter._handle_teardown_sections   s@   € Ø×0Ò0°Ñ8Ô8ð 	1ð 	1ˆFØ×(Ò(¨Ñ0Ô0Ð0Ð0ð	1ð 	1rC   rm  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 )Nry   r�   r¿   r¢  rÂ  r  )r�   r    r}   r5  rà   r6  rz   ©r@   rm  r}   Úsecnamer  s        rB   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Ñ&Ô&Ð&øð	'ð 	'rC   c                 ó2   — |                       dd¦  «         d S )Nr+   ÚFAILURES©Úsummary_failures_combinedrø   s    rB   rí  z!TerminalReporter.summary_failures1  s   € Ø×&Ò& x°Ñ<Ô<Ð<Ð<Ð<rC   c                 ó4   — |                       ddd¦  «         d S )Nr/   Ú	XFAILURESr  rB  rø   s    rB   rî  z"TerminalReporter.summary_xfailures4  s    € Ø×&Ò& y°+¸sÑCÔCÐCÐCÐCrC   c                 ó  — | j         j        j        dk    rî|r|                      |¦  «        rÙ|                      |¦  «        }|sd S |                      d|¦  «         | j         j        j        dk    r1|D ],}|                      |¦  «        }|                      |¦  «         Œ-d S |D ]c}|                      |¦  «        }|                      d|dd¬¦  «         |  	                    |¦  «         |  
                    |j        ¦  «         Œ`d S d S d S )Nry   r:  rz   r€  T©r^  rŽ  )r�   r    ru   r  r  r9  r  r–   r	  r6  r7  rÈ   )r@   r1  r2  r3  r  rm  rz   r™   s           rB   rC  z*TerminalReporter.summary_failures_combined7  sG  € ð Œ;ÔÔ%¨Ò-Ð-Øð C §¢¨ZÑ!8Ô!8ð CØ,0¯OªO¸MÑ,JÔ,J�Øð Ø�FØ—’˜s IÑ.Ô.Ð.Ø”;Ô%Ô-°Ò7Ð7Ø&ð .ð .˜Ø#×1Ò1°#Ñ6Ô6˜ØŸš¨Ñ-Ô-Ð-Ð-ð.ð .ð  'ð 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rC   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 )Nry   r2   r:  ÚERRORSr½   zERROR collecting z	ERROR at z of r€  TrG  )	r�   r    ru   r  r9  rÛ   r	  rÂ   r6  )r@   r  rm  r™   s       rB   rì  zTerminalReporter.summary_errorsK  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Ñ)Ô)Ð)Ð)ð .Ð-ð
*ð *rC   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 )Nry   r�   r¢  rÂ  r  )rÆ  rà   r�   r    r}   r5  r6  rz   r>  s        rB   r6  z TerminalReporter._outrep_summaryZ  s¸   € Ø�Š�t”xÑ Ô Ð Ø”kÔ(Ô4ˆØ˜$ÒÐØˆFØ #¤ð 	#ð 	#ÑˆG�WØ˜eÒ#Ð#¨¸7Ð(BÐ(BØØŒH�LŠL˜˜gÑ&Ô&Ð&Ø�r�s�sŒ|˜tÒ#Ð#Ø! # 2 #œ,�ØŒH�MŠM˜'Ñ"Ô"Ð"Ð"ð	#ð 	#rC   c                 ó
  — | j         dk     rd S t          j        ¦   «         | j        z
  }|                      ¦   «         \  }}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        |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éüÿÿÿr:  rá   ©rª   )rö   r   r�  r¥  Úbuild_summary_stats_linerà   rá   r  r2  r¹  r”   Úformat_session_durationr  r9  r–   )r@   Úsession_durationÚpartsr  Ú
line_partsÚdisplay_seprá   Útextr  Úwith_markupr™   Úmain_markupÚdurationÚduration_with_markupÚmarkup_for_end_seps                  rB   rè  zTerminalReporter.summary_statsg  sÿ  € ØŒ>˜BÒÐØˆFå!œ;™=œ=¨4Ô+AÑAÐØ"×;Ò;Ñ=Ô=Ñˆ�
Øˆ
à”n¨Ò)ˆØð 	+ØœÔ*ˆIØ!ð 	+ð 	+‰LˆD�&Ø)˜$œ(œ/¨$Ð9Ð9°&Ð9Ð9ˆKØð :Ø�S Ñ-Ô-µ°D±	´	Ñ9Ñ9�	Ø×Ò˜kÑ*Ô*Ð*Ð*Ø�iŠi˜
Ñ#Ô#ˆà! 4Ð(ˆØEÕ1Ð2BÑCÔCÐEÐEˆØ.˜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Ð/Ð/ ;Ð/Ð/Ð/Ð/Ð/rC   c           	      ó.  ‡ — ‰ j         sd S dt          t                   dt          dd fˆ fd„}dt          t                   dd fˆ fd„}dt          t                   dd fˆ fd„}dt          t                   dd fˆ fd„}||t          |d¬	¦  «        |t          |d
¬	¦  «        t          |d¬	¦  «        dœ}g }‰ j         D ]$}|                     |¦  «        }|r ||¦  «         Œ%|r3‰                      dddd¬¦  «         |D ]}	‰                      |	¦  «         Œd S d S )Nr°  Ústatr;   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�   rm  r‚   rz   r@   s          €rB   Úshow_simplez8TerminalReporter.short_test_summary.<locals>.show_simple�  s�   ø€ Ø”Z—^’^ D¨"Ñ-Ô-ˆFØð Ø�Ø”[ˆFØð #ð #�Ý'×+Ò+¨DÕ2IÑJÔJ�Ý7Ø˜C ¤¨E°4¨=ñô �ð —’˜TÑ"Ô"Ð"Ð"ð#ð #rC   c                 óf  •— ‰j                              dg ¦  «        }|D ]‘}|                     ‰j        ¦  «        } ‰j        j        |fi t          d         di¤Ž}t          ‰j        ‰j        |¦  «        }|› d|› �}|j        }|r|dt          |¦  «        z   z  }|  
                    |¦  «         Œ’d S )Nr/   r1   Tr“   ú - ©rÛ   r  Ú_get_verbose_wordr�   rà   r  r]  Ú_get_node_id_with_markupr[  rT   r¹  )	r°  r/   rm  Úverbose_wordÚmarkup_wordrÈ   rz   rp  r@   s	           €rB   Úshow_xfailedz9TerminalReporter.short_test_summary.<locals>.show_xfailedœ  sØ   ø€ Ø”j—n’n Y°Ñ3Ô3ˆGØð #ð #�Ø"×4Ò4°T´[ÑAÔA�Ø-˜dœhœoØ ðð Ý%4°ZÔ%@À$Ð$Gðð �õ 2°$´(¸D¼KÈÑMÔM�Ø%Ð0Ð0¨Ð0Ð0�Øœ�Øð 0Ø˜E¥C¨¡K¤KÑ/Ñ/�Dà—’˜TÑ"Ô"Ð"Ð"ð#ð #rC   c                 óf  •— ‰j                              dg ¦  «        }|D ]‘}|                     ‰j        ¦  «        } ‰j        j        |fi t          d         di¤Ž}t          ‰j        ‰j        |¦  «        }|› d|› �}|j        }|r|dt          |¦  «        z   z  }|  
                    |¦  «         Œ’d S )Nr0   r1   Tr“   rb  rc  )	r°  r0   rm  rf  rg  rÈ   rz   rp  r@   s	           €rB   Úshow_xpassedz9TerminalReporter.short_test_summary.<locals>.show_xpassed«  sØ   ø€ Ø”j—n’n Y°Ñ3Ô3ˆGØð 
#ð 
#�Ø"×4Ò4°T´[ÑAÔA�Ø-˜dœhœoØ ðð Ý%4°ZÔ%@À$Ð$Gðð �õ 2°$´(¸D¼KÈÑMÔM�Ø%Ð0Ð0¨Ð0Ð0�Øœ�Øð 0Ø˜E¥C¨¡K¤KÑ/Ñ/�DØ—’˜TÑ"Ô"Ð"Ð"ð
#ð 
#rC   c           	      óà  •— ‰
j                              dg ¦  «        }|rt          ‰
j        |¦  «        ng }|sd S |d                              ‰
j        ¦  «        } ‰
j        j        |fi t          d         di¤Ž}d}|D ]o\  }}}}	|	 	                    |¦  «        r|	t          |¦  «        d …         }	|�|                      d|||||	fz  ¦  «         ŒS|                      d||||	fz  ¦  «         Œpd S )Nr-   r   r1   Tú	Skipped: z%s [%d] %s:%d: %sz%s [%d] %s: %s)rÛ   r  Ú_folded_skipsrÞ   rd  r�   rà   r  r]  Ú
startswithr2  r¹  )r°  r-   Úfskipsrf  rg  r  Únumr  rM  rp  r@   s             €rB   Úshow_skippedz9TerminalReporter.short_test_summary.<locals>.show_skipped¹  s:  ø€ Ø+/¬:¯>ª>¸)ÀRÑ+HÔ+HˆGØ?FÐN•] 4¤>°7Ñ;Ô;Ð;ÈBˆFØð Ø�Ø" 1œ:×7Ò7¸¼ÑDÔDˆLØ)˜$œ(œ/Øðð Ý!0°Ô!<¸dÐ Cðð ˆKð !ˆFØ/5ð Xð XÑ+��V˜V VØ×$Ò$ VÑ,Ô,ð 3Ø#¥C¨¡K¤K M MÔ2�FØÐ%Ø—L’LØ+¨{¸CÀÈÐQWÐ.XÑXñô ð ð ð —L’LÐ!1°[À#ÀvÈvÐ4VÑ!VÑWÔWÐWÐWðXð XrC   r+   )r[  r,   r2   )r  r0  Úfr¼   ÚprÀ   r:  zshort test summary infoT)rb  rŽ  )rn   r   rT   r   r  r9  r–   )
r@   r`  rh  rj  rq  ÚREPORTCHAR_ACTIONSr°  rµ   rh   rz   s
   `         rB   rò  z#TerminalReporter.short_test_summaryŒ  sÉ  ø€ ØÔð 	ØˆFð
	#�t¥Cœyð 
	#µ3ð 
	#¸4ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð 
	#ð	#¥¥S¤	ð 	#¨dð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	#¥¥S¤	ð 	#¨dð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð	X¥¥S¤	ð 	X¨dð 	Xð 	Xð 	Xð 	Xð 	Xð 	Xð* ØÝ˜¨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Øð &ð &�Ø—’ Ñ%Ô%Ð%Ð%ð	&ð 	&ð&ð &rC   c                 ó”   — | j         �| j        �| j        r&|                      ¦   «          | j         sJ ‚| j        sJ ‚| j         | j        fS rO   )rÜ   rÝ   rv  rC  rø   s    rB   r{  z TerminalReporter._get_main_colorá  s\   € ØÔÐ# tÔ'8Ð'@ÀDÔDVÐ'@Ø× Ò Ñ"Ô"Ð"ØÔ#Ð#Ð#Ð#ØÔ$Ð$Ð$Ð$ØÔ Ô!2Ð2Ð2rC   Ú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+   r2   r^  r1   r0   r]  r,   r\  )rÛ   rv  )r@   rv  rÛ   r  s       rB   Ú_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ØÐrC   c                 óì   — g }| j         D ]&}|r"|t          vr||vr|                     |¦  «         Œ't          t          ¦  «        |z   | _        |                      t          |¦  «        ¦  «        | _        d S rO   )rÛ   ÚKNOWN_TYPESr¹  ÚlistrÝ   rx  rV   rÜ   )r@   Úunknown_typesÚ
found_types      rB   rC  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ˆÔÐÐrC   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    rB   rN  z)TerminalReporter.build_summary_stats_lineý  s@   € ð( Œ;× Ò  Ñ/Ô/ð 	;Ø×>Ò>Ñ@Ô@Ð@à×8Ò8Ñ:Ô:Ð:rC   Úkeyc                 ó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)rK   r“  s     rB   r•  z<TerminalReporter._get_reports_to_display.<locals>.<listcomp>  s*   € ÐPÐPÐP�a¥g¨aÐ1HÈ$Ñ&OÔ&OÐP�ÐPÐPÐPrC   r  )r@   r�  r  s      rB   Ú_get_reports_to_displayz(TerminalReporter._get_reports_to_display  s+   € à”*—.’.  bÑ)Ô)ˆØPÐP˜7ÐPÑPÔPÐPrC   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„  r2  r]  r  r^  r¹  Ú	pluralize)	r@   r  Úknown_typesrQ  r�  r  rf   r‚   r  s	            rB   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Ð Ð rC   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.   r2   r   zno tests collectedr]  Tr\  z%d %s collectedÚtestzno tests collected (z deselected)ry  z tests collected (r†  )r2  r„  rØ   r‡  r]  )r@   r.   r,  rQ  r  Úcollected_outputÚall_tests_were_deselectedrœ  s           rB   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Ð Ð rC   rO   rM  )r;   N)NN)r:  )F)r�  r*   r;   N)frP   rQ   rR   r   r   r   r?   r   rè   Úpropertyrˆ   rö   rV   rù   rj   rk   rþ   Úsetterr  rT   r  r  r  r  r(  r  r
  r   Úbytesr–   r5  r9  r=  rz   r   r   rE  r   rH  r1   ÚWarningMessagerO  r   rR  r#   rT  r   rX  r)   rs  rv  r‚  rl  r  r|  r�  r(   r˜  r—  r!   r±  r®  r   r­  rÇ  rÅ  r    r   rê  rä  r   ÚBaseExceptionr÷  rù  ræ  rW  r	  r  r  rï  rð  rñ  r-  r:  r7  r<  rí  rî  rC  rì  r'   r6  rè  rò  r{  rx  rC  r	   rN  r„  r€  r  ra   rC   rB   rœ   rœ   _  sZ  € € € € € ðEð E˜vð E¨X°fÔ-=ð EÈð Eð Eð Eð Eð4¨wÐ7QÔ/Rð ð ð ð ð* ð˜3ð ð ð ñ „Xðð ð#˜Dð #ð #ð #ñ „Xð#ð ð2˜4ð 2ð 2ð 2ñ „Xð2ð ð3˜Dð 3ð 3ð 3ñ „Xð3ð ð ˜Dð  ð  ð  ñ „Xð ð
 Ôð! ¨¤ð !°4ð !ð !ð !ñ Ôð!ð ðJ $ð Jð Jð Jñ „XðJð(˜3ð ( 4ð (ð (ð (ð (ð	2¨#ð 	2¸dð 	2Àtð 	2ð 	2ð 	2ð 	2ð$ð $¨#ð $°cð $ÈTð $ð $ð $ð $ð&ð &ð &ð &ð ØØð7ð 7ð 7àð7ð ð	7ð
 ð7ð ð7ð ð7ð 
ð7ð 7ð 7ð 7ð, 49ð 7ð 7ð 7˜Sð 7¨Dð 7ÀDð 7ÈTð 7ð 7ð 7ð 7ðð ð ð ð&˜u S¨% ZÔ0ð &¸Dð &ÀTð &ð &ð &ð &ð5˜Cð 5¨4ð 5°Dð 5ð 5ð 5ð 5ð*  $Ø#'ð	6ð 6àð6ð ˜Œ}ð6ð ˜C”=ð	6ð
 ð6ð 
ð6ð 6ð 6ð 6ð'ð '˜Sð ' sð '¸ð 'Àð 'ð 'ð 'ð 'ð!˜ð ! 4ð !¨Dð !ð !ð !ð !ð# 3ð #¨x¸¬}ð #Àð #ð #ð #ð #ð¨Mð ¸dð ð ð ð ð
6à!Ô0ð6ð ð6ð 
ð	6ð 6ð 6ð 6ð!¨}ð !Àð !ð !ð !ð !ð- x°¤~ð -¸$ð -ð -ð -ð -ðØðØ%*¨3°¸´¸sÐ+BÔ%Cðà	ðð ð ð ðB¨zð B¸dð Bð Bð Bð BðH ðT˜tð Tð Tð Tñ „XðTðE¨sð E°tð Eð Eð Eð Eð0°3ð ð ð ð ð"Að Að Að Að ð.¨ð .ð .ð .ñ „Xð.ðAð Að Að Að"¨=ð "¸Tð "ð "ð "ð "ð#"ð #" Dð #"°Tð #"ð #"ð #"ð #"ðJ €X�dÐÑÔð7ð 7ð 7ñ Ôð7ð4*Ø˜e C¨°#¬Ð$6Ô7Ô8ð*à	ð*ð *ð *ð *ð¨6ð °d¸3´ið ð ð ð ð-ð -ð -ð -ð,N¨(°4¬.ð N¸Tð Nð Nð Nð Nð< €X�dÐÑÔðØ ðØ.3°C¸°MÔ.Bðà	Ð#Ô	$ðð ð ñ Ôðð4 €X�dÐÑÔð$¨Ð3CÔ)Dð $ð $ð $ñ Ôð$ðF°¸}Ô1Mð FÐRVð Fð Fð Fð Fð-ð -ð -ð -ðð ð ð ð ØðØ#&ðØ08¸´ðØGJðà	ðð ð ð ð.ð ð ðð ð ðT˜sð Tð Tð Tð Tð4ð 4ð 4ð 4ðl>ð >ð >ð >ð@ð @ð @ð @ð?Ø ð?Ø-0ð?Ø>Að?à	ð?ð ?ð ?ð ?ð 
¨Cð 
°D¸Ô4Dð 
ð 
ð 
ð 
ð1°ð 1¸ð 1ð 1ð 1ð 1ð'¨:ð '¸$ð 'ð 'ð 'ð 'ð=ð =ð =ð =ðDð Dð Dð Dð OSðCð CØ ðCØ-0ðCØ>FÀs¼mðCà	ðCð Cð Cð Cð(*ð *ð *ð *ð# :ð #°$ð #ð #ð #ð #ð#0ð #0ð #0ð #0ðJS&ð S&ð S&ð S&ðj3  s¨D°¬I ~Ô!6ð 3ð 3ð 3ð 3ð
°tð 
Àð 
ð 
ð 
ð 
ðKð Kð Kð Kð;¨%°°U¸3ÀÀSÈ$ÀYÄÐ;OÔ5PÔ0QÐSVÐ0VÔ*Wð ;ð ;ð ;ð ;ð2Q¨3ð Q°4¸´9ð Qð Qð Qð Qð
!à	ˆt�E˜#˜t C¨ IœÐ.Ô/Ô0°#Ð5Ô	6ð!ð !ð !ð !ð&!à	ˆt�E˜#˜t C¨ IœÐ.Ô/Ô0°#Ð5Ô	6ð!ð !ð !ð !ð !ð !rC   rœ   Útwrm  c                 óÐ   — |                      |j        ¦  «        }|                     d¦  «        ^}}|r2|                      d                     |¦  «        d¬¦  «        }|dz   |z   S |S )Nr	  TrŸ  )r  rÈ   r  r  r”   )r’  r�   rm  rÈ   ÚpathrQ  Úparts_markups          rB   re  re  O  si   € Ø×'Ò'¨¬
Ñ3Ô3€FØ—<’< Ñ%Ô%€L€Dˆ5Øð Ø—y’y §¢¨5Ñ!1Ô!1¸�yÑ=Ô=ˆØ�d‰{˜\Ñ)Ð)àˆrC   r†  r™   rq  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.
    r  rÂ  Nz...rª   )Úfindr   r†  r2  )r†  r™   rq  ÚiÚellipsisÚformat_widths         rB   ri  ri  Y  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‰ˆà�=Š=˜ÑÔÐrC   Úword_markupc                 ól  — |                      | ¦  «        } |j        |fi |¤Ž}t          || |¦  «        }|› d|› �}t          |¦  «        }	 |j        j        j        }	t          ¦   «         s| j        j	        dk    r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_  rb  z - {})rd  r  re  r   r  rü  rÇ   r   r    rg   rá   ri  r  )r�   rm  r’  r›  rf  r_   rZ  rz   Ú
line_widthr™   rq  s              rB   r_  r_  r  sñ   € ð ×(Ò(¨Ñ0Ô0€LØˆ2Œ9�\Ð1Ð1 [Ð1Ð1€DÝ# B¨°Ñ4Ô4€DàÐÐ�TÐÐ€DÝ˜$‘”€JðàŒlÔ$Ô,ˆõ ‰?Œ?ð 	A˜fœmÔ3°qÒ8Ð8Ø˜�+�+ˆCˆCà œl¨ZÑ7ˆOÝ! '¨3°Ñ@Ô@ˆCØˆ?Ø�C‰KˆDøøõ ð ð ð Øˆðøøøð €Ks   ÁB$ Â$
B1Â0B1rÞ   r-   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)r  r-  re  r2  r&   r   rK   rÂ   rA  r¹  r?  )rÞ   r-   ÚdÚeventr  rM  rp  rŸ  r�  rF   Úeventss              rB   rm  rm  Ž  s\  € ð DF€AØð ,ð ,ˆØŒ~Ð)Ð)Ð)Ý˜%œ.­%Ñ0Ô0ÐIÐI°5¸%¼.Ð2IÑIÔIÐIÝ�5”>Ñ"Ô" aÒ'Ð'Ð'¨%°´Ð)@Ñ'Ô'Ð'Ø!&¤Ñˆ�˜å˜Y­¨V©¬Ñ5Ô5ˆÝ˜5 *¨bÑ1Ô1ˆð
 ŒJ˜'Ò!Ð!Ø˜(Ð"Ð"Ø HÐ,Ð,à39¸4ÀÐ2HˆCˆCà˜6 6Ð*ˆCØ	�Š�S˜"ÑÔ×$Ò$ UÑ+Ô+Ð+Ð+Ø8:€FØ—w’w‘y”yð +ð +‰ˆˆVØ�Š•s˜6‘{”{Ð) SÐ)Ð)Ñ*Ô*Ð*Ð*Ø€MrC   r^  r]  r\  )r+   r2   r1   r,   rf   Únounc                 ó\   — |dvr| |fS |                      dd¦  «        }| | dk    r|dz   n|fS )N)r2   r1   rŠ  r1   ÚwarningrI   r¼   )r²   )rf   r¥  s     rB   r‡  r‡  ¶  sH   € àÐ0Ð0Ð0Ø�dˆ{Ðð
 �<Š<˜
 IÑ.Ô.€Dà ¨¢
 
�$˜‘*�*°Ð4Ð4rC   c                 ó¬   — g }| D ]N\  }}|j         › d|j        › �}|                     d¦  «        r
|dd …         }||vr|                     |¦  «         ŒO|S )Nr¢  zpytest-é   )Úproject_namer©  rn  r¹  )r¿  rF   rP  ÚdistrÖ  s        rB   r¾  r¾  Ã  sv   € Ø€FØ"ð  ð  ‰ˆ�àÔ#Ð4Ð4 d¤lÐ4Ð4ˆà�?Š?˜9Ñ%Ô%ð 	Ø˜˜˜”8ˆDà�vÐÐØ�MŠM˜$ÑÔÐøØ€MrC   Úsecondsc                 ó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.é<   z.2fr¼   )r¬  zs (ra  )ÚdatetimeÚ	timedeltarˆ   )r¬  Údts     rB   rO  rO  Ñ  sP   € à�‚|€|ØÐ Ð Ð Ð Ð åÔ­¨G©¬Ð5Ñ5Ô5ˆØÐ'Ð'Ð' "Ð'Ð'Ð'Ð'rC   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.
    r[  zreason: Nrl  ÚSkippedrª   )rf  r[  rn  r2  r-   r-  r  re  )r¹   rp  r€  s      rB   rh  rh  Ú  sÆ   € õ
 ˆv�zÑ"Ô"ð Ø”ˆØ×Ò˜ZÑ(Ô(ð 	/Ø�C 
™OœOÐ-Ð-Ô.ˆFØˆàŒ~ÐÐÐÝ˜&œ/­5Ñ1Ô1Ð1Ð1Ð1Ø”‰ˆˆ1ˆfØ×Ò˜[Ñ)Ô)ð 	Ø�C Ñ,Ô,Ð.Ð.Ô/ˆFˆFØ�yÒ Ð ØˆFØˆrC   )^rS   rW   Úcollectionsr   Údataclassesr¯  Ú	functoolsr   rÑ  Úpathlibr   r¦  r�   r%  Útypingr   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r1   rª  rí   r   r   Ú_pytest._coder   Ú_pytest._code.coder   Ú_pytest._ior   Ú_pytest._io.wcwidthr   Ú_pytest._versionÚ_pytest.assertion.utilr   r×   r   r   r    r!   Ú_pytest.config.argparsingr"   Ú_pytest.nodesr#   r$   Ú_pytest.pathlibr%   r&   Ú_pytest.reportsr'   r(   r)   Ú_pytest.mainr*   rš  rz  r‰   ÚActionr5   r\   rŽ   r¦   rT   r¶   rÄ   Ú	dataclassrÆ   rœ   re  rˆ   ri  rV   r_  rm  r]  r^  r‡  r¾  ÚfloatrO  rh  ra   rC   rB   ú<module>rÇ     s•  ððð ð
 €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø Ð Ð Ð Ð Ð Ø €€€Ø 
€
€
€
Ø €€€Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø €€€à €€€à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø &Ð &Ð &Ð &Ð &Ð &Ø (Ð (Ð (Ð (Ð (Ð (Ø Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø (Ð (Ð (Ð (Ð (Ð (Ø !Ð !Ð !Ð !Ð !Ð !Ø #Ð #Ð #Ð #Ð #Ð #Ø #Ð #Ð #Ð #Ð #Ð #Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø &Ð &Ð &Ð &Ð &Ð &Ø )Ð )Ð )Ð )Ð )Ð )Ø &Ð &Ð &Ð &Ð &Ð &ð ð %Ø$Ð$Ð$Ð$Ð$Ð$ð  #Ð ð	€ð Ð ð"=ð "=ð "=ð "=ð "=�h”oñ "=ô "=ð "=ðJ5ð 5ð 5ð 5ð 5˜ñ 5ô 5ð 5ð(A˜Vð A¨ð Að Að Að AðH	B˜Vð 	B¨ð 	Bð 	Bð 	Bð 	Bð˜ð  Cð ð ð ð ð2 
€�$ÐÑÔð, Zð ,°E¸#¸sÀC¸-Ô4Hð ,ð ,ð ,ñ Ôð,ð Ôðð ð ð ð ñ ô ñ Ôðð8 ðl!ð l!ð l!ð l!ð l!ñ l!ô l!ñ „ðl!ð^ ð ¸ð Àjð ð ð ð ð˜Cð  cð ¸Cð ÀHÈSÄMð ð ð ð ð2ØðØ#ðØ)7ðØFJÈ3ÐPTÈ9Äoðàðð ð ð ð8Øðà�mÔ$ðð 
ˆ%��S˜( 3œ-¨Ð,Ô
-Ô.ðð ð ð ð@ ØØØð	ð €ð #Ð ð
5�Sð 
5 ð 
5¨¨c°3¨h¬ð 
5ð 
5ð 
5ð 
5ð¨¨S¬	ð ð ð ð ð( Uð (¨sð (ð (ð (ð (ð ð °ð ð ð ð ð ð rC   