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/autodoc/__pycache__/mock.cpython-310.pyc
o

�$�a�
@s>dZddlZddlZddlZddlmZmZddlmZddl	m
Z
ddlmZm
Z
mZmZmZmZmZmZddlmZddlmZe�e�ZGd	d
�d
�Zeddfded
ededededefdd�ZGdd�de
�ZGdd�de�ZGdd�de�Z ej!deede
dfdd��Z"dede#fdd �Z$dedefd!d"�Z%dS)#z�
    sphinx.ext.autodoc.mock
    ~~~~~~~~~~~~~~~~~~~~~~~

    mock for autodoc

    :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
�N)�Loader�MetaPathFinder)�
ModuleSpec)�
ModuleType)�Any�	Generator�Iterator�List�Optional�Sequence�Tuple�Union)�logging)�safe_getattrcs�eZdZUdZdZdZdZdZeedfe	d<deded	ef�fd
d�Z
deded	dfd
d�Zd	efdd�Z
ded	efdd�Zd	efdd�Zded	efdd�Zded	dfdd�Zded	dfdd�Zdeded	efdd�Zd	efdd �Z�ZS)!�_MockObject�Used by autodoc_mock_imports.�T�.�__sphinx_decorator_args__�args�kwargs�returncsVt|�dkr%t|dt�r%|ddj}||ur%t|d|j||dd�St��|�S)N�����r�)�
superclass�
attributes)�len�
isinstance�tuple�	__class__�_make_subclass�__display_name__�super�__new__)�clsrrr�r!r�9/usr/lib/python3/dist-packages/sphinx/ext/autodoc/mock.pyr%!s�z_MockObject.__new__NcOs|j|_dS�N)�__name__�__qualname__)�selfrrrrr(�__init__+sz_MockObject.__init__cC�dS)Nrr�r,rrr(�__len__.�z_MockObject.__len__�keycCr.)NFr�r,r2rrr(�__contains__1r1z_MockObject.__contains__cCstg�Sr))�iterr/rrr(�__iter__4�z_MockObject.__iter__�basescCs|jfSr)r')r,r8rrr(�__mro_entries__7r7z_MockObject.__mro_entries__cCstt|�|j|j��Sr))r"�strr#r!r3rrr(�__getitem__:sz_MockObject.__getitem__cCst||j|j��Sr))r"r#r!r3rrr(�__getattr__=sz_MockObject.__getattr__cOs|��}||_|Sr))r!r)r,rr�callrrr(�__call__@sz_MockObject.__call__cC�|jSr))r#r/rrr(�__repr__E�z_MockObject.__repr__)r*�
__module__r+�__doc__r#�__sphinx_mock__rrr�__annotations__r%r-�intr0r:�boolr4rr6r9r;r<r>r@�
__classcell__rrr'r(rs 

rr�name�modulerr�decorator_argsrcCs2||d|||d�}|�|pi�t||f|�S)N�.)rBr#r*r)�update�type)rIrJrrrK�attrsrrr(r"Is
�r"csTeZdZdZejZdZdeddf�fdd�Z	dede
fdd	�Zdefd
d�Z�Z
S)�_MockModulerTrIrNcst��|�g|_g|_dSr))r$r-�__all__�__path__�r,rIr'rr(r-Ys
z_MockModule.__init__cCst||j��Sr))r"r*rSrrr(r<^sz_MockModule.__getattr__cCr?r))r*r/rrr(r@arAz_MockModule.__repr__)r*rBr+rC�os�devnull�__file__rDr:r-rr<r@rHrrr'r(rPTsrPcsFeZdZdZd�fdd�Zdedefd	d
�Zdeddfdd
�Z�Z	S)�
MockLoaderzA loader for mocking.�finder�
MockFinderrNcst���||_dSr))r$r-rX)r,rXr'rr(r-gs

zMockLoader.__init__�speccCs(t�d|j�|jj�|j�t|j�S)Nz%[autodoc] adding a mock module as %s!)�logger�debugrIrX�mocked_modules�appendrP)r,rZrrr(�
create_moduleks
zMockLoader.create_modulerJcCsdSr)r)r,rJrrr(�exec_modulepr1zMockLoader.exec_module)rXrYrN)
r*rBr+rCr-rrr_r`rHrrr'r(rWes
rWc
sjeZdZdZdeeddf�fdd�Z	ddedeee	e
efd	edeefd
d�Z
ddd
�Z�ZS)rYzA finder for mocking.�modnamesrNcs$t���||_t|�|_g|_dSr))r$r-rarW�loaderr])r,rar'rr(r-ws


zMockFinder.__init__�fullname�path�targetcCs6|jD]}||ks|�|d�rt||j�SqdS)NrL)ra�
startswithrrb)r,rcrdre�modnamerrr(�	find_spec}s

�zMockFinder.find_speccCs|jD]	}tj�|d�qdS)z)Invalidate mocked modules on sys.modules.N)r]�sys�modules�pop)r,rgrrr(�invalidate_caches�s
�zMockFinder.invalidate_cachesr))rN)r*rBr+rCr	r:r-r
rr
�bytesrrrhrlrHrrr'r(rYts��
�	rYra)NNNc	csP�zt|�}tj�d|�dVWtj�|�|��dStj�|�|��w)z�Insert mock modules during context::

        with mock(['target.module.name']):
            # mock modules are enabled here
            ...
    rN)rYri�	meta_path�insert�removerl)rarXrrr(�mock�s��
rq�subjectcCs�z
t|dd�durWdSWn
tyYdSwt|t�rdSztt|�dg�}t|�dkr7|dtur:WdSWdSWdStyFYdSw)zCheck if the object is mocked.rDNFT�__mro__rr)r�AttributeErrorrrPrNrr)rrrsrrr(�ismock�s*��
����rucCst|�r|jr|jdS|S)zsUnwrap mock if *subject* is decorated by mocked object.

    If not decorated, returns given *subject* itself.
    r)rur)rrrrr(�
undecorate�s
rv)&rC�
contextlibrTri�
importlib.abcrr�importlib.machineryr�typesr�typingrrrr	r
rrr
�sphinx.utilr�sphinx.util.inspectr�	getLoggerr*r[rr:r"rPrWrY�contextmanagerrqrGrurvrrrr(�<module>s8
(
0���
