
    Ph              	           d dl mZ d dlmZmZmZ  ed       G d d             Zdeeedf      d	eeedf      d
eeedf      fdZ	 	 	 	 	 	 ddZ	deeef   d	eeef   d
eeef   fdZ
ded
efdZy)    )	dataclass)DictOptionalTupleT)frozenc                       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
       Zeded	d fd       Zd	e	ee
f   fdZy)SelectiveBuildOperatornameis_root_operatoris_used_for_traininginclude_all_overloads._debug_infoop_nameop_inforeturnc           
      R   h d}t        t        |j                               |z
        dkD  rCt        dj	                  dj                  t        |j                               |z
                    d|v r
| |d   k(  sJ |j                  dd      }t        |t              sJ |j                  dd      }t        |t              sJ |j                  d	d      }t        |t              sJ d }d
|v r)|d
   }t        |t              sJ t        d |D              }t        | ||||      S )N>   r
   
debug_infor   r   r   r   z!Got unexpected top level keys: {},r
   r   Tr   r   r   c              3   2   K   | ]  }t        |        y wN)str).0xs     lC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\torchgen/selective_build/operator.py	<genexpr>z8SelectiveBuildOperator.from_yaml_dict.<locals>.<genexpr>V   s     7w!s1vws   r
   r   r   r   r   )lensetkeys	Exceptionformatjoinget
isinstanceboollisttupler	   )r   r   allowed_keysr   r   r   r   di_lists           r   from_yaml_dictz%SelectiveBuildOperator.from_yaml_dict3   s7   
 s7<<>"\12Q63::HHS0<?@  Wgfo---";;'94@*D111&{{+A4H.555 ',CT J/66604
7"l+Ggt,,,7w77J%-!5"7"
 	
    c                 "    t        | dddd       S )NTr   )r	   )r
   s    r   *from_legacy_operator_name_without_overloadzASelectiveBuildOperator.from_legacy_operator_name_without_overload`   s      &!!%"&
 	
r+   c                     | j                   | j                  | j                  d}| j                  | j                  |d<   |S )N)r   r   r   r   )r   r   r   r   )selfrets     r   to_dictzSelectiveBuildOperator.to_dictl   sG     $ 5 5$($=$=%)%?%?"

 ' $ 0 0C
r+   N)__name__
__module____qualname__r   __annotations__r%   r   r   staticmethodr   objectr*   r-   r1    r+   r   r	   r	      s     I     %S/***
*
#CK0*
	!*
 *
X 	
	
	!	
 	
	c6k* 	r+   r	   lhs.rhsr   c                 J    | |y t        t        | xs d|xs dz               S )Nr8   )r'   r   r9   r:   s     r   merge_debug_infor=   x   s-    
 {s{ciRCI2./00r+   c           
         t        | j                        t        |j                        k7  r8t        dt        | j                         dt        |j                         d      t        | j                  | j                  xs |j                  | j
                  xs |j
                  | j                  xs |j                  t        | j                  |j                              S )Nz8Expected both arguments to have the same name, but got 'z' and 'z	' insteadr   )	r   r
   r    r	   r   r   r   r=   r   r<   s     r   combine_operatorsr?      s     388}CHH%Fs388}oU\]`adaiai]j\kktu
 	
 "XX --E1E1E !55Q9Q9Q!77T3;T;T$S__cooF r+   c                     i }t        | j                               t        |j                               z   D ]  \  }}|}||v rt        ||   |      }|||<   ! |S r   )r&   itemsr?   )r9   r:   	operatorsr   opnew_ops         r   merge_operator_dictsrE      sb     46ICIIK(4		+<<i&y'92>F#	' = r+   r   c                 *    | j                  d      d   S )N.r   )split)r   s    r   strip_operator_overload_namerI      s    ==a  r+   N)r9   r	   r:   r	   r   r	   )dataclassesr   typingr   r   r   r	   r   r=   r?   rE   rI   r8   r+   r   <module>rL      s    ! ( ( $i i iX1	%S/	"1	%S/	"1 eCHo1	!(@.	c))	*	c))	* 
#%
%&!# !# !r+   