
    !Sh              
          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TupleSequence   )Tensor	ReductionEinopsError_prepare_transformation_recipe_apply_recipe_array_api)analyze_patternprodtensorpattern	reductionaxes_lengthsreturnc                    t          | t                    rRt          |           dk    rt          d          | d                                         }|                    |           } n|                                 }	 t          |                                          }t          ||t          |          | j	                  }t          ||| ||          S # t          $ r}d                    ||          }t          | t                    s|d                    | j                  z  }n|dz  }|d                    |          z  }t          |d	                    |          z             d }~ww xY w)
Nr   z(Einops can't be applied to an empty list)
axes_namesndim)reciper   reduction_typer   z2 Error while processing {}-reduction pattern "{}".z
 Input tensor shape: {}. z
 Input is list. zAdditional info: {}.z
 {})
isinstancelistlen	TypeError__array_namespace__stacktupleitemsr
   r   r   r	   formatshape)	r   r   r   r   xphashable_axes_lengthsr   emessages	            V/var/www/html/movieo_spanner_bot/venv/lib/python3.11/site-packages/einops/array_api.pyreducer'      s~   &$ *v;;!FGGGAY**,,&!!''))7 %l&8&8&:&: ; ;/uUaObObioituuu&$.
 
 
 	
  7 7 7FMMiY`aa&$'' 	,4;;FLIIIGG++G)00>>>'GNN1$5$556667s   =AC 
E1!BE,,E1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   3   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|           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>R   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>T   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>o   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jrR   rS   rT   rU   r"   s   `             @@@@@r&   rE   rE   G   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 )G0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 * * * * * * * *76 7C 7I 7s 7W] 7 7 7 78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,   