
    3Kin                   
   % 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
  S SKJr  S SKJrJr  \
(       a
  S SKJrJrJr  \" S	S
9 " S S5      5       r " S S\5      rSr/ SQ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SgS jr\ H<  r\ H3  r\ " \\\-   5      (       a  M  \" 5       r!\"" \!5        \#" S\ \ S\! 35      e   M>     \RH                  \RJ                  \RL                  \RN                  \RP                  1r)\RJ                  \RL                  1r*\RL                  \RV                  \RX                  \RZ                  \RJ                  \RH                  \RN                  \R\                  \R^                  \R`                  \Rb                  \Rd                  \Rf                  \Rh                  \Rj                  \Rl                  \Rn                  \Rp                  \Rr                  \Rt                  \Rv                  \Rx                  \Rz                  \R|                  \R~                  \R                  \R                  \R                  \R                  \RP                  /rDShS jrEShS jrFShS jrGShS  jrHShS! jrI\FS"\GS#0rJ " S$ S%\5      rK0 rLS&\MS''   \" \KR                  \KR                  \KR                  \KR                  \KR                  /5      \LS('   \" \KR                  \KR                  /5      \LS)'   \" \KR                  \KR                  /5      \LS*'   \LS(   \LS)   -  \LS+'   \LS+   \LS*   -  \LS,'   \LS)   \LS*   -  \LS-'    " S. S/\5      rW " S0 S1\5      rX " S2 S3\5      rY\" S	S
9 " S4 S55      5       rZ " S6 S7\5      r[\" S	S
9 " S8 S95      5       r\\" S	S
9 " S: S;5      5       r]\" S	S
9 " S< S=5      5       r^\" S	S
9 " S> S?5      5       r_\" S	S
9 " S@ SA5      5       r`\" S	S
9 " SB SC5      5       ra\" S	S
9 " SD SE5      5       rb " SF SG\5      rc\" S	S
9 " SH SI\b5      5       rd\" S	S
9 " SJ SK\b5      5       re\" S	S
9 " SL SM\b5      5       rf\" S	S
9 " SN SO\b5      5       rg\" S	S
9 " SP SQ5      5       rh\" S	S
9 " SR SS5      5       ri\" S	S
9 " ST SU5      5       rj\" S	S
9 " SV SW5      5       rk\" S	S
9 " SX SY5      5       rl/ SZQrm\" S	S
9 " S[ S\5      5       rn\" S	S
9 " S] S^5      5       ro        SiS_ jrp\" S	S
9 " S` Sa5      5       rqSjSb jrrSkSc jrsSlSd jrt\" S	S
9 " Se Sf5      5       rugs  sn f )m    )annotationsN)	dataclass)autoEnum)TYPE_CHECKING)assert_never)NamespaceHelper
OrderedSet)Callable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    P/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/torchgen/model.py__str__Location.__str__1   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)Variant6   r   N)r!   r"   r#   r$   r   functionmethodr&   r   r   r   r(   r(   6   s    vHVFr   r(   z
at::native)CPUCUDAHIPXLAMTIAMPSIPUXPUHPUVELazyMetaPrivateUse1PrivateUse2PrivateUse3) 	QuantizedSparse	SparseCsrNestedTensorAutogradAutogradNestedTensorr@   	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)
DispatchKeyd   r   c                    U R                   $ Nnamer   s    r   r   DispatchKey.__str__       yyr   c                4    [        U 5      R                  5       $ rH   )r   lowerr   s    r   rN   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 )rE   __members__itemsAssertionErrorvaluekvs      r   parseDispatchKey.parse   s<    ++113DAz 4 4UG<==r   r   Nr   )rU   r   r    rE   )r!   r"   r#   r$   	UndefinedCatchAllr   FPGAMAIAVulkanMetalMKLDNNOpenGLOpenCLIDEEPCustomRNGKeyId	MkldnnCPUr=   r>   r?   DensePythonTLSSnapshotPreDispatchPythonDispatcherPythonFuncTorchDynamicLayerBackMode
ZeroTensor	ConjugateNegativeBackendSelectNamedAutogradOtherAutogradFunctionalityrA   TracerAutocastAutocastCPUAutocastCUDABatchedVmapModeFuncTorchGradWrapperFuncTorchBatchedBatchedNestedTensorFuncTorchVmapModeFuncTorchDynamicLayerFrontModeFunctionalizeTESTING_ONLY_GenericWrapperTESTING_ONLY_GenericModeADInplaceOrViewr@   CompositeImplicitAutograd%CompositeImplicitAutogradNestedTensorCompositeExplicitAutograd&CompositeExplicitAutogradNonFunctionalFuncTorchBatchedDecompositionr,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   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   rN   staticmethodrX   r&   r   r   r   rE   rE   d   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   rE   c                  >    \ rS rSr\" 5       r\" 5       r\" 5       rSrg)_TorchDispatchModeKeyi  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;   $ rH   )rE   r   r   r   r   dks    r   is_generic_dispatch_keyr   M  s8    --::--99	  r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ rH   )rE   r-   r   r   r   r   r   r   s    r   is_cuda_dispatch_keyr   W  sJ    !!!!$$    r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ rH   )rE   r3   r   r   r   r   r   r   s    r   is_xpu_dispatch_keyr   c  sH        ##  r   c                    U [         ;   $ rH   )STRUCTURED_DISPATCH_KEYSr   s    r   is_structured_dispatch_keyr   p  s    )))r   c                    U [         ;   $ rH   )UFUNC_DISPATCH_KEYSr   s    r   is_ufunc_dispatch_keyr   t  s    $$$r   cudaxpuc                  V   \ 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SS jr\S	S j5       r\S
S j5       r\SS j5       rSrg)
ScalarTypei}  c                    U R                   $ rH   rI   r   s    r   r   ScalarType.__str__  rL   r   c                d    [         R                  R                  5        H  u  pX:X  d  M  Us  $    g rH   )r   rQ   rR   rT   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   )rU   mb_rs     r   rX   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   rX   )valuesdtypesrU   s      r   	parse_setScalarType.parse_set  sS    )3\\$'E%mE23

