
    Vhl                       d Z ddlmZ ddlZddlmZmZmZmZ ddl	m
Z
mZ ddlmZ g dZ ed	      Z ed
      Z ed      Z e
d      Z ed      Z ed      Z ed      Z e
d      Zedd       Ze	 	 	 	 	 	 	 	 dd       Z eej.                  d      dd       Zedd       Ze	 	 	 	 	 	 	 	 dd       Z eej0                  d      dd       Z eej2                  d      d d       Zy)!z
Python polyfills for operator
    )annotationsN)AnyCallableoverloadTypeVar)TypeVarTupleUnpack   )substitute_in_graph)
attrgetter
itemgettermethodcaller_T_T1_T2_Ts_U_U1_U2_Usc                    y N )attrs    P/home/dcms/DCMS/lib/python3.12/site-packages/torch/_dynamo/polyfills/operator.pyr   r      s    58    c                    y r   r   )attr1attr2attrss      r   r   r            58r   T)is_embedded_typec                      t               dk(  rt        d      t        d  D              rt        d      d	dt               dk(  r d   d
fd}|S d fd}|S )Nr   z%attrgetter expected 1 argument, got 0c              3  >   K   | ]  }t        |t                 y wr   )
isinstancestr).0r   s     r   	<genexpr>zattrgetter.<locals>.<genexpr>,   s     
7z$$$
7s   zattribute name must be a stringc                J    |j                  d      D ]  }t        | |      }  | S )N.)splitgetattr)objr   names      r   resolve_attrz attrgetter.<locals>.resolve_attr/   s*    JJsO 	%D#t$C	%
r      c                     |       S r   r   )r-   r   r/   s    r   getterzattrgetter.<locals>.getter7   s    T**r   c                0     t         fdD              S )Nc              3  0   K   | ]  } |        y wr   r   )r'   r   r-   r/   s     r   r(   z-attrgetter.<locals>.getter.<locals>.<genexpr>=   s     CTc40Cs   tuple)r-   r    r/   s   `r   r2   zattrgetter.<locals>.getter<   s    CUCCCr   )r-   r   r   r&   returnr   r-   r   r7   r   r-   r   r7   ztuple[Any, ...])len	TypeErrorany)r    r2   r   r/   s   ` @@r   r   r   '   sh    
5zQ?@@

7
779::
 5zQQx	+ M	D Mr   c                    y r   r   )items    r   r   r   B   s    47r   c                    y r   r   )item1item2itemss      r   r   r   F   r!   r   c                 ~     t               dk(  rt        d      t               dk(  r d   dfd}|S d fd}|S )Nr   z%itemgetter expected 1 argument, got 0r0   c                    |    S r   r   )r-   r>   s    r   r2   zitemgetter.<locals>.getterU   s    t9r   c                .     t         fdD              S )Nc              3  (   K   | ]	  }|     y wr   r   )r'   r>   r-   s     r   r(   z-itemgetter.<locals>.getter.<locals>.<genexpr>[   s     5tT5s   r5   )r-   rB   s   `r   r2   zitemgetter.<locals>.getterZ   s    5u555r   r8   r9   )r:   r;   )rB   r2   r>   s   ` @r   r   r   M   sF    
5zQ?@@
5zQQx	 M	6 Mr   c               R     t         t              st        d      d fd}|S )Nzmethod name must be a stringc                (     t        |       i S r   )r,   )r-   argskwargsr.   s    r   callerzmethodcaller.<locals>.callerf   s    !wsD!42622r   r8   )r%   r&   r;   )r.   rI   rJ   rK   s   ``` r   r   r   a   s%    dC 6773 Mr   )r   r&   r7   Callable[[Any], _U])r   r&   r   r&   r    r&   r7   -Callable[[Any], tuple[_U1, _U2, Unpack[_Us]]])r    r&   r7   &Callable[[Any], Any | tuple[Any, ...]])r>   r   r7   rL   )r@   r   rA   r   rB   zUnpack[_Ts]r7   rM   )rB   r   r7   rN   )r.   r&   rI   r   rJ   r   r7   zCallable[[Any], Any])__doc__
__future__r   operatortypingr   r   r   r   typing_extensionsr   r	   
decoratorsr   __all__r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>rV      s_   #  3 3 2 , 7 T]enen5T]enen5 
 8 
 8 
888'*828 
8 X((4@ A4 
 7 
 7 
888'2828 
8 X((4@ A& X**TB Cr   