
    <Цim                   8
   % S SK Jr  S SKrS SKrS SK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JrJr  \(       a  S SKJrJr  \" SS	9 " S
 S5      5       r " S S\5      rSrSR-                  5       r/ SQrS/\ V s/ s H  n SU -   PM
     sn -   rSS1r " S S\5      r " S S\5      rSfS jr\ H<  r\ H3  r\ " \\\-   5      (       a  M  \" 5       r!\"" \!5        \#" S\ \ S\! 35      e   M>     \RH                  \RJ                  \RL                  \RN                  1r(\RJ                  \RL                  1r)\RL                  \RT                  \RV                  \RX                  \RJ                  \RH                  \RN                  \RZ                  \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  \Rh                  \Rj                  \Rl                  \Rn                  \Rp                  \Rr                  \Rt                  \Rv                  \Rx                  \Rz                  \R|                  /r?SgS jr@SgS jrASgS jrBSgS jrCSgS  jrD\AS!\BS"0rE " S# S$\5      rF0 rGS%\HS&'   \" \FR                  \FR                  \FR                  \FR                  \FR                  /5      \GS''   \" \FR                  \FR                  /5      \GS('   \" \FR                  \FR                  /5      \GS)'   \GS'   \GS(   -  \GS*'   \GS*   \GS)   -  \GS+'   \GS(   \GS)   -  \GS,'    " S- S.\5      rR " S/ S0\5      rS " S1 S2\5      rT\" SS	9 " S3 S45      5       rU " S5 S6\5      rV\" SS	9 " S7 S85      5       rW\" SS	9 " S9 S:5      5       rX\" SS	9 " S; S<5      5       rY\" SS	9 " S= S>5      5       rZ\" SS	9 " S? S@5      5       r[\" SS	9 " SA SB5      5       r\\" SS	9 " SC SD5      5       r] " SE SF\5      r^\" SS	9 " SG SH\]5      5       r_\" SS	9 " SI SJ\]5      5       r`\" SS	9 " SK SL\]5      5       ra\" SS	9 " SM SN\]5      5       rb\" SS	9 " SO SP5      5       rc\" SS	9 " SQ SR5      5       rd\" SS	9 " SS ST5      5       re\" SS	9 " SU SV5      5       rf\" SS	9 " SW SX5      5       rg/ SYQrh\" SS	9 " SZ S[5      5       ri\" SS	9 " S\ S]5      5       rj        ShS^ jrk\" SS	9 " S_ S`5      5       rlSiSa jrmSjSb jrnSkSc jro\" SS	9 " Sd Se5      5       rpgs  sn f )l    )annotationsN)	dataclass)autoEnum)CallableTYPE_CHECKING)assert_neverNamespaceHelper
OrderedSet)IteratorSequenceT)frozenc                  4    \ rS rSr% S\S'   S\S'   S	S jrSrg)
Location+   strfileintlinec                8    U R                    SU R                   3$ )N:)r   r   selfs    M/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torchgen/model.py__str__Location.__str__0   s    ))Adii[))     Nreturnr   )__name__
__module____qualname____firstlineno____annotations__r   __static_attributes__r   r   r   r   r   +   s    
I
I*r   r   c                  0    \ rS rSr\" 5       r\" 5       rSrg)Variant5   r   N)r!   r"   r#   r$   r   functionmethodr&   r   r   r   r(   r(   5   s    vHVFr   r(   z
at::nativezVCPU CUDA HIP XLA MTIA MPS IPU XPU HPU VE Lazy Meta PrivateUse1 PrivateUse2 PrivateUse3) 	QuantizedSparse	SparseCsrNestedTensorAutogradAutogradNestedTensorr1   	quantizedquantized_decomposedc                     \ rS rSrSr\r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r \" 5       r!\" 5       r"\" 5       r#\" 5       r$\" 5       r%\" 5       r&\" 5       r'\" 5       r(\" 5       r)\" 5       r*\" 5       r+\" 5       r,\" 5       r-\" 5       r.\" 5       r/\" 5       r0\" 5       r1\" 5       r2\" 5       r3\" 5       r4\" 5       r5\" 5       r6\" 5       r7\" 5       r8\" 5       r9\" 5       r:\" 5       r;\" 5       r<\" 5       r=\" 5       r>\" 5       r?\" 5       r@\" 5       rA\" 5       rB\" 5       rC\" 5       rD\" 5       rE\" 5       rF\" 5       rG\" 5       rH\" 5       rI\" 5       rJ\" 5       rK\" 5       rL\" 5       rM\" 5       rN\" 5       rO\" 5       rP\" 5       rQ\" 5       rR\" 5       rS\" 5       rT\" 5       rU\" 5       rV\" 5       rW\" 5       rX\" 5       rY\" 5       rZ\" 5       r[\" 5       r\\" 5       r]\" 5       r^\" 5       r_\" 5       r`\" 5       ra\" 5       rb\" 5       rc\" 5       rd\" 5       re\" 5       rf\" 5       rg\" 5       rh\" 5       ri\" 5       rj\" 5       rk\" 5       rl\" 5       rm\" 5       rn\" 5       ro\" 5       rp\" 5       rq\" 5       rr\" 5       rs\" 5       rt\" 5       ru\" 5       rv\" 5       rw\" 5       rx\" 5       ry\" 5       rz\" 5       r{\" 5       r|\" 5       r}\" 5       r~\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rSS jrSS jr\S	S j5       rSrg)
DispatchKeyS   r   c                    U R                   $ Nnamer   s    r   r   DispatchKey.__str__       yyr   c                4    [        U 5      R                  5       $ r9   )r   lowerr   s    r   r?   DispatchKey.lower   s    4y  r   c                ~    [         R                  R                  5        H  u  pX:X  d  M  Us  $    [        SU  35      e)Nzunknown dispatch key )r6   __members__itemsAssertionErrorvaluekvs      r   parseDispatchKey.parse   s<    ++113DAz 4 4UG<==r   r   Nr   )rF   r   r    r6   )r!   r"   r#   r$   	UndefinedCatchAllr   FPGAMAIAVulkanMetalMKLDNNOpenGLOpenCLIDEEPCustomRNGKeyId	MkldnnCPUr.   r/   r0   DensePythonTLSSnapshotPreDispatchPythonDispatcherPythonFuncTorchDynamicLayerBackMode
ZeroTensor	ConjugateNegativeBackendSelectNamedAutogradOtherAutogradFunctionalityr2   TracerAutocastAutocastCPUAutocastCUDABatchedVmapModeFuncTorchGradWrapperFuncTorchBatchedBatchedNestedTensorFuncTorchVmapModeFuncTorchDynamicLayerFrontModeFunctionalizeTESTING_ONLY_GenericWrapperTESTING_ONLY_GenericModeADInplaceOrViewr1   CompositeImplicitAutograd%CompositeImplicitAutogradNestedTensorCompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalFuncTorchBatchedDecompositionCPUCUDAHIPXLAMTIAMPSIPUXPUHPUVELazyMetaPrivateUse1PrivateUse2PrivateUse3QuantizedCPUQuantizedCUDAQuantizedHIPQuantizedXLAQuantizedMTIAQuantizedMPSQuantizedIPUQuantizedXPUQuantizedHPUQuantizedVEQuantizedLazyQuantizedMetaQuantizedPrivateUse1QuantizedPrivateUse2QuantizedPrivateUse3	SparseCPU
SparseCUDA	SparseHIP	SparseXLA
SparseMTIA	SparseMPS	SparseIPU	SparseXPU	SparseHPUSparseVE
SparseLazy
SparseMetaSparsePrivateUse1SparsePrivateUse2SparsePrivateUse3SparseCsrCPUSparseCsrCUDASparseCsrHIPSparseCsrXLASparseCsrMTIASparseCsrMPSSparseCsrIPUSparseCsrXPUSparseCsrHPUSparseCsrVESparseCsrLazySparseCsrMetaSparseCsrPrivateUse1SparseCsrPrivateUse2SparseCsrPrivateUse3NestedTensorCPUNestedTensorCUDANestedTensorHIPNestedTensorXLANestedTensorMTIANestedTensorMPSNestedTensorIPUNestedTensorXPUNestedTensorHPUNestedTensorVENestedTensorLazyNestedTensorMetaNestedTensorPrivateUse1NestedTensorPrivateUse2NestedTensorPrivateUse3AutogradCPUAutogradCUDAAutogradHIPAutogradXLAAutogradMTIAAutogradMPSAutogradIPUAutogradXPUAutogradHPU
AutogradVEAutogradLazyAutogradMetaAutogradPrivateUse1AutogradPrivateUse2AutogradPrivateUse3r   r?   staticmethodrI   r&   r   r   r   r6   r6   S   s   IH6D6DVFFEVFVFVFFEVNIVFI6LFE&KvVF$(F!JIvHFMFEFM F6VFvH&K6LfGvH6v&%)V"FM"&&#vfOvH $,0F) $-1V*$(F! &C6D
&C
&C6D
&C
&C
&C
&C	B6D6D&K&K&K6LFM6L6LFM6L6L6L6L&KFMFM666IJIIJIIIIvHJJ6LFM6L6LFM6L6L6L6L&KFMFM666fOvfOfOvfOfOfOfOVNvv"f"f"f&K6L&K&K6L&K&K&K&KJ6L6L&&&! > >r   r6   c                  >    \ rS rSr\" 5       r\" 5       r\" 5       rSrg)_TorchDispatchModeKey   r   N)	r!   r"   r#   r$   r   FAKEPROXY
FUNCTIONALr&   r   r   r   r   r      s    6DFEJr   r   c                    ^ / n [          H"  mU R                  U4S j[         5       5        M$     SR                  U 5      $ )Nc              3  4   >#    U  H  nS T U S3v   M     g7f)z    z	 = auto()Nr   ).0bcfks     r   	<genexpr>.codegen_per_backend_entries.<locals>.<genexpr>   s      G4Fb4tB4y)4F   
)FUNCTIONALITY_KEYSextendBACKEND_COMPONENTSjoin)rr   s    @r   codegen_per_backend_entriesr      s3    A 	G4FGG !99Q<r   zMissing zL from DispatchKey enum.  Here is the autogenerated list we expect to have:

c                    U [         R                  [         R                  [         R                  [         R                  1;   $ r9   )r6   ru   rv   rs   rt   dks    r   is_generic_dispatch_keyr   6  s8    --::--99	  r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ r9   )r6   ry   r   r   r   r   r   r   s    r   is_cuda_dispatch_keyr   @  sJ    !!!!$$    r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ r9   )r6   r   r   r   r   r   r   r   s    r   is_xpu_dispatch_keyr   L  sH        ##  r   c                    U [         ;   $ r9   )STRUCTURED_DISPATCH_KEYSr   s    r   is_structured_dispatch_keyr   Y  s    )))r   c                    U [         ;   $ r9   )UFUNC_DISPATCH_KEYSr   s    r   is_ufunc_dispatch_keyr   ]  s    $$$r   cudaxpuc                  H   \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rSS jr\S	S j5       r\S
S j5       r\SS j5       rSrg)
ScalarTypeif  c                    U R                   $ r9   r:   r   s    r   r   ScalarType.__str__y  r=   r   c                d    [         R                  R                  5        H  u  pX:X  d  M  Us  $    g r9   )r   rB   rC   rE   s      r   maybe_parseScalarType.maybe_parse|  s,    **002DAz 3 r   c                J    [         R                  U 5      nUc
   SU  35       eU$ )Nzunknown dtype )r   r   )rF   mb_rs     r   rI   ScalarType.parse  s/    %%e,9>%!99r   c                    [        5       nU R                  S5       HK  nU[        ;   a  UR                  [        U   5        M'  UR	                  [
        R                  U5      5        MM     U$ )N, )r   splitDTYPE_CLASSESupdateaddr   rI   )valuesdtypesrF   s      r   	parse_setScalarType.parse_set  sS    )3\\$'E%mE23

