
    Αi                         S SK rS SKrSSKJrJr  SrSrS rS r	S r
S	 rS
 rS rS r SS jrS rS rS rS rS rS rS rg)    N   )coreunique_nameii   c           	         SSK Jn  [        U5      nU Vs/ s HE  n[        X2[        R
                  R                  [        R                  45      (       a  M>  Uc  MC  UPMG     nnUR                  [        5      nUS:X  a  U$ US:  a  [        S5      eUR                  [        5      nU[        U5      S-
  :X  a  US S $ [        S 5      /[        U R                  5      [        U5      -
  UR                  S 5      -   S-   -  XUS-   & U$ s  snf )Nr   Variabler   z0An index can only have a single ellipsis ('...'))	frameworkr   list
isinstancepaddlepirValuenpndarraycountEllipsis
IndexErrorindexlensliceshape)varitemr   eleitem_remove_var	ell_countell_idxs          Z/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/base/variable_index.pyreplace_ellipsisr       s    # :D
 C#&***:*:BJJGH 	  	    %%h/IA~	QKLLjj"G#d)a-CRy',T{m		NSY&D)99A='
w{# K+s   =DDDc                 ,   / nU  H  n[        U[        R                  5      (       a'  UR                  [        R
                  " U5      5        MI  [        U[        5      (       a  UR                  [        U5      5        Mz  UR                  U5        M     U$ N)r   r   r   appendr   assignranger   )r   new_item
slice_items      r   replace_ndarray_and_ranger(   ?   sh    H
j"**--OOFMM*56
E**OOD,-OOJ'  O    c                     / n/ n[        U 5       H,  u  p4Uc  UR                  U5        M  UR                  U5        M.     X4$ r"   )	enumerater#   )r   r&   	none_axesir'   s        r   replace_noner.   K   sG    HI"4QOOJ'	 )
 r)   c                    SSK Jn  [        X5      (       a9  [        U R                  5      S:X  a  U R
                  [        R                  :w  a  gg[        U [        R                  R                  5      (       aL  [        U R                  5      S:X  a3  U R
                  [        R                  R                  R                  :w  a  gg)Nr   r   r   TF)r
   r   r   r   r   dtyper   boolr   r   base	libpaddleBOOL)r   r   s     r   is_scalar_tensorr5   V   s    ##  syy>Q399#;  
C))	*	*syy>Q3990E0E0J0J#Jr)   c                 v   SSK Jn  [        R                  R	                  U5      (       a  [        R                  R                  USS9XC'   [        U5       H[  u  px[        X[        R                  R                  45      (       a  X   R                  S5        SXW'   MH  X   R                  U5        M]     g XU'   g )Nr   r   int64r0   r	   )r
   r   r   utils_contain_var_convert_to_tensor_listr+   r   r   r   r#   )	attrsattr	attr_nametensor_attr_nameinputsinfer_flagsr   r-   dims	            r   
deal_attrsrC   b   s    #||  &&#)<<#G#G $H $
   oFA#&***:*:;<< ''+!# '', &  ir)   c           	         [        UR                  5      [        U R                  5      :  a8  [        S[        U R                  5       S[        UR                  5       S35      eSnUR                  nU[        UR                  5      :  aq  X2   nUS:w  aG  U R                  U   S:w  a4  X@R                  U   :w  a"  [        SU SU R                  U    SU S35      eUS-  nU[        UR                  5      :  a  Mq  [        UR                  5      [        U R                  5      :X  a  [        R                  " X5      $ [        R
                  " U5      n[        R                  " X5      $ )	NzkThe dims of bool index doesn't match indexed array, the dims of bool index except to be equal or less than z, but received .r   r	   zHThe dimension of bool index doesn't match indexed array along dimension z, the target dimension is r   )r   r   r   r   masked_selectnonzero	gather_nd)r   r   r-   
item_shapedim_len
bool_2_idxs         r   get_value_for_bool_tensorrL   s   s9   
4::SYY'		N#?3tzz?2C1F
 	

 	
AJ
c$**o
-b=SYYq\R/Gyy|4KC9#))A,W^V__`b  	
Q c$**o
 4::#cii.(##C..%JC,,r)   c                 H   SSK Jn  [        R                  " 5       (       a   S5       e[	        X[        R
                  R                  [        45      (       a6  SSKJ	n  SSK
Jn  [        R                  " U" U5      SS9nU" U5      nU" X!U S	9$ [        S
[        U5       35      e)ah  branches for tensor array setitem operation.
A item can be a:
(1) int/Variable, which is a simple number/variable such as [1], [-2]
(2) Slice, which is represented by bounds such as [2:-1]
(3) Tuple, which includes the above two cases such as [2:-1, 1]
If item is case (1), we perform paddle.tensor.array_write,
in other cases, we raise a NotImplementedError.
r   r   z=setitem for tensor_array must be called in static graph mode.r   )to_static_variable)array_writer7   r8   )xr-   arrayzCOnly support __setitem__ by Int/Variable in tensor_array, but gets )r
   r   r   in_dynamic_moder   r   r   int&paddle.jit.dy2static.convert_operatorsrN   paddle.tensorrO   castNotImplementedErrortype)r   r   valuer   rN   rO   s         r   _setitem_for_tensor_arrayrZ      s     $%%'' G' $6::#3#3S9::M-{{-d37C"5)U#66!QRVW[R\Q]^
 	
r)   c                    / n/ n[         nSn[        U5       H~  u  pU
c  M
  U	S:X  a  SnU	S:  a  [        U5      S:  a  US   U	S-
  :w  a  SnO[        Xy5      n[	        XS   R
                  5      nUR                  U	5        UR                  U
S   5        M     [        U R
                  5       H  n	X   b  M
  UR                  U	5        M     U(       a$  [        R                  " U5      R                  5       O/ nSnU[        [        U R
                  5      5      :X  a  U nU(       a  UnODSnU R                  U5      nU(       a*  UR
                  S:  a  US:w  a  UR                  U5      nOUnUUUUUUU4$ )aP  
Transpose origin Tensor and advanced indices to the front.

Returns:
    transed_tensor (Tensor): transposed tensor, corresponding with advanced indices
    transed_index (List): advanced indices transposed to the front
    trans_back_dim (List): order of axes to transpose back to original order. Only used in __setitem__.
    pos_of_new_dim (int):  axis of new dim in the result. Only used in __getitem__.
    rank_of_new_dim (int): rank of new dim in the result. Only used in __getitem__.
    transed_value_tensor (Tensor): value tensor transposed to the front. Only used in __setitem__.
r   Nr   r	   T)MAX_INTEGERr+   r   minmaxndimr#   r%   r   argsorttolistr   	transpose)
ori_tensorindicesis_for_setitemvaluesout_is_viewtransed_dimtransed_indexpos_of_new_dimrank_of_new_dimr-   indicetrans_back_dimtransed_value_tensortransed_tensors                 r   deal_advanced_indexrp      sx    KM !NOw'	Av!"1u[)A-+b/QU2J!"!$^!7!/!9>>BOq!  + ( :??#:q! $ :HRZZ,335RNd5122##) #--k:{{Q>Q#6 (.'7'7'D$'-$ 	 r)   c                    U c  Uc  Uc  g[        U [        R                  R                  [        R                  R
                  45      (       a  g[        U[        R                  R                  [        R                  R
                  45      (       a  g[        U[        R                  R                  [        R                  R
                  45      (       a  gU S:H  =(       a    U[        :H  =(       a    US:H  $ )NTFr   r   )r   r   r2   r   r   r   r\   )startendsteps      r   slice_is_same_to_originalru      s    } %&++..

0@0@ABB#,,fjj.>.>?@@$--vzz/?/?@AAA::#,::r)   c                     SSK Jn  U" 5       (       a  U R                  5       $ [        U S5      =(       a?    U R                  R                  5       [        R                  R                  R                  :H  $ )Nr   )in_pir_modedesc)
r
   rw   is_dense_tensor_array_typehasattrrx   rX   r   VarDescVarTypeDENSE_TENSOR_ARRAY)rY   rw   s     r   is_tensor_array_typer~      sU    &}}//11 E6" M

!T\\%9%9%L%LL	
r)   c                    [        U 5      nU(       a  / OS /S-  [        U R                  5      -  n/ n/ n/ n/ n/ nSn	Sn
[        U[        5      (       d  U4n[        U5      n[        X5      n[        U5      u  pSnSn[        U5       GH  u  pSu  nnn[        U5      [        L a  U(       dY  U R                  U   bI  U R                  U   S:  a6  XR                  U   :  a$  [        SU SU SU SU R                  U    35      eUR                  U5        UnS	nUS
:w  a  US	-   O[        nUS	-  nGOo[        U5      (       a!  UR                  U5        UnS	nUS	-   nUS	-  nGO>[        U[        5      (       a5  UR                  U5        U[         R"                  " U/5      4X<'   Sn
US	-  nGO[        U[$        5      (       GaA  UR&                  nUR(                  nUR*                  nUc  Uc  Uc  US	-  nUS	-  nGMv  Uc  S	OUnUc  US:  a  SO[        nUc  US:  a  [        O[,        nU(       d  [        U[         R.                  R0                  [         R2                  R4                  45      (       d  [        U[         R.                  R0                  [         R2                  R4                  45      (       dA  U R                  U   S
:w  a.  UU R                  U   :  a  US:  a  [        OU R                  U   nUS	-  nUS	-  nGO[        U[6        [        45      (       a  U[         R"                  " U5      4X<'   X<   S	   R8                  [         R                  :X  aF  [        U5      U R                  U   :w  a*  [        S[        U5       SU R                  U    SU 35      eSn
US	-  nUS	-  nGO[        U[         R.                  R0                  5      (       a  UR8                  [         R                  :X  d2  UR8                  [         R.                  R:                  R<                  :X  ap  UR>                  S:X  a  UR                  U5        ONUR                  S   U R                  U   :w  a.  [        SUR                  S    SU R                  U    SU 35      eX4X<'   Sn
US	-  nUS	-  nO[        U[         R2                  R4                  5      (       a  UR8                  [         R2                  R@                  RB                  R<                  :X  ap  UR>                  S:X  a  UR                  U5        ONUR                  S   U R                  U   :w  a.  [        SUR                  S    SU R                  U    SU 35      eX4X<'   Sn
US	-  nUS	-  nO[        SU S35      e[E        UUU5      (       a  GM/  UR                  U5        UR                  U5        UR                  U5        UR                  US	-
  5        [        U[         R.                  R0                  [         R2                  R4                  45      (       d  US	:w  a  SOU	n	GM     UUUUUUUU
U	4	$ )N   Fr   )NNNzslice_item z at dim z should be >= 0 and < x.shape[z]: r   r	   TzThe shape of boolean index z did not match indexed tensor z along axis zaValid index accept int / bool / slice / ellipsis / list / Tuple / Ndarray / Tensor, but received rE   )#r~   r   r   r   tupler(   r    r.   r+   rX   rS   r   r#   r\   r5   r1   r   	to_tensorr   rr   stoprt   MIN_INTEGERr2   r   r   r   r   r0   r3   r4   r_   r   DataTyperu   )rP   rd   is_tensor_arrayadvanced_indexdecrease_axesaxesstartsendsstepsuse_strided_slicehas_advanced_indexr,   estimated_dimrB   r-   r'   rr   rs   rt   s                      r   parse_indexr     sL   *1-O D6A:AGG#<  MDFDEgu%%*'0Gq*G%g.GM
C"7++sD
s"#GGCL,GGCLA%''#,. !!*XcU:XY\X]]`abahahilam`no    %ED$."$4*q.+C1HCj))  %EDq.C1HC
D))S!  *.-N) "&QM
E**$$E//C??D}"q1$D}!AX;{%)AXk;  cFKK$8$8&**:J:J#KLLdV[[%9%96::;K;K$LMM773<2%#*=)-+qwws|CQM1HC
T5M22  ,-N) -a066&++E
Oqwws|3 1#j/1BB`abahahilam`nnz{~z  A  "&QM1HC
FKK$8$899   FKK/##v{{'<'<'A'AA??a'$$S)%%a(AGGCL8$5j6F6Fq6I5JJhijipipqtiuhv  wC  DG  CH  I  .;,GN)!%QM1HC
FJJ$4$4556::??#;#;#@#@@??a'$$S)%%a(AGGCL8$5j6F6Fq6I5JJhijipipqtiuhv  wC  DG  CH  I  .;,GN)!%QM1HCst~s  @A  B  )T::MM% KKLLKKa  tfkk&:&:FJJ<L<L%MNNqy 
 ' { ,L 	
 
r)   c                 r   SSK Jn  SSKJnJn  [        U 5      nU(       a  [        XU5      $ [        X5      u	  nnn	n
nnnnnSU 0nU
UUU	UUS.nSnSnSnSnSn[        R                  R                  U5      (       a'  [        R                  R                  U5      nUUS'   US	 [        R                  R                  U5      (       a'  [        R                  R                  U5      nUUS	'   US
	 [        R                  R                  U	5      (       a'  [        R                  R                  U	5      nUUS'   US	 U(       Gd  U R                  nUUS'   SSKJn  [        U[         ["        [$        [&        45      (       a,  [(        R*                  " U/5      R-                  U" U5      5      n[        U[(        R.                  5      (       a>  [1        UR2                  5      nUR5                  5       R7                  5       nUUS'   UUS'   OZ[        X$[        R8                  R:                  45      (       a  UR-                  U5      nUUS'   UnO[=        S[?        U5       35      eU" 5       (       Ga  U" 5       (       Ga  [        U[0        [@        45      (       aC  [        R                  R                  U5      (       a  [        R                  RC                  U5      n[        U[0        [@        45      (       aC  [        R                  R                  U5      (       a  [        R                  RC                  U5      n[        U	[0        [@        45      (       aC  [        R                  R                  U	5      (       a  [        R                  RC                  U	5      n	Uc(  [        RD                  RG                  U UUU	U
UUUU5	      nO&[        RD                  RI                  U UUUU	U
UU5      nU" 5       (       a5  SSK%J&n  URO                  [        RP                  RS                  5       U U5        U$ [        RT                  RV                  RX                  "  S0 [[        5       D6nUR\                  R^                  S:w  a  URa                  U R                  S9nOURc                  U R                  S9n[        RP                  RS                  5       Re                  5       nURg                  SUSU0USS0S9  [        Rh                  Rj                  Rl                  Ro                  5       Rp                  RO                  URr                  U Rt                  Rw                  5       U5        U$ [        X$[        R8                  R:                  45      (       d/  [        Rx                  " U5      R-                  U R                  5      n[{        U U
UUU	UUU5      u  nn[}        UUSUU5      u  nn n!n"n"nnUR                  UR                  :w  a  UR-                  UR                  5      n[        R~                  " 5       (       Ga  [        U 5      S:X  a  U S   R                  [        R                   [        RT                  R                  R                  4;   a  [        U S   R2                  [        UR2                  5      :H  5      (       aw  UR2                  UR2                  :w  a  UR                  UR2                  5      n[        RD                  R                  [        R                  " U S   5      UU5      nU(       d  U $ O.UR                  U U5      nU(       d  U $ OUR                  U U5      nUR                  U!5      n#U#US'   U" 5       (       Ga  U" 5       (       Ga  [        U[0        [@        45      (       aC  [        R                  R                  U5      (       a  [        R                  RC                  U5      n[        U[0        [@        45      (       aC  [        R                  R                  U5      (       a  [        R                  RC                  U5      n[        U	[0        [@        45      (       aC  [        R                  R                  U	5      (       a  [        R                  RC                  U	5      n[        RD                  RI                  U U#UUU	U
UU5      nSSK%J&n  URO                  [        RP                  RS                  5       U U5        U$ [        RT                  RV                  RX                  "  S0 [[        5       D6nUR\                  R^                  S:w  a  URa                  U R                  S9nOURc                  U R                  S9n[        RP                  RS                  5       Re                  5       nURg                  SUSU0USS0S9  [        Rh                  Rj                  Rl                  Ro                  5       Rp                  RO                  URr                  U Rt                  Rw                  5       U5        U$ )a  
In dynamic mode, this function will modify the value at input tensor, returning same Tensor as input.
But it will return a new Tensor with assigned value in static mode.

Args:
    x(Tensor): Tensor to be set value.
    indices(int|slice|None|Tensor|List|Tuple...): Indices, used to indicate the position of the element to be fetched.
    values(Tensor|Number|Ndarray): values to be assigned to the x.
r   )in_dynamic_or_pir_mode)r   rw   Input)r   r   r   r   r   r,   NStartsTensorListr   EndsTensorListr   StepsTensorListr   r0   )convert_dtyperf   r   ValueTensorzjOnly support to assign an integer, float, numpy.ndarray or paddle.Tensor to a paddle.Tensor, but received r   )_global_inplace_map	set_valuer8   Out)rX   r@   outputsr<   inplace_mapT)r   )I r   r
   r   rw   r~   rZ   r   r   r9   r:   r;   r0   data_feederr   r   r1   rS   floatcomplexr   rQ   astyper   r   r   ravelra   r   r   	TypeErrorrX   r   get_int_tensor_list_C_ops
set_value_set_value_with_tensor_'paddle.jit.dy2static.parameter_recorderr   addstaticdefault_main_programr2   layer_helperLayerHelperlocalsmain_programcurrent_block_idx*_create_global_variable_for_type_inference"create_variable_for_type_inferencecurrent_block	append_opjitapiProgramTranslatorget_instance_inplace_mapprogramrx   idr$   get_tensor_with_basic_indexingrp   rR   r   r3   r4   expandwhere_logical_not
index_put_	index_putrb   )$rP   rd   rf   r   r   rw   r   r   r   r   r   r,   r   r   r   r   r@   r<   value_tensorr   r   r   r   r0   r   outputr   helper	cur_block
sub_tensoris_viewtransed_sub_tensoradjusted_advanced_indextransback_dim_transback_sub_tensors$                                       r   _setitem_staticr     s    )0*1-O(V<< 	A
 q\F&E LNOE||  ((!<<??G%5!"(O||  &&==dC#1 &M||  '' ,,>>uE$3 !'Ng.ftS%9::XXvh'..}U/CDFfbjj))&E\\^**,F$E(O"E'N6::+;+; <==]]5)F$*F=!!L BBFv,Q  "##}}ftUm44||0088!'!A!A&!IdT5M22||0066%||??EedE]33||0077 & @ @ G#11!
  == !	 }} $''MM668!V M[[--99%xF ""449JJ'' K   BB'' C  ::<JJLI $e,    JJNN,,99;HHLL!!16699; M &VZZ-=-=">??]]6*11!'':F<	

G$  fg
	
#
 <<-333]]#5#;#;<F!!##+,1+A.44KK!6!6!;!;<=+A.44-3345 
 <<#5#;#;;#]]+=+C+CDF%+]]%9%9&&'>q'AB&&"
 H  &8%B%B+V&" H  "4!=!='"  2;;MJ 4}!##}}ftUm44||0088!'!A!A&!IdT5M22||0066%||??EedE]33||0077%||??F]]99$	F  ##224a: 3 [[--99%xF ""449JJ'' K   BB'' C  ::<JJLI $e,    JJNN,,99;HHLL!!16699; r)   c           	      
   SSK Jn  Sn	U" 5       (       a  [        U S5      (       a  SU l        [	        U5      S:X  a  U n
GO3Sn	U(       a  SOSnS	U /0nU/ / US
.nU(       a  / US'   S/[	        U5      -  n[        XSSX5        [        XSSX5        [        XSSX5        XS'   SSKJnJn  U" 5       (       Ga;  SUR                  5       ;   a  US   nOUS   nSUR                  5       ;   a  US   nOUS   nSUR                  5       ;   a  US   nOUS   nU(       Gay  U" 5       (       Ga  [        U[        [        45      (       aC  [        R                  R                  U5      (       a  [        R                  R!                  U5      n[        U[        [        45      (       aC  [        R                  R                  U5      (       a  [        R                  R!                  U5      n[        U[        [        45      (       aC  [        R                  R                  U5      (       a  [        R                  R!                  U5      n[        R"                  R%                  XUUU5      n
[	        U5      S:  a  [        R"                  R'                  X5      n
GOU" 5       (       Ga%  [        U[        [        45      (       aC  [        R                  R                  U5      (       a  [        R                  R!                  U5      n[        U[        [        45      (       aC  [        R                  R                  U5      (       a  [        R                  R!                  U5      nU R)                  5       (       aT  [	        U5      S:  a"  [        R*                  R-                  U U5      S4$ [        R*                  R/                  U UU5      S4$ [        R"                  R1                  U UUUUS   US   5      n
O[        R2                  R5                  5       R7                  5       nUR9                  [:        R<                  " U R>                  S-   U-   5      U R@                  S9nURC                  UUSU/0US9  Un
[	        U5      S:  aY  Sn	[E        U5       H4  u  nn[	        U Vs/ s H  nUU:  d  M  UPM     sn5      nUU-
  nUUU'   M6     [        RF                  " XS9n
U" 5       (       a  [        U
S5      (       a  SU
l        X4$ s  snf )Nr   )in_to_static_modeFis_view_varTr   strided_slicer   r   )r   r   r   decrease_axisstridesr   r   r   r   StridesTensorListrA   )r   rw   r   r   )namer0   r   )rX   r@   r   r<   axis)$dygraph.baser   rz   r   r   rC   r   r   rw   keysr   r   r   r   r9   r:   r   r   r   squeezery   _pir_opsslice_array_denseslice_arrayr   r   r   r   
create_varr   generate_with_ignorable_keyr   r0   r   r+   	unsqueeze)rP   r   r   r   r   r   r,   r   r   rg   outop_typer@   r<   rA   r   rw   strs   stridetarget_blockslice_out_varidxr   r-   lnew_axiss                              r   r   r     sR    0Kwq-88
4yA~%6/GA3*	
 !E)cCIo8%7	
 	5(8&N)%8&	
  +m9!##!V[[]2./8_6;;=0-.Fm"fkkm3 34y) ==!"tUm44!<<44R88!'!A!A"!EB!#e}55!<<44S99"(,,"B"B3"GC!&4-88!<<44V<<%+\\%E%Ef%MFmm11!2sFK}%) --//CC==!"tUm44!<<44R88!'!A!A"!EB!#e}55!<<44S99"(,,"B"B3"GC3355}-1 & A A!R H %$  !' ; ;Ar3 G %$  mm))-(/* "====?MMOL(33 <<FFSL7* gg	 4 M ""0	 #   C
9~
 #9-IC:1TQ:;AaxH%IcN .
 s3wsM:: ;s   
T
,T
c           
         [        X5      u	  nnnnnnnn	n
[        U UUUUUUU
5      u  pU	(       Ga;  [        XSS5      u  nnnnnnn[        U5      S:X  aT  US   R                  [
        R                  [
        R                  R                  R                  4;   a  [        XS   5      nO[[        U5      n[        U5      S:  a  [
        R                  " USS9nOUS   R                  S5      n[
        R                  " UU5      nUS:w  ab  [        [!        UUU-   5      5      [        [!        SU5      5      -   [        [!        UU-   UR"                  5      5      -   nUR%                  U5      nU$ )z
Args:
    x(Tensor): Tensor to be indexing.
    indices(int|slice|None|Tensor|List|Tuple...): Indices, used to indicate the position of the element to be fetched.
FNr   r   r	   r   )r   r   rp   r   r0   r   r1   r2   r3   r4   rL    parse_bool_and_broadcast_indicesstackr   rH   r   r%   r_   rb   )rP   rd   r   r   r   r   r,   r   r   r   r   r   r   ro   r   rj   rk   advanced_index_tensorperms                      r   _getitem_staticr   J  s   " 	A
 ,		FC   UDA	
# &'1,1H2

%FKK!6!6!;!;<2= , :C 'G''# *+a/(.+")%
 )@(B(L(LR(P%"">3HICQU?N_,LMNuQ012u^o=sxxHIJ 
 --%CJr)   c                 Z   [        U 5       Hv  u  pUR                  [        R                  :X  d4  UR                  [        R                  R
                  R                  :X  d  MW  [        R                  " U5      S S 2S4   X'   Mx     [        U 5      S:  a  [        R                  " U 5      n U $ )Nr   r   )
r+   r0   r   r1   r2   r3   r4   rG   r   broadcast_tensors)rd   r-   rl   s      r   r   r     s}     w'	LLFKK'||v{{44999/15GJ ( 7|a**73Nr)   )T)numpyr   r   r   r   r   r\   r   r    r(   r.   r5   rC   rL   rZ   rp   ru   r~   r   r   r   r   r    r)   r   <module>r      sv       "J		 "-.
: >BAH;	
gT\~zzJZr)   