
    7 fwD                    <   d Z ddlmZ ddlZddl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mZmZmZ ddlZddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZ erddlmZ ddlmZ  ej         e!          Z"d-d.dZ#d/dZ$d0dZ%d1d"Z&d2d&Z' G d' d(e          Z(d3d,Z)dS )4zCheck Python modules and C API for coverage.

Mostly written by Josip Dzolonga for the Google Highly Open Participation
contest.
    )annotationsN)import_module)path)IOTYPE_CHECKINGAnyTextIO)Builder)__)logging)red)safe_getattr)Iterator)Sphinx-fIO[str]textstrcharreturnNonec                    |                      |dz              |                      |t          |          z  dz              d S )N
z

)writelen)r   r   r   s      I/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/coverage.pywrite_headerr   "   s@    GGD4KGGD3t99v%&&&&&    nameexpslist[re.Pattern[str]]c                    g }|D ]c}	 |                     t          j        |                     +# t          $ r, t                              t          d          ||            Y `w xY w|S )Nzinvalid regex %r in %s)appendrecompile	Exceptionloggerwarningr   )r    r!   lstexps       r   compile_regex_listr,   '   s    
C D D	DJJrz#'''' 	D 	D 	DNN2677dCCCCC	DJs   '03A&%A&tablelist[list[str]]Iterator[str]c              #     K    fdt          t           d                             D             }t          |d          V  t          | d         d          E d {V   dd          D ]}t          ||d          E d {V  d S )Nc                N    g | ] t          fd D                       dz   !S )c              3  B   K   | ]}t          |                   V  d S N)r   ).0xcolumns     r   	<genexpr>z*_write_table.<locals>.<listcomp>.<genexpr>2   s-      //AQvY//////r      )max)r4   r6   r-   s    @r   
<listcomp>z _write_table.<locals>.<listcomp>2   s<    WWWS/////////!3WWWr   r   r   =r8   )ranger   	_add_line_add_row)r-   sizesrows   `  r   _write_tablerA   1   s      WWWW%ERSHBVBVWWWE
E3

