HEX
Server: Apache
System: Linux pdx1-shared-a1-38 6.6.104-grsec-jammy+ #3 SMP Tue Sep 16 00:28:11 UTC 2025 x86_64
User: mmickelson (3396398)
PHP: 8.1.31
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/sphinx/ext/__pycache__/coverage.cpython-310.pyc
o

�$�ag7�	@sdZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZmZm
Z
mZmZmZddlZddlmZddlmZddlmZdd	lmZdd
lmZddlmZe�e�Z dd
e
de!de!ddfdd�Z"de!de!de
efdd�Z#Gdd�de�Z$dedee!effdd�Z%dS)a-
    sphinx.ext.coverage
    ~~~~~~~~~~~~~~~~~~~

    Check Python modules and C API for coverage.  Mostly written by Josip
    Dzolonga for the Google Highly Open Participation contest.

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�
import_module)�path)�IO�Any�Dict�List�Pattern�Set�Tuple)�Sphinx)�Builder)�__)�logging)�red)�safe_getattr�-�f�text�char�returncCs(|�|d�|�|t|�d�dS)N�
)�write�len)rrr�r�5/usr/lib/python3/dist-packages/sphinx/ext/coverage.py�write_header sr�name�expsc	CsJg}|D]}z
|�t�|��Wqty"t�td�||�Yqw|S)Nzinvalid regex %r in %s)�append�re�compile�	Exception�logger�warningr
)rr�lst�exprrr�compile_regex_list%s�r&c@s�eZdZdZdZedejd�Zddd�Z	de
fd	d
�Zdeddfdd
�Z
ddd�Zddd�Zde
defdd�Zddd�Zddd�Zddd�ZdS)�CoverageBuilderz:
    Evaluates coverage of code in the documentation.
    �coveragezNTesting of coverage in the sources finished, look at the results in %(outdir)szpython.txt.rNc	Cs�g|_|jjD]}t�|j|�}|j�t�|��qg|_|jj	�
�D]"\}}z
|j�|t�
|�f�Wq#tyEt�td�|�Yq#wi|_|jj�
�D]\}}td|�|j|<qOtd|jj�|_td|jj�|_td|jj�|_td|jj�|_dS)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�join�srcdir�extend�glob�	c_regexes�coverage_c_regexes�itemsrrr r!r"r#r
�c_ignorexpsr)r&r*�
mod_ignorexpsr+�
cls_ignorexpsr,�
fun_ignorexpsr-�py_ignorexps)�self�patternrr%rrrr�init7s8�����
�zCoverageBuilder.initcCsdS)Nzcoverage overviewr)r=rrr�get_outdated_docsQsz!CoverageBuilder.get_outdated_docs�ignoredcGs0i|_|��|��i|_|��|��dS)N)�py_undoc�build_py_coverage�write_py_coverage�c_undoc�build_c_coverage�write_c_coverage)r=rArrrrTszCoverageBuilder.writec	Cs�|jjdd}|jD]W}t�}t|��?}|D]4}|jD].\}}|�|�}|rJ|��d}	|	|vrI|j�	|g�D]	}
|
�|	�rAnq8|�
||	f�qqqWd�n1sVwY|rb||j|<qdS)N�c�objectsr)�env�
domaindatar.�set�openr5�match�groupsr8�get�addrE)r=�	c_objects�filename�undocr�line�key�regexrNrr%rrrrF]s0



�����
��z CoverageBuilder.build_c_coveragec
Cst�|jd�}t|d��n}|jjrt|dd�|�d�|j�	�D]P\}}t||�t
|�D]=\}}|�d||f�|jjrk|jj
sG|jjrRt�td�|||�q.t�td�d	d
d|d|td
�|�q.|�d�q!Wd�dS1s}wYdS)Nzc.txt�wzUndocumented C API elements�=rz * %-50s [%9s]
z&undocumented c api: %s [%s] in file %s�undocumented  zc   z
api       �%-30sz [%9s]z - in file )rr1�outdirrMr/�coverage_write_headlinerrrEr7�sorted�coverage_show_missing_items�app�quiet�warningiserrorr"r#r
�infor)r=�output_file�oprSrT�typrrrrrGrs2


������"�z CoverageBuilder.write_c_coverage�	full_namecCs |jD]
}|�|�r
dSqdS)NTF)r<�search)r=rgr%rrr�ignore_pyobj�s


