
    Αi@                     B    S SK rS SKrS SKJrJr  S SKJr  S rS r	S r
g)    N)check_dtypeconvert_dtype)Variablec                    U c  S/n U $ [        U [        [        R                  [        R                  45      (       a  U /n U $ [        U [
        [        R                  R                  45      (       aZ  SU l	        [        U R                  SSS/SSU-   S-   5        [        U R                  5      S:X  a  [        R                  " U S5      n U $ [        U 5      /n U $ )	zQ
Convert out_size(int, np.int32, np.int64, Variable) to list
in imperative mode.
r   Tout_sizeint32int64op_type(When type of out_size in is Variable.))
isinstanceintnpr   r	   r   paddlepirValuestop_gradientr   dtyper   cast)r   r
   s     f/var/www/html/banglarbhumi/venv/lib/python3.13/site-packages/paddle/geometric/message_passing/utils.pyconvert_out_size_to_listr      s    
 3  O 
HsBHHbhh7	8	8: O 
Hx)9)9:	;	;!%NNg''14DD	
 (G3{{8W5H O M?O    c                    Uc  S/US'   g[        U[        [        R                  [        R                  45      (       a  U/US'   g[        U[
        5      (       a]  SUl        [        UR                  SSS/SSU-   S	-   5        [        UR                  5      S:X  a  [        R                  " US5      nX S
'   g[        S5      e)z_
Convert out_size(int, np.int32, np.int64, Variable) to inputs
and attrs in static graph mode.
Nr   r   Tr   r	   r
   r   r   Out_sizez'Out_size only supports Variable or int.)r   r   r   r   r	   r   r   r   r   r   r   r   	TypeError)inputsattrsr   r
   s       r   get_out_size_tensor_inputsr   /   s    
 Cj	HsBHHbhh7	8	8%Jj	Hh	'	'!%NNg''14DD	
 (G3{{8W5H%zABBr   c                    [        U R                  5      S:X  a  [        R                  " U SS/5      n [        UR                  5      S:X  a  [        R                  " USS/5      n[        R                  " U 5      n[        R                  " U5      n[        U R                  5      [        UR                  5      :w  a  [	        [        U R                  5      [        UR                  5      5      nU[        U R                  5      -
  nU[        UR                  5      -
  nUS   /S/U-  -   [        USS 5      -   nUS   /S/U-  -   [        USS 5      -   n[        R                  " X5      n [        R                  " X5      nX4$ )za
Expand dims to ensure there will be no broadcasting issues with different
number of dimensions.
   r   N)lenshaper   reshapemaxlist)	xyx_shapey_shape	max_ndimsx_pad_ndimsy_pad_ndimsnew_x_shapenew_y_shapes	            r   reshape_lhs_rhsr0   H   se   
 177|qNN1r1g&
177|qNN1r1g&ll1oGll1oG
177|s177|#AGGc!''l3	#agg,.#agg,. 
   712;  	 
   712;  	 NN1*NN1*4Kr   )numpyr   r   paddle.base.data_feederr   r   paddle.base.frameworkr   r   r   r0    r   r   <module>r5      s#      > *2C2'r   