
    #hW                        U d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZmZm	Z	m
Z
mZmZ d dlZd dlmc mZ d dlmZ d dlmZ  eed          o eed          Ze j        d             Z G d d	          Zej        j        Zej        j        Zd
edefdZi Z ej!        ej"        ej#        ej$        ej%        ej&        gZ' G d de          Z(d Z)d Z*d Z+d Z,i a-e	ej        j        e
f         e.d<   e j        d             Z/d Z0d Z1d Z2 e3            a4d Z5d Z6d Z7 G d de          Z8 G d d          Z9 G d d ej:                  Z; G d! d"e;          Z< G d# d$ej:                  Z= e=            Z>dS )%    N)AnyCallableDictListTypeUnion)_utils_internal)dispatch_functorchgetdlopenflagssetdlopenflagsc               #      K   t           sdV  dS t          j                    } t          j        | t          j        z             	 dV  t          j        |            dS # t          j        |            w xY w)z
    Context manager to set the RTLD_GLOBAL dynamic linker flag while we open a
    shared library to load custom operators.
    N)_SET_GLOBAL_FLAGSsysr   r   ctypesRTLD_GLOBAL)	old_flagss    J/var/www/html/auto_sub_bot/venv/lib/python3.11/site-packages/torch/_ops.pydl_open_guardr      s        "$$Iy6#55666&9%%%%%9%%%%s   A A5c                   <    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	S )
OperatorBasez
    Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
    (which represents Python-only operators that are unrepresentable in TorchScript).
    c                 J    i | _         i | _        ddlm} i | _        i | _        d S )Nr   )TorchDispatchMode)_dispatch_cache