�zCoverageBuilder.ignore_pyobjcCs^|jjdd}|jjdd}|jj}|D�]}d}|jD]}|�|�r)d}nq|s1|�|�r2qzt|�}Wn"tyZ}zt	�
td�||�d|i|j|<WYd}~qd}~wwg}	i}
t
�|�D]�\}}|dd	kroqdt|d
�suqd|j|kr{qdd||f}
|�|
�r�qdt
�|�r�|
|vr�|jD]	}|�|�r�nq�|r�|js�qd|	�|�qdt
�|��r#|jD]	}|�|�r�nhq�|
|vr�|r�|js�qdg|
|<qdg}t|�D]J}||jvr�q�zt||�}Wn	ty�Yq�wt
�|�s�t
�|�s�q�|dd	kr�q�|�r|j�sq�d|
|f}|�|��rq�||v�r|�|�q�|�r#||
|<qd|	|
d�|j|<qdS)
N�pyrI�modulesFTz#module %s could not be imported: %s�errorr�_�
__module__z%s.%s)�funcs�classes)rJrKr/�coverage_skip_undoc_in_sourcer9rNrir�ImportErrorr"r#r
rB�inspect�
getmembers�hasattrrn�
isfunctionr;�__doc__r�isclassr:�dir�__dict__r�AttributeError�ismethod)r=rIrk�
skip_undoc�mod_name�ignorer%�mod�errrorpr�objrg�attrs�	attr_name�attr�full_attr_namerrrrC�s�


���





�

�

�

�
�

���z!CoverageBuilder.build_py_coveragec
Cs�t�|jd�}g}t|d���O}|jjrt|dd�t|j�	��}|D�]}|j|}d|vr9|�
||df�q#|dsB|dsBq#t||�|dr�|�d�|�d	d
�|dD��|jj
r�|jjsh|jjry|dD]}t�td�||�qln|dD]}t�td�d
dd|td�|�q}|�d�|d�r;|�d�t|d���D]�\}}	|	s�|�d|�|jj
r�|jjs�|jjr�t�td�||�q�t�td�d
dd|td�|�q�|�d|�|�dd
�|	D��|jj
�r5|jj�s|jj�r|	D]
}
t�td�|||
��qq�|	D]}
t�td�d
dd|d|
td�|��qq�|�d�q#|�rVt|d�|�dd
�|D��Wd�dSWd�dS1�sbwYdS)Nz
python.txtrXzUndocumented Python objectsrYrlrprozFunctions:
cs��|]}d|VqdS)� * %s
Nr��.0�xrrr�	<genexpr>���z4CoverageBuilder.write_py_coverage.<locals>.<genexpr>z&undocumented python function: %s :: %srZzpy  z
function  r[z
 - in module rz	Classes:
r�z#undocumented python class: %s :: %sz
class     z * %s -- missing methods:

csr�)z   - %s
Nrr�rrrr�r�z*undocumented python method: %s :: %s :: %sz
method    �.zModules that failed to importcsr�)z * %s -- %s
Nrr�rrrr�)r�)rr1r\rMr/r]rr^rB�keysrr�
writelinesr_r`rarbr"r#r
rcrr7)r=rd�failedrer�rrT�func�
class_name�methods�methrrrrD�s�



�����



�������
���
���
��
�
�<$�z!CoverageBuilder.write_py_coveragecCsRt�|jd�}t|d��}t�|j|jf|�Wd�dS1s"wYdS)Nzundoc.pickle�wb)rr1r\rM�pickle�dumprBrE)r=�
picklepath�dumpfilerrr�finish+s"�zCoverageBuilder.finish)rN)�__name__rn�__qualname__rwrr
r�sep�epilogr?�strr@rrrFrG�boolrirCrDr�rrrrr'/s"��

	


[Cr'r`cCs�|�t�|�dgd�|�dgd�|�dgd�|�dgd�|�dgd�|�did�|�did�|�d	d
d�|�ddd�|�ddd�tjd
d
�S)Nr*Fr,r+r-r0r6r)r]Trqr_)�version�parallel_read_safe)�add_builderr'�add_config_value�sphinx�__display_version__)r`rrr�setup2s
r�)r)&rwr4rsr�r�	importlibr�osr�typingrrrrrr	r
r��sphinx.applicationr�sphinx.buildersr�
sphinx.localer
�sphinx.utilr�sphinx.util.consoler�sphinx.util.inspectr�	getLoggerr�r"r�rr&r'r�rrrr�<module>s,$