U
    9%e'                     @   s0   d dl mZmZ d dlmZ eedddZdS )    )LazyArgumentLazyIrSchema)OptionalCType)schemareturnc                    s   g }t tddd | jD ]4}|jr4| | q|d|j d|j  qddd |D } fd	d| jD }d
d | jD }ddd || D }dt	| dt	||  d| d| d| j
 d| j
 dt	| j d| j
 dS )N)argr   c                 S   s   t | jtrd| j dS dS )NZhas_z- ? loctx->GetOutputOp(operand(i++)) : nullptrz loctx->GetOutputOp(operand(i++)))
isinstanceZ	lazy_typer   name)r    r
   ]/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/torchgen/dest/lazy_ts_lowering.py	get_value
   s    z#ts_lowering_body.<locals>.get_value"", z
    c                 S   s   g | ]}d | dqS )zarguments.emplace_back();r
   .0ar
   r
   r   
<listcomp>   s     z$ts_lowering_body.<locals>.<listcomp>c                    s"   g | ]}d |j  d | qS r   r   r	   r   r   r   r
   r   r      s    c                 S   s    g | ]}d |j  d|j  qS r   r   r   r
   r
   r   r      s    c                 S   s   g | ]}d | dqS )zkwarguments.emplace_back(r   r
   r   r
   r
   r   r      s   z~    std::vector<torch::jit::NamedValue> arguments;
    std::vector<torch::jit::NamedValue> kwarguments;
    arguments.reserve(z);
    kwarguments.reserve(z);
    size_t i = 0;
    z
    torch::lazy::TSOpVector zb_out = torch::lazy::LowerTSBuiltin(function, op().op, arguments, kwarguments);
    TORCH_CHECK_EQ(z_out.size(), z);

    return z_out;
)r   strZpositional_argsZis_lazy_valueappendr	   joinZkeyword_valuesZkeyword_scalarslenZ	aten_nameZreturns)r   Zemplace_argumentsr   Zemplace_arguments_strZemplace_kwarg_valuesZemplace_kwarg_scalarsZemplace_kwargumentsr
   r   r   ts_lowering_body   sL    


	r   N)Ztorchgen.api.lazyr   r   Ztorchgen.api.typesr   r   r   r
   r
   r
   r   <module>   s   