U
    9%ek                     @   s   d dl mZ d dlmZmZmZ eddG dd dZeeedf  eeedf  eeedf  dd	d
ZddddddZ	eeef eeef eeef dddZ
eed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ee	ee
f d ddd	Zeed d
ddZe	ee
f d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   dddddh}t t| | dkrFtddt| | d|kr^| |d ks^t|dd	}t|t	sxt|dd	}t|t	st|dd	}t|t	std }d|kr|d }t|t
sttd
d |D }t| ||||dS )Nr   r	   r
   r   
debug_infor   z!Got unexpected top level keys: {},Tc                 s   s   | ]}t |V  qd S N)str).0x r   `/var/www/html/Darija-Ai-API/env/lib/python3.8/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AssertionErrorget
isinstanceboollisttupler   )r   r   Zallowed_keysr	   r
   r   r   Zdi_listr   r   r   from_yaml_dict3   s@    z%SelectiveBuildOperator.from_yaml_dict)r   r   c                 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_overload)r   c                 C   s*   | j | j| jd}| jd k	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 kr|d krd S t t| pd|p$d S )Nr   )r%   r   r1   r2   r   r   r   merge_debug_infox   s    r4   c                 C   sl   t | jt |jkr6tdt | j dt |j dt| j| jpF|j| jpP|j| jpZ|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   r4   r   r3   r   r   r   combine_operators   s    


r5   c                 C   sL   i }t |  t |  D ]*\}}|}||kr>t|| |}|||< q|S r   )r$   itemsr5   )r1   r2   	operatorsr   opZnew_opr   r   r   merge_operator_dicts   s     
r9   )r   r   c                 C   s   |  dd S )N.r   )split)r   r   r   r   strip_operator_overload_name   s    r<   N)dataclassesr   typingr   r   r   r   r   r4   r5   r9   r<   r   r   r   r   <module>   s    	m 