uQx---------QRRy - -E3,,,,,,,,,,- -r   r?   	list[int]	separatorc                L    dd                     fd| D                       z   S )N+ c              3  .   K   | ]}|d z   z  dz   V  dS )r8   rE   N )r4   sizerC   s     r   r7   z_add_line.<locals>.<genexpr><   s1      JJD)tax0C7JJJJJJr   )join)r?   rC   s    `r   r=   r=   ;   s/    JJJJEJJJJJJJr   
col_widthscolumns	list[str]c              #      K   d                      fdt          |          D                       dz   V  t           |          V  d S )NrF   c              3  <   K   | ]\  }}d |d|          V  dS )z| z <NrH   )r4   ir6   rK   s      r   r7   z_add_row.<locals>.<genexpr>@   s?      VVia1v1A1111VVVVVVr   |)rJ   	enumerater=   )rK   rL   rC   s   `  r   r>   r>   ?   s^      
''VVVV9WCUCUVVV
V
VY\
\\\\
J	
*
******r   c                      e Zd ZdZdZ edej        z   dz             ZddZ	dd	Z
ddZddZddZddZddZddZddZddZdS )CoverageBuilderz:
    Evaluates coverage of code in the documentation.
    coveragezNTesting of coverage in the sources finished, look at the results in %(outdir)szpython.txt.r   r   c                `   g | _         | j        j        D ]H}t          j        | j        |          }| j                             t          j        |                     Ig | _        | j        j	        
                                D ]l\  }}	 | j                            |t          j        |          f           5# t          $ r+ t                              t#          d          |           Y iw xY wi | _        | j        j        
                                D ]\  }}t)          d|          | j        |<   t)          d| j        j                  | _        t)          d| j        j                  | _        t)          d| j        j                  | _        t)          d| j        j                  | _        d S )Nz&invalid regex %r in coverage_c_regexescoverage_ignore_c_itemscoverage_ignore_modulescoverage_ignore_classescoverage_ignore_functionscoverage_ignore_pyobjects)c_sourcefilesconfigcoverage_c_pathr   rJ   srcdirextendglob	c_regexescoverage_c_regexesitemsr$   r%   r&   r'   r(   r)   r   c_ignorexpsrW   r,   rX   mod_ignorexpsrY   cls_ignorexpsrZ   fun_ignorexpsr[   py_ignorexps)selfpatternr    r+   r!   s        r   initzCoverageBuilder.initL   s   (*{2 	: 	:GiW55G%%di&8&89999<>;9??AA 	R 	RKT3R%%tRZ__&=>>>> R R Rr"JKKSQQQQQR >@ K?EEGG 	> 	>LT4%78Q8<&> &>DT""/0I040SU U/0I040SU U/0K040UW W./J/3{/TV Vs   .B772C,+C,r   c                    dS )Nzcoverage overviewrH   )rj   s    r   get_outdated_docsz!CoverageBuilder.get_outdated_docsf   s    ""r   ignoredr   c                    i | _         i | _        i | _        |                                  |                                  i | _        |                                  |                                  d S r3   )py_undocpy_undocumentedpy_documentedbuild_py_coveragewrite_py_coveragec_undocbuild_c_coveragewrite_c_coverage)rj   ro   s     r   r   zCoverageBuilder.writei   sn    354624      8:r   c                   i }| j         j        d                                         D ]}|d         ||d         <   | j        D ]}t	                      }t          |d          5 }|D ]}| j        D ]\  }}|                    |          }	|	r|	                                d         }
||vr|	                    ||
f           R|
||         vrL| j
                            |g           D ]}|                    |
          r n|	                    ||
f           	 d d d            n# 1 swxY w Y   |r
|| j        |<   d S )Ncr8      utf-8encodingr   )envdomainsget_objectsr\   setopenrb   matchgroupsaddre   getrv   )rj   	c_objectsobjfilenameundocr   linekeyregexr   r    r+   s               r   rw   z CoverageBuilder.build_c_coveraget   s   	8#C(4466 	' 	'C #AIc!f* 	/ 	/H*-%%Eh111 %Q % %D&*n % %
U %D 1 1  %#(<<>>!#4D")33 %		3+ 6 6 6 (#9S>99+/+;+?+?R+H+H !; !;C'*yy %.(-%. %*IIsDk$:$:$:$%%%% % % % % % % % % % % % % % %"  /).X&)	/ 	/s   #B7D''D+	.D+	c           
        t          j        | j        d          }t          |dd          5 }| j        j        rt          |dd           |                    d           | j        	                                D ]\  }}t          ||           t          |          D ]\  }}|                    d|d	d
|dd           | j        j        r| j        j        s| j        j        r+t                              t#          d          |||           rt                              t'          d          dz   dz   d|d|z  z   z  z   t'          d          z   |z              |                    d           	 d d d            d S # 1 swxY w Y   d S )Nzc.txtwr|   r}   zUndocumented C API elementsr;   r   z * 50z [z>9z]
z&undocumented c api: %s [%s] in file %sundocumented  zc   z
api       %-30sz [%9s]z - in file )r   rJ   outdirr   r]   coverage_write_headliner   r   rv   rd   sortedcoverage_show_missing_itemsappquietwarningiserrorr(   r)   r   infor   )rj   output_fileopr   r   typr    s          r   rx   z CoverageBuilder.write_c_coverage   s   iW55+sW555 	{2 ER!>DDDHHTNNN#'<#5#5#7#7  %R***!' 	G 	GICHHH4444=>>>{> G8> GTX-D G"NN2.V+W+W+/h@ @ @ @ #KK,<(=(=(F(U(/4(S.3H(I)J(+M(:(:);=E)F G G G 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   EF  FF	full_nameboolc                D    t          fd| j        D                       S )Nc              3  B   K   | ]}|                               V  d S r3   )search)r4   r+   r   s     r   r7   z/CoverageBuilder.ignore_pyobj.<locals>.<genexpr>   sC       
 
 JJy!!
 
 
 
 
 
r   )anyri   )rj   r   s    `r   ignore_pyobjzCoverageBuilder.ignore_pyobj   s>     
 
 
 
(
 
 
 
 
 	
r   c                x   | j         j        d         d         }| j         j        d         d         }| j        j        }|D ]}d}| j        D ]}|                    |          rd} n|s|                     |          r@	 t          |          }nL# t          $ r?}t          
                    t          d          ||           d|i| j        |<   Y d }~d }~ww xY wt                      }	t                      }
g }i }t          j        |          D ]\  }}|d         d	k    rt!          |d
          s$|j        |k    r0| d| }|                     |          rMt          j        |          rp||vrV| j        D ]}|                    |          r n5|r|j        s|                    |           |
                    |           |	                    |           t          j        |          r| j        D ]}|                    |          r n||vr|r	|j        sg ||<   g }t3          |          D ]}||j        vr	 t7          ||          }n# t8          $ r Y *w xY wt          j        |          st          j        |          sW|d         d	k    rd|r|j        sn| d| }|                     |          r||vr+|                    |           |
                    |           |	                    |           |r|||<   ||d| j        |<   |
