
    JTh                     4   S SK r S SKrSSKJr  SSKJrJr  / rSS jrSS jr	S r
S rS	 rS
 rS rS rSS jrS r/ SQr\ V s0 s H'  n \" \R(                  R*                  U 5      \" U 5      _M)     sn r\ V s0 s H  n \" \U 5      \" U 5      _M     sn r\ V s0 s H  n \" \R0                  U 5      \" U 5      _M     sn r\" \R7                  5       5      r\" \R7                  5       5      r\" \R7                  5       5      rS rS r gs  sn f s  sn f s  sn f )    N   )is_masked_tensor)as_masked_tensormasked_tensorc                 j    Uc  U R                  5       $ U R                  U) S5      R                  5       $ )NT)allmasked_fill)datamasks     \/var/www/auris/envauris/lib/python3.13/site-packages/torch/masked/maskedtensor/reductions.py_masked_all_allr      s1    |xxzTE4(,,..    c                 ~    Uc  [         R                  " XUS9$ [         R                  " U R                  U) S5      XS9$ )NdimkeepdimT)torchr   r	   )r
   r   r   r   s       r   _masked_all_dimr      s8    |yy8899T%%teT2MMr   c                  t    [        U 5      S:X  a  [        U5      S:X  a  [        U S   US   S9$ [        U 0 UD6$ )Nr   r   r   r   )lenr   r   )argskwargss     r   _masked_allr      s=    
4yA~#f+*tAwVF^<<D+F++r   c                     [        U[        5      (       a  [        X/U5      $ [        USS9 H  n[        R
                  " XUS9n M     U $ )NT)reverser   )
isinstanceint_multidim_anysortedr   any)r   r   r   ds       r   r   r   !   sD    #sT5'22C&yyg6 'Kr   c                 N    U S:X  a  [         $ [        [        R                  U 5      $ )Nr   )r   getattrr   maskedfns    r   _get_masked_fnr(   )   s     	U{5<<$$r   c                    ^  U 4S jnU$ )Nc                   > [        T	5      nU R                  5       nU R                  (       a  U R                  5       R	                  5       OU R                  5       nT	S:X  a  U" X#S9nGOOT	S;   Ga  U R                  5       (       a  U" UR	                  5       US9R                  [        R                  S9nU R                  5       (       d  UR                  5       R                  5       OUR                  5       nUR                  S5      U   nUR                  5       R                  5       [        R                  " UR                  5       UR                  S9R!                  S5      -  n[        R"                  " Xx-  5      nO8U R                  (       a!  U" [%        UR	                  5       U5      5      nOU" XS9n['        U[        R(                  " U5      5      $ )Nr   r   >   argmaxargmin)dtyper   )devicer   )r(   get_data	is_sparseget_maskvaluesis_sparse_cootor   r   to_sparse_cooindicesunbindsizenumeltensorr.   cumprodsumr   r   r!   )
self	masked_fnr
   r   result_data
sparse_idxr6   idxstrider'   s
            r   
reduce_all%_torch_reduce_all.<locals>.reduce_all0   sb   "2&	}}+/>>t}}%%'t}} ;#D4K''D,>,>,@,@"4;;=t<??eii?PJ ))++ ""$,,.\\^ 
 ..#J/CYY[&&(5<<		DKK,gajF  ))CL1K ^^#M$++-$FGK $D4KUYYt_==r    )r'   rC   s   ` r   _torch_reduce_allrF   /   s    >@ r   c                    ^  SU 4S jjnU$ )Nc                 j  > U R                   (       a"  ST	 S3n[        R                  " U5        [        $ [	        U 5      (       d  [        S5      e[        T	5      nU R                  5       nU R                  5       nT	S:X  a  U" XaX'S9nOU" XX#U R                  5       S9n[        U[        XqU5      5      $ )NzThe sparse version of aa   is not implemented in reductions.
If you would like this operator to be supported, please file an issue for a feature request at https://github.com/pytorch/maskedtensor/issues with a minimal reproducible code snippet.
In the case that the semantics for the operator are not trivial, it would be appreciated to also include a proposal for the semantics.z*Input to reduce_dim must be a MaskedTensorr   )r   r   r   )r   r   r-   r   )r0   warningswarnNotImplementedr   	TypeErrorr(   r/   r1   r   r   )
r=   r   r   r-   msgr>   r
   r   r?   r'   s
            r   
reduce_dim%_torch_reduce_dim.<locals>.reduce_dimT   s    >>( -@ @  MM#!!%%HII"2&	}}}};#D7NK#w$--/K  ]4g-NOOr   FNrE   )r'   rN   s   ` r   _torch_reduce_dimrQ   S   s    P2 r   c                    ^  U 4S jnU$ )Nc                     > [        U 5      S:X  a#  [        U5      S:X  a  [        T5      " U S   5      $ [        T5      " U 0 UD6$ Nr   r   )r   rF   rQ   )r   r   r'   s     r   	reduce_fn _torch_reduce.<locals>.reduce_fnq   sB    t9>c&kQ.$R(a11 $d5f55r   rE   )r'   rU   s   ` r   _torch_reducerW   p   s    6
 r   c                 
    XX#4$ NrE   )inputr   r   r-   s       r   _reduce_dim_argsr[   y   s    w%%r   c                    ^  U 4S jnU$ )Nc                     > [        U 5      S:X  a#  [        U5      S:X  a  [        T5      " U S   5      $ [        U 0 UD6u  p#pE[        T5      " X#XE5      $ rT   )r   rF   r[   rQ   )r   r   rZ   r   r   r-   r'   s         r   grad_reduce'_torch_grad_reduce.<locals>.grad_reduce~   sS    t9>c&kQ.$R(a11%5t%Fv%F"G $U@@r   rE   )r'   r^   s   ` r   _torch_grad_reducer`   }   s    A r   )r<   meanaminamaxr,   r+   prodr   normvarstdc                 T    U [         ;   =(       d    U [        ;   =(       d	    U [        ;   $ rY   )NATIVE_REDUCE_MAPTORCH_REDUCE_MAPTENSOR_REDUCE_MAPr&   s    r   _is_reductionrl      s$    ""Wb,<&<WFW@WWr   c                     U [         ;   a  [         U    " U0 UD6$ U [        ;   a  [        U    " U0 UD6$ U [        ;   a  [        U    " U0 UD6$ [        $ rY   )ri   rj   rk   rK   )r'   r   r   s      r   _apply_reductionrn      sb    	 $d5f55	#T4V44	 $d5f55r   rY   rP   )!rI   r   corer   creationr   r   __all__r   r   r   r   r(   rF   rQ   rW   r[   r`   REDUCE_NAMESr$   opsatenri   rj   Tensorrk   listkeysNATIVE_REDUCE_FNSTORCH_REDUCE_FNSTENSOR_REDUCE_FNSrl   rn   )names   0r   <module>r|      sK     " 5 /N,%!H:& DPCO4GEIINND!=#66<  @L?KtGE4,T22|  GSFRdGELL$!3D!99l  *//12 (--/0 *//12 X's   .D:D$D