
    \hE                     Z    S SK JrJr   " S S\5      rS rS rS rS rS r	\
4S	 jrS
 rg)   )	_toposortgroupbyc                       \ rS rSrSrg)AmbiguityWarning    N)__name__
__module____qualname____firstlineno____static_attributes__r       W/var/www/auris/envauris/lib/python3.13/site-packages/sympy/multipledispatch/conflict.pyr   r      s    r   r   c                 p    [        U 5      [        U5      :H  =(       a    [        [        [        X5      5      $ )z2A is consistent and strictly more specific than B )lenallmap
issubclassabs     r   
supercedesr      s&    q6SV:C
A$9 ::r   c                 t    [        U 5      [        U5      :H  =(       a    [        S [        X5       5       5      $ )z<It is possible for an argument list to satisfy both A and B 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>   s+      4)2vr 2"8j&88)2s   ,.)r   r   zipr   s     r   
consistentr"      s5    Fc!f 4 4),Q4 45r   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   s     r   	ambiguousr$      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 )z4All signature pairs such that A is ambiguous with B c              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>   s.      #9-7 $.a#3#H
1a8H#H-7s   ,/)listr   tuplehashr$   any)
signaturesr   r   s    ``r   ambiguitiesr/      s    c%,-J& :Jq
1q'DG+ $Q?   # #9-7#9  9 QF
FJ : : :s   "B		B	B	9B	c                   ^ [        U S   5      m[        U4S jU  5       5      (       d   e[        T5       VVs/ s H:  n[        U  Vs/ s H  n[        R                  X!   5      PM     sn[         S9S   PM<     snn$ s  snf s  snnf )z)A signature that would break ambiguities     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>%   s     /Jqs1v{Js   )key)r   r   rangemaxtypemro)r.   isigr4   s      @r   super_signaturer=   "   s|    JqMA/J///// a" 1 Z8Zc#&!Z8cB1E " "8 "s   B	!A?*B?Bc                 h    [        X5      (       a"  [        X5      (       a  U" U 5      U" U5      :  $ gg)zNA should be checked before B

Tie broken by tie_breaker, defaults to ``hash``
TFr'   )r   r   tie_breakers      r   edger@   +   s3    
 !aq>KN22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[	        S 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 )zzA sane ordering of signatures to check, first to last

Topoological sort of edges as given by ``edge`` and ``supercedes``
c                     U S   $ )Nr1   r   )xs    r   <lambda>ordering.<locals>.<lambda>?   s    adr   )r*   r   r+   r@   r   itemsr   )r.   r   r   edgesr3   kvs          r   orderingrJ   8   s    
 c%,-J'JZAtAzVaVVZEJNE*E>EH  /4kkm<mdaQq!qtqq!!mE<U K
 "<s"   B3B3 B?
B9B?
9B?
N)utilsr   r   Warningr   r   r"   r$   r/   r=   r,   r@   rJ   r   r   r   <module>rM      s=    %	w 	;
5K
:"   
r   