
    O&i                         U d Z ddlZddlmZmZmZmZmZ ej        dk    rddl	Z	n	 ddl
mZ	 n# e$ r ddl	Z	Y nw xY wi e	j        de	j        de	j        de	j        d	e	j        d
e	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        de	j        diZ eee	j!                 e"f         e#d<   d%de"de"ddfdZ$ed&ddde"ddfd             Z%ed&de	j!        de"de"fd!            Z%d&dee	j!                 de"dee"         fd"Z% G d# d$e	j&                  Z'dS )'z'Helpers for AST (Abstract Syntax Tree).    N)DictListOptionalTypeoverload      )ast3+and&|^/z//~z<<@*%not**orz>>-	OPERATORSexeccodemodereturnzast.ASTc                     	 t          j        | |d          S # t          $ r t          j        | |          cY S t          $ r t          j        | |          cY S w xY w)z{Parse the *code* using the built-in ast or typed_ast libraries.

    This enables "type_comments" feature if possible.
    T)r   type_comments)r   )astparseSyntaxError	TypeError)r   r   s     ^/home/geonatureadmin/si_en_reseau/tutos/venv/lib/python3.11/site-packages/sphinx/pycode/ast.pyr"   r"   '   s    

*yD==== * * * yD)))))) * * * yD))))))*s     AAA nodec                     d S N r'   r   s     r%   unparser,   9       C    c                     d S r)   r*   r+   s     r%   r,   r,   >   r-   r.   c                 |    | dS t          | t                    r| S t          |                              |           S )zUnparse an AST to string.N)
isinstancestr_UnparseVisitorvisitr+   s     r%   r,   r,   C   s?    |t	D#		 4  &&t,,,r.   c                       e Zd Zd#deddfdZdej        defdZeD ]'Z	e e
            d                    e	j                   <   (dej        defd	Zd
ej        deej                 defdZdej        defdZdej        defdZdej        defdZdej        defdZdej        defdZdej        defdZdej        defdZdej        defdZdej         defdZ!dej"        defdZ#dej$        defdZ%dej&        defdZ'dej(        defdZ)dej*        defdZ+dej,        defdZ-e.j/        dk     rAdej0        defdZ1dej2        defdZ3dej4        defdZ5dej6        defd Z7dej8        defd!Z9d" Z:dS )$r3   r&   r   r   Nc                     || _         d S r)   )r   )selfr   s     r%   __init__z_UnparseVisitor.__init__N   s    			r.   r'   c                 &    t           |j                 S r)   )r   	__class__r7   r'   s     r%   	_visit_opz_UnparseVisitor._visit_opQ   s    ((r.   zvisit_{}c                 f    |j         r$|j        d|                     |j                   S |j        S )N: )
annotationargr4   r;   s     r%   	visit_argz_UnparseVisitor.visit_argV   s5    ? 	#xxxDO)D)D)DEE8Or.   r@   defaultc                     |                      |          }|r>|j        r|d|                      |          z  z  }n|d|                      |          z  z  }|S )z&Unparse a single argument to a string.z = %sz=%s)r4   r?   )r7   r@   rB   names       r%   _visit_arg_with_defaultz'_UnparseVisitor._visit_arg_with_default\   s`    zz# 	4~ 4$**W"5"555