:++E23	 (
 r   r   Nr   )rU   r   r    zScalarType | None)rU   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_e4m3fnuzFloat8_e8m0fnur   r   r   rX   r	  r&   r   r   r   r   r   }  s    6D6DFE
&C6D6DFEVF&K6LFM6DvH&KfOFMfOVN    
  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                   $ rH   rI   r   s    r   r   UfuncKey.__str__  rL   r   c                ~    [         R                  R                  5        H  u  pX:X  d  M  Us  $    [        SU  35      e)Nzunknown ufunc key )r%  rQ   rR   rS   rT   s      r   rX   UfuncKey.parse  s<    ((..0DAz 1 1%9::r   r   Nr   )rU   r   r    r%  )r!   r"   r#   r$   r   CUDAFunctorCUDAFunctorOnOtherCUDAFunctorOnSelf	CPUScalar	CPUVector
ScalarOnlyGenericr   r   rX   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                H   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(       a"  UR                  R                  (       a   S
5       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  [0        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  [2        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R5                  S#5        [        5       nU H9  n[7        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 [<        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%RC                  5       5      n&U"S-  n"U(       a  U&U;   a  M:  U&[D        ;   d   S.U& S/U S035       e[        R
                  " US1S29nUR                  S3S9n'[G        UR                  U=(       a    [I        U&5      U'S4-   S59U!U&'   U&[@        RJ                  L d  M  UURM                  U5      :X  d  M  Sn#M     GM<     U"S:X  a  U#(       a   S65       eU(       d}  U!RO                  5       [@        RJ                  1:w  dZ  U![@        RJ                     RQ                  5       (       d4  U"S:w  d.   S7URM                  U5       S8U![@        RJ                      S935       eOU(       d  Uc  [        URL                  RL                  5      n(U(RS                  S:5      (       dP  U(RU                  S;5      (       d:  UR                  RV                  (       a*  UR                  RY                  5       (       d   S<U( S=35       e[G        URM                  U5      S	[Z        S>9U![@        RJ                  '   U! V)s/ s HW  n)U)[@        R\                  :X  d>  U)[@        R^                  :X  d*  U)[@        RJ                  :X  d  U)[@        R`                  :X  d  MU  U)PMY     n*n)[7        U*5      S::  d>  [7        U*5      S?:X  a(  [@        R^                  U*;  a  [@        R`                  U*;   d   S@5       eUR                  SASB5      n+[        U+[        5      (       d   eU+SB:X  a  / O4U+R                  S5       V,s/ s H  n,[0        R                  U,5      PM     sn,n-UR                  SC0 5      n.0 n/[        U.[        5      (       a6  [b        R                  U.[d        Rf                  5      U/[d        Rf                  '   O[        U.[<        5      (       a  U.R?                  5        Hz  u  n%n0U%S):X  a  M  [        U%[        5      (       d
   SDU% 35       e[        U0[        5      (       d
   SEW 35       e[d        R                  U%5      n1[b        R                  U0U15      U/U1'   M|     O[)        SFU. 35      eU/(       aV  U(       d   SG5       eS$SK4J5s  J6n2  [n         H5  n&U&U!;  d
   SHU& 35       e[G        U2Rq                  UU&5      S[Z        S59U!U&'   M7     U(       a  Sn3OU!RO                  5       [@        RJ                  1:g  =(       aZ    U!RO                  5       [@        R`                  1:g  =(       a1    U!RO                  5       [@        RJ                  [@        R`                  1:g  n3[@        RJ                  U!;   n4[@        R`                  U!;   n5[@        R\                  U!;   n6[@        R^                  U!;   n7U!R?                  5        V%Vs0 s H  u  n%nU%URL                  U0_M     n8n%nUR                  S)S5        U(       a
   SIU 35       eUb  [r         H  n9U9U!;  a  M   SJU9 SK35       e   [u        SS0 SU_SU_SU_SU_SU_SU_S!U_SAU-_SCU/_SU_SU_SU_S U_SU_SU_SLU_SU
_SMU3_SNU4_SOU5_SPU6_SQU7_S"U_SRU_6U84$ s  sn)f s  sn,f s  snn%f )TzX
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  Fz4see https://github.com/pytorch/pytorch/issues/145522rG  r*   r  r+   zillegal variant rH  znot a bool: rI  rB  TrC  Nzillegal device_check: rM  rN  ::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  rg     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>  rX   entity_namelistsetr@  	argumentsoutr  r  r(   r*   r+   rS   r2  rQ   r5  OperatorName
Precomputeappendlentorchgen.apir`  dictrR   rE   stripdispatch_keysBackendMetadatar   r   rJ   keyssupports_symint
startswithendswithtensor_optionshas_tensor_argDEFAULT_KERNEL_NAMESPACEr   r   r   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  rW   rH  rI  rB  device_check_srC  rM  structured_delegate_srN  rO  rE  rF  precomputed_dictrP  tags_inprX  tr`  raw_dispatchra  num_dispatch_keys%redundant_composite_implicit_autogradksrV   dispatch_keykernel_namespacerJ   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_yamln  sH    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,~~)) F) UU:z2
*c****!$!!$'AJW--.hW^^,$'7s%;<< ( &'UU+G%O"4d;; 	
567	
; UU#7?,d33X|DVCW5XX3uu^T2,--Ll^/LL-~t4%NC)H)H 	
.)*	
H "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@"*j9Lc.R.R 	
-./	
R #*d:M.M 	
?	
M
 ot4$
=#(F(F 	
-)	
F $h(F 	
4	
F EE"5t< (J7H#,N,N 	
+,-	
N 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#!"c** ,RDl^D* "!S)) .qc|n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#83 HW3 *9 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   1Ap	p"pp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  NrI   r   args     r   r   /NativeFunction.__post_init__.<locals>.<genexpr>&  s      9U#	SXX-9Us   backward)_cudnn_init_dropout_statenondeterministic_seeded)r?  rs  rt  rG  r(   r*   rM  kind
SchemaKindrB  rN  schema_order_argumentsr]  rJ   rr  
differencerR  rx  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$ ##99>>#z~~5 >5 $$ L$
 OO(@(@ 	
M	
A !II<<>
>q))FAFF> 	 
 ~~d&>&>@ST< A%U)F|n'UU%##/?? 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                  $ rH   )rT  rV  rW  rU  r   s    r   has_composite_kernel#NativeFunction.has_composite_kernel2  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rH   
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  I  s7      
9 NN$&P3#..2P2P+PP9s   ;=)r?  returnsrx  r  rX  r   rJ   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?  rJ   inplacerX  r7  r9  r8  r:  r   s    r   view_schema_kindNativeFunction.view_schema_kindO  s\    ??tyy~~22::!TYY...!222??!***!...r   c                V    U R                   R                  R                  R                  $ rH   )r?  rJ   baser   s    r   	root_nameNativeFunction.root_nameY  s    yy~~""'''r   c                D    U R                   =(       d    U R                  S L$ rH   r  r   s    r   part_of_structured_group'NativeFunction.part_of_structured_group]  s    F$":":$"FFr   r   rH   )
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	o
o
o
 o
 -	o

 
Wo
 o
b

&=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  ib  r   N)r!   r"   r#   r$   r   
functionalr  rt  mutablescratchr&   r   r   r   r  r  b  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)NativeFunctionsGroupip  r<  r  NativeFunction | Noner  r  rt  c                .    U R                   R                  $ rH   )rt  rM  r   s    r   rM  NativeFunctionsGroup.structuredw  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rH   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rH   r  )r   ops     r   r   r    s     )FIb#b''Ir  c              3  8   #    U  H  n[        U5      v   M     g 7frH   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	functionsrS   rM  r  rt  rJ   r  r  r=  r  r  functional_overloadrT  rU  rN  sortedrX  r   r   rr  r  rK  rx  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       $ rH   )rt  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rH   )r  rt  r  r  r   s    r   r  NativeFunctionsGroup.functions  sE     oohh<<#,,<<#,, $s   AAc                .    U R                   R                  $ rH   )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  rt  )	rx  rz  rl  r  r  r  r  rt  r  )r  r  r  r  rt  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  p  sd    """"	# #?B) ) ) 
 
r   r  c                  >    \ rS rSr% S\S'   S\S'   S\S'   S
S jrSrg	)r}  i  r   rf  r@  rM  rg  c                     SU R                   ;   $ )N_symint)rf  r   s    r   r  BackendMetadata.supports_symint  s    DKK''r   r   Nr  )r!   r"   r#   r$   r%   r  r&   r   r   r   r}  r}    s     K
  (r   r}  c                  H    \ rS rSr% S\S'   S\S'   S\S'   \SS j5       rS	rg
)r  i  r   rJ   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  )rJ   r  r  )r  r
   r   r	  r  )rU   r  rJ   supported_dtypes_strr  rV   s         r   rX   UfuncInnerLoop.parse  s    %*[[a%8"#A&#---#B'3...3=<%a+11$7A
 4 4Q 77 8I
 	
r   r   N)rU   r   r  r%  r    r  )r!   r"   r#   r$   r%   r   rX   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  rE   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 )rR   )parent_indexchild_indexrV   rW   op_namemetadatas         r   
grow_indexBackendIndex.grow_index'  sb    
  %%'DA%&WWY!1o5 )'2DQCH5 ,4Q(	 &/ (r   c                T    U R                   (       a  UR                  $ UR                  $ rH   )r&  rt  r  )r   gs     r   primaryBackendIndex.primary3  s    ""55L<<r   c                ,    U R                  U5      nUS L$ rH   )
