
    [ThE                        % S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	J
r
JrJrJr  S SKJrJr  S SKrS SKJs  Jr  S SKJr  S SKJrJr  S SKJrJr  S SKJr  \(       a  S SK J!r!  \" S	5      r"\" S
5      r#\$" \S5      =(       a	    \$" \S5      r%\RL                  S 5       r' " S S5      r(S\(S\4S jr)0 r*\+\,S4   \-S'   \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  /r4 " S S\(\ Rj                  5      r6S r7S r8S r9S r: " S S5      r;\;" 5       q<S;S jr=S r>S r?S r@S  rAS! rBS" rC\D" 5       qE\DS#   \-S$'   S% rFS& rGS' rH " S( S#\(5      rI " S) S*\I5      rJS+ rKS,\R                  S-\M4S. jrN " S/ S05      rOS\O4S1 jrP " S2 S3\R                  5      rRS4 rSS5 rT " S6 S7\R5      rU " S8 S9\R                  5      rV\V" 5       rW\V\-S:'   g)<    N)AnyCallableOptionalTYPE_CHECKINGTypeVarUnion)Concatenate	ParamSpec)_utils_internal)_dispatch_is_included_in_aliasDispatchKey)dispatch_functorchTransformType)TorchDispatchMode)BaseFunctionalizeAPI_T_Pgetdlopenflagssetdlopenflagsc               #     #    [         (       d  Sv   g[        R                  " 5       n [        R                  " U [        R
                  -  5         Sv   [        R                  " U 5        g! [        R                  " U 5        f = f7f)zu
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    B/var/www/auris/envauris/lib/python3.13/site-packages/torch/_ops.pydl_open_guardr       s^      ""$Iy6#5#556&9%9%s   ABA+ B+BBc                       \ rS rSrSrS rS rS rS rS\	\
\   \
\R                     \\4   S\\\\4   /\\\4   4   4S	 jrS
\\S\4   \4   S\\S\4   \4   4S jrS rSrg)OperatorBase1   z
Base class for OpOverload (which represents C++ ATen operators) and HigherOrderOperator
(which represents Python-only operators that are unrepresentable in TorchScript).
c                 <    0 U l         0 U l        0 U l        0 U l        g N)_dispatch_cache
py_kernelspython_key_tablefunctorch_tableselfs    r   __init__OperatorBase.__init__7   s1    $  	 BD  	  "    c                     [         er"   NotImplementedErrorr(   argskwargss      r   __call__OperatorBase.__call__c       !!r+   c                     XR                   ;   $ r"   )r$   )r(   ks     r   has_kernel_for_dispatch_key(OperatorBase.has_kernel_for_dispatch_keyf   s    OO##r+   c                     U R                    HA  n[        R                  R                  U5      (       a  M)  UR	                  U5      (       d  MA    g   g)NTF)r$   torch_C_dispatch_is_alias_keyhas)r(   ksr6   s      r   has_kernel_for_any_dispatch_key,OperatorBase.has_kernel_for_any_dispatch_keyi   s9    A8822155"&&)) ! r+   r6   returnc                 h   ^ ^ S[         [        [        4   S[         [        [        4   4UU 4S jjnU$ )NfnrA   c                   > [         R                  " T5      (       aq  [        T[        5      (       d  [        T[        R
                  5      (       a=  TTR                  ;  d   eU TR                  T'   TR                  R                  5         U $ [        T[        5      (       a#  TTR                  ;  d   eU TR                  T'   U $ [        T[        5      (       d   eT[        R                  :w  d   S5       eTTR                  ;   a  [        ST STR!                  5        35      eU TR                  T'   TR                  R                  5         U $ )Nz>Please register a mode for the DispatchKey.Python key instead.z%Trying to override a python impl for z on operator )inspectisclass
issubclassr   r:   Tensorr%   r#   clear
isinstancer   r&   r   Pythonr$   RuntimeErrorname)rC   r6   r(   s    r   inner#OperatorBase.py_impl.<locals>.innerx   s*   q!!1/00Jq%,,4O4O 5 5555+-%%a($$**,	!]++ 4 4444*,$$Q'	a----*** P* DOO#";A3mDIIK=Y  "$DOOA  &&(Ir+   )r   r   r   )r(   r6   rN   s   `` r   py_implOperatorBase.py_implo   s4    	hr2v& 	8BF+; 	 	8 r+   rC   r   c                   ^^^^ SSK JmJnJmJm  S[
        R                  S[
        R                  S[        4UU4S jjnS[        U   S[
        R                  S[
        R                  S[        4UU4S jjnS[
        R                  S[
        R                  S[        4UU4S	 jjnU R                  [        R                  5      " U5        U R                  U5      " U5        U R                  [        R                  5      " U5        T$ )
Nr   )CppFunctionalizeAPIFunctionalTensorModeFunctorchFunctionalizeAPIPythonFunctionalizeAPIr0   r1   rA   c                  &   > T" T" 5       /U Q70 UD6$ r"    )r0   r1   rS   rC   s     r   functionalize_dk_fn?OperatorBase.py_functionalize_impl.<locals>.functionalize_dk_fn   s    )+=d=f==r+   modec                 (   > T" T" U 5      /UQ70 UD6$ r"   rX   )r[   r0   r1   rV   rC   s      r   functionalize_dispatch_mode_fnJOperatorBase.py_functionalize_impl.<locals>.functionalize_dispatch_mode_fn   s      ,T2DTDVDDr+   c                 (   > T" T" U 5      /UQ70 UD6$ r"   rX   )interpreterr0   r1   rU   rC   s      r   functionalize_functorch_fnFOperatorBase.py_functionalize_impl.<locals>.functionalize_functorch_fn   s      /<NtNvNNr+   )#torch._subclasses.functional_tensorrS   rT   rU   rV   r   r0   r1   r   r   rP   r   Functionalizer   )	r(   rC   rT   rY   r]   ra   rS   rU   rV   s	    `    @@@r   py_functionalize_impl"OperatorBase.py_functionalize_impl   s    	
 	
	>rww 	>")) 	> 	> 	>	E/0	E9;	ELNII	E	E 	E
	O "	O3599	O	O 	O
 	[../0CD)*+IJ]0012LM	r+   c                     [         er"   r-   r'   s    r   rM   OperatorBase.name   r4   r+   )r#   r&   r$   r%   N)__name__
__module____qualname____firstlineno____doc__r)   r2   r7   r?   r   typer   r:   rH   r   r   r   r   r   rP   r	   re   rM   __static_attributes__rX   r+   r   r   r   1   s    
*"X"$%"#
% 
8BF#$hr2v&66	7%d;'=r'ABBFG	+4b892=	>>"r+   r   opr6   c                 >   U R                  U5      (       a  U$ [        R                  nU[        R                  :X  d  [	        X5      (       a  U R                  U5      (       a  U$ [        R
                  nU[        R                  :X  d  [	        X5      (       a  U R                  U5      (       a  U$ U R                  [        R                  R                  U5      5      =(       d    U R                  [        R
                  5      n[        R                  nU[        R                  :w  a/  [	        X5      (       a  U R                  U5      (       a	  U(       d  U$ [        R                  nU[        R                  :X  d  [	        X5      (       al  U R                  U5      (       aV  U[        R                  :X  a9  U R                  [        R                  R                  5      (       a  [        S5      eU(       d  U$ [        R                  n[	        X5      (       a  U R                  U5      (       a  U$ [        R                   n[	        X5      (       a  U R                  U5      (       a  U$ [        R                  R#                  U5      (       a  U$ [%        SU  SU 35      e)Nzambiguous autogradother kernelzcould not find kernel for  at dispatch key )r7   r   &CompositeExplicitAutogradNonFunctional	Undefinedis_included_in_aliasCompositeExplicitAutogradr?   r:   r;   *_dispatch_get_backend_keyset_from_autograd%CompositeImplicitAutogradNestedTensorCompositeImplicitAutogradAutogradOther _dispatch_autogradother_backendsrL   AutogradFuncTorchBatchedDecomposition_dispatch_has_backend_fallbackr.   )rp   r6   candhas_backend_kernels       r   resolve_keyr      s   	%%a((==D	["""&:1&C&C

(
(
.
.00D	["""&:1&C&C

(
(
.
.;;;;A> O		'	'(M(M	N  <<D	
k##	#(<Q(E(E**400"00D	["""&:1&C&C

(
(
.
.)))b.P.PHH55/
 /
 ?@@#KDA$$)G)G)M)M44DA$$)G)G)M)Mxx..q11 
 :2$>OPQsS
TTr+   HigherOrderOperator_higher_order_opsc                      ^  \ rS rSrSS.U 4S jjrS\\\   \\R                     \
\4   S\\\\4   /\\\4   4   4U 4S jjr\S 5       rS	 rS
 rS r\R,                  S 5       rS rS rSrU =r$ )r   i  F)	cacheablec                0  > [         TU ]  5         [        U 5      [        L a  [	        S5      eXl        Xl        U [        U'   SU l        SU l	        X l
        [        R                  R                  5       U l        [         H  nU R!                  U5        M     g )NzODirect instantiation of HigherOrderOperator is not allowed. Please subclass it.higher_ordertorch.ops.higher_order)superr)   rn   r   rL   _nameri   r   _nsrj   
_cacheabler:   r;   _dispatch_keyset_fullnon_fallthrough_keys2_HIGHER_ORDER_OP_DEFAULT_FALLTHROUGH_DISPATCH_KEYSfallthrough)r(   rM   r   dispatch_key	__class__s       r   r)   HigherOrderOperator.__init__  s    :,,a  
 "&$!2#$)HH$B$B$D!NL\* Or+   r6   rA   c                    > [        U[        5      (       a@  U R                  R                  U5      (       d   U R                  R	                  U5      U l        [
        TU ]  U5      $ r"   )rJ   r   r   r=   addr   rP   r(   r6   r   s     r   rP   HigherOrderOperator.py_impl(  sP     a%%d.G.G.K.KA.N.N(,(A(A(E(Ea(HD%wq!!r+   c                     U R                   $ r"   )r   r'   s    r   	namespaceHigherOrderOperator.namespace5      xxr+   c                     U R                   $ r"   )r   r'   s    r   r   HigherOrderOperator.cacheable9  s    r+   c                 D    U R                   R                  U5      U l         g r"   )r   remove)r(   r   s     r   r   HigherOrderOperator.fallthrough<  s    $($=$=$D$D\$R!r+   c                  ^^ SSK Jn  XR                  ;   a.  U R                  U   n[        U[        5      (       a   eU" U0 UD6$ U[        R
                  :X  a  [        XU5      $ U[        R                  :X  Ga(  / mS mUU4S jn/ UQUR                  5       Q7 H9  nU" U5        [        U[        [        45      (       d  M(  U H  nU" U5        M     M;     [        T5      n	SSK Jn
  U" 5       nUbu  [        U5      U R                  ;   a5  U R                  [        U5         nU
" 5        nU" U/UQ70 UD6nS S S 5        O[        SU R                   SU S35      eW[         La  U$ U	 H  n[        U5      nUR"                  [$        R&                  R(                  :X  a  M8  U[$        R*                  R,                  R.                  L aM  [$        R*                  R,                  R0                  nU R                  U   nU" UR2                  /UQ70 UD6nUs  $ XR                  ;   a  U R                  U   nU" U0 UD6nO[        SU R                   S	U S35      eU[         Ld  M  Us  $    [5        S
U R                   SU SU	 Vs/ s H  n[        U5      PM     sn 35      e[$        R&                  R7                  U5      nU[        R8                  :X  a  SSK Jn
  [;        5       S:  a  [$        R&                  R=                  [        R                  5      (       dn  [?        5       nUc   S5       e[        U5      U R                  ;   d   SU S35       eU R                  [        U5         nU
" U5       nU" U/UQ70 UD6sS S S 5        $ [A        X5      nUU RB                  ;  a  [        SU R                   SU SU S35      eU[        R8                  :w  a  U RB                  U   U R                  U'   U RB                  U   n[        U[        5      (       a   eU" U0 UD6$ ! , (       d  f       GN= fs  snf ! , (       d  f       N= f)Nr   _get_current_dispatch_modec                 ^    [         R                  R                  U 5      R                  S5      $ )NrK   )r:   r;   _dispatch_keysr=   )tensors    r   has_python_key4HigherOrderOperator.dispatch.<locals>.has_python_keyR  s"    xx..v6::8DDr+   c                    > [        U [        R                  5      (       a   T" U 5      (       a  TR                  U 5        g g g r"   )rJ   r:   rH   append)argr   overloaded_args_lists    r   check_overloaded6HigherOrderOperator.dispatch.<locals>.check_overloadedU  s5    c5<<00^C5H5H(//4 6I0r+   )_pop_mode_temporarilyz%There was no rule registered for HOP z
 and mode z. We recommend filing an issue.z and subclass zMultiple dispatch failed for zl. There was no registered that did not return NotImplemented. Use HOP.py_impl to register some. Tried mode: z) and subclasses: zIIllegal invocation of dispatch on DispatchKey.PreDispatch without a mode.zCurrent active mode z not registeredz.could not find kernel for HigherOrderOperator rr   z (resolved from ))"torch.utils._python_dispatchr   r#   rJ   r   FuncTorchDynamicLayerFrontModer   rK   valueslisttupler   rn   r%   r.   r   NotImplemented__torch_dispatch__r:   r;   _disabled_torch_dispatch_impl_subclassesfake_tensor
FakeTensorFakeTensorMode	fake_mode	TypeError_to_functionality_keyPreDispatch&_len_torch_dispatch_stack_pre_dispatch&_dispatch_tls_is_dispatch_key_excluded'_get_current_dispatch_mode_pre_dispatchr   r$   )r(   r   r0   r1   r   kernelr   r   aoverloaded_argsr   	curr_modehandlerr[   resultsubclass_typefunctionality_key	final_keyr   r   s                     @@r   dispatchHigherOrderOperator.dispatchA  sQ   K///)),7F!&+66664*6**;EEE%d&99;--- $& E5 100 %cD%=11 (+ ! 1 $$89O K24I$	?d&;&;;"33DODG.0D ")!?!?!? 10
 .?

|:V_U` a8 9  /!M ' $S	!44xx==>  !E$5$5$A$A$L$LL$)$5$5$A$A$P$PM"33MBG$S]]DTDVDF!M $9$99"33MBG %d5f5F-?

|>ZgYh i8 9  /!M= 'B /

| <(k);%45_DG_568  "HH::<H 7 77J
 781<hhEE""  DE	 , _, I$*?*?? *9+_E? //Y@*+<="49$9&9 >=  3	 DOO+%@ M##,+-=l^1N  ;222151KD  .+ fk2222t&v&& 10d 6, >=s   ,P"P44P9"
P19
Qc                &   ^ ^^ UUU 4S jnU" 5       $ )Nc                  $  > [        TT5      n [        R                  R                  U 5      (       a%  [        R                  R                  " TU /TQ70 TD6$ [        TTTR                  5      nTR                  " UR                  5       /TQ70 TD6$ r"   )	_to_flat_tupler:   	overrideshas_torch_functionhandle_torch_function_compute_keysetr   r   highestPriorityTypeId)	flat_argsdispatch_key_setr0   r1   r(   s     r   wrapper-HigherOrderOperator.__call__.<locals>.wrapper  s    &tV4I11)<<<<)&*.4   /tVT=V=VW== 668;?CI r+   rX   )r(   r0   r1   r   s   ``` r   r2   HigherOrderOperator.__call__  s    
	 yr+   c                 $    U R                  5        $ r"   )rM   r'   s    r   __str__HigherOrderOperator.__str__  s    ))+r+   c                     U R                   $ r"   r   r'   s    r   rM   HigherOrderOperator.name      zzr+   )rj   ri   r   r   r   r   )ri   rj   rk   rl   r)   r   rn   r   r:   rH   r   r   r   r   r   rP   propertyr   r   r   r   abcabstractmethodr2   r   rM   ro   __classcell__r   s   @r   r   r     s     +0 + +8""#
" 
8BF#$hr2v&66	7"  S
F'P 	   r+   c                 .    [         R                  " U 0 UD6$ r"   )pytreearg_tree_leavesr0   r1   s     r   r   r     s    !!42622r+   c                 .    [        X5      n[        X25      $ r"   )_get_tensorskey_extractor)r0   r1   r   tensorss       r   r   r     s    4(G77r+   c                     [        X5      nU Vs/ s H&  n[        U[        R                  5      (       d  M$  UPM(     nn[	        U5      $ s  snf r"   )r   rJ   r:   rH   r   )r0   r1   flat_allttensor_argss        r   r   r     s>    d+H&Fh*Q*E1hKF Gs
   #A
A
c                     [         R                  R                  5       nU  H%  nU[         R                  R                  U5      -  nM'     U[         R                  R	                  5       -
  nX!-  nU$ r"   )r:   r;   _dispatch_tls_local_include_setr   _dispatch_tls_local_exclude_set)r   key_maskkey_setr   s       r   r   r     s[    hh668GEHH33F;; @@BBG GNr+   c                   ,    \ rS rSrS rS rS rS rSrg)_ModeStackStateForPreDispatchi  c                 $    S S /U l         S U l        g r"   )*_ModeStackStateForPreDispatch__infra_modes_schema_check_moder'   s    r   r)   &_ModeStackStateForPreDispatch.__init__  s    "D\"&r+   c                 V    U[        U R                  5      :  d   eX R                  U'   g r"   lenr   )r(   indexr[   s      r   set!_ModeStackStateForPreDispatch.set  s)    s4--....$(5!r+   c                 V    U[        U R                  5      :  d   eU R                  U   $ r"   r   )r(   r  s     r   get!_ModeStackStateForPreDispatch.get  s,    s4--....!!%((r+   c                     [        U R                   Vs/ s H	  oc  M  UPM     sn5      [        U R                  S L5      -   $ s  snf r"   )r  r   intr   )r(   is     r   count#_ModeStackStateForPreDispatch.count  sD    t11C1!A1CDs##4/H
 
 	
Cs
   AA)__infra_modesr   N)	ri   rj   rk   rl   r)   r  r  r  ro   rX   r+   r   r   r     s    '))
r+   r   c                 p  ^ ^ [        5       mT bN  T [        R                  R                  R                  [        R                  R                  R
                  4;   d   eU(       a  T b   eUU 4S jnU" 5       n[        5       nUS:X  a.  [        R                  R                  [        R                  S5        U$ )Nc                    > T[         R                  R                  R                  :X  a-  TR	                  S5      n [        5       R                  SS 5        U $ T[         R                  R                  R                  :X  a-  TR	                  S5      n [        5       R                  SS 5        U $ [        5       R                  n S [        5       l        U $ Nr      )	r:   r;   _TorchDispatchModeKeyPROXYr  !mode_stack_state_for_pre_dispatchr  
FUNCTIONALr   )current_modecurrent_mode_stack_pre_dispatchmode_keys    r   _unset_mode,unset_mode_pre_dispatch.<locals>._unset_mode&  s    uxx55;;;:>>qAL-/33At<77BBB:>>qAL-/33At<<>QQLEI-/Br+   r   F)
r  r:   r;   r  r  r  r   '_dispatch_tls_set_dispatch_key_includedr   r   )r  schema_checkr  r  new_pre_dispatch_lenr  s   `    @r   unset_mode_pre_dispatchr    s    &G&I#x&&,,&&11,       =LAC
 q 889P9PRWXr+   c                 ^   SSK Jn  SSKJn  SSKJn  [        U UUU45      (       d   e[        5       n[        X5      (       a5  [        5       R                  nUS:  a  [        S5      eU [        5       l	        O[        X5      (       a9  [        5       R                  S5      nUb   e[        5       R                  SU 5        O8[        5       R                  S5      nUb   e[        5       R                  SU 5        US:X  a/  [        R                  R                  [         R"                  S5        g g )Nr   )rT   )SchemaCheckMode)ProxyTorchDispatchModezYSchemaCheckMode for pre-dispatch must be used exclusively, found other modes on the stackr  T)rc   rT   #torch._subclasses.schema_check_moder   "torch.fx.experimental.proxy_tensorr!  rJ   r   r  r   AssertionErrorr  r  r:   r;   r  r   r   )r[   rT   r   r!  previous_mode_stack_lenr  s         r   _set_mode_pre_dispatchr&  A  s   HCI "	
    EF$((8:MM"Q& k  BF)+>	D	/	/8:>>qA###)+//488:>>qA###)+//48 !#889P9PRVW $r+   c                  x   [        5       n [        5       nUS:X  a  [        S5      eU R                  b
  [	        S SS9$ U R                  S5      b-  [	        [        R                  R                  R                  5      $ U R                  S5      b-  [	        [        R                  R                  R                  5      $ g )Nr   zTrying to pop empty mode stackT)r  r  )r  r   r$  r   r  r  r:   r;   r  r  r  )
mode_stackpre_dispatch_lens     r   _pop_mode_from_pre_dispatchr*  h  s    24J=?1=>>$$0&t$??~~a$&uxx'E'E'P'PQQ~~a$&uxx'E'E'K'KLL %r+   c                  2    [        5       R                  5       $ r"   )r  r  rX   r+   r   r   r   w  s    ,.4466r+   c                 R   U [         R                  R                  R                  [         R                  R                  R                  4;   d   eU [         R                  R                  R                  :X  a  [        5       R                  S5      $ [        5       R                  S5      $ r  )r:   r;   r  r  r  r  r  )r  s    r   _get_dispatch_mode_pre_dispatchr-  {  s    &&,,&&11    588117770266q990266q99r+   c                  h   [        5       R                  b  [        5       R                  $ [        5       R                  5       n U S:X  a  [        5       R                  S5      $ U S:X  aL  [        5       R                  S5      b  [        5       R                  S5      $ [        5       R                  S5      $ g )N   r  r   )r  r   r  r  )	stack_lens    r   r   r     s    (*==I02EEE57==?	>46::1==> 56::1=I 2377: 78<<Q?
 r+   c                      [         $ r"   )"_mode_stack_state_for_pre_dispatchrX   r+   r   r  r    s    --r+   
OpOverload
cached_opsc                 .    [         R                  U 5        g r"   )r4  r   )op_overloads    r   add_cached_opr7    s    NN;r+   c                  ,    [         R                  5         g r"   )r4  rI   rX   r+   r   reset_cached_opsr9    s    r+   c                      [         $ r"   )r4  rX   r+   r   get_cached_opsr;    s    r+   c                      ^  \ rS rSrU 4S jr\S 5       r\S 5       r\S 5       rSS jr	S r
S rS	 rS
 rS rU 4S jrU 4S jr\S 5       rS rS rS rS rS r\S 5       r\S 5       r\S 5       rSrU =r$ )r3  i  c                   > [         TU ]  5         X l        X0l        X@l        Xl        XPl        UR                  S:X  a  SOUR                  U l        U(       a"  [        R                  R                  U;   U l        U R                  R                  U l        UR                  (       a"  U =R                  SUR                  -   -  sl        U R                  R                  R                  S5      S    SU R                   3U l        UR"                  U l        UR"                  Ul        U R                  U l        0 U l        S U l        U R$                  [        R*                  R,                  ;   U l        S nU R                  R0                   HL  nUR2                  c  M  Uc  UR2                  R4                  nM-  UR2                  R4                  =(       d    UnMN     US L=(       a    U(       + U l        g )N default.::r  )r   r)   _op_op_dk_schema_overloadpacket_tagsoverload_name_overloadnamer:   Tagnondeterministic_seeded_nondeterministic_seededrM   r   splitri   rj   rk   __annotations___lazy_handlelibrary_defs_defined_in_python	arguments
alias_infois_writeis_view)	r(   overloadpacketrp   op_dkschematagsrT  r   r   s	           r   r)   OpOverload.__init__  s   -
--3I9M9M 	 ,1II,M,MQU,UD)\\&&
JJ# 4 444J<<,,2248;<Ad>P>P=QR(33&11 JJ! ! #'"3"3u}}7J7J"J ''A||#<<00 <<00<H (  t+<Hr+   c                 R    U R                   R                  R                  S5      S   $ NrA  r   rD  rM   rL  r'   s    r   
_namespaceOpOverload._namespace  "    ||  &&t,Q//r+   c                 R    U R                   R                  R                  S5      S   $ )NrA  r  r]  r'   s    r   _opnameOpOverload._opname  r`  r+   c                     U R                   cM  [        R                  R                  U R                  R
                  U R                  R                  5      U l         U R                   $ r"   )rN  r:   r;   _dispatch_find_schema_or_throwrD  rM   rG  r'   s    r   _handleOpOverload._handle  sL    $ % G G!!4<<#=#=!D    r+   c                     U $ r"   rX   r(   memos     r   __deepcopy__OpOverload.__deepcopy__      r+   c                     SR                   " / U R                  R                  R                  S5      QU R                  P76 $ )Nz'<OpOverload(op='{}.{}', overload='{}')>rA  formatrD  rM   rL  rH  r'   s    r   __repr__OpOverload.__repr__  s@    8?? 
\\$$T*
,0,>,>
 	
r+   c                &    U R                   " U0 UD6$ r"   rB  r/   s      r   r2   OpOverload.__call__  s    xx(((r+   c                B    U R                   R                  " U/UQ70 UD6$ r"   )rf  redispatch_boxed)r(   keysetr0   r1   s       r   
redispatchOpOverload.redispatch  s!    ||,,VEdEfEEr+   c                 ,    [        U R                  5      $ r"   hashrB  r'   s    r   __hash__OpOverload.__hash__      DHH~r+   c                     SR                   " / U R                  R                  R                  S5      QU R                  P76 $ )Nz{}.{}.{}rA  ro  r'   s    r   r   OpOverload.__str__  s6      T$,,"3"3"9"9$"?TASASTTr+   c                    > [         TU ]  U5      =(       d.    [        R                  R	                  U R                  5       U5      $ r"   )r   r7   r:   r;   %_dispatch_has_kernel_for_dispatch_keyrM   r   s     r   r7   &OpOverload.has_kernel_for_dispatch_key  s9    w2
 LXX;;DIIKK	Lr+   c                    > [         R                  R                  U R                  5       U5      =(       d    [        TU ]  U5      $ r"   )r:   r;   )_dispatch_has_kernel_for_any_dispatch_keyrM   r   r?   )r(   r>   r   s     r   r?   *OpOverload.has_kernel_for_any_dispatch_key  s7    xxAAIIK
 9W4R8	9r+   c                 R    U R                   R                  R                  S5      S   $ r\  r]  r'   s    r   r   OpOverload.namespace  r`  r+   c                     [         R                  nXR                  ;   =(       d.    [        R                  R                  U R                  5       U5      $ r"   )r   ry   r$   r:   r;   r  rM   )r(   dks     r   _can_decomposeOpOverload._can_decompose  s=    22__$ 
(V(VIIK)
 	
r+   c                    [         R                  nX0R                  ;   a  U R                  U   " U0 UD6$ [        R                  R                  U R                  5       U5      (       a  U R                  " U/UQ70 UD6$ [        $ r"   )	r   ry   r$   r:   r;   r  rM   rC  r   )r(   r0   r1   r  s       r   	decomposeOpOverload.decompose  sn    22 
 ??2&777XX;;DIIKLL;;r3D3F33!!r+   c                 <    U R                   R                  US 5        g r"   )r#   pop)r(   keys     r   _uncache_dispatchOpOverload._uncache_dispatch+  s      d+r+   c                   ^ ^ TT R                   ;  d   T  ST 35       eT[        R                  :X  ae  [        T [        5      (       d-  T R
                  (       d  TT R                   T'   [        T 5        T$ UU 4S jnUT R                   T'   [        T 5        U$ [        R                  R                  T5      nU[        R                  :X  aJ  [        5       nUS:  a:  [        R                  R                  [        R                  5      (       d  U 4S jnU$ [        T T5      nT[        R                  :g  nT[        R                  :X  aO  SS KJs  Jn  UR$                  (       a5  UR'                  T U5      nU(       a  UT R                   T'   [        T 5        U$ T R(                  R+                  XU5      nU(       a  UT R                   T'   [        T 5        U$ )N c                  V  > SSK Jn  [        U" 5       5      nUc   S5       eUTR                  ;  a  [	        T[
        5      (       aa  [        R                  R                  R                  5        n[        R                  R                  R                  " UT/U Q70 UD6sS S S 5        $ TR                  " T/U Q70 UD6$ [        R                  R                  R                  5        nTR                  U   " U/U Q70 UD6sS S S 5        $ ! , (       d  f       NY= f! , (       d  f       g = f)Nr   r   zDIllegal invocation of dispatch on DispatchKey.Python without a mode.)r   r   rn   r%   rJ   TorchBindOpOverloadr:   utils_python_dispatchr   _libraryhandle_dispatch_moderC  )r0   r1   r   r   r[   r  r(   s        r   r   )OpOverload._get_dispatch.<locals>.handler9  s   S !!;!=>	 , Z, D$9$99!$(;<<!KK88NNPTX#(>>#7#7#L#L $d$-1$5;$ QP  ${{3@@@@[[11GGIT00;DR4R6R JI QP JIs   //D	&D	
D
D(r   c                     > [         R                  S 5       nU" 5        n[        R                  R                  R
                  " UT/U Q70 UD6sS S S 5        $ ! , (       d  f       g = f)Nc               3   `   #    [        5       n  U v   [        U 5        g ! [        U 5        f = f7fr"   )r*  r&  )top_modes    r   (_temporarily_pop_modes_from_pre_dispatch[OpOverload._get_dispatch.<locals>.handler.<locals>._temporarily_pop_modes_from_pre_dispatchb  s(     #>#@="*N28<28<s   . .+.)
contextlibcontextmanagerr:   r  r  r  )r0   r1   r  r   r(   s       r   r   r  a  s`    ..= /= BCy$~~33HH%t .2 6<  DCCs   /A
A&)r#   r   rK   rJ   r  r%   r7  r:   r;   r   r   r   r   r   rd   torch._dispatch.python	_dispatchpythonCROSSREF_FUNCTIONALIZEmake_crossref_functionalizer$   r  )	r(   r  r   r   curr_stack_lenr   cache_result
pydispatchrs	   ``       r   _get_dispatchOpOverload._get_dispatch/  s   $...?4&#?.+$$$d$788AVAV,/$$S)d#
S0 )0D  %$N!HH::3? 7 77CEN "GG&& 
& c*	 k555
 ++++7700$@@yQ07D((-!$'OO	5()D  %$r+   c                     U R                   $ r"   r   r'   s    r   rM   OpOverload.name  r   r+   c                     U R                   $ r"   )rE  r'   s    r   rV  OpOverload.overloadpacket  s    ###r+   c                     U R                   $ r"   rt  r'   s    r   rp   OpOverload.op  r   r+   c                     U R                   $ r"   )rF  r'   s    r   rY  OpOverload.tags  s    zzr+   )rM  rj   ri   rk   rQ  rN  r   rK  rB  rC  rH  rE  rD  rF  rU  r"   )ri   rj   rk   rl   r)   r   r^  rb  rf  rk  rq  r2   ry  r~  r   r7   r?   r   r  r  r  r  rM   rV  rp   rY  ro   r   r   s   @r   r3  r3    s    &=P 0 0 0 0 ! !
)
FUL
9
 0 0
"*,]~ $ $    r+   c                   X    \ rS rSrS\\   4S jr\R                  S 5       r	S r
S rSrg)	r  i  rA   c                 D  ^  [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  /nS[         4U 4S jjnU Vs/ s H  nU" U5      (       d  M  UPM     sn$ s  snf )Nr  c                 D  > [         R                  R                  TR                  5       U 5      (       a.  [         R                  R	                  TR                  5       U 5      $ U TR
                  ;  =(       d)    TR
                  U    [         R                  R                  L $ r"   )r:   r;   r  rM   0_dispatch_kernel_for_dispatch_key_is_fallthroughr$   rO  fallthrough_kernel)r  r(   s    r   (_may_use_fallthrough_instead_of_fallbackWTorchBindOpOverload._fallthrough_keys.<locals>._may_use_fallthrough_instead_of_fallback  sv    xx==diik3OOxxPPIIK 
 4??* L??3'5==+K+KKr+   )r   r|   AutogradCPUAutogradCUDAADInplaceOrViewBackendSelectPythonTLSSnapshotPythonDispatcher)r(   _DEFAULT_FALLTHROUGH_KEYSr  r  s   `   r   _fallthrough_keys%TorchBindOpOverload._fallthrough_keys  s       ##$$''%%))((%
!		+ 		 1
07< 0
 	
 
s   ?BBc              #      #    SSK JnJnJn   X;  a  U" XR                  5        S v   X;   a  X0	 g g ! X;   a  X0	 f f = f7f)Nr   )_EffectType_register_effectful_opSIDE_EFFECTS)torch._higher_order_ops.effectsr  r  r  ORDERED)r(   r  r  r  s       r   %_register_as_effectful_op_temporarily9TorchBindOpOverload._register_as_effectful_op_temporarily  sM     	
 	
	''&t-@-@A# & $t# & $s   ?2 	?
<?c                    [        X5      (       a:  U R                  5          U R                  XU R                  5       5      sS S S 5        $ U R                  " U0 UD6$ ! , (       d  f       N = fr"   )_must_dispatch_in_pythonr  _dispatch_in_pythonr  rB  r/   s      r   r2   TorchBindOpOverload.__call__  sY    #D11 ;;=//d>T>T>VW >=xx((( >=s    A
A+c           	      *   [         R                  R                  5       nU H  nUR                  U5      nM     [	        XU5      nUR                  5       nXpR                  ;  a  U R                  U5      OU R                  U   n[        U[        5      (       a]  [         R                  R                  U R                  5       U5      (       a  U R                  XX7/-   5      $ [        SU  SU SU S35      e[        U[        5      (       d   eU" U0 UD6$ )NzTorchbind op z4 received a FakeScriptObject input when dispatching z. but no python implementation is found. Please file an issue on this when you encounter this error. This error can happen when you export or compile the model. It can still happpen even if a C++ implementation for zz.  has been registered. That's because FakeScriptObject purely lives in python and cannot work  with a C++ implementation.)r:   r;   r   r   r   r   r#   r  rJ   r   r  rM   r  rL   r   )	r(   r0   r1   fallthrough_keysr   r  r   r   r   s	            r   r  'TorchBindOpOverload._dispatch_in_python  s1   $xx==?#C#7#>#>s#C  $ +49MN'==? #7#77 |,%%l3 	 g{++ xxHH		\  //"2^"C  v%YZaYb cJ KW X.	/  '8,,,,'''r+   rX   N)ri   rj   rk   rl   r   r   r  r  r  r  r2   r  ro   rX   r+   r   r  r    s7    
4#4 
< ' '") #(r+   r  c                 4    [         R                  " S X45      $ )Nc                 ^    [        U [        R                  R                  R                  5      $ r"   )rJ   r:   r  fake_class_registryFakeScriptObject)objs    r   <lambda>*_must_dispatch_in_python.<locals>.<lambda>  s    J33DD
r+   )r   tree_anyr   s     r   r  r    s    ??	
 
	 r+   rX  rA   c                 :    [        S U R                   5       5      $ )Nc              3   j   #    U  H)  n[        UR                  [        R                  5      v   M+     g 7fr"   )rJ   rn   r:   	ClassType).0r   s     r   	<genexpr>)_has_script_object_arg.<locals>.<genexpr>  s$     Q@Pz#((EOO44@Ps   13)anyrR  )rX  s    r   _has_script_object_argr    s    Q@P@PQQQr+   c                   n    \ rS rSrS rSS jrS rS rS r\	S 5       r
\	S	 5       rS
 rS rS rS rSrg)OpOverloadPacketi  c                     Xl         X l        X0l        X@l        / U l        [        S U R                  R                  5        5       5      U l        g )Nc              3   8   #    U  H  n[        U5      v   M     g 7fr"   )r  )r  rX  s     r   r  ,OpOverloadPacket.__init__.<locals>.<genexpr>#  s      .
9Ov"6**9Os   )	_qualified_op_nameri   rB  _overload_names_dirr  _schemasr   _has_torchbind_op_overload)r(   qualified_op_nameop_namerp   overload_namess        r   r)   OpOverloadPacket.__init__  sH     #4-	*- .
9=9M9M9O.
 +
'r+   Nc                     U $ r"   rX   ri  s     r   rk  OpOverloadPacket.__deepcopy__(  rm  r+   c                 R    SR                   " U R                  R                  S5      6 $ )Nz<OpOverloadPacket(op='{}.{}')>rA  rp  r  rL  r'   s    r   rq  OpOverloadPacket.__repr__+  s)    /66$$**40
 	
r+   c                 ,    [        U R                  5      $ r"   r|  r'   s    r   r~  OpOverloadPacket.__hash__0  r  r+   c                 R    SR                   " U R                  R                  S5      6 $ )Nz{}.{}rA  r  r'   s    r   r   OpOverloadPacket.__str__3  s"    ~~t66<<TBCCr+   c                     U R                   $ r"   rt  r'   s    r   rp   OpOverloadPacket.op6  r   r+   c                     U R                    Vs0 s H.  nU[        R                  R                  U R                  U5      _M0     sn$ s  snf r"   )r  r:   r;   _get_schemar  )r(   rG  s     r   r  OpOverloadPacket._schemas:  sK     "&!5!5
!5 588//0G0GWW!5
 	
 
s   5Ac           
         US:X  a  g UR                  S5      (       a  [        U R                  U5      $   US:X  a  S	OUn[
        R                  R                  U R                  U5      nUc  [        S
[	        U 5       SU S35      eUu  pEn[
        R                  R                  U R                  U5      n[        U5      (       d  [        XXWU5      O[        XXWU5      n[        XU5        U R                  R                  U5        U$ ! [         a3    [        S[	        U 5       S[	        U R                  5       SU S35      S ef = f! [          a    [        S
[	        U 5       SU S35      S ef = f)N__file__	torch.ops__'zH' can't have an overload name beginning with '__' and the underlying op z has no attribute z either.r?  r>  zThe underlying op of 'z' has no overload name ')
startswithgetattrrB  AttributeErrorstrr:   r;   _get_operation_overloadr  r  r  r3  r  setattrr  r   rL   )	r(   r  use_key
op_dk_tagsop_op_dk_rY  rX  overloads	            r   __getattr__OpOverloadPacket.__getattr__A  s   *	~~d##txx-- $	9,b#G99''J !$,SYK7OPSuTUV  !+CXX))$*A*A7KF .f55 4fd;(FDI  Dx(IIS!OA  	
 !CI; !!$TXX/A#hP 	B  	 (T3KC5PQR	s   +D CE =E'E2c                 ,    [        U R                  5      $ r"   iterr  r'   s    r   __iter__OpOverloadPacket.__iter__v      DIIr+   c                    U R                   (       a  [        X5      (       a  [        XU5      $ U R                  " U0 U=(       d    0 D6$ r"   )r  r  !_call_overload_packet_from_pythonrB  r/   s      r   r2   OpOverloadPacket.__call__{  s=     **/G/U/U4THHxx0&,B00r+   c                 V    U R                    Vs/ s H  o(       a  UOSPM     sn$ s  snf )Nr?  )r  )r(   ns     r   	overloadsOpOverloadPacket.overloads  s)    /3/C/CD/C!QI%/CDDDs   &)ri   r  r  rB  r  r  r"   )ri   rj   rk   rl   r)   rk  rq  r~  r   r   rp   r  r  r  r2   r"  ro   rX   r+   r   r  r    sZ    



D   
 
3j
1Er+   r  c                    [         R                  R                  " U /UQ70 UD6u  p4U(       a  U$ 0 nS nU R                  5        H?  n[	        X5      n [         R                  R
                  " UR                  /UQ70 UD6n	Un  O   U(       a  U" U0 UD6$ SU  S3nUR                  5        H  u  pUSU SU S3-  nM     [        U5      e! [         a  n
XU'    S n
A
M  S n
A
ff = f)Nz'Fail to match any TorchBindOverload of z with following exceptions:
zOverload name z:
 
)	r:   r;   (_maybe_call_torch_function_for_op_packetr"  r  &_check_schema_allow_fake_script_objectrD  rL   items)rp   r0   r1   torch_function_calledret
exceptionsfound_oprG  r6  _eerr_msgr  msgs                 r   r  r    s   !&!R!R
""" 
 JHb0	*??##&*.4A #H ( ((( 2"5RS  $$&^C5SE44 '
w
  	*()}%	*s   0C
C%C  C%c                   8   ^  \ rS rSrSrU 4S jrS rS rSrU =r	$ )_OpNamespacei  a  
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                 D   > [         TU ]  SU-   5        Xl        / U l        g )Nz
torch.ops.)r   r)   rM   r  )r(   rM   r   s     r   r)   _OpNamespace.__init__  s!    ,-		r+   c                 ,    [        U R                  5      $ r"   r  r'   s    r   r  _OpNamespace.__iter__  r  r+   c                    US:X  a  gUS;   a  [        SU SU R                   S35      eU R                  nU SU 3nU R                  S-   U-   n [        X45      u  pVUc  [        S	U R                   S
U S35      e XEl        [        X1XV5      nU R                  S-   U-   Ul        [        XU5        U R                  R                  U5        U$ ! [         a"  n[        S	U R                   S
U S35      UeS nAff = f)Nr  r  )
__origin____self__zInvalid attribute 'z' for '_OpNamespace' 'r	  rA  r@  z'_OpNamespace' '' object has no attribute ')	r  rM   rj   _get_packetrL   r  r  r  r   )	r(   r  namespace_namer  module_namerp   r  r.  opoverloadpackets	            r   r  _OpNamespace.__getattr__  s=   j 22 %gY.DTYYKqQ  -.b	:oo+n<	!,->!LBz$&tyyk1LWIUVW   $+
 '+oo&;n&L# 	/0		!!  	 !"499+-H	QRS	s   ,C 
C;C66C;)r  rM   )
ri   rj   rk   rl   rm   r)   r  r  ro   r   r   s   @r   r2  r2    s    (
%  % r+   r2  c                     [         R                  R                  U 5      u  p#Ub/  [         R                  R                  R                  X 5        Xl        X#4$ r"   )r:   r;   _jit_get_operationjit	_builtins_register_builtinrj   )qualname	op_modulerp   r  s       r   r;  r;  	  sF    44X>B	~ 			--b;!r+   c                 ~    [        U R                  U R                  R                  5      u  pUc   eXl        X l        g r"   )r;  r  rB  rj   r  )packetrp   r  s      r   _refresh_packetrI    s6    $V%>%>

@U@UVB>>J+r+   c                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )_PyOpNamespacei  c                 0   > [         TU ]  U5        X l        g r"   )r   r)   _ops)r(   rM   opsr   s      r   r)   _PyOpNamespace.__init__  s    	r+   c                     U R                   R                  US 5      nUc  [        SU R                   SU S35      e[	        XU5        U$ )Nz'_PyOpNamespace' 'r:  r	  )rM  r  r  rM   r  )r(   rM   rp   s      r   r  _PyOpNamespace.__getattr__  sQ    YY]]4&: $TYYK/J4&PQR  	B	r+   )rM  )ri   rj   rk   rl   r)   r  ro   r   r   s   @r   rK  rK    s     r+   rK  c                   D   ^  \ rS rSrSrU 4S jrS rS rS rS r	Sr
U =r$ )	_Opsi*  z_ops.pyc                 z   > [         TU ]  S5        [        5       U l        [	        S[
        5      U l        / U l        g )Nr  r   )r   r)   r  loaded_librariesrK  r   _higher_order_op_namespacer  )r(   r   s    r   r)   _Ops.__init__-  s6    % #*8$&7+
' 	r+   c                     US:X  a  U R                   $ [        U5      n[        XU5        U R                  R	                  U5        U$ )Nr   )rV  r2  r  r  r   )r(   rM   r   s      r   r  _Ops.__getattr__5  sD    >!222 !&	I&		r+   c                 ,    [        U R                  5      $ r"   r  r'   s    r   r  _Ops.__iter__@  r  r+   c                 0    [         R                  " U5        g)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^  _Ops.import_moduleC  s    " 	'r+   c                    [         R                  " 5       (       a  g[        R                  " U5      n[	        5          [
        R                  " U5        SSS5        U R                  R                  U5        g! , (       d  f       N*= f)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   CDLLrU  r   )r(   paths     r   load_library_Ops.load_libraryV  s\    $ %%''33D9_ KK	 
 	!!$' _s   A77
B)r  rV  rU  )ri   rj   rk   rl   r  r)   r  r  r^  rf  ro   r   r   s   @r   rS  rS  *  s&    H	(&( (r+   rS  rN  )F)Xr   r  r   r]  rE   r   typestypingr   r   r   r   r   r   typing_extensionsr	   r
   r:   torch.utils._pytreer  _pytreer   r   torch._Cr   ru   r   torch._functorch.pyfunctorchr   r   r   r   rc   r   r   r   hasattrr   r  r   r   r   r   dictr  rM  r  r  r  r  AutocastCPUAutocastCUDAr   ABCr   r   r   r   r   r   r2  r  r&  r*  r   r-  r   r  r  r4  r7  r9  r;  r3  r  r  FunctionSchemaboolr  r  r  
ModuleTyper2  r;  rI  rK  rS  rN  rX   r+   r   <module>rw     s9   
     
  I I 4  $ $ ! X J : H T]t_ C!12UwsDT7U  & & P" P"h2UL 2U[ 2Uj 79 4223 8   !!6 2W, Wt38
,
 
& &C%D "!H$XNM7: .
 !$
C % 

l ljd(* d(NR5#7#7 RD RpE pEj# *: # jB 5## B J,\  G(5 G(V FT r+   