a
    d                     @   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   h d}t t| | dkr@tddt| | d|v rX| |d ksXJ |dd}t|tsrJ |dd}t|tsJ |d	d}t|tsJ d }d
|v r|d
 }t|t	sJ t
tdd |}t| ||||dS )N>   
debug_infor	   r   r   r
   r   z!Got unexpected top level keys: {},r   r	   Tr
   r   r   c                 S   s   t | S N)str)x r   j/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/torchgen/selective_build/operator.py<lambda>U       z7SelectiveBuildOperator.from_yaml_dict.<locals>.<lambda>r   r	   r
   r   r   )lensetkeys	Exceptionformatjoinget
isinstanceboollisttuplemapr   )r   r   Zallowed_keysr	   r
   r   r   Zdi_listr   r   r   from_yaml_dict2   s6    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 ur&| j|d< |S )N)r	   r
   r   r   )r	   r
   r   r   )selfretr   r   r   to_dictk   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   r1   r2   r   r   r   merge_debug_infow   s    r4   c                 C   sf   t | jt |jkr0tdt | jt |jt| j| jp@|j| jpJ|j| jpT|jt| j	|j	dS )NzLExpected both arguments to have the same name, but got '{}' and '{}' insteadr   )
r   r   r   r   r   r	   r
   r   r4   r   r3   r   r   r   combine_operators   s    


r5   c                 C   sL   i }t |  t |  D ]*\}}|}||v 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)Zdataclassesr   typingr   r   r   r   r   r4   r5   r9   r<   r   r   r   r   <module>   s   m