get_kernel)r   r1  ms      r   
has_kernelBackendIndex.has_kernel9  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                     $ rH   )rm  r<  r  r2  r   r?  rJ   r(  )r   r1  r  s      r   r5  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_nameJ  s'    ==$++,-_==
 r   r   N)r*  6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r+  r?  r    r  )r1  r  r    r<  )r1  %NativeFunction | NativeFunctionsGroupr    r@  )r1  r@  r    zBackendMetadata | None)r    rD  )r!   r"   r#   r$   r%   r   r.  r2  r7  r5  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>  i  ru  rJ   	Argumentsrs  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_write  s    ~~%>>***r   c              3  4   >#    U  H  nT" U5      v   M     g 7frH   r   )r   r  r  s     r   r   ,FunctionSchema.is_mutable.<locals>.<genexpr>  s     @(?18A;;(?r   )r  Argumentr    r@  )r  rs  r  )r   r  s    @r   
is_mutableFunctionSchema.is_mutable  s%    	+ @(?(?@@@r   c                    [         R                  " U R                  R                  U R                  R                  U R                  R
                  5      $ rH   )	itertoolschainrs  flat_positionalflat_kwarg_onlyrt  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   rJ   rs  r  r  )	r>  decl_refindallrx  ru  rX   rB  parse_returnsr   )	r?  declsopsargsreturn_declrJ   rs  r  r   s	            r   rX   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rH   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rH   r  r   r   r  s     r   r   /FunctionSchema.__post_init__.<locals>.<genexpr>  s     NA1<<1<<7   &)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rH   rd  )r   r  rets     r   r   rf    s     P<Cs~~7<rg  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rH   )typeBaseTypeBaseTyTensorr   r  s     r   r   rf    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: )ziprs  rt  r  r  post_self_positional_mutabler  r   rq  rP  rJ   r  rx  r  r  self_argargumentrk  rl  rm  rn  r  r  r  r  is_functional_fn)r   r  out_and_selfri  mutable_returnsimmutable_returnsself_ar  s      `   @r   r  FunctionSchema.__post_init__  s   DNN..=HC>>S^^3 I3 > <<ANNNN pqtuyqzp{|N = DNN../>>993
9CXX=OC93
 

 ||
#~~ .1nn.E.E # 	 
 ||
#~~%S^^-D-D # 	 
 ?#q(C0A,Ba,G 	
ghklphqgrs	
G #CP<PPP JP #
 >> Qdnn>P>PQQQ4<<(A- I- c  $(>>#5#5#5C"xx22;? #5 &'  d ' 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 #W3



Bs6   "Q99Q9Q>'Q>Q>,R
R1$RRc                4    SU R                   R                  ;   $ )Nr  rJ   overload_namer   s    r   ru  FunctionSchema.is_functional_fn  s    tyy6666r   c                @    [        U R                  R                  5      $ rH   )r@  rs  rt  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.
rp  c              3  x   #    U  H0  nUR                   S L=(       a    UR                   R                  v   M2     g 7frH   r  ro  s     r   r   &FunctionSchema.kind.<locals>.<genexpr>J  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@  rs  rt  rJ   r  r  r  post_self_positionalr  r  r  r  )r   is_outr  
is_scratch
is_inplacerK  s         r   r  FunctionSchema.kind>  s    dnn(() NN..S.S((2E2Ek2RS.S

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

 z** %%% X6 %%%! |> >>!%%%(((= 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rH   rI   ro  s     r   r   6FunctionSchema.aliased_return_names.<locals>.<genexpr>x  s     )G,Q&&,r  zFound a return (z)that aliases multiple inputs (r!  )	r  rs  r  r  rx  rw  rJ   r   rS   )r   outsr   r  aliased_argsaliased_namess         r   aliased_return_names#FunctionSchema.aliased_return_namesk  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rJ   rk  r  )ReturnrJ   rk  )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rH   rd  re  s     r   r   5FunctionSchema.signature.<locals>.<genexpr>.<genexpr>  s     Kl4lrg  _outr  )r  r  r  r  r  rJ   rk  )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|  rT  )r   r  r    r  )rJ   r  r  replacetuplerN  rO  rs  rs  rt  rt  r  mapr  r   r   rB  rX   r>  ru  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	 ', ,
 __
 ~~..: ^^,,556""33
,
 '
#0 !%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$ )NrT  )r>  rs  r  )r   rJ   s     r   	with_nameFunctionSchema.with_name  s     nnLL
 	
r   c                    U R                  5       [        R                  [        R                  [        R                  4;   $ rH   )r  r  r  rt  r  r   s    r   modifies_arguments!FunctionSchema.modifies_arguments  s*    yy{z11:>>:CUCUVVVr   c                6    U R                   R                  5       $ rH   )rs  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   rs  rx  r  r   r  rJ   )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  )rJ   ru  r    r>  r   )r!   r"   r#   r$   r%   r  rK  r  recompilerU  r   rX   r`  r  ru  r  r  r  r   r  r  r  r  r   r&   r   r   r   r>  r>    s       A A
 jjOPG
 