py_kernelstorch.utils._python_dispatchr   python_key_mode_tablefunctorch_table)selfr   s     r   __init__zOperatorBase.__init__*   sI    $  	 KMBBBBBB  	"  "    c                     t                      NNotImplementedErrorr   argskwargss      r   __call__zOperatorBase.__call__X       !###r    c                     || j         v S r"   )r   )r   ks     r   has_kernel_for_dispatch_keyz(OperatorBase.has_kernel_for_dispatch_key[   s    DO##r    c                     | j         D ]9}t          j                            |          s|                    |          r dS :dS )NTF)r   torch_C_dispatch_is_alias_keyhas)r   ksr+   s      r   has_kernel_for_any_dispatch_keyz,OperatorBase.has_kernel_for_any_dispatch_key^   sI     	 	A822155 "&&)) ttur    c                       fd}|S )Nc                 ~   t          j                  rTt          t          j        j        j                  r0j        vsJ | j        <   j        	                                 | S t          t          j        j        j                  rj        vsJ | j        <   | S t          t          j        j                  sJ t          j        j        j        k    s
J d            j        v r't%          d d                                           | j        <   j        	                                 | S )NzGPlease register a mode for the torch._C.DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )inspectisclass
issubclassr.   utils_python_dispatchr   r   r   clear
isinstancer/   
_functorchTransformTyper   DispatchKeyPythonr   RuntimeErrorname)fnr+   r   s    r   innerz#OperatorBase.py_impl.<locals>.innere   sS   q!! j5;/A' '   :::::02*1-$**,,,	!UX0>??  44444*,$Q'	a!566666UX)0000X 100 DO##"YAYYDIIKKYY   "$DOA &&(((Ir     )r   r+   rD   s   `` r   py_implzOperatorBase.py_impld   s)    	 	 	 	 	 	8 r    c                 |   ddl mmm fd}fd}fd} |                     t
          j        j        j                  |            |                     t
          j	        j
        j                  |            |                     t
          j        j        j        j                  |           S )Nr   )CppFunctionalizeAPIFunctorchFunctionalizeAPIPythonFunctionalizeAPIc                  ,                  g| R i |S r"   rE   )r&   r'   _CppFunctionalizeAPIrC   s     r   functionalize_dk_fnz?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn   s-    2**,,>t>>>v>>>r    c                 ,                  g|R i |S r"   rE   )moder&   r'   _PythonFunctionalizeAPIrC   s      r   functionalize_dispatch_mode_fnzJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fn   s-    2--//A$AAA&AAAr    c                 .      |           g|R i |S r"   rE   )interpreterr&   r'   _FunctorchFunctionalizeAPIrC   s      r   functionalize_functorch_fnzFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fn   s/    200==OOOOOOOr    )#torch._subclasses.functional_tensorrH   rI   rJ   rF   r.   r/   r?   Functionalize_subclassesfunctional_tensorFunctionalTensorModer=   r>   )r   rC   rM   rQ   rU   rL   rT   rP   s    `   @@@r   py_functionalize_implz"OperatorBase.py_functionalize_impl   s)   	
 	
 	
 	
 	
 	
 	
 	
 	
 	
	? 	? 	? 	? 	? 	?	B 	B 	B 	B 	B 	B	P 	P 	P 	P 	P 	P 	9UX)7889LMMMNU&8MNN*	
 	
 	
 	FUX(6DEE&	
 	
 	
 	r    c                     t                      r"   r#   r   s    r   rB   zOperatorBase.name   r)   r    N)__name__
__module____qualname____doc__r   r(   r,   r3   rF   r[   rB   rE   r    r   r   r   $   s         
," ," ,"\$ $ $$ $ $    T  :$ $ $ $ $r    r   opr+   c                    |                      |          r|S t          j        }|t          j        k    st	          ||          r|                      |          r|S t          j        }|t          j        k    st	          ||          r|                      |          r|S |                     t          j        	                    |                    p|                      t          j                  }t          j
        }|t          j        k    r)t	          ||          r|                      |          r|s|S t          j        }|t          j        k    st	          ||          r\|                      |          rG|t          j        k    r3|                     t          j        j                  rt          d          |s|S t          j        }t	          ||          r|                      |          r|S t          j        }t	          ||          r|                      |          r|S t          j                            |          r|S t%          d|  d|           )Nzambiguous autogradother kernelzcould not find kernel for  at dispatch key )r,   r?   &CompositeExplicitAutogradNonFunctional	Undefinedis_included_in_aliasCompositeExplicitAutogradr3   r.   r/   *_dispatch_get_backend_keyset_from_autograd%CompositeImplicitAutogradNestedTensorCompositeImplicitAutogradAutogradOther _dispatch_autogradother_backendsrA   AutogradFuncTorchBatchedDecomposition_dispatch_has_backend_fallbackr$   )rb   r+   candhas_backend_kernels       r   resolve_keyrs      s]   	%%a(( =D	["""&:1d&C&C"

(
(
.
. 	#0D	["""&:1d&C&C"

(
(
.
. 	#;;;;A>>  O		'	'(M	N	N  <D	
k#	#	#(<Q(E(E	#**400 
$" 
$ 0D	["""&:1d&C&C"

(
(
.
. 	#)))b.P.PH5/
 /
) ?@@@# 	KDAt$$ )G)G)M)M 4DAt$$ )G)G)M)M x..q11  
S2SSPQSS
T
TTr    c                   \     e Zd Z fdZ fdZed             Zd Zd Zd Z	d Z
d Z xZS )	HigherOrderOperatorc                 j   t                                                       || _        || _        | t          |<   d| _        | j        t          u r"| j        r
d| j        z   nd}| j	        |z   | _	        t          j                                        | _        t          D ]}|                     |           d S )Nhigher_order. )superr   _namer^   _higher_order_ops_ns	__class__ru   	namespacer_   r.   r/   _dispatch_keyset_fullnon_fallthrough_keys2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSfallthrough)r   rB   self_name_spacedispatch_keyr~   s       r   r   zHigherOrderOperator.__init__   s    
 "&$! >0006:nLcDN22"O"o?DO$)H$B$B$D$D!N 	+ 	+L\****	+ 	+r    c                     t          |t          j        j                  r9| j                            |          s| j                            |          | _        t                                          |          S r"   )	r<   r.   r/   r?   r   r1   addrz   rF   r   r+   r~   s     r   rF   zHigherOrderOperator.py_impl  sd    a-.. 	It7P7T7TUV7W7W 	I(,(A(E(Ea(H(HD%wwq!!!r    c                     | j         S r"   )r}   r]   s    r   r   zHigherOrderOperator.namespace  	    xr    c                 D    | j                             |          | _         d S r"   )r   remove)r   r   s     r   r   zHigherOrderOperator.fallthrough  s!    $($=$D$D\$R$R!!!r    c           	      P   ddl m} || j        v r6| j        |         }t          |t          j        j                  rJ  ||i |S |t          j        j        j        k    rt          | ||          S |t          j        j        j	        k    rddl m
}  |            }|
J d            t          |          | j        v sJ d| d            | j        t          |                   } |            5 }	 ||	g|R i |cd d d            S # 1 swxY w Y   t          j                            |          }
|
t                      v rt                      |
         }t          |          dk    rt          j                            t          j	                  s|d         }t                                          t          j        g           }| j        t          |                   }t          |          dk    r3t'          |          5 }	 ||	g|R i |cd d d            S # 1 swxY w Y   t)          | |          }|| j        vrt-          d| j         d	| d
| d          | j        |         | j        |<   | j        |         }t          |t          j        j                  rJ  ||i |S )Nr   _get_current_dispatch_mode)_pop_mode_temporarilyMIllegal invocation of dispatch on torch._C.DispatchKey.Python without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rd   z (resolved from ))r   r   r   r<   r.   r/   r?   FuncTorchDynamicLayerFrontModer
   r@   r   typer   _to_functionality_keymode_stack_per_keylen&_dispatch_tls_is_dispatch_key_excludedgetPreDispatchtemporarily_pop_moders   r   r$   r{   )r   r   r&   r'   r   kernelr   	curr_modehandlerrO   functionality_key
curr_stackpre_dispatch_modes	final_keys                 r   dispatchzHigherOrderOperator.dispatch  s   KKKKKK4///),7F!&%(*>?????64*6***58/NNN%dD&99958/666JJJJJJ2244I%%^ &%% Y4#====@i@@@ >==0iAG&&(( 6Dwt5d555f556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 "H::<HH 2 4 444+--.?@J   (II" 
 'rN	%7%9%9%=%=+R& &" 4T)__E)**Q..-.@AA >T&wt=d===f==> > > > > > > > > > > > > > > >  l33	 DO++%N N N#,N N>JN N N   .2_Y-G\*+ feh&:;;;;;vt&v&&&s$   /DDDHH"Hc                 R     dd l ddl m} | fd            } |            S )Nr   )disablec                      t                    } j                            |           r j        j        | gR i S t	          j                  } j        |                                gR i S r"   )_to_flat_tuple	overrideshas_torch_functionhandle_torch_function_compute_keysetr   r   highestPriorityTypeId)	flat_argsdispatch_key_setr&   r'   r   r.   s     r   wrapperz-HigherOrderOperator.__call__.<locals>.wrappera  s    &tV44I11)<< <u<)&*  .4    /tVT=VWW 4= 6688;?  CI  r    )torch._dynamor   )r   r&   r'   r   r   r.   s   ```  @r   r(   zHigherOrderOperator.__call__[  sf     	))))))	
	 
	 
	 
	 
	 
	 
	 

	 wyyr    c                 ,    |                                   S r"   )rB   r]   s    r   __str__zHigherOrderOperator.__str__p  s    ))++r    c                     | j         S r"   r{   r]   s    r   rB   zHigherOrderOperator.names  
    zr    )r^   r_   r`   r   rF   propertyr   r   r   r(   r   rB   __classcell__r~   s   @r   ru   ru      s        + + + + +*" " " " "
   XS S S<' <' <'|  *           r    ru   c                 $    t          j        | i |S r"   )pytreearg_tree_leaves)r&   r'   s     r   r   r   w  s    !426222r    c                 B    t          | |          }t          ||          S r"   )_get_tensorskey_extractor)r&   r'   r   tensorss       r   r   r   {  s"    4((G"6777r    c                 X    t          | |          }d |D             }t          |          S )Nc                 F    g | ]}t          |t          j                  |S rE   )r<   r.   Tensor).0ts     r   
<listcomp>z _get_tensors.<locals>.<listcomp>  s)    FFF*Q*E*EF1FFFr    )r   tuple)r&   r'   flat_alltensor_argss       r   r   r     s2    dF++HFFhFFFKr    c                     t           j                                        }| D ]$}|t           j                            |          z  }%|t           j                                        z
  }||z  }|S r"   )r.   r/   _dispatch_tls_local_include_set_dispatch_keys_dispatch_tls_local_exclude_set)r   key_maskkey_settensors       r   r   r     sg    h6688G < <EH33F;;;@@BBBG GNr    _mode_stack_per_keyc              #      K   t          |           dk    sJ |                                 }	 |V  |                     |           d S # |                     |           w xY wNr   )r   popappend)
mode_stacktop_modes     r   r   r     sn      z??Q~~H$(#####
(####s   A Ac                      t           S r"   )r   rE   r    r   r   r     s    r    c                 $   t          | t          j        j                  sJ t          |t          j        j        j                  sJ | t                      vrg t                      | <   t                      |                              |           d S r"   )	r<   r.   r/   r?   r9   r:   r   r   r   )keyrO   s     r   push_mode_for_keyr     s    c58/00000dEK8JKKKKK
$&&&&$&S!$$T*****r    c                     t          | t          j        j                  sJ | t	                      v sJ t	                      |          }t          |          dk    sJ |                                S r   )r<   r.   r/   r?   r   r   r   )r   curr_mode_stacks     r   pop_mode_for_keyr     sp    c58/00000$&&&&&&(**3/O!####   r    c                 :    t                               |            d S r"   )
cached_opsr   )op_overloads    r   add_cached_opr     s    NN;r    c                  8    t                                            d S r"   )r   r;   rE   r    r   reset_cached_opsr     s    r    c                      t           S r"   )r   rE   r    r   get_cached_opsr     s    r    c                        e Zd Z fdZddZd Zd Zd Zd Z fdZ	 fd	Z
ed
             Zd Zd Zd Zd Zed             Zed             Zed             Z xZS )
OpOverloadc                    t                                                       || _        || _        || _        || _        || _        |j        dk    rdn|j        | _        | j        j	        | _
        |j        r| xj
        d|j        z   z  c_
        | j        j	                            d          d          d| j         | _        |j        | _        |j        |_        | j
        | _        i | _        | j        t           j        j        v | _        d }| j        j        D ]'}|j        
||j        j        }|j        j        p|}(|d uo| | _        d S )Nry   defaultrx   ::   )rz   r   _op_op_dk_schema_overloadpacket_tagsoverload_name_overloadnamerB   r{   splitr^   r_   r`   __annotations__r.   library_defs_defined_in_python	arguments
alias_infois_writeis_view)	r   overloadpacketrb   op_dkschematagsr   ar~   s	           r   r   zOpOverload.__init__  s\   -
-33II9M 	 \&
 	5JJ# 444JJ<,22488;RRd>PRR(3&1 J! #'"3u}7J"J ' 	= 	=A|#<0 <0<Ht+<Hr    Nc                     | S r"   rE   r   memos     r   __deepcopy__zOpOverload.__deepcopy__      r    c                 d     dj         g | j        j                            d          | j        R  S )Nz'<OpOverload(op='{}.{}', overload='{}')>r   formatr   rB   r   r   r]   s    r   __repr__zOpOverload.__repr__  sE    ?8? 
\$$T**
,0,>
 
 
 	
r    c                       | j         |i |pi S r"   r   r%   s      r   r(   zOpOverload.__call__   s    tx0&,B000r    c                 *    t          | j                  S r"   hashr   r]   s    r   __hash__zOpOverload.__hash__      DH~~r    c                 d     dj         g | j        j                            d          | j        R  S )Nz{}.{}.{}r   r  r]   s    r   r   zOpOverload.__str__  s6     z T$,"3"9"9$"?"?TASTTTTr    c                     t                                          |          p1t          j                            |                                 |          S r"   )rz   r,   r.   r/   %_dispatch_has_kernel_for_dispatch_keyrB   r   s     r   r,   z&OpOverload.has_kernel_for_dispatch_key
  sF    ww22
 
 LX;;DIIKKKK	Lr    c                     t           j                            |                                 |          p t	                                          |          S r"   )r.   r/   )_dispatch_has_kernel_for_any_dispatch_keyrB   rz   r3   )r   r2   r~   s     r   r3   z*OpOverload.has_kernel_for_any_dispatch_key  sD    xAAIIKK
 
 9WW44R88	9r    c                 L    | j         j                            d          d         S )Nr   r   )r   rB   r   r]   s    r   r   zOpOverload.namespace  s     | &&t,,Q//r    c                     t           j        j        j        }|| j        v r | j        |         |i |S t           j                            |                                 |          r | j        |g|R i |S t          S r"   )	r.   r/   r?   rk   r   r  rB   r   NotImplemented)r   r&   r'   dks       r   	decomposezOpOverload.decompose  s    X!;  
 '4?2&7777X;;DIIKKLL 	"4;r3D333F333!!r    c                 <    | j                             |d            d S r"   )r   r   )r   r   s     r   _uncache_dispatchzOpOverload._uncache_dispatch-  s!      d+++++r    c                 R     j         vsJ   d             t          j        j        j        k    rC j        s j         <   t                      S  fd}| j         <   t                      |S d}t          j                                      }|t                      v rZt                      |         t                    dk    r1t          j        
                    t          j                  s fd}|S d}t                     }t          j        j        j        k    rCdd lmc m} |j        r3|                     |          }|r| j         <   t                      |S  j                            ||          }|r| j         <   t                      |S )N c                      ddl m} t           |                      }|
J d            |j        vr j        g| R i |S  j        |         | i |S )Nr   r   r   )r   r   r   r   r   )r&   r'   r   r   r   r   s       r   r   z)OpOverload._get_dispatch.<locals>.handler;  s    SSSSSS !!;!;!=!=>>	))b *))D$>>> '4;s<T<<<V<<<<t1)<dMfMMMr    Tr   c                     t                    5 }t          |d          sJ g }t          j        | i |}|D ]}t	          |t
          j                  rht
          j                            |          	                    t
          j        j
        j                  r"|                    t          |                     |                    || |          cd d d            S # 1 swxY w Y   d S )N__torch_dispatch__)r   hasattrr   r   r<   r.   r   r/   r   r1   r?   r@   r   r   r"  )r&   r'   r   overload_typesargs_flattenedr  r   r   s         r   r   z)OpOverload._get_dispatch.<locals>.handler[  s4   -j99 Y&y2FGGGGG)+)/)?)P)P)P!/ ? ?A
  *!U\:: ?ux?V?V !@ @!c%("6"=>>? !/ 5 5d1gg > > >(;; .$                    s   CC""C&)C&F)r   r.   r/   r?   r@   r   r   r   r   r   r   rs   rW   torch._dispatch.python	_dispatchpythonCROSSREF_FUNCTIONALIZEmake_crossref_functionalizer   r   )	r   r   r   cache_resultr   r   
pydispatchrr   s	   ``      @r   _get_dispatchzOpOverload._get_dispatch1  s    $....4#...%(&---- ,/$S)d###
N N N N N N  )0D %$N!H::3?? 2 4 444+--.?@J   (II"      2   %c**	
 %(&4447777777770 $@@yQQ (07D(-!$''' O	955 	 ()D %$r    c                     | j         S r"   r   r]   s    r   rB   zOpOverload.name  r   r    c                     | j         S r"   )r   r]   s    r   r   zOpOverload.overloadpacket  s    ##r    c                     | j         S r"   r  r]   s    r   rb   zOpOverload.op  r   r    c                     | j         S r"   )r   r]   s    r   r   zOpOverload.tags  s
    zr    r"   )r^   r_   r`   r   r  r
  r(   r  r   r,   r3   r   r   r  r  r.  rB   r   rb   r   r   r   s   @r   r   r     so       != != != != !=H   
 
 

1 1 1  U U UL L L L L
9 9 9 9 9
 0 0 X0" " "*, , ,\ \ \|   $ $ X$   X   X    r    r   c                   \    e Zd Zd ZddZd Zd Zd Zed             Z	d Z
d	 Zd
 Zd ZdS )OpOverloadPacketc                 L    || _         || _        || _        || _        g | _        d S r"   )_qualified_op_namer^   r   _overload_names_dir)r   qualified_op_nameop_namerb   overload_namess        r   r   zOpOverloadPacket.__init__  s-     #4-			r    Nc                     | S r"   rE   r  s     r   r  zOpOverloadPacket.__deepcopy__  r  r    c                 F     dj         | j                            d           S )Nz<OpOverloadPacket(op='{}.{}')>r   r	  r6  r   r]   s    r   r
  zOpOverloadPacket.__repr__  s)    6/6$**400
 	
r    c                 *    t          | j                  S r"   r  r]   s    r   r  zOpOverloadPacket.__hash__  r  r    c                 F     dj         | j                            d           S )Nz{}.{}r   r>  r]   s    r   r   zOpOverloadPacket.__str__  s"    w~t6<<TBBCCr    c                     | j         S r"   r  r]   s    r   rb   zOpOverloadPacket.op  r   r    c           
         |dk    rdS 	 |                     d          rt          | j        |          S nG# t          $ r: t          dt	          |            dt	          | j                   d| d          d w xY w	 |dk    rd	n|}t
          j                            | j        |          \  }}}t
          j        	                    | j        |          }t          | ||||          }t          | ||           | j                            |           |S # t          $ r% t          d
t	          |            d| d          d w xY w)N__file__	torch.ops__'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r   ry   zThe underlying op of 'z' has no overload name ')
startswithgetattrr   AttributeErrorstrr.   r/   _get_operation_overloadr6  _get_schemar   setattrr8  r   rA   )r   r   use_keyop_op_dk_r   r   overloads           r   __getattr__zOpOverloadPacket.__getattr__  s   *;	~~d## .tx---. 	 	 	
 !PCII P P!$TXP PBEP P P  		9,,bb#G % @ @'! !C X))$*A7KKF!$VVTBBHD#x(((IS!!!O 	 	 	 RTRRCRRR 	s   )5 AA9=BD /Ec                 *    t          | j                  S r"   iterr8  r]   s    r   __iter__zOpOverloadPacket.__iter__      DIr    c                       | j         |i |pi S r"   r  r%   s      r   r(   zOpOverloadPacket.__call__  s    
 tx0&,B000r    c                 $    d | j         D             S )Nc                     g | ]}|r|nd 	S )r   rE   )r   ns     r   r   z.OpOverloadPacket.overloads.<locals>.<listcomp>  s!    DDD!Q%IDDDr    )r7  r]   s    r   	overloadszOpOverloadPacket.overloads  s    DDt/CDDDDr    r"   )r^   r_   r`   r   r  r
  r  r   r   rb   rR  rV  r(   r\  rE   r    r   r4  r4    s             
 
 

  D D D   X) ) )V  1 1 1E E E E Er    r4  c                   .     e Zd ZdZ fdZd Zd Z xZS )_OpNamespacea0  
    An op namespace to dynamically bind Operators into Python.

    Say a user has created a custom Operator called "my_namespace::my_op". To
    call this op, the user will write torch.ops.my_namespace.my_op(...).
    At startup, this operation will not yet be bound into Python. Instead, the
    following sequence of magic tricks will occur:
    1. `torch.ops.my_namespace` will invoke the `__getattr__` magic method
       on the `torch.ops` object, which will create a new `_OpNamespace`
       object called `my_namespace` and set it as an attribute on the `ops`
       object.
    2. `torch.ops.my_namespace.my_op` will then invoke `__getattr__` on
       the `my_namespace` object, which will retrieve the operation via
       `torch.get_operation`, a function bound from C++, and then in a similar
       fashion bind this new object onto the `my_namespace` object.
    3. `torch.ops.my_namespace.my_op(...)` then calls this new operation
        and subsequent accesses will incur no further lookup (the namespace and
        operation will already exist).
    c                 l    t                                          d|z              || _        g | _        d S )Nz
torch.ops.)rz   r   rB   r8  )r   rB   r~   s     r   r   z_OpNamespace.__init__  s2    ,---				r    c                 *    t          | j                  S r"   rT  r]   s    r   rV  z_OpNamespace.__iter__#  rW  r    c                 Z   |dk    rdS |dv rt          d| d| j         d          | j        }| d| }	 t          j                            |          \  }}|t          d| j         d	| d          n.# t
          $ r!}t          d| j         d	| d          |d }~ww xY wt          j        j                            ||           | j	        d
z   |z   |_	        t          ||||          }| j	        d
z   |z   |_	        t          | ||           | j                            |           |S )NrC  rD  )
__origin____self__zInvalid attribute 'z' for '_OpNamespace' 'rF  r   z'_OpNamespace' '' object has no attribute 'rx   )rI  rB   r.   r/   _jit_get_operationrA   jit	_builtins_register_builtinr_   r4  rM  r8  r   )r   r:  namespace_namer9  rb   r;  eopoverloadpackets           r   rR  z_OpNamespace.__getattr__&  s   j  ;222 QgQQTYQQQ   -::::	!&!<!<=N!O!OBz$WtyWWWWWW     	 	 	 !S49SSSSS 	 		--b2CDDD#->+wN
 
 '+o&;n&L# 	g/000	!!!s   ?A7 7
B"BB")r^   r_   r`   ra   r   rV  rR  r   r   s   @r   r^  r^  	  s`         (    
  &  &  &  &  &  &  & r    r^  c                   $     e Zd Z fdZd Z xZS )_PyOpNamespacec                 X    t                                          |           || _        d S r"   )rz   r   _ops)r   rB   opsr~   s      r   r   z_PyOpNamespace.__init__P  s&    			r    c                     | j                             |d           }|t          d| j         d| d          t	          | ||           |S )Nz'_PyOpNamespace' 'rd  rF  )ro  r   rI  rB   rM  )r   rB   rb   s      r   rR  z_PyOpNamespace.__getattr__T  s_    Y]]4&&: RTYRR4RRR   	dB	r    )r^   r_   r`   r   rR  r   r   s   @r   rm  rm  O  sG                  r    rm  c                   :     e Zd ZdZ fdZd Zd Zd Zd Z xZ	S )_Opsz_ops.pyc                     t                                          d           t                      | _        t	          dt
                    | _        g | _        d S )NrD  ztorch.ops.higher_order)rz   r   setloaded_librariesrm  r|   _higher_order_op_namespacer8  )r   r~   s    r   r   z_Ops.__init__b  sL    %%% #*8$&7+
 +
' 			r    c                     |dk    r| j         S t          |          }t          | ||           | j                            |           |S )Nrw   )rw  r^  rM  r8  r   )r   rB   r   s      r   rR  z_Ops.__getattr__j  sS    >!!22 !&&	dI&&&	r    c                 *    t          | j                  S r"   rT  r]   s    r   rV  z_Ops.__iter__u  rW  r    c                 .    t          j        |           dS )a{  
        Imports a Python module that has torch.library registrations.

        Generally, to extend PyTorch with custom operators, a user will
        create a Python module whose import triggers registration of
        the custom operators via a torch.ops.load_library call or a call
        to one or more torch.library.* APIs.

        It is unexpected for Python modules to have side effects, so some
        linters and formatters will complain. Use this API to import Python
        modules that contain these torch.library side effects.

        Args:
            module (str): The name of the Python module to import

        N)	importlibimport_module)r   modules     r   r|  z_Ops.import_modulex  s    " 	'''''r    c                     t          j                    rdS t          j        |          }t	                      5  t          j        |           ddd           n# 1 swxY w Y   | j                            |           dS )a  
        Loads a shared library from the given path into the current process.

        The library being loaded may run global initialization code to register
        custom operators with the PyTorch JIT runtime. This allows dynamically
        loading custom operators. For this, you should compile your operator
        and the static registration code into a shared library object, and then
        call ``torch.ops.load_library('path/to/libcustom.so')`` to load the
        shared object.

        After the library is loaded, it is added to the
        ``torch.ops.loaded_libraries`` attribute, a set that may be inspected
        for the paths of all libraries loaded using this function.

        Args:
            path (str): A path to a shared library to load.
        N)	r.   _running_with_deployr	   resolve_library_pathr   r   CDLLrv  r   )r   paths     r   load_libraryz_Ops.load_library  s    $ %'' 	F3D99__ 	 	 K		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 	!!$'''''s   AA A)
r^   r_   r`   rC  r   rR  rV  r|  r  r   r   s   @r   rs  rs  _  sy        H    	 	 	  ( ( (&( ( ( ( ( ( (r    rs  )?
contextlibr   r{  r6   r   typestypingr   r   r   r   r   r   torch._Cr.   torch.utils._pytreer9   _pytreer   r	   torch._functorch.pyfunctorchr
   r#  r   contextmanagerr   r   r/   _dispatch_is_included_in_aliasrg   r?   rs   r|   PythonDispatcherPythonTLSSnapshotADInplaceOrViewBackendSelectAutocastCPUAutocastCUDAr   ru   r   r   r   r   r   r   r   r   r   r   ru  r   r   r   r   r   r4  
ModuleTyper^  rm  rs  rp  rE   r    r   <module>r     s              



  9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9  $ $ $ $ $ $ $ $ $ ! ! ! ! ! ! ; ; ; ; ; ; GC!122UwwsDT7U7U  & & & H$ H$ H$ H$ H$ H$ H$ H$V x> h"2UL 2U[ 2U 2U 2U 2Uj    !6 2~ ~ ~ ~ ~, ~ ~ ~B3 3 38 8 8
    " 9; T%(.45 : : :
 $ $ $  + + +! ! ! SUU
     
  
  I I I I I I I I`TE TE TE TE TE TE TE TELC  C  C  C  C 5# C  C  C L    \    G( G( G( G( G(5 G( G( G(V dffr    