
    O&i                        d 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mZmZmZmZmZmZ ddlmZ ddlmZmZ  ej        e          Z G d	 d
          ZeddfdedededededefdZ G d de          Z  G d de          Z! G d de          Z"ej#        dee         ded         fd            Z$dede%fdZ&dede%fdZ'dedefdZ(dS ) zmock for autodoc    N)LoaderMetaPathFinder)
ModuleSpec)
MethodType
ModuleType)Any	GeneratorIteratorListOptionalSequenceTupleUnion)logging)isboundmethodsafe_getattrc                        e Zd ZU dZd ZdZ dZdZeedf         e	d<   deded	ef fd
Z
deded	dfdZd	efdZded	efdZd	efdZded	efdZded	d fdZded	d fdZdeded	efdZd	efdZ xZS )_MockObjectUsed by autodoc_mock_imports. T .__sphinx_decorator_args__args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       d/home/geonatureadmin/si_en_reseau/tutos/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###    Nc                     | j         | _        d S N)__name____qualname__)selfr   r   s      r,   __init__z_MockObject.__init__#   s     Mr-   c                     dS )Nr   r   r2   s    r,   __len__z_MockObject.__len__&   s    qr-   keyc                     dS )NFr   r2   r7   s     r,   __contains__z_MockObject.__contains__)   s    ur-   c                      t          g           S r/   )iterr5   s    r,   __iter__z_MockObject.__iter__,   s    Bxxr-   basesc                     | j         fS r/   r&   )r2   r>   s     r,   __mro_entries__z_MockObject.__mro_entries__/   s      r-   c                 b     t          t          |          | j        | j                              S r/   )r'   strr(   r&   r9   s     r,   __getitem__z_MockObject.__getitem__2   s'    N~c#hh(=t~NNPPPr-   c                 H     t          || j        | j                              S r/   )r'   r(   r&   r9   s     r,   __getattr__z_MockObject.__getattr__5   s!    I~c4#8$.IIKKKr-   c                 <    |                                  }||_        |S r/   )r&   r   )r2   r   r   calls       r,   __call__z_MockObject.__call__8   s    ~~)-&r-   c                     | j         S r/   )r(   r5   s    r,   __repr__z_MockObject.__repr__=   s    $$r-   )r0   
__module__r1   __doc__r(   __sphinx_mock__r   r   r   __annotations__r*   r3   intr6   rC   boolr:   r
   r=   rA   rD   rF   rI   rK   __classcell__r@   s   @r,   r   r      s        ''$HO13uS#X333$C $3 $3 $ $ $ $ $ $*c *S *T * * * *         (    !U !u ! ! ! !Qs Q} Q Q Q QLs L} L L L Lc S S    
%# % % % % % % % %r-   r   r   namemoduler!   r"   decorator_argsr   c                 n    ||dz   | z   | |d}|                     |pi            t          | |f|          S )N.)rL   r(   r0   r   )updatetype)rS   rT   r!   r"   rU   attrss         r,   r'   r'   A   sP    !!'#!4*8: :E 
LL!r"""zmU+++r-   c                   Z     e Zd ZdZej        ZdZdeddf fdZ	dede
fdZdefdZ xZS )	_MockModuler   TrS   r   Nc                 f    t                                          |           g | _        g | _        d S r/   )r)   r3   __all____path__)r2   rS   r&   s     r,   r3   z_MockModule.__init__Q   s-    "$#%r-   c                 <     t          || j                              S r/   )r'   r0   )r2   rS   s     r,   rF   z_MockModule.__getattr__V   s    2~dDM22444r-   c                     | j         S r/   )r0   r5   s    r,   rK   z_MockModule.__repr__Y   s
    }r-   )r0   rL   r1   rM   osdevnull__file__rN   rC   r3   r   rF   rK   rR   r@   s   @r,   r\   r\   L   s        ''zHO&S &T & & & & & &
5 5 5 5 5 5#        r-   r\   c                   D     e Zd ZdZd fdZdedefdZd	eddfd
Z xZ	S )
MockLoaderzA loader for mocking.finder
MockFinderr   Nc                 V    t                                                       || _        d S r/   )r)   r3   rg   )r2   rg   r&   s     r,   r3   zMockLoader.__init___   s$    r-   specc                     t                               d|j                   | j        j                            |j                   t          |j                  S )Nz%[autodoc] adding a mock module as %s!)loggerdebugrS   rg   mocked_modulesappendr\   )r2   rj   s     r,   create_modulezMockLoader.create_modulec   sD    <diHHH"))$)44449%%%r-   rT   c                     d S r/   r   )r2   rT   s     r,   exec_modulezMockLoader.exec_moduleh   s    r-   )rg   rh   r   N)
r0   rL   r1   rM   r3   r   r   rp   rr   rR   r@   s   @r,   rf   rf   ]   s             &* & & & & &
*         r-   rf   c            
            e Zd ZdZdee         ddf fdZ	 ddedeee	e
ef                           dedee         fd	Zdd
Z xZS )rh   zA finder for mocking.modnamesr   Nc                     t                                                       || _        t          |           | _        g | _        d S r/   )r)   r3   rt   rf   loaderrn   )r2   rt   r&   s     r,   r3   zMockFinder.__init__o   s=      &&)+r-   fullnamepathtargetc                     | j         D ]7}||k    s|                    |dz             rt          || j                  c S 8d S )NrW   )rt   
startswithr   rv   )r2   rw   rx   ry   modnames        r,   	find_speczMockFinder.find_specu   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)r2   r|   s     r,   invalidate_cacheszMockFinder.invalidate_caches~   s7    * 	+ 	+GKOOGT****	+ 	+r-   r/   )r   N)r0   rL   r1   rM   r   rC   r3   r   r   r   bytesr   r   r}   r   rR   r@   s   @r,   rh   rh   l   s        ,c ,t , , , , , , (, # XhuUCZ?P6Q-R $080D   + + + + + + + +r-   rh   rt   )NNNc              #   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!subjectc                 ,    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.rN   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-   ))rM   
contextlibrb   r   importlib.abcr   r   importlib.machineryr   typesr   r   typingr   r	   r
   r   r   r   r   r   sphinx.utilr   sphinx.util.inspectr   r   	getLoggerr0   rl   r   rC   r'   r\   rf   rh   contextmanagerr   rQ   r   r   r   r   r-   r,   <module>r      s         				 



 0 0 0 0 0 0 0 0 * * * * * * ( ( ( ( ( ( ( ( S S S S S S S S S S S S S S S S S S S S       ; ; ; ; ; ; ; ;		8	$	$-% -% -% -% -% -% -% -%` >I%)2, , ,c ,s ,",;@,JM, , , ,    *   "       + + + + + + + +0 #49 #+;!< # # # # ,# ,$ , , , ,
C D    >       r-   