Ë
    pPêjA(  ã                  óÜ  — d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	Z	ddl
mZ ddlmZ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mZmZm Z m!Z! ddl"m#Z#m$Z$ ddl%m&Z& ddl'm(Z(m)Z) ddl*m+Z+ ddl,m-Z-  G d„ de)«      Z. G d„ de)«      Z/dd„Z0d d„Z1d!d„Z2d"d„Z3dd„Z4d#d„Z5 G d„ dejl                  «      Z7 G d„ dejl                  «      Z8ejr                  d$d%d„«       Z:y)&z!Tests for the native mypy parser.é    )ÚannotationsN)ÚIterator)Ú
ReadBuffer)ÚdefaultsÚnodes)ÚEND_TAGÚLIST_GENÚLIST_INTÚLITERAL_INTÚLITERAL_NONEÚLITERAL_STRÚLOCATIONÚread_int)Úparse_mypy_comments)ÚCompileError)ÚStateÚdeserialize_importsÚnative_parseÚparse_to_binary_astÚread_statements)ÚMypyFileÚ
ParseError)ÚOptions)ÚDataDrivenTestCaseÚ	DataSuite)Úassert_string_arrays_equal)Úget_mypy_commentsc                  ó$   — e Zd ZdZdZg d¢Zdd„Zy)ÚNativeParserSuiteTú.)znative-parser.testznative-parser-python311.testznative-parser-python312.testc                ó   — t        |«       y ©N)Útest_parser©ÚselfÚtestcases     ú_/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypy/test/test_nativeparse.pyÚrun_casezNativeParserSuite.run_case.   s
   € Ü�HÕó    N©r&   r   ÚreturnÚNone©Ú__name__Ú
__module__Ú__qualname__Úrequired_out_sectionÚ	base_pathÚfilesr(   © r)   r'   r   r   )   s   „ ØÐØ€IÚb€Eôr)   r   c                  ó"   — e Zd ZdZdZdgZdd„Zy)ÚNativeParserImportsSuiteTr    znative-parser-imports.testc                ó   — t        |«       y r"   )Útest_parser_importsr$   s     r'   r(   z!NativeParserImportsSuite.run_case7   s
   € Ü˜HÕ%r)   Nr*   r-   r4   r)   r'   r6   r6   2   s   „ ØÐØ€IØ)Ð*€Eô&r)   r6   c           	     ó@  — t        «       }d|_        | j                  j                  d«      rd|_        n¡| j                  j                  d«      rd|_        n~| j                  j                  d«      rd|_        n[| j                  j                  d«      rd	|_        n8| j                  j                  d
«      rd|_        nt
        j                  |_        dj                  | j                  «      }t        |«      }t        ||«      \  }}|j                  |«      }d|v }	 t        |«      5 }t        ||d|«      \  }}	}
|	t        ||«      z  }	d|_        |j!                  |«      j#                  d«      }|	D �cg c]  }t%        |«      ‘Œ c}|z   }|
D �cg c]  }t'        |«      ‘Œ c}|z   }ddd«       t-        | j.                  d| j                  › d| j0                  › d�«       yc c}w c c}w # 1 sw Y   ŒFxY w# t(        $ r}|j*                  }Y d}~Œcd}~ww xY w)zkPerform a single native parser test case.

    The argument contains the description of the test case.
    Tzpython310.test©é   é
   zpython311.test)r;   é   zpython312.test)r;   é   zpython313.test)r;   é   zpython314.test)r;   é   ú
