
    ϑi&                    R   S SK Jr  S SKrS SKrS SKrS SKJs  Jr  S SK	Jr  SSK
JrJr   " S S5      r\" 5       r\R                  S"S	 j5       r\R                  S#S
 j5       r\R                  S#S j5       rSSSSSSSSSSSS.rS$S jrS rS rS rS rS rS rS rS rS  rS! rg)%    )annotationsN)	framework   )op_infoop_mapc                  &    \ rS rSrS rS rS rSrg)
PrimOption   c                    SU l         g )NFenable_primselfs    ^/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/incubate/autograd/utils.py__init__PrimOption.__init__   s
         c                    U R                   $ Nr   r   s    r   
get_statusPrimOption.get_status   s    r   c                    Xl         g r   r   )r   flags     r   
set_statusPrimOption.set_status"   s    r   r   N)__name__
__module____qualname____firstlineno__r   r   r   __static_attributes__ r   r   r	   r	      s    !  r   r	   boolc                 *    [         R                  5       $ )a  
Note:
    **ONLY available in the static graph mode.**

Shows whether the automatic differentiation mechanism based on
automatic differential basic operators is ON. Defaults to OFF.

Returns:
    flag(bool): Whether the automatic differentiation mechanism based on automatic differential basic operators is ON.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> from paddle.incubate.autograd import enable_prim, disable_prim, prim_enabled

        >>> paddle.enable_static()
        >>> enable_prim()

        >>> print(prim_enabled())
        True

        >>> disable_prim()

        >>> print(prim_enabled())
        False

)prim_optionr   r!   r   r   prim_enabledr%   )   s    > !!##r   c                 .    [         R                  S5        g)a  
Note:
    **ONLY available in the static graph mode.**

Turns ON automatic differentiation mechanism based on automatic
differential basic operators.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> from paddle.incubate.autograd import enable_prim, prim_enabled

        >>> paddle.enable_static()
        >>> enable_prim()

        >>> print(prim_enabled())
        True

TNr$   r   r!   r   r   r   r   K   s    . 4 r   c                 .    [         R                  S5        g)a  
Note:
    **ONLY available in the static graph mode.**

Turns OFF automatic differentiation mechanism based on automatic
differential basic operators.

Examples:

    .. code-block:: python

        >>> import paddle
        >>> from paddle.incubate.autograd import enable_prim, disable_prim, prim_enabled

        >>> paddle.enable_static()
        >>> enable_prim()

        >>> print(prim_enabled())
        True

        >>> disable_prim()

        >>> print(prim_enabled())
        False

