o
    hk                  	   @   s   d dl mZ d dlmZmZmZ eddG dd dZdeeedf  d	eeedf  d
eeedf  fddZ						
	dddZ	deeef d	eeef d
eeef fddZ
ded
efddZdS )    )	dataclass)DictOptionalTupleT)frozenc                   @   s   e Zd ZU eed< eed< eed< eed< eeedf  ed< edede	ee
f d	d fd
dZeded	d fddZd	e	ee
f fddZdS )SelectiveBuildOperatornameis_root_operatoris_used_for_traininginclude_all_overloads._debug_infoop_nameop_inforeturnc                 C   s   h d}t t| | dkr tddt| | d|v r,| |d ks,J |dd}t|ts9J |dd}t|tsFJ |d	d}t|tsSJ d }d
|v rm|d
 }t|t	sdJ t
dd |D }t| ||||dS )N>   r   
debug_infor	   r
   r   r   z!Got unexpected top level keys: {},r   r	   Tr
   r   r   c                 s   s    | ]}t |V  qd S N)str).0x r   W/var/www/html/ai/venv/lib/python3.10/site-packages/torchgen/selective_build/operator.py	<genexpr>V   s    z8SelectiveBuildOperator.from_yaml_dict.<locals>.<genexpr>r   r	   r
   r   r   )lensetkeys	Exceptionformatjoinget
isinstanceboollisttupler   )r   r   allowed_keysr	   r
   r   r   di_listr   r   r   from_yaml_dict3   s6   z%SelectiveBuildOperator.from_yaml_dictc                 C   s   t | dddd dS )NTr   )r   )r   r   r   r   *from_legacy_operator_name_without_overload`   s   zASelectiveBuildOperator.from_legacy_operator_name_without_overloadc                 C   s*   | j | j| jd}| jd ur| j|d< |S )N)r	   r
   r   r   )r	   r
   r   r   )selfretr   r   r   to_dictl   s   

zSelectiveBuildOperator.to_dictN)__name__
__module____qualname__r   __annotations__r"   r   r   staticmethodr   objectr'   r(   r+   r   r   r   r   r      s*   
 
,r   lhs.rhsr   c                 C   s,   | d u r
|d u r
d S t t| pd|pd S )Nr   )r$   r   r2   r3   r   r   r   merge_debug_infox   s   r5   c                 C   sl   t | jt |jkrtdt | j dt |j dt| j| jp#|j| jp(|j| jp-|jt| j|jdS )Nz8Expected both arguments to have the same name, but got 'z' and 'z	' insteadr   )	r   r   r   r   r	   r
   r   r5   r   r4   r   r   r   combine_operators   s   


r6   c                 C   sL   i }t |  t |  D ]\}}|}||v rt|| |}|||< q|S r   )r#   itemsr6   )r2   r3   	operatorsr   opnew_opr   r   r   merge_operator_dicts   s    
r;   r   c                 C   s   |  dd S )N.r   )split)r   r   r   r   strip_operator_overload_name   s   r>   N)r2   r   r3   r   r   r   )dataclassesr   typingr   r   r   r   r   r5   r6   r;   r>   r   r   r   r   <module>   s4    	l





