
    ]i	                         S SK Jr  S SKJrJrJr  S SKJr  S SK	r	S SK
Jr  SSKJrJr  SSKJr  Sr " S S	\R&                  5      r " S
 S\R&                  5      r " S S\R&                  \5      rg)    )field)DictOptionalcastN   )RearrangeMixinReduceMixin)_EinmixMixinzAlex Rogozhnikovc                   L    \ rS rSr% \\S'   \\S'   \" \S9r\\S'   S r	S r
Srg	)
Reduce   pattern	reductiondefault_factorysizesc                 d    [        U R                  U R                  40 U R                  D6U l        g N)r	   r   r   r   reducerselfs    O/mnt/rpi/tmp/demucs-venv-sys/lib/python3.13/site-packages/einops/layers/flax.pysetupReduce.setup   s!    "4<<N4::N    c                 8    U R                   R                  U5      $ r   )r   _apply_reciper   inputs     r   __call__Reduce.__call__   s    ||))%00r   )r   N__name__
__module____qualname____firstlineno__str__annotations__r   dictr   r   r    __static_attributes__ r   r   r   r      s&    LN-E4-O1r   r   c                   B    \ rS rSr% \\S'   \" \S9r\\S'   S r	S r
Srg)		Rearrange   r   r   r   c                 N    [        U R                  40 U R                  D6U l        g r   )r   r   r   
rearrangerr   s    r   r   Rearrange.setup   s    (DDr   c                 8    U R                   R                  U5      $ r   )r0   r   r   s     r   r    Rearrange.__call__!   s    ,,U33r   )r0   Nr"   r+   r   r   r-   r-      s!    L-E4-E4r   r-   c            	           \ rS rSr% \\S'   \\S'   Sr\\   \S'   \" \	S9r
\	\S'   S rS	 rS
\\   S\\   S\\   S\\   4S jrS rSrg)EinMix%   r   weight_shapeN
bias_shaper   r   c                 x    U R                  U R                  U R                  U R                  U R                  S9  g )N)r   r7   r8   axes_lengths)initialize_einmixr   r7   r8   r   r   s    r   r   EinMix.setup+   s3    LL**	 	 	
r   c                    U R                  S[        R                  R                  R	                  U5      U5      U l        Ub@  U R                  S[        R                  R                  R	                  U5      U5      U l        g S U l        g )Nweightbias)paramjaxnninitializersuniformr>   r?   )r   r7   weight_boundr8   
bias_bounds        r   _create_parametersEinMix._create_parameters3   sc    jj366+>+>+F+F|+TVbc!

6366+>+>+F+Fz+RT^_DIDIr   pre_reshape_patternpre_reshape_lengthspost_reshape_patternpost_reshape_lengthsc                     S U l         Ub  [        U[        [        U5      S9U l         S U l        Ub  [        U[        [        U5      S9U l        g g )N)r   )pre_rearranger-   r   r)   post_rearrange)r   rI   rJ   rK   rL   s        r   _create_rearrange_layersEinMix._create_rearrange_layers;   sU     "*!*+>d4QdFe!fD"+"+,@TSgHh"iD ,r   c                 
   U R                   b  U R                  U5      n[        R                  " U R                  XR                  5      nU R
                  b  X R
                  -  nU R                  b  U R                  U5      nU$ r   )rN   jnpeinsumeinsum_patternr>   r?   rO   )r   r   results      r   r    EinMix.__call__J   so    )&&u-ED//D99 iiF*((0Fr   )r?   rO   rN   r>   )r#   r$   r%   r&   r'   r(   r8   r   r   r)   r   r   rG   r   rP   r    r*   r+   r   r   r5   r5   %   sy    L $J$-E4-
j%c]j &d^j 'sm	j
 'tnjr   r5   )dataclassesr   typingr   r   r   
flax.linenlinenrB   rA   	jax.numpynumpyrS    r   r	   _einmixr
   
__author__Moduler   r-   r5   r+   r   r   <module>rb      sT     ' '  
  ) !
	1RYY 	14		 4-RYY -r   