§
    �Åjt  ã            
       ó  — 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	            úAC:\Projects\Historical\venv\Lib\site-packages\einops/array_api.pyÚreducer'      sv  € Ý�&�$ÑÔð *Ýˆv‰;Œ;˜!ÒÐÝÐFÑGÔGÐGØ�AŒY×*Ò*Ñ,Ô,ˆØ—’˜&Ñ!Ô!ˆˆà×'Ò'Ñ)Ô)ˆð9Ý % l×&8Ò&8Ñ&:Ô&:Ñ ;Ô ;ÐÝ/°¸ÍuÐUaÑObÔObÐioÔitÐuÑuÔuˆÝ&ØØØØ$Ø.ð
ñ 
ô 
ð 	
øõ ð 9ð 9ð 9ØW¨YÐWÐWÈGÐWÐWÐWˆÝ˜&¥$Ñ'Ô'ð 	,ØÐA°´ÐAÐAÐAÑAˆGˆGàÐ+Ñ+ˆGØÐ6 |Ð6Ð6Ð6Ñ6ˆÝ˜' I¨! I IÑ-Ñ.Ô.°DÐ8øøøøð9øøøs   Á=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ÐF¨XÐF¸ÐFÐFÐFó    c                 ó"   — t          | |fddi|¤ŽS )Nr   Ú	rearranger*   r+   s      r&   r.   r.   '   s   € Ý�&˜'ÐIÐI¨[ÐI¸LÐ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  € Ý,;¸GÀVÑ,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Ø×Ò §
¢
¨6Ð3p°U¸>¸M¸>Ô5JÐ3pÈBÐ3pÐQVÐWmÐWnÐWnÔQoÐ3pÐ3pÑ qÔ qÑrÔrÐrÐrà�9Š9Ð%¨Mˆ9Ñ:Ô:¸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Ð*oÐV]°°w°°¨2¨2ÅDÈÁMÄMÐ*oÐ*oÐ*or,   c              3   ó"   K  — | ]
}|d k    V — ŒdS )r7   N© )rH   Úxs     r&   ú	<genexpr>zunpack.<locals>.<genexpr>U   s&   è è € Ð!LÐ!L¨a ! 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‰   ø€ ð 
ð 
ð 
ñ !��=ð �JŠJàÐ^˜Ð^¥u¨_¸QÔ-?ÀÐQRÐUVÑQVÔAWÑ'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Ý,;¸GÈHÐ,UÑ,UÔ,UÑ)€M�< ð ”,€KÝ
ˆ;ÑÔ˜=¨1Ñ,¨|Ñ;Ò;Ð;ÝÐh¨ÐhÐhÐ[fÐhÐhÑiÔiÐià&€Mà*oÐ*oÐanÐ*oÑ*oÔ*oÐå!Ð!LÐ!LÐ3KÐ!LÑ!LÔ!LÑLÔLÐØ Ò"Ð"ÝØm˜7ÐmÐmÀ=ÐmÐmÐmñ
ô 
ð 	
ð �c�C Ñ.Ô.Ñ.°+¸mÔ2LÐ1MÑM€OØ !Ò#Ð#ÝÐ6°s¸°sÔ;Ñ<Ô<ð 	<ð 	<‰DˆAˆqØ%4°QÔ%7¸!Ñ%;ˆO˜A ™EÑ"Ð"ð	<ð &>×%CÒ%CÀBÑ%GÔ%GÐÝÐ,Ñ-Ô-ð 	Vð 	VˆAØ%4°QÔ%7Ð:RÐSTÔ:UÑ%UˆO˜A ™EÑ"Ð"ÝÐ,¨qÑ0µ#Ð6NÑ2OÔ2OÑPÔPÐQUÐQUÐSUÐQUÔVð 	Vð 	VˆAØ!0°°Q±Ô!7Ð:RÐSTÔ:UÑ!UˆO˜AÑÐà˜n˜}˜nÔ-€KØ˜M¨AÑ-Ð/Ð/Ô0€IÝ˜$ Ñ%Ô%Ð'¨-Ñ7€Lðð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ %.¨mÑ$<Ô$<ð
ñ 
ô 
ð 	
øõ ð ð ð åð/¨ð /ð /ÐSbÐceÔSfð /ð /Ø,ð/ð /ñ
ô 
ð ð	øøøøðøøø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Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *ð9�6ð 9 Cð 9°Ið 9Èsð 9ÐW]ð 9ð 9ð 9ð 9ð8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°U¸6À4ÈÄ;Ð;NÔ5Oð Jð Jð Jð Jð(5�6ð 5¨$¨u¬+ð 5Àð 5ÈÈVÌð 5ð 5ð 5ð 5ð 5ð 5r,   