a
    .=ic	                     @   s   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlm  mZ d dlm  mZ ee	eee ddd	Zee
eee d
ddZeee
e	f eee d
ddZdS )    )ListUnionOptional)with_native_function_and_index)mapMaybe)NativeFunctionNativeFunctionsGroupBackendIndex)kernel_signatureN)fbackend_indexreturnc                 C   sZ   t | |}|| }|d u r d S d|jv r.d S |jr8dnd}| d|j|jd dS d S )Nzlegacy::ZstaticZ	TORCH_API )name;)r
   
get_kernelkernelexternaldecl)r   r   sigmetadataprefix r   o/home/droni/.local/share/virtualenvs/DPS-5Je3_V2c/lib/python3.9/site-packages/torchgen/dest/native_functions.pygen_unstructured   s    


r   )gr   r   c                 C   sj   t | }t| }|| }|d u r*g S |jr4dnd}d| d|j d| dddd	 |D  d
	gS )N z
TORCH_API zstruct Zstructured_z : public at::meta::structured_z {
void impl(z, c                 s   s   | ]}|  V  qd S N)r   ).0ar   r   r   	<genexpr>#       z!gen_structured.<locals>.<genexpr>z);
};
)metar   
structuredZimpl_argumentsr   r   r   join)r   r   Z	meta_nameZout_argsr   r   r   r   r   gen_structured   s     


r%   c                    sz     | }t| trZ|d ur>|jr> jr2tdqXt|  S qvtt fdd| 	 S nt
|  }|d u rpg S |gS d S )Nz>Structured external backend functions are not implemented yet.c                    s
   t |  S r   )r   )r   r   r   r   <lambda>;   r!   z5compute_native_function_declaration.<locals>.<lambda>)r   
isinstancer   r#   r   AssertionErrorr%   listr   Z	functionsr   )r   r   r   xr   r&   r   #compute_native_function_declaration+   s    


r,   )typingr   r   r   Ztorchgen.contextr   Ztorchgen.utilsr   Ztorchgen.modelr   r   r	   Ztorchgen.api.typesr
   Ztorchgen.api.metaapir"   Ztorchgen.api.structuredr#   strr   r%   r,   r   r   r   r   <module>   s   