7 3 333r.   c           	      6   t          |j                  }t          |j                  }d}t	          |d          r|t          |j                  z  }||z  }t          t          |          |          D ]}|                    dd            t          |j                  }t          t          |          t          |j	                            D ]}|                    dd            g }t	          |d          ret          |j                  D ]4\  }}	|                    |                     |	||                              5|j        r|                    d           t          |j                  D ]7\  }}	|                    |                     |	|||z                                 8|j        r0|                    d|                     |j                  z              |j	        r|j        s|                    d           t          |j	                  D ]4\  }}	|                    |                     |	||                              5|j        r0|                    d|                     |j                  z              d                    |          S )Nr   posonlyargsr   r   r   , )listdefaultslenargshasattrrG   rangeinsertkw_defaults
kwonlyargs	enumerateappendrE   varargr4   kwargjoin)
r7   r'   rJ   positionalsrG   _rP   rL   ir@   s
             r%   visit_argumentsz_UnparseVisitor.visit_argumentsf   s   -1$--@-@$)nn4'' 	'3t/000K;&Ks8}}k22 	% 	%AOOAt$$$$04T5E0F0Fs;''T_)=)=>> 	( 	(Aq$''''4'' 	!#D$455 L L3D88hqkJJKKKK !C   	** 	V 	VFAsKK44S(1{?:STTUUUU; 	7KKdjj555666? 	4; 	KK00 	K 	KFAsKK44S+a.IIJJJJ: 	7KKtzz$*555666yyr.   c                 J    |                      |j                  d|j        S )N.)r4   valueattrr;   s     r%   visit_Attributez_UnparseVisitor.visit_Attribute   s%    **TZ0000$))<<r.   c                     t          |j        t          j                  r:d                    t           j        |j        |j        |j        f                    S d                     fd|j        |j        |j        fD                       S )Nr&    c              3   B   K   | ]}                     |          V  d S r)   r4   .0er7   s     r%   	<genexpr>z._UnparseVisitor.visit_BinOp.<locals>.<genexpr>   s-      PP!

1PPPPPPr.   )	r1   opr!   PowrV   mapr4   leftrightr;   s   ` r%   visit_BinOpz_UnparseVisitor.visit_BinOp   sy    dgsw'' 	N773tzDItw
+KLLMMMxxPPPP	47DJ/OPPPPPPr.   c                      d                      |j                  z  }|                     fd|j        D                       S )Nz %s c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z/_UnparseVisitor.visit_BoolOp.<locals>.<genexpr>   s-      ::tzz!}}::::::r.   )r4   rh   rV   values)r7   r'   rh   s   `  r%   visit_BoolOpz_UnparseVisitor.visit_BoolOp   sD    djj)))ww::::dk::::::r.   c                       fd|j         D              fd|j        D             z   }                     |j                  dd                    |          dS )Nc                 :    g | ]}                     |          S r*   rc   rd   s     r%   
<listcomp>z._UnparseVisitor.visit_Call.<locals>.<listcomp>   s#    2221A222r.   c                 X    g | ]&}|j         d                     |j                  'S )=)r@   r4   r]   re   kr7   s     r%   rt   z._UnparseVisitor.visit_Call.<locals>.<listcomp>   s5    OOOAAEEE4::ag#6#6#67OOOr.   (rH   ))rL   keywordsr4   funcrV   )r7   r'   rL   s   `  r%   
visit_Callz_UnparseVisitor.visit_Call   sj    2222	222OOOOOOOP::di0000$))D////BBr.   c                 "   |j         t          u rdS t          |j         t          t          t
          f          rE| j        r*t          j        dk    rt          j
        | j        |          S t          |j                   S t          |j                   S )N...r   )r]   Ellipsisr1   intfloatcomplexr   sysversion_infor!   get_source_segmentreprr;   s     r%   visit_Constantz_UnparseVisitor.visit_Constant   s{    :!!5
S%$9:: 	$y (S-66-di>>>DJ'''
###r.   c                       fd|j         D             } fd|j        D             }d t          ||          D             }dd                    |          z   dz   S )Nc              3   B   K   | ]}                     |          V  d S r)   rc   rw   s     r%   rg   z-_UnparseVisitor.visit_Dict.<locals>.<genexpr>   s-      11!

