
    ڏDj0                         d dl Z ddlmZ ddlmZ ddlmZ ddlmZ ddlm	Z	 dd	l
mZ  G d
 de	      Z G d de      Zy)    N   )CythonTransform)EncodedString)Options)
PyrexTypes   )ExpressionWriter)warningc                   *    e Zd ZdZddZd Zd Zd Zy)AnnotationWriterzW
    A Cython code writer for Python expressions in argument/variable annotations.
    Nc                 J    t        j                  |        || _        d| _        y)zdescription is optional. If specified it is used in
        warning messages for the nodes that don't convert to string properly.
        If not specified then no messages are generated.
        FN)r	   __init__description
incomplete)selfr   s     eC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Compiler/AutoDocTransforms.pyr   zAnnotationWriter.__init__   s!    
 	!!$'&    c                     | j                  d       d| _        | j                  r2t        |j                  dj                  | j                        d       y y )Nz<???>Tz5Failed to convert code to string representation in {}r   levelputr   r   r
   posformatr   nodes     r   
visit_NodezAnnotationWriter.visit_Node   sK    DHHKRR((*124 r   c                     | j                  d       d| _        | j                  r2t        |j                  dj                  | j                        d       y y )Nz<lambda>Tz7Failed to convert lambda to string representation in {}r   r   r   r   s     r   visit_LambdaNodez!AnnotationWriter.visit_LambdaNode    sK    DHHMTT((*124 r   c                 N    | j                  |j                  j                         y N)r   stringvaluer   s     r   visit_AnnotationNodez%AnnotationWriter.visit_AnnotationNode)   s    ""#r   r!   )__name__
__module____qualname____doc__r   r   r   r$    r   r   r   r      s     44$r   r   c                        e Zd Z fdZd Z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                 @    t         |   |       d | _        d | _        y r!   )superr   
class_name
class_node)r   context	__class__s     r   r   zEmbedSignature.__init__/   s    !r   c                 @    t        d      }|j                  |      }|S )NT)allow_unknown_nodes)r	   writer   r   writerresults       r   	_fmt_exprzEmbedSignature._fmt_expr4   s    !d;d#r   c                 <    t               }|j                  |      }|S r!   )r   r4   r5   s       r   _fmt_annotationzEmbedSignature._fmt_annotation:   s    !#d#r   c                 ^    | j                   d   }|dk(  | _        |dk(  | _        |dk(  | _        y )Nzembedsignature.formatcpythonclinic)current_directivesis_format_cis_format_pythonis_format_clinic)r   signature_formats     r   _setup_formatzEmbedSignature._setup_format@   s;    223JK+s2 0H < 0H <r   c                    |j                   }d }d }|j                  r| j                  rd}n|j                  r| j                  rd}n| j                  rD|j
                  t        j                  ur[|j
                  j                  |j                   d      }n3| j                  r'|j                  s| j                  |j
                        }|j                  r'| j                  s| j                  |j                        }|j                  r| j                  |j                        }|r|d|z  z   }|r|d|z  z   }|S |r|d|z  z   }|S )Nz$selfz$typer   for_display: %sz = %sz=%s)nameis_self_argrB   is_type_argr@   typer   py_object_typedeclaration_coderA   
annotation	_fmt_typer:   defaultr8   )r   argarg_docrO   
defaultvals        r   _fmt_argzEmbedSignature._fmt_argF   s   ((

??$$!__$$!xxz888((33CHH!3L"">>!^^CHH5
>>((!11#..A
;;4J*!45G!Wz%9:  !34Gr   c                     |j                   }|j                  r/| j                  s#| j                  |j                        }|d|z  z   }|S )NrH   )rI   rO   rB   r:   )r   rR   rS   rO   s       r   _fmt_star_argzEmbedSignature._fmt_star_argc   sC    ((>>((!11#..A
!Vj%89r   c                    g }|D ]=  }	|r|	j                   j                  r| j                  |	      }
|j                  |
       ? |r*| j	                  |      }
|j                  ||z   d|
z         n|r|j                  ||z   d       |r|j                  |d       |r%| j	                  |      }
|j                  d|
z         |S )Nz*%s*/z**%s)entryrJ   rU   appendrW   insert)r   argsnpoargsnpargspargsnkargskargs	hide_selfarglistrR   rS   s              r   _fmt_arglistzEmbedSignature._fmt_arglistk   s      	(CCII$9$9--,w'	( ((/GNN6G+UW_=NN6G+S1NN7C(((/GNN6G+,r   c                 j   |t         j                  u ry | j                  r|j                  dd      }|S | j                  rsd }|j
                  r| j                  d   }n|j                  r|j                         }|5|j                  dd      }|j                  dd      j                  dd      }|S y )	N r   rF   c_string_type _rY   p)
