Ë
    pPêj’!  ã                  ó"  — d Z ddlmZ ddlZddlZddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZmZmZmZmZmZmZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ ddl m!Z!m"Z" ddl#m$Z$m%Z%m&Z& ddl'm(Z(m)Z) ddl*m+Z+m,Z, dZ-dZ.dZ/dZ0 G d„ de"«      Z1y)zETest cases for AST merge (used for fine-grained incremental checking)é    )ÚannotationsN)Úbuild)ÚBuildResult)ÚCompileError)ÚBuildSource)ÚUNBOUND_IMPORTEDÚ
ExpressionÚMypyFileÚSymbolTableÚSymbolTableNodeÚTypeInfoÚTypeVarExprÚVar)ÚOptions)Úget_subexpressions)ÚFineGrainedBuildManager)ÚStrConv)Útest_temp_dir)ÚDataDrivenTestCaseÚ	DataSuite)Úassert_string_arrays_equalÚnormalize_error_messagesÚparse_options)ÚTypeÚTypeStrVisitor)ÚIdMapperÚ
short_typeÚSYMTABLEz	 TYPEINFOÚTYPESÚASTc                  óº   ‡ — e Zd ZdgZdˆ fd„Zdd„Zdd„Z	 	 	 	 	 	 	 	 dd„Z	 	 	 	 	 	 	 	 dd„Zdd„Z	dd„Z
dd	„Zdd
„Zdd„Zdd„Zdd„Z	 	 	 	 	 	 dd„Zdd„Zˆ xZS )ÚASTMergeSuitez
merge.testc                ó  •— t         ‰| �  «        t        dt        «       ¬«      | _        | j                  j
                  €J ‚| j                  j
                  | _        t        | j
                  t        «       ¬«      | _        y )NT)Úshow_idsÚoptions)r%   )ÚsuperÚsetupr   r   Ústr_convÚ	id_mapperr   Útype_str_conv)ÚselfÚ	__class__s    €úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/testmerge.pyr'   zASTMergeSuite.setup*   sX   ø€ Ü‰‰ŒÜ¨´w³yÔAˆŒØ�}‰}×&Ñ&Ð2Ð2Ð2Ø#'§=¡=×#:Ñ#:ˆŒÜ+¨D¯N©NÄGÃIÔNˆÕó    c           	     óœ  — |j                   }|j                  d«      rt        }n6|j                  d«      rt        }n|j                  d«      rt        }nt
        }dj                  |j                  «      }| j                  ||«      }|€J d«       ‚|j                  j                  j                  «        t        |«      }g }|j                  r|j                  |j                  «       t        j                   j                  t"        d«      }t%        j&                  t        j                   j                  t"        d«      |«       |j                  | j)                  |||j*                  «      «       t-        |j                  j.                  d   «      }	|j1                  d	«       | j3                  |d|«      \  }
}|j                  | j)                  |||j*                  «      «       |	D ]  }t5        |t6        «      rŒ||vrŒJ ‚ |j8                  rt;        |«      }t=        |j>                  |d
|j@                  › d|jB                  › d�«       y )NÚ	_symtableÚ	_typeinfoÚ_typesú
z3cases where CompileError occurred should not be runz	target.pyztarget.py.nextÚtargetz==>zInvalid output (z, line ú))"ÚnameÚendswithr   ÚTYPEINFOr   r    ÚjoinÚinputr   ÚmanagerÚfscacheÚflushr   ÚerrorsÚextendÚosÚpathr   ÚshutilÚcopyÚdumpÚtest_modulesr   ÚmodulesÚappendÚbuild_incrementÚ
isinstancer   Únormalize_outputr   r   ÚoutputÚfileÚline)r+   Útestcaser6   ÚkindÚmain_srcÚresultÚfine_grained_managerÚaÚtarget_pathÚold_subexprÚnew_fileÚ	new_typesÚexprs                r-   Úrun_casezASTMergeSuite.run_case1   sÒ  € Ø�}‰}ˆð �=‰=˜Ô%Ü‰DØ�]‰]˜;Ô'Ü‰DØ�]‰]˜8Ô$Ü‰DäˆDà—9‘9˜XŸ^™^Ó,ˆØ—‘˜H hÓ/ˆØÐ!ÐXÐ#XÓXÐ!Ø�‰×Ñ×$Ñ$Ô&Ü6°vÓ>ÐàˆØ�=Š=Ø�H‰H�V—]‘]Ô#ä—g‘g—l‘l¤=°+Ó>ˆÜ�‰”B—G‘G—L‘L¤Ð0@ÓAÀ;ÔOà	�‰�—‘Ð/°°x×7LÑ7LÓMÔNÜ(¨¯©×)?Ñ)?ÀÑ)IÓJˆà	�‰�Œà"×2Ñ2Ð3GÈÐS^Ó_Ñˆ�)Ø	�‰�—‘Ð/°°x×7LÑ7LÓMÔNàò 	)ˆDÜ˜$¤Ô,àà˜yÒ(Ð(Ð(ð	)ð ×$Ò$Ü(¨Ó+ˆAä"Ø�O‰O˜QÐ"2°8·=±=°/ÀÈÏÉÈÐWXÐ Yõ	
r.   c                óè  — t        ||d¬«      }d|_        d|_        d|_        d|_        d|_        d|_        d|_        t        j                  j                  t        d«      }|| j                  _        || j                  _        t        |dd¬«      5 }|j!                  |«       d d d «       	 t#        j"                  t%        |d d «      g|t        ¬«      }|S # 1 sw Y   Œ4xY w# t&        $ r Y y w xY w)	Né   )Úincremental_stepTÚmainÚwÚutf8)Úencoding)Úsourcesr%   Úalt_lib_path)r   ÚincrementalÚfine_grained_incrementalÚuse_builtins_fixturesÚexport_typesÚshow_tracebackÚallow_empty_bodiesÚreveal_verbose_typesr@   rA   r9   r   r(   r%   r*   ÚopenÚwriter   r   r   )r+   ÚsourcerN   r%   Ú	main_pathÚfrQ   s          r-   r   zASTMergeSuite.builda   sæ   € Ü ¨À1ÔEˆØ"ˆÔØ+/ˆÔ(Ø(,ˆÔ%Ø#ˆÔØ!%ˆÔØ%)ˆÔ"Ø'+ˆÔ$Ü—G‘G—L‘L¤°Ó7ˆ	à 'ˆ�‰ÔØ%,ˆ×ÑÔ"Ü�)˜S¨6Ô2ð 	°aØ�G‰G�FŒO÷	ð	Ü—[‘[Ü$ Y°°dÓ;Ð<ØÜ*ôˆFð ˆ÷	ð 	ûô ò 	áð	ús   ÂCÂ/(C% ÃC"Ã%	C1Ã0C1c                óÀ   — |j                  «        |j                  ||fgg «       |j                  j                  |   }|j                  |   j                  «       }||fS ©N)Úflush_cacheÚupdater;   rF   ÚgraphÚtype_map)r+   r;   Ú	module_idrA   Úmodulert   s         r-   rH   zASTMergeSuite.build_increment{   s\   € ð 	×ÑÔØ�‰˜ DÐ)Ð*¨BÔ/Ø—‘×(Ñ(¨Ñ3ˆØ—=‘= Ñ+×4Ñ4Ó6ˆØ�xÐÐr.   c                ól  — |j                   j                  j                  «       D ��ci c]  \  }}||v sŒ||“Œ }}}|t        k(  r| j	                  |«      S |t
        k(  r| j                  |«      S |t        k(  r| j                  |«      S |t        k(  r| j                  ||«      S J d|› �«       ‚c c}}w )NzInvalid kind )r;   rF   Úitemsr    Ú	dump_astsr8   Údump_typeinfosr   Údump_symbol_tablesr   Ú
