ó
    EñiK  ã                  óÈ   • % S r SSKJr  SSKJr  SSKrSSKJrJ	r
JrJr  \(       a  SSKrSS jr          SS jr	SS jrSS	 jrS
qS\S'   SqS\S'   SqS\S'   SS jrg)z‹
This module contains pre-dispatch wrappers for functorch operations
that enable proper tracing in PT2 non-strict export/compile fx graph.
é    )Úannotations)ÚTYPE_CHECKINGN)Ú_add_batch_dimÚ_remove_batch_dimÚ_vmap_decrement_nestingÚ_vmap_increment_nestingc                óÂ   • SSK Jn  U" 5       nUS:  a  U R                  U-   OUnU(       a'  [        R                  R                  [        U 4XU5      $ [        XU5      nU$ )zb
Thin wrapper around torch._C._add_batch_dim that is used to proxy in
PT2 export/compile fx graph
r   ©Ú+_maybe_find_pre_dispatch_tf_mode_for_export)Útorch._export.utilsr   ÚndimÚtorchÚ	overridesÚhandle_torch_functionr   Ú_add_batch_dim_impl)ÚselfÚ	batch_dimÚlevelr   ÚmodeÚress         ÚY/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_functorch/predispatch.pyr   r      s^   € õ
 Pá6Ó8€DØ)2°Q«�—	‘	˜IÒ%¸I€IæÜ�‰×4Ñ4Ü˜T˜G T°eó
ð 	
ô ˜d¨uÓ
5€CØ€Jó    c                ó”   • SSK Jn  U" 5       nU(       a'  [        R                  R	                  [
        U 4XX#5      $ [        XX#5      nU$ )ze
Thin wrapper around torch._C._remove_batch_dim that is used to proxy in
PT2 export/compile fx graph
r   r
   )r   r   r   r   r   r   Ú_remove_batch_dim_impl)r   r   Ú
batch_sizeÚout_dimr   r   r   s          r   r   r   0   sH   € õ Pá6Ó8€DæÜ�‰×4Ñ4Ü ˜w¨°Zó
ð 	
ô ! ¨jÓ
B€CØ€Jr   c                ó�   • SSK Jn  U" 5       nU(       a&  [        R                  R	                  [
        U 4X5      $ [        X5      nU$ )úd
Thin wrapper around torch._C._vmap_increment_nesting that is used
to proxy in export/compile graph
r   r
   )r   r   r   r   r   r   Ú_vmap_increment_nesting_impl)r   Ú
randomnessr   r   r   s        r   r   r   D   sD   € õ
 Pá6Ó8€DæÜ�‰×4Ñ4Ü# j ]°Jó
ð 	
ô ' zÓ
>€CØ€Jr   c                 ó†   • SSK Jn   U " 5       nU(       a$  [        R                  R	                  [
        S5      $ [        5       $ )r   r   r
   © )r   r   r   r   r   r   Ú_vmap_decrement_nesting_impl)r   r   s     r   r   r   U   s;   € õ
 Pá6Ó8€DæÜ�‰×4Ñ4Ü#Øó
ð 	
ô (Ó)Ð)r   FÚboolÚDECOMPOSITIONS_LOADEDzthreading.Lock | NoneÚDECOMPOSITIONS_LOCKztorch.library.Library | NoneÚVMAP_DECOMPOSITIONS_LIBc                 ó4  ^• SSK Jn   U " 5       nU(       a$  [        R                  R	                  [
        S5      $ [        (       a  g[        c  SSKnUR                  " 5       q[           [        (       a
   SSS5        gSSK
nUR                  R                  SS5      S:X  a  OSq SSS5        g[        R                  R                  SS	S
5      qSSKJm  SU4S jjnU" [        R$                  R&                  R(                  R*                  5        U" [        R$                  R&                  R,                  R*                  5        U" [        R$                  R&                  R.                  R*                  5        U" [        R$                  R&                  R0                  R*                  5        U" [        R$                  R&                  R2                  R*                  5        U" [        R$                  R&                  R4                  R*                  5        U" [        R$                  R&                  R6                  R*                  5        U" [        R$                  R&                  R8                  R*                  5        SqSSS5        g! , (       d  f       g= f)z@
Lazy loading of vmap decompositions with pre-dispatch support.
r   r
   r"   NÚPYTORCH_JITÚ1TÚatenÚIMPLÚFuncTorchBatched)Údecomposition_tablec                ó„   >• [         c  [        S5      eU T;   a  [         R                  U TU    5        g [        SU  35      e)Nz(VMAP_DECOMPOSITIONS_LIB must not be Nonez!could not find decomposition for )r'   ÚAssertionErrorÚimplÚRuntimeError)Údecompr.   s    €r   Ú#_register_python_decomposition_vmapÚElazy_load_decompositions.<locals>._register_python_decomposition_vmap–   sG   ø€ Ü&Ñ.Ü$Ð%OÓPÐPØÐ,Ó,Ü'×,Ñ,¨VÐ5HÈÑ5PÕQä"Ð%FÀvÀhÐ#OÓPÐPr   )r3   ztorch._ops.OpOverloadÚreturnÚNone)r   r   r   r   r   Úlazy_load_decompositionsr%   r&   Ú	threadingÚLockÚosÚenvironÚgetÚlibraryÚLibraryr'   Útorch._decompr.   Úopsr+   Úmse_loss_backwardÚdefaultÚsmooth_l1_loss_backwardÚhuber_loss_backwardÚnll_loss_forwardÚnll_loss2d_forwardÚnll_loss_backwardÚnll_loss2d_backwardÚaddr)r   r   r9   r;   r4   r.   s        @r   r8   r8   l   s¶  ø€ õ Pá6Ó8€DæÜ�‰×4Ñ4Ô5MÈrÓRÐR÷ ÒØô Ñ"Ûà'ŸnšnÓ.Ðæ	ß Ò Ø÷ 
Ð	ó 	à—
‘
—‘˜}¨cÓ2°cÓ9¸iØ$(Ð!Ø÷ 
Ð	ô #(§-¡-×"7Ñ"7Ø�FÐ.ó#
Ðõ 	6÷	Qñ 	,¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+Ü�I‰I�N‰N×2Ñ2×:Ñ:ô	
ñ 	,¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,KÑ,K×,SÑ,SÔTÙ+¬E¯I©I¯N©N×,MÑ,M×,UÑ,UÔVÙ+¬E¯I©I¯N©N×,LÑ,L×,TÑ,TÔUÙ+¬E¯I©I¯N©N×,NÑ,N×,VÑ,VÔWÙ+¬E¯I©I¯N©N×,?Ñ,?×,GÑ,GÔHà $Ð÷O 
×	Ö	ús   Á(J	Á>(J	Â/GJ	Ê	
J)r   útorch.Tensorr   Úintr   rL   r6   rK   )
r   rK   r   rL   r   rL   r   rL   r6   rK   )r   rL   r    Ústrr6   rL   )r6   rL   )r6   r7   )Ú__doc__Ú
__future__r   Útypingr   r   Útorch._C._functorchr   r   r   r   r   r#   r   r   r9   r%   Ú__annotations__r&   r'   r8   r"   r   r   Ú<module>rS      s�   ðòõ
 #å  ã ÷ó ö Ûôð&Ø
ðØ"ðØ03ðØ>Aðàôô(ô"*ð$ $Ð �tÓ #Ø-1Ð Ð*Ó 1Ø8<Ð Ð5Ó <õ=%r   