K iEXddlmZmZGddeZdZdZdZdZdZ e fd Z d Z y ) ) _toposortgroupbyc eZdZy)AmbiguityWarningN)__name__ __module__ __qualname__e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/multipledispatch/conflict.pyrrsr rcht|t|k(xrttt||S)z3 A is consistent and strictly more specific than B )lenallmap issubclassabs r supercedesrs( q6SV  :C Aq$9 ::r clt|t|k(xrtdt||DS)z= It is possible for an argument list to satisfy both A and B c3VK|]!\}}t||xs t||#ywN)r).0aabbs r zconsistent..s24%r22r"8jR&884s'))rrziprs r consistentr s7 Fc!f  4 4),Q4 45r cTt||xrt||xs t|| S)z> A is consistent with B but neither is strictly more specific )rrrs r ambiguousr s* a  JZ1%5%IAq9I JJr c ttt|}|Dchc]E|D]>ttkr%t rt fd|Dsf@Gc}}Scc}}w)z5 All signature pairs such that A is ambiguous with B c3RK|]}t|xr t| ywrr)rcrrs r rzambiguities..s/#9()$.a#3#H 1a8H#H#9s$')listrtuplehashr any) signaturesrrs ``r ambiguitiesr*szc%,-J& : :q  :1q'DG+$Q?"#9-7#9 9F :F :: :sA A1c t|dtfd|DsJtDcgc]:}t|Dcgc]}tj ||c}td<c}}Scc}wcc}}w)z* A signature that would break ambiguities c3:K|]}t|k(ywr)r)rsns r rz"super_signature..%s/qs1v{/s)key)rrrangemaxtypemro)r)isigr/s @r super_signaturer7"sr JqMA /J/ // /a " Z8c#a&!8c B1 E ""8 "sA<A7!A<7A<cXt||rt||r||||kDSyy)zW A should be checked before B Tie broken by tie_breaker, defaults to ``hash`` TFr#)rr tie_breakers r edger:+s1 !Q a q>KN2 2 r c pttt|}|Dcgc]}|D]}t||s||f}}}t d|}|D] }||vsg||<|j Dcic]\}}||Dcgc]\}}| c}}}}}}}t |Scc}}wcc}}wcc}}}}w)z A sane ordering of signatures to check, first to last Topoological sort of edges as given by ``edge`` and ``supercedes`` c |dS)Nr,r )xs r zordering..?s adr )r%rr&r:ritemsr)r)rredgesr.kvs r orderingrC8s c%,-J' J JAtAqzaV JV JE J NE *E  E>E!H/4kkm < rFs=% w ; 5K :"  r