
    Pit              
          d dl mZmZmZ ddlmZmZmZmZm	Z	 ddl
mZmZ dedededed	ef
d
Zdeded	efdZdeded	efdZdefdZeZdee         ded	eeee         f         fdZdedee         ded	ee         fdZdS )    )ListSequenceTuple   )EinopsError	ReductionTensor_apply_recipe_array_api_prepare_transformation_recipe)analyze_patternprodtensorpattern	reductionaxes_lengthsreturnc                 t   t          | t                    rRt          |           dk    rt          d          | d                                         }|                    |           } n|                                 }	 t          |                                          }t          ||t          |          | j	                  }t          ||| ||          S # t          $ rV}d| d| d}t          | t                    s|d| j         d	z  }n|d
z  }|d| dz  }t          |d| z             d d }~ww xY w)Nr   z(Einops can't be applied to an empty list)
axes_namesndim)reciper   reduction_typer   z Error while processing z-reduction pattern "z".z
 Input tensor shape: z. z
 Input is list. zAdditional info: .z
 )
isinstancelistlen	TypeError__array_namespace__stacktupleitemsr   r   r
   r   shape)	r   r   r   r   xphashable_axes_lengthsr   emessages	            d/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/einops/array_api.pyreducer'      sv   &$ *v;;!FGGGAY**,,&!!''))9 %l&8&8&:&: ; ;/uUaObObioituuu&$.
 
 
 	
  9 9 9WYWWGWWW&$'' 	,AAAAAGG++G6|6666'I!II-..D89s   =AC 
D7!AD22D7c                 "    t          | |fddi|S )Nr   repeatr'   r   r   r   s      r&   r)   r)   #   s    &'FFXFFFF    c                 "    t          | |fddi|S )Nr   	rearranger*   r+   s      r&   r.   r.   '   s    &'II[ILIIIr,   c                 4    dd l }|                    |           S )Nr   )numpyfrom_dlpack)r   nps     r&   asnumpyr3   +   s     >>&!!!r,   tensorsc                    t          |d          \  }}}| d                                         }g }g }t          |           D ]\  }}	|	j        }
t	          |
          |k     rt          d| d|
 d| d| d	          t	          |
          |z
  }|                    |
||                    |                    |                    |	g |
d |         d|
|d          R                      |                    ||	          |fS )
Npackr   zpacked tensor #z' (enumeration starts with 0) has shape z, while pattern z assumes at least z axes)axis)	r   r   	enumerater!   r   r   appendreshapeconcat)r4   r   n_axes_beforen_axes_aftermin_axesr"   reshaped_tensorspacked_shapesir   r!   axis_after_packed_axess               r&   r6   r6   4   sa   ,;GV,L,L)M<		'	'	)	)B%'!#Mw'' 	s 	s	6u::  L! L LE L L!(L L<DL L L   "%Ul!:U=1G#GHIII

63pU>M>5J3pB3pQVWmWnWnQo3p3p q qrrrr99%M9::MIIr,   rA   c           	                                            t          |d          \  }}} j        }t          |          |dz   |z   k    rt	          d| d|           |}d |D             }t          d |D                       }	|	dk    rt	          d| d| d	          d
gt          |          z  ||         gz   |	d
k    r/t          |d d                   D ]\  }
}|
         |z   |
dz   <   n|                    d          }t          |          D ]}
|
         ||
         z   |
dz   <   t          |dz   t          |                    d d d         D ]}|dz            ||         z
  |<   |d |         ||dz   d          t          d d           f|z  	  fdt          |          D             S # t          $ r$}t          d| dd          d|           |d }~ww xY w)Nunpack)opnamer   zunpack(..., z)) received input of wrong dim with shape c                 8    g | ]}d |v rd nt          |          S )r7   )r   ).0p_shapes     r&   
<listcomp>zunpack.<locals>.<listcomp>S   s+    *o*o*oV]w22DMM*o*o*or,   c              3   "   K   | ]
}|d k    V  dS )r7   N )rH   xs     r&   	<genexpr>zunpack.<locals>.<genexpr>U   s&      !L!La!r'!L!L!L!L!L!Lr,   z) received more than one -1 in z and can't infer dimensionsr   r7   c                     g | ]L\  }}                     g t          |         |d z                      dR          g |R           MS )r   .)r;   slice)	rH   rB   element_shape	shape_endshape_startslice_fillersplit_positionsr   r"   s	      r&   rJ   zunpack.<locals>.<listcomp>p   s     
 
 
 != JJ^^u_Q-?QRUVQVAW'X'X^Z]^^_:+::	:: 
 
 
r,   zError during unpack(..., "z!"): could not split axis of size z into requested )r   r   r!   r   r   sumr9   indexrangerP   	ExceptionRuntimeError)r   rA   r   r=   r>   r?   input_shapeunpacked_axislengths_of_composed_axesn_unknown_composed_axesrB   rM   unknown_composed_axisjr$   rR   rS   rT   rU   r"   s   `              @@@@@r&   rE   rE   H   s   		#	#	%	%B,;GH,U,U,U)M< ,K
;=1,|;;;hhh[fhhiii&M*o*oan*o*o*o!!L!L3K!L!L!LLL""m7mm=mmm
 
 	
 cC...+m2L1MMO!##6ss;<< 	< 	<DAq%4Q%7!%;OAE""	< &>%C%CB%G%G,-- 	V 	VA%4Q%7:RST:U%UOAE"",q0#6N2O2OPPQUQUSUQUV 	V 	VA!0Q!7:RST:U!UOAn}n-KMA-//0I$%%'-7L
 
 
 
 
 
 
 
 
 %.m$<$<
 
 
 	
    / / /SbceSf / /,/ /
 
 	s   'G 
G5G00G5N)typingr   r   r   einopsr   r   r	   r
   r   packingr   r   strintr'   r)   r.   r3   Shaper6   rE   rL   r,   r&   <module>rg      s   ( ( ( ( ( ( ( ( ( ( k k k k k k k k k k k k k k * * * * * * * *96 9C 9I 9s 9W] 9 9 9 98G6 GC GF G G G GJf Js Jv J J J J"F " " " " 	J(6" JS JU64;;N5O J J J J(56 5$u+ 5 5V 5 5 5 5 5 5r,   