z# mypy: ignore-errors=TrueNÚmainúInvalid parser output (ú, line ú))r   Úhide_error_codesÚfileÚendswithÚpython_versionr   ÚPYTHON3_VERSIONÚjoinÚinputr   r   Úapply_changesÚtemp_sourcer   Ú	load_treeÚpathÚstr_with_optionsÚsplitÚformat_errorÚformat_ignorer   Úmessagesr   ÚoutputÚline)r&   ÚoptionsÚsourceÚcommentsÚchangesÚ_Úskip_function_bodiesÚfnamÚnodeÚerrorsÚtype_ignoresÚaÚerrÚignoreÚes                  r'   r#   r#   ;   sê  € ô
 ‹i€GØ#€GÔà‡}�}×ÑÐ.Ô/Ø!(ˆÕØ	�‰×	Ñ	Ð 0Ô	1Ø!(ˆÕØ	�‰×	Ñ	Ð 0Ô	1Ø!(ˆÕØ	�‰×	Ñ	Ð 0Ô	1Ø!(ˆÕØ	�‰×	Ñ	Ð 0Ô	1Ø!(ˆÕä!)×!9Ñ!9ˆÔà�Y‰Y�x—~‘~Ó&€Fô ! Ó(€HÜ$ X¨wÓ7�J€GˆQØ×#Ñ# GÓ,€Gð 8¸6ÐAÐð	Ü˜Ó ð 	G DÜ)5°d¸GÀTÐK_Ó)`Ñ&ˆD�&˜,Ø”i  gÓ.Ñ.ˆFØˆDŒIØ×%Ñ% gÓ.×4Ñ4°TÓ:ˆAØ.4Ö5 s”˜cÕ"Ò5¸Ñ9ˆAØ5AÖB¨6”˜vÕ&ÒBÀQÑFˆA÷	Gô Ø�‰˜Ð5°h·m±m°_ÀGÈHÏMÉMÈ?ÐZ[Ð\õùò	 6ùÚB÷	Gð 	Gûô ò Ø�J‰J�ûðúsO   Ä!G> Ä,AG2Å9G(Æ
G2ÆG-Æ'G2Æ-G> Ç(
G2Ç2G;Ç7G> Ç>	HÈHÈHc                ó(   — | d   › d| d   › d| d   › �S )NrW   ú:Úcolumnz	: error: Úmessager4   )rc   s    r'   rS   rS   i   s&   € Ø�&‰kˆ]˜!˜C ™M˜?¨)°C¸	±NÐ3CÐDÐDr)   c                óJ   — | \  }}|sd|› �S d|› ddj                  |«      › d�S )Nzignore: ú [ú, ú])rK   )rd   rW   Úcodess      r'   rT   rT   m   s:   € Ø�K€Dˆ%ÙØ˜$˜Ð Ð à˜$˜˜r $§)¡)¨EÓ"2Ð!3°1Ð5Ð5r)   c                ó  — | j                   €J ‚t        |«      }t        | j                   j                  «      }t	        |«      }t        |||«      | _        t        | j                   j                  «      | _        d| _         |j                  S )z.Deserialize full AST from serialized raw data.N)	Úraw_datar   r   Údefsr   r   r   Úimportsr`   )r_   rX   ÚstateÚdataÚns        r'   rO   rO   u   so   € à�=‰=Ð$Ð$Ð$Ü�'‹N€EÜ�d—m‘m×(Ñ(Ó)€DÜ�‹€AÜ  t¨QÓ/€D„IÜ& t§}¡}×'<Ñ'<Ó=€D„LØ€D„MØ�<‰<Ðr)   c           	     óê  — t        «       }d|_        d|_        dj                  | j                  «      }	 t        |«      5 }t        ||«      \  }}}|t        ||«      z  }t        |«      }|D �cg c]  }t        |«      ‘Œ c}|z   }ddd«       t        | j                  d| j                  › d| j                  › d�«       yc c}w # 1 sw Y   ŒAxY w# t        $ r}	|	j                  }Y d}	~	Œ^d}	~	ww xY w)z¬Perform a single native parser imports test case.

    The argument contains the description of the test case.
    This test outputs only reachable import information.
    Tr:   rA   NrC   rD   rE   )r   rF   rI   rK   rL   rN   r   rO   Úformat_reachable_importsrS   r   rU   r   rV   rG   rW   )
