ó
    !Eñiß  ã                   ó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     Úa/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/masked/maskedtensor/reductions.pyÚ_masked_all_allr      s1   € Ø�|Ø�x‰x‹zÐØ×Ñ˜T˜E 4Ó(×,Ñ,Ó.Ð.ó    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   € Ø�|Ü�yŠy˜°Ñ8Ð8Ü�9Š9�T×%Ñ% t e¨TÓ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=   € Ü
ˆ4ƒy�Aƒ~œ#˜f›+¨Ó*Ü˜t A™w¨V°F©^Ñ<Ð<Ü˜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×ÑÜ˜T 5¨'Ó2Ð2Ü�C Ô&ˆÜ�yŠy˜¨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Ñ4ŠKàÐ'Ô'¨D×,>Ñ,>×,@Ñ,@Ù" 4§;¡;£=°tÑ<×?Ñ?ÄeÇiÁiÐ?ÐPˆJð ×)Ñ)×+Ñ+ð ×"Ñ"Ó$×,Ñ,Ô.à—\‘\“^ð ð
 —.‘. Ó# JÑ/ˆCØ—Y‘Y“[×&Ñ&Ó(¬5¯<ª<Ø—	‘	“ D§K¡Kñ,ç‰g�a‹jñˆFô  Ÿ)š) C¡LÓ1‰Kð �^�^Ù#¤M°$·+±+³-ÀÓ$FÓG‰Kñ $ DÑ4ˆKä ¬U¯YªY°t«_Ó=Ð=r   © )r'   rC   s   ` r   Ú_torch_reduce_allrF   /   s   ø€ õ>ð@ Ðr   c                 ó   ^ • SU 4S jjnU$ )Nc                 óh  >• U R                   (       a!  ST	 S3n[        R                  " USS9  [        $ [	        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.é   )Ú
stacklevelz*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¯   ø€ Ø�>�>à(¨¨ð -@ð @ð ô �MŠM˜#¨!Ò,Ü!Ð!Ü ×%Ñ%ÜÐHÓIÐIä" 2Ó&ˆ	Ø�}‰}‹ˆØ�}‰}‹ˆØ�‹;Ù# D¸7ÑN‰Ká#Ø wÀ$Ç-Á-Ã/ñˆKô   ¬]¸4ÀgÓ-NÓOÐOr   ©FNrE   )r'   rP   s   ` r   Ú_torch_reduce_dimrS   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   rS   )r   r   r'   s     €r   Ú	reduce_fnÚ _torch_reduce.<locals>.reduce_fnq   sB   ø€ Üˆt‹9˜‹>œc &›k¨QÓ.Ü$ RÔ(¨¨a©Ó1Ð1Ü  Ô$ dÐ5¨fÑ5Ð5r   rE   )r'   rW   s   ` r   Ú_torch_reducerY   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      $ rV   )r   rF   r]   rS   )r   r   r\   r   r   r-   r'   s         €r   Úgrad_reduceÚ'_torch_grad_reduce.<locals>.grad_reduce~   sS   ø€ Üˆt‹9˜‹>œc &›k¨QÓ.Ü$ RÔ(¨¨a©Ó1Ð1ä%5°tÐ%F¸vÑ%FÑ"ˆ�GÜ  Ô$ U°Ó@Ð@r   rE   )r'   r`   s   ` r   Ú_torch_grad_reducerb   }   s   ø€ õAð Ðr   )r<   ÚmeanÚaminÚamaxr,   r+   Úprodr   ÚnormÚvarÚstdc                 óT   • U [         ;   =(       d    U [        ;   =(       d	    U [        ;   $ r[   )ÚNATIVE_REDUCE_MAPÚTORCH_REDUCE_MAPÚTENSOR_REDUCE_MAPr&   s    r   Ú_is_reductionrn   ¥   s$   € ØÔ"Ñ"×W bÔ,<Ñ&<×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$ [        $ r[   )rk   rl   rm   rM   )r'   r   r   s      r   Ú_apply_reductionrp   ©   sb   € Ø	ÔÓÜ  Ò$ dÐ5¨fÑ5Ð5Ø	ÔÓÜ Ò# TÐ4¨VÑ4Ð4Ø	ÔÓÜ  Ò$ dÐ5¨fÑ5Ð5ÜÐr   r[   rR   )!rK   r   Úcorer   Úcreationr   r   Ú__all__r   r   r   r   r(   rF   rS   rY   r]   rb   ÚREDUCE_NAMESr$   ÚopsÚatenrk   rl   ÚTensorrm   ÚlistÚkeysÚNATIVE_REDUCE_FNSÚTORCH_REDUCE_FNSÚTENSOR_REDUCE_FNSrn   rp   )Únames   0r   Ú<module>r~      sK  ðó ã å "ß 5ð €ô/ôNò,òò%ò!òHò:ô&òò€ñ DPóÚCO¸4�GˆE�I‰I�N‰N˜DÓ!¡=°Ó#6Ò6Á<ñÐ ñ @LóÚ?K°t�GˆE�4ÓÑ,¨TÓ2Ò2¹|ñÐ ñ GSóÚFR¸d�GˆE�L‰L˜$ÓÑ!3°DÓ!9Ò9ÁlñÐ ñ Ð*×/Ñ/Ó1Ó2Ð ÙÐ(×-Ñ-Ó/Ó0Ð ÙÐ*×/Ñ/Ó1Ó2Ð òXóùò'ùòùòs   Á.DÁ:DÂ$D