`D7(:')Z, $%*"'g
 g
 #	g

  g
 
g
R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  rj  r;   |rd  !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  rx  r  r   )annr6  before_aliasr  r  	after_setr   s          r   rX   Annotation.parse  s:     HHJCP}D >seDD}wwqz1771::QWWQZ2F,,,S12	771:$Y!!3 	
:3%yI	
4 56GGAJJE!''!***3/0B	%)c)nq.@ 	
abeaffop	
A 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__4  sT    HHT^^,	==$+QI((4#7#78$+T/):;Ir   r   N)r  r   r    r  r   )	r!   r"   r#   r$   r%   r   rX   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)TypeiD  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   rX   
Type.parseF  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]+)?\]$rj  )elemsizez-^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$zunrecognized type )r  r  OptionalTyper  rX   r  r   ListTypeCustomClassTyperl  rm  KeyErrorr  )r  r6  r  r  s       r   r  Type._parseL  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rH   NotImplementedErrorr   s    r   r   Type.__str___      !!r   c                    [         erH   r  r   base_tys     r   is_base_ty_likeType.is_base_ty_likeg  r  r   c                @    U R                  [        R                  5      $ rH   )r  rm  rn  r   s    r   is_tensor_likeType.is_tensor_likej      ##FMM22r   c                @    U R                  [        R                  5      $ rH   )r  rm  	Generatorr   s    r   is_generator_likeType.is_generator_likem  s    ##F$4$455r   c                @    U R                  [        R                  5      $ rH   )r  rm  SymIntr   s    r   is_symint_likeType.is_symint_likep  r  r   c                    [         erH   r  r   s    r   is_nullableType.is_nullables  r  r   c                    [         erH   r  r   s    r   is_list_likeType.is_list_likev  r  r   r   N)r  r   r    r  r   r  rm  r    r@  r  r    zListType | None)r!   r"   r#   r$   r   rX   r  r   r  r  r  r  r  r  r&   r   r   r   r  r  D  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)rm  i{  r   N)r!   r"   r#   r$   r   r  r   rn  r   Dimname	DimVectorfloatr   r@  LayoutDeviceDeviceIndexScalarMemoryFormatQSchemeStorageStreamr  SymBoolGraphModuler&   r   r   r   rm  rm  {  s    IJVF
&CfGIFE
&C6DVFVF&KVF6LfGfGVFVFfG&Kr   rm  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
)rl  i  rm  rJ   c                0    U R                   R                    $ rH   rI   r   s    r   r   BaseType.__str__  s    ))..!"r   c                     U R                   U:H  $ rH   rI   r  s     r   r  BaseType.is_base_ty_like  s    yyG##r   c                    grF  r   r   s    r   r  BaseType.is_nullable      r   c                    g rH   r   r   s    r   r  BaseType.is_list_like      r   c                <    U R                   [        R                  :H  $ rH   )rJ   rm  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   rl  rl    s     
L#$*r   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
)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      $ rH   r  r  r  s     r   r  OptionalType.is_base_ty_like      yy((11r   c                6    U R                   R                  5       $ rH   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       $ rH   )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rF  r   r  s     r   r  CustomClassType.is_base_ty_like  r  r   c                    grF  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 rH   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      $ rH   r  r  s     r   r  ListType.is_base_ty_like  r   r   c                6    U R                   R                  5       $ rH   r"  r   s    r   r  ListType.is_symint_like  r$  r   c                6    U R                   R                  5       $ rH   )r  r  r   s    r   r  ListType.is_nullable  s    yy$$&&r   c                    U $ rH   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)rJ  i  r   rJ   r  rk  rD  r]  Annotation | Noner  c                    U R                   $ rH   rd  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\((.+)\)(.*)rj  r;   r  z[],unrecognized alias analysis form with Tensorrn  rJ   rk  r]  r  r  )countr  rsplitr  r  r  r  rX   r  rJ  r   )r  type_and_annot_and_namer]  type_and_annotrJ   name_and_defaultr  type_sr  rk  r   s              r   rX   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                  $ rH   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rn  zTensor?zTensor[]rn  Tensor(r!  r;   rJ  r  )rk  r  r  rJ   r]  )r   rk  
mb_defaults      r   r   Argument.__str__@  s    ))??<<<<<<GDOO3DA*FGD99KJ|| /
V1TYYK
|44r   r   Nr    rD  )r  r   r    rJ  r  r   r!   r"   r#   r$   r%   r  rF  r   rX   r  r   r&   r   r   r   rJ  rJ    s^    
 I
J* "!  $ $L H H5r   rJ  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  iN  rD  rJ   r  rk  rD  r  c                    U R                   $ rH   rd  r   s    r   rF  Return.alias_infoT  rH  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  rK  rj  rL  rM  rn  r  r  )	rP  r  r  r  r  rX   r  r  r   )r  rR  rJ   r  rT  r  rk  r   s           r   rX   Return.parseX  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                  $ rH   r  r   s    r   r  Return.is_writew  rX  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$ )NrZ  rn  r[  r!  r  )rk  r  r  rJ   )r   rk  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  N  sT    

J!!   < H H)r   r  c                       \ rS rSr% S\S'   Srg)SelfArgumenti  rJ  rt  r   N)r!   r"   r#   r$   r%   r&   r   r   r   rj  rj    s    r   rj  c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S
S jrSrg	)TensorOptionsArgumentsi  rJ  dtypelayoutdevice
pin_memoryc                ^    U R                   U R                  U R                  U R                  /$ rH   rm  rn  ro  rp  r   s    r   allTensorOptionsArguments.all  s!    

DKKdooFFr   r   Nr    zSequence[Argument])r!   r"   r#   r$   r%   rs  r&   r   r   r   rl  rl    s    OGr   rl  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#)1rB  i  ztuple[Argument, ...]pre_self_positionalzSelfArgument | Noners  r  pre_tensor_options_kwarg_onlyzTensorOptionsArguments | Noner  post_tensor_options_kwarg_onlyrt  c                v    / nUR                  U R                  5        UR                  U R                  5        U$ rH   )r   rP  rQ  r   ri  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$ rH   )r   rw  rs  rw  rt  r  r{  s     r   rP  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 rH   )r  r  r   r  s     r   rr  &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$ rH   )r   rx  r  rs  ry  r{  s     r   rQ  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$ rH   )r   rP  rQ  rt  r{  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$ rH   )r   
positional
kwarg_onlyr{  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$ rH   )r   rw  rs  rw  r  r{  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$ rH   )r   rx  r  rw  ry  r{  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$ rH   )r   r  r  rt  r{  s     r   rs  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 rH   )r  r  r  rJ   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rH   )rk  r  ro  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rH   )rk  r  ro  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rH   )rk  r  ro  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$ )NrN  )rJ  rJ   rk  r]  )r  r  s    r   strip_arg_annotation1Arguments.signature.<locals>.strip_arg_annotation	  s=    VVVV)6			  =A	 r   r   rw  rs  r  rx  r  ry  rt  )r  rJ  r    rJ  )
rB  r  r  rw  rs  rj  rt  r  rx  ry  )r   r  r  s    ` r   r   Arguments.signature
	  s    	  %(*B*BC!
 ==, 1$--2H2HIJ!&(*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$ )Nrd  )rs  )rs  dataclassesr  rj  rt  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   )rt  )rx  rt  r  r  r  )r   r  s     r   with_out_argsArguments.with_out_args8	  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  rJ  rX   r  r  rw  )rZ  r  r  rt  arguments_accr  pargs          r   	_preparseArguments._preparse?	  s    %'
