
    Ae]                         d dl mZmZ ddlmZ ddlmZ ddlmZ ddlm	Z	m
Z
 ddlmZ  G d	 d
e      Z G d de      Zy)    )absolute_importprint_function   )CythonTransform)EncodedString)Options)
PyrexTypes	ExprNodes   )ExpressionWriterc                       e Zd Zd Zd Zy)AnnotationWriterc                 &    | j                  d       y )Nz<???>putselfnodes     Alib/python3.12/site-packages/Cython/Compiler/AutoDocTransforms.py
visit_NodezAnnotationWriter.visit_Node   s        c                 &    | j                  d       y )Nz<lambda>r   r   s     r   visit_LambdaNodez!AnnotationWriter.visit_LambdaNode   s    r   N)__name__
__module____qualname__r   r    r   r   r   r   
   s    r   r   c                        e Zd Z fdZd Zd Zd Z	 	 	 ddZd Z	 	 	 	 ddZ	d Z
 fd	Zd
 Zd Zd Zd Zd Z xZS )EmbedSignaturec                 H    t         t        |   |       d | _        d | _        y N)superr   __init__
class_name
class_node)r   context	__class__s     r   r#   zEmbedSignature.__init__   s     nd,W5r   c                 <    t               }|j                  |      }|S r!   )r   write)r   r   writerresults       r   	_fmt_exprzEmbedSignature._fmt_expr   s    !#d#r   c                    |j                   t        j                  u s|j                  r|j                  }n'|j                   j                  |j                  d      }|j                  rT| j                  |j                        }|d|z  z   }|j                  r#| j                  |j                        }|d|z  z   }|S |j                  r#| j                  |j                        }|d|z  z   }|S )Nr   for_display: %sz = %sz=%s)	typer	   py_object_typeis_self_argnamedeclaration_code
annotationr,   default)r   argdocr6   r7   s        r   _fmt_argzEmbedSignature._fmt_arg!   s    88z000COO((C((++CHH!+DC>>7J*,-C{{..5Ww./ 
 [[nnS[[1G)C
r   c                 |    |j                   }|j                  r#| j                  |j                        }|d|z  z   }|S )Nr0   )r4   r6   r,   )r   r8   arg_docr6   s       r   _fmt_star_argzEmbedSignature._fmt_star_arg2   s8    ((>>7J*!45Gr   c                 V   g }|D ]=  }|r|j                   j                  r| j                  |      }	|j                  |	       ? |r'| j	                  |      }	|j                  |d|	z         n|r|j                  |d       |r%| j	                  |      }	|j                  d|	z         |S )Nz*%s*z**%s)entryr3   r:   appendr=   insert)
r   argsnpargspargsnkargskargs	hide_selfarglistr8   r<   s
             r   _fmt_arglistzEmbedSignature._fmt_arglist9   s      	(CCII$9$9--,w'	( ((/GNN657?3NN63'((/GNN6G+,r   c                 N    |t         j                  u ry |j                  dd      S )N r   r.   )r	   r2   r5   )r   rets     r   _fmt_ret_typezEmbedSignature._fmt_ret_typeL   s)    *+++'''::r   c                     | j                  ||||||
      }dj                  |      }|d|d}|r|d|}d }|r| j                  |      }n|	r| j                  |	      }|r|d|}|S )N)rH   z, ().z -> )rJ   joinr,   rN   )r   cls_name	func_namerC   rD   rE   rF   rG   return_exprreturn_typerH   rI   arglist_docfunc_docret_docs                  r   _fmt_signaturezEmbedSignature._fmt_signatureR   s    
 ##D$*E$*E.7 $ 9 ii((+6"*H5Hnn[1G((5G%-w7Hr   c                     |r|d|S |S )N
r   )r   	signaturenode_docs      r   _embed_signaturezEmbedSignature._embed_signatureh   s    ((33r   c                 N    t         j                  s|S t        t        |   |      S r!   )r   
docstringsr"   r   __call__)r   r   r'   s     r   rc   zEmbedSignature.__call__n   s#    !!K7==r   c                     | j                   }| j                  }|| _        	 |j                  | _         | j	                  |       || _         || _        |S # t        $ r |j                   | _         Y =w xY wr!   )r$   r%   r4   AttributeErrorvisitchildren)r   r   oldnameoldclasss       r   visit_ClassDefNodez!EmbedSignature.visit_ClassDefNodet   sj    //??	."iiDO 	4 !"  	."ooDO	.s   A A0/A0c                     |S r!   r   r   s     r   r   zEmbedSignature.visit_LambdaNode   s    r   c                 v   | j                   d   s|S d}d}|j                  j                  r2| j                  xr |j                  dk(  }|s|S d | j
                  }}d}n| j
                  |j                  }}t        |dd      }t        |j                        |z
  }| j                  |||j                  ||j                  ||j                  |j                  d |
      }|r|r+| j                  j                  j                  j                  }	n|j                  }	|	j                  |	j                  }
n2|s.t        |dd       !|j                   j                  j                  }
nd }
| j#                  ||
      }t%        |      |	_        |s1t        |dd       $t%        |      |j                   j                  _        |S )	NembedsignatureFr#   Tnum_kwonly_argsr   )rV   rW   rH   py_func)current_directivesr@   
is_specialr%   r4   r$   getattrlenrC   r[   star_argstarstar_argreturn_type_annotationr1   scoper9   rn   r`   r   )r   r   is_constructorrH   r$   rU   rF   rD   r^   
doc_holderold_docnew_docs               r   visit_DefNodezEmbedSignature.visit_DefNode   s   &&'78K	::  !__Hj1HN!$($//	JI$(OOTYY	J0!4TYY&(''	499DMMD%%33	 ( 3	 !__2277==
!ZZ
~~)$..#i(F(R,,,,00++Iw?G*73JN!gdIt&D&P)6w)?""&r   c                    | j                   d   s|S |j                  s|S | j                  | j                  |j                  j
                  j                  |j                  j                  |j                        }|r|j                  j                  |j                  j                  }n0t        |dd       !|j                  j                  j                  }nd }| j                  ||      }t        |      |j                  _
        t        |d      r0|j                  $t        |      |j                  j                  _
        |S )Nrl   )rW   rn   )ro   overridabler[   r$   
declaratorbaser4   rC   rW   r@   r9   rq   rn   r`   r   hasattr)r   r   r^   ry   rz   s        r   visit_CFuncDefNodez!EmbedSignature.visit_CFuncDefNode   s   &&'78KK''OOT__1166OO  (( ( *	 zz~~)**..y$/;,,,,00++Iw?G*73DJJNtY'DLL,D)6w)?""&r   c                    | j                   d   s|S |j                  }|j                  dk(  r|j                  j	                  dd      }|j                  j
                  sd|z  }n2|j                  j                  r|j                  j                  dz   |z   }|j                  d|}| j                  ||j                        }t        |      |_
        |S )	Nrl   publicrL   r   r.   z'%s'rR   z: )ro   r@   
visibilityr1   r5   is_pyobjectis_extension_typemodule_namer4   r`   r9   r   )r   r   r@   	type_namer^   rz   s         r   visit_PropertyNodez!EmbedSignature.visit_PropertyNode   s    &&'78K

x'

33BA3FI::))"Y.	--!JJ22S89D	$)JJ	:I++IuyyAG%g.EIr   )r   Nr   NF)r   Nr   NNNF)r   r   r   r#   r,   r:   r=   rJ   rN   r[   r`   rc   ri   r   r{   r   r   __classcell__)r'   s   @r   r   r      sc    
" &*%)$&; (,'+#'38	,>'R.r   r   N)
__future__r   r   Visitorr   StringEncodingr   rL   r   r	   r
   
CodeWriterr   r   r   r   r   r   <module>r      s2    6 $ )  # )' B_ Br   