U
    •Ê¹jÄJ  ã                   @   sN  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œeeee	f  eeee	f  e.e.ee d	œ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+   úU/var/www/html/bwave/python/venv/lib/python3.8/site-packages/torchgen/api/translate.pyr'   K   s   r'   F)ÚmethodÚallow_expensive_conversions)ÚbindingsÚgoalsr-   r.   Úreturnc                   s‚  g }| D ]0}t |tƒr.| t|j|jd�¡ q| |¡ qg ‰|D ]&}t |tƒr^ˆ |j¡ qBˆ |¡ qBi ‰|D �]–}|jˆ|j< |j}t |tƒrît |j	t
ƒrît |j	j	tƒrît|j	j	jƒdkrîd|j› d|j› d�ˆt|j	j	jtttƒƒƒ< |jtt
ttƒƒƒk�r4d|j› d|j› d|j› d	�ˆt|jttƒƒ< |jtttƒƒk�rfd|j› d
�ˆt|jttƒƒ< |jtt
ttƒƒƒk�r¤d|j› d|j› d�ˆt|jttƒƒ< |jttƒk�rÒd|j› d�ˆt|jttƒƒ< |jttt
ttƒƒƒƒkrrd|j› d�ˆt|jttƒƒ< qr|�r>dˆtdtttƒƒƒ< dˆtdtttƒƒƒ< ttdœ‡fdd„‰tttdœ‡ ‡‡‡‡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�ƒ‚d S )NÚ
c                 s   s.   | ]&\}}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 "r:   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<   )r8   Zctx_desc)Úctxr+   r,   ÚunsatË   s    
ÿÿÿüÿztranslate.<locals>.unsat)r8   Údirectr1   c             	      s  t tdœ‡fdd„}| ˆkr$ˆ|  S t| jtƒrdzˆt | jt| jjƒƒ|d�W S  tk
rb   Y nX t| jtƒr zˆt | j| jjƒ|d�W S  tk
rž   Y nX | jt	t
tƒƒkrÊˆt | jt
tƒƒ|d�S |rÖˆ| ƒ | t dtt
tƒƒƒk�rP|t tjtt
tƒƒƒƒ}tˆk�r|S z|tƒ}d|› d|› d�W S  tk
�rJ   | Y S X �nF| 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�r6z|tƒ}d|› d�W S  tk
�r0   |tƒ}	|	› d� Y S X �n`| t dtt
tƒƒƒk�r�z|tƒ}|› d�W S  tk
�rŠ   |tƒ}	|	› d� Y S X �n| t dtt
tƒƒƒk�rêz|tƒ}|› d�W S  tk
�rä   |tƒ}	|	› d� Y S X �n¬| t dtt
tƒƒƒk�r<z|tƒ}|› d�W S  tk
�r6   |tƒ}	Y dS X �nZ| jt
tƒk�ršz|t | jtƒƒW S  tk
�r”   |t | jt
tƒƒƒ}
d|
› d� Y S X �nü| jt
tƒk�røz"|t | jt
tƒƒƒ}d|› d�W S  tk
�rò   |t | jtƒƒ Y S X �nž| jt
tƒk�r|t | jt
tƒƒƒS | jtt
tƒƒk�rX|t | jtt
tƒƒƒƒ}|› d|› d�S | jt
tƒk�r†|t | jt
tƒƒƒ}|› d�S | jtt
tƒƒk�rÂ|t | jtt
tƒƒƒƒ}|› d |› d!�S | jt
tƒk�r"z|t | jtƒƒW S  tk
�r   |t | jt
tƒƒƒ}|› d"|› d� Y S X nt| jt
tƒk�rV|t | jt
tƒƒƒ}|› d#|› d�S | jt
tƒk�rv|t | jt ƒƒS | jt
t!ƒk�r–|t | jt"ƒƒS ˆ �rÀ| jt#t
tƒƒk�rÒt | jt
tƒƒ}||ƒ}|› d$�S | jt#t
tƒƒk�rt | jt
tƒƒ}||ƒ}|› d$�S | jtt#t
tƒƒƒk�rHt | jt
tƒƒ}||ƒ}|› d |› d%�S | j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�rüt | jtt
t%ƒƒƒ}||ƒ}d'|› d�S ˆ| ƒ d S )(Nr7   c                    s   ˆ | dd�S )NT©rE   r+   )r8   ©Úsolver+   r,   Údirect_solveã   s    z.translate.<locals>.solve.<locals>.direct_solverF   Ú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#   )r8   rE   rI   rJ   r%   rK   rL   rM   rN   Z
out_tensorZsymIntArrayRef_typeÚrÚargnameZsymInt_typeZintArrayRef_ctypeZsymIntArrayRef_ctypeZoptionalIntArrayRef_ctypeZoptionalScalarRef_ctypeZoptionalTensorRef_ctypeZconst_ref_tensor_ctype©r.   rC   Zgoal_ctypesrH   rD   r+   r,   rH   â   s@    ÿ
þÿ
ÿÿÿÿÿÿ
ÿÿÿ


 ÿ ÿ ÿ 
ÿztranslate.<locals>.solvec                    s   g | ]}t ˆ |d d�|ƒ‘qS )FrF   )r   )r=   ÚgrG   r+   r,   Ú
<listcomp>®  s     ztranslate.<locals>.<listcomp>)rP   r	   Úappendr   r<   Znctyper2   r3   r   rQ   r   r   rO   r   r#   r   r   r   r   r   r   r   r   r   Úbool)r/   r0   r-   r.   Zbinding_exprsÚbr\   r>   r+   r[   r,   Ú	translate`   s„    
þÿ

 ÿ
þýüþÿþÿþÿþÿþÿþÿþÿ Mra   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$   rR   rS   rT   rU   rV   rW   rX   ÚRuntimeErrorr'   r_   ra   r+   r+   r+   r,   Ú<module>   s$   €=ûú