dump_types)r+   r;   rO   rE   r6   rL   rF   s          r-   rD   zASTMergeSuite.dump„   s¹   € ð *1¯©×)@Ñ)@×)FÑ)FÓ)H÷
Ù%˜4 ÈDÐT`ÒL`ˆD�$‰Jð
ˆñ 
ð ”3Š;Ø—>‘> 'Ó*Ð*Ø”XÒØ×&Ñ& wÓ/Ð/Ø”XÒØ×*Ñ*¨7Ó3Ð3Ø”UŠ]Ø—?‘? 7¨GÓ4Ð4Ø,˜ d VÐ,Ó,ˆuùó
s
   ¨B0µB0c                ó¤   — g }t        |«      D ]?  }||   j                  | j                  «      }|j                  |j	                  «       «       ŒA |S rp   )ÚsortedÚacceptr(   r?   Ú
splitlines)r+   rF   rS   ÚmÚss        r-   ry   zASTMergeSuite.dump_asts”   sK   € ØˆÜ˜“ò 	%ˆAØ˜‘
×!Ñ! $§-¡-Ó0ˆAØ�H‰H�Q—\‘\“^Õ$ð	%ð ˆr.   c                ó†   — g }t        |«      D ]0  }|j                  | j                  |||   j                  «      «       Œ2 |S rp   )r~   r?   Údump_symbol_tableÚnames©r+   rF   rS   Úids       r-   r{   z ASTMergeSuite.dump_symbol_tables›   sD   € ØˆÜ˜“/ò 	DˆBØ�H‰H�T×+Ñ+¨B°¸±×0AÑ0AÓBÕCð	Dàˆr.   c           
     ó¨   — |› d�g}t        |«      D ]=  }|j                  d«      rŒ|j                  d|› d| j                  ||   «      › �«       Œ? |S )Nú:Ú__z    ú: )r~   Ú
