ó
    Eñi^  ã            	       ó¸  • S SK r S SKrS SKJrJrJr  S SKJr  S SK	J
r
Jr  S SKJr  S SKrS SKrS SKrS SKrS SKJs  Jr  S SKJr  / SQr\R0                  R2                  r\R0                  R6                  r\R0                  R:                  rSr\" S	5      r \
" S
5      r!\
" S5      r"S\\RF                  RH                     4S jr%\S\S   4S j5       r&S\RN                  S\RN                  S\/ \(4   SS4S jr)S\*S\*S\/ \(4   SS4S jr+ " S S5      r,S\*S\*4S jr-S\RF                  RH                  \ \!4   S\S\\\ \!4   \4   4S jr.\S\S   4S j5       r/g)é    N)ÚCallableÚ	GeneratorÚIterator)Úcontextmanager)ÚTypeVarÚUnion)Ú	ParamSpec)ÚDispatchKey)Úenable_python_dispatcherÚno_python_dispatcherÚenable_pre_dispatchFÚ_PÚ_TÚ_RÚreturnc               #   óÂ   #   • [         R                   HG  n [        [         R                  U 5      nU H$  n[        X5      nU H  n[        X45      v •  M     M&     MI     g7f)aŒ  
Warning: the set of overloads this will report is very subtle.  It is precisely
the set of torch.ops functions that have actually been accessed from Python
(e.g., we actually called torch.ops.aten.blah at some point.  This is DIFFERENT
from the set of registered operators, which will in general be a larger set,
as this would include all operators which we ran C++ static initializers or
Python operator registration on.  This does not eagerly populate the list on
torch.ops.aten; this list is lazy!

In other words, this is good for traversing over everything that has an
OpOverload object allocated in Python.  We use it for cache invalidation, but
don't rely on this list being complete.

Note that even if we did report all C++ registered overloads, this isn't guaranteed
to be complete either, as a subsequent lazy load of a library which triggers more
registrations could add more things to the set.
N)ÚtorchÚopsÚgetattr)ÚnsÚpacketsÚop_nameÚpacketÚoverloads        ÚS/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_dispatch/python.pyÚall_py_loaded_overloadsr      sN   é € ô$ �iŒiˆÜœ%Ÿ)™) RÓ(ˆÛˆGÜ˜WÓ.ˆFÛ"�Ü˜fÓ/Ô/ó #ó ò ùs   ‚AA)NNNc               #   ó†  #   • [         R                  R                  [         R                  R                  R                  5      n [         R                  R                  5       nU (       a  [         R                  " 5          S v •  U (       a  [         R                  " US9  g g ! U (       a  [         R                  " US9  f f = f7f)N)Úreapply_views)r   Ú_CÚ&_dispatch_tls_is_dispatch_key_includedr
   ÚFunctionalizeÚ$_functionalization_reapply_views_tlsÚ_disable_functionalizationÚ_enable_functionalization)Úf_tlsÚf_rvs     r   Úsuspend_functionalizationr'   7   s„   é € ä�H‰H×;Ñ;Ü�‰×Ñ×*Ñ*ó€Eô �8‰8×8Ñ8Ó:€DÞÜ×(Ò(Ô*ð@ÛæÜ×+Ò+¸$Ó?ð øŽ5Ü×+Ò+¸$Ó?ð üs   ‚A<CÁ?B  ÂCÂ B>Â>CÚnvÚrvÚdescc           
      óH  • [        U5      (       d  [        S[        U5       35      eU R                  5       UR                  5       :w  a4  [        U" 5        SU R                  5        SUR                  5        35      eU R                  UR                  :w  a,  [        U" 5        SU R                   SUR                   35      e[
        R                  R                  XSS9u  p4U(       d8  [        U" 5        SU R                  5        SUR                  5        SU S	35      eg )
Núdesc must be callable, got z: sizes ú != z: dtype F)Ú	only_cudaz
: strides z (mismatch at index Ú))	ÚcallableÚAssertionErrorÚtypeÚsizeÚdtyper   Ú_prims_commonÚcheck_significant_stridesÚstride)r(   r)   r*   Úsame_stridesÚidxs        r   Úcheck_tensor_metadata_matchesr:   F   s  € ô �D�>‰>ÜÐ:¼4À»:¸,ÐGÓHÐHØ	‡w�wƒy�B—G‘G“IÓÜ¡£˜x x°·±³	¨{¸$¸r¿w¹w»y¸kÐJÓKÐKØ	‡x�x�2—8‘8ÓÜ¡£˜x x°·±¨z¸¸b¿h¹h¸ZÐHÓIÐIÜ×+Ñ+×EÑEØ
˜%ð Fð Ñ€Lö ÜÙ‹vˆh�j §¡£ ¨T°"·)±)³+°Ð>RÐSVÐRWÐWXÐYó
ð 	
ð ó    ÚnÚrc                 óÞ  ^^	• [        T5      (       d  [        S[        T5       35      e[        R                  " U 5      u  p4[        R                  " U5      u  pV[        U5      [        U5      :w  a"  [        [        U5       S[        U5       35      e[        [        [        U5      5      X55       H8  u  m	px[        U[        R                  5      (       d  M'  [        XxUU	4S j5        M:     g )Nr,   r-   c                  ó   >• T " 5        ST 3$ )Nz output © )r*   Úis   €€r   Ú<lambda>Ú(check_metadata_matches.<locals>.<lambda>d   s   ø€ ¹»¸ÀÈÈÑ6Lr;   )r0   r1   r2   ÚpytreeÚtree_flattenÚlenÚzipÚrangeÚ
isinstancer   ÚTensorr:   )
r<   r=   r*   Ún_valsÚ_n_specÚr_valsÚ_r_specr(   r)   rA   s
     `      @r   Úcheck_metadata_matchesrO   X   s´   ù€ Ü�D�>‰>ÜÐ:¼4À»:¸,ÐGÓHÐHÜ×)Ò)¨!Ó,�O€FÜ×)Ò)¨!Ó,�O€Fô ˆ6ƒ{”c˜&“kÓ!Ü¤ F£˜}¨D´°V³°Ð>Ó?Ð?Üœœs 6›{Ó+¨VÖ<‰	ˆˆ2Ü˜"œeŸl™l×+Ñ+ÙÜ% bÕ.LÖMò =r;   c                   ó4   • \ rS rSrS\SS4S jrS\4S jrSrg)ÚLitég   Úsr   Nc                 ó   • Xl         g ©N©rS   )ÚselfrS   s     r   Ú__init__ÚLit.__init__h   s   € Ø�r;   c                 ó   • U R                   $ rU   rV   )rW   s    r   Ú__repr__ÚLit.__repr__k   s   € Ø�v‰vˆr;   rV   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚstrrX   r[   Ú__static_attributes__r@   r;   r   rQ   rQ   g   s!   † ð˜#ð  $ô ð˜#÷ r;   rQ   Úac           	      óÌ   • [        U [        R                  5      (       aD  [        S[	        U R                  5       5       SU R                  5        SU R                   S35      $ U $ )Nztorch.empty_strided(ú, z, dtype=r/   )rI   r   rJ   rQ   Útupler3   r7   r4   )rc   s    r   Ú_fmtrg   o   sU   € Ü�!”U—\‘\×"Ñ"ÜØ"¤5¨¯©«£?Ð"3°2°a·h±h³j°\ÀÈ!Ï'É'ÈÐRSÐTó
ð 	
ð ˆr;   ÚopÚ	final_keyc                 óÞ   ^ ^^• SSK Jm  T [        R                  R                  R
                  R                  L a  T$ S[        R                  S[        R                  S[        4UUU 4S jjnU$ )Nr   )ÚFakeTensorModeÚargsÚkwargsr   c                  ó´  >^	^
^• T" 5       m	S[         S[         [        R                  R                  R                  -  4U	4S jjnS[         S[         [        R
                  -  4S jn[        R                  R                  R                  5          [        5          [        R                  " X U45      u  pE[        R                  " X4U45      u  m
mT	   T" U0 UD6nS S S 5        S S S 5        S S S 5        TR                  " T/U Q70 UD6nS[        4UU
U4S jjn[        WXx5        U$ ! , (       d  f       NR= f! , (       d  f       N[= f! , (       d  f       Nd= f)NÚtr   c                 ó  >• [        U [        R                  5      (       aã  [        R                  " U 5      (       aµ  [        R                  " U 5      nU R                  5       UR                  5       :w  a-  [        SU R                  5        SUR                  5        35      eU R                  5       UR                  5       :w  a-  [        SU R                  5        SUR                  5        35      eOU nTR                  U5      $ U $ )Nzsize mismatch: r-   zstride mismatch: )	rI   r   rJ   Ú_is_functional_tensorÚ_from_functional_tensorr3   r1   r7   Úfrom_tensor)ro   r=   Ú	fake_modes     €r   Úfakeify_defunÚCmake_crossref_functionalize.<locals>.handler.<locals>.fakeify_defun„   sÎ   ø€ Ü˜!œUŸ\™\×*Ñ*Ü×.Ò.¨q×1Ñ1Ü×5Ò5°aÓ8�Að
 —v‘v“x 1§6¡6£8Ó+Ü,¨¸q¿v¹v»x¸jÈÈQÏVÉVËXÈJÐ-WÓXÐXØ—x‘x“z Q§X¡X£ZÓ/Ü,Ø/°·±³
¨|¸4ÀÇÁÃ
¸|ÐLóð ð 0ð
 �Aà ×,Ñ,¨QÓ/Ð/ØˆHr;   c                 ód   • [        U [        R                  5      (       a  U R                  5       $ U $ rU   )rI   r   rJ   Údetach)ro   s    r   Úmaybe_detachÚBmake_crossref_functionalize.<locals>.handler.<locals>.maybe_detach˜   s$   € Ü˜!œUŸ\™\×*Ñ*Ø—x‘x“zÐ!à�r;   c                  ó˜   >• SR                  [        R                  " S T 5       S TR                  5        5       5      5      n T SU  S3$ )Nre   c              3   ój   #   • U  H)  n[        [        R                  " [        U5      5      v •  M+     g 7frU   )ÚreprrD   Útree_maprg   )Ú.0rc   s     r   Ú	<genexpr>ÚMmake_crossref_functionalize.<locals>.handler.<locals>.desc.<locals>.<genexpr>¯   s#   é € ÐIº[¸”Tœ&Ÿ/š/¬$°Ó2×3Ð3º[ùs   ‚13c              3   óf   #   • U  H'  u  pU S [         R                  " [        U5       3v •  M)     g7f)Ú=N)rD   r~   rg   )r   ÚkÚvs      r   r€   r�   °   s0   é € ð â$9™D˜Að ˜#˜QœvŸš¬t°QÓ7Ð8Õ9Ú$9ùs   ‚/1Ú(r/   )ÚjoinÚ	itertoolsÚchainÚitems)Úfmt_argsrh   Úorig_f_argsÚorig_f_kwargss    €€€r   r*   Ú:make_crossref_functionalize.<locals>.handler.<locals>.desc¬   sP   ø€ Ø—y‘yÜ—’ÙI¹[ÓIñà$1×$7Ñ$7Ô$9óóóˆHð �T˜˜8˜* AÐ&Ð&r;   )r   r   Ú_subclassesÚfake_tensorÚ
FakeTensorrJ   ÚutilsÚ_python_dispatchÚ_disable_current_modesr'   rD   r~   Ú_op_dkra   rO   )rl   rm   ru   ry   Úf_argsÚf_kwargsÚf_rr=   r*   rt   rŒ   r�   rk   ri   rh   s            @@@€€€r   ÚhandlerÚ,make_crossref_functionalize.<locals>.handler�   s  û€ Ù"Ó$ˆ	ð	œRð 	¤B¬×):Ñ):×)FÑ)F×)QÑ)QÑ$Q÷ 	ð(	œBð 	¤2¬¯©Ñ#4ô 	ô �K‰K×(Ñ(×?Ñ?ÕAÜ%Õ'ä%Ÿš¨}ÀV¸nÓMÑˆFÜ)/¯ªØ xÐ0ó*Ñ&ˆK˜ò Ù˜&Ð- HÑ-�÷ ÷ (÷ Bð �IŠI�iÐ1 $Ò1¨&Ñ1ˆð
	'”c÷ 
	'ñ 
	'ô 	˜s AÔ,Øˆ÷# •ú÷ (Õ'ú÷ BÕAús<   ÂE	Â8D8Ã	D'ÃD8Ã#E	Ä'
D5Ä1D8Ä8
E	ÅE	Å	
E)Útorch._subclasses.fake_tensorrk   r   r   ÚatenÚ
lift_freshÚdefaultr   rl   rm   r   )rh   ri   r™   rk   s   `` @r   Úmake_crossref_functionalizerŸ   x   s[   ú€ õ =ð 
ŒU�Y‰Y�^‰^×&Ñ&×.Ñ.Ò.ØÐð8”r—w‘wð 8¬"¯)©)ð 8¼÷ 8ñ 8ðt €Nr;   c               #   ót  #   • [        5        H6  n U R                  [        R                  R                  R
                  5        M8      [        5          [        R                  R                  SS5         S v •  S S S 5        S S S 5        [        5        H6  n U R                  [        R                  R                  R
                  5        M8     g ! , (       d  f       N[= f! , (       d  f       Nd= f! [        5        H6  n U R                  [        R                  R                  R
                  5        M8     f = f7f)Nz-torch._dispatch.python.CROSSREF_FUNCTIONALIZET)
r   Ú_uncache_dispatchr   r   r
   r!   r   ÚunittestÚmockÚpatch)rh   s    r   Úenable_crossref_functionalizer¥   À   sÍ   é € ä%Ö'ˆØ
×ÑœUŸX™X×1Ñ1×?Ñ?Ö@ñ (ðEä$Õ&Ü�M‰M×ÑÐ OÐQUÕVã÷ W÷ 'ô
 *Ö+ˆBØ× Ñ ¤§¡×!5Ñ!5×!CÑ!CÖDò ,÷	 WÕVú÷ 'Õ&ûô
 *Ö+ˆBØ× Ñ ¤§¡×!5Ñ!5×!CÑ!CÖDò ,üsP   ‚AD8Á
C/ Á!CÁ3CÁ8CÂ C/ ÂAD8Ã
C	ÃCÃ
C,Ã(C/ Ã/AD5Ä5D8)0rˆ   Úunittest.mockr¢   Úcollections.abcr   r   r   Ú
contextlibr   Útypingr   r   Útyping_extensionsr	   r   Útorch._CÚ
torch._opsÚtorch.utils._python_dispatchÚtorch.utils._pytreer’   Ú_pytreerD   r
   Ú__all__r   Ú_DisablePythonDispatcherr   Ú_EnablePythonDispatcherr   Ú_EnablePreDispatchr   ÚCROSSREF_FUNCTIONALIZEr   r   r   Ú_opsÚ
OpOverloadr   r'   rJ   ra   r:   ÚobjectrO   rQ   rg   rŸ   r¥   r@   r;   r   Ú<module>r¸      sµ  ðÛ Û ß 9Ñ 9Ý %ß !Ý 'ã Û Û Û #ß $Ð $Ý  ò V€à—x‘x×8Ñ8Ð Ø Ÿ8™8×;Ñ;Ð Ø—h‘h×1Ñ1Ð àÐ áˆtƒ_€ÙˆTƒ]€ÙˆTƒ]€ð0 ¨%¯*©*×*?Ñ*?Ñ!@ô 0ð4 ð@ 9Ð-=Ñ#>ó @ó ð@ð
Ø�‰ð
ØŸ,™,ð
Ø.6°r¸3°wÑ.?ð
à	ô
ð$N˜fð N¨ð N°xÀÀCÀÑ7Hð NÈTô N÷ñ ðˆFð �vô ðCØ�
‰
×Ñ˜b "˜fÑ%ðCØ2=ðCà
ˆ8�B˜�FÑ˜[Ð(Ñ)ôCðP ðE yÐ1AÑ'Bó Eó ñEr;   