%'
 " ::d#Ccz$2 P2 !+>>#&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;   $ rH   )rJ   rk  r  )r  rJ   tys    r   <lambda>/Arguments.parse.<locals>.pred.<locals>.<lambda>	  s(    QVVt^P2|B?O:P0PPr   r   )rJ   r  s   ``r   predArguments.parse.<locals>.pred	  s	    PPr   rm  r   rn  r  ro  r  rp  r@  r   c              3  6   #    U  H  u  pU" U5      v   M     g 7frH   r   )r   pr  s      r   r   "Arguments.parse.<locals>.<genexpr>	  s       T aDD Ts   rj  rd  rr  r  )rJ   r   r  r  r    zCallable[[Argument], bool])rB  r  	enumeraterJ   rj  r  rX   rx  rs  rq  rl  rw  r  )rZ  r  r  rt  self_ixir  rw  rs  r  rx  r  ry  kwarg_only_accr  
predicatess                   r   rX   Arguments.parsec	  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   rP  rQ  rt  rw  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)rs  rw  r  ry  r  r  rx  )r   r  mutable_pre_self_positionalss      r   r  Arguments.__post_init__	  s     == ////&:::: --(
-|| ,-LL,A,A - 	% (

 /0A5 	
]	
5(
s   B $B B r   Nru  )r    z:Sequence[Argument | SelfArgument | TensorOptionsArguments])r    z!Sequence[Argument | SelfArgument])r    z+Sequence[Argument | TensorOptionsArguments]r    z	list[str]r  )r  r@  r    rB  )r    rB  )r  list[Argument]r    rB  )rZ  r   r    z5tuple[list[Argument], list[Argument], list[Argument]])rZ  r   r    rB  r   r  )r!   r"   r#   r$   r%   r  r|  rP  rr  rQ  r  r  r  r  rs  r  r  r  r  r   r  r  r   r  rX   r   r  r&   r   r   r   rB  rB    sP   
 .-!!..#7711 %98 
    D D     	C       
