o
    iJ                     @   sV  d dl mZmZmZmZmZ d dlmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$ edeee"Z%edeee#Z&e$eeZ'e$ee!Z(ee$eeZ)eeeZ*eee#Z+G dd de,Z-dddd	eeee	f  d
eeee	f  de.de.dee f
ddZ/dS )    )DictListNoReturnSequenceUnion)ArrayRefCType	BaseCTypeBindingboolTConstRefCTypedeviceTExprintArrayRefTiOptTensorListRefTlayoutT	ListCTypelongTmemoryFormatTMutRefCType
NamedCTypeopmath_tOptionalCTypeoptionalIntArrayRefToptionalScalarRefToptionalSymIntArrayRefToptionalTensorRefTscalar_tscalarTscalarTypeTSpecialArgNamesymIntArrayRefTSymIntTtensorOptionsTtensorTVectorCTypeoptionsoutc                   @   s   e Zd ZdS )
UnsatErrorN)__name__
__module____qualname__ r+   r+   e/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchgen/api/translate.pyr'   K   s    r'   F)methodallow_expensive_conversionsbindingsgoalsr-   r.   returnc                   s  g }| D ]}t |tr|t|j|jd q|| qg |D ]}t |tr/|j q!| q!i |D ]}|j|j< |j}t |trvt |j	t
rvt |j	j	trvt|j	j	jdkrvd|j d|j dt|j	j	jttt< |jtt
ttkrd|j d|j d|j d	t|jtt< |jtttkrd|j d
t|jtt< |jtt
ttkrd|j d|j dt|jtt< |jttkrd|j dt|jtt< |jttt
ttkrd|j dt|jtt< q9|rdtdttt< dtdttt< dtdtffdddtdtdtf fddfddD S )N)exprtypez
at::Tensor(z.has_value() ? *z : at::Tensor())z((z.has_value() && (*z&).defined()) ? at::OptionalTensorRef(*z) : at::OptionalTensorRef())z).to<opmath_t>()z'.has_value() ? at::OptionalScalarRef(&(z%.value())) : at::OptionalScalarRef())zstatic_cast<opmath_t>()zat::IOptTensorListRef(zconst_cast<Tensor&>(*this)selfgoalr1   c                    s:   d dd   D }td|   d| j d| d)N
c                 s   s0    | ]\}}d |   d|j d| V  qdS )z   z; // N)cpp_typename).0ter+   r+   r,   	<genexpr>   s     
z+translate.<locals>.unsat.<locals>.<genexpr>z&
Failed to synthesize the expression "r9   zI".
When I failed, the following bindings were available in the context:

z~

This probably means there is a missing rule in the rules of torchgen.api.translate.
Check this module for more information.
)joinitemsr'   r:   r;   )r7   Zctx_desc)ctxr+   r,   unsat   s   
ztranslate.<locals>.unsatdirectc             	      s  dt dtffdd}| v r|  S t| jtr2zt | jt| jj|dW S  ty1   Y nw t| jtrOzt | j| jj|dW S  tyN   Y nw | jt	t
tkrdt | jt
t|dS |rj|  | t dtt
tkr|t tjtt
t}tv r|S z|t}d| d| d	W S  ty   | Y S w | t d
t
tkr|t dtt
t}|t dtt
t}|t dtt
t}|t dtt
t}d| d| d| d| d		S | t dtt
tkrz|t}d| dW S  ty   |t}	|	 d Y S w | t dtt
tkr:z
|t}| dW S  ty9   |t}	|	 d Y S w | t dtt
tkrdz
|t}| dW S  tyc   |t}	|	 d Y S w | t dtt
tkrz
|t}| dW S  ty   |t}	Y dS w | jt
tkrz	|t | jtW S  ty   |t | jt
t}
d|
 d	 Y S w | jt
tkrz|t | jt
t}d| d	W S  ty   |t | jt Y S w | jt
tkr|t | jt
tS | jtt
tkr|t | jtt
t}| d| dS | jt
tkr)|t | jt
t}| d S | jtt
tkrG|t | jtt
t}| d!| d"S | jt
tkruz	|t | jtW S  tyt   |t | jt
t}| d#| d Y S w | jt
tkr|t | jt
t}| d$| dS | jt
tkr|t | jt S | jt
t!kr|t | jt"S  rD| jt#t
tkrt | jt
t}||}| d%S | jt#t
tkrt | jt
t}||}| d%S | jtt#t
tkrt | jt
t}||}| d!| d&S | jtt
t$kr&t | jt
t}||}| d!| d'S | jtt
t$krDt | jt
t!}||}| d!| d'S | jtt
t%krbt | jtt
t%}||}d(| d	S |  d S ))Nr7   r1   c                    s    | ddS )NTrD   r+   )r7   solver+   r,   direct_solve   s   z.translate.<locals>.solve.<locals>.direct_solverE   memory_formatz:c10::impl::check_tensor_options_and_extract_memory_format(z, r5   r%   dtype
pin_memorydevicelayoutzTensorOptions().dtype(z	).layout(z	).device(z).pinned_memory(zoptTypeMetaToScalarType(z.dtype_opt())z.scalar_type()z.layout_opt()z	.layout()z.device_opt()z	.device()z.pinned_memory_opt()zc10::nulloptzC10_AS_INTARRAYREF_SLOW(zc10::fromIntArrayRefSlow(z/.has_value() ? c10::make_optional(c10::SymInt(*z)) : c10::nulloptz.expect_int()z".has_value() ? c10::make_optional(z->expect_int()) : c10::nulloptz;.has_value() ? c10::make_optional(C10_AS_INTARRAYREF_SLOW(*z<.has_value() ? c10::make_optional(c10::fromIntArrayRefSlow(*z.vec()z->vec()) : c10::nulloptz) : c10::nulloptzconst_cast<Tensor&>()&r   str
isinstancer3   r   r;   r   elemr'   r   r   r   r   r   r   r   Z possibly_redundant_memory_formatoptions_ctyper"   r   r
   r   r   out_tensor_ctypelongVec_ctyper    longSymVec_ctyper!   r   optionalLongVec_ctyper   r   optionalScalar_ctyper   optionalTensor_ctyper$   r   r#   )r7   rD   rH   rI   r%   rJ   rK   rL   rM   Z
out_tensorZsymIntArrayRef_typerargnameZsymInt_typeZintArrayRef_ctypeZsymIntArrayRef_ctypeZoptionalIntArrayRef_ctypeZoptionalScalarRef_ctypeZoptionalTensorRef_ctypeZconst_ref_tensor_ctyper.   rB   Zgoal_ctypesrG   rC   r+   r,   rG      sJ  







ztranslate.<locals>.solvec                    s   g | ]}t  |d d|qS )FrE   )r   )r<   grF   r+   r,   
<listcomp>  s    ztranslate.<locals>.<listcomp>)rO   r	   appendr   r;   Znctyper2   r3   r   rP   r   r   rN   r   r#   r   r   r   r   r   r   r   r   r   bool)r/   r0   r-   r.   Zbinding_exprsbr[   r=   r+   rZ   r,   	translate`   s   

 
" Mr`   N)0typingr   r   r   r   r   Ztorchgen.api.typesr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   rQ   rR   rS   rT   rU   rV   rW   RuntimeErrorr'   r^   r`   r+   r+   r+   r,   <module>   s.    =