
    7 fT                    v   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mZ ddlmZ dd	lmZmZ er
dd
lmZmZ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Any)logging)isboundmethodsafe_getattr)	GeneratorIteratorSequencec                       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 z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       M/var/www/equiseq/venv/lib/python3.11/site-packages/sphinx/ext/autodoc/mock.pyr(   z_MockObject.__new__   s    t99>>ja%88>a.JS  %d1gz/J1;QQ Q Q Q 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   r1   s    r*   __len__z_MockObject.__len__+   s    qr+   keystrboolc                    dS )NFr   r1   r7   s     r*   __contains__z_MockObject.__contains__.   s    ur+   r   c                     t          g           S r.   )iterr5   s    r*   __iter__z_MockObject.__iter__1   s    Bxxr+   basesr#   c                    | j         fS r.   r$   )r1   r@   s     r*   __mro_entries__z_MockObject.__mro_entries__4   s      r+   c                b     t          t          |          | j        | j                              S r.   )r%   r8   r&   r$   r;   s     r*   __getitem__z_MockObject.__getitem__7   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__:   s!    I~c4#8$.IIKKKr+   c                <    |                                  }||_        |S r.   )r$   r   )r1   r   r   calls       r*   __call__z_MockObject.__call__=   s    ~~)-&r+   c                    | j         S r.   )r&   r5   s    r*   __repr__z_MockObject.__repr__B   s    $$r+   )r   r
   r   r
   r   r
   )r   r
   r   r
   r   r,   )r   r3   )r7   r8   r   r9   )r   r   )r@   r#   r   r#   )r7   r
   r   r   )r7   r8   r   r   r   r8   )r/   
__module__r0   __doc__r&   __sphinx_mock__r   __annotations__r(   r2   r6   r<   r?   rC   rE   rG   rJ   rL   __classcell__rB   s   @r*   r   r      s#        ''$HO133333$ $ $ $ $ $* * * *         ! ! ! !Q Q Q QL L L L   
% % % % % % % %r+   r   r   namer8   moduler   r
   r    decorator_argsr#   r   c                n    ||dz   | z   | |d}|                     |pi            t          | |f|          S )N.)rN   r&   r/   r   )updatetype)rS   rT   r   r    rU   attrss         r*   r%   r%   F   sP    !!'#!4*8: :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   TrS   r8   r   r,   c                f    t                                          |           g | _        g | _        d S r.   )r'   r2   __all____path__)r1   rS   r$   s     r*   r2   z_MockModule.__init__V   s-    "$#%r+   r   c                <     t          || j                              S r.   )r%   r/   )r1   rS   s     r*   rG   z_MockModule.__getattr__[   s    2~dDM22444r+   c                    | j         S r.   )r/   r5   s    r*   rL   z_MockModule.__repr__^   s
    }r+   )rS   r8   r   r,   )rS   r8   r   r   rM   )r/   rN   r0   rO   osdevnull__file__rP   r2   rG   rL   rR   rB   s   @r*   r\   r\   Q   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'   r2   rg   )r1   rg   r$   s     r*   r2   zMockLoader.__init__d   s$    r+   specr   r   c                    t                               d|j                   | j        j                            |j                   t          |j                  S )Nz%[autodoc] adding a mock module as %s!)loggerdebugrS   rg   mocked_modulesappendr\   )r1   rj   s     r*   create_modulezMockLoader.create_moduleh   sD    <diHHH"))$)44449%%%r+   rT   c                    d S r.   r   )r1   rT   s     r*   exec_modulezMockLoader.exec_modulem   s    r+   )rg   rh   r   r,   )rj   r   r   r   )rT   r   r   r,   )r/   rN   r0   rO   r2   rp   rr   rR   rB   s   @r*   rf   rf   b   sk             & & & &
       r+   rf   c                  8     e Zd ZdZd fdZ	 dddZddZ xZS )rh   zA finder for mocking.modnames	list[str]r   r,   c                    t                                                       || _        t          |           | _        g | _        d S r.   )r'   r2   rt   rf   loaderrn   )r1   rt   r$   s     r*   r2   zMockFinder.__init__t   s=      &&)+r+   Nfullnamer8   pathSequence[bytes | str] | NonetargetModuleType | NoneModuleSpec | Nonec                    | j         D ]7}||k    s|                    |dz             rt          || j                  c S 8d S )NrW   )rt   
startswithr   rw   )r1   rx   ry   r{   modnames        r*   	find_speczMockFinder.find_specz   sY    } 	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)rn   sysmodulespop)r1   r   s     r*   invalidate_cacheszMockFinder.invalidate_caches   s7    * 	+ 	+GKOOGT****	+ 	+r+   )rt   ru   r   r,   r.   )rx   r8   ry   rz   r{   r|   r   r}   )r   r,   )r/   rN   r0   rO   r2   r   r   rR   rB   s   @r*   rh   rh   q   su        , , , , , , /3    + + + + + + + +r+   rh   rt   ru   Generator[None, None, 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)rh   r   	meta_pathinsertremover   )rt   rg   s     r*   mockr      s      #H%%Q'''V$$$  """"" 	V$$$  """"s   3A, ,5B!subjectr9   c                ,    t          | t                    S )z'Check if the object is a mocked module.)r"   r\   r   s    r*   ismockmoduler      s    g{+++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.rP   NFT__mro__r   )
r   AttributeErrorr"   r\   r   r   __func__rY   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+   )rS   r8   rT   r8   r   r
   r    r
   rU   r#   r   r
   )rt   ru   r   r   )r   r
   r   r9   )r   r   r   r
   )'rO   
__future__r   
contextlibrb   r   importlib.abcr   r   importlib.machineryr   typesr   r   typingr	   r
   sphinx.utilr   sphinx.util.inspectr   r   collections.abcr   r   r   	getLoggerr/   rl   r   r%   r\   rf   rh   contextmanagerr   r   r   r   r   r+   r*   <module>r      s,     " " " " " "     				 



 0 0 0 0 0 0 0 0 * * * * * * ( ( ( ( ( ( ( ( % % % % % % % %       ; ; ; ; ; ; ; ; >==========		8	$	$-% -% -% -% -% -% -% -%` >I%)2, , , , ,    *   "       + + + + + + + +0 # # # # , , , ,
   >     r+   