GGJ 27 #
J

 !+ !+F M
 M
^(
r   rB  )r  submuldivmodpowlshiftrshiftandxororc                  n    \ rS rSr% S\S'   S\S'   S\S'   Sr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  NrD  r=  c                  ^
 U S:w  d   eU R                  S5      (       a   S5       e[        R                  " SU 5      nU(       a  UR                  S5      OSnU(       a  UR                  S5      OU n[        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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^(?:(.*)::)?(.*)$r3  rj  z^__([^_]+)__$Tc              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  r  AUGMENTED_ASSIGNMENT_NAMESrx  r  r   )r  r  r=  op_without_nsr6  r  r  functional_suffixr  r   r  s             @r   rX   BaseOperatorName.parse
  s}   Rxx;;v&& 	
D	
& -r2&+EKKN	*/ARHH%}5= 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                    S3OSnU R                  (       a)  U R                  (       a  SOSnU SU U R                   S3$ U R                  (       a  SOU R                  (       a  SOSnU U R                   U 3$ )Nr^  r;   r  __r  r  )r=  r  r  r  r  )r   namespace_prefixr  s      r   r   BaseOperatorName.__str__A
  s    48NNdnn-R0||A&'r!TYYKr:: <<  ++ #  ''		{1#66r   r   )r  r   r    r  r   )r!   r"   r#   r$   r%   r  r=  r   rX   r   r&   r   r   r   r  r  	  sC    
IM( !&% !Iz 6 6p7r   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)ru  iS
  r  rJ   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  ru  r  rX   r   )r,  rJ   r}  r   s       r   rX   OperatorName.parseX
  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}  rJ   r   s    r   r   OperatorName.__str__c
  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_namen
  r  r   c                    [        [        U R                  R                  SU R                  R                  S9U R
                  S9$ NFr  r|  )ru  r  rJ   r  r  r}  r   s    r   remove_inplaceOperatorName.remove_inplacet
  s=    !YY^^"ii55
 ,,
 	
r   c                x    [        [        U R                  R                  SU R                  R                  S9US9$ r  )ru  r  rJ   r  r  )r   overloads     r   with_overloadOperatorName.with_overload~
  s7    !YY^^"ii55
 #
 	
r   r   N)r,  r   r    ru  r   )r    ru  )r  r   r    ru  )r!   r"   r#   r$   r%   r   rX   r   r  r  r  r&   r   r   r   ru  ru  S
  s4    
 ""

r   ru  c                    U R                   R                  5       [        R                  L=(       a8    UR	                  U 5      (       + =(       a    UR	                  UR                  5      $ rH   )r?  r  r  r  r7  )r  r1  bs      r   "gets_generated_out_inplace_wrapperr  
  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)NativeFunctionsViewGroupi
  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?  rJ   get_view_copy_namer  r  r   rX  r  rT  rU  r   s    r   r  &NativeFunctionsViewGroup.__post_init__
  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rH   )r  r  r  )r   r  s     r   r  "NativeFunctionsViewGroup.functions
  sD     ii(###>>%,..  +7%s   AAc                .    U R                   R                  $ rH   )r  r  r   s    r   r  "NativeFunctionsViewGroup.root_name
  s    yy"""r   c                .    U R                   R                  $ rH   )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   
  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?  rJ   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?  rJ   r  r  ru  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rH   )r  rX   r  s     r   r    parse_returns.<locals>.<genexpr>  s     F.Esc"".Es   "$r  )r  r  )r[  s    r   rW  rW    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
)rv  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   rc  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)	rm  rq  r  rJ  rX   r{  r   rv  to_list)srcadd_argsadd_listrJ   r  raw_replace_itemr  with_list_raw	with_listwith_list_argsr   s              r   rX   Precompute.parse#  sO   #t$$$$ R 2w}}S)HAIJtzz|4HJcr(C #.4444-- 5-
 "2!7!7!?Cc> -cU2N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 rH   )r  rJ   upperr  r  )r   r  rZ  s      r   r  Precompute.__post_init__H  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rH   r  )r   params     r   r   %Precompute.to_list.<locals>.<genexpr>T  s     $P=OESZZ=Or  r  )r  rR   r   rw  )r   replace_listkernel_paramreplacement_paramsreplacementss        r   r  Precompute.to_listQ  sX    040B0B0D,L99$P=O$PPL<.\N CD 1E r   r   N)r  objectr    rv  r  r  )
r!   r"   r#   r$   r%   r   rX   r  r  r&   r   r   r   rv  rv    s-     '&	" "H0r   rv  r   )r   rE   r    r@  )r  r<  r1  r  r  r%  r    r@  )r  r<  r    r@  )r  r<  r    ru  )r[  r   r    rC  )v
__future__r   r  rN  r  r   enumr   r   typingr   typing_extensionsr   torchgen.utilsr	   r
   collections.abcr   r   r   r   r(   r  r   r   AUTOGRAD_KEYSFRAGMENT_NAMESPACESrE   r   r   r   r   hasattrr   printr  r1   r-   r,   r3   r0   r   r   r   r   re   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r   r   r   r   rl   r|  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  r}  r  r%  r>  r  r  rm  rl  r  r  r  rJ  r  rj  rl  rB  r  r  ru  r  r   r  r  rW  rv  )	components   0r   <module>r=     s   "   	 !    * 6 <<: $* * *d  (  "  ((,>,,>yJ,>,  #$:; 
_>$ _>DD  B {BG,,+-A!H2$rd"pqrpst 	 !  OOOOOO  #''9  OOOOOO))55))66     A!L*%
 ,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 $ $f	G f	G f	GR  $q
 q
 q
h $( ( (, $
 
 
6 $8 8 8` $t@ t@ t@~ $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 $r
 r
 r
p	 * $e7 e7 e7T $2
 2
 2
j.3?	* $;@ ;@ ;@|.0	G $; ; ;CV,s   5U