bg dZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddl mZddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddl Z ddl!Z"ddl"m#Z#ddl"m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ddl1m2Z2ddl1m3Z3dd l1m4Z4dd!l1m5Z5dd"l6m7Z7dd#l8m9Z9dd$l8m:Z:dd%l;mm?Z?dd(l>m@Z@dd)l>mAZAer dd*lBmCZCdd+lDmEZEd,ZFd-ZGd.ZHGd/d0ejIZJGd1d2eZKd3e7d4dfd5ZLd6e3d4dfd7ZMd6e3d4eNfd8ZOe5d9:d;e?d4eeNeNeNffd<ZPejQGd=d>ZRe0Gd?d@ZSdAe*d6e3dBe?fdCZTdDeNdEeNdFeUd4eeNfdGZVd6e3dBe?dAe*dHeeNeWfd4eNf dIZXdJedKee@d4eeeUeNeeUeNffdLZYdMdMdNdOdPZZdNZ[dQeUdReNd4eeUeNffdSZ\d4eeNfdTZ]dUe^d4eNfdVZ_d;eAd4eNfdWZ`dS)XzsTerminal reporting of the full testing process. This is a good source for looking at the various reporting hooks. N)Counter)partial)Path)Any)Callable)cast)ClassVar)Dict) Generator)List)Mapping) NamedTuple)Optional)Sequence)Set)TextIO)Tuple) TYPE_CHECKING)Union)nodes)timing) ExceptionInfo) ExceptionRepr)TerminalWriter)wcswidth) running_on_ci)final) _PluggyPlugin)Config)ExitCode)hookimpl)Parser)Item)Node) absolutepath) bestrelpath) BaseReport) CollectReport) TestReport)Literal)Sessiong?)failedpassedskipped deselectedxfailedxpassedwarningserrorfEc eZdZdZ ddeededededeed df fd Z dd e j d e j d e eeedfdeed df dZxZS)MoreQuietActionzA 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. NFoption_stringsdestdefaultrequiredhelpreturncVt||d|||dS)Nr)r7r8nargsr9r:r;)super__init__)selfr7r8r9r:r; __class__s a/builddir/build/BUILD/cloudlinux-venv-1.0.7/venv/lib/python3.11/site-packages/_pytest/terminal.pyr@zMoreQuietAction.__init__VsB )      parser namespacevalues option_stringct||jddz }t||j|t|dddz|_dS)Nrquiet)getattrr8setattrrK)rArErFrGrH new_counts rC__call__zMoreQuietAction.__call__gsLIty!44q8  49i000!)Wa881< rD)NFNN)__name__ __module__ __qualname____doc__rstrobjectboolrr@argparseArgumentParser NamespacerrO __classcell__)rBs@rCr6r6Os"           sm         ,(, = =' =% =c8F+T12 =  } =  = = = = = = = =rDr6cbeZdZUdZeed<eed<eeeeeee fffed<dS)TestShortLogReportuGUsed 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. categoryletterwordN) rQrRrSrTrU__annotations__rrr rWrDrCr]r]tsY  MMM KKK U3T 2233 444444rDr]rEr<c ||ddd}|ddddd d |d d ddd |dd ddd |ddtdd d |dd tdd|dddtdd|d d!dd"d d#$|d%d&d d'dd()|d*d+d'd,-|d.d/dd0d1gd2d34|d5dd6gd7d8d9:|d;d|d?d@dd@d1gdAdB4|dCdDdDdEgdFG|dHdIdJKdS)LNzterminal reporting Reportinggeneral)afterz-vz --verbosecountrverbosezIncrease verbosity)actionr9r8r;z --no-header store_trueF no_headerzDisable headerz --no-summary no_summaryzDisable summaryz-qz--quietzDecrease verbosityz --verbosityzSet verbosity. Default: 0.)r8typer9r;z-rstore reportcharscharsaShow 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').)rir8r9metavarr;z--disable-warningsz--disable-pytest-warningsdisable_warningszDisable warnings summary)r9r8rir;z-lz --showlocals showlocalsz/Show locals in tracebacks (disabled by default))rir8r9r;z--no-showlocals store_falsezFHide locals in tracebacks (negate --showlocals passed through addopts))rir8r;z--tbstyletbstyleauto)rwlongshortnolinenativez5Traceback print mode (auto/long/short/line/native/no))rqrir8r9choicesr;z--show-capture showcapture)rzstdoutstderrlogallrzOControls how captured stdout/stderr/log is shown on failed tests. Default: all.)rir8r}r9r;z --fulltracez --full-tracez,Don't cut any tracebacks (default is to cut))rir9r;z--colorcolor)yesrzrwz#Color terminal output (yes/no/auto)z--code-highlightrrzzSWhether code should be highlighted (only if --color is also enabled). Default: yes.)r9r}r;console_output_stylezConsole output: "classic", or with additional progress information ("progress" (percentage) | "count" | "progress-even-when-capture-no" (forces progress even when capture=no)progress)r;r9)getgroup _addoptionr6int_REPORTCHARS_DEFAULTaddini)rEgroups rCpytest_addoptionrs OO0+YO O OE    !             !     )    $>     #  '     >    U    AAA D  888   ;   %%% 2    MM) rDconfigct|tj|jd|jjs |jjr'fd}|jj d|dSdS)Nterminalreportercdtt|}d|zdS)N z[traceconfig] )joinmaprU write_line)tagsargsmsgreporters rCmywriterz"pytest_configure..mywriter s<((3sD>>**C    03 6 7 7 7 7 7rDz pytest:config) TerminalReportersysr pluginmanagerregisteroptiondebug traceconfigtraceroot setprocessor)rrrs @rCpytest_configurers 33H !!(,>??? }Bfm7B 8 8 8 8 8  &&AAAAA BBrDc$|jj}ddh}d}|D]>}||vr|}|dkrd}#|dkrd},|dkrd}5||vr||z }?|jjs d |vrd |z}n&|jjrd |vr|d d}|S) NFSasxXEfAPpsxXEfNw)rrolowerrrreplace)rro old_aliases reportoptschars rC getreportoptrs}0K*KJ   ;  ::<G {6667h;N;N FGMMOO ++rDceZdZUdZeed<dZeeed<dZee ee fed<dZ e ed<de d eefd ZdS) WarningReportaoSimple 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``). messageNnodeid fslocationTcount_towards_summaryrr<c|jr|jS|jr8|j\}}t|jjt |}|d|SdS)zSReturn the more user-friendly information about the location of a warning, or None.:N)rrr&invocation_paramsdirr%)rArfilenamelinenumrelpaths rC get_locationzWarningReport.get_locationKs` ; ;  ? * $ Hg!&":"> X@V@VWWG)))) )trD)rQrRrSrTrUrarrrrrrr rrrbrDrCrr9sLLL FHSM   ,0JsCx)000&*8***6hsmrDrc eZdZdxdedeeddfdZdydZede fdZ ede fd Z ede fd Z ede fd Zede fd Zejd ee ddfdZede fdZdede fdZdede ddfdZdzdededdfdZd{dZdddddede d e d!ede ddf d"Zdd#dede de ddfd$Zd{d%Zd&eeefde ddfd'Zd&ede ddfd(Z d|d)ed*eed+ee de ddf d,Zd}d*ed)ed.e ddfd/Zd0ed.e ddfd1Z d2ed3e!e"ddfd4Z#d5e$de fd6Z%d7e&j'deddfd8Z(d9e)ddfd:Z*d3e!e+ddfd;Z,dede/ddfd?Z0ede fd@Z1deddfdAZ2defdBZ3d{dCZ4ede fdDZ5d{dEZ6d>e7ddfdFZ8d~dGe ddfdHZ9e:dIJddMZ;dNe!eee!efddfdOZddQZ?d3e!e+ddfdRZ@e:dISdKdLdTee eAffdUZBe:dISdeCdVfdWZDdXeEeFddfdYZGd{dZZHd{d[ZIded\ed]ee d^edef d_ZJd`ZKdaZLdbefdcZMd{ddZNd{deZOdede=e/fdfZPdeddfdgZQdhe/ddfdiZRd{djZSd{dkZTdheUddfdlZVd{dmZWd{dnZXde-ee=effdoZYdpe defdqZZd{drZ[de-e=e-ee\ee ffeffdsZ]dtede=e"fduZ^de-e=e-ee\ee ffeffdvZ_de-e=e-ee\ee ffeffdwZ`dS)rNrfiler<cddl}||_d|_d|_d|_i|_d|_d|_|jj |_ | tj }|j |||_|jj|_d|_t%||_|jj|_||_t-|_||_d|_d|_d|_dSNr)_pytest.configr _numcollected_session _showfspathstats _main_color _known_typesrr startpathrrcreate_terminal_writer_tw fullwidth _screen_width currentfspathrro hasmarkupisattyset_progress_nodeids_reported_determine_show_progress_info_show_progress_info_collect_report_last_write_already_displayed_warnings_keyboardinterrupt_memo)rArr_pytests rCr@zTerminalReporter.__init__Xs +/ +/+- *.1515 <:D>88FF!X/:>'//+kkmm 47EE'#'#E#E#G#G ;?':>(@D$$$rD#Literal['progress', 'count', False]c|jdddkr |jddkrdS|jddrdS|jd}|dks|dkrdS|dkrdSdS) zRReturn whether we should display progress information based on the current config.capturerzrzprogress-even-when-capture-noF setupshowrrg)r getoptiongetini)rAcfgs rCrz.TerminalReporter._determine_show_progress_infors K ! !)T 2 2d : : ""#9::.//5 ; e 4 4 5;%%&<== *  'F F F: G^^75rDc(|jjj}|SrP)rrrh)rA verbositys rCrzTerminalReporter.verbositys+3 rDc|jdkSrrrAs rC showheaderzTerminalReporter.showheaders~""rDc>t|jjjSrP)rWrrrkrs rCrkzTerminalReporter.no_headersDK&0111rDc>t|jjjSrP)rWrrrlrs rCrlzTerminalReporter.no_summarysDK&1222rDc4|j |jdkS|jSr)rrrs rC showfspathzTerminalReporter.showfspaths!   #>Q& &rDvaluec||_dSrP)r)rArs rCrzTerminalReporter.showfspaths rDc|jdkSrrrs rCshowlongtestinfoz!TerminalReporter.showlongtestinfos~!!rDrcFddd||}||jvS)Nxr)r0r.)getro)rArs rChasoptzTerminalReporter.hasopts-3//33D$??t'''rDrmarkupc |jj|ddz }|j ||jkrt|j|jr|||_t |j|}|j |j |dz|jj |fddi|dS)N::rrflushT) rrootpathsplitrr)_write_progress_information_filling_spacer&rrr{write)rArresrfspath relfspaths rCwrite_fspath_resultz$TerminalReporter.write_fspath_results% T(:(:1(==   %43E)E)E!-$2J->>@@@!'D #DNF;;I HMMOOO HNN9s? + + +s11$1&11111rDrprefixextrac |j|kr:|j||_|j||r|jj|fi|d|_dSdS)N)rrr{r )rArrkwargss rCwrite_ensure_prefixz$TerminalReporter.write_ensure_prefixsw   ' ' HMMOOO!'D  HNN6 " " "  $ DHN5 + +F + + +!#D    $ $rDcX|jr"|jd|_dSdSrP)rrr{rs rCensure_newlinezTerminalReporter.ensure_newlines4   & HMMOOO!%D    & &rDF )r marginline_sepcontentr rrc |jj}|tjd|z|z|j|z dd}||d}|jj|fd|i|dS)z+Wrap message with margin for progress info.rTF)widthdrop_whitespacereplace_whitespaceNr )rwidth_of_current_linertextwrapwraprr )rArr rrrr#wrappeds rC wrap_writezTerminalReporter.wrap_writes!% >-- M++g5(61 $#(      /001w66e6v66666rD)r c 0|jj|fd|i|dS)Nr )rr )rArr rs rCr zTerminalReporter.writes)w66e6v66666rDc8|jdSrP)rr rs rCr zTerminalReporter.flushs rDr{c t|tst|d}||jj|fi|dS)Nr)errors) isinstancerUrrr{)rAr{rs rCrzTerminalReporter.write_linesZ$$$ /tI...D  d%%f%%%%%rDc |dd}|r%|jjt|z dz }d|z}nd}t |}|jjd|z|zfi|dS)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. eraseFrJrr N)poprrlenrUr )rAr{rr. fill_countfills rCrewritezTerminalReporter.rewrites 7E**  +c$ii7!;J#DDD4yytd{T)44V44444rDseptitlerc X||jj|||fi|dSrP)rrr5)rAr5r6rrs rC write_sepzTerminalReporter.write_seps<  S%55f55555rD=kwc .|jj||fi|dSrP)rr5)rAr6r5r:s rCsectionzTerminalReporter.sections& S%&&2&&&&&rDrc ,|jj|fi|dSrP)rr{)rArr:s rCr{zTerminalReporter.lines$ c  R     rDr^itemsc||jv}|j|g||r|dSdSrP)r setdefaultextend_set_main_color)rAr^r>set_main_colors rC _add_statszTerminalReporter._add_statss^!3 h++225999  #  " " " " " # #rDexcreprct|dD]}|d|zdS)NrzINTERNALERROR> T)rUr r)rArEr{s rCpytest_internalerrorz%TerminalReporter.pytest_internalerror sELL&&t,, 6 6D OO-4 5 5 5 5trDwarning_messagecddlm}|j|jf}||}t |||}|d|gdS)Nr)warning_record_to_str)rrrr2)_pytest.warningsrJrlinenorrD)rArHrrJrrwarning_reports rCpytest_warning_recordedz(TerminalReporter.pytest_warning_recordedsp ;:::::$-/EE ''88&!76     ^$455555rDpluginc`|jjjrd|}||dSdS)NzPLUGIN registered: )rrrr)rArOrs rCpytest_plugin_registeredz)TerminalReporter.pytest_plugin_registered!sC ;  ) !000C OOC  ! !rDc2|d|dS)Nr/)rD)rAr>s rCpytest_deselectedz"TerminalReporter.pytest_deselected)s  e,,,,,rDlocationc|jr:|j|g|R}||d|dS|jr,||d|dSdS)Nr)r _locationlinerr rr)rArrTr{s rCpytest_runtest_logstartz(TerminalReporter.pytest_runtest_logstart,s   %4%f8x888D  $ $T2 . . . JJLLLLL _   $ $VR 0 0 0 JJLLLLL  rDrcd|_|}t|jj||j}|j|j|j}}}t|tsd}n|\}}| ||g|s|sdSt|d}|Ft|d} |j r| sddi}n(|j r| rddi}n|j rddi}n|jrddi}ni}|jdkr|jj|fi|n|j|j|j|jg|jR} |s|j| |fi||jst|drt1|} |jjjd kr>|jj|jjz t;d z d z } t=d | | } nd | d} | r| || |j r|!n|"|jd|j#j$j%z|j r2|j|&dzdn|jd|jj|fi||jd| zd|_'|(dS)NT)rrnodewasxfailgreenyellowredr [100%]rJz ({})z ()z[%s]r)cyanr)) _tests_ranr]rhookrr^r_r`r,tuplerDhasattrr-r,r.rrr raddrrVrTr_get_raw_skip_reasonrrhrr#r1_format_trimmedr'rr rrYgatewayid!_get_progress_information_messagerr )rArreprr^r_r`r running_xdist was_xfailr{reasonavailable_widthformatted_reasons rCpytest_runtest_logreportz)TerminalReporter.pytest_runtest_logreport9sW [  6 6c$+ 6 V V "%sz38$&$&& FFLD& 3%((( d  FV,, > 33Iz ) !4   "D)  "D) >Q   DHN6 , ,V , , , ,  + / / ; ; ;%4%cj@3<@@@D  (((t>>v>>>;:'&*"="=:1#66F{)1A55!X/$(2PP!)nn- ( ,;#V_,,((,:>>>(:"2">(8999+EBBDDD##%%%v(8(;;<<<+(HNN>>@@3FT#HNN3'''t..v...sTz***%'" rDcX|jJt|j|jjkSrP)rr1rtestscollectedrs rC _is_last_itemzTerminalReporter._is_last_item}s+}(((4233t}7SSSrDc|jsJ|jdkr|jr|jdkr#|jj}t d|d|d}nt d}|j||jr|dS| \}}|j }||zdz|j k}|r2| }|j j|dzfi|d idSdSdSdS) Nrrg [/]r_rJrT)rrrrtr1rrfrur _get_main_color_width_of_current_linerrkrr ) rAr num_testsprogress_length main_color_r past_edgers rCpytest_runtest_logfinishz)TerminalReporter.pytest_runtest_logfinishs8}} >Q  4#; '722 M8 "%&C9&C&Cy&C&C&C"D"D"%i..  + / / 7 7 7! E>>@@@@@ $ 4 4 6 6 A//!3t7II E@@BBC"DHN3:DD*d1CDDDDD#    EErDcZ|jsJ|jj}|jdkr[|rP|j}dt t |d}d|d}|t ||Sd|d|dS|r-d t |jd z|zSd S) Nrgz{:zd}rwz/{}]z [ z / z ]z [{:3d}%]dr_)rrtrrr1rUformat)rA collectedrcounter_format format_strings rCrkz2TerminalReporter._get_progress_information_messages}}M0  #w . . F:!?s3y>>':':!?!?!? ;^ ; ; ; $++CMM9EEE444y444 4 "))7883>)K9rDc|\}}|}|j}|jj|z dz }|j||fddi|didS)NrJr T)rzrkr{rrr rjust)rArrrrr3s rCr z:TerminalReporter._write_progress_information_filling_spacesw''))q4466  'x!A%) 399T??@@$@5$-@@@@@rDc|jjS)z%Return the width of the current line.)rr#rs rCr{z'TerminalReporter._width_of_current_linesx--rDc|jrI|jjjdkr2|dddt j|_dSdS|jjjdkr|ddddSdS)Nrzcollecting ... T)r boldrJ)rrrrhr rtimerrs rCpytest_collectionz"TerminalReporter.pytest_collections ; A{!)Q.. ,Dt DDD28+--////.[  '1 , , JJ(4J @ @ @ @ @- ,rDc|jr|d|gn|jr|d|gd|jD}|xjt |z c_|jr|dSdS)Nr3r.c<g|]}t|t|Srb)r,r#.0rs rC z9TerminalReporter.pytest_collectreport..s'AAAqZ4-@-@AAAArD)r,rDr.resultrr1rreport_collect)rArr>s rCpytest_collectreportz%TerminalReporter.pytest_collectreports = 1 OOGfX . . . . ^ 1 OOIx 0 0 0AAFMAAA c%jj( ; "    ! ! ! ! ! " "rDrc|jjjdkrdS|s6tj}|j|j|t z krdS||_t|j dg}t|j dg}t|j dg}|j |z }|rdnd}|t|j dz|j dkrd nd zz }|r|d ||dkrd nd fzz }|r|d |zz }|r|d |zz }|j |kr|d|zz }|j r3| |dd|r|ddSdS||dS)Nrr3r.r/z collected z collecting z itemrJrrz / %d error%sz / %d deselectedz / %d skippedz / %d selectedT)rr.r)rrrhrrrREPORT_COLLECTING_RESOLUTIONr1rrrrUrr4r r)rArtr+r.r/selectedr{s rCrzTerminalReporter.report_collects ;  % ) ) F 0 A/;3a:V6VVV./D +TZ^^GR0011djnnY3344 b99:: % 2$7||- " # #g -t7IQ7N7NTW X   K Ovfkkssr&JJ JD  4 &3 3D  . Og- -D   ( ( $x/ /D ; " LLDL 5 5 5 ! 4      ! ! OOD ! ! ! ! !rDTrsessionr+cR||_tj|_|jsdS|dddt j}|jsKdtjd|}ttdd}|rBd tt|dd }|d |d |d d z }|d tjjt$jz }|jdks,|jjjst|jjddr|dttjzz }|||jj|j|j}||dSdS)Nr9ztest session startsTrz platform z -- Python pypy_version_inforz[pypy--ryz, pytest-{}, pluggy-{}rpastebinz -- )r start_path)rrr_sessionstarttimerr8platformpython_versionrkrrLrrrUrr_versionversionpluggy __version__rrrr executablerrcpytest_report_headerr_write_report_lines_from_hooks)rArverinforrliness rCpytest_sessionstartz$TerminalReporter.pytest_sessionstarts !'  F s1===)++~ 7@cl@@w@@C '-@$ G G   B((3s,=bqb,A#B#BCCAAA*;A*>AAAA +22 (&*< C"";%+#4;-z4@@#vCN 3 333 OOC K$99{t~:E  / / 6 6 6 6 6' 7 7rDrct|D]G}t|tr||-|D]}||HdSrP)reversedr,rUr)rAr line_or_linesr{s rCrz/TerminalReporter._write_report_lines_from_hooksss&e__ * *M--- * ....)**DOOD))))*  * *rDcd|jg}|jr0|dt|j|jz|jt jjkrP|d}|d d ||j }|r8|dd t|z|S)Nz rootdir: z configfile: testpathsz testpaths: {}, z plugins: %s)r inipathappendr& args_sourcer ArgsSource TESTPATHSrrrrlist_plugin_distinfo_plugin_nameversions)rArrr plugininfos rCrz%TerminalReporter.pytest_report_headers/fo//0 > Y MM.;v+W+WW X X X  !2!< < <#)==#=#=I MM/0091E1EFF G G G)>>@@  W MM-$))4H4T4T*U*UU V V V rDcD|d|jj|j|j|j}|||jdr|jrI|jjj dkr|j d| |j|j d}|r<|j dd|D] }||j dSdSdS) NT)rrr> collectonlyrr,!zcollection failures)rrrcpytest_report_collectionfinishrr>rrrrhrr{_printcollecteditemsrrr5 toterminal)rArrr,rls rCpytest_collection_finishz)TerminalReporter.pytest_collection_finish!s0 D!!!  ??;~-@   ++E222 ;  / / -} 9;%-22HMM"%%%))'-888Z^^H--F - S"7888!--CNN48,,,, - - - ---rDc |jjjdkr|jjjdkr`td|D}t |D]$\}}|jd||fz%n$|D]!}|j|j"dSg}d}|D]=}| dd}|r2||dt|krn| |2|t|dD]} | | t|dz dz}|j|| |jjjdkrst| dd} | rtj| nd} | rH| D]3} |jd |dz| 4Ӑ?dS) Nrrc3XK|]%}|jdddV&dSrrJrN)rr )ritems rC z8TerminalReporter._printcollecteditems..:s9 Q Q4!2!24!;!;A!> Q Q Q Q Q QrDz%s: %drrJ objz{}{})rrrhrsortedr>rr{r listchainr1r0rrLinspectgetdoc splitlinesr) rAr>countsnamergrstackindentneeded_collectorscolrdocr{s rCrz%TerminalReporter._printcollecteditems7s0 ;  % ) ){!)B.. Q Q5 Q Q QQQ#)&,,..#9#9<'.---$CN$'NN$4$4NND HMM&-- t*L*LMMMM N  N NrD) hookwrapper exitstatusc#KdV}||jdtjtjtjtjtjf}||vr.|j s'|j j |||j |j r*|dt|j d|tjkr|d|_n1|jr*|dt|jd|dS)Nr)rrrrT)r]) get_resultrr{r OK TESTS_FAILED INTERRUPTED USAGE_ERRORNO_TESTS_COLLECTEDrlrrcpytest_terminal_summary shouldfailr8rU_report_keyboardinterruptr shouldstop summary_stats)rArrrsummary_exit_codess rCpytest_sessionfinishz%TerminalReporter.pytest_sessionfinishTs?%%  b K  !    '   + + +DO + K  4 4!%*T[ 5      C NN3G$6 7 7TN B B B - - -  * * , , ,+/D ( (   C NN3G$6 7 7TN B B B rD)NNNc#K||||dV||dSrP)summary_errorssummary_failuressummary_warningssummary_passesshort_test_summaryrs rCrz(TerminalReporter.pytest_terminal_summaryos      !!! rDexcinfoc<|d|_dS)NT)funcargs)getreprr)rArs rCpytest_keyboard_interruptz*TerminalReporter.pytest_keyboard_interruptzs'.'E'E$$$rDc@|j|dSdSrP)rrrs rCpytest_unconfigurez#TerminalReporter.pytest_unconfigure}s+  ' 3  * * , , , , , 4 3rDcN|j}|J|jJ|jj}|d|d|vrj|jjjr||jdS|j|j|j dddSdS)NrKeyboardInterruptz@(to show a full traceback on KeyboardInterrupt use --full-trace)T)r\) r reprcrashrr8rr fulltracerrr{)rArErs rCrz*TerminalReporter._report_keyboardinterrupts.""" ,,,' sC   # % %{!+ ""48,,,,,!,,TX666 V & %rDrrLdomainc:dtdtffd }|r|||}jdkre|dd|dtjkr(|dt jt|zz }nd }|d zS) Nrr<c2j|}ry|rd|dt }d}|ddd|d<|d|z }|S)N[rrr)rcwd_relative_nodeidendswithr1r rr)rr{rGrrAs rCmkrelz-TerminalReporter._locationline..mkrels;226::D )$--// )Ns6{{lN+c**"1I--c488q (((KrDr^rr\z <- z [location]r) rUrr rrSEPr&rr)rArrrLrrrs` ` rCrVzTerminalReporter._locationlines # #         %--C~""v||D'9'9!'<eiAA((v DNDLL I IIICSyrDc|j}|r|SdS)Nz test session) head_line)rArlrs rC_getfailureheadlinez$TerminalReporter._getfailureheadlinesM   ~rDc t|jjS#t$r2 t|jddcYS#t$rYYdSwxYwwxYw)N2r)rUlongreprrAttributeError)rArls rC _getcrashlinezTerminalReporter._getcrashlines} s|-.. .    3<(("----!   rrr  s, AAA AAAArcLd|j|dDS)Nc2g|]}t|d|S) _pdbshown)rers rCrz/TerminalReporter.getreports..s'SSSa71k;R;RSSSSrDrbrr)rArs rC getreportszTerminalReporter.getreportss&SS4:>>$33SSSSrDcdrjd}|sdSjdu}|r|jd}n|}t |_|sdSi}|D]0}||jg|1dttdtffd }|rdnd} d|d d | D]\}} || } | rbj | |} d d | D} | }n|}j |j j ddSdS)Nrr2reportsr<c~g}|D]3}|j}|r||4t|dkr(dt t |Std|D}dd|DS)N rc3hK|]-}t|dddV.dSr)rUr )rlocs rCrzWTerminalReporter.summary_warnings..collapsed_location_report..sL--36CHHNN4++A.------rDc3ZK|]&\}}d|||dkrdndV'dS)z{}: {} warning{}rJrrN)r)rkvs rCrzWTerminalReporter.summary_warnings..collapsed_location_report..sX!!1'--a1q55CCbII!!!!!!rD) rrrr1rrrUrr>)r locationsrrTcounts_by_filenamerAs rCcollapsed_location_reportzDTerminalReporter.summary_warnings..collapsed_location_reports  33A ~~dk::H3!((222y>>B&&99Si%8%8999%,--:C---&&"yy!! 2 8 8 : :!!!rDzwarnings summary (final)zwarnings summaryr9TF)r\rrc3 K|] }d|zV dS)rNrbrs rCrz4TerminalReporter.summary_warnings..s&(A(Aa(A(A(A(A(A(ArDzG-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html)rrrrr1r@rrr rrUr8r>rr{rrrstrip) rA all_warningsrwarning_reportsreports_grouped_by_messagewrrr6rmessage_reportsmaybe_locationrindenteds ` rCrz!TerminalReporter.summary_warningss ;;s  3 :>*..:T:TL 4D@E /".t/O/Q/Q"R"./2?/C/CD ," IK &% Q Q*55bj"EELLRPPPP 4 3F 3      $38O..=OE NN3dN ? ? ?,F,L,L,N,N (!:!:?!K!K!/HMM.111#..00E#yy(A(A5(A(A(AAAH&oo//GG%nn..G g&&&  HMMY     c3 3 rDc|jjjdkr|dr|d}|sdS|dd|D]j}|jrC||}|d|dd||| |j gdSdSdS) NrzPr-r9PASSESrT)r[r) rrrvrrr8sectionsr_outrep_summary_handle_teardown_sectionsrrArrlrs rCrzTerminalReporter.summary_passess ;  % - -{{3 ?,0OOH,E,EFsH---"??C|2"66s;;sCt$GGG,,S111223:>>>> . - ? ? ??rDcJ|d}fd|DS)Nrc@g|]}|jdk |jk|S)r)rr)rrrs rCrz:TerminalReporter._get_teardown_reports..s<   {j((V]f-D-D -D-D-DrD)r)rArrs ` rC_get_teardown_reportsz&TerminalReporter._get_teardown_reportss?//"%%    !    rDc`||D]}||dSrP)r.print_teardown_sections)rArrs rCr*z*TerminalReporter._handle_teardown_sections s@0088 1 1F  ( ( 0 0 0 0 1 1rDrlc |jjj}|dkrdS|jD]a\}}|dkr||vrd|vrM|jd||dddkr |dd}|j|bdS)Nrzrrrrr)rrr~r(rr5r{rArlr~secnamers rCr0z(TerminalReporter.print_teardown_sections sk(4 $   F #  ' ' GWe## 7(B(BW$$ S'***233<4''%crclG g&&& ' 'rDc|jjjdkr|d}|sdS|dd|jjjdkr1|D],}||}||-dS|D]a}||}|d|dd||| |j `dSdS) Nrzr,r9FAILURESr{rTr]r) rrrvrr8r rrr)r*r)rArrlr{rs rCrz!TerminalReporter.summary_failuress ;  % - -(,(A(AG  NN3 + + +{!)V33"**C--c22DOOD))))**#??C22377CNN3DNAAA((---223:>>>> . -??rDct|jjjdkr|d}|sdS|dd|jdD]e}||}|jdkrd|z}n d|jd|}|d |d d ||ddSdS) Nrzr3r9ERRORSrzERROR collecting z ERROR at z of rTr6) rrrvrr8rrrr)r+s rCrzTerminalReporter.summary_errors+s ;  % - -(,(@(@G  NN3 ) ) )z'* * *..s338y((-3CC9ch99C99CsCT===$$S)))) . -  * *rDc6||j|jjj}|dkrdS|jD]]\}}|dkr||vr|jd||dddkr |dd}|j|^dS)Nrzrrrr)rrrrr~r(r5r{r2s rCr)z TerminalReporter._outrep_summary:s tx   k(4 $   F #  # # GWe## 7(B(B HLLg & & &rss|t##!#2#, HMM' " " " "  # #rDc |jdkrdStj|jz }|\}}g}|jdk}|r |jj}|D]Q\}}|jj|fi|} |r"|t| t|z z }| | Rd |} |di} dt|} |jj| fi| } |r"|t| t| z z }| | z } |rH|jjd i| }| dr |dd}|t|z }| |z } |r|j d | fd |i| dS|j| fi| dS) NrrrTz in rzr9rr)rrrrbuild_summary_stats_linerrrr1rrformat_session_durationrr8r)rAsession_durationpartsr~ line_parts display_seprtextr with_markupr main_markupdurationduration_with_markupmarkup_for_end_seps rCrzTerminalReporter.summary_statsGs >B   F!;==4+AA";;==  n)  +*I! + +LD&)$(/$99&99K :S--D 99   k * * * *ii ##!4( E12BCCEE.txxGG;GG  C 122S]]B BI ##  &!0!C!C{!C!C !**955 =%7%<" /00 0I % %C  0 DN3 H Hy HK H H H H H DOC / /; / / / / /rDc .jsdSdttdtddffd }dttddffd }dttddffd }dttddffd }||t|d |t|d t|d d }g}jD]$}||}|r ||%|r3d ddd|D]} | dSdS)Nrstatr<cj|g}|sdSj}|D]P}t|t}t ||j|di}||QdS)NT)rrr_color_for_type_color_for_type_default _get_line_with_reprcrash_messagerr)rrJr,rrlrr{rAs rC show_simplez8TerminalReporter.short_test_summary..show_simplepsZ^^D"--F [F # #'++D2IJJ7CE4= T""""  # #rDcfjdg}|D]}|j}jj|fit ddi}tjj|}|d|}|j}|r|dt|zz }| |dS)Nr0r2Tr - ) rr_get_verbose_wordrrrrL_get_node_id_with_markuprZrUr) rr0rl verbose_word markup_wordrr{rorAs rC show_xfailedz9TerminalReporter.short_test_summary..show_xfailed|sjnnY33G # #"44T[AA -dho %4Z%@$$G 2$(DKMM%00000ECKK//D T"""" # #rDc:jdg}|D]{}|j}jj|fit ddi}tjj|}|j}| |d|d||dS)Nr1r2Tr) rrrRrrrrLrSrZr)rr1rlrTrUrrorAs rC show_xpassedz9TerminalReporter.short_test_summary..show_xpassedsjnnY33G A A"44T[AA -dho %4Z%@$$G 2$(DKMM ??f??v??@@@@ A ArDc  jdg}|rt j|ng}|sdS|d j} jj|fitddi}d}|D]o\}}}} | |r| t|d} || d||||| fzS| d|||| fzpdS)Nr.rr2T Skipped: z%s [%d] %s:%d: %sz%s [%d] %s: %s) rr _folded_skipsrrRrrrrL startswithr1r) rr.fskipsrTrUrnumrrLrorAs rC show_skippedz9TerminalReporter.short_test_summary..show_skippeds:+/:>>)R+H+HG?FN]4>7;;;BF "1:77 DDL)$(/!0!>@@ @88:: :rDkeycP|j|g}d|DS)zRGet test/collection reports for the given status key, such as `passed` or `error`.c4g|]}t|dd|S)rT)rLrs rCrz.s*PPPaga1H$&O&OPPPPrDr)rArqrs rC_get_reports_to_displayz(TerminalReporter._get_reports_to_displays+*..b))PP7PPPPrDcR|\}}g}|D]z}||}|rat|}t|t }|dd||ki}|dt||z|f{|s dt difg}||fS)NTr%d %sz no tests ran)rzrtr1rLrrMr pluralize) rAr~ known_typesr@rqrrgrrs rCrpz1TerminalReporter._build_normal_summary_stats_lines#'"6"6"8"8 K H HC22377G HG '++C1HIIvu /BC g %(=(==vFGGG H$'>&EFGEj  rDct|d}t|d}|jdkr dddifg}d}na|dkr"d}dt|jd z}||difg}n9|j|k}|r d}d |d }nd}|j|z }|d |jd |d }||difg}|r(td}|dt|dz|difgz }||fS)Nr/r3rzno tests collectedr\Tr[z%d %s collectedtestzno tests collected (z deselected)rxz tests collected (rv)r1rtrrwrL)rAr/r+r@r~collected_outputall_tests_were_deselectedrs rCroz7TerminalReporter._build_collect_only_summary_stats_line sW55lCCDD T11'::;;   " "*Xt,<=>E!JJ 1__ J09T=OQW3X3XX &T(:;) rr.deventrrLrorrqrGeventss rCr[r[ks\DFA,,~)))%.%00II5%.2III05>""a'''%)@'''!&YV 555*b11 J' ! !(""H,,3942HCC66*C S"$$U++++8:Fwwyy++ V s6{{)S))**** MrDr]r\r[)r,r3r2r-rgnounc\|dvr||fS|dd}||dkr|dzn|fS)N)r3r2rzr2warningrJr)r)rgrs rCrwrwsH 000d{ << I . .D  $** 44rDcg}|D]S\}}d|}|dr |dd}||vr||T|S)Nz"{dist.project_name}-{dist.version})distzpytest-)rr\r)rrGrOrrs rCrrstF"  3:::EE ??9 % % 8D v   MM$    MrDsecondscp|dkr|ddStjt|}|dd|dS)zQFormat the given seconds in a human readable manner to show in the final summary.<z.2fr)rzs (r`)datetime timedeltar)rdts rCr>r>sP||      G 5 5 5'''"''''rDct|drHtt|j}|dr|t dd}|S|jsJt|jtsJ|j\}}}|dr|t dd}n|dkrd}|S)zqGet the reason string of a skip/xfail/xpass test report. The string is just the part given by the user. rZzreason: NrZSkippedr) rerrUrZr\r1r.r,rrd)rrors rCrgrgs vz"" c6?++   Z ( ( /C OO--.F ~~&/511111 1f   [ ) ) C ,,../FF y F rD)arTrX dataclassesrrrrr$r2 collectionsr functoolsrpathlibrtypingrrrr r r r r rrrrrrrrr_pytest._versionrrr _pytest._coder_pytest._code.coder _pytest._ior_pytest._io.wcwidthr_pytest.assertion.utilr_pytest.compatrrrrr r!_pytest.config.argparsingr" _pytest.nodesr#r$_pytest.pathlibr%r&_pytest.reportsr'r(r)typing_extensionsr* _pytest.mainr+rrjrActionr6r]rrrUrr dataclassrrrSrrhrWrNr[rLrMrwrfloatr>rgrbrDrCrs   '''''',,,,,,&&&&&&((((((000000 ((((((!!!!!!############,,,,,,((((((''''''&&&&&&))))))&&&&&&%))))))$$$$$$ #  "="="="="=ho"="="=J55555555(yVyyyyyx BV B B B B BC2 $ ,Z ,E#sC-4H , , , , 8R!R!R!R!R!R!R!R!jjCcCHSM2 #)7FJ3PT9o8 m $ %S(3-, -.@   # 5S 5 5c3h 5 5 5 5 S    (U(s((((rD