o
    i?                     @   s  d dl mZmZmZmZmZ d dl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% d dl&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 dddde+d	e5d
e5de6fddZ7dddde2de	de5de5dee f
ddZ8dddde2de5de	de5de5defddZ9ddde'de	de5defddZ:ddde2de5de5defddZ;ddde/de5defdd Z<ddd!ee/ de5defd"d#Z=d$d%d&e-d'e6dee6 fd(d)Z>d*d+d,d-d.d/d0d1Z?d2e6de2de5de6fd3d4Z@dddee'e1e0f d5ee6 d6e5d7e5de5d8e5dee fd9d:ZAddd;e(d7e5de5d6e5d5ee6 dee fd<d;ZBd=S )>    )ListOptionalSequenceSetUnion)local)ArgName
ArrayCTypeArrayRefCType	BaseCTypeBaseTypeToCppMappingBindingboolTConstRefCTypeCTypedimnameListTintArrayRefTiTensorListRefT	ListCTypelongTMutRefCType
NamedCTypeOptionalCTypeoptionalIntArrayRefToptionalSymIntArrayRefTscalarTSpecialArgNamesymIntArrayRefTSymIntTtensorListTtensorOptionsTtensorT
TupleCTypeVectorCTypevoidT)Argument	ArgumentsBaseTyBaseTypeFunctionSchemaListTypeNativeFunctionOptionalTypeReturnSelfArgumentTensorOptionsArgumentsType)assert_neverF)faithful_name_for_out_overloadssymint_overloadfuncr2   r3   returnc                C   s<   t | jj}|r|d7 }|  r|r|d7 }|S |d7 }|S )NZ_symintZ_outfZ_out)strname	is_out_fn)r4   r2   r3   r7    r9   _/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/site-packages/torchgen/api/cpp.pyr7   E   s   r7   )remove_non_owning_ref_typessyminttbindsr;   r<   c                C   s  t | tr?| jtjks| jtjkrd S t| dkr)|r"t|tt	S t|tt
S |r5| jtjkr5tdt|tt| j S t | trZt| j||d}|d u rRd S t|t|jS t | trzt| jdkrx| jd usmJ t|ttt| jS d S tdt|  )NSymIntz1string ref->value conversion: not implemented yetr>   r<   boolunrecognized type )
isinstancer(   r7   r'   TensorScalarr6   r   r   r   r   AssertionErrorr   r,   valuetype_typeelemr   typer*   sizer	   r   repr)r=   r>   r;   r<   rH   r9   r9   r:   rG   Z   s0   


rG   mutablec                C   s  t | |||d}|d ur|S t| trG| jtjkr1|r(t s(t|t	t
tS t|tt
tS | jtjkr@t|tt
tS td|  t| trt| jdkrm|rbt sbt|t	t
tS t|ttt
tS t| jdkrt|ttt
tS t| jtrt| jjdkrt|t
tS t| jtrt| jjdkr|rt|t
tS t|t
tS t| j|||d}t|t|jS t| trut| jdkr|rt|tt
tS t|t
tS t| jdkr|r|rt|tt
tS t|tt
tS |rt|t
tS t|t
tS t| jdkr/t r(t|tt
tS t|t
t S t| jdkr@t|t!t
tS t| jdkrOt|t
t"S t| jd	krdt|tt#tt
tS t| j|||d}t|t!|jS td
t$|  )N)r>   r<   r;   z&base type should have been value type rD   rE   intr?   )rL   r>   r<   ZDimnameTensor?rB   )%rG   rC   r(   r7   r'   rD   r   !use_const_ref_for_mutable_tensorsr   r   r   r!   r   rE   r   rF   r,   r6   rH   r   r*   r   r   argumenttype_typerI   r#   r   r   r   r   Zuse_ilistref_for_tensor_listsr   r   r
   r   r   rK   )r=   rL   r>   r;   r<   rrH   r9   r9   r:   rP      s~   	


rP   r<   ac                C   s   t | j| j||dS )N)rL   r<   r>   )rP   rI   is_write)rS   r>   r<   r9   r9   r:   argument_type   s   rU   c                C   s   t | ddd}|d ur|jS t| tr:| jtjkr/|r+t r%t	t
tS tt
tS t
tS | jtjkr9t
tS n"t| tr\|rEJ dt| jdd}| jd u sXJ d|  t|S td|  )	NZ__placeholder__Tr@   zTNative functions should never return a mutable tensor list. They should return void.F)rL   z'fixed size list returns not supported: zunrecognized return type )rG   rI   rC   r(   r7   r'   rD   r   rO   r   r   r!   r   rE   r   r*   returntype_typerH   rJ   r#   rF   )r=   rL   r<   rQ   rH   r9   r9   r:   rV      s,   