| j        |<   |	| j        |<   d S )NpyobjectsmodulesFTz#module %s could not be imported: %serrorr   _
__module__.)funcsclasses) r   
domaindatar]   coverage_skip_undoc_in_sourcerf   r   r   r   ImportErrorr(   r)   r   rq   r   inspect
getmembershasattrr   
isfunctionrh   __doc__r$   r   isclassrg   dir__dict__r   AttributeErrorismethodrr   rs   )rj   r   r   
skip_undocmod_nameignorer+   moderrdocumented_objectsundocumented_objectsr   r   r    r   r   attrs	attr_nameattrfull_attr_names                       r   rt   z!CoverageBuilder.build_py_coverage   s7   (%d+I6(%d+I6[>
 _	> _	>HF)  99X&& !FE  **844 #H--   r"GHH(TWXXX+2C.h'
 ,/55-0UU E,.G$/44 E2 E2	c7c>>sL11 >X--'00$00	$$Y// %c** 52 //#'#5 @ @C"yy & %&  * )#+ ) (!LL...044Y???*..y9999_S)) )2#1 (2 (299T?? "!E" %G33) )#+ ) (,.GDM$+-),S G GI(<< ()'3C'C'C#1 ) ) ) ()$+$4T$:$: )$+$6t$<$<) ((|s22 () )$, ) (09-G-GI-G-GN#00@@ ) (-W<< %Y 7 7 7 4 8 8 H H H H 2 6 6~ F F F F  2,1GDM05'&J&JDM(#-AD *+=Dx((_	> _	>s*    B
C5CCI
I)	(I)	r   r	   c           
        t          | j                                                                      t          | j                                                            }t                      }t                      }|D ]b}| j        |                             | j        |                   }|                    |          }|                    | j        |                   }cg dg}|D ]}| j        |                             | j        |                   }t          |          r.dt          | j        |                   z  t          |          z  }	nd}	|                    |d|	z  dt          | j        |                   z  g           |                    ddt          |          z  t          |          z  ddt          |          t          |          z
   g           t          |          D ]}
|                    |
 d	           d
S )z Outputs the table of ``op``.)ModuleCoverageUndocumentedg      Y@z%.2f%%z%dTOTALd   z.2f%r   N)	r   rs   keysunionrr   r   r$   rA   r   )rj   r   all_modulesall_objectsall_documented_objectsmoduleall_module_objectsr-   module_objectsvaluer   s              r   _write_py_statisticsz$CoverageBuilder._write_py_statistics  s!   $,113344::$))++,,. . #+.55! 	^ 	^F!%!3F!;!A!A$BVW]B^!_!_%++,>??K%;%A%A$BTU[B\%]%]"" 8778! 	_ 	_F!/7==d>RSY>Z[[N>"" D$6v$> ? ??#nBUBUULL&(U"2D3t?STZ?[;\;\4\]^^^^S/0003{3C3CCJJJJ;#&<"="==?
 	 	 	 !'' 	" 	"DHH[[[!!!!	" 	"r   c           
        t          j        | j        d          }g }t          |dd          5 }| j        j        rt          |dd           | j        j        r|                     t          j
                   | j        j        r:t          |d           |                     |           |                    d           t          | j                                                  }|D ]B}| j        |         }d	|v r|                    ||d	         f           2|d
         s	|d         sCt          ||           |d         r|                    d           |                    d |d         D                        | j        j        r| j        j        s| j        j        r5|d         D ]+}t,                              t1          d          ||           ,nQ|d         D ]H}t,                              t5          d          dz   dz   d|z  z   t5          d          z   |z              I|                    d           |d
         r|                    d           t          |d
                                                   D ]\  }}	|	s|                    d|z             | j        j        r| j        j        s| j        j        r*t,                              t1          d          ||           nt,                              t5          d          dz   dz   d|z  z   t5          d          z   |z              |                    d|z             |                    d |	D                        | j        j        r| j        j        s| j        j        r1|	D ],}
t,                              t1          d          |||
           -A|	D ]N}
t,                              t5          d          dz   dz   d|dz   |
z   z  z   t5          d          z   |z              O|                    d           D|r/t          |d           |                    d |D                        d d d            d S # 1 swxY w Y   d S )Nz
python.txtr   r|   r}   zUndocumented Python objectsr;   
Statisticsr   r   r   r   zFunctions:
c              3      K   | ]	}d |z  V  
dS ) * %s
NrH   r4   r5   s     r   r7   z4CoverageBuilder.write_py_coverage.<locals>.<genexpr>I  s&      %L%Li!m%L%L%L%L%L%Lr   z&undocumented python function: %s :: %sr   zpy  z
function  r   z - in module z	Classes:
r   z#undocumented python class: %s :: %sz
class     z * %s -- missing methods:

