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

c                    U [         R                  [         R                  [         R                  [         R                  1;   $ r:   )r7   rv   rw   rt   ru   dks    r   is_generic_dispatch_keyr   7  s8    --::--99	  r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ r:   )r7   rz   r   r   r   r   r   r   s    r   is_cuda_dispatch_keyr   A  sJ    !!!!$$    r   c                    U [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  1;   $ r:   )r7   r   r   r   r   r   r   r   s    r   is_xpu_dispatch_keyr   M  sH        ##  r   c                    U [         ;   $ r:   )STRUCTURED_DISPATCH_KEYSr   s    r   is_structured_dispatch_keyr   Z  s    )))r   c                    U [         ;   $ r:   )UFUNC_DISPATCH_KEYSr   s    r   is_ufunc_dispatch_keyr   ^  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)
ScalarTypeig  c                    U R                   $ r:   r;   r   s    r   r   ScalarType.__str__{  r>   r   c                d    [         R                  R                  5        H  u  pX:X  d  M  Us  $    g r:   )r   rC   rD   rF   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   )rG   mb_rs     r   rJ   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   rJ   )valuesdtypesrG   s      r   	parse_setScalarType.parse_set  sS    )3\\$'E%mE23

:++E23	 (
 r   r   Nr    )rG   r   r!   zScalarType | None)rG   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   rJ   r  r'   r   r   r   r   r   g  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                   $ r:   r;   r   s    r   r   UfuncKey.__str__  r>   r   c                ~    [         R                  R                  5        H  u  pX:X  d  M  Us  $    [        SU  35      e)Nzunknown ufunc key )r'  rC   rD   rE   rF   s      r   rJ   UfuncKey.parse  s<    ((..0DAz 1 1%9::r   r   Nr    )rG   r   r!   r'  )r"   r#   r$   r%   r   CUDAFunctorCUDAFunctorOnOtherCUDAFunctorOnSelf	CPUScalar	CPUVector
ScalarOnlyGenericr   r   rJ   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   r4  r4    s    GIr   r4  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   r9  r9    s    vHv6Lr   r9  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_guardr4  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
rA  znot a str: r5  )namespaced_entity	max_levelaten)defaultrT  rC  Fz4see https://github.com/pytorch/pytorch/issues/145522rI  r+   r  r,   zillegal variant rJ  znot a bool: rK  rD  TrE  Nzillegal device_check: rO  rP  ::zbnamespace is not supported in structured delegate, using the same namespace as the native functionrQ  zbnamespace is not supported in structured inherits, using the same namespace as the native functionrG  z&functions in modules cannot be methodsrH  rR  rZ  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)kernelrO  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__)rO  ri     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 onlyrM  r-   rN  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!)rL  rU  rV  rW  rX  rY  r?  r   );copypop
isinstancer   r   from_namespaced_entityget_cpp_namespacer@  rJ   entity_namelistsetrB  	argumentsoutr  r  r)   r+   r,   rE   r4  rC   r7  OperatorName
Precomputeappendlentorchgen.apirb  dictrD   r7   stripdispatch_keysBackendMetadatar   rt   r<   keyssupports_symint
startswithendswithtensor_optionshas_tensor_argDEFAULT_KERNEL_NAMESPACErv   rw   ru   UfuncInnerLoopr'  r2  torchgen.api.ufuncapiufuncr   schema_kernel_namer   r>  ):eirL  
valid_tagsignore_keysefuncsnamespace_helperr?  rA  cpp_no_default_args_listrT  rC  
variants_srI  rI   rJ  rK  rD  device_check_srE  rO  structured_delegate_srP  rQ  rG  rH  precomputed_dictrR  tags_inprZ  trb  raw_dispatchrc  num_dispatch_keys%redundant_composite_implicit_autogradksrH   dispatch_keykernel_namespacer<   dcomposites_in_dispatchautogen_strxrM  raw_ufunc_inner_looprN  vo	ufunc_keyr  rU  rV  rW  rX  rY  backend_metadatakeys:                                                             r   	from_yamlNativeFunction.from_yamlX  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)rO  rP  r   s    r   validate_unstructured$NativeFunction.validate_unstructured  s;     ?? 	
1	
" '' 	
e	
'r   c                   U R                   R                  R                  (       a&  U R                  [        R
                  1:X  d   S5       eU R                  (       aK  U R                   R                  5       [        R                  :X  d   S5       eU R                  (       d   S5       eU R                  (       aK  U R                   R                  5       [        R                  :w  d   S5       eU R                  (       d   S5       eU R                  (       a  U R                  (       a   S5       eU R                   R                  5        Vs1 s H  oR                  c  M  UR                  iM     nn[        R                  U R                   U5      n[#        U5      S:X  d
   SU 35       eU R$                  b  U R                  (       d   S5       e['        U R                   R                  5      R)                  S	5      (       a%  U R*                  [,        R.                  :X  d   S
5       eS['        U R                   R                  5      ;   d  S['        U R                   R                  5      ;   d5  [1        S U R                   R                  R2                   5       5      (       aP  S['        U R                   R                  5      ;  a-  ['        U R                   R                  R                  5      S;  d)  U R                   R                  R5                  5       (       a5  SU R6                  ;   d$   ['        U R                   R                  5      5       eg g s  snf )NzNative functions with out arguments MUST be declared with only function variant; e.g., variants: function; otherwise you will tickle a Python argument binding bug (which usually manifests itself as the result variable being undefined.)zYPut structured field on the out= variant of a function; did you mean structured_delegate?z:device_guard: False is not respected by structured kernelszQstructured_delegate field not allowed on out= functions; did you mean structured?z?Cannot have both structured and structured_delegate on functionr   zInvalid cpp_no_default_args: z4structured_inherits must also imply structured: True_foreachzsforeach kernels fall back to slow path when tensor are on different devices, device_check not allowed to be enabledranddropoutc              3  @   #    U  H  nS UR                   ;   v   M     g7f)r  Nr;   r   args     r   r   /NativeFunction.__post_init__.<locals>.<genexpr>  s      9U#	SXX-9Us   backward)_cudnn_init_dropout_statenondeterministic_seeded)rA  ru  rv  rI  r)   r+   rO  kind
SchemaKindrD  rP  schema_order_argumentsr_  r<   rt  
differencerT  rz  rQ  r   r  rE  r4  r6  anyflat_allhas_generator_argrZ  )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                  $ r:   )rV  rX  rY  rW  r   s    r   has_composite_kernel#NativeFunction.has_composite_kernel  sO     77 J::JII

 77 JII	
r   c                   U R                   R                  n[        U5      S:  =(       a    [        S U 5       5      nSU R                  ;   =(       aK    [        U R                   R                  5      S:g  =(       a"    [        U R                   R                  5      S:g  n[        S U R                   R                  5        5       5      nU=(       d    U=(       d    U$ )Nr   c              3     #    U  H4  oR                   S L=(       a    UR                   R                  (       + v   M6     g 7fr:   
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  3  s7      
9 NN$&P3#..2P2P+PP9s   ;=)rA  returnsrz  r  rZ  r   r<   r  )r   retsis_non_mutating_viewis_inplace_viewis_wildcard_views        r   
is_view_opNativeFunction.is_view_op'  s    yy  "4y1}  
 5
LP5
 2

 dii' 4DIINN#y04DIINN#|3 	
  
yy779
 
 $JJ:JJr   c                (   U R                   (       aQ  U R                  R                  R                  R                  (       a"  SU R                  ;   d   e[
        R                  $ U R                   (       a  [
        R                  $ [
        R                  $ )Nr  )	r  rA  r<   inplacerZ  r9  r;  r:  r<  r   s    r   view_schema_kindNativeFunction.view_schema_kind9  s\    ??tyy~~22::!TYY...!222??!***!...r   c                V    U R                   R                  R                  R                  $ r:   )rA  r<   baser   s    r   	root_nameNativeFunction.root_nameC  s    yy~~""'''r   c                D    U R                   =(       d    U R                  S L$ r:   r  r   s    r   part_of_structured_group'NativeFunction.part_of_structured_groupG  s    F$":":$"FFr   r   r:   )
r  zdict[str, object]rL  r   r  rS  r  zset[DispatchKey] | Noner!   zMtuple[NativeFunction, dict[DispatchKey, dict[OperatorName, BackendMetadata]]]r!   Noner!   rB  )r!   r9  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  iL  r   N)r"   r#   r$   r%   r   
functionalr  rv  mutablescratchr'   r   r   r   r  r  L  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)NativeFunctionsGroupiZ  r>  r  NativeFunction | Noner  r  rv  c                .    U R                   R                  $ r:   )rv  rO  r   s    r   rO  NativeFunctionsGroup.structureda  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r:   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r:   r  )r   ops     r   r   r    s     )FIb#b''Ir  c              3  8   #    U  H  n[        U5      v   M     g 7fr:   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  rA  	signature	functionsrE   rO  r  rv  r<   r  r  r?  r  r  functional_overloadrV  rW  rP  sortedrZ  r   r   rt  r  rM  rz  RuntimeError)r   test_sigfgenerated_fnsgenerated_fns_strexpected_generated_fnsexpected_generated_fns_strs          r   r  "NativeFunctionsGroup.__post_init__f  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       $ r:   )rv  rA  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r:   )r  rv  r  r  r   s    r   r  NativeFunctionsGroup.functions  sE     oohh<<#,,<<#,, $s   AAc                .    U R                   R                  $ r:   )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$ )Nr5  )r  r  r  rv  )	rz  r|  rn  r  r  r  r  rv  r  )r  r  r  r  rv  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  rO  r  r  r  r  r   r  r'   r   r   r   r  r  Z  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   rh  rB  rO  ri  c                     SU R                   ;   $ )N_symint)rh  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   r<   r  supported_dtypesr'  r  c                    U R                  SS5      u  p#US   S:X  d   eUS   S:X  d   e[        5       nUSS R                  S5       H  nU[        R                  U5      -  nM     [	        X$US9$ )	N r5  r   ()r  )r<   r  r  )r  r   r   r  r  )rG   r  r<   supported_dtypes_strr  rH   s         r   rJ   UfuncInnerLoop.parse  s    %*[[a%8"#A&#---#B'3...3=<%a+11$7A
 4 4Q 77 8I
 	
r   r   N)rG   r   r  r'  r!   r  )r"   r#   r$   r%   r&   r   rJ   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  r7   r  rB  use_out_as_primaryrD  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 )rD   )parent_indexchild_indexrH   rI   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                  $ r:   )r(  rv  r  )r   gs     r   primaryBackendIndex.primary  s    ""55L<<r   c                ,    U R                  U5      nUS L$ r:   )
get_kernel)r   r3  ms      r   
has_kernelBackendIndex.has_kernel#  s    OOA}r   c                &   [        U[        5      (       a  UnO2[        U[        5      (       a  U R                  U5      nO[	        U5        WR
                  R                  U R                  ;  a  g U R                  UR
                  R                     $ r:   )ro  r>  r  r4  r
   rA  r<   r*  )r   r3  r  s      r   r7  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_name4  s'    ==$++,-_==
 r   r   N)r,  6dict[DispatchKey, dict[OperatorName, BackendMetadata]]r-  rA  r!   r  )r3  r  r!   r>  )r3  %NativeFunction | NativeFunctionsGroupr!   rB  )r3  rB  r!   zBackendMetadata | None)r!   rF  )r"   r#   r$   r%   r&   r   r0  r4  r9  r7  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@  is  rw  r<   	Argumentsru  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r:   r   )r   r  r  s     r   r   ,FunctionSchema.is_mutable.<locals>.<genexpr>  s     @(?18A;;(?r   )r  Argumentr!   rB  )r  ru  r  )r   r  s    @r   
is_mutableFunctionSchema.is_mutable}  s%    	+ @(?(?@@@r   c                    [         R                  " U R                  R                  U R                  R                  U R                  R
                  5      $ r:   )	itertoolschainru  flat_positionalflat_kwarg_onlyrv  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$ )Nr5  zInvalid function schema: r   r<   ru  r  r  )	r@  decl_refindallrz  rw  rJ   rD  parse_returnsr   )	rA  declsopsargsreturn_declr<   ru  r  r   s	            r   rJ   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r:   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r:   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r:   rf  )r   r  rets     r   r   rh    s     P<Cs~~7<ri  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r:   )typeBaseTypeBaseTyTensorr   r  s     r   r   rh    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 allr5  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: )zipru  rv  r  r  post_self_positional_mutabler  r   rs  rR  r<   r  rz  r  r  self_argargumentrm  rn  ro  rp  r  r  r  r  is_functional_fn)r   r  out_and_selfrk  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  r<   overload_namer   s    r   rw  FunctionSchema.is_functional_fn  s    tyy6666r   c                @    [        U R                  R                  5      $ r:   )rB  ru  rv  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.
rr  c              3  x   #    U  H0  nUR                   S L=(       a    UR                   R                  v   M2     g 7fr:   r  rq  s     r   r   &FunctionSchema.kind.<locals>.<genexpr>4  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!)rB  ru  rv  r<   r  r  r  post_self_positionalr  r  r  r  )r   is_outr  
is_scratch
is_inplacerM  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   r5  r  c              3  8   #    U  H  oR                   v   M     g 7fr:   r;   rq  s     r   r   6FunctionSchema.aliased_return_names.<locals>.<genexpr>b  s     )G,Q&&,r  zFound a return (z)that aliases multiple inputs (r#  )	r  ru  r  r  rz  ry  r<   r   rE   )r   outsr   r  aliased_argsaliased_namess         r   aliased_return_names#FunctionSchema.aliased_return_namesU  s    !#A 000A<< 010L 0  
 < A%D!\"a'LO001 $		)G,)G G$&qvvh.Mm_\]^   s   C,C,C,F)strip_defaultstrip_view_copy_namekeep_return_namesc          
       ^ ^ SU4S jjnT R                   R                   R                  nU(       aQ  UR                  S5      (       a  UR                  SS5      nO(UR                  S5      (       a  UR                  SS5      n[	        UU 4S j[
        R                  " T R                  R                  b!  T R                  R                  R                  /O/ T R                  R                  T R                  R                  5       5       5      n[	        [        UT R                  5      5      nXv-   nT R                  R                  US9n	[        T R                   5      S	:X  a.  [         R#                  [        U	5      R                  S
S5      5      n	[%        ['        [)        UST R                   R                   R*                  S9SS9U	US9$ )a
  
        Certain schemas are 'related', in that they are simply
        inplace/out/functional versions of the same function.  This method
        factors these schemas into the "core" functional signature which
        is equal across all versions.

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

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

        Example of a mutable op before and after:

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

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

        f.func.signature() output:
_fused_moving_avg_obs_fq_helper(Tensor self, Tensor observer_on, Tensor fake_quant_on, Tensor running_min, Tensor running_max, Tensor scale, Tensor zero_point, float averaging_const, int quant_min, int quant_max, int ch_axis, bool per_row_fake_quant=False, bool symmetric_quant=False) -> (Tensor, Tensor, Tensor, Tensor, Tensor, Tensor)  # noqa: B950
c                T   > [        T(       a  U R                  OS U R                  S S9$ )Nr<   rm  r  )Returnr<   rm  )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r:   rf  rg  s     r   r   5FunctionSchema.signature.<locals>.<genexpr>.<genexpr>  s     Kl4lri  _outr  )r  r  r  r  r  r<   rm  )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~  rV  )r   r  r!   r  )r<   r  r  replacetuplerP  rQ  ru  ru  rv  rv  r  mapr  r  r   rD  rJ   r@  rw  BaseOperatorNamer  )
r   r  r  r  r  	base_namereturns_from_mutable_inputsoriginal_returnsr  args_sigs
   `  `      r   r  FunctionSchema.signatureh  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$ )NrV  )r@  ru  r  )r   r<   s     r   	with_nameFunctionSchema.with_name  s     nnLL
 	
r   c                    U R                  5       [        R                  [        R                  [        R                  4;   $ r:   )r  r  r  rv  r  r   s    r   modifies_arguments!FunctionSchema.modifies_arguments  s*    yy{z11:>>:CUCUVVVr   c                6    U R                   R                  5       $ r:   )ru  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$ )Nr5  r   r!  r  r#  z) -> )r   ru  rz  r  r   r  r<   )r   all_arguments_strr  s      r   r   FunctionSchema.__str__  st    /t||!$,,q/*GDIIc#t||&<==CG))A/0gY??r   r   Nr  )r!   zIterator[Argument])rA  r   r!   r@  r  )r!   r  )r!   zlist[str | None])r  rB  r  rB  r  rB  r!   r@  r  )r<   rw  r!   r@  r    )r"   r#   r$   r%   r&   r  rM  r  recompilerW  r   rJ   rb  r  rw  r  r  r  r  r  r  r  r  r   r'   r   r   r   r@  r@  s  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_setrB  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 r5  rl  r-   |rf  !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  rz  r  r   )annr8  before_aliasr  r  	after_setr   s          r   rJ   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__  sT    HHT^^,	==$+QI((4#7#78$+T/):;Ir   r   N)r  r   r!   r  r    )	r"   r#   r$   r%   r&   r   rJ   r   r'   r   r   r   r  r    s-     N$$   Dr   r  c                      \ rS rSr\SS j5       r\SS j5       rSS jrSS jrSS jr	SS jr
SS jrSS	 jrSS
 jrSrg)Typei.  c                f    [         R                  U 5      n[        U5      U :X  d   U SU  35       eU$ )Nr  )r  _parser   )r  r   s     r   rJ   
Type.parse0  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^(.+)\?$r5  z^(.+)\[([0-9]+)?\]$rl  )elemsizez-^__torch__\.torch\.classes\.([a-zA-Z0-9_.]+)$zunrecognized type )r  r  OptionalTyper  rJ   r  r   ListTypeCustomClassTypern  ro  KeyErrorr  )r  r8  r  r  s       r   r  Type._parse6  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r:   NotImplementedErrorr   s    r   r   Type.__str__I      !!r   c                    [         er:   r  r   base_tys     r   is_base_ty_likeType.is_base_ty_likeQ  r  r   c                @    U R                  [        R                  5      $ r:   )r  ro  rp  r   s    r   is_tensor_likeType.is_tensor_likeT      ##FMM22r   c                @    U R                  [        R                  5      $ r:   )r  ro  	Generatorr   s    r   is_generator_likeType.is_generator_likeW  s    ##F$4$455r   c                @    U R                  [        R                  5      $ r:   )r  ro  SymIntr   s    r   is_symint_likeType.is_symint_likeZ  r  r   c                    [         er:   r  r   s    r   is_nullableType.is_nullable]  r  r   c                    [         er:   r  r   s    r   is_list_likeType.is_list_like`  r  r   r   N)r  r   r!   r  r    r  ro  r!   rB  r  r!   zListType | None)r"   r#   r$   r%   r   rJ   r  r   r  r  r  r  r  r  r'   r   r   r   r  r  .  sM     
 @ @$""363""r   r  c                  ,   \ rS rSr\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r	\" 5       r
\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       r\" 5       rSrg)ro  ie  r   N)r"   r#   r$   r%   r   r  r   rp  r   Dimname	DimVectorfloatr   rB  LayoutDeviceDeviceIndexScalarMemoryFormatQSchemeStorageStreamr  SymBoolGraphModuler'   r   r   r   ro  ro  e  s    IJVF
&CfGIFE
&C6DVFVF&KVF6LfGfGVFVFfG&Kr   ro  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
)rn  i|  ro  r<   c                0    U R                   R                    $ r:   r;   r   s    r   r   BaseType.__str__  s    ))..!"r   c                     U R                   U:H  $ r:   r;   r  s     r   r  BaseType.is_base_ty_like  s    yyG##r   c                    grH  r   r   s    r   r  BaseType.is_nullable      r   c                    g r:   r   r   s    r   r  BaseType.is_list_like      r   c                <    U R                   [        R                  :H  $ r:   )r<   ro  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   rn  rn  |  s     
L#$*r   rn  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      $ r:   r  r  r  s     r   r  OptionalType.is_base_ty_like      yy((11r   c                6    U R                   R                  5       $ r:   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       $ r:   )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rH  r   r  s     r   r  CustomClassType.is_base_ty_like  r  r   c                    grH  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 r:   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      $ r:   r   r  s     r   r  ListType.is_base_ty_like  r"  r   c                6    U R                   R                  5       $ r:   r$  r   s    r   r  ListType.is_symint_like  r&  r   c                6    U R                   R                  5       $ r:   )r  r  r   s    r   r  ListType.is_nullable  s    yy$$&&r   c                    U $ r:   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)rL  i  r   r<   r  rm  rF  r_  Annotation | Noner  c                    U R                   $ r:   rf  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  =r5  z&illegal argument with default value: 'Tensor\((.+)\)(.*)rl  r-   r  z[],unrecognized alias analysis form with Tensorrp  r<   rm  r_  r  r  )countr  rsplitr  r  r  r  rJ   r  rL  r   )r  type_and_annot_and_namer_  type_and_annotr<   name_and_defaultr  type_sr  rm  r   s              r   rJ   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                  $ r:   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rp  zTensor?zTensor[]rp  Tensor(r#  r-   rL  r   )rm  r  r  r<   r_  )r   rm  
mb_defaults      r   r   Argument.__str__*  s    ))??<<<<<<GDOO3DA*FGD99KJ|| /
V1TYYK
|44r   r   Nr!   rF  )r  r   r!   rL  r  r    r"   r#   r$   r%   r&   r  rH  r   rJ   r  r   r'   r   r   r   rL  rL    s^    
 I
J* "!  $ $L H H5r   rL  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  i8  rF  r<   r  rm  rF  r  c                    U R                   $ r:   rf  r   s    r   rH  Return.alias_info>  rJ  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   r5  rM  rl  rN  rO  rp  r  r  )	rR  r  r  r  r  rJ   r  r  r   )r  rT  r<   r  rV  r  rm  r   s           r   rJ   Return.parseB  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                  $ r:   r  r   s    r   r  Return.is_writea  rZ  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$ )Nr\  rp  r]  r#  r   )rm  r  r  r<   )r   rm  s     r   r   Return.__str__e  se    ))??<<<<<<GDOO3DA*FGD99KV1TYYK((r   r   Nr`  )r  r   r!   r  r  r    ra  r   r   r   r  r  8  sT    

J!!   < H H)r   r  c                       \ rS rSr% S\S'   Srg)SelfArgumentiq  rL  rv  r   N)r"   r#   r$   r%   r&   r'   r   r   r   rl  rl  q  s    r   rl  c                  H    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S
S jrSrg	)TensorOptionsArgumentsiy  rL  dtypelayoutdevice
pin_memoryc                ^    U R                   U R                  U R                  U R                  /$ r:   ro  rp  rq  rr  r   s    r   allTensorOptionsArguments.all  s!    

DKKdooFFr   r   Nr!   zSequence[Argument])r"   r#   r$   r%   r&   ru  r'   r   r   r   rn  rn  y  s    OGr   rn  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#)1rD  i  ztuple[Argument, ...]pre_self_positionalzSelfArgument | Noneru  r  pre_tensor_options_kwarg_onlyzTensorOptionsArguments | Noner  post_tensor_options_kwarg_onlyrv  c                v    / nUR                  U R                  5        UR                  U R                  5        U$ r:   )r   rR  rS  r   rk  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$ r:   )r   ry  ru  ry  rv  r  r}  s     r   rR  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 r:   )r  r  r   r  s     r   rt  &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$ r:   )r   rz  r  ru  r{  r}  s     r   rS  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$ r:   )r   rR  rS  rv  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$ r:   )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$ r:   )r   ry  ru  ry  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$ r:   )r   rz  r  ry  r{  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$ r:   )r   r  r  rv  r}  s     r   ru  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 r:   )r  r  r  r<   r  s     r   mutable_arg_namesArguments.mutable_arg_names  sL     ]]
"|| ,-LL,A,A AFF"
 	
 
s   AAAc                :    [        S U R                   5       5      $ )Nc              3  T   #    U  H  oR                   R                  5       v   M      g 7fr:   )rm  r  rq  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r:   )rm  r  rq  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r:   )rm  r  rq  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$ )NrP  )rL  r<   rm  r_  )r  r  s    r   strip_arg_annotation1Arguments.signature.<locals>.strip_arg_annotation  s=    VVVV)6			  =A	 r   r   ry  ru  r  rz  r  r{  rv  )r  rL  r!   rL  )
rD  r  r  ry  ru  rl  rv  r  rz  r{  )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$ )Nrf  )ru  )ru  dataclassesr  rl  rv  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   )rv  )rz  rv  r  r  r  )r   r  s     r   with_out_argsArguments.with_out_args"	  s5    488}!!!""d
 	
r   c                F   / n/ n/ nUnU R                  S5       H  nU(       d  M  US:X  a  XAL d   S5       eUnM!  [        R                  U5      nUR                  b'  UR                  R                  (       a  XAL a  OXBL a  UnOXCLd   eUR                  U5        M     XU4$ )Nr  r  z:invalid syntax: kwarg-only specifier * can only occur once)r  rL  rJ   r  r  ry  )r\  r  r  rv  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   r5  c                   ^ ^ U U4S j$ )Nc                d   > U R                   T:H  =(       a    U R                  T[        T5      4;   $ r:   )r<   rm  r  )r  r<   tys    r   <lambda>/Arguments.parse.<locals>.pred.<locals>.<lambda>s	  s(    QVVt^P2|B?O:P0PPr   r   )r<   r  s   ``r   predArguments.parse.<locals>.predr	  s	    PPr   ro  r   rp  r  rq  r  rr  rB  r   c              3  6   #    U  H  u  pU" U5      v   M     g 7fr:   r   )r   pr  s      r   r   "Arguments.parse.<locals>.<genexpr>	  s       T aDD Ts   rl  rf  rt  r  )r<   r   r  r  r!   zCallable[[Argument], bool])rD  r  	enumerater<   rl  r  rJ   rz  ru  rs  rn  ry  r  )r\  r  r  rv  self_ixir  ry  ru  r  rz  r  r{  kwarg_only_accr  
predicatess                   r   rJ   Arguments.parseM	  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   rR  rS  rv  ry  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)ru  ry  r  r{  r  r  rz  )r   r  mutable_pre_self_positionalss      r   r  Arguments.__post_init__	  s     == ////&:::: --(
-|| ,-LL,A,A - 	% (

 /0A5 	
]	
5(
s   B $B B r   Nrw  )r!   z:Sequence[Argument | SelfArgument | TensorOptionsArguments])r!   z!Sequence[Argument | SelfArgument])r!   z+Sequence[Argument | TensorOptionsArguments]r!   z	list[str]r  )r  rB  r!   rD  )r!   rD  )r  list[Argument]r!   rD  )r\  r   r!   z5tuple[list[Argument], list[Argument], list[Argument]])r\  r   r!   rD  r    r  )r"   r#   r$   r%   r&   r  r~  rR  rt  rS  r  r  r  r  ru  r  r  r  r  r  r  r  r   r  rJ   r   r  r'   r   r   r   rD  rD    sP   
 .-!!..#7711 %98 
    D D     	C       
GGJ 27 #
J

 !+ !+F M
 M
^(
r   rD  )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  rB  r  r  Fr  NzOptional[str]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^(?:(.*)::)?(.*)$r5  rl  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_NAMESrz  r  r   )r  r  r?  op_without_nsr8  r  r  functional_suffixr  r   r  s             @r   rJ   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__+
  s    48NNdnn-R0||A&'r!TYYKr:: <<  ++ #  ''		{1#66r   r   )r  r   r!   r  r    )r"   r#   r$   r%   r&   r  r?  r   rJ   r   r'   r   r   r   r  r  	  sC    
IM( !&%  $I}#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)rw  i=
  r  r<   r   r  c                    SU ;   a  U R                  SS5      u  pOU nSn[        [        R                  U5      US9n[	        U5      U :X  d   [	        U5       SU  35       eU$ )N.r5  r-   r~  r  )r  rw  r  rJ   r   )r.  r<   r  r   s       r   rJ   OperatorName.parseB
  sk    '>")--Q"7D-DM.44T:-X1v :SVHD	":: r   c                t    U R                   (       a  U R                   SU R                    3$ U R                   $ )Nr  r  r<   r   s    r   r   OperatorName.__str__M
  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_nameX
  r  r   c                    [        [        U R                  R                  SU R                  R                  S9U R
                  S9$ NFr  r~  )rw  r  r<   r  r  r  r   s    r   remove_inplaceOperatorName.remove_inplace^
  s=    !YY^^"ii55
 ,,
 	
r   c                x    [        [        U R                  R                  SU R                  R                  S9US9$ r  )rw  r  r<   r  r  )r   overloads     r   with_overloadOperatorName.with_overloadh
  s7    !YY^^"ii55
 #
 	
r   r   N)r.  r   r!   rw  r    )r!   rw  )r  r   r!   rw  )r"   r#   r$   r%   r&   r   rJ   r   r  r  r  r'   r   r   r   rw  rw  =
  s4    
 ""

r   rw  c                    U R                   R                  5       [        R                  L=(       a8    UR	                  U 5      (       + =(       a    UR	                  UR                  5      $ r:   )rA  r  r  r  r9  )r  r3  bs      r   "gets_generated_out_inplace_wrapperr   s
  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   rA  r<   get_view_copy_namer  r  r  rZ  r  rV  rW  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r:   )r  r  r  )r   r
  s     r   r  "NativeFunctionsViewGroup.functions
  sD     ii(###>>%,..  +7%s   AAc                .    U R                   R                  $ r:   )r  r  r   s    r   r  "NativeFunctionsViewGroup.root_name
  s    yy"""r   c                .    U R                   R                  $ r:   )r  rV  r   s    r   	composite"NativeFunctionsViewGroup.composite
  s     yy???r   r   Nr  )r
  rB  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  rV  rZ  rA  r<   r  r  )r  s    r   r  r  
  sV    << 	// 	vv{{%%j11r   c                   S/n[        U R                  R                  5      U;  a  [        U 5      (       d   eU R                  R                  R                  R                   S3n[        [        USU R                  R                  R                  R                  S9U R                  R                  R                  S9nU$ )Nnarrowr  Fr  r~  )	r   rA  r<   r  r  rw  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#  r5  c              3  L   #    U  H  n[         R                  U5      v   M     g 7fr:   )r  rJ   r  s     r   r    parse_returns.<locals>.<genexpr>
  s     F.Esc"".Es   "$r  )r  r  )r]  s    r   rY  rY  
  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
)rx  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"  re  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)	ro  rs  r  rL  rJ   r}  r   rx  to_list)srcadd_argsadd_listr<   r  raw_replace_itemr  with_list_raw	with_listwith_list_argsr   s              r   rJ   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 r:   )r  r<   upperr  r	  )r   r  r\  s      r   r  Precompute.__post_init__2  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r:   r  )r   params     r   r   %Precompute.to_list.<locals>.<genexpr>>  s     $P=OESZZ=Or  r  )r  rD   r   ry  )r   replace_listkernel_paramreplacement_paramsreplacementss        r   r  Precompute.to_list;  sX    040B0B0D,L99$P=O$PPL<.\N CD 1E r   r   N)r  objectr!   rx  r  r  )
r"   r#   r$   r%   r&   r   rJ   r  r  r'   r   r   r   rx  rx    s-     '&	" "H0r   rx  r    )r   r7   r!   rB  )r  r>  r3  r  r  r'  r!   rB  )r  r>  r!   rB  )r  r>  r!   rw  )r]  r   r!   rE  )s
__future__r   r  rP  r  r   enumr   r   typingr   r   r	   torchgen.utilsr
   r   r   collections.abcr   r   r   r)   r  r  r   r   AUTOGRAD_KEYSFRAGMENT_NAMESPACESr7   r   r   r   r   hasattrr   printr  r~   rz   ry   r   r   r   r   r   rW   r   r   r   r   r   r   rt   ru   rv   rw   r   r   r   r   r   r   r   r   r^   r~  r   r   r   r   r   dispatch_device_mapr   r  r&   r  r  r  r  r  r  r  r  r  r'  r4  r9  r>  r  r  r  r  r'  r@  r  r  ro  rn  r  r  r  rL  r  rl  rn  rD  r  r  rw  r   r  r  r  rY  rx  )	components   0r   <module>r>     s   "   	 !  4 4 D D 2: $* * *d  (  nssu   ((,>,,>yJ,>,  #$:; 
_>$ _>DD  B {BG,,+-A!H2$rd"pqrpst 	 !  OOOOOO	  #''9  OOOOOO))55))66     9D*%
 ,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 $; ; ;yU,s   ?T$