
    -Ph                       d Z ddlmZ ddlZddlZddlZddlmZmZ ddl	m
Z
 ddlmZmZ ddlmZ ddlmZ dd	lmZmZ erdd
lmZmZ ddlmZ ddlmZ  ej        e          Z G d d          Zeddfd*dZ G d de          Z  G d de          Z! G d de          Z"ej#        d+d#            Z$d,d&Z%d-d(Z&d.d)Z'dS )/zmock for autodoc    )annotationsN)LoaderMetaPathFinder)
ModuleSpec)
MethodType
ModuleType)TYPE_CHECKING)logging)isboundmethodsafe_getattr)IteratorSequence)Any)TypeIsc                       e Zd ZU dZd ZdZ dZdZded<   d f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 xZS )&_MockObjectUsed by autodoc_mock_imports. T tuple[Any, ...]__sphinx_decorator_args__argsr   kwargsreturnc                   t          |          dk    rVt          |d         t                    r;|d         d         j        }|| u r$t	          |d         |j        ||d                   S t                                          |           S )N      r      )
superclass
attributes)len
isinstancetuple	__class___make_subclass__display_name__super__new__)clsr   r   r    r%   s       W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/mock.pyr)   z_MockObject.__new__!   s    t99>>ja%88>a.JS  %G/)#Aw	    wws###    Nonec                    | j         | _        d S N)__name____qualname__)selfr   r   s      r+   __init__z_MockObject.__init__/   s     Mr,   intc                    dS )Nr   r   r2   s    r+   __len__z_MockObject.__len__2   s    qr,   keystrboolc                    dS )NFr   r2   r8   s     r+   __contains__z_MockObject.__contains__5   s    ur,   Iterator[Any]c                     t          d          S )Nr   )iterr6   s    r+   __iter__z_MockObject.__iter__8   s    Bxxr,   basestuple[type, ...]c                    | j         fS r/   r%   )r2   rB   s     r+   __mro_entries__z_MockObject.__mro_entries__;   s      r,   c                b     t          t          |          | j        | j                              S r/   )r&   r9   r'   r%   r<   s     r+   __getitem__z_MockObject.__getitem__>   s'    N~c#hh(=t~NNPPPr,   c                H     t          || j        | j                              S r/   )r&   r'   r%   r<   s     r+   __getattr__z_MockObject.__getattr__A   s!    I~c4#8$.IIKKKr,   c                <    |                                  }||_        |S r/   )r%   r   )r2   r   r   calls       r+   __call__z_MockObject.__call__D   s    ~~)-&r,   c                    | j         S r/   )r'   r6   s    r+   __repr__z_MockObject.__repr__I   s    $$r,   )r   r   r   r   r   r   )r   r   r   r   r   r-   )r   r4   )r8   r9   r   r:   )r   r>   )rB   r   r   rC   )r8   r   r   r   )r8   r9   r   r   r   r9   )r0   
__module__r1   __doc__r'   __sphinx_mock__r   __annotations__r)   r3   r7   r=   rA   rF   rH   rJ   rM   rO   __classcell__rE   s   @r+   r   r      s#        ''$HO133333$ $ $ $ $ $* * * *         ! ! ! !Q Q Q QL L L L   
% % % % % % % %r,   r   r   namer9   moduler    r   r!   decorator_argsr   r   c                n    ||dz   | z   | |d}|                     |pi            t          | |f|          S )N.)rQ   r'   r0   r   )updatetype)rV   rW   r    r!   rX   attrss         r+   r&   r&   M   sR     "SL4/%3	 E 
LL!r"""zmU+++r,   c                  F     e Zd ZdZej        ZdZd fdZdd	Z	dd
Z
 xZS )_MockModuler   TrV   r9   r   r-   c                f    t                                          |           g | _        g | _        d S r/   )r(   r3   __all____path__)r2   rV   r%   s     r+   r3   z_MockModule.__init__e   s-    "$#%r,   r   c                <     t          || j                              S r/   )r&   r0   )r2   rV   s     r+   rJ   z_MockModule.__getattr__j   s    2~dDM22444r,   c                    | j         S r/   )r0   r6   s    r+   rO   z_MockModule.__repr__m   s
    }r,   )rV   r9   r   r-   )rV   r9   r   r   rP   )r0   rQ   r1   rR   osdevnull__file__rS   r3   rJ   rO   rU   rE   s   @r+   r_   r_   _   sw        ''zHO& & & & & &
5 5 5 5       r,   r_   c                  4     e Zd ZdZd fdZdd
ZddZ xZS )
MockLoaderzA loader for mocking.finder
MockFinderr   r-   c                V    t                                                       || _        d S r/   )r(   r3   rj   )r2   rj   r%   s     r+   r3   zMockLoader.__init__t   s$    r,   specr   r   c                    t                               d|j                   | j        j                            |j                   t          |j                  S )Nz%[autodoc] adding a mock module as %s!)loggerdebugrV   rj   mocked_modulesappendr_   )r2   rm   s     r+   create_modulezMockLoader.create_modulex   sD    <diHHH"))$)44449%%%r,   rW   c                    d S r/   r   )r2   rW   s     r+   exec_modulezMockLoader.exec_module}   s    r,   )rj   rk   r   r-   )rm   r   r   r   )rW   r   r   r-   )r0   rQ   r1   rR   r3   rs   ru   rU   rE   s   @r+   ri   ri   q   sk             & & & &
       r,   ri   c                  8     e Zd ZdZd fdZ	 dddZddZ xZS )rk   zA finder for mocking.modnames	list[str]r   r-   c                    t                                                       || _        t          |           | _        g | _        d S r/   )r(   r3   rw   ri   loaderrq   )r2   rw   r%   s     r+   r3   zMockFinder.__init__   s=      &&)+r,   Nfullnamer9   pathSequence[bytes | str] | NonetargetModuleType | NoneModuleSpec | Nonec                    | j         D ]7}||k    s|                    |dz             rt          || j                  c S 8d S )NrZ   )rw   
startswithr   rz   )r2   r{   r|   r~   modnames        r+   	find_speczMockFinder.find_spec   s[     } 	9 	9G(""h&9&9'C-&H&H"!(DK88888 # tr,   c                Z    | j         D ]"}t          j                            |d           #dS )z)Invalidate mocked modules on sys.modules.N)rq   sysmodulespop)r2   r   s     r+   invalidate_cacheszMockFinder.invalidate_caches   s7    * 	+ 	+GKOOGT****	+ 	+r,   )rw   rx   r   r-   r/   )r{   r9   r|   r}   r~   r   r   r   )r   r-   )r0   rQ   r1   rR   r3   r   r   rU   rE   s   @r+   rk   rk      su        , , , , , , %)	    + + + + + + + +r,   rk   rw   rx   Iterator[None]c              #  H  K   t          |           }	 t          j                            d|           dV  t          j                            |           |                                 dS # t          j                            |           |                                 w xY w)zInsert mock modules during context::

    with mock(['target.module.name']):
        # mock modules are enabled here
        ...
    r   N)rk   r   	meta_pathinsertremover   )rw   rj   s     r+   mockr      s       !!F#Q'''V$$$  """"" 	V$$$  """"s   $A, ,5B!subjectTypeIs[_MockModule]c                ,    t          | t                    S )z'Check if the object is a mocked module.)r#   r_   r   s    r+   ismockmoduler      s    g{+++r,   r:   c                   	 t          | dd          dS n# t          $ r Y dS w xY wt          | t                    rdS t          | t                    rt          |           r| j        }n| }	 t          t          |          dg           }t          |          dk    r|d         t          u rdS n# t          $ r Y nw xY wdS )zCheck if the object is mocked.rS   NFT__mro__r   )
r   AttributeErrorr#   r_   r   r   __func__r\   r"   r   )r   tmp_subjectr   s      r+   ismockr      s    !2D99A5 B   uu ';'' t ':&& =+A+A &tK00)R@@w<<!{ : :4    5s    
$$-A B0 0
B=<B=c                L    t          |           r| j        r| j        d         S | S )zsUnwrap mock if *subject* is decorated by mocked object.

    If not decorated, returns given *subject* itself.
    r   )r   r   r   s    r+   
undecorater      s/    
 g 7< 033r,   )rV   r9   rW   r9   r    r   r!   r   rX   r   r   r   )rw   rx   r   r   )r   r   r   r   )r   r   r   r:   )r   r   r   r   )(rR   
__future__r   
contextlibre   r   importlib.abcr   r   importlib.machineryr   typesr   r   typingr	   sphinx.utilr
   sphinx.util.inspectr   r   collections.abcr   r   r   typing_extensionsr   	getLoggerr0   ro   r   r&   r_   ri   rk   contextmanagerr   r   r   r   r   r,   r+   <module>r      sD     " " " " " "     				 



 0 0 0 0 0 0 0 0 * * * * * * ( ( ( ( ( ( ( (                   ; ; ; ; ; ; ; ; )22222222((((((		8	$	$1% 1% 1% 1% 1% 1% 1% 1%n "&(, , , , ,$    *   $        + + + + + + + +8 # # # # , , , ,
   >     r,   