rV   rQ   c                C   s   t | j| j|dS )N)rL   r<   )rV   rI   rT   )rQ   r<   r9   r9   r:   return_type  s   rW   rsc                   sF   t | dkr
ttS t | dkrt| d  dS t fdd| D S )Nr      rR   c                    s   g | ]}t | d qS )rR   )rW   ).0rQ   rR   r9   r:   
<listcomp>  s    z returns_type.<locals>.<listcomp>)lenr   r$   rW   r"   )rX   r<   r9   rR   r:   returns_type  s
   r]   result)fallback_namefr_   c                   s   g }t | jjD ][\} | jjjjr|dksJ dd}nA| j r+| jjj| j}n3 jrNt fdd| j	 D }|rJ| j sJ j d}n j}nt
| jjdkrX|n| | }|| q|S )Nr   z.illegal inplace function with multiple returnsselfc                 3   s    | ]	} j |j kV  qd S )N)r7   )rZ   rS   rQ   r9   r:   	<genexpr>$  s    
zreturn_names.<locals>.<genexpr>Z_returnrY   )	enumerater4   returnsr7   Zinplacer8   	argumentsoutanyZschema_order_argumentsr\   append)r`   r_   re   ir7   Zname_conflictr9   rb   r:   return_names  s"   
 rk   falsetruec10::nulloptzat::Reduction::Mean{}zMemoryFormat::Contiguous	at::kLong)FalseTrueNoneZMeanz[]Zcontiguous_formatlongdc                C   s  | dkrt |dkrdS t|trz|jtj u rzt| dkrz| d dkrz| d dkrzd}d	}|d	 t| k rt| | d
krQ| | dkrF|d7 }n|| | 7 }|d	7 }n| |d	  dkr^|d7 }n
|| ||d  7 }|d7 }|d	 t| k s5d| dS t|tr| dkrdS t| |j|dS t|t	r| 
dr| drd| d	d  d S |r|  rt |jdkrd|  dS |jd u rtd|  dt| | S )Nrs   rN   ro      r   ' rY   \"z\"rn   rR   []{}r?   zc10::SymInt()z,Expected a list default '[...]' but found: ')r6   rC   r(   r7   r'   r\   r,   default_exprrH   r*   
startswithendswithisdigitrJ   
ValueErrorJIT_TO_CPP_DEFAULTget)ru   r=   r<   srj   r9   r9   r:   r   @  s<   $





r   cpp_no_default_argsmethodfaithfulhas_tensor_optionsc          	         sP  dt tttf dtt f fdd}t| trM| jdkr&r&tj	}n| j}d }| j vr>| j
d ur>t| j
| jd}tt| |d| j|| dgS t| trrh|| j|| j || j || j S d }d	 vspJ td
d |  D r~d}n| jj
dkrd}ttd	ttd	|| dgS t| trrg S || jS t|  d S )NrS   r5   c                    s   t |  dS )N)r   r   r   r<   r   )argument)rS   r   r   r   r   r<   r9   r:   sub_argumentv  s   zargument.<locals>.sub_argumentZmemory_formatrR   r@   )Znctyper7   defaultr   optionsc                 s   s    | ]}|j d kV  qdS )rs   N)r   )rZ   xr9   r9   r:   rc     s    zargument.<locals>.<genexpr>ro   rt   rp   )r   r%   r/   r.   r   r   rC   r7   r   Z possibly_redundant_memory_formatr   r   rI   rU   ZdtypeZlayoutZdeviceZ
pin_memoryallr   r   r    r   r1   )	rS   r   r   r   r<   r   r   r>   r   r9   r   r:   r   m  s^   	



r   rf   c                   sT   g }r|  j |  j n|  j |  j  fdd|D S )Nc              
      s<   g | ]}t | jd udD ]
}r| n|qqS )N)r   r<   r   r   r   )r   Ztensor_optionsZ
no_default)rZ   rS   rQ   rf   r   r   r   r<   r9   r:   r[     s    zarguments.<locals>.<listcomp>)extendZnon_outrg   )rf   r   r<   r   r   argsr9   r   r:   rf     s   N)Ctypingr   r   r   r   r   Ztorchgenr   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$   Ztorchgen.modelr%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   Ztorchgen.utilsr1   rA   r6   r7   rG   rP   rU   rV   rW   r]   rk   r   r   r   rf   r9   r9   r9   r:   <module>   s    |8

.
 W 	#  	!3
L