dL i CRdZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZddlZddlmZddlmZddlmZdd lmZGd d eZGd d Zej4dZdZGddZGddeZGddeZGddeZ y)z8Coverage controllers for use by pytest-cov and nose-cov.N)Path)Union) CoverageData)filename_suffix)CentralCovContextWarning) DistCovErrorc eZdZy)BrokenCovConfigErrorN)__name__ __module__ __qualname__W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pytest_cov/engine.pyr r srr ceZdZedZy) _NullFilecyNr)vs rwritez_NullFile.writes rN)r r r staticmethodrrrrrrs  rrc#Kt||} t||tj|dt|||y#t|||wxYwwr)getattrsetattrcopy)objattrbackups r_backupr "sG S$ F#T499V,- T6"T6"s A$AAAAcBtjfd}|S)Nc tj}tj|j  |g|i||tj|SS#t$rd}YQwxYw#|tj|wwxYwr)rcwdOSErroroschdirtopdir)selfargskwargs original_cwdmeths rensure_topdir_wrapperz-_ensure_topdir..ensure_topdir_wrapper-s 88:L  '.t.v.'&(  L '&(sA A, A)(A),B) functoolswraps)r,r-s` r_ensure_topdirr0,s&__T ' ' ! rceZdZdZdej dedefdedeffdZ e jdZ e dZe d Zd Zd Zed Zed ZdZe dZy) CovControllerz0Base class for different plugin implementations.optionsconfigNnodeidc|j|_|j|_|j|_|j|_|j|_|j |_||_||_d|_d|_ d|_ t|_ g|_ tjt!j"|_d|_d|_y)z8Get some common config used by multiple derived classes.NF) cov_source cov_report cov_config cov_append cov_branch cov_precisionr4r5cov combining_cov data_fileset node_descsfailed_workersr%fspathrr#r' is_collocatedstarted)r(r3r4r5s r__init__zCovController.__init__Bs!,,!,,!,,!,,!,,$22  !% ii + ! rc#Ktj}tj|jdtj|ywr)rr#r%r&r')r(r+s r ensure_topdirzCovController.ensure_topdirVs0xxz    sAAcFd|_|jjyNF)rEr=stopr(s rpausezCovController.pause]s   rcF|jjd|_yNT)r=startrErLs rresumezCovController.resumebs  rcd|_yrOrErLs rrPzCovController.startgs  rcd|_yrJrSrLs rfinishzCovController.finishjs  rcFdj|dj|ddS)z"Return a description of this node.zplatform {}, python {}z{}.{}.{}-{}-{}N)format)platform version_infos r get_node_desczCovController.get_node_descms0(..x9P9I9P9PR^_a`aRb9cddrcFtjd\}}|dkrd}|S)N)P)fallback(r])shutilget_terminal_size)width_s r get_widthzCovController.get_widthss)++X>q 2:E rct|dr|j||y|j}tjdk(r|dz}t |t |z dz dt |zzd}||z}|d|d|}t |t |jz|kr||jz }|dz }|j|y)Nsepwin32r z ) hasattrrgresysrYmaxlenrstripr)r(streamstxt fullwidthNfilllines rrgzCovController.sep|s 65 ! JJq# (I||w& Q YS)A-1s1v:>BAq5DV1SE4&)D4y3qxxz?*i7 " FND LL rc d}jsBtjd5jjddtcdddSt j dk(r0j|dddjj nAj|dd tj D]}j|d |jr]j|dd |jd jD]*}|j|jjd ,tfddDrdjvxsdd|jd}t!jt"xrdjj%v}|j'd|xsditjd5jjd)i|}ddddjvrjd}tjd5jj)d|dddtjd5jjdt}ddd|r|jd|d n|jddjvrjd}tjd5jj+d|}ddd|jd| jj,j.n|d djvrjd}tjd5jj1d|}ddd|jd| jj,j2n|d djvrjd}tjd5jj5d|}ddd|jd| jj,j6n|zd jvrjd }tjd5t9|j;d!5} jjd| d "}dddddd|jd#|d d$jvrjd$}tjd5t9|j;d%5} jjd| d "}dddddd|jd&|d d'jvrjd'}tjd5jj=d|jjdt}ddd|jd(| jj,j>n|d |S#1swYxYw#1swY_xYw#1swYxYw#1swYxYw#1swYkxYw#1swYxYw#1swYexYw#1swYxYw#1swYxYw#1swYOxYw#1swYTxYw#1swYxYw)*zProduce coverage reports.Nr4T) show_missing ignore_errorsfilerrdz coverage: coveragerjzcoverage: failed workerszlThe following workers failed to return coverage data, ensure that pytest-cov is installed on these workers.  c3:K|]}|jvywr)r8).0xr(s r z(CovController.summary..sFqDOO#Fs)term term-missingr)rxryrz precisionz skip-covered skip_coveredannotate)ry directory)ryrzz)Coverage annotated source written to dir z1Coverage annotated source written next to source htmlzCoverage HTML written to dir xml)ryoutfilezCoverage XML written to file jsonz!Coverage JSON written to file %s markdownw)ryrz output_formatz.Coverage Markdown information written to file zmarkdown-appendaz/Coverage Markdown information appended to file lcovzCoverage LCOV written to file r) r8r r=reportrrnrArgjoinsortedrBrgatewayidanyr< isinstancedictvaluesupdater html_reportr4html_dir xml_report xml_output json_report json_outputropen lcov_report lcov_output) r(rptotal node_descnoder3r annotate_diroutput output_files ` rsummaryzCovController.summarys$8, ^xxDS\] ^ ^ t 1 $ HHVSJrwwt/G.H"I J HHVS* -#DOO4 6  5 6    HHVS"< = LLI J++ 5  034 5 F-EF F!/4??!B Kt!%!// G &doot<kSWSbSbSiSiSkAkL NNNL,@DA B8, 3'2'2 3  (??:6L8, N!! !M N 8, LdK L HVXYZ QR T__ $__V,F8, S,,46,R S LL8U[Uc9Q9Qio8pprs t DOO #__U+F8, P++$+O P LL8W]We9S9Skq8rrtu v T__ $__V,F8, Q,,4,P Q LL=`f`nA\A\tz{ |  (__Z0F8, l&\&&s+l{ HHOO$[`jOkEl l LLI&QST U  /__%67F8, l&\&&s+l{ HHOO$[`jOkEl l LLJ6(RTU V T__ $__V,F8, L$$4$HdK  L LL9Y_Yg$((//:U:Ums9ttvw x A ^ ^8 3 3 N N  L L S S P P Q Qll l lll l l L Ls"Y Y6Y%2"Y28Y?Z Z'Z3Z&!Z39[ [3[  ?[ YY"%Y/2Y<?Z  ZZ#&Z0 +Z33Z=[ [  [[#)r r r__doc__argparse NamespacerobjectstrrF contextlibcontextmanagerrHr0rMrQrPrUrr[rergrrrrr2r2?s: 2 2E$,r:eraserPsuper)r(message __class__s rrPz Central.starts$$????   88?? * *o =f  MM27; J%..????*401:ggoodhhoo&?&?@   HHNN    rct||jj|jj |j |_|jj |jj|jj |jtjtj}|jj|y)zSStop coverage, save data to file and set the list of coverage objects to report on.N)rrUr=rKsaver>loadcombiner[rlrYrZrAadd)r(rrs rrUzCentral.finish s     %%     &&s||S5E5EF  I&r)r r rrr0rPrU __classcell__rs@rrrs,3: ' 'rrc<eZdZdZedZdZdZedZy) DistMasterz&Implementation for distributed master.c"tj|j|jd|j|_|j j jdk(r tdd|j _ d|j _ d|j _ tj|j|jtddtjj|j j j |j|_|j$s|j j'|j j)|j*g|j j j,d<y) NTrrzDetected dynamic_context=test_function in coverage configuration. This is known to cause issues when using xdist, see: https://github.com/pytest-dev/pytest-cov/issues/604 It is recommended to use --cov-context instead.Frrr)r|rr7r;r9r=r4rr _warn_no_data_warn_unimported_source_warn_preimported_sourcerr%rrr?r>r:rrPr'pathsrLs rrPzDistMaster.start4s$$????   88?? * *o =B  "'+0(,1)%..????*401:ggoodhhoo&?&?@   HHNN  +/;;-h'rc |jjtj|j|j j Dcgc] }t|c}dycc}w)zFWorkers need to know if they are collocated and what files have moved.)cov_master_hostcov_master_topdircov_master_rsync_rootsN) workerinputrsocket gethostnamer' nodemanagerrootsr)r(rroots rconfigure_nodezDistMaster.configure_nodeQsT #)#5#5#7%)[[AEAQAQAWAW*X3t9*X  +Ys A( cRt|di}d|vr|jj|yd|vrdtjt j tjdd|dfz}t|}|j|d|d }|jjjd j||jj}|j!|j"|j$}|j&j)|y) z#Collect data file name from worker. workeroutputcov_worker_node_idNcov_worker_dataz %s.%s.%06d.%sri?B)suffixcov_worker_pathr)rrBappendrrr%getpidrandomrandintrloadsr=r4rr_rinfor[rYrZrAr) r(rerrorrrcov_datarrinfors r testnodedownzDistMaster.testnodedown\s ~r2 v -    & &t ,   &)""$ q&)+, -K$"H NN6"34 5+,D HHOO ! !( + 2 24 8 ##%&&u~~u7I7IJ  I&rc*|jj|jj|j|_|jj |jj |jjy)zJCombines coverage data and sets the list of coverage objects to report on.N)r=rKrr>rrrLs rrUzDistMaster.finish|sU    %%     rN) r r rrr0rPrrrUrrrrr1s60888  '@  rrcFeZdZdZefdZefdZdZxZS) DistWorkerz'Implementation for distributed workers.ctj|jjdk(xr&|j|jjdk(|_|j s|jjd}|j}|j /|j Dcgc]}|j||c}|_|jj|||_tj|j |jd|j|_ d|j_ |jjt|9ycc}w)NrrTrF)rrr4rr'rDr7replacer9r|rr;r=rrPr)r( master_topdir worker_topdirrrs rrPzDistWorker.starts    DKK$;$;>-#O"n"oo55m]SDO$$????  ,1(   #os(E ct||jj|jr>|jj |j |jjd<y|jj|jj |jjj}|jjj|j|j |dy)z8Stop coverage and send relevant info back to the master.r)rrrN)rrUr=rKrDrr5r4rrget_datadumpsrr')r(datars rrUzDistWorker.finishs       HHMMO>B[[DKK $ $%9 : HH    HHMMO 88$$&,,.D KK $ $ + +'+{{*.++'+ rcy)z&Only the master reports so do nothing.Nr)r(rps rrzDistWorker.summarysr) r r rrr0rPrUrrrs@rrrs218B5rr)!rrrrr.r%rrarrlrpathlibrtypingrr| coverage.datarcoverage.sqldatarr{rr Exceptionr rrr r0r2rrrrrrrs>  &,& 9    ##!&}}@/'m/'dUUpC5C5r