
    'it              
           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y)    )ListSequenceTuple   )EinopsError	ReductionTensor_apply_recipe_array_api_prepare_transformation_recipe)analyze_patternprodtensorpattern	reductionaxes_lengthsreturnc                    t        | t              r>t        |       dk(  rt        d      | d   j	                         }|j                  |       } n| j	                         }	 t        |j                               }t        ||t        |      | j                        }t        ||| ||      S # t        $ rR}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	            J/var/www/stems/demucs_env/lib/python3.12/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                      t        | |fddi|S )Nr   repeatr'   r   r   r   s      r&   r)   r)   #   s    &'FXFFF    c                      t        | |fddi|S )Nr   	rearranger*   r+   s      r&   r.   r.   '   s    &'I[ILIIr,   c                 ,    dd l }|j                  |       S )Nr   )numpyfrom_dlpack)r   nps     r&   asnumpyr3   +   s    >>&!!r,   tensorsc                    t        |d      \  }}}| d   j                         }g }g }t        |       D ]  \  }}	|	j                  }
t	        |
      |k  rt        d| d|
 d| d| d	      t	        |
      |z
  }|j                  |
||        |j                  |j                  |	g |
d | d|
|d                |j                  ||	      |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   s   ,;GV,L)M<		'	'	)B%'!#Mw' 	s	6u: !!$KE7 S!!(	);H:UL  "%Ul!:U=1GHI

63pU>M5J3pB3pQVWmWnQo3p qr	s 99%M9:MIIr,   rA   c                    | j                         }t        |d      \  }}}| j                  }t        |      |dz   |z   k7  rt	        d| d|       |}|D 	cg c]  }	d|	v rdn
t        |	       }
}	t        d |
D              }|dkD  rt	        d| d| d	      d
gt        |      z  ||   gz   }|d
k(  r%t        |
d d       D ]  \  }}||   |z   ||dz   <    nf|
j                  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  }	 t        |      D cg c];  \  }}|j                  | g |t        ||   ||dz            d   g |||      = c}}S c c}	w c c}}w # 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 r7   c              3   &   K   | ]	  }|d k(    yw)r7   N ).0xs     r&   	<genexpr>zunpack.<locals>.<genexpr>U   s     !La!r'!Ls   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*oV]w2DM+Q*o*o!!L3K!LL"7)#B=/Qlm
 	
 cC..+m2L1MMO!#6s;< 	<DAq%4Q%7!%;OAE"	< &>%C%CB%G,- 	VA%4Q%7:RST:U%UOAE"	V,q0#6N2OPQUSUQUV 	VA!0Q!7:RST:U!UOA	V n}-KMA-/0I$%'-7L %.m$<
 != JJ^^u_Q-?QRUVQVAW'X^Z]^_:+::	:
 	
; +p:
  (	1RSbceSfRg}o/
 	s1   F2 F= .A F7.F= 7F= =	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>rd      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,   