FNr'   r!   r   r   disable_primr)   e   s    8 5!r   int16int32int64float16float32float64uint8int8	complex64
complex128)r   r                              c                   [        U[        5      (       d   e[        U5      S:X  a  g [        U5      S:X  a0  U(       a  U R                  US   5      /$ U R                  US   5      $ U Vs/ s H  o0R                  U5      PM     sn$ s  snf )Nr   r   )
isinstancelistlenvar)blocknamesis_tensor_listnames       r   get_var_blockrF      sx    eT""""
5zQ	UqIIeAh'((yyq"",12ED		$E222s   +Bc           	         U R                   c  / $ [        U R                   5       Vs/ s H(  n[        U R                  U R	                  U5      5      PM*     sn$ s  snf r   )input_namessortedrF   rB   inputopns     r   get_input_var_listrN      sR    	~~	 ;A:P
:PQM"((BHHQK0:P
 	
 
   /Ac                    SU ;  a  U nOU R                  S5      S   nUR                  5       R                  5       u  p#UR                  5       UR                  5       4$ )N=r   )splitstrip)itemresarg_typearg_names       r   
_solve_argrX      sP    
$jjoa 99;,,.X>>X^^---r   c                $   [         U R                     nSUR                  5       ;   a  X#S   R                  5       ;   a  US   U   nX R                  ;  a  g US:X  a%  [        R
                  " U R                  U5      5      $ U R                  U5      $ )NattrsDataType)r   typekeys
attr_namesdtypesdtypeattr)rL   rV   rW   
op_contents       r   _get_attr_valuerc      s~    J*//##w4G4L4L4N(Ng&x0 }}$z!<< 122wwx  r   c                8   [         U   nUS   R                  S5      n[        R                  " 5       n/ nU GH]  n[	        U5      u  px[
        U R                     n	US;   a  US:X  a  SOSn
U	R                  U
5      (       a  X   R                  U5      nU(       d  [        SU SU S	U R                   S
35      eS Hs  nUR                  U5      nUc  M  XR                  ;   d  M*  [        U R                  U R                  U5      5      (       d  MV  [        SU SU SU R                   S
35      e   US;   a>  SU	R                  5       ;   a#  XS   R                  5       ;   a  XtU	S   U   '   GM9  XtU'   GM@  [        XU5      nUR                  U5        GM`     XE4$ )z&get attrs' values for api args' valuesargs,)IntArrayScalarrg   	int_arrayscalarzNo value found for z of z type for operator .)tensor_nametensors_namezTensor type of zL is not supported in composite op. Please set other type value of input arg z for operator )TensorTensor[]inputs)r   rR   collectionsOrderedDictrX   r   r\   get
ValueErrorrH   rF   rB   rJ   r]   rc   append)rL   phi_namere   	args_listrp   rZ   rT   rV   rW   rb   
tensor_keytensor_contentarg_name_new
attr_values                 r   _get_args_valuesr|      s   8DV""3'I$$&FE'-BGG_
--(0J(>HJ~~j))!+!7!;!;H!E%$-hZtH:EXY[Y`Y`Xaabc  <D#1#5#5d#;L$0(NN:)"((BHH\4JKK(-hZ  8D  EQ  DR  R`  ac  ah  ah  `i  ij  k  < -- JOO--8 4 9 9 ;;9Az(+H56#+x (x@JLL$G J =r   c           	     4   U R                   c  / $ U R                  [        ;   a  [        U R                     S   nOU R                  n[        X5      u  p#/ nUR	                  5        H  u  pVXPR                   ;   aq  US:X  a5  UR                  [        U R                  U R                  U5      SS95        MO  UR                  [        U R                  U R                  U5      5      5        M  UR                  S5        M     U(       a  UR                  U5        U$ )z
Generate all args inputs of composite op. Because inputs of composite op is
the same as phi op described in ops.yaml. So we need to map origin op to phi op
and then push input data and attrs of origin op to corresponding phi op.
Nrv   ro   T)rD   )
rH   r\   r   r|   itemsru   rF   rB   rJ   extend)rL   rv   rp   rZ   rU   rT   tensor_types          r   prepare_python_api_argumentsr      s     
~~	77fbggz2HwwH(6!'D~~%*,JJ%HHbhhtnT JJ}RXXrxx~FG 

4  "0 JJu
r   c           	         U R                   c  / $ [        U R                   5       Vs/ s H(  n[        U R                  U R	                  U5      5      PM*     sn$ s  snf r   )output_namesrI   rF   rB   outputrK   s     r   get_output_var_listr     sT    		 BOO,
, "((BIIaL1,
 	
 
rO   c                $   U R                   nUc  / $ U R                  n/ n[        U   R                  S5      (       a  [        U   S   R	                  5        H`  n[        U   S   U   nXQ;  a  UR                  S5        M*  [        U R                  U R                  U5      5      nUR                  U5        Mb     U$ [        U5      S:X  a;  [        U R                  U R                  US   5      5      nUR                  U5        U$ [        S5      e)zlorigin op outputs must be mapped into outputs of composite rule. map info has been defined in op_compat.yamlNoutputsr   r   zgWhen replace op with composite rule, there must exist output map info from origin op to composite rule.)r   r\   r   rs   r]   ru   rF   rB   r   r@   rt   )rL   origin_output_namesrE   rU   rT   origin_output_nameorigin_output_vars          r   map_output_for_compositer     s   //"	ww$<I&&tY/446%+D\)%<T%B"%@JJt$$1HHbii(:;%! 

,- 7( 
 $%* -"))$7$:;! JJ()
 
 y r   c                    U bM  [        U [        R                  R                  R                  [        R
                  R                  45      (       a  U /$ / nU  H  nU[        U5      -  nM     U$ r   )r>   paddlebaser   VariablepirValueflatten)inp	flattenedparts      r   r   r   :  sc    
{jfkk##,,fjj.>.>?  uIWT]"	 r   c                P    [        U 5      nU Vs/ s H	  o"c  M  UPM     sn$ s  snf r   )r   )r   r   rA   s      r   flatten_and_remove_noner   E  s#    I$89CC9888s   ##c                    [        U [        R                  [        R                  R
                  45      (       a  U 4$ [        U [        R                  5      (       a  [        U 5      $ U $ r   )	r>   r   r   r   r   r   typingSequencetuple)xss    r   
as_tensorsr   J  sK    "y))6::+;+;<==u	B	(	(Ry	r   )returnr"   )r   Noner   )
__future__r   rq   r   r   paddle.framework.dtyper   r`   r_   paddle.basephi_ops_mapr   r   r	   r$   static_onlyr%   r   r)   INT_DTYPE_2_STRINGrF   rN   rX   rc   r|   r   r   r   r   r   r   r!   r   r   <module>r      s    #    ' ' ! (    l $ $B ! !2 " ">  	3
.!,^B
@9
r   