r&   rX   rY   r^   r_   r`   ra   rb   rc   re   s
             r'   r8   r8   �   sæ   € ô ‹i€GØ#€GÔØ$€GÔà�Y‰Y�x—~‘~Ó&€FðÜ˜Ó ð 	: DÜ)5°d¸GÓ)DÑ&ˆD�&˜,Ø”i  gÓ.Ñ.ˆFä(¨Ó.ˆAØ.4Ö5 s”˜cÕ"Ò5¸Ñ9ˆA÷	:ô Ø�‰˜Ð5°h·m±m°_ÀGÈHÏMÉMÈ?ÐZ[Ð\õùò	 6÷	:ð 	:ûô ò Ø�J‰J�ûðúsA   µC Á /CÁ/CÂCÂC ÃCÃCÃC Ã	C2ÃC-Ã-C2c           
     ód  — ddl m}m}m} g }| j                  D �cg c]  }|j
                  rŒ|‘Œ }}|D �]ò  }|j                  }g }|j                  s|j                  d«       |j                  r|j                  d«       |rddj                  |«      z   dz   nd}	t        ||«      rK|j                  D ];  \  }
}|r|j                  |› d	|
› d
|› |	› �«       Œ$|j                  |› d	|
› |	› �«       Œ= Œ¾t        ||«      r¸|j                  dkD  r/d|j                  z  }|j                  r|› |j                  › �}n|}n|j                  }g }|j                  D ]/  \  }}|r|j                  |› d
|› �«       Œ|j                  |«       Œ1 dj                  |«      }|j                  |› d|› d|› |	› �«       �Œ‚t        ||«      s�Œ�|j                  dkD  r/d|j                  z  }|j                  r|› |j                  › �}n|}n|j                  }|j                  |› d|› d|	› �«       �Œõ |S c c}w )zŽFormat reachable imports from a MypyFile node.

    Returns a list of strings representing reachable imports with line numbers and flags.
    r   )ÚImportÚ	ImportAllÚ
ImportFromznot top_levelÚ	mypy_onlyrk   rl   rm   Ú z	: import z as r    z: from z import z	 import *)Ú
mypy.nodesry   rz   r{   rr   Úis_unreachablerW   Úis_top_levelÚappendÚis_mypy_onlyrK   Ú
isinstanceÚidsÚrelativeÚidÚnames)r_   ry   rz   r{   rV   ÚimpÚreachable_importsÚline_numÚflagsÚ	flags_strÚ	module_idÚas_idÚprefixÚmoduleÚ
name_partsÚnameÚas_nameÚ	names_strs                     r'   rw   rw   œ   s=  € ÷
 9Ñ8à€Fð )-¯©ÖO ¸C×<NÓ<NšÐOÐÐOà ó 5LˆØ—8‘8ˆð ˆØ×ÒØ�L‰L˜Ô)Ø×ÒØ�L‰L˜Ô%á5:�D˜4Ÿ9™9 UÓ+Ñ+¨cÒ1Àˆ	ä�c˜6Ô"à$'§G¡Gò PÑ �	˜5ÙØ—M‘M X J¨i¸	°{À$ÀuÀgÈiÈ[Ð"YÕZà—M‘M X J¨i¸	°{À9À+Ð"NÕOñ	Pô
 ˜˜ZÔ(ð �|‰|˜aÒØ˜sŸ|™|Ñ+�Ø—6’6Ø &˜x¨¯© xÐ0‘Fà#‘FàŸ™�ð ˆJØ!$§¡ò ,‘��gÙØ×%Ñ%¨¨¨d°7°)Ð&<Õ=à×%Ñ% dÕ+ð	,ð Ÿ	™	 *Ó-ˆIØ�M‰M˜X˜J g¨f¨X°X¸i¸[ÈÈÐTÖUÜ˜˜YÖ'ð �|‰|˜aÒØ˜sŸ|™|Ñ+�Ø—6’6Ø &˜x¨¯© xÐ0‘Fà#‘FàŸ™�à�M‰M˜X˜J g¨f¨X°Y¸y¸kÐJÖKðk5Lðn €Mùòs Ps
   ›H-­H-c                  ó4   — e Zd Zdd„Zdd„Zdd„Zdd„Zdd„Zy)	ÚTestNativeParserBinaryFormatc          
     ó,  ‡— dd„Šdd„}dˆfd„}| j                  t        |«      t        dt        j                  t        j
                  gt        j                  t        gz    ‰d«      gz   t        d«      z    |dddd«      z   t        t        dt        j                  gz   t         ‰d«      gz   t        d	«      z    |d
«      gz    |dddd«      z   t        gz   t        d ‰d«      gz   t        dt        gz    |dddd«      z   t        t        gz   «       y )Nc                ó   — | dz   dz  S )Nr<   é   r4   )ru   s    r'   Úint_enczITestNativeParserBinaryFormat._assert_trivial_binary_data.<locals>.int_encç   s   € Ø˜‘F˜q‘=Ð r)   c                ó   — t        | «      S r"   )Úint)Úbs    r'   Úbool_enczJTestNativeParserBinaryFormat._assert_trivial_binary_data.<locals>.bool_encê   s   € Ü�q“6ˆMr)   c                óV   •— t          ‰| «       ‰|«       ‰|| z
  «       ‰||z
  «      gS r"   )r   )Ú
start_lineÚstart_columnÚend_lineÚ
end_columnrš   s       €r'   ÚlocszFTestNativeParserBinaryFormat._assert_trivial_binary_data.<locals>.locsí   s:   ø€ äÙ˜
Ó#Ù˜Ó%Ù˜ :Ñ-Ó.Ù˜
 \Ñ1Ó2ðð r)   é   é   s   printr™   r   s   helloFé   r?   r@   )ru   rœ   r+   rœ   )r�   Úboolr+   rœ   )
r    rœ   r¡   rœ   r¢   rœ   r£   rœ   r+   z	list[int])ÚassertEqualÚlistr   r   Ú	EXPR_STMTÚ	CALL_EXPRÚ	NAME_EXPRr   r   r	   ÚSTR_EXPRr
   r   )r%   r�   rž   r¤   rš   s       @r'   Ú_assert_trivial_binary_dataz8TestNativeParserBinaryFormat._assert_trivial_binary_dataã   s3  ø€ ó	!ó	õ	ð 	×ÑÜ�‹Gä˜b¤%§/¡/´5·?±?ÐCÜ—?‘?¤KÐ0ñ1á˜1“:�,ñô �x“.ñ!ñ �q˜!˜Q Ó"ñ	#ô
 œH b¬%¯.©.Ð9ñ:ô ¡¨£
Ð+ñ,ô �x“.ñ!ñ ˜E“?Ð#ñ$ñ �q˜!˜Q Ó#ñ	$ô �)ñ
ô ˜R¡¨£Ð,ñ-ô ˜R¤Ð.ñ/ñ �q˜!˜Q Ó#ñ$ô  œGÐ$ñ!%õ	
r)   c           	     ó    — t        d«      5 }t        |t        «       «      \  }}}}}}}}| j                  |«       d d d «       y # 1 sw Y   y xY w)Núprint('hello'))rN   r   r   r¯   )r%   r^   r�   r\   s       r'   Ú"test_trivial_binary_data_from_filez?TestNativeParserBinaryFormat.test_trivial_binary_data_from_file  sO   € ÜÐ)Ó*ð 	0¨dÜ%8¸¼w»yÓ%IÑ"ˆAˆq�!�Q˜˜1˜a Ø×,Ñ,¨QÔ/÷	0÷ 	0ñ 	0ús   Œ/AÁAc                ób   — t        dt        «       d«      \  }}}}}}}}| j                  |«       y )Nr}   r±   ©r   r   r¯   ©r%   r�   r\   s      r'   Ú+test_trivial_binary_data_from_string_sourcezHTestNativeParserBinaryFormat.test_trivial_binary_data_from_string_source  s2   € Ü!4°R¼»ÐDTÓ!UÑˆˆ1ˆa��A�q˜!˜QØ×(Ñ(¨Õ+r)   c                ób   — t        dt        «       d«      \  }}}}}}}}| j                  |«       y )Nr}   s   print('hello')r´   rµ   s      r'   Ú*test_trivial_binary_data_from_bytes_sourcezGTestNativeParserBinaryFormat.test_trivial_binary_data_from_bytes_source  s2   € Ü!4°R¼»ÐDUÓ!VÑˆˆ1ˆa��A�q˜!˜QØ×(Ñ(¨Õ+r)   c                ó‚   — | j                  t        «      5  t        dt        «       d«       d d d «       y # 1 sw Y   y xY w)Nr}   ó   ÿ)ÚassertRaisesr   r   r   )r%   s    r'   Útest_invalid_bytes_raisesz6TestNativeParserBinaryFormat.test_invalid_bytes_raises  s3   € Ø×Ñœ|Ó,ñ 	8Ü ¤G£I¨wÔ7÷	8÷ 	8ñ 	8ús   –5µ>N)r�   Úbytesr+   r,   ©r+   r,   )r.   r/   r0   r¯   r²   r¶   r¸   r¼   r4   r)   r'   r–   r–   â   s   „ ó(
óT0ó
,ó,ô8r)   r–   c                  ó   — e Zd Zdd„Zdd„Zy)ÚTestNativeParserCustomEncodingc                ót   — d}t        |d¬«      5 }t        |t        «       «       d d d «       y # 1 sw Y   y xY w)Nu!   # coding: latin1
JÃ©rÃ´me = FalseÚlatin1©Úencoding)rN   r   r   ©r%   rY   r^   s      r'   Útest_latin1z*TestNativeParserCustomEncoding.test_latin1   s4   € Ø5ˆÜ˜¨(Ô3ð 	1°tÜ ¤g£iÔ0÷	1÷ 	1ñ 	1ús   �.®7c                óÐ   — d}t        |d¬«      5 }t        j                  t        «      5  t	        |t        «       «       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)Nu    # coding: ascii
JÃ©rÃ´me = FalserÂ   rÃ   )rN   ÚpytestÚraisesÚUnicodeDecodeErrorr   r   rÅ   s      r'   Útest_latin1_brokenz1TestNativeParserCustomEncoding.test_latin1_broken%  s[   € Ø4ˆÜ˜¨(Ô3ð 	5°tÜ—‘Ô1Ó2ñ 5Ü# D¬'«)Ô4÷5÷	5ð 	5÷5ð 5ú÷	5ð 	5ús!   �AªA¿AÁA	ÁAÁA%Nr¾   )r.   r/   r0   rÆ   rË   r4   r)   r'   rÀ   rÀ     s   „ ó1ô
5r)   rÀ   c              #  ó(  K  — t        j                  «       5 }t        j                  j	                  |d«      }t        |d«      5 }|j                  | j                  |«      «       d d d «       |–— d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w­w)Nzt.pyÚwb)ÚtempfileÚTemporaryDirectoryÚosrP   rK   ÚopenÚwriteÚencode)ÚtextrÄ   Útemp_dirÚ	temp_pathÚfs        r'   rN   rN   ,  s|   è ø€ ä	×	$Ñ	$Ó	&ð ¨(Ü—G‘G—L‘L ¨6Ó2ˆ	Ü�)˜TÓ"ð 	+ aØ�G‰G�D—K‘K Ó)Ô*÷	+àŠ÷	ð ÷	+ð 	+ú÷ð üs4   ‚B—-BÁ!A:Á%BÁ1	BÁ:B	Á?BÂBÂBr*   )rc   r   r+   Ústr)rd   ztuple[int, list[str]]r+   rØ   )r_   r   rX   r   r+   zlist[ParseError])r_   r   r+   z	list[str])zutf-8)rÔ   rØ   rÄ   rØ   r+   zIterator[str]);Ú__doc__Ú
__future__r   Ú
contextlibrÐ   rÎ   ÚunittestÚcollections.abcr   rÈ   Úlibrt.internalr   Úmypyr   r   Ú
mypy.cacher   r	   r
   r   r   r   r   r   Úmypy.config_parserr   Úmypy.errorsr   Úmypy.nativeparser   r   r   r   r   r~   r   r   Úmypy.optionsr   Úmypy.test.datar   r   Úmypy.test.helpersr   Ú	mypy.utilr   r   r6   r#   rS   rT   rO   r8   rw   ÚTestCaser–   rÀ   ÚcontextmanagerrN   r4   r)   r'   ú<module>rê      sÎ   ðÙ 'å "ã Û 	Û Û Ý $ã Ý %ç  ÷	÷ 	ó 	õ 3Ý $÷õ ÷ ,Ý  ß 8Ý 8Ý 'ô˜	ô ô&˜yô &ó+ó\Eó6ó	óó6CôL:8 8×#4Ñ#4ô :8ôz
5 X×%6Ñ%6ô 
5ð ×Ñóó ñr)   