
    ȅi                    .   S r SSKJr  SSKrSSKJrJrJrJr  SSK	J
r
Jr  SSKJr  \(       a  SSKJrJr  / S	Qr\" S
5      r\" S5      r\" S5      r\
" S5      r\" S5      r\" S5      r\" S5      r\
" S5      r\SS j5       r\        SS j5       r\" \R4                  SS9SS j5       r\S S j5       r\        S!S j5       r\" \R6                  SS9S"S j5       r\" \R8                  SS9S#S j5       r\" \R:                  SS9S$S j5       rg)%z
Python polyfills for operator
    )annotationsN)AnyoverloadTYPE_CHECKINGTypeVar)TypeVarTupleUnpack   )substitute_in_graph)CallableIterable)
attrgetter
itemgettermethodcallercountOf_T_T1_T2_Ts_U_U1_U2_Usc                   g N )attrs    Z/home/james-whalen/.local/lib/python3.13/site-packages/torch/_dynamo/polyfills/operator.pyr   r       s    58    c                   g r   r   )attr1attr2attrss      r   r   r   %        58r   T)is_embedded_typec                    ^ ^^ [        T 5      S:X  a  [        S5      e[        S T  5       5      (       a  [        S5      eS	S jm[        T 5      S:X  a  T S   mS
UU4S jjnU$ SU U4S jjnU$ )Nr   z%attrgetter expected 1 argument, got 0c              3  L   #    U  H  n[        U[        5      (       + v   M     g 7fr   )
isinstancestr).0r   s     r   	<genexpr>attrgetter.<locals>.<genexpr>2   s     
7z$$$$s   "$zattribute name must be a stringc                L    UR                  S5       H  n[        X5      n M     U $ )N.)splitgetattr)objr   names      r   resolve_attr attrgetter.<locals>.resolve_attr5   s#    JJsOD#$C $
r      c                   > T" U T5      $ r   r   )r1   r   r3   s    r   getterattrgetter.<locals>.getter=   s    T**r   c                2   >^  [        U U4S jT 5       5      $ )Nc              3  6   >#    U  H  nT" TU5      v   M     g 7fr   r   )r*   r   r1   r3   s     r   r+   -attrgetter.<locals>.getter.<locals>.<genexpr>C   s     CUTc400Us   tuple)r1   r#   r3   s   `r   r7   r8   B   s    CUCCCr   )r1   r   r   r)   returnr   r1   r   r>   r   r1   r   r>   ztuple[Any, ...])len	TypeErrorany)r#   r7   r   r3   s   ` @@r   r   r   -   sv    
5zQ?@@

7
7779::
 5zQQx	+ 	+ M	D 	D Mr   c                   g r   r   )items    r   r   r   H   s    47r   c                   g r   r   )item1item2itemss      r   r   r   M   r$   r   c                    ^ ^ [        T 5      S:X  a  [        S5      e[        T 5      S:X  a  T S   mSU4S jjnU$ SU 4S jjnU$ )Nr   z%itemgetter expected 1 argument, got 0r5   c                   > U T   $ r   r   )r1   rE   s    r   r7   itemgetter.<locals>.getter]   s    t9r   c                0   >^  [        U 4S jT 5       5      $ )Nc              3  .   >#    U  H
  nTU   v   M     g 7fr   r   )r*   rE   r1   s     r   r+   -itemgetter.<locals>.getter.<locals>.<genexpr>c   s     5utTus   r<   )r1   rI   s   `r   r7   rL   b   s    5u555r   r?   r@   )rA   rB   )rI   r7   rE   s   ` @r   r   r   U   sF    
5zQ?@@
5zQQx	 M	6 Mr   c               `   ^ ^^ [        T [        5      (       d  [        S5      eSUUU 4S jjnU$ )Nzmethod name must be a stringc                (   > [        U T5      " T0 TD6$ r   )r0   )r1   argskwargsr2   s    r   callermethodcaller.<locals>.callern   s    sD!42622r   r?   )r(   r)   rB   )r2   rR   rS   rT   s   ``` r   r   r   i   s-    dC  6773 3 Mr   )can_constant_fold_throughc               .   ^ [        U4S jU  5       5      $ )Nc              3  B   >#    U  H  oTL =(       d    UT:H  v   M     g 7fr   r   )r*   itbs     r   r+   countOf.<locals>.<genexpr>w   s     .AbQw!"'!As   )sum)arZ   s    `r   r   r   u   s    .A...r   )r   r)   r>   Callable[[Any], _U])r!   r)   r"   r)   r#   r)   r>   -Callable[[Any], tuple[_U1, _U2, Unpack[_Us]]])r#   r)   r>   &Callable[[Any], Any | tuple[Any, ...]])rE   r   r>   r^   )rG   r   rH   r   rI   zUnpack[_Ts]r>   r_   )rI   r   r>   r`   )r2   r)   rR   r   rS   r   r>   zCallable[[Any], Any])r]   zIterable[_T]rZ   r   r>   int)__doc__
__future__r   operatortypingr   r   r   r   typing_extensionsr   r	   
decoratorsr   collections.abcr   r   __all__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>rj      s   #  8 8 2 , 2 B 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 X%%F/ G/r   