
    X-Ph
                    n    U d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
 ddlmZmZ dZded<   ddZddZdS )z*Check for duplicate AST nodes after merge.    )annotations)Final)	DecoratorFakeInfoFuncDef
SymbolNodeVar)get_pathget_reachable_graphFr   DUMP_MISMATCH_NODESoobjectreturnNonec                   t          |           \  }}t          |                                          }d |D             }i }|D ]}t          |t                    r|j        }|s#t          |t          t          f          r@t          |t                    r|j	        r]||vr|||<   g|||         }	}t          |          t          |	          urt          |||          }
t          |	||          }||v rt          dt          |          j        d|d           t          dt          |          t          |
          fz             t          dt          |	          t          |          fz             t           r\||v rXt          d           t          t          |          |           t          d           t          t          |	          |	           |j        |vsJ dS )	zFail if there are two AST nodes with the same fullname reachable from 'o'.

    Raise AssertionError on failure and print some debugging output.
    c                <    g | ]}t          |t                    |S  )
isinstancer   ).0xs     V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/mypy/server/mergecheck.py
<listcomp>z%check_consistency.<locals>.<listcomp>   s'    >>>!Jq*$=$=>A>>>    z
Duplicate z nodes with fullname z found:z
[1] %d: %sz
[2] %d: %sz---N)r   listvaluesr   r   fullnamer	   r   r   is_overloadtyper
   print__name__idpath_to_strr   )r   seenparents	reachablesymsmsymfnsym1sym2path1path2s               r   check_consistencyr.      s	   
 (**MD'T[[]]##I>>y>>>D!A *% *%c8$$ 	\  	 cC+,, 	c7## 	 	Q;;AbE !B%d ::T$ZZ''tW--tW--77Yc!3YYBYYYZZZ,"T((K,>,>!??@@@,"T((K,>,>!??@@@ 	"277%LLL"T((D!!!%LLL"T((D!!!|1$$$$$U*% *%r   pathlist[tuple[object, object]]strc           	         d}| D ]w\  }}t          |          j        }|dv r|dt          |           dz  }4t          |t                    r|d| d| d|j         dz  }^|d	v r	|d| z  }k|d| d| dz  }x|S )
Nz<root>)dicttupleSymbolTabler   [].(:))BuildManagerFineGrainedBuildManager)r   r    reprr   r	   name)r/   resultattrobjts        r   r"   r"   E   s    F * *	cII888'$t**''''FF#s## *4d44Q444444AAA *d**$/d//Q///)Mr   N)r   r   r   r   )r/   r0   r   r1   )__doc__
__future__r   typingr   
mypy.nodesr   r   r   r   r	   mypy.server.objgraphr
   r   r   __annotations__r.   r"   r   r   r   <module>rJ      s    0 0 0 " " " " " "       D D D D D D D D D D D D D D > > > > > > > > #  " " " "4% 4% 4% 4%n     r   