r   rM   r@   rN   rA   	is_stringr?   
is_numericpy_type_namereplace)r   rL   coderO   s       r   rP   zEmbedSignature._fmt_type   s    :,,,(((;DK""J~~!44_E
!..0
!,,RQ,?!\\#s3;;CE
r   c           	         | j                  |||||||      }dj                  |      }|d|d}| j                  r	|r|d|}| j                  s2d }|	r| j	                  |	      }n|
r| j                  |
      }|r|d|}|S )N)rd   z, ().z -> )rf   joinr@   rB   r:   rP   )r   cls_name	func_namer^   r_   r`   ra   rb   rc   return_exprreturn_typerd   re   arglist_docfunc_docret_docs                   r   _fmt_signaturezEmbedSignature._fmt_signature   s    
 ##'65&% $ 
 ii((+6"*H5H$$G..{;..5)17;r   c                     | j                   r| j                  d   r|S |r-| j                   rd}nd}t        j                  |      }|||fz  S | j                   rd}||z  S d}||z  S )Nbindingz	%s
--

%sz%s

%sz%s
--

z%s)rB   r?   inspectcleandoc)r   	signaturenode_docdocfmts       r   _embed_signaturezEmbedSignature._embed_signature   s      T%<%<Y%GO$$'#''1HY111$$% I%% I%%r   c                 F    t         j                  s|S t        |   |      S r!   )r   
docstringsr-   __call__)r   r   r1   s     r   r   zEmbedSignature.__call__   s!    !!K7#D))r   c                     | j                   }| j                  }|| _        	 |j                  | _         | j	                  |       || _         || _        |S # t        $ r |j                   | _         Y =w xY wr!   )r.   r/   rI   AttributeErrorvisitchildren)r   r   oldnameoldclasss       r   visit_ClassDefNodez!EmbedSignature.visit_ClassDefNode   sj    //??	."iiDO 	4 !"  	."ooDO	.s   A A0/A0c                     |S r!   r)   r   s     r   r   zEmbedSignature.visit_LambdaNode   s    r   c                    | j                   d   s|S | j                          d}d}|j                  j                  ra| j                  xr |j
                  dk(  }|r)d }|j
                  }| j                  r@| j                  }d}n1| j                  |j
                  }}n| j                  |j
                  }}t        |dd      }t        |dd      }t        |j                        |z
  |z
  }| j                  |||j                  |||j                  ||j                  |j                  d |      }	|	r|r7| j                  r+| j                  j                  j                  j                   }
n|j                  }
|
j"                  |
j"                  }n2|s.t        |d	d       !|j$                  j                  j"                  }nd }| j'                  |	|      }|j                  j                  r|s|j                  j(                  t+        |      |
_        |s1t        |d	d       $t+        |      |j$                  j                  _        |S )
NembedsignatureFr   Tnum_posonly_argsr   num_kwonly_args)ry   rz   rd   py_func)r?   rD   r[   
is_specialr/   rI   r@   r.   getattrlenr^   r~   star_argstarstar_argreturn_type_annotationrL   scopedocr   r   wrapperbase_cnamer   )r   r   is_constructorrd   r.   rx   r_   rb   r`   r   
doc_holderold_docnew_docs                r   visit_DefNodezEmbedSignature.visit_DefNode   s   &&'78K	::  !__Hj1HN!
 II	## $I $I(,I
$(OOTYY	J$ 2A60!4TYY&(72''	499VT]]D%%33	 ( 3	 $"2"2!__2277==
!ZZ
~~)$..#i(F(R,,,,00++Iw?G::((Ndjj>Z>Z>f
 "/w!7
!gdIt&D&P)6w)?""&r   c                    |j                   s|S | j                  d   s|S | j                          | 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d       }|t        |      |j                  _        |S )Nr   )rz   r   )overridabler?   rD   r~   r.   
declaratorbaserI   r^   rz   r[   r   r   r   r   r   )r   r   r   r   r   r   s         r   visit_CFuncDefNodez!EmbedSignature.visit_CFuncDefNode  s	   K&&'78K''OOT__1166OO  (( ( *	 zz~~)**..y$/;,,,,00++Iw?G*73DJJNdIt4G"$1'$:!r   c                 2   | j                   d   s|S | j                          |j                  }|j                  }|j                  }d }|j
                  dk(  r| j                  rl|j                  j                  dd      }|j                  j                  sd|z  }nZ|j                  j                  rD|j                  j                  dz   |z   }n'| j                  r| j                  |j                        }|^|j                  D ]O  }|j                  dk7  r| j                  r| j                  d|}|j                   }|s?| j#                  |      }Q |?|d	|}| j%                  ||j&                        }	| j(                  st+        |	      |_        |S )
Nr   publicrh   r   rF   z'%s'ru   __get__z: )r?   rD   r[   bodyrI   
visibilityr@   rL   rN   is_pyobjectis_extension_typemodule_namerA   rP   statsr.   r   r:   r   r   rB   r   )
r   r   r[   r   	prop_name	type_namestatret_annotationr   r   s
             r   visit_PropertyNodez!EmbedSignature.visit_PropertyNode  sk   &&'78K

yyJJ		x'!JJ777J	zz-- & 2IZZ11 %

 6 6 <y HI&& NN5::6	

 E99	)##+/??I FI!%!<!<! $ 4 4^ DIE  $-y9I++IuyyAG(()'2	r   )r   r   Nr   NF)r   r   Nr   NNNF)r%   r&   r'   r   r8   r:   rD   rU   rW   rf   rP   r~   r   r   r   r   r   r   r   __classcell__)r1   s   @r   r+   r+   -   sm    
=: 15%)$*& 37'+59!&	.&"*1f2!r   r+   )r   Visitorr   StringEncodingr   rh   r   r   
CodeWriterr	   Errorsr
   r   r+   r)   r   r   <module>r      s6     $ )   ) $' $DS_ Sr   