
    shr                     v    S SK r SSKJrJr  SSKJr  / SQr " S S\5      rS r	S	 r
S
 rS rS r\4S jrS rg)    N   )	_toposortgroupby)
isvariadic)AmbiguityWarning
supercedes
consistent	ambiguousambiguitiessuper_signatureedgeorderingc                       \ rS rSrSrg)r       N)__name__
__module____qualname____firstlineno____static_attributes__r       ڏ/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/torch/fx/experimental/unification/multipledispatch/conflict.pyr   r      s    r   r   c                 P   [        U 5      [        U5      :  a1  U (       + =(       a#    [        U5      S:H  =(       a    [        US   5      $ [        U 5      [        U5      :X  a  [        [        [        X5      5      $ SnSnU[        U 5      :  a  U[        U5      :  a  X   nX   n[        U5      (       d,  [        U5      (       d  [	        XE5      (       d  gUS-  nUS-  nO[        U5      (       a7  U[        U 5      S-
  :X  d   eU[        U5      S-
  :H  =(       a    [	        XE5      $ [        U5      (       a*  U[        U5      S-
  :X  d   e[	        XE5      (       d  gUS-  nU[        U 5      :  a  U[        U5      :  a  M  U[        U5      S-
  :H  =(       a    U[        U 5      :H  $ )z1A is consistent and strictly more specific than Br   r   F)lenr   allmap
issubclassabp1p2cur_acur_bs         r   r   r      si   
1vAu:Q1:AbE)::	Q3q6	3z1()) 3q6kb3q6kEEEEu%%E):):!%// aaE""SVaZ'''SVaZ'DJu,DDE""SVaZ'''!%// a 3q6kb3q6k  SVaZ0B#a&L0r   c                    U (       d  U(       + =(       d    [        US   5      $ U(       d  U (       + =(       d    [        U S   5      $ [        U 5      [        U5      :X  a  [        S [        X5       5       5      $ SnSnU[        U 5      :  a  U[        U5      :  a  X   nX   n[	        XT5      (       d  [	        XE5      (       d  g[        U5      (       d  [        U5      (       d  US-  nUS-  nO+[        U5      (       a  US-  nO[        U5      (       a  US-  nU[        U 5      :  a  U[        U5      :  a  M  [        W5      =(       a    U[        U5      :H  =(       d     [        W5      =(       a    U[        U 5      :H  $ )z;It is possible for an argument list to satisfy both A and Br   c              3   `   #    U  H$  u  p[        X5      =(       d    [        X!5      v   M&     g 7fN)r   ).0aabbs      r   	<genexpr>consistent.<locals>.<genexpr>A   s$     T):b%;B);;)s   ,.Fr   )r   r   r   zipr   r   s         r   r	   r	   6   sD    u(
1Q4((u(
1Q4(( 1vQT#a)TTT3q6kb3q6kEEEEe++Ju4L4Lu%%E):):aaE""aE""a 3q6kb3q6k u c!f%  c!f		
r   c                 j    [        X5      =(       a"    [        X5      =(       d    [        X5      (       + $ )z<A is consistent with B but neither is strictly more specific)r	   r   )r    r!   s     r   r
   r
   [   s$    aJZ%5%IA9I JJr   c           	        ^^ [        [        [        U 5      5      n U  V^V^s1 s H[  mU   HQ  m[        T5      [        T5      :  d  M  [	        TT5      (       d  M0  [        UU4S jU  5       5      (       a  MM  TT4iMS     M]     snn$ s  snnf )z3All signature pairs such that A is ambiguous with Bc              3   b   >#    U  H$  n[        UT5      =(       a    [        UT5      v   M&     g 7fr(   r   )r)   cr    r!   s     r   r,   ambiguities.<locals>.<genexpr>i   s'     N:aJq!$9Aq)99:s   ,/)listr   tuplehashr
   any)
signaturesr    r!   s    ``r   r   r   `   s    c%,-J AA7T!W 	 aO	 	
 N:NN 	A 	  s   "B		B	B	9B	c                    ^^ [        U S   5      m[        U4S jU  5       5      (       d   e[        T5       V^s/ s H  m[        U4S jU  5       [         S9S   PM      sn$ s  snf )z(A signature that would break ambiguitiesr   c              3   @   >#    U  H  n[        U5      T:H  v   M     g 7fr(   )r   )r)   sns     r   r,   "super_signature.<locals>.<genexpr>p   s     /Jqs1v{Js   c              3   T   >#    U  H  n[         R                  UT   5      v   M     g 7fr(   )typemro)r)   sigis     r   r,   r>   r   s!     8Zc#a&!!Zs   %()key)r   r   rangemax)r9   rC   r=   s    `@r   r   r   m   sW    JqMA/J/////OTUVxXx!C8Z8cB1ExXXXs   %A#c                 v    [        X5      =(       a(    [        X5      (       + =(       d    U" U 5      U" U5      :  $ )zMA should be checked before B
Tie broken by tie_breaker, defaults to ``hash``
r2   )r    r!   tie_breakers      r   r   r   u   s3     a q?AQ ?r   c                    [        [        [        U 5      5      n U  VVs/ s H!  o  H  n[        X5      (       d  M  X4PM     M#     nnn[	        [
        R                  " S5      U5      nU  H  nXC;  d  M
  / X4'   M     UR                  5        VVVVs0 s H  u  pVXV VVs/ s H  u  pUPM	     snn_M     nnnnn[        U5      $ s  snnf s  snnf s  snnnnf )zxA sane ordering of signatures to check, first to last
Topological sort of edges as given by ``edge`` and ``supercedes``
r   )	r5   r   r6   r   r   operator
itemgetteritemsr   )r9   r    r!   edgesr<   kvs          r   r   r      s     c%,-J'JZAtAzVaVVZEJH''*E2E>EH  /4kkm<mdaQq!qtqq!!mE<U K
 "<s"   CCC
 C.C
C
)rJ   utilsr   r   variadicr   __all__Warningr   r   r	   r
   r   r   r7   r   r   r   r   r   <module>rT      sL     %  		w 	1<"
JK

Y   r   