1111111r.   c              3   B   K   | ]}                     |          V  d S r)   rc   )re   vr7   s     r%   rg   z-_UnparseVisitor.visit_Dict.<locals>.<genexpr>   s-      55A$**Q--555555r.   c              3   ,   K   | ]\  }}|d z   |z   V  dS )r>   Nr*   )re   rx   r   s      r%   rg   z-_UnparseVisitor.visit_Dict.<locals>.<genexpr>   s.      <<$!QTA<<<<<<r.   {rH   })keysrp   ziprV   )r7   r'   r   rp   itemss   `    r%   
visit_Dictz_UnparseVisitor.visit_Dict   sr    1111ty1115555555<<#dF*;*;<<<TYYu%%%++r.   c                 6    |                      |j                  S r)   )r4   r]   r;   s     r%   visit_Indexz_UnparseVisitor.visit_Index   s    zz$*%%%r.   c                 <    d|                      |j                  z  S )Nzlambda %s: ...)r4   rL   r;   s     r%   visit_Lambdaz_UnparseVisitor.visit_Lambda   s    $**TY"7"777r.   c                 \     dd                      fd|j        D                       z   dz   S )N[rH   c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z-_UnparseVisitor.visit_List.<locals>.<genexpr>   -      @@tzz!}}@@@@@@r.   ]rV   eltsr;   s   ` r%   
visit_Listz_UnparseVisitor.visit_List   6    TYY@@@@di@@@@@@3FFr.   c                     |j         S r)   )idr;   s     r%   
visit_Namez_UnparseVisitor.visit_Name   s	    wr.   c                 \     dd                      fd|j        D                       z   dz   S )Nr   rH   c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z,_UnparseVisitor.visit_Set.<locals>.<genexpr>   r   r.   r   r   r;   s   ` r%   	visit_Setz_UnparseVisitor.visit_Set   r   r.   c                 `    dt           j        dt          fd} ||j                  rKd                     fd|j        j        D                       }                     |j                  d|dS t          |j        t           j	                  re ||j        j                  rPd                     fd|j        j        j        D                       }                     |j                  d|dS                      |j                  d                     |j                  dS )	Nr]   r   c                     t          | t          j                  o2t          | j                  ot          d | j        D                        S )Nc              3   J   K   | ]}t          |t          j                  V  d S r)   )r1   r!   Starred)re   elts     r%   rg   zK_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuple.<locals>.<genexpr>   s.      KK
344KKKKKKr.   )r1   r!   Tupleboolr   any)r]   s    r%   is_simple_tuplez8_UnparseVisitor.visit_Subscript.<locals>.is_simple_tuple   sN    5#),, LUZ  LKK
KKKKKKr.   rH   c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z2_UnparseVisitor.visit_Subscript.<locals>.<genexpr>   s-      DDqTZZ]]DDDDDDr.   r   r   c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z2_UnparseVisitor.visit_Subscript.<locals>.<genexpr>   s-      JJqTZZ]]JJJJJJr.   )
r!   ASTr   slicerV   r   r4   r]   r1   Index)r7   r'   r   r   s   `   r%   visit_Subscriptz_UnparseVisitor.visit_Subscript   s=   	37 	t 	 	 	 	 ?4:&& 	O99DDDDDJODDDDDD#zz$*5555ttt<<
CI.. 	O??4:CS3T3T 	O99JJJJDJ4D4IJJJJJD#zz$*5555ttt<<#zz$*5555tzz$*7M7M7M7MNNr.   c                    t          |j        t          j                  r7|                     |j                  d|                     |j                  S |                     |j                  |                     |j                  S )Nra   )r1   rh   r!   Notr4   operandr;   s     r%   visit_UnaryOpz_UnparseVisitor.visit_UnaryOp   sx     dgsw'' 	M"jj11114::dl3K3K3KLLDG,,,djj.F.F.FGGr.   c                     t          |j                  dk    rdS t          |j                  dk    r#d                     |j        d                   z  S dd                     fd|j        D                       z   dz   S )	Nr   z()   z(%s,)ry   rH   c              3   B   K   | ]}                     |          V  d S r)   rc   rd   s     r%   rg   z._UnparseVisitor.visit_Tuple.<locals>.<genexpr>   s-      "D"DQ4::a=="D"D"D"D"D"Dr.   rz   )rK   r   r4   rV   r;   s   ` r%   visit_Tuplez_UnparseVisitor.visit_Tuple   s~    ty>>Q4^^q  TZZ	!5555"D"D"D"D$)"D"D"DDDDsJJr.   r   c                 *    t          |j                  S r)   r   sr;   s     r%   visit_Bytesz_UnparseVisitor.visit_Bytes       <<r.   c                     dS )Nr   r*   r;   s     r%   visit_Ellipsisz_UnparseVisitor.visit_Ellipsis   s    5r.   c                 *    t          |j                  S r)   )r   r]   r;   s     r%   visit_NameConstantz"_UnparseVisitor.visit_NameConstant   s    
###r.   c                 *    t          |j                  S r)   )r   nr;   s     r%   	visit_Numz_UnparseVisitor.visit_Num   r   r.   c                 *    t          |j                  S r)   r   r;   s     r%   	visit_Strz_UnparseVisitor.visit_Str   r   r.   c                 J    t          dt          |          j        z            )NzUnable to parse %s object)NotImplementedErrortype__name__r;   s     r%   generic_visitz_UnparseVisitor.generic_visit   s    !"=T

@S"STTTr.   r&   );r   
__module____qualname__r2   r8   r!   r   r<   r   _oplocalsformatr@   rA   r   rE   	argumentsrZ   	Attributer_   BinOprm   BoolOprq   Callr}   Constantr   r   r   r   r   Lambdar   r   r   Namer   Setr   	Subscriptr   UnaryOpr   r   r   r   r   Bytesr   r   r   NameConstantr   Numr   Strr   r   r*   r.   r%   r3   r3   M   s        S $    )cg )# ) ) ) ) > >4=""3<0011cg #    37 Xcg=N SV    $CM $c $ $ $ $L=CM =c = = = =Q	 Qc Q Q Q Q; ; ; ; ; ;Csx CC C C C C
	$3< 	$C 	$ 	$ 	$ 	$,sx ,C , , , ,&	 &c & & & &8 8 8 8 8 8Gsx GC G G G Gsx C    Gcg G# G G G GOCM Oc O O O O"H#+ H# H H H HK	 Kc K K K K &  	 CI 	 # 	  	  	  	 	s| 	 	 	 	 		$3+; 	$ 	$ 	$ 	$ 	$	 #' 	 c 	  	  	  	 	 #' 	 c 	  	  	  	 U U U U Ur.   r3   )r   r   )(__doc__r   typingr   r   r   r   r   r   r!   	typed_astr   ImportErrorAddAndBitAndBitOrBitXorDivFloorDivInvertLShiftMatMultMultModr   ri   OrRShiftSubUAddUSubr   r   r2   __annotations__r"   r,   NodeVisitorr3   r*   r.   r%   <module>r      s   - - - 



 7 7 7 7 7 7 7 7 7 7 7 7 7 7fJJJJ)))))))   




'GS'GU' J' Is	'
 J' GS' L$' J' J' K' Hc' GS' GU' GT' FD'  J!'" GS#'$ HcHc'' '	4SWs"#   .* * *3 *I * * * *$ 
 $ c 4    
 
 #'  c    
- -(37# -3 - - - - -cU cU cU cU cUco cU cU cU cU cUs   . 	::