
    9i6              	       $   S SK r S SKrS SKJr  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rS SKrS SKrS SKJs  Jr  S SKJr  / SQr\R.                  R0                  r\R.                  R4                  r\R.                  R8                  rSr\" S	5      r\	" S
5      r S\\RB                  RD                     4S jr#\S 5       r$S r%S r& " S S5      r'S\(S\(4S jr)S\RB                  RD                  \\ 4   S\S\
\\\ 4   \4   4S jr*\S 5       r+g)    N)Iterator)contextmanager)CallableTypeVarUnion)	ParamSpec)DispatchKey)enable_python_dispatcherno_python_dispatcherenable_pre_dispatchF_P_T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        V/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/_dispatch/python.pyall_py_loaded_overloadsr      sN     $ ii%))R(GW.F"f// #  s   AAc               #     #    [         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     HH;;**E 8888:D((*@++$? 5++$? s   A<C?B  C B>>Cc           	         [        U5      (       d   eU R                  5       UR                  5       :X  d0   U" 5        SU R                  5        SUR                  5        35       eU R                  UR                  :X  d(   U" 5        SU R                   SUR                   35       e[        R                  R                  XSS9u  p4U(       d4   U" 5        SU R                  5        SUR                  5        SU S35       eg )	Nz: sizes  != z: dtype F)	only_cudaz
: strides z (mismatch at index ))callablesizedtyper   _prims_commoncheck_significant_stridesstride)nvrvdescsame_stridesidxs        r   check_tensor_metadata_matchesr5   F   s    D>>>779	!PdfXXbggi[RWWYK#PP!88rxxLDF88BHH:T"((!LL++EE
% F L  6(*RYY[Mbiik]:NseSTU<    c                   ^^	 [        T5      (       d   e[        R                  " U 5      u  p4[        R                  " U5      u  pV[        U5      [        U5      :X  d   [        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'   c                     > T " 5        ST 3$ )Nz output  )r2   is   r   <lambda>(check_metadata_matches.<locals>.<lambda>\   s    6Lr6   )
r*   pytreetree_flattenlenziprange
isinstancer   Tensorr5   )
nrr2   n_vals_n_specr_vals_r_specr0   r1   r:   s
     `      @r   check_metadata_matchesrJ   R   s    D>>>))!,OF))!,OF v;#f+%H#f+d3v;-'HH%s6{+V<	2"ell++%b.LM =r6   c                        \ rS rSrS rS rSrg)Lit_   c                     Xl         g Ns)selfrQ   s     r   __init__Lit.__init__`   s    r6   c                     U R                   $ rO   rP   )rR   s    r   __repr__Lit.__repr__c   s    vvr6   rP   N)__name__
__module____qualname____firstlineno__rS   rV   __static_attributes__r9   r6   r   rL   rL   _   s    r6   rL   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)   )rB   r   rC   rL   tupler+   r/   r,   )r]   s    r   _fmtra   g   sU    !U\\"""5?"32ahhj\!''RST
 	
 r6   op	final_keyc                    ^ ^^ SSK Jm  T [        R                  R                  R
                  R                  :X  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	U	4S jnS 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UU
U4S jn[        WXx5        U$ ! , (       d  f       NJ= f! , (       d  f       NS= f! , (       d  f       N\= f)Nc                 `  > [        U [        R                  5      (       a  [        R                  " U 5      (       a_  [        R                  " U 5      nU R                  5       UR                  5       :X  d   eU R                  5       UR                  5       :X  d   eOU nTR                  U5      $ U $ rO   )rB   r   rC   _is_functional_tensor_from_functional_tensorr+   r/   from_tensor)trE   	fake_modes     r   fakeify_defunCmake_crossref_functionalize.<locals>.handler.<locals>.fakeify_defun|   s    !U\\**..q1155a8A
 668qvvx///88:333A ,,Q//Hr6   c                 d    [        U [        R                  5      (       a  U R                  5       $ U $ rO   )rB   r   rC   detach)rm   s    r   maybe_detachBmake_crossref_functionalize.<locals>.handler.<locals>.maybe_detach   s$    !U\\**xxz!r6   c                     > SR                  [        R                  " S T 5       S TR                  5        5       5      5      n T SU  S3$ )Nr_   c              3   j   #    U  H)  n[        [        R                  " [        U5      5      v   M+     g 7frO   )reprr=   tree_mapra   ).0r]   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)r=   rx   ra   )ry   kvs      r   rz   r{      s0      $9DA #QvtQ789$9s   /1(r)   )join	itertoolschainitems)fmt_argsrb   orig_f_argsorig_f_kwargss    r   r2   :make_crossref_functionalize.<locals>.handler.<locals>.desc   sP    yyI[I$1$7$7$9H T8*A&&r6   )	r   utils_python_dispatch_disable_current_modesr%   r=   rx   _op_dkrJ   )rf   rg   ro   rs   f_argsf_kwargsf_rrE   r2   rn   r   r   re   rc   rb   s            @@@r   handler,make_crossref_functionalize.<locals>.handlery   s    "$		 	 KK((??A%'%}VnMF)/x0*&K &-H-  ( B IIi1$1&1
	' 	sA,#  (' BAs;   C/8C 	C	CC/
CC
C,	(C//
C=)torch._subclasses.fake_tensorre   r   r   aten
lift_freshdefaultr   rf   rg   r   )rb   rc   r   re   s   `` @r   make_crossref_functionalizer   p   s[     = 
UYY^^&&...4rww 4")) 4 4 4l Nr6   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)rb   s    r   enable_crossref_functionalizer      s     %'
UXX11??@ (E$&MM OQU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),r   unittest.mockr   collections.abcr   
contextlibr   typingr   r   r   typing_extensionsr   r   torch._C
torch._opstorch.utils._python_dispatchtorch.utils._pytreer   _pytreer=   r	   __all__r   _DisablePythonDispatcherr   _EnablePythonDispatcherr
   _EnablePreDispatchr   CROSSREF_FUNCTIONALIZEr   r   _ops
OpOverloadr   r%   r5   rJ   rL   objectra   r   r   r9   r6   r   <module>r      s2     $ % + + '    # $ $   Vxx88  88;; hh11  t_T]0%***?*?!@ 04 @ @	
N F v ?

b"f%?2=?
8BF[()?H E Er6   