startswithrG   Úformat_symbol_table_node)r+   ru   ÚsymtablerS   r6   s        r-   r„   zASTMergeSuite.dump_symbol_table¡   se   € Øˆ{˜!ˆ_ÐˆÜ˜8Ó$ò 	UˆDØ�‰˜tÔ$ØØ�H‰H�t˜D˜6  D×$AÑ$AÀ(È4Á.Ó$QÐ#RÐSÕTð	Uð ˆr.   c                óð  — |j                   €|j                  t        k(  ryyt        t	        |j                   «      j
                  «      › d| j                  j                  |j                   «      › d�}t        |j                   t        «      ri|j                   j                  rS|j                   j                  j                  d«      s.| j                  |j                   j                  «      }|d|› d�z  }|S )Nr   ÚNoneú<ú>ztyping.ú(r5   )ÚnoderO   r   ÚstrÚtypeÚ__name__r)   r‡   rI   r   ÚfullnamerŒ   Úformat_type)r+   r”   r‚   Útypestrs       r-   r�   z&ASTMergeSuite.format_symbol_table_node©   s¹   € Ø�9‰9ÐØ�y‰yÔ,Ò,Ø)ØÜ”4˜Ÿ	™	“?×+Ñ+Ó,Ð-¨Q¨t¯~©~×/@Ñ/@ÀÇÁÓ/KÐ.LÈAÐNˆä�t—y‘y¤#Ô&Ø—	‘	—’Ø—I‘I×&Ñ&×1Ñ1°)Ô<à×&Ñ& t§y¡y§~¡~Ó6ˆGØ�1�W�I˜Q�ÑˆAØˆr.   c                ó„   — g }t        |«      D ]/  }|j                  | j                  ||   j                  «      «       Œ1 |S rp   )r~   r?   Údump_typeinfos_recursiver…   r†   s       r-   rz   zASTMergeSuite.dump_typeinfos¸   sB   € ØˆÜ˜“/ò 	GˆBØ�H‰H�T×2Ñ2°7¸2±;×3DÑ3DÓEÕFð	Gàˆr.   c                óD  — g }t        |j                  «       d„ ¬«      D ]~  \  }}t        |j                  t        «      sŒ!|j                  | j                  |j                  «      «       |j                  | j                  |j                  j                  «      «       Œ€ |S )Nc                ó   — | d   S )Nr   © )Úxs    r-   ú<lambda>z8ASTMergeSuite.dump_typeinfos_recursive.<locals>.<lambda>À   s
   € ¸aÀ¹d€ r.   ©Úkey)	r~   rx   rI   r”   r   r?   Údump_typeinforœ   r…   )r+   r…   rS   r6   r”   s        r-   rœ   z&ASTMergeSuite.dump_typeinfos_recursive¾   sx   € ØˆÜ  §¡£±NÔCò 	I‰JˆD�$Ü˜$Ÿ)™)¤XÕ.Ø—‘˜×+Ñ+¨D¯I©IÓ6Ô7Ø—‘˜×6Ñ6°t·y±y·±ÓGÕHð	Ið ˆr.   c                ó’   — |j                   dk(  rg S |j                  | j                  | j                  ¬«      }|j	                  «       S )Nz	enum.Enum)r(   r*   )r˜   rD   r(   r*   r€   )r+   Úinfor‚   s      r-   r¤   zASTMergeSuite.dump_typeinfoÆ   s;   € Ø�=‰=˜KÒ'àˆIØ�I‰I˜tŸ}™}¸D×<NÑ<NˆIÓOˆØ�|‰|‹~Ðr.   c                ó¼  ‡ ‡
— g }t        |«      D ]Ä  }|j                  j                  }|j                  |   j                  }|€J ‚t        |«      D �ci c]  }||v sŒ|||   “Œ c}Š
‰
sŒ[|j                  d|› �«       t        ‰
ˆ ˆ
fd„¬«      D ]B  }‰
|   }	|j                  t        |«      › d|j                  › d‰ j                  |	«      › �«       ŒD ŒÆ |S c c}w )Nz## c                ó¸   •— | j                   t        | «      | j                  ‰j                  j                  «      ‰|    j                  ‰j                  «      z   fS rp   )rM   r   Ústr_with_optionsr(   r%   r   r*   )Únr+   rt   s    €€r-   r¡   z*ASTMergeSuite.dump_types.<locals>.<lambda>ß   sN   ø€ ØŸ™Ü" 1›Ø×*Ñ*¨4¯=©=×+@Ñ+@ÓAØ" 1™+×,Ñ,¨T×-?Ñ-?Ó@ñAð#€ r.   r¢   r‰   r‹   )
r~   r;   Ú	all_typesrs   Útreer   rG   r   rM   r™   )r+   rF   r;   rS   ru   r«   r¬   r”   rX   Útyprt   s   `         @r-   r|   zASTMergeSuite.dump_typesÍ   sü   ù€ ð ˆô   ›ò 	YˆIØŸ™×1Ñ1ˆIà—=‘= Ñ+×0Ñ0ˆDØÐ#Ð#Ð#ä2DÀTÓ2JöØ*.ÈdÐV_ÒN_��i ‘oÑ%òˆHò Ø—‘˜3˜y˜kÐ*Ô+Ü"Øôôò 
Y�Dð # 4™.�CØ—H‘H¤
¨4Ó 0Ð1°°4·9±9°+¸RÀ×@PÑ@PÐQTÓ@UÐ?VÐWÕXñ
Yð	Yð* ˆùò!s   Á	CÁCc                ó8   — |j                  | j                  «      S rp   )r   r*   )r+   r­   s     r-   r™   zASTMergeSuite.format_typeê   s   € Ø�z‰z˜$×,Ñ,Ó-Ð-r.   )Úreturnr�   )rN   r   r¯   r�   )rl   r•   rN   r   r¯   zBuildResult | None)r;   r   ru   r•   rA   r•   r¯   z'tuple[MypyFile, dict[Expression, Type]])r;   r   rO   r•   rE   ú	list[str]r¯   r°   )rF   údict[str, MypyFile]r¯   r°   )ru   r•   rŽ   r   r¯   r°   )r”   r   r¯   r•   )r…   r   r¯   r°   )r¦   r   r¯   r°   )rF   r±   r;   r   r¯   r°   )r­   r   r¯   r•   )r—   Ú
__module__Ú__qualname__Úfilesr'   rY   r   rH   rD   ry   r{   r„   r�   rz   rœ   r¤   r|   r™   Ú__classcell__)r,   s   @r-   r"   r"   '   sª   ø„ ØˆN€EõOó.
ó`ð4 Ø.ð Ø;>ð ØFIð à	0ó ð-Ø.ð-Ø69ð-ØIRð-à	ó-ó óóóóóóðØ*ðØ5Lðà	ó÷:.r.   r"   )2Ú__doc__Ú
__future__r   r@   rB   Úmypyr   Ú
mypy.buildr   Úmypy.errorsr   Úmypy.modulefinderr   Ú
mypy.nodesr   r	   r
   r   r   r   r   r   Úmypy.optionsr   Úmypy.server.subexprr   Úmypy.server.updater   Úmypy.strconvr   Úmypy.test.configr   Úmypy.test.datar   r   Úmypy.test.helpersr   r   r   Ú
mypy.typesr   r   Ú	mypy.utilr   r   r   r8   r   r    r"   rŸ   r.   r-   ú<module>rÆ      sp   ðÙ Kå "ã 	Û å Ý "Ý $Ý )÷	÷ 	ó 	õ !Ý 2Ý 6Ý  Ý *ß 8ß aÑ aß +ß *ð €Ø€Ø€Ø€ôD.�Iõ D.r.   