c              3      K   | ]	}d |z  V  
dS )z   - %s
NrH   r   s     r   r7   z4CoverageBuilder.write_py_coverage.<locals>.<genexpr>f  s&      -O-O!kAo-O-O-O-O-O-Or   z*undocumented python method: %s :: %s :: %sz
method    r   zModules that failed to importc              3      K   | ]	}d |z  V  
dS )z * %s -- %s
NrH   r   s     r   r7   z4CoverageBuilder.write_py_coverage.<locals>.<genexpr>x  s'      BBao1BBBBBBr   )r   rJ   r   r   r]   r   r   coverage_statistics_to_stdoutr   sysstdoutcoverage_statistics_to_reportr   r   rq   r   r$   
writelinesr   r   r   r   r(   r)   r   r   r   rd   )rj   r   failedr   r   r    r   func
class_namemethodsmeths              r   ru   z!CoverageBuilder.write_py_coverage.  s   i\::+sW555 G	C{2 ER!>DDD{8 6))#*555{8 R...))"---$-,,..//D 6' 6'd+e##MM4w"89999 + !E'N !  T***W~ '000%L%LU7^%L%L%LLLL;B 	^#x~ ^1H ^,1'N !4 !4D$*NN(*+S(T(T(,d%4 %4 %4 %4!4
 -2'N !^ !^D$*KK4D0E0E0NQ]0]07$1?AD_AUAU1VX\1] %^ %^ %^ %^Y' '...39 %i 0 6 6 8 84: 4: U U/J#* U "Z)? @ @ @#';#J !Q'+x~ %Q9P %Q(.,./T,U,U,0*)> )> )> )> )/C8H4I4IF4R4@5ACJZCW5X474H4H5IKO5P )Q )Q )Q !#)H:)U V V V "-O-Ow-O-O-O O O O#';#J !U'+x~ %U9P %U4; )H )HD,2NN02 4E 1F 1F04j$-H -H -H -H)H 5< )U )UD,2KK<L8M8MPV8V8D9EGN9Cc9ID9PHR9R 9<O8L8L9M PT9T -U -U -U -U  CR!@AAABB6BBBBBBOG	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	C G	Cs   P,Q((Q,/Q,c                    t          j        | j        d          }t          |d          5 }t	          j        | j        | j        | j        | j	        f|           d d d            d S # 1 swxY w Y   d S )Nzundoc.picklewb)
r   rJ   r   r   pickledumprq   rv   rr   rs   )rj   
picklepathdumpfiles      r   finishzCoverageBuilder.finishz  s    Yt{N;;
*d## 	NxK-t/ACDLN N N	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	Ns   .A&&A*-A*N)r   r   )r   r   )ro   r   r   r   )r   r   r   r   )r   r	   r   r   )__name__r   __qualname__r   r    r   r   sepepilogrl   rn   r   rw   rx   r   rt   r   ru   r   rH   r   r   rT   rT   D   s0         DR (*.(35BC D DFV V V V4# # # #	  	  	  	 / / / /4   *
 
 
 
e> e> e> e>N" " " "<JC JC JC JCXN N N N N Nr   rT   r   r   dict[str, Any]c                   |                      t                     |                     dg d           |                     dg d           |                     dg d           |                     dg d           |                     dg d           |                     di d           |                     di d           |                     d	d
d           |                     dd
dt          f           |                     dd
dt          f           |                     ddd           |                     ddd           t          j        d
dS )NrX   FrZ   rY   r[   r^   rc   rW   r   Tr   r   r   r   )versionparallel_read_safe)add_builderrT   add_config_valuer   sphinx__display_version__)r   s    r   setupr     sY   OOO$$$2B>>>4b%@@@2B>>>4b%@@@*B666-r59992B>>>2D%@@@8$wOOO8$wOOO8%GGG6uEEE1NNNr   )r   )r   r   r   r   r   r   r   r   )r    r   r!   r   r   r"   )r-   r.   r   r/   )r?   rB   rC   r   r   r   )rK   rB   rL   rM   rC   r   r   r/   )r   r   r   r   )*r   
__future__r   ra   r   r   r%   r   	importlibr   osr   typingr   r   r   r	   r   sphinx.buildersr
   sphinx.localer   sphinx.utilr   sphinx.util.consoler   sphinx.util.inspectr   collections.abcr   sphinx.applicationr   	getLoggerr   r(   r   r,   rA   r=   r>   rT   r   rH   r   r   <module>r
     s    # " " " " "    				 



 # # # # # #       1 1 1 1 1 1 1 1 1 1 1 1  # # # # # #             # # # # # # , , , , , , *(((((())))))		8	$	$' ' ' ' '
   - - - -K K K K+ + + +
{N {N {N {N {Ng {N {N {N|	O O O O O Or   