:++E23	 (
 r   r   Nr   )rF   r   r    zScalarType | None)rF   r   r    r   )r  r   r    OrderedSet[ScalarType])r!   r"   r#   r$   r   ByteCharShortIntLongHalfFloatDoubleComplexHalfComplexFloatComplexDoubleBoolBFloat16Float8_e5m2Float8_e5m2fnuzFloat8_e4m3fnFloat8_e4m3fnuzr   r   r   rI   r
  r&   r   r   r   r   r   f  s    6D6DFE
&C6D6DFEVF&K6LFM6DvH&KfOFMfO    
  r   r   z!dict[str, OrderedSet[ScalarType]]r  IntegralFloatingComplexAllAllAndComplexFloatingAndComplexc                      \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       rSS jr\SS j5       rSrg)UfuncKeyi  c                    U R                   $ r9   r:   r   s    r   r   UfuncKey.__str__  r=   r   c                ~    [         R                  R                  5        H  u  pX:X  d  M  Us  $    [        SU  35      e)Nzunknown ufunc key )r%  rB   rC   rD   rE   s      r   rI   UfuncKey.parse  s<    ((..0DAz 1 1%9::r   r   Nr   )rF   r   r    r%  )r!   r"   r#   r$   r   CUDAFunctorCUDAFunctorOnOtherCUDAFunctorOnSelf	CPUScalar	CPUVector
ScalarOnlyGenericr   r   rI   r&   r   r   r   r%  r%    sR     &KII JfG ; ;r   r%  c                      \ rS rSrSrSrSrg)DeviceCheckTypei  r      r   N)r!   r"   r#   r$   NoCheck	ExactSamer&   r   r   r   r2  r2    s    GIr   r2  c                  >    \ rS rSr\" 5       r\" 5       r\" 5       rSrg)ViewSchemaKindi  r   N)	r!   r"   r#   r$   r   aliasingaliasing_inplacenon_aliasingr&   r   r   r   r7  r7    s    vHv6Lr   r7  c                     \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S'   S\S '   S\S!'   S\S"'   S\S#'   S\S$'   S\S%'   \ S0         S1S' jj5       rS2S( jrS2S) jr\	S3S* j5       r
\	S3S+ j5       r\	S4S, j5       r\	S5S- j5       r\	S3S. j5       rS/rg&)6NativeFunctioni  r   	namespaceFunctionSchemafuncbool!use_const_ref_for_mutable_tensorsdevice_guardr2  device_check
str | Nonepython_modulecategory_overridezset[Variant]variantsmanual_kernel_registrationmanual_cpp_bindingr   loczlist[OperatorName]autogenzdict[UfuncKey, UfuncInnerLoop]ufunc_inner_loop
structuredzOperatorName | Nonestructured_delegatestructured_inheritszPrecompute | Noneprecomputedset[str]cpp_no_default_argsis_abstract&has_composite_implicit_autograd_kernel4has_composite_implicit_autograd_nested_tensor_kernel&has_composite_explicit_autograd_kernel5has_composite_explicit_autograd_non_functional_kerneltagsNc                   U R                  5       nUR                  S5      n[        U[        5      (       d
   SU 35       e[        R
                  " USS9nUR                  SS9n[        R                  UR                  5      nUR                  S/ 5      n	[        U	[        5      (       d   e[        U	5      n
UR                  SS	5      n[        U[        5      (       d   eUR                  S
S5      n[        U[        5      (       d   e[        5       nUR                  S5       H]  nUS:X  a!  UR                  [        R                   5        M*  US:X  a!  UR                  [        R"                  5        MQ  [%        SU 35      e   UR                  SS	5      n[        U[        5      (       d
   SU 35       eUR                  SS	5      n[        U[        5      (       d
   SU 35       eUR                  SS5      n[        U[        5      (       d
   SU 35       eUR                  SS5      nUb  [        U[        5      (       d
   SU 35       eUb  U[&        R(                  ;   d
   SU 35       eUc  [&        R*                  nO	[&        U   nUR                  SS	5      n[        U[        5      (       d
   SU 35       eUR                  SS5      nUb  [        U[        5      (       d
   SU 35       eUb  SU;  d   S5       eSnUb  [,        R                  U5      nUR                  SS5      nUb  [        U[        5      (       d
   SU 35       eUb  SU;  d   S5       eUR                  SS5      nUb  [        U[        5      (       d
   SU 35       eUb  [        R"                  U;  d   S5       eUR                  SS5      nUb  [        U[        5      (       d
   SU 35       eUR                  S S5      nUb  USL d   eU(       a  [.        R                  U5      OSnUR                  S!/ 5      n[        U[        5      (       a  U/n[        U[        5      (       d   eUS:X  a  S"U;   a  UR1                  S"5        [        5       nU H9  n[3        U5      S#:  d   eUU;   a  UR                  U5        M-  [%        S$U 35      e   S#S%KJn  UR                  S&S5      n U b  [        U [8        5      (       d   U5       e0 n!S#n"U Gb  U(       a   S'5       eS	n#U R;                  5        GH9  u  n$nU$S(:X  a  M  [        U$[        5      (       d   S)U$ S*U  35       e[        U[        5      (       d   S+U S*U  35       eU$R                  S,5       H  n%[<        R                  U%R?                  5       5      n&U"S-  n"U(       a  U&U;   a  M:  U&[@        ;   d   S-U& S.U S/35       e[        R
                  " US0S19nUR                  S2S9n'[C        UR                  U=(       a    [E        U&5      U'S3-   S49U!U&'   U&[<        RF                  L d  M  UURI                  U5      :X  d  M  Sn#M     GM<     U"S:X  a  U#(       a   S55       eU(       d}  U!RK                  5       [<        RF                  1:w  dZ  U![<        RF                     RM                  5       (       d4  U"S:w  d.   S6URI                  U5       S7U![<        RF                      S835       eOU(       d  Uc  [        URH                  RH                  5      n(U(RO                  S95      (       dP  U(RQ                  S:5      (       d:  URR                  RT                  (       a*  URR                  RW                  5       (       d   S;U( S<35       e[C        URI                  U5      S	[X        S=9U![<        RF                  '   U! V)s/ s HW  n)U)[<        RZ                  :X  d>  U)[<        R\                  :X  d*  U)[<        RF                  :X  d  U)[<        R^                  :X  d  MU  U)PMY     n*n)[3        U*5      S::  d>  [3        U*5      S>:X  a(  [<        R\                  U*;  a  [<        R^                  U*;   d   S?5       eUR                  S@SA5      n+[        U+[        5      (       d   eU+SA:X  a  / O4U+R                  S5       V,s/ s H  n,[,        R                  U,5      PM     sn,n-UR                  SB0 5      n.0 n/[        U.[        5      (       a6  [`        R                  U.[b        Rd                  5      U/[b        Rd                  '   O[        U.[8        5      (       a  U.R;                  5        Hz  u  n%n0U%S(:X  a  M  [        U%[        5      (       d
   SCU% 35       e[        U0[        5      (       d
   SDW 35       e[b        R                  U%5      n1[`        R                  U0U15      U/U1'   M|     O[%        SEU. 35      eU/(       aV  U(       d   SF5       eS#SK3J4s  J5n2  [l         H5  n&U&U!;  d
   SGU& 35       e[C        U2Ro                  UU&5      S[X        S49U!U&'   M7     U(       a  Sn3OU!RK                  5       [<        RF                  1:g  =(       aZ    U!RK                  5       [<        R^                  1:g  =(       a1    U!RK                  5       [<        RF                  [<        R^                  1:g  n3[<        RF                  U!;   n4[<        R^                  U!;   n5[<        RZ                  U!;   n6[<        R\                  U!;   n7U!R;                  5        V%Vs0 s H  u  n%nU%URH                  U0_M     n8n%nUR                  S(S5        U(       a
   SHU 35       eUb  [p         H  n9U9U!;  a  M   SIU9 SJ35       e   [s        SR0 SU_SU_S
U_SU_SU_SU_S U_S@U-_SBU/_SU_SU_SU_SU_SU_SU_SKU_SU
_SLU3_SMU4_SNU5_SOU6_SPU7_S!U_SQU_6U84$ s  sn)f s  sn,f s  snn%f )SzX
Parse a NativeFunction from a dictionary as directly parsed
from native_functions.yaml
r?  znot a str: r3  )namespaced_entity	max_levelaten)defaultrR  rA  FrG  r*   r  r+   zillegal variant rH  znot a bool: rI  rB  TrC  Nzillegal device_check: rM  rN  z::zbnamespace is not supported in structured delegate, using the same namespace as the native functionrO  zbnamespace is not supported in structured inherits, using the same namespace as the native functionrE  z&functions in modules cannot be methodsrF  rP  rX  pt2_compliant_tagr   zillegal tag )cppdispatchzncannot specify both manual_kernel_registration and dispatch; with manual registration, dispatch has no effect!__line__zillegal dispatch key 'z' in zillegal dispatch value ',zDispatch key z of kernel z! is not a supported dispatch key.   )r[  atz::native)kernelrM  cpp_namespacezSunnecessary dispatch table for this function; just delete the dispatch key entirelyzQunexpected name for singleton CompositeImplicitAutograd dispatch entry: expected z	 but got zR.  Rename your implementation to the expected name, then delete the dispatch tablenew__likez	expected z to have a CompositeExplicitAutograd dispatch entry, but there was no dispatch table.  Factory functions should not have implicit dispatch as they should not be decomposed for __torch_dispatch__)rM  rf     aH  cannot specify more than one of CompositeExplicitAutograd, CompositeExplicitAutogradNonFunctional, or CompositeImplicitAutograd on a single kernel; each strictly subsumes the other.  If you wanted to provide an explicit autograd implementation, specify CompositeExplicitAutograd; otherwise specify CompositeImplicitAutograd onlyrK  r,   rL  z#ufunc_inner_loop key is not a str: z%ufunc_inner_loop value is not a str: z"ufunc_inner_loop not str or dict: zufunc must be structuredz2ufunc should not have explicit dispatch entry for zleftover entries: z+if structured_delegate, then must not have z* in dispatch dictionary (it is delegated!)rJ  rS  rT  rU  rV  rW  r=  r   ):copypop
isinstancer   r
   from_namespaced_entityget_cpp_namespacer>  rI   entity_namelistsetr@  r  r  r(   r*   r+   rD   r2  rB   r5  OperatorName
Precomputeappendlentorchgen.apir_  dictrC   r6   stripdispatch_keysBackendMetadatar   rs   r;   keyssupports_symint
startswithendswith	argumentstensor_optionshas_tensor_argDEFAULT_KERNEL_NAMESPACEru   rv   rt   UfuncInnerLoopr%  r0  torchgen.api.ufuncapiufuncr   schema_kernel_namer   r<  ):eirJ  
valid_tagsignore_keysefuncsnamespace_helperr=  r?  cpp_no_default_args_listrR  rA  
variants_srG  rH   rH  rI  rB  device_check_srC  rM  structured_delegate_srN  rO  rE  rF  precomputed_dictrP  tags_inprX  tr_  raw_dispatchr`  num_dispatch_keys%redundant_composite_implicit_autogradksrG   dispatch_keykernel_namespacer;   dcomposites_in_dispatchautogen_strxrK  raw_ufunc_inner_looprL  vo	ufunc_keyr  rS  rT  rU  rV  rW  backend_metadatakeys:                                                             r   	from_yamlNativeFunction.from_yamlV  sX    GGIf%%%<UG'<<%*AA#q
 %66v6F	##$4$@$@A#$55)>#C 2D9999!":;,-EE/-
) ;TBBBBUU:z2
*c****!$!!$'AJW--.hW^^,$'7s%;<< ( &'UU+G%O"&
 
 	7456	7 
 UU#7?,d33X|DVCW5XX3uu^T2,--Ll^/LL-~t4%C*
 *
 	*()	* 
 "n8S8S&S	5#N#34	5S !*44L*>:LUU</
*d++H|J<-HH+ !&;T B$,
!31
 1
 	1./0	1 
 %,<Q0Q 	
?	
Q 48 ,"."4"45J"Kee$94@"*j/
 /
 	/,-.	/ 
 #*d:M.M 	
?	
M
 ot4$
3)
 )
 	)(	) 
 !W^^8%C	43	4C EE"5t< (Js-
 -
 	-*+,	- 
 555':+===<Lj&&'78RV55$h$$ zH(D)))) #6*#DOO/0Az?Q&&&J$|A3%788  	%uuZ.#z,'E'EHqHE79!"#1 ?1 5:1%++-A#!  D+B4u\NCD  "s  E-aSl^DE  #A#.#4#4QWWY#?L%*%"|{'B '=8 '~[ D; ;8 (7'M'MQ($ (8'I'IRV'I'W$ .=/;;#- $E6|D'7*'D	.H\* %(M(MM$/@D=; ' .X "Q&+P  $==?{'L'L&MMKAABRRTT$)		 ddgdldlmqdrcs t#K$I$IJK L77	*  3 ;tyy~~&D''==)) NN11 NN99;; D6 ") )  ?N5@X?H[::; "
K999KFFFK999KEEE  	 "
 )*a/&'1,BB-. AA)*	
r	
 

" eeIr*+s++++ b  1<1B1B41HI1HA,$$Q'1HI 	  !uu%7<*C001?1E1E$h&6&62X--. ,d33-3352
?!!S))T-PQRPS+TT)!"c**W.STUSV,WW*$NN1-	.<.B.B2y.Q + 6 !45I4JK  999: /. 3 0WG~VW0)8 33D,G#":*&	 !4 K K$I$I#JJ MMOEEFG MMO99EE	  11X= 	/ ==I 	= 11X= 	/ >>(J 	> ;C..:JK:J$!QA		1~-:JK 	
j$.*1#..u */(* A# G) )* 0  2S " &	
 %8 %8 (   "2 ,F $6 , #4 * *  !" %8#$ (%& 8^'( Fz)* 8^+, G|-. /0 $14 7
 	
k"
> JN Ls   Ao+ o+9o05o5c                d    U R                   (       a   S5       eU R                  (       d   S5       eg )NzMThis function is structured, but there was no valid functional variant of it.zThis function delegates to another structured out function, but no valid function was found (the delegate may not exist, or it has the wrong type)rM  rN  r   s    r   validate_unstructured$NativeFunction.validate_unstructured  s;     ?? 	
1	
" '' 	
e	
'r   c                   U R                   R                  R                  (       a&  U R                  [        R
                  1:X  d   S5       eU R                  (       aK  U R                   R                  5       [        R                  :X  d   S5       eU R                  (       d   S5       eU R                  (       aK  U R                   R                  5       [        R                  :w  d   S5       eU R                  (       d   S5       eU R                  (       a  U R                  (       a   S5       eU R                   R                  5        Vs1 s H  oR                  c  M  UR                  iM     nn[        R                  U R                   U5      n[#        U5      S:X  d
   SU 35       eU R$                  b  U R                  (       d   S5       e['        U R                   R                  5      R)                  S	5      (       a%  U R*                  [,        R.                  :X  d   S
5       eS['        U R                   R                  5      ;   d  S['        U R                   R                  5      ;   d5  [1        S U R                   R                  R2                   5       5      (       aP  S['        U R                   R                  5      ;  a-  ['        U R                   R                  R                  5      S;  d)  U R                   R                  R5                  5       (       a5  SU R6                  ;   d$   ['        U R                   R                  5      5       eg g s  snf )NzNative functions with out arguments MUST be declared with only function variant; e.g., variants: function; otherwise you will tickle a Python argument binding bug (which usually manifests itself as the result variable being undefined.)zYPut structured field on the out= variant of a function; did you mean structured_delegate?z:device_guard: False is not respected by structured kernelszQstructured_delegate field not allowed on out= functions; did you mean structured?z?Cannot have both structured and structured_delegate on functionr   zInvalid cpp_no_default_args: z4structured_inherits must also imply structured: True_foreachzsforeach kernels fall back to slow path when tensor are on different devices, device_check not allowed to be enabledranddropoutc              3  @   #    U  H  nS UR                   ;   v   M     g7f)r  Nr:   r   args     r   r   /NativeFunction.__post_init__.<locals>.<genexpr>	  s      9U#	SXX-9Us   backward)_cudnn_init_dropout_statenondeterministic_seeded)r?  r  outrG  r(   r*   rM  kind
SchemaKindrB  rN  schema_order_argumentsr]  r;   rq  
differencerR  ru  rO  r   r}  rC  r2  r4  anyflat_allhas_generator_argrX  )r   adefaulted_argumentsinvalid_argss       r   __post_init__NativeFunction.__post_init__  s   99""==W%5%5$66 [6 ??99>>#z~~5 K5
 !!LKL!##99>>#z~~5 >5
 !!LKL!
 OO 8 8	ML	M 
 !II<<>
>q))FAFF> 	 
 ~~d&>&>@ST< A%U)F|n'UU%##/FEFtyy~~))*55$$(?(?? 9? c$))..)) TYY^^!44 9=9L9L9U9U  
 c$))..&99		++,4QQyy""4466,		9N3tyy~~;NN9 7=
s   	MMc                    U R                   =(       d    U R                  =(       d    U R                  =(       d    U R                   =(       a    U R                  $ r9   )rT  rV  rW  rU  r   s    r   has_composite_kernel#NativeFunction.has_composite_kernel  sO     77 J::JII

 77 JII	
r   c                   U R                   R                  n[        U5      S:  =(       a    [        S U 5       5      nSU R                  ;   =(       aK    [        U R                   R                  5      S:g  =(       a"    [        U R                   R                  5      S:g  n[        S U R                   R                  5        5       5      nU=(       d    U=(       d    U$ )Nr   c              3     #    U  H4  oR                   S L=(       a    UR                   R                  (       + v   M6     g 7fr9   
annotationis_writer   r   s     r   r   ,NativeFunction.is_view_op.<locals>.<genexpr>#  s/      5
LPqLL$BQ\\-B-B)BBDs   <>inplace_viewresize_
resize_as_c              3  ~   #    U  H3  nUR                   S L=(       a    SUR                   R                  ;   v   M5     g 7f)N*)r  alias_set_after)r   inps     r   r   r  ,  s7      
9 NN$&P3#..2P2P+PP9s   ;=)r?  returnsru  r  rX  r   r;   r  )r   retsis_non_mutating_viewis_inplace_viewis_wildcard_views        r   
is_view_opNativeFunction.is_view_op   s    yy  "4y1}  
 5
LP5
 2

 dii' 4DIINN#y04DIINN#|3 	
  
yy779
 
 $JJ:JJr   c                (   U R                   (       aQ  U R                  R                  R                  R                  (       a"  SU R                  ;   d   e[
        R                  $ U R                   (       a  [
        R                  $ [
        R                  $ )Nr  )	r  r?  r;   inplacerX  r7  r9  r8  r:  r   s    r   view_schema_kindNativeFunction.view_schema_kind2  s\    ??tyy~~22::!TYY...!222??!***!...r   c                V    U R                   R                  R                  R                  $ r9   )r?  r;   baser   s    r   	root_nameNativeFunction.root_name<  s    yy~~""'''r   c                D    U R                   =(       d    U R                  S L$ r9   r  r   s    r   part_of_structured_group'NativeFunction.part_of_structured_group@  s    F$":":$"FFr   r   r9   )
r  zdict[str, object]rJ  r   r  rQ  r  zset[DispatchKey] | Noner    zMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]r    Noner    r@  )r    r7  r   )r!   r"   r#   r$   r%   r   r  r  r  propertyr  r  r  r  r  r&   r   r   r   r<  r<    s}    N  (,+  "!  "! 
 !%$  
M   54  -, $# #" "!  -10:>>,00;?? N 
 04	j
j
j
 j
 -	j

 
Wj
 j
X

&=O~ 
 
 K K" / / ( ( G Gr   r<  c                  Z    \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	Sr
g)r  iE  r   N)r!   r"   r#   r$   r   
functionalr  r  mutablescratchr&   r   r   r   r  r  E  s%    JfG
&CfGfGr   r  c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   \SS j5       rSS	 jrSS
 jrSS jr	\SS j5       r
\SS j5       rSrg)NativeFunctionsGroupiS  r<  r  NativeFunction | Noner  r  r  c                .    U R                   R                  $ r9   )r  rM  r   s    r   rM  NativeFunctionsGroup.structuredZ  s     xx"""r   c           
      
   U R                   R                  R                  5       nU R                  5        H  nXR                  R                  5       :w  a)  [	        SU SUR                  R                  5        35      eU R
                  UR                  :w  d  Me  [	        SU R                  R                  R                   SUR                  R                   35      e   U R                   R                  R                  5       [        R                   :X  d   eU R                  R                  R                  5       [        R                  :X  d   eU R                   R                  U R                  R                  :X  d   eU R                  bh  U R                  R                  R                  5       [        R                  :X  d   eU R                  R                  U R                   R                  :X  d   eU R                  b  U R                  R                  R                  5       [        R                  :X  d   eU R                  R                  U R                   R                  :X  d   eU R                   R                  R                  R                  R                  (       d   eU R
                  (       Ga  U R                  R                  (       d  U R                  R                   (       a   eU R                   R"                  U R                  R                  R                  :X  d_   U R                   R                  R                   SU R                   R"                   SU R                  R                  R                   35       eU R                  b:  U R                  R"                  U R                  R                  R                  :X  d   e[%        U R                  5        Vs/ s H4  nSUR&                  ;   d  M  [)        UR                  R                  5      PM6     sn5      nSR+                  S	 U 5       5      n[-        5       nU R                  5        H%  nUR/                  S
 UR0                   5       5        M'     SR+                  S [%        U5       5       5      n[3        U5      S:X  a@  [3        U5      S:  a1  [5        SU SU S[)        WR                  R                  5       35      eXd:w  a  [5        SU SU SU S35      eg s  snf )Nz_NativeFunctionsGroup constructed from two NativeFunctions that don't have matching signatures:  != zMNativeFunctionsGroup constructed from structured and unstructured functions:  and z delegates to z but its actual delegate is 	generatedr  c              3  8   #    U  H  n[        U5      v   M     g 7fr9   r   r   r  s     r   r   5NativeFunctionsGroup.__post_init__.<locals>.<genexpr>  s     %Dmc!ffm   c              3  8   #    U  H  n[        U5      v   M     g 7fr9   r  )r   ops     r   r   r    s     )FIb#b''Ir  c              3  8   #    U  H  n[        U5      v   M     g 7fr9   r  r  s     r   r   r    s      /
:qCFF:r  r   z,The codegen expects to be able to generate 'zv'. In order to generate them however, we expect them to be called out explicitly in the yaml. Please add an 'autogen: z' line to the entry for z*'. To do so, it expects a line: 'autogen: z'. Instead, it found 'autogen: ')r  r?  	signature	functionsrD   rM  r  r  r;   r  r  r=  r  r  functional_overloadrT  rU  rN  sortedrX  r   r   rq  r  rK  ru  RuntimeError)r   test_sigfgenerated_fnsgenerated_fns_strexpected_generated_fnsexpected_generated_fns_strs          r   r  "NativeFunctionsGroup.__post_init___  s    #'??#7#7#A#A#C!A66++--$<<D:T!&&JZJZJ\I]_ 
 !"<"<<$""&((--"4"4!5U166;;-I  " ##((*j.C.CCCCxx}}!!#z~~555((DHH,>,>>>><<#<<$$))+z/A/AAAA<<))T__-F-FFFF<<#<<$$))+z/A/AAAA<<))T__-F-FFFF??'',,11EEEE??? HHCCUUV ??66$((--:L:LL ??'',,-^DOO<_<_;` a..2hhmm.@.@-ACL ||'||77488==;M;MMMM'+~~'7Q'7!;!&&;PS'7Q
 !II%Dm%DD+.5!A")))FAII)FF "%)YY /
"#9:/
 &
" %&!+M0BQ0F>?P>Q R,,=+>>VWZ[\[a[a[f[fWgVhj 
 &:>?P>Q R;;L:M N00J/K1N  ; Rs   #T;#Tc                J    U R                   R                  R                  5       $ r9   )r  r?  r  r   s    r   r  NativeFunctionsGroup.signature  s    xx}}&&((r   c              #     #    U R                   v   U R                  v   U R                  b  U R                  v   U R                  b  U R                  v   g g 7fr9   )r  r  r  r  r   s    r   r   NativeFunctionsGroup.functions  sE     oohh<<#,,<<#,, $s   AAc                .    U R                   R                  $ r9   )r  r  r   s    r   r  NativeFunctionsGroup.root_name  s    (((r   c                   U (       d   e[        U 5      S:X  a  g [        U 5      n U R                  [        R                  S 5      nU R                  [        R
                  S 5      nU R                  [        R                  S 5      nU R                  [        R                  S 5      nU (       a   eUc   eUc  g [        UUUUS9$ )Nr3  )r  r  r  r  )	ru  rw  rk  r  r  r  r  r  r  )r  r  r  r  r  s        r   	from_dictNativeFunctionsGroup.from_dict  s    qq6Q;GUU:00$7
%%
**D1%%
**D1eeJNND)u%%% ;#!	
 	
r   r   Nr  r  r    r>  )r    Iterator[NativeFunction]r   )r  z dict[SchemaKind, NativeFunction]r    zNativeFunctionsGroup | None)r!   r"   r#   r$   r%   r  rM  r  r  r   r  r   r  r&   r   r   r   r  r  S  sd    """"	# #?B) ) ) 
 
r   r  c                  >    \ rS rSr% S\S'   S\S'   S\S'   S
S jrSrg	)rz  i  r   re  r@  rM  rf  c                     SU R                   ;   $ )N_symint)re  r   s    r   r|  BackendMetadata.supports_symint  s    DKK''r   r   Nr  )r!   r"   r#   r$   r%   r|  r&   r   r   r   rz  rz    s     K
  (r   rz  c                  H    \ rS rSr% S\S'   S\S'   S\S'   \SS j5       rS	rg
)r  i  r   r;   r  supported_dtypesr%  r  c                    U R                  SS5      u  p#US   S:X  d   eUS   S:X  d   e[        5       nUSS R                  S5       H  nU[        R                  U5      -  nM     [	        X$US9$ )	N r3  r   ()r  )r;   r  r  )r  r   r   r
  r  )rF   r  r;   supported_dtypes_strr  rG   s         r   rI   UfuncInnerLoop.parse  s    %*[[a%8"#A&#---#B'3...3=<%a+11$7A
 4 4Q 77 8I
 	
r   r   N)rF   r   r  r%  r    r  )r!   r"   r#   r$   r%   r   rI   r&   r   r   r   r  r    s'    
I,, 	
 	
r   r  c                      \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   \      SS
 j5       rSS jrSS jr    SS jr	SS jr
Srg)BackendIndexi  r6   r  r@  use_out_as_primaryrB  externalz#dict[OperatorName, BackendMetadata]indexc                    UR                  5        H:  u  p#UR                  5        H!  u  pEX@U   ;  d   SU SU 35       eXPU   U'   M#     M<     g )Nzduplicate operator z for dispatch key )rC   )parent_indexchild_indexrG   rH   op_namemetadatas         r   
grow_indexBackendIndex.grow_index
  sb    
  %%'DA%&WWY!?2H(	1CA3GH2+3Q(	 &/ (r   c                T    U R                   (       a  UR                  $ UR                  $ r9   )r%  r  r  )r   gs     r   primaryBackendIndex.primary  s    ""55L<<r   c                ,    U R                  U5      nUS L$ r9   )
get_kernel)r   r0  ms      r   
has_kernelBackendIndex.has_kernel  s    OOA}r   c                &   [        U[        5      (       a  UnO2[        U[        5      (       a  U R                  U5      nO[	        U5        WR
                  R                  U R                  ;  a  g U R                  UR
                  R                     $ r9   )rl  r<  r  r1  r	   r?  r;   r'  )r   r0  r  s      r   r4  BackendIndex.get_kernel   sf     a((A/00QAO66;;djj(zz!&&++&&r   c                V    U R                   (       a  [        U R                  5       S3$ g )NNativeFunctions)r&  r   r  r   s    r   native_function_class_name'BackendIndex.native_function_class_name-  s'    ==$++,-_==
 r   r   N)r)  6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r*  r>  r    r  )r0  r  r    r<  )r0  %NativeFunction | NativeFunctionsGroupr    r@  )r0  r?  r    zBackendMetadata | None)r    rD  )r!   r"   r#   r$   r%   r   r-  r1  r6  r4  r<  r&   r   r   r   r$  r$    ss      N..	4L	4K	4 
	4 	4 '6'	'r   r$  c                  &   \ rS rSr% S\S'   S\S'   S\S'   \SS j5       rSS	 jr\R                  " S
5      r
\SS j5       rSS jrSS jrSS jrSS jrS S jrS!S jrSSSS.       S"S jjrS#S jrS$S jr\SS j5       rSS jrS%S jrSrg)&r>  il  rr  r;   	Argumentsr  tuple[Return, ...]r  c                `   ^ SS jm[        U4S jU R                  R                   5       5      $ )Nc                J    U R                   c  gU R                   R                  $ NFr  )r  s    r   r  +FunctionSchema.is_mutable.<locals>.is_writex  s    ~~%>>***r   c              3  4   >#    U  H  nT" U5      v   M     g 7fr9   r   )r   r  r  s     r   r   ,FunctionSchema.is_mutable.<locals>.<genexpr>  s     @(?18A;;(?r   )r  Argumentr    r@  )r  r  r  )r   r  s    @r   
is_mutableFunctionSchema.is_mutablev  s%    	+ @(?(?@@@r   c                    [         R                  " U R                  R                  U R                  R                  U R                  R
                  5      $ r9   )	itertoolschainr  flat_positionalflat_kwarg_onlyr  r   s    r   r  %FunctionSchema.schema_order_arguments  s:    NN**NN**NN
 	
r   z3(?P<name>[^\(]+)\((?P<args>.*)\) -> (?P<returns>.*)c                L   [         R                  R                  U 5      n[        U5      S:X  d
   SU  35       eUS   u  p#n[        R                  U5      n[        R                  U5      n[        U5      n[        XVUS9n[        U5      U :X  d   [        U5       SU  35       eU$ )Nr3  zInvalid function schema: r   r;   r  r  r  )	r>  decl_refindallru  rr  rI   rA  parse_returnsr   )	r?  declsopsargsreturn_declr;   r  r  r   s	            r   rI   FunctionSchema.parse  s     &&..t45zQB";D6 BB!&q;!!#&OOD)	,7K1v~4#a&dV44~r   c                :    [        S U R                   5       5      $ )Nc              3  ~   #    U  H3  nUR                   c  M  UR                   R                  (       d  M/  Uv   M5     g 7fr9   r  r  s     r   r   5FunctionSchema.returns_are_aliased.<locals>.<genexpr>  s2      
!|| ,-LL,A,A A!s   ==	=)r  r  r   s    r   returns_are_aliased"FunctionSchema.returns_are_aliased  s      
\\
 
 	
r   c                	  ^^ [        U R                  R                  U R                  5       H'  u  nmUR                  TR                  :X  a  M"   S5       e   U R                  R
                   H:  m[        U4S jU R                   5       5      (       d  M)   S[        U 5       35       e   [        U R                  R                  5      U R                  R                   Vs/ s H  oR                  S:X  d  M  UPM     sn-   nU R                   Vs/ s H1  nUR                  c  M  UR                  R                  (       d  M/  UPM3     nnU R                   Vs/ s H/  nUR                  b  UR                  R                  (       a  M-  UPM1     nn[        U5      S:X  d"  [        U5      S:X  d   S[        U 5       35       eU H$  m[        U4S jU 5       5      (       a  M   S5       e   U R                  R                  (       a  [        S	 U R                  R                   5       5      (       a!  [        U R                  5      S:X  d   S
5       eOp[        U R                  R                   Vs/ s H'  nUR                  R                  S5      (       a  M%  UPM)     sn5      [        U R                  5      :X  d   S5       eU R                  R                  R                  (       a  U R                  R                  nU(       a@  UR                   R                  (       a%  UR                   R                  R                  (       d   eUR                   R"                  [%        [&        R(                  5      :X  aM  [        U R                  5      S:X  a1  U R                  S   R                  UR                   R                  :X  d   eO[        U R                  5      S:X  d   eU R                  R*                  b5  U R-                  5       [.        R0                  :X  d   S[        U 5       35       eU R3                  5       (       a6  U R-                  5       [.        R0                  :X  d   S[        U 5       35       eg g s  snf s  snf s  snf s  snf )NzsOut arguments must have matching return Tensor; furthermore, the ith-argument needs to correspond to the ith returnc              3  V   >#    U  H  nTR                   UR                   :H  v   M      g 7fr9   r  r   r   r  s     r   r   /FunctionSchema.__post_init__.<locals>.<genexpr>  s!      6B,l   &)z^If you have a schema with mutable positional args, we expect them to not be returned. schema: r   r   zYNativeFunctions must have either only mutable returns, or only immutable returns. Found: c              3  V   >#    U  H  nTR                   UR                   :H  v   M      g 7fr9   rc  )r   r  rets     r   r   re    s     P<Cs~~7<rf  zAll mutable returns must be aliased either to a keyword argument, or to "self". Did you forget to mark an out argument as keyword-only?c              3  l   #    U  H*  oR                   [        [        R                  5      :g  v   M,     g 7fr9   )typeBaseTypeBaseTyTensorr   r  s     r   r   re    s"     Q>P66Xfmm44>Ps   24z3out= ops that accept tensor lists as out arguments 	_scratch_zMMust return as many arguments as there are out arguments, or no return at allr3  zFound an operator that is not functional or out variant, but has tensor options arguments.This is not allowed- tensor options arguments are only allowed for factory functions.schema: zFound an operator that is not functional, but its overload contains the string 'functional'.This is a special keyword in the codegen, please use a different overload name.schema: )zipr  r  r  r  post_self_positional_mutabler  r   rp  rO  r;   r  ru  r}  r  self_argargumentrj  rk  rl  rm  r  r  r  r  is_functional_fn)r   r  out_and_selfrh  mutable_returnsimmutable_returnsself_ar  s      `   @r   r  FunctionSchema.__post_init__  s   DNN..=HC>>S^^3 I3 > <<A 6:ll   |opstxpyoz{|  = DNN../>>993
9CXX=OC93
 

 ||
#~~ .1nn.E.E # 	 
 ||
#~~%S^^-D-D # 	 
  A%->)?1)D	sfgjkogpfqr	sD"CP<PPP JP #
 >> Qdnn>P>PQQQ%*IHI*b
  (,~~'9'9'9#&88#6#6{#C  '9 4<<()	c c	c) 99>>!!^^,,FOO..OO..778 ##x'>> %*Q22foo6P6PPQP
 4<<(A--->>((499;*"7"77 t9+'7
   ""99;*"7"77 t9+'7 #Y3



Ds6   "Q99Q9Q>'Q>Q>,R
R1$RRc                4    SU R                   R                  ;   $ )Nr  r;   overload_namer   s    r   rt  FunctionSchema.is_functional_fn  s    tyy6666r   c                @    [        U R                  R                  5      $ r9   )r@  r  r  r   s    r   	is_out_fnFunctionSchema.is_out_fn  s    6 DNN&&''r   c                   [        U R                  R                  5      n[        U R                  R                   Vs/ s H&  o"R                  R	                  S5      (       d  M$  UPM(     sn5      nU R                  R                  R
                  n[        S U R                  R                   5       5      nU(       a	  U(       a   eU(       a  [        R
                  $ U(       a  U(       d   S5       e[        R                  $ U(       a  U(       a   S5       e[        R                  $ U(       a  [        R                  $ [        R                  $ s  snf )z
What kind of schema is this?  A functional schema is one
that returns a newly allocated output; an inplace schema
modifies the self argument inplace; an out schema writes
the result into an explicitly provided out argument.
ro  c              3  x   #    U  H0  nUR                   S L=(       a    UR                   R                  v   M2     g 7fr9   r  rn  s     r   r   &FunctionSchema.kind.<locals>.<genexpr>.  s2      
8 LL$>)>)>>8s   8:zFinvariant: all scratch operators are expected to be out= operators toozjWe should not categorize a scratch op as an out variant. Check if the order of if statements are expected!)r@  r  r  r;   r}  r  r  post_self_positionalr  r  r  r  )r   is_outr  
is_scratch
is_inplacerJ  s         r   r  FunctionSchema.kind"  s    dnn(() NN..S.S((2E2Ek2RS.S

 YY^^++
 
^^88
 

 z** %%%XWX%%%!  P  $P  P>>>!%%%(((9 Ts   #E$Ec                   / nU R                    H  nU R                  R                   Vs/ s H0  nUR                  c  M  UR                  UR                  :X  d  M.  UPM2     nn[	        U5      S:X  a  UR                  S 5        Mv  [	        U5      S:X  a   UR                  US   R                  5        M  SR                  S U 5       5      n[        SUR                   SU S35      e   U$ s  snf )Nr   r3  r  c              3  8   #    U  H  oR                   v   M     g 7fr9   r:   rn  s     r   r   6FunctionSchema.aliased_return_names.<locals>.<genexpr>Z  s     )G,Q&&,r  zFound a return (z)that aliases multiple inputs (r   )	r  r  r  r  ru  rt  r;   r   rD   )r   outsr   r  aliased_argsaliased_namess         r   aliased_return_names#FunctionSchema.aliased_return_namesM  s    !#A 000A<< 010L 0  
 < A%D!\"a'LO001 $		)G,)G G$&qvvh.Mm_\]^   s   C,C,C,F)strip_defaultstrip_view_copy_namekeep_return_namesc          
       ^ ^ SU4S jjnT R                   R                   R                  nU(       aQ  UR                  S5      (       a  UR                  SS5      nO(UR                  S5      (       a  UR                  SS5      n[	        UU 4S j[
        R                  " T R                  R                  b!  T R                  R                  R                  /O/ T R                  R                  T R                  R                  5       5       5      n[	        [        UT R                  5      5      nXv-   nT R                  R                  US9n	[        T R                   5      S	:X  a.  [         R#                  [        U	5      R                  S
S5      5      n	[%        ['        [)        UST R                   R                   R*                  S9SS9U	US9$ )a
  
        Certain schemas are 'related', in that they are simply
        inplace/out/functional versions of the same function.  This method
        factors these schemas into the "core" functional signature which
        is equal across all versions.

        Here is what normalization happens to the schema to convert
        it to a signature:
        - The overload name is stripped (name is retained, since
          it expresses semantic content about what the function does)
        - Inplace is set False
        - Out arguments are stripped
        - Mutable post_self_positional args are converted to returns
        - Mutability annotations are stripped  (this is sound
          because you cannot overload on mutability annotation)
        - Return names are stripped since they are not overloadable and
          some variants have return names but some not
        - TensorOptions are dropped
          because out= variants of factory functions don't include them
          (and we want to be able to pair up factory functions with their out variants)

        Finally, we want to be able to pair up related "view" and their
        corresponding "view_copy" operators. We do this by optionally
        stripping the trailing "_copy" from the base name.

        Example of a mutable op before and after:

        f.func (Mutable operator):
_fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor(a!) running_min, Tensor(b!) running_max, Tensor(c!) scale, Tensor(d!) zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask)  # noqa: B950

        f.func (Corresponding functional operator):
_fused_moving_avg_obs_fq_helper.functional(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor output, Tensor mask, Tensor running_min_out, Tensor running_max_out, Tensor scale_out, Tensor zero_point_out)  # noqa: B950

        f.func.signature() output:
_fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor)  # noqa: B950
c                T   > [        T(       a  U R                  OS U R                  S S9$ )Nr;   rj  r  )Returnr;   rj  )r   r  s    r   strip_ret_annotation6FunctionSchema.signature.<locals>.strip_ret_annotation  s%    0QVVdVV r   _copyr,   _scatterscatterinversec              3     >^#    U  H  mTR                   c  M  TR                   R                  (       d  M/  [        U4S jTR                   5       5      (       a  MU  [	        T(       a  TR
                   S3OS TR                  S S9v   M     g 7f)Nc              3  V   >#    U  H  nTR                   UR                   :H  v   M      g 7fr9   rc  rd  s     r   r   5FunctionSchema.signature.<locals>.<genexpr>.<genexpr>  s     Kl4lrf  _outr  )r  r  r  r  r  r;   rj  )r   r  r  r   s    @r   r   +FunctionSchema.signature.<locals>.<genexpr>  st      ,
 || %%  KdllKK!F(9xt_tVV
s   BB"B2Br  zbernoulli.pzfloat pzfloat p=0.5Fr  r  dunder_methodr{  rS  )r   r  r    r  )r;   r  r~  replacetuplerM  rN  r  rr  rs  r  r  mapr  r  r   rA  rI   r>  rr  BaseOperatorNamer  )
r   r  r  r  r  	base_namereturns_from_mutable_inputsoriginal_returnsr  args_sigs
   `  `      r   r  FunctionSchema.signature`  s{   X	 IINN''	!!'**%--gr:	##J//%--iC	 ', ,
 __ >>**6 ((112""33,
 '
#, !%94<<!HI"@>>++-+Htyy>]* s8}'<'<Y'VWH%"!"&))..">">
 ! 
 	
r   c                     U R                  SS9$ )NTr  )r  r   s    r   view_signatureFunctionSchema.view_signature  s    ~~4~88r   c                @    [        UU R                  U R                  S9$ )NrS  )r>  r  r  )r   r;   s     r   	with_nameFunctionSchema.with_name  s     nnLL
 	
r   c                    U R                  5       [        R                  [        R                  [        R                  4;   $ r9   )r  r  r  r  r  r   s    r   modifies_arguments!FunctionSchema.modifies_arguments  s*    yy{z11:>>:CUCUVVVr   c                6    U R                   R                  5       $ r9   )r  has_symint_argr   s    r   
has_symintFunctionSchema.has_symint  s    ~~,,..r   c                   [        U R                  5      n[        U R                  5      S:X  a  [        U R                  S   5      nO/SSR	                  [        [         U R                  5      5      -   S-   nU R                   SU SU 3$ )Nr3  r   r  r  r   z) -> )r   r  ru  r  r   r  r;   )r   all_arguments_strr  s      r   r   FunctionSchema.__str__  st    /t||!$,,q/*GDIIc#t||&<==CG))A/0gY??r   r   Nr  )r    zIterator[Argument])r?  r   r    r>  r  )r    r  )r    zlist[str | None])r  r@  r  r@  r  r@  r    r>  r  )r;   rr  r    r>  r   )r!   r"   r#   r$   r%   r  rJ  r  recompilerT  r   rI   r_  r  rt  r  r  r  r  r  r  r  r  r   r&   r   r   r   r>  r>  l  s       A A
 jjOPG
 

aF7(:%)V, $%*"'e
 e
 #	e

  e
 
e
N9
 W W/@r   r>  c                  R    \ rS rSr% S\S'   S\S'   S\S'   \SS j5       rSS jrS	rg
)
Annotationi  ztuple[str, ...]	alias_setr@  r  r  c                   [         R                  " SU 5      nUc
   SU  35       eUR                  S5      UR                  S5      (       a  UR                  S5      OS-   n[        UR	                  S5      5      nUR                  S5      S:H  nU(       a  [        U5      S:  a   S	U  S
35       eUR                  S5      (       a)  [        UR                  S5      R	                  S5      5      OSn[        U5      S:  a  [        U5      S:  a   SU  S
35       e[        X4US9n[        U5      U :X  d   U SU  35       eU$ )Nz2^([a-z])(\|[a-z])*(!?)( -> (\*|[a-z](\|[a-z])*))?$zunrecognized alias annotation r3  ri  r,   |rc  !z,alias set larger than 1 is not mutable, got z	 instead.   r   zSbefore alias set and after alias set cannot be larger than 1 at the same time, got )r  r  r  r  )r  matchgroupr  r  ru  r  r   )annr5  before_aliasr  r  	after_setr   s          r   rI   Annotation.parse  sB     HHJCP}D >seDD}wwqz1771::QWWQZ2F,,,S12	771:$Y!+	I9#iH	I 
 56GGAJJE!''!***3/0B	!c)nq&8	p`ad`eeno	p 
 I
 1v}-4uo-}r   c                    SR                  U R                  5      nU R                  (       a  U S3nSR                  U R                  5      nU(       a  U S U 3nU$ )Nr  r   -> )r   r  r  r  )r   r  r  s      r   r   Annotation.__str__  sV    HHT^^,	==$+QI((4#7#78$+fXo->?Ir   r   N)r  r   r    r  r   )	r!   r"   r#   r$   r%   r   rI   r   r&   r   r   r   r  r    s-     N$$   Dr   r  c                      \ rS rSr\SS j5       r\SS j5       rSS jrSS jrSS jr	SS jr
SS jrSS	 jrSS
 jrSrg)Typei$  c                f    [         R                  U 5      n[        U5      U :X  d   U SU  35       eU$ )Nr  )r  _parser   )r  r   s     r   rI   
Type.parse&  s3    KKN1v{)qcaSM){r   c                H   [         R                  " SU 5      nUb-  [        [        R	                  UR                  S5      5      5      $ [         R                  " SU 5      nUbZ  UR                  S5      b  [        UR                  S5      5      OS n[        [        R	                  UR                  S5      5      US9$ [         R                  " SU 5      nUb  [        UR                  S5      5      $  [        [        U    5      $ ! [         a  n[        SU  35      UeS nAff = f)Nz^(.+)\?$r3  z^(.+)\[([0-9]+)?\]$ri  )elemsizez-^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$zunrecognized type )r  r  OptionalTyper  rI   r  r   ListTypeCustomClassTyperk  rl  KeyErrorr  )r  r5  r  r  s       r   r  Type._parse,  s    HH[!$=

1771: 677HH+Q/=&'ggaj&<3qwwqz?$DAGGAJ!7dCC HHEqI="1771:..	@F1I&& 	@!3A378a?	@s   1D 
D!DD!c                    [         er9   NotImplementedErrorr   s    r   r   Type.__str__?      !!r   c                    [         er9   r  r   base_tys     r   is_base_ty_likeType.is_base_ty_likeG  r  r   c                @    U R                  [        R                  5      $ r9   )r  rl  rm  r   s    r   is_tensor_likeType.is_tensor_likeJ      ##FMM22r   c                @    U R                  [        R                  5      $ r9   )r  rl  	Generatorr   s    r   is_generator_likeType.is_generator_likeM  s    ##F$4$455r   c                @    U R                  [        R                  5      $ r9   )r  rl  SymIntr   s    r   is_symint_likeType.is_symint_likeP  r  r   c                    [         er9   r  r   s    r   is_nullableType.is_nullableS  r  r   c                    [         er9   r  r   s    r   is_list_likeType.is_list_likeV  r  r   r   N)r  r   r    r  r   r  rl  r    r@  r  r    zListType | None)r!   r"   r#   r$   r   rI   r  r   r  r  r  r  r  r  r&   r   r   r   r  r  $  sM     
 @ @$""363""r   r  c                  ,   \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rSrg)rl  i[  r   N)r!   r"   r#   r$   r   r  r   rm  r   Dimname	DimVectorfloatr   r@  LayoutDeviceDeviceIndexScalarMemoryFormatQSchemeStorageStreamr  SymBoolGraphModuler&   r   r   r   rl  rl  [  s    IJVF
&CfGIFE
&C6DVFVF&KVF6LfGfGVFVFfG&Kr   rl  c                  R    \ rS rSr% S\S'   SS jrSS jrSS jrSS jrSS jr	S	r
g
)rk  ir  rl  r;   c                0    U R                   R                    $ r9   r:   r   s    r   r   BaseType.__str__v  s    ))..!"r   c                     U R                   U:H  $ r9   r:   r  s     r   r  BaseType.is_base_ty_likey  s    yyG##r   c                    grE  r   r   s    r   r  BaseType.is_nullable|      r   c                    g r9   r   r   s    r   r  BaseType.is_list_like      r   c                <    U R                   [        R                  :H  $ r9   )r;   rl  r  r   s    r   r  BaseType.is_symint_like  s    yyFMM))r   r   Nr   r  r  r  )r!   r"   r#   r$   r%   r   r  r  r  r  r&   r   r   r   rk  rk  r  s     
L#$*r   rk  c                  R    \ rS rSr% S\S'   SS jrSS jrSS jrSS jrSS jr	S	r
g
)r  i  r  r  c                     U R                    S3$ )N?)r  r   s    r   r   OptionalType.__str__  s    ))Ar   c                8    U R                   R                  U5      $ r9   r  r  r  s     r   r  OptionalType.is_base_ty_like      yy((11r   c                6    U R                   R                  5       $ r9   r  r  r   s    r   r  OptionalType.is_symint_like      yy''))r   c                    g)NTr   r   s    r   r  OptionalType.is_nullable  r  r   c                6    U R                   R                  5       $ r9   )r  r  r   s    r   r  OptionalType.is_list_like  s    yy%%''r   r   Nr   r  r  r  r!   r"   r#   r$   r%   r   r  r  r  r  r&   r   r   r   r  r    s     
J2*(r   r  c                  R    \ rS rSr% S\S'   SS jrSS jrSS jrSS jrSS jr	S	r
g
)r  i  r   
class_namec                     SU R                    3$ )z;
Return the class name will prefix __torch__.torch.classes
z__torch__.torch.classes.)r*  r   s    r   r   CustomClassType.__str__  s     *$//):;;r   c                    grE  r   r  s     r   r  CustomClassType.is_base_ty_like  r  r   c                    grE  r   r   s    r   r  CustomClassType.is_symint_like  r  r   c                    g)z(
Assume a custom class is not nullable.
Fr   r   s    r   r  CustomClassType.is_nullable  s     r   c                    g r9   r   r   s    r   r  CustomClassType.is_list_like  r  r   r   Nr   r  r  r  r(  r   r   r   r  r    s     O<r   r  c                  \    \ rS rSr% S\S'   S\S'   SS jrSS jrSS jrSS	 jrSS
 jr	Sr
g)r  i  r  r  z
int | Noner  c                f    U R                   (       a  U R                    OSnU R                   SU S3$ )Nr,   [])r  r  )r   r  s     r   r   ListType.__str__  s,    !%$))))AdV1%%r   c                8    U R                   R                  U5      $ r9   r  r  s     r   r  ListType.is_base_ty_like  r  r   c                6    U R                   R                  5       $ r9   r!  r   s    r   r  ListType.is_symint_like  r#  r   c                6    U R                   R                  5       $ r9   )r  r  r   s    r   r  ListType.is_nullable  s    yy$$&&r   c                    U $ r9   r   r   s    r   r  ListType.is_list_like  s    r   r   Nr   r  r  r  r(  r   r   r   r  r    s&    
J
&2*'r   r  c                      \ rS rSr% S\S'   S\S'   S\S'   S\S	'   \SS
 j5       r\SS j5       r\SS j5       r	SS jr
Srg)rI  i  r   r;   r  rj  rD  r]  Annotation | Noner  c                    U R                   $ r9   rc  r   s    r   
alias_infoArgument.alias_info      r   c                z   SU ;   d   SU  S35       eSU ;   aO  U R                  S5      S:X  d   SU  S35       eU R                  S5      u  pUR                  SS5      u  p4U SU 3nOU R                  SS5      u  p5UnS n[        R                  " SU5      nU(       aU  UR                  S5      S	;   d   S
5       eSUR                  S5      -   n[        R                  UR                  S5      5      nOUnS n[        R                  U5      n	[        UU	UUS9n
[        U
5      U :X  d   [        U
5       SU  35       eU
$ )Nr  zillegal argument 'r  =r3  z&illegal argument with default value: 'Tensor\((.+)\)(.*)ri  r,   r  z[],unrecognized alias analysis form with Tensorrm  r;   rj  r]  r  r  )countr  rsplitr  r  r  r  rI   r  rI  r   )r  type_and_annot_and_namer]  type_and_annotr;   name_and_defaultr  type_sr  rj  r   s              r   rI   Argument.parse  sd    cz6/uA66z#:99S>Q&W*PQTPUUV(WW&/2yy~,##:#A#A#q#I N"&q	2/2zz#q/A,N#DG.?;;q> &  > >	> 
 A.F#))%++a.9J#FJzz&!!	
 1v}2QSE22}r   c                X    U R                   S L=(       a    U R                   R                  $ r9   r  r   s    r   r  Argument.is_write       d*Gt/G/GGr   c                   U R                    nU R                  (       a(  US;   d   eUR                  SSU R                   S35      nU R                  c  U$ SnU R                  (       a  SU R                   3nU SU R                   U 3$ )Nrm  zTensor?zTensor[]rm  Tensor(r   r,   rI  r  )rj  r  r  r;   r]  )r   rj  
mb_defaults      r   r   Argument.__str__   s    ))??<<<<<<GDOO3DA*FGD99KJ|| /
V1TYYK
|44r   r   Nr    rC  )r  r   r    rI  r  r   r!   r"   r#   r$   r%   r  rE  r   rI   r  r   r&   r   r   r   rI  rI    s^    
 I
J* "!  $ $L H H5r   rI  c                  z    \ rS rSr% S\S'   S\S'   S\S'   \SS j5       r\SS	 j5       r\SS
 j5       r	SS jr
Srg)r  i.  rD  r;   r  rj  rC  r  c                    U R                   $ r9   rc  r   s    r   rE  Return.alias_info4  rG  r   c                   SU ;   a  U R                  SS5      u  pOU nS n[        R                  " SU5      nU(       aU  UR                  S5      S;   d   S5       eSUR                  S5      -   n[        R                  UR                  S5      5      nOUnS n[        R                  U5      n[        UUUS9n[        U5      U :X  d   [        U5       S	U  35       eU$ )
Nr  r3  rJ  ri  rK  rL  rm  r  r  )	rO  r  r  r  r  rI   r  r  r   )r  rQ  r;   r  rS  r  rj  r   s           r   rI   Return.parse8  s     #:#&::c1#5 ND ND.?;;q> &  > >	> 
 A.F#))%++a.9J#FJzz&!!

 1v}2QSE22}r   c                X    U R                   S L=(       a    U R                   R                  $ r9   r  r   s    r   r  Return.is_writeW  rW  r   c                    U R                    nU R                  (       a(  US;   d   eUR                  SSU R                   S35      nU R                  c  U$ U SU R                   3$ )NrY  rm  rZ  r   r  )rj  r  r  r;   )r   rj  s     r   r   Return.__str__[  se    ))??<<<<<<GDOO3DA*FGD99KV1TYYK((r   r   Nr]  )r  r   r    r  r  r   r^  r   r   r   r  r  .  sT    

J!!   < H H)r   r  c                       \ rS rSr% S\S'   Srg)SelfArgumentig  rI  rs  r   N)r!   r"   r#   r$   r%   r&   r   r   r   ri  ri  g  s    r   ri  c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S
S jrSrg	)TensorOptionsArgumentsio  rI  dtypelayoutdevice
pin_memoryc                ^    U R                   U R                  U R                  U R                  /$ r9   rl  rm  rn  ro  r   s    r   allTensorOptionsArguments.allv  s!    

DKKdooFFr   r   Nr    zSequence[Argument])r!   r"   r#   r$   r%   rr  r&   r   r   r   rk  rk  o  s    OGr   rk  c                     \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   S\S
'   S\S'   \S$S j5       r\S$S j5       r\S$S j5       r\S$S j5       r	\S$S j5       r
\  S%S j5       r\S&S j5       r\S'S j5       r\S%S j5       rS(S jrS)S jrS)S jrS)S jrSS.S*S jjrS+S jrS,S jr\S-S j5       r\S.S j5       rS/S  jrS0S! jrS"rg#)1rA  iz  ztuple[Argument, ...]pre_self_positionalzSelfArgument | Nonerr  r  pre_tensor_options_kwarg_onlyzTensorOptionsArguments | Noner  post_tensor_options_kwarg_onlyr  c                v    / nUR                  U R                  5        UR                  U R                  5        U$ r9   )r   rO  rP  r   rh  s     r   flat_non_outArguments.flat_non_out  s0     

4''(

4''(
r   c                    / nUR                  U R                  5        U R                  b%  UR                  U R                  R                  5        UR                  U R
                  5        U$ r9   )r   rv  rr  rt  rs  r  rz  s     r   rO  Arguments.flat_positional  sP     

4++,==$JJt}}--.

4,,-
r   c                j    U R                    Vs/ s H  oR                  (       d  M  UPM     sn$ s  snf r9   )r  r  r   r  s     r   rq  &Arguments.post_self_positional_mutable  s&    44C4a

4CCCs   00c                    / nUR                  U R                  5        U R                  b)  UR                  U R                  R                  5       5        UR                  U R                  5        U$ r9   )r   rw  r  rr  rx  rz  s     r   rP  Arguments.flat_kwarg_only  sW     

4556*JJt**..01

4667
r   c                    / nUR                  U R                  5        UR                  U R                  5        UR                  U R                  5        U$ r9   )r   rO  rP  r  rz  s     r   r  Arguments.flat_all  s@     

4''(

4''(

488
r   c                v    / nUR                  U R                  5        UR                  U R                  5        U$ r9   )r   
positional
kwarg_onlyrz  s     r   non_outArguments.non_out  s0     GI

4??#

4??#
r   c                    / nUR                  U R                  5        U R                  b  UR                  U R                  5        UR                  U R                  5        U$ r9   )r   rv  rr  rt  r  rz  s     r   r  Arguments.positional  sJ    -/

4++,==$JJt}}%

4,,-
r   c                    / nUR                  U R                  5        U R                  b  UR                  U R                  5        UR                  U R                  5        U$ r9   )r   rw  r  rt  rx  rz  s     r   r  Arguments.kwarg_only  sN    79

4556*JJt**+

4667
r   c                    / nUR                  U R                  5        UR                  U R                  5        UR                  U R                  5        U$ r9   )r   r  r  r  rz  s     r   rr  Arguments.all  s<    FH

4??#

4??#

488
r   c                    U R                    Vs/ s H;  nUR                  c  M  UR                  R                  (       d  M/  UR                  PM=     sn$ s  snf r9   )r  r  r  r;   r  s     r   mutable_arg_namesArguments.mutable_arg_names  sL     ]]
"|| ,-LL,A,A AFF"
 	
 
s   AAAc                :    [        S U R                   5       5      $ )Nc              3  T   #    U  H  oR                   R                  5       v   M      g 7fr9   )rj  r  rn  s     r   r   +Arguments.has_tensor_arg.<locals>.<genexpr>        F4Eq66((**4E   &(r  r{  r   s    r   r  Arguments.has_tensor_arg      FD4E4EFFFr   c                :    [        S U R                   5       5      $ )Nc              3  T   #    U  H  oR                   R                  5       v   M      g 7fr9   )rj  r  rn  s     r   r   +Arguments.has_symint_arg.<locals>.<genexpr>  r  r  r  r   s    r   r  Arguments.has_symint_arg  r  r   c                :    [        S U R                   5       5      $ )Nc              3  T   #    U  H  oR                   R                  5       v   M      g 7fr9   )rj  r  rn  s     r   r   .Arguments.has_generator_arg.<locals>.<genexpr>  s      I7H!66++--7Hr  r  r   s    r   r  Arguments.has_generator_arg  s    It7H7HIIIr   Fr  c               |  ^ SU4S jjn[        [        [        X R                  5      5      U R                  b%  [        U" U R                  R                  5      5      OS [        [        X R                  5      5      [        [        X R                  5      5      [        [        X R                  5      5      -   S SSS9$ )Nc                p   > [        U R                  U R                  T(       d  U R                  S S9$ S S S9$ )NrM  )rI  r;   rj  r]  )r  r  s    r   strip_arg_annotation1Arguments.signature.<locals>.strip_arg_annotation  s=    VVVV)6			  =A	 r   r   rv  rr  r  rw  r  rx  r  )r  rI  r    rI  )
rA  r  r  rv  rr  ri  rs  r  rw  rx  )r   r  r  s    ` r   r  Arguments.signature  s    	  %(*B*BC! }}( ""6t}}7M7M"NO!&(*C*CD"
 +0(*L*LM+ C,.Q.QRS+T  +-+
 	
r   c           
         U R                   c   e[        R                  " U [        [        R                  " U R                   R                  S S95      S9$ )Nrc  )rr  )rr  dataclassesr  ri  rs  r   s    r   remove_self_annotation Arguments.remove_self_annotation	  sJ    }}(((""!##DMM$:$:tL
 	
r   c                t    [        U R                  5      S:X  d   e[        R                  " U [	        U5      S9$ )Nr   )r  )ru  r  r  r  r  )r   r  s     r   with_out_argsArguments.with_out_args	  s5    488}!!!""d
 	
r   c                F   / n/ n/ nUnU R                  S5       H  nU(       d  M  US:X  a  XAL d   S5       eUnM!  [        R                  U5      nUR                  b'  UR                  R                  (       a  XAL a  OXBL a  UnOXCLd   eUR                  U5        M     XU4$ )Nr  r  z:invalid syntax: kwarg-only specifier * can only occur once)r  rI  rI   r  r  rt  )rY  r  r  r  arguments_accr  pargs          r   	_preparseArguments._preparse	  s    %'
%'
 " ::d#Ccz!/POP/ *>>#&D *t/G/G ."0$'M$///  &/ $2 s**r   c                   [         R                  U 5      u  pnSn[        U5       H  u  pVUR                  S:X  d  M  Un  O   Ub  USU n[	        X   5      nXS-   S n	O/ nSnUn	/ n
Sn/ nU
nSS jnU" S[
        R                  S5      5      U" S[
        R                  S5      5      U" S	[
        R                  S
5      5      U" S[
        R                  S5      5      /nSnU[        U5      :  a  U[        U5      [        U5      -
  ::  ac  [        S [        XXU[        U5      -    5       5       5      (       a5  XL d   e[        X%   X%S-      X%S-      X%S-      S9nU[        U5      -  nUnM  UR                  X%   5        US-  nU[        U5      :  a  M  [        [        U5      U[        U	5      [        U
5      U[        U5      [        U5      S9$ )z
Input: 'int x, int y, int z'
Nr   r3  c                   ^ ^ U U4S j$ )Nc                d   > U R                   T:H  =(       a    U R                  T[        T5      4;   $ r9   )r;   rj  r  )r  r;   tys    r   <lambda>/Arguments.parse.<locals>.pred.<locals>.<lambda>g	  s(    QVVt^P2|B?O:P0PPr   r   )r;   r  s   ``r   predArguments.parse.<locals>.predf	  s	    PPr   rl  r   rm  r  rn  r  ro  r@  r   c              3  6   #    U  H  u  pU" U5      v   M     g 7fr9   r   )r   pr  s      r   r   "Arguments.parse.<locals>.<genexpr>u	  s       T aDD Ts   ri  rc  rq  r  )r;   r   r  r  r    zCallable[[Argument], bool])rA  r  	enumerater;   ri  r  rI   ru  rr  rp  rk  rt  r  )rY  r  r  r  self_ixir  rv  rr  r  rw  r  rx  kwarg_only_accr  
predicatess                   r   rI   Arguments.parseA	  s	    '0&9&9$&?#
 j)DAvv * ",Xg"6#J$78H#-km#< "$H#-  9;%8<9;&6	Q $**\234::h/04::h/0tzz&12	

 #j/!C
Oc*o55  #J13z??R0S T   *JJJ%;(m)a%0)a%0#-!e#4	&N Z(A%CN!!*-0FA) #j/!,  %&9 :!&';!<*/0M*N)+01O+Pc

 	
r   c                   / nUR                  [        [        U R                  5      5        U R                  (       d  U R
                  (       a  UR                  S5        UR                  [        [        U R                  5      5        UR                  [        [        U R
                  5      5        SR                  U5      $ )Nr  r  )r   r  r   rO  rP  r  rt  r   )r   all_argumentss     r   r   Arguments.__str__	  s    #%Sd&:&:;<488  %Sd&:&:;<Sdhh/0yy''r   c                J   U R                   c  U R                  (       a   eU R                  c  U R                  (       a   eU R                   Vs/ s H1  nUR                  c  M  UR                  R
                  (       d  M/  UPM3     nn[        U5      S:X  d   S5       eg s  snf )Nr   zOmutable pre_self_positional arguments are not currently supported in the schema)rr  rv  r  rx  r  r  ru  )r   r  mutable_pre_self_positionalss      r   r  Arguments.__post_init__	  s     == ////&:::: --(
-|| ,-LL,A,A - 	% (
 ,-2	]\	]2(
s   B $B B r   Nrt  )r    z:Sequence[Argument | SelfArgument | TensorOptionsArguments])r    z!Sequence[Argument | SelfArgument])r    z+Sequence[Argument | TensorOptionsArguments]r    z	list[str]r  )r  r@  r    rA  )r    rA  )r  list[Argument]r    rA  )rY  r   r    z5tuple[list[Argument], list[Argument], list[Argument]])rY  r   r    rA  r   r  )r!   r"   r#   r$   r%   r  r{  rO  rq  rP  r  r  r  r  rr  r  r  r  r  r  r  r  r   r  rI   r   r  r&   r   r   r   rA  rA  z  sQ   
 .-!!..#7711 %98 
    D D     	C       
GGJ 27 !
F

 !+ !+F M
 M
^(]r   rA  )r  submuldivmodpowlshiftrshiftandxororc                  `    \ rS rSr% S\S'   S\S'   S\S'   SrS\S'   \SS	 j5       rSS
 jrSr	g)r  i	  r   r  r@  r  r  Fr  c                  ^ U S:w  d   eU R                  S5      (       a   S5       e[        R                  " SU 5      nUbG  SnUR                  S5      m[	        U4S j[
         5       5      (       a  SnTSS  mO%SnTS	   S
:w  d   eOSnU mTS   S:X  a  SnTS S mOSnSnTR                  U5      (       a"  SnTS [        U5      *  mU(       d  U(       a   eOSn[        TUUUS9n[        U5      U :X  d   [        U5       SU  35       eU$ )Nr,   r  zs_out suffix is reserved and not permitted for operator names; did you mean to specify an out overload name instead?z^__([^_]+)__$Tr3  c              3  4   >#    U  H  nTS U 3:H  v   M     g7f)r  Nr   )r   nr  s     r   r   )BaseOperatorName.parse.<locals>.<genexpr>	  s     G,Fq4Qqc7?,Fr   Fr   r  r  __functional)r  r  r  r  r  )	r~  r  r  r  r  AUGMENTED_ASSIGNMENT_NAMESru  r  r   )r  r5  r  r  functional_suffixr  r   r  s          @r   rI   BaseOperatorName.parse	  sG   Rxx;;v&& 	
D	
& HH%r*= M771:DG,FGGGABx
 Aw#~%~!MDBx3CRy *==*++"&130112D %W44W"'' 3	
 1v|0AxtB400|r   c                    U R                   (       a'  U R                  (       a  SOSnSU U R                   S3$ U R                  (       a  SOU R                  (       a  SOSnU R                   U 3$ )Nr  r,   __r  r  )r  r  r  r  )r   r  s     r   r   BaseOperatorName.__str__
  sj    ||As499+R(( <<  ++ #  ii[$$r   r   N)r  r   r    r  r   )
r!   r"   r#   r$   r%   r  r   rI   r   r&   r   r   r   r  r  	  s7    
IM( !&%/ /b%r   r  c                  f    \ rS rSr% S\S'   S\S'   \SS j5       rSS jrSS jrSS	 jr	SS
 jr
Srg)rr  i#
  r  r;   r   r|  c                    SU ;   a  U R                  SS5      u  pOU nSn[        [        R                  U5      US9n[	        U5      U :X  d   [	        U5       SU  35       eU$ )N.r3  r,   r{  r  )r  rr  r  rI   r   )r+  r;   r|  r   s       r   rI   OperatorName.parse(
  sk    '>")--Q"7D-DM.44T:-X1v :SVHD	":: r   c                t    U R                   (       a  U R                   SU R                    3$ U R                   $ )Nr  r|  r;   r   s    r   r   OperatorName.__str__3
  3    ii[$"4"4!566ii[!r   c                t    U R                   (       a  U R                   SU R                    3$ U R                   $ )Nr  r  r   s    r   unambiguous_nameOperatorName.unambiguous_name>
  r  r   c                    [        [        U R                  R                  SU R                  R                  S9U R
                  S9$ NFr  r{  )rr  r  r;   r  r  r|  r   s    r   remove_inplaceOperatorName.remove_inplaceD
  s=    !YY^^"ii55
 ,,
 	
r   c                x    [        [        U R                  R                  SU R                  R                  S9US9$ r  )rr  r  r;   r  r  )r   overloads     r   with_overloadOperatorName.with_overloadN
  s7    !YY^^"ii55
 #
 	
r   r   N)r+  r   r    rr  r   )r    rr  )r  r   r    rr  )r!   r"   r#   r$   r%   r   rI   r   r  r  r  r&   r   r   r   rr  rr  #
  s4    
 ""

r   rr  c                    U R                   R                  5       [        R                  L=(       a8    UR	                  U 5      (       + =(       a    UR	                  UR                  5      $ r9   )r?  r  r  r  r6  )r  r0  bs      r   "gets_generated_out_inplace_wrapperr  Y
  sI     	
Z222 	'Q	'LL&r   c                  x    \ rS rSr% S\S'   S\S'   S\S'   SS jrSS	.SS
 jjr\SS j5       r\SS j5       r	Sr
g)NativeFunctionsViewGroupin
  r<  viewr  	view_copyview_inplacec                J   U R                   R                  (       d   eU R                  cc  [        U R                   5      (       aH   [	        U R                   R
                  R                  5       S[        U R                   5      < S35       eOU R                  R
                  R                  R                  R                  R                  S5      (       d   eU R                   R
                  R                  5       U R                  R
                  R                  SS9:X  d   eSU R                  R                  ;   dP   [	        U R                  R
                  R                  5      [	        U R                   R                  5      4 S35       eU R                  bL  U R                   R
                  R                  5       U R                  R
                  R                  5       :X  d   eU R                   R                  (       a  U R                  bv  U R                  R                  (       d[   [	        U R                   R
                  R                  5       S[	        U R                  R
                  R                  5       S	35       eU R                   R                  (       a  U R                  bw  U R                  R                  (       d[   [	        U R                   R
                  R                  5       S[	        U R                  R
                  R                  5       S
35       eg g g )Nz appears to be a new operator that aliases its inputs. The codegen expects you to add a corresponding operator to native_functions.yaml: z3. See Note [view_copy NativeFunctions] for details.)r  r  Tr  r  z appears to be a view_copy operator. The codegen expects view_copy operators to be annotated with the 'view_copy' tag in native_functions.yaml. See Note [view_copy NativeFunction] for details.r  z] must either both have CompositeImplicitAutograd kernels, or both not have composite kernels.zi must either both have CompositeImplicitAutogradNestedTensor kernels, or both not have composite kernels.)r  r  r  gets_generated_view_copyr   r?  r;   get_view_copy_namer  r~  r  rX  r   rT  rU  r   s    r   r  &NativeFunctionsViewGroup.__post_init__x
  s   yy####>>!/		:: tyy~~**+, -&tyy14 5EE:: >>&&++0055>>?TUUUU99>>++-1D1D1N1N%) 2O 2    $.."5"55 t~~**//0#diinn2EEF GD D5
 (99>>++-1B1B1G1G1Q1Q1SSSS99;;  ,((OO 499>>../0c$:K:K:P:P:U:U6V5W Xh hO 99II  ,((]] 499>>../0c$:K:K:P:P:U:U6V5W Xt t] - Jr   T)include_copyc             #     #    U R                   v   U R                  b  U R                  v   U R                  b  U(       a  U R                  v   g g g 7fr9   )r  r   r  )r   r  s     r   r   "NativeFunctionsViewGroup.functions
  sD     ii(###>>%,..  +7%s   AAc                .    U R                   R                  $ r9   )r  r  r   s    r   r  "NativeFunctionsViewGroup.root_name
  s    yy"""r   c                .    U R                   R                  $ r9   )r  rT  r   s    r   	composite"NativeFunctionsViewGroup.composite
  s     yy???r   r   Nr  )r  r@  r    r  r   r  )r!   r"   r#   r$   r%   r  r   r  r  r  r&   r   r   r   r  r  n
  sP    
 %$''!F 15 ! # # @ @r   r  c                    U R                   (       d  gU R                  (       a  gSU R                  ;   a  gU R                  R                  R                  R
                  R                  S5      (       a  gg)NFr  _inverseT)r  rT  rX  r?  r;   r  r~  )r  s    r   r  r  
  sV    << 	// 	vv{{%%j11r   c                   S/n[        U R                  R                  5      U;  a  [        U 5      (       d   eU R                  R                  R                  R                   S3n[        [        USU R                  R                  R                  R                  S9U R                  R                  R                  S9nU$ )Nnarrowr  Fr  r{  )	r   r?  r;   r  r  rr  r  r  r|  )r  -list_of_ops_with_explicit_view_copy_operatorsr  view_copy_names       r   r  r  
  s     6>J1
166;;LL'****66;;##(()/I!E9I9I9W9W
 ffkk//	N r   c                    U S:X  a  gU S   S:X  a  U S   S:X  a  U SS n [        S U R                  S	5       5       5      $ )
z
Input: '()'
Output: []
z()r   r   r  r  r   r3  c              3  L   #    U  H  n[         R                  U5      v   M     g 7fr9   )r  rI   r  s     r   r    parse_returns.<locals>.<genexpr>
  s     F.Esc"".Es   "$r  )r  r  )rZ  s    r   rV  rV  
  sN    
 d1~RC!7!!B'Fk.?.?.EFFFr   c                  R    \ rS rSr% S\S'   S\S'   \SS j5       rSS jrSS jrS	r	g
)rs  i
  zdict[str, list[Argument]]r  r  r  c                t   [        U [        5      (       d   e/ nSU S   ;  aL  U S   R                  S5      nU Vs/ s H&  n[        R	                  UR                  5       5      PM(     nnU S S n 0 nU  H  n[        U[        5      (       d   eSU;   d   S5       eUR                  S5      u  pgSU;  d   SU S35       eUR                  S5      nU Vs/ s H&  n[        R	                  UR                  5       5      PM(     n	nXU'   M     [        XAS9n
U
R                  5       U :X  d   S	5       eU
$ s  snf s  snf )
Nr  r  rb  zLprecomputed parameters without replacement are allowed only in the last liner  zillegal kernel param name 'z' in precomputed parameters')r  r  zr.to_list() != src)	rl  rp  r  rI  rI   rx  r   rs  to_list)srcadd_argsadd_listr;   r  raw_replace_itemr  with_list_raw	with_listwith_list_argsr   s              r   rI   Precompute.parse
  sP   #t$$$$ R 2w}}S)HAIJtzz|4HJcr(C #.4444-- 5-
 "2!7!7!?C3O,SE1MNO%++C0IGPQythnnTZZ\:yNQ)CL !$ w5yy{c!7#77!+ K  Rs   -D0-D5c                &   U R                    H-  nUR                  R                  5       UR                  :w  a  M-   e   U R                  R	                  5        H6  nU H-  nUR                  R                  5       UR                  :w  a  M-   e   M8     g r9   )r  r;   upperr  r  )r   r  rY  s      r   r  Precompute.__post_init__  sk     A66<<>QVV+++ LL'')Dvv||~///  *r   c                    / nU R                   R                  5        H3  u  p#SR                  S U 5       5      nUR                  U SU 35        M5     U$ )Nr  c              3  8   #    U  H  n[        U5      v   M     g 7fr9   r  )r   params     r   r   %Precompute.to_list.<locals>.<genexpr>$  s     $P=OESZZ=Or  r  )r  rC   r   rt  )r   replace_listkernel_paramreplacement_paramsreplacementss        r   r  Precompute.to_list!  sX    040B0B0D,L99$P=O$PPL<.\N CD 1E r   r   N)r  objectr    rs  r  r  )
r!   r"   r#   r$   r%   r   rI   r  r  r&   r   r   r   rs  rs  
  s-     '&	" "H0r   rs  r   )r   r6   r    r@  )r  r<  r0  r  r  r$  r    r@  )r  r<  r    r@  )r  r<  r    rr  )rZ  r   r    rB  )q
__future__r   r  rM  r  r   enumr   r   typingr   r   torchgen.utilsr	   r
   r   collections.abcr   r   r   r(   r  r  r   r   AUTOGRAD_KEYSFRAGMENT_NAMESPACESr6   r   r   r   r   hasattrr   printr  r}   ry   rx   r   r   r   r   r   rV   r   r   r   r   r   rs   rt   ru   rv   r   r   r   r   r   r   r   r   r]   ry  r   r   r   r   r   dispatch_device_mapr   r  r%   r  r  r  r  r  r  r  r  r  r%  r2  r7  r<  r  r  rz  r  r$  r>  r  r  rl  rk  r  r  r  rI  r  ri  rk  rA  r  r  rr  r  r  r  r  rV  rs  )	components   0r   <module>r9     s   "   	 !  * D D 2: $* * *d  (  nssu   ((,>,,>yJ,>,  #$:; 
_>$ _>DD  B {BG,,+-A!H2$rd"pqrpst 	 !  OOOOOO	  #''9  OOOOOO))55))66     7B*%
 ,V5H%P + +\ 460 5&j  '
(8(8*:K:K'LMj %j667i  %Z0=3LLe !.u!5i8P!Po *i 88 " #;t ;4d 
T $ $a	G a	G a	GH  $q
 q
 q
h $( ( (, $
 
 
6 $8 8 8` $q@ q@ q@x $1 1 1t $2" 2" 2"lT . $*t * *( $(4 ( (( $d  @ $t  * $W5 W5 W5t $4) 4) 4)p $   $G G G $p] p] p]l	 * $W% W% W%x $2
 2
 2
j.3?	* $;@ ;@ ;@|.0	G $; ; ;EU,s   =T