
    ]it              
           S SK JrJrJr  SSKJrJrJrJrJ	r	  SSK
JrJr  S\S\S\S\S	\4
S
 jrS\S\S	\4S jrS\S\S	\4S jrS\4S jr\rS\\   S\S	\\\\   4   4S jrS\S\\   S\S	\\   4S jrg)    )ListSequenceTuple   )EinopsError	ReductionTensor_apply_recipe_array_api_prepare_transformation_recipe)analyze_patternprodtensorpattern	reductionaxes_lengthsreturnc                    [        U [        5      (       a?  [        U 5      S:X  a  [        S5      eU S   R	                  5       nUR                  U 5      n OU R	                  5       n [        UR                  5       5      n[        X[        U5      U R                  S9n[        UUU UUS9$ ! [         aW  nSU SU S3n[        U [        5      (       d  USU R                   S	3-  nOUS
-  nUSU S3-  n[        USU 3-   5      S eS nAff = f)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	            M/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/einops/array_api.pyreducer'      s)   &$v;!FGGAY**,&!'')9 %l&8&8&: ;/uUaObioititu&$.
 	
  9,YK7KG9TVW&$''0bAAG++G&|nA66'c!I-.D89s   &AB* *
D4ADDc                     [        X4SS0UD6$ )Nr   repeatr'   r   r   r   s      r&   r)   r)   #   s    &FXFFF    c                     [        X4SS0UD6$ )Nr   	rearranger*   r+   s      r&   r.   r.   '   s    &I[ILIIr,   c                 ,    SS K nUR                  U 5      $ )Nr   )numpyfrom_dlpack)r   nps     r&   asnumpyr3   +   s    >>&!!r,   tensorsc                    [        US5      u  p#nU S   R                  5       n/ n/ n[        U 5       H  u  pU	R                  n
[	        U
5      U:  a  [        SU SU
 SU SU S3	5      e[	        U
5      U-
  nUR                  XU 5        UR                  UR                  U	/ U
S U QSPXS  Q75      5        M     UR                  XbS	9U4$ )
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   s    ,;GV,L)M		'	'	)B%'!#Mw'	u: !!$KE7 S!!(	);H:UL  "%Ul!:U1GHI

63pU>M5J3pB3pQVWnQo3p qr ( 99%9:MIIr,   rA   c                    U R                  5       n[        USS9u  pEnU R                  n[        U5      US-   U-   :w  a  [	        SU SU 35      eUnU V	s/ s H  n	SU	;   a  SO
[        U	5      PM     n
n	[        S U
 5       5      nUS:  a  [	        SU SU S	35      eS
/[        U5      -  Xx   /-   nUS
:X  a$  [        U
S S 5       H  u  pX   U-   XS-   '   M     OgU
R                  S5      n[        U5       H  nX   X   -   XS-   '   M     [        US-   [        U
5      5      S S S2    H  nUUS-      U
U   -
  UU'   M     US U nXxS-   S  n[        S S 5      4U-  n [        U5       VVs/ s H:  u  nnUR                  U / UQ[        X   XS-      5      PSP7   / UQUQUQ75      PM<     snn$ s  sn	f s  snnf ! [         a  n[        SU SUS    SU 35      UeS nAff = f)Nunpack)opnamer   zunpack(..., z)) received input of wrong dim with shape r7   c              3   *   #    U  H	  oS :H  v   M     g7f)r7   N ).0xs     r&   	<genexpr>unpack.<locals>.<genexpr>U   s     !L3Kar'3Ks   z) received more than one -1 in z and can't infer dimensionsr   .zError during unpack(..., "z!"): could not split axis of size z into requested )r   r   r!   r   r   r   sumr9   indexrangeslicer;   	ExceptionRuntimeError)r   rA   r   r"   r=   r>   r?   input_shapeunpacked_axisp_shapelengths_of_composed_axesn_unknown_composed_axessplit_positionsrB   rJ   unknown_composed_axisjshape_start	shape_endslice_fillerelement_shaper$   s                         r&   rE   rE   H   s   		#	#	%B,;GH,U)M ,,K
;=1,|;;L	1Z[fZghii&Man*oanV]w2DM+Qan*o!!L3K!LL"7)#B=/Qlm
 	
 cC..+2L1MMO!#6s;<DA%4%7!%;OE" = &>%C%CB%G,-A%4%7:R:U%UOE" .,q0#6N2OPQUSUQUVA!0Q!7:RST:U!UOA W n}-KA-/0I$%'-7L %.m$<
 %= = JJ^^u_-?UVQVAW'X^Z]^_:+::	:
 %=
 	
; +p:
  (	1RSbceSfRg}o/
 	s1   F5"G  0AF:1G  :G   
G'
G""G'N)typingr   r   r   einopsr   r   r	   r
   r   packingr   r   strintr'   r)   r.   r3   Shaper6   rE   rH   r,   r&   <module>re      s    ( ( k k *96 9C 9I 9s 9W] 98G6 GC GF GJf Js Jv J"F " 	J(6" JS JU64;;N5O J(56 5$u+ 5 5V 5r,   