o
    8} i]                     @  s  d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlm	Z	 d dl
mZmZ d dlmZ d dlmZmZmZ d dlmZmZmZ d d	lmZmZ d d
lmZmZmZ d dlmZ e	rdd dl m!Z! 	 	dJdKddZ"dZ#de# dZ$dZ%de% de% dZ&de& de& dZ'g d Z(d!Z)d"Z*d#Z+e)e* e+ Z,d$Z-d%Z.e-e. Z/d&Z0d'Z1e,e/ e0 e1 Z2dLd+d,Z3dMd/d0Z4dNd4d5Z5dOd9d:Z6	 dPd<d=Z7dQd@dAZ8dRdEdFZ9dSdGdHZ:e;dIkre:  dS dS )T    )annotationsN)pformat)TYPE_CHECKING)Mockpatch)warn)group_overloadsload_signaturesshould_generate_py_binding)PythonSignatureGroup!PythonSignatureNativeFunctionPairreturns_structseq_pyi)parse_native_yamlparse_tags_yaml)_TorchDispatchModeKeyDispatchKeyVariant)FileManager)SequenceFpython_funcs+Sequence[PythonSignatureNativeFunctionPair]methodboolreturnSequence[PythonSignatureGroup]c                   s6   ddd}ddd}|r|n| t  fd	d
| D S )z
    Get declarations (grouped by name) which should be generated
    as either functions in the "torch" module or methods on Tensor.
    python_funcr   r   r   c                 S  s"   t | jo| jj otj| jjv S N)r
   functionpython_moduler   variantsr    r!   3/home/app/PyTorch/test/pytorch/tools/pyi/gen_pyi.pyshould_bind_functionB   
   
z4get_py_torch_functions.<locals>.should_bind_functionc                 S  s"   t | jo| jj otj| jjv S r   )r
   r   r   r   r   r   r    r!   r!   r"   should_bind_methodI   r$   z2get_py_torch_functions.<locals>.should_bind_methodc                   s   g | ]} |r|qS r!   r!   ).0fZshould_bindr!   r"   
<listcomp>Q       z*get_py_torch_functions.<locals>.<listcomp>N)r   r   r   r   )r   )r   r   r#   r%   r!   r(   r"   get_py_torch_functions9   s   
	
r+   'device: Optional[DeviceLikeType] = Nonez dtype: Optional[_dtype] = None, z9, requires_grad: _bool = False, pin_memory: _bool = Falsez1Union[None, _bool, _int, slice, ellipsis, Tensor]zUnion[SupportsIndex, z, _NestedSequence[z]]zindices: Union[z, tuple[z, ...]]),__init_subclass____new____subclasshook__ZcdistZdeviceZgradZrequires_gradrangeZeinsumZbroadcast_tensorsZalign_tensorsZmeshgridZcartesian_prodZ
block_diagZnormZchain_matmulZstftZ	tensordotsplitZunique_consecutiveZ
atleast_1dZ
atleast_2dZ
atleast_3daddZadd_Zadd_outsubZsub_Zsub_outmulZmul_Zmul_outdivdiv_Zdiv_outtrue_divideZtrue_divide_Ztrue_divide_outfloor_divideZfloor_divide_Zfloor_divide_outtoZ_to_copycopy_)lshiftrshiftilshiftirshift)r2   r3   r4   r5   powmodtruedivmatmulfloordivZraddZrsubZrmulZrtruedivZ	rfloordivrpowiaddZidivimulisub	ifloordivimod)	andorxorZrandZrorZrxoriandiorixor)eqne)gegtltle)negabsinvert)r   floatcomplexlongindexintnonzeroopnamestr	list[str]c                 C  s(  |  dr
| dsJ d|  | dd }|dkr"d|  dgS |tv r-d|  dgS |tv r8d|  d	gS |tv rCd|  d
gS |tv rSd|  dd|  dgS |tv r^d|  dgS |tv rid|  dgS |tv r|dv rt|}n	|dkr{d}nd}|dv rd| }d|  d| dgS t	d| )zlsig_for_ops(opname : str) -> list[str]

    Returns signatures for operator special functions (__add__ etc.)__zUnexpected op    rD   def zV(self, other: Union[Tensor, Number, _complex]) -> Tensor: ... # type: ignore[has-type]z=(self, other: Union[Tensor, Number, _complex]) -> Tensor: ...z2(self, other: Union[Tensor, _bool]) -> Tensor: ...z1(self, other: Union[Tensor, _int]) -> Tensor: ...zW(self, other: Union[Tensor, Number, _complex]) -> Tensor: ...  # type: ignore[override]z (self, other: Any) -> _bool: ...(self) -> Tensor: ...>   rY   r   rZ   r^   r   r]   >   rY   r]   r   rZ   z	builtins.z
(self) -> z: ...z
unknown op)
endswith
startswitharithmetic_ops	logic_ops	shift_opssymmetric_comparison_opsasymmetric_comparison_ops	unary_opsto_py_type_ops	Exception)r_   nameZtnamer!   r!   r"   sig_for_ops   s>   "





rr   	sig_groupr   c                 C  s   g }| j jtv r| j js|S | j jr#| jd ur#| j jdd}|| | j j| jd u d}|| | j j| jd u d}|rC|| |S )NT)Zskip_outputs)	signaturerq   	blocklist
deprecatedZoutplaceZsignature_str_pyiappendZsignature_str_pyi_vararg)rs   Z
type_hintsZ	type_hintZtype_hint_varargr!   r!   r"   generate_type_hints  s    


rx   rq   arg_listdict[str, list[str]]c                 C  s   | d}dd |d |d  D dg ||d d   }| }||d d}| |j| d|d	jd
dd|j| d|d	jddd|j| d|d	jdddgiS )N{return_indices}c                 S  s&   g | ]}d  dd |d D qS ), c                 s  s    | ]
}| d d V  qdS ) = r   N)r1   )r&   Z
single_argr!   r!   r"   	<genexpr>?  s    z3get_max_pool_dispatch.<locals>.<listcomp>.<genexpr>)joinr1   )r&   argr!   r!   r"   r)   >  s    z)get_max_pool_dispatch.<locals>.<listcomp>   /*z*def {name}({args}) -> {{return_type}}: ...r|   )rq   argsz&return_indices: Literal[False] = FalseZTensor)Zreturn_indicesZreturn_typezreturn_indices: Literal[True]tuple[Tensor, Tensor])r\   copyinsertformatr   )rq   ry   Zflag_posZarg_list_positionalZarg_list_keywordZtmplr!   r!   r"   get_max_pool_dispatch:  s6   
	r   fmr   Nonec                   s  d}d}d ddg}i }dD ]N}|d| dd	| d
d | | | dddggd| dd| dd | | ddgdgd| dd| dd | dgdgi q|dd g dgdd g dgdgdd g dgdd ddg dgd gd!gd"d g d#gd$gd%d g d& dgd'd g d(gd)d g d*gd+gd,d g d-gd. g  t| D ]\}}t|d/krd0d1 |D } |7  qg d2}d3d1 |D g d4}	d5d1 |	D 7 d6 i }
d7D ]9}|
jdGi td8| d| | | d9dd:gtd| d| | d;d<d:d=gtd| d| dd:g q	|
d>= g t|
 D ]\}}t|d/kr`d?d1 |D }|7 qN| d@dAfdBdC | dDdE fdFdC d S )HNinput: Tensorzkernel_size: Union[_int, _size]r|   z+stride: Optional[Union[_int, _size]] = Nonezpadding: Union[_int, _size] = 0)rc      Zavg_pooldzdef avg_poolzd({}) -> Tensor: ...zceil_mode: bool = Falsezcount_include_pad: bool = Truez&divisor_override: Optional[int] = NoneZfractional_max_poolzdef fractional_max_poolzd({}) -> {}: ...zoutput_size: Union[_int, _size]z_random_samples: Tensorr   Zadaptive_max_poolzdef adaptive_max_poolzdef hardtanh({}) -> Tensor: ...)r   min_val: float = ...max_val: float = ...r   out: Optional[Tensor] = Nonez def hardtanh_({}) -> Tensor: ...)r   r   r   z:def elu_(input: Tensor, alpha: float = ...) -> Tensor: ...z!def leaky_relu({}) -> Tensor: ...)r   negative_slope: float = ...r   r   zdef leaky_relu_(r   ) -> Tensor: ...z-def log_sigmoid(input: Tensor) -> Tensor: ...z>def gelu(input: Tensor, approximate: str = ...) -> Tensor: ...zdef softplus({}) -> Tensor: ...)r   zbeta: float = ...zthreshold: float = ...z@def softshrink(input: Tensor, lambd: float = ...) -> Tensor: ...zdef hardsigmoid()r   r   r   zdef linear({}) -> Tensor: ...)r   zweight: Tensorzbias: Optional[Tensor] = Nonezdef pad({}) -> Tensor: ...)r   zpad: Sequence[int]zmode: str = ...zvalue: Optional[float] = NonezBdef one_hot(tensor: Tensor, num_classes: int = ...) -> Tensor: ...z3def scaled_dot_product_attention({}) -> Tensor: ...)zquery: Tensorzkey: Tensorzvalue: Tensorz"attn_mask: Optional[Tensor] = Nonezdropout_p: float = 0.0zis_causal: bool = Falsezscale: Optional[float] = Nonezenable_gqa: bool = False)Zhardtanh	hardtanh_elu_Z
leaky_reluleaky_relu_Zlog_sigmoidgelusoftplus
softshrinkZhardsigmoidlinearpadone_hotscaled_dot_product_attentionr   c                 S     g | ]}d | qS z
@overload
r!   r&   hr!   r!   r"   r)         z%gen_nn_functional.<locals>.<listcomp>)Zconv1dZconv2dZconv3dZconv_transpose1dZconv_transpose2dZconv_transpose3dZconv_tbcZ
avg_pool1dZadaptive_avg_pool1dZrelu_Zselu_Zcelu_ZpreluZrrelu_Z
hardshrinkZbilinearZpixel_shuffleZpixel_unshuffleZchannel_shuffleZnative_channel_shuffleZpairwise_distanceZpdistZcosine_similarityc                 S     g | ]
}d | d| qS )zfrom torch import  as r!   r&   _r!   r!   r"   r)         )Z
avg_pool2dZ
avg_pool3dr   r   r   r   r   r   r   r   r   r   c                 S  r   )zfrom torch._C._nn import r   r!   r   r!   r!   r"   r)   '  r   z=from torch._C._nn import log_sigmoid
logsigmoid = log_sigmoid)r   rc   r   Zmax_poolz dilation: Union[_int, _size] = 1r{   z0output_size: Optional[Union[_int, _size]] = Nonez+output_ratio: Optional[_ratio_any_t] = Nonez(_random_samples: Optional[Tensor] = NoneZfractional_max_pool1dc                 S  r   r   r!   r   r!   r!   r"   r)   T  r   ztorch/nn/functional.pyiztorch/nn/functional.pyi.inc                     s
    dS )N)imported_hintsdispatched_hintsr!   r!   )r   r   r!   r"   <lambda>Z  s   z#gen_nn_functional.<locals>.<lambda>ztorch/_C/_nn.pyiztorch/_C/_nn.pyi.inc                     s   d iS )Nc_nn_function_hintsr!   r!   )r   r!   r"   r   b  s   r!   )	r   updater   sorteditemslenrw   r   write_with_template)r   ZINPUTZKERNEL_SIZEZSTRIDE_PADDINGZunsorted_c_nn_function_hintsr   r   hintsZtorch_importsZc_nn_importsZunsorted_dispatched_hintsr!   )r   r   r   r"   gen_nn_functional[  s:  


&f






r   dict[str, str]c               
     s   i  d fdd} t tj\ t td	tjd
g 8 td
dtjd
< t| dtjd< ztdtjd< tdtjd< W n t	yK   t
d Y nw W d    n1 sVw   Y  W d     S W d     S 1 snw   Y   S )Nfuncr   docstrr`   r   r   c                   s   |   |  < d S r   )stripZ_extract_mock_name)r   r   docstrsr!   r"   mock_add_docstrs  s   z'gather_docstrs.<locals>.mock_add_docstrpathZtorchrq   )Z_add_docstrztorch._CZ_torch_docsztorch._torch_docsZ_tensor_docsztorch._tensor_docszKFailed to import _torch_docs/_tensor_docs, skipping docstring in pyi files.)r   r   r   r`   r   r   )r   dictsysmodulesobjectr   r   	importlibimport_moduleModuleNotFoundErrorr   )r   r!   r   r"   gather_docstrsp  s(   &(r   r   hintc                 C  s^   d|v r'| dsJ d| d|d d }d|dg| d ddg S | d	|  d
S )Nz...zHint `z` does not end with '...'z
    zr"""
z"""z
r"""z"""
)rg   r   r1   )r   r   r!   r!   r"   add_docstr_to_hint  s
    r   native_yaml_pathtags_yaml_pathdeprecated_yaml_pathc           )        st  i }t t}dD ]*\}}}|d| dd| dd| d| ddd	d
ddddg	gi q	|i ddgddgdddg dgddgdddg dgddgdddddtggd d!gd"d#gd$d%gd&d'gd(d)gd*d+t d,gd-d.dg d/gd0d1dg d2gd3d4gd5d6gi d7d8gd9d:gd;d<gd=d>gd?d@gdAdBgdCdDgdEdFgdGdHgdIdJgdKdLgdMdNgdOdPgdQdRgdSdTgdUdVgdWdXgdYgdZdd[d\d]d
d^tggd_dd[d\d`d
d^tgd_dd[d\d
d^tgd_dd\d
d^tggdadd[d\dbd
d^tggdcdd[d\dbddd
d^tggdeddfdgdhd
ditgdeddgdhd
ditggdjddhdkd
d^dltgdjddhdkd
dmdltggdngdogdpdqgdrgdsgdtdg dugdvgdwdg dxgdy dzD ]}	||	 d{|	 d| qd}D ]}	||	 d{|	 d~ qdD ]}	||	 d{|	 d qt	| |j
}
ttt|
}
t|
|ddd}t|}t|dd dD ]8}|jj}||  t|7  < t|j}|dur&|jjs&|\}}||v r"|| |ks J q|||< qdAddt }g }t| D ]6\}}fdd|D }t|dkrTdd |D }|d|   durj fdd|D }||7 }q9t t}|i dddgdddgddt d,gddt d,gddgddt ddddt dgddt ddddt dgddgdddg dgddgddt d,gddt dgddgddgddgddgddgi dddgddgddgddgddʠdg dˢgdd͠dg dˢgddgddgddgddgddgddgddgdddgddgddgddgi ddgddgddgddgddgddgddgddgddgddgddgddgddgdd gddgddgddgdgdd d	D d
gdgddgddgdgdgd dzD ]'}	dD ] }d}|r|	d7 }	d}||	 d{|	 d| d, qqd}D ]'}	dD ] }d}|r|	d7 }	d}||	 d{|	 d| d, qqdD ]'}	dD ] }d}|r#|	d7 }	d}||	 d{|	 d| d, qqg d}|D ]}|| d{| d q=t|
|dddd}t|dd}t|dd dD ]8}|jj}||  t|7  < t|j}|dur|jjs|\}}||v r|| |ksJ qg|||< qgtD ]}d | d }||  t|7  < qg }t| D ]0\}}t|dkrӐd!d |D }|d"|   dur fd#d|D }||7 }qd$d | D }d%g}g }d&D ]} |d'|  d( qd)d d*D }!d+d | D }"tt| |" }#t|#d,dd-d.}$d/|$d0  |$d0< d1d t D }%d2d t!D }&tt"|}'d.d3d4 t#|'D }(||||||!|%|&|$|(d5
|$d6d7fd8d |$d9d:fd;d |$d<d:fd=d |$d>d?fd@d t%| dS (B  zAgen_pyi()

    This function generates a pyi file for torch.
    ))Zcsrcrowcol)Zcscccolrow)Zbsrr   r   )Zbscr   r   Zsparse_Z_tensorzdef sparse_z_tensor({}) -> Tensor: ...r|   z_indices: Union[Tensor, list]values: Union[Tensor, list]size: Optional[_size] = Noner   dtype: Optional[_dtype] = Noner,   requires_grad: _bool = False(check_invariants: Optional[_bool] = NoneZset_flush_denormalz1def set_flush_denormal(mode: _bool) -> _bool: ...Zget_default_dtypez&def get_default_dtype() -> _dtype: ...Zasarrayzdef asarray({}) -> Tensor: ...)zobj: Anyr   r   r,   zcopy: Optional[_bool] = Noner   Z
from_numpyz&def from_numpy(ndarray) -> Tensor: ...Z
frombufferz!def frombuffer({}) -> Tensor: ...)zbuffer: Anyr   dtype: _dtypezcount: int = -1zoffset: int = 0r   Znumelz$def numel(self: Tensor) -> _int: ...Z	as_tensorz def as_tensor({}) -> Tensor: ...z	data: AnyZget_num_threadsz"def get_num_threads() -> _int: ...Zset_num_threadsz+def set_num_threads(num: _int) -> None: ...Zinit_num_threadsz#def init_num_threads() -> None: ...Zget_num_interop_threadsz*def get_num_interop_threads() -> _int: ...Zset_num_interop_threadsz3def set_num_interop_threads(num: _int) -> None: ...Ztensorzdef tensor(data: Any, r   Zsparse_coo_tensorz(def sparse_coo_tensor({}) -> Tensor: ...)	zindices: Tensorr   r   r   r   r,   r   r   z$is_coalesced: Optional[_bool] = NoneZsparse_compressed_tensorz/def sparse_compressed_tensor({}) -> Tensor: ...)
z'compressed_indices: Union[Tensor, list]z"plain_indices: Union[Tensor, list]r   r   r   r   z layout: Optional[_layout] = Noner,   r   r   Z_syncz!def _sync(t: Tensor) -> None: ...Z_is_functional_tensorz2def _is_functional_tensor(t: Tensor) -> _bool: ...Z_is_functional_tensor_basez7def _is_functional_tensor_base(t: Tensor) -> _bool: ...Z_from_functional_tensorz5def _from_functional_tensor(t: Tensor) -> Tensor: ...Z_to_functional_tensorz3def _to_functional_tensor(t: Tensor) -> Tensor: ...Z_functionalize_replacezEdef _functionalize_replace(self_: Tensor, other: Tensor) -> None: ...Z_functionalize_commit_updatez8def _functionalize_commit_update(t: Tensor) -> None: ...Z_functionalize_unsafe_setzDdef _functionalize_unsafe_set(dst: Tensor, src: Tensor) -> None: ...Z1_functionalize_mark_mutation_hidden_from_autogradzMdef _functionalize_mark_mutation_hidden_from_autograd(t: Tensor) -> None: ...Z5_functionalize_are_all_mutations_hidden_from_autogradzRdef _functionalize_are_all_mutations_hidden_from_autograd(t: Tensor) -> _bool: ...Z@_functionalize_are_all_mutations_under_no_grad_or_inference_modez]def _functionalize_are_all_mutations_under_no_grad_or_inference_mode(t: Tensor) -> _bool: ...Z+_functionalize_was_inductor_storage_resizedzHdef _functionalize_was_inductor_storage_resized(t: Tensor) -> _bool: ...Z_functionalize_syncz/def _functionalize_sync(t: Tensor) -> None: ...Z"_functionalize_was_storage_changedzDdef _functionalize_was_storage_changed(tensor: Tensor) -> _bool: ...Z"_functionalize_set_storage_changedzDdef _functionalize_set_storage_changed(tensor: Tensor) -> _bool: ...Z$_functionalize_has_metadata_mutationzFdef _functionalize_has_metadata_mutation(tensor: Tensor) -> _bool: ...Z_functionalize_apply_view_metaszQdef _functionalize_apply_view_metas(tensor: Tensor,  base: Tensor) -> Tensor: ...Z_functionalize_is_symbolicz<def _functionalize_is_symbolic(tensor: Tensor) -> _bool: ...Z_enable_functionalizationzCdef _enable_functionalization(*, reapply_views: _bool = False): ...z%def _disable_functionalization(): ...zdef range({}) -> Tensor: ...zstart: Numberzend: Numberzstep: Number = 1r   zdef arange({}) -> Tensor: ...zstep: Numberzdef linspace({}) -> Tensor: ...zsteps: Optional[_int] = Nonezdef logspace({}) -> Tensor: ...zbase: _float = 10.0zdef randint({}) -> Tensor: ...z	low: _intz
high: _intzsize: _sizez%generator: Optional[Generator] = Nonezdef full({}) -> Tensor: ...z#fill_value: Union[Number, _complex]zlayout: _layout = stridedznames: list[Union[str, None]]z#def is_grad_enabled() -> _bool: ...z-def is_inference_mode_enabled() -> _bool: ...zldef nonzero(input: Tensor, *, as_tuple: Literal[False] = False, out: Optional[Tensor] = None) -> Tensor: ...zQdef nonzero(input: Tensor, *, as_tuple: Literal[True]) -> tuple[Tensor, ...]: ...z4def dsmm(input: Tensor, mat2: Tensor) -> Tensor: ...z4def hsmm(input: Tensor, mat2: Tensor) -> Tensor: ...zdef saddmm({}) -> Tensor: ...)r   zmat1: Tensorzmat2: Tensorr   zbeta: Number = 1zalpha: Number = 1r   z4def spmm(input: Tensor, mat2: Tensor) -> Tensor: ...zdef div({}) -> Tensor: ...)zinput: Union[Tensor, Number]zother: Union[Tensor, Number]r   z#rounding_mode: Optional[str] = Noner   )Z_disable_functionalizationr0   ZarangeZlinspaceZlogspaceZrandintZfullZis_grad_enabledZis_inference_mode_enabledr^   ZdsmmZhsmmZsaddmmZspmmr5   )r7   r8   re   zl(input: Union[Tensor, Number], other: Union[Tensor, Number], *, out: Optional[Tensor] = None) -> Tensor: ...)r4   z(input: Union[Tensor, Number, _complex], other: Union[Tensor, Number, _complex], *, out: Optional[Tensor] = None) -> Tensor: ...)r2   r3   z(input: Union[Tensor, Number, _complex], other: Union[Tensor, Number, _complex], *, alpha: Optional[Union[Number, _complex]] = 1, out: Optional[Tensor] = None) -> Tensor: ...FT)r   pyic                 S     | j jS r   rt   rq   gr!   r!   r"   r         zgen_pyi.<locals>.<lambda>)keyNr   r`   r   c                 S  s   |  dd} |  dd} | S )Nzat::Reduction::Mean1z: Tensor = Nonez: Optional[Tensor] = None)replace)r   r!   r!   r"   replace_special_case*  s   z%gen_pyi.<locals>.replace_special_casec                   s   g | ]} |qS r!   r!   r   )r   r!   r"   r)   3  r   zgen_pyi.<locals>.<listcomp>r   c                 S  r   r   r!   r   r!   r!   r"   r)   5  r   ztorch.c                      g | ]}t  |qS r!   r   r   r   r!   r"   r)   8      sizez-def size(self, dim: None = None) -> Size: ...z&def size(self, dim: _int) -> _int: ...Zstridez;def stride(self, dim: None = None) -> tuple[_int, ...]: ...z(def stride(self, dim: _int) -> _int: ...Znew_onesz def new_ones(self, size: _size, Z
new_tensorz def new_tensor(self, data: Any, r.   z.def __new__(cls, *args, **kwargs) -> Self: ...newzdef new(cls, *args: Any, z) -> Self: ...z+def new(cls, storage: Storage) -> Self: ...z(def new(cls, other: Tensor) -> Self: ...zdef new(cls, size: _size, *, __init__zdef __init__(self, *args: Any, z) -> None: ...z1def __init__(self, storage: Storage) -> None: ...z.def __init__(self, other: Tensor) -> None: ...z#def __init__(self, size: _size, *, Zas_subclassz.def as_subclass(self, cls: _Type[S]) -> S: ...Z_make_subclassz2@staticmethod    
def _make_subclass({}) -> S: ...)zcls: _Type[S]zdata: Tensorzrequire_grad: _bool = Falsezdispatch_strides: _bool = Falsezdispatch_device: _bool = Falsez1device_for_backend_keys: Optional[_device] = None__contains__z3def __contains__(self, other: Any, /) -> _bool: ...__getitem__zdef __getitem__(self, __setitem__zdef __setitem__(self, z*, val: Union[Tensor, Number]) -> None: ...tolistzdef tolist(self) -> list: ...Zrequires_grad_z;def requires_grad_(self, mode: _bool = True) -> Tensor: ...Zelement_sizez#def element_size(self) -> _int: ...Zdata_ptrzdef data_ptr(self) -> _int: ...Zdimzdef dim(self) -> _int: ...r^   zEdef nonzero(self, *, as_tuple: Literal[False] = False) -> Tensor: ...zHdef nonzero(self, *, as_tuple: Literal[True]) -> tuple[Tensor, ...]: ...zdef numel(self) -> _int: ...Z
ndimensionz!def ndimension(self) -> _int: ...Znelementzdef nelement(self) -> _int: ...Zcudazdef cuda({}) -> Tensor: ...)selfz2device: Optional[Union[_device, _int, str]] = Noneznon_blocking: _bool = Falsez:memory_format: torch.memory_format = torch.preserve_formatZxpuzdef xpu({}) -> Tensor: ...ZcpuzXdef cpu(self, memory_format: torch.memory_format = torch.preserve_format) -> Tensor: ...Znumpyz>def numpy(self, *, force: _bool = False) -> numpy.ndarray: ...Zapply_z3def apply_(self, callable: Callable) -> Tensor: ...Zmap_z@def map_(self, other: Tensor, callable: Callable) -> Tensor: ...Zmap2_zHdef map2_(self, x: Tensor, y: Tensor, callable: Callable) -> Tensor: ...Zstoragez0def untyped_storage(self) -> UntypedStorage: ...Zstorage_typez&def storage_type(self) -> Storage: ...typezKdef type(self, dtype: None = None, non_blocking: _bool = False) -> str: ...zUdef type(self, dtype: Union[str, _dtype], non_blocking: _bool = False) -> Tensor: ...Z
get_devicez!def get_device(self) -> _int: ...
contiguouszJdef contiguous(self, memory_format=torch.contiguous_format) -> Tensor: ...Z	has_namesz!def has_names(self) -> _bool: ...Zis_contiguouszLdef is_contiguous(self, memory_format=torch.contiguous_format) -> _bool: ...Z_is_viewz def _is_view(self) -> _bool: ...Zis_cpuzis_cpu: _boolZis_cudazis_cuda: _boolZis_xpuzis_xpu: _boolZis_leafzis_leaf: _boolZ	is_nestedzis_nested: _boolZ	is_sparsezis_sparse: _boolZis_sparse_csrzis_sparse_csr: _boolZis_quantizedzis_quantized: _boolZis_metazis_meta: _boolZis_mpszis_mps: _boolZis_mtiazis_mtia: _boolZis_maiazis_maia: _boolZ	is_mkldnnzis_mkldnn: _boolZ	is_vulkanzis_vulkan: _boolZis_ipuzis_ipu: _boolz4def storage_offset(self) -> Union[_int, SymInt]: ...c                 S  s   g | ]}d | dqS )zdef to(self, zz, non_blocking: _bool = False, copy: _bool = False, *, memory_format: Optional[torch.memory_format] = None) -> Tensor: ...r!   )r&   r   r!   r!   r"   r)     s    
)r   zGdevice: Optional[DeviceLikeType] = None, dtype: Optional[_dtype] = Nonezother: Tensorzdef item(self) -> Number: ...zJdef copy_(self, other: Tensor, non_blocking: _bool = False) -> Tensor: ...zdef set_(self, source: Union[Storage, TypedStorage, UntypedStorage], storage_offset: IntLikeType, size: _symsize, stride: _symsize) -> Tensor: ...zSdef set_(self, source: Union[Storage, TypedStorage, UntypedStorage]) -> Tensor: ...zIdef split(self, split_size: _int, dim: _int = 0) -> Sequence[Tensor]: ...zUdef split(self, split_size: tuple[_int, ...], dim: _int = 0) -> Sequence[Tensor]: ...zbdef div(self, other: Union[Tensor, Number], *, rounding_mode: Optional[str] = None) -> Tensor: ...zcdef div_(self, other: Union[Tensor, Number], *, rounding_mode: Optional[str] = None) -> Tensor: ...)Zstorage_offsetr9   itemr:   Zset_r1   r5   r6   )FTz!, *, out: Optional[Tensor] = Noner    zA(self, other: Union[Tensor, Number, torch.SymInt, torch.SymFloat]zK(self, other: Union[Tensor, Number, _complex, torch.SymInt, torch.SymFloat]z, out: Optional[Tensor] = Nonez|(self, other: Union[Tensor, Number, _complex, torch.SymInt, torch.SymFloat], *, alpha: Optional[Union[Number, _complex]] = 1)
ZbytechardoublerY   halfr]   r[   shortr   bfloat16rf   )r   Zskip_deprecatedr   )r   c                 S  r   r   r   r   r!   r!   r"   r     r   rb   c                 S  r   r   r!   r   r!   r!   r"   r)   1  r   ztorch._C.TensorBase.c                   r   r!   r   r   r   r!   r"   r)   4  r   c                 S     g | ]}| d qS )r   r!   )r&   Zdefnr!   r!   r"   r)   <  r   zclass StorageBase(object): ...)
ZDoubleTensorZFloatTensorZBFloat16TensorZ
LongTensorZ	IntTensorZShortTensorZ
HalfTensorZ
CharTensorZ
ByteTensorZ
BoolTensorzclass z(Tensor): ...c                 S  r   )z: dtype = ...r!   )r&   nr!   r!   r"   r)   W  s    )(Zfloat32rY   Zfloat64r   Zfloat16r   Zfloat8_e4m3fnZfloat8_e4m3fnuzZfloat8_e5m2Zfloat8_e5m2fnuzZfloat8_e8m0fnur   Zuint8Zuint16Zuint32Zuint64Zint8Zint16r   Zint32r]   Zint64r[   Z	complex32Z	complex64ZchalfZcfloatZ
complex128ZcdoubleZquint8Zqint8Zqint32r   Zquint4x2Zquint2x4Zbits1x8Zbits2x4Zbits4x2Zbits8Zbits16c                 S  s   g | ]\}}|r|qS r!   r!   )r&   rq   r   r!   r!   r"   r)     s
    d   )widthZcompactr   z
__all__ = r   c                 S     g | ]}|j  d qS z = ...r   )r&   r   r!   r!   r"   r)     r*   c                 S  r   r   r   )r&   kr!   r!   r"   r)     r*   c                 s  s"    | ]\}}| d | V  qdS )r}   Nr!   )r&   r\   rq   r!   r!   r"   r~     s    
zgen_pyi.<locals>.<genexpr>)
structseq_defsfunction_hintstensor_method_hintslegacy_class_hintslegacy_storage_base_hintsdtype_class_hintsdispatch_key_hintstorch_dispatch_mode_key_hintsall_directivetag_attributesztorch/_C/__init__.pyiztorch/_C/__init__.pyi.inc                         S r   r!   r!   envr!   r"   r         ztorch/_C/_VariableFunctions.pyiz"torch/_C/_VariableFunctions.pyi.inc                     r  r   r!   r!   r  r!   r"   r     r  ztorch/_VF.pyic                     r  r   r!   r!   r  r!   r"   r     r  ztorch/return_types.pyiztorch/_C/return_types.pyi.inc                     r  r   r!   r!   r  r!   r"   r     r  )r   r`   r   r`   )&collectionsdefaultdictlistr   r   r   DEVICE_PARAMFACTORY_PARAMSrw   r   native_functionsfilterr
   r	   r+   r   rt   rq   rx   r   rv   r   r   r   getINDICESall_opsrr   valueskeysr   r1   r   r   r   	enumerater   r   ))r   r   r   r   Z
structseqsZunsorted_function_hintsr   Zn1Zn2Zbinopr  Zfunction_signaturesZ
sig_groupsgrouprq   Z	structseqZ
tuple_nameZ	tuple_defr   r   r   Zunsorted_tensor_method_hintsZinplaceZ
out_suffixZsimple_conversionsZtensor_method_signaturesZtensor_method_sig_groupsopr   r   r   r   cr   Zhinted_function_namesZall_symbolsr  r  r  Z	tag_namesr  r!   )r   r  r   r"   gen_pyi  s*  

 !,-./067HZ[^adgjmpsvy|}       
    $    =






	





-./
236789=>?@LX[\]`cdeijmnqrstuvwxyz{|}
~
 
    $

	

	








3r  c                  C  s   t jdd} | jddddd | jdd	d
dd | jddddd | jddddd |  }t|jddd}t|j|j|j	| d S )NzGenerate type stubs for PyTorch)Zdescriptionz--native-functions-pathZNATIVEz*aten/src/ATen/native/native_functions.yamlzpath to native_functions.yaml)Zmetavardefaulthelpz--tags-pathZTAGSzaten/src/ATen/native/tags.yamlzpath to tags.yamlz--deprecated-functions-pathZ
DEPRECATEDztools/autograd/deprecated.yamlzpath to deprecated.yamlz--outZOUT.zpath to output directoryF)Zinstall_dirZtemplate_dirZdry_run)
argparseZArgumentParserZadd_argumentZ
parse_argsr   Zoutr  Znative_functions_pathZ	tags_pathZdeprecated_functions_path)Zparserr   r   r!   r!   r"   main  s6   r  __main__)F)r   r   r   r   r   r   )r_   r`   r   ra   )rs   r   r   ra   )rq   r`   ry   ra   r   rz   )r   r   r   r   )r   r   )r   r`   r   r`   r   r`   )
r   r`   r   r`   r   r`   r   r   r   r   )r   r   )<Z
__future__r   r  r	  r   r   Zpprintr   typingr   Zunittest.mockr   r   warningsr   Z#tools.autograd.gen_python_functionsr   r	   r
   Ztorchgen.api.pythonr   r   r   Ztorchgen.genr   r   Ztorchgen.modelr   r   r   Ztorchgen.utilsr   Zcollections.abcr   r+   r  r  Z_leaf_typesZ_indexr  ru   rk   ri   rj   Z
binary_opsrl   rm   Zcomparison_opsrn   ro   r  rr   rx   r   r   r   r   r  r  __name__r!   r!   r!   r"   <module>   sn    )3

0

!  


	      
7
