Ë
    pPêjë*  ã                  ó¨  — 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Zddlm	Z	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 dd
lmZ ddlmZ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% 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l0m1Z1 ejd                  jg                  e1d«      Z4ejd                  jg                  e1d«      Z5 G d„ de«      Z6	 	 	 	 	 	 d+d„Z7ejp                  d,d„«       Z9	 	 	 	 	 	 	 	 d-d„Z:	 d.	 	 	 	 	 d/d„Z;	 d.	 	 	 	 	 d0d„Z<d1d „Z=	 	 d2	 	 	 	 	 	 	 	 	 	 	 d3d!„Z>d4d"„Z?d5d#„Z@d6d$„ZAd7d%„ZBd8d&„ZCd9d'„ZDd:d(„ZEd;d)„ZFd<d*„ZGy)=zHelpers for writing testsé    )ÚannotationsN)ÚCallableÚIterator)Úbuild)ÚCompileError)Úprocess_options)Ú
ExpressionÚMypyFile)ÚOptions)Útest_temp_dir)ÚDataDrivenTestCaseÚ	DataSuite)Úassert_string_arrays_equal)ÚType)Úassert_func_ir_valid)ÚIS_32_BIT_PLATFORMÚPLATFORM_SIZE)ÚErrors)ÚFuncIR)ÚModuleIR)Úbuild_ir)ÚMapper)ÚCompilerOptions)Útest_data_prefixzfixtures/ir.pyzfixtures/testutil.pyc                  ó    — e Zd ZU g Zded<   eZy)ÚMypycDataSuiteú	list[str]ÚfilesN)Ú__name__Ú
__module__Ú__qualname__r   Ú__annotations__r   Údata_prefix© ó    úX/home/oem/CyberBrain26-unified/.venv/lib/python3.12/site-packages/mypyc/test/testutil.pyr   r   %   s   … à€Eˆ9ÓØ"�Kr%   r   c                ó   ‡ ‡— ˆ ˆfd„S )zÐDecorate a function that implements a data-driven test case to copy an
    alternative builtins module implementation in place before performing the
    test case. Clean up after executing the test case.
    c                ó   •— t        ‰‰| «      S ©N)Úperform_test)ÚtestcaseÚfuncÚpaths    €€r&   ú<lambda>z"builtins_wrapper.<locals>.<lambda>2   s   ø€ œL¨¨t°XÓ>€ r%   r$   )r,   r-   s   ``r&   Úbuiltins_wrapperr/   +   s   ù€ ô ?Ð>r%   c              #  ó¦  K  — |j                   D ]+  \  }}t        j                  j                  |«      dk(  sŒ)d} nZ t        j                  j	                  t        j                  j                  t        d«      «      }t        j                  | |«       d}	 d –— |rt        j                  «       y y # |rt        j                  «       w w xY w­w)Nzbuiltins.pyiFT)
r   Úosr-   ÚbasenameÚabspathÚjoinr   ÚshutilÚcopyfileÚremove)Úbuiltins_pathr+   r-   Ú_Údefault_builtinsÚbuiltinss         r&   Úuse_custom_builtinsr<   5   s§   è ø€ à—>‘>ò  ‰ˆˆaÜ�7‰7×Ñ˜DÓ! ^Ó3Ø$ÐÙð ô —7‘7—?‘?¤2§7¡7§<¡<´¸~Ó#NÓOˆÜ�‰˜ xÔ0ØÐð ØŠ
áä�I‰I�hÕð øÑä�I‰I�hÕð üs#   ‚5C¸ACÂB4 ÂCÂ4CÃCc                ó0  — |j                   D ]+  \  }}t        j                  j                  |«      dk(  sŒ)d} n= t        j                  j	                  t
        d«      }t        j                  ||«       d} | |«       |rt        j                  «       y y )Nzbuiltins.pyFT)	r   r1   r-   r2   r4   r   r5   r6   r7   )r,   r8   r+   r-   r9   r:   r;   s          r&   r*   r*   J   s‚   € ð —>‘>ò  ‰ˆˆaÜ�7‰7×Ñ˜DÓ! ]Ó2Ø$ÐÙð ô —7‘7—<‘<¤¨}Ó=ˆÜ�‰˜ xÔ0ØÐñ 	ˆ„Náä
�	‰	�(Õð r%   c                ó4   — t        | |«      d   j                  S )Nr   )Úbuild_ir_for_single_file2Ú	functions)Úinput_linesÚcompiler_optionss     r&   Úbuild_ir_for_single_filerC   _   s   € ô % [Ð2BÓCÀAÑF×PÑPÐPr%   c                óŽ  — dj                  | «      }t        j                  d|t        j                  ¬«      }|xs t	        d¬«      }|r0|j                  d«      j                  «       }t        |d¬«      \  }}n
t        «       }d	|_	        d	|_
        d	|_        d	|_        |j                  xs d|_        d	|_        d	|_        d	|_        d	|_        d	|_        d	|_        d
d	i|j(                  d<   t+        j,                  dd|«      }t+        j*                  |g|t.        ¬«      }|j0                  j2                  j5                  «        |j6                  rt9        |j6                  «      ‚t;        |«      }	t=        dd i«      }
t?        |j@                  d   g|jB                  |jD                  |
||	«      }|	jF                  rt9        |	jI                  «       «      ‚tK        |jM                  «       «      d   }|jN                  D ]  }tQ        |«       Œ |jB                  |jR                     jT                  }|€J ‚|||jD                  |
fS )Nú
z# flags: (.*)$)Úflags©é   é
   )Úcapi_versioné   F)Úrequire_targetsTÚmypycÚ__main__Úmain)ÚsourcesÚoptionsÚalt_lib_pathr   )+r4   ÚreÚsearchÚ	MULTILINEr   ÚgroupÚsplitr   r   Úshow_tracebackÚhide_error_codesÚuse_builtins_fixturesÚstrict_optionalÚpython_versionÚexport_typesÚpreserve_astsÚallow_empty_bodiesÚstrict_bytesÚdisable_bytearray_promotionÚdisable_memoryview_promotionÚper_module_optionsr   ÚBuildSourcer   ÚmanagerÚ	metastoreÚcloseÚerrorsr   r   r   r   r   ÚgraphÚtypesÚ
num_errorsÚnew_messagesÚlistÚvaluesr@   r   ÚfullnameÚtree)rA   rB   Úprogram_textrF   Ú	flag_listr9   rQ   ÚsourceÚresultrh   ÚmapperÚmodulesÚmoduleÚfnrp   s                  r&   r?   r?   e   s  € ð —9‘9˜[Ó)€Lä�I‰IÐ&¨¼B¿L¹LÔI€Eð (ÒP¬?ÈÔ+PÐÙØ—K‘K “N×(Ñ(Ó*ˆ	Ü$ YÀÔF‰
ˆ‰7ä“)ˆØ!€GÔØ#€GÔØ$(€GÔ!Ø"€GÔØ-×<Ñ<ÒGÀ€GÔØ€GÔØ €GÔØ!%€GÔØ€GÔØ*.€GÔ'Ø+/€GÔ(Ø.5°t¨_€G×Ñ˜zÑ*ä×Ñ˜v z°<Ó@€Fô �[‰[ & °7ÌÔW€FØ
‡N�N×Ñ×"Ñ"Ô$Ø‡}‚}Ü˜6Ÿ=™=Ó)Ð)ä�G‹_€FÜ�Z Ð&Ó'€FÜØ	�‰�jÑ	!Ð" F§L¡L°&·,±,ÀÐHXÐZ`ó€Gð ×ÒÜ˜6×.Ñ.Ó0Ó1Ð1ä�'—.‘.Ó"Ó# AÑ&€FØ×Ñò !ˆÜ˜RÕ ð!à�<‰<˜Ÿ™Ñ(×-Ñ-€DØÐÐÐØ�4˜Ÿ™ vÐ-Ð-r%   c                óä  — | j                   €J d«       ‚t        j                  j                  | j                   | j                  «      }t        |«      5 }|j                  «       j                  «       }d d d «       d| j                  › d�}j                  |«      dk7  ry |j                  |«      }|dz   }|t        |«      k  r<||   j                  d«      s(|dz  }|t        |«      k  r||   j                  d«      sŒ(||| }|j                  d«      }	|||	dz   d  |dgz   ||| dj                  |«      }
t        |d	«      5 }t        |
|¬
«       d d d «       y # 1 sw Y   ŒéxY w# 1 sw Y   y xY w)Nztest was not properly set upz[case ú]rK   é   z[out]Ú rE   Úw)Úfile)Úold_cwdr1   r-   r4   r~   ÚopenÚreadÚ
splitlinesÚnameÚcountÚindexÚlenÚ
startswithÚprint)r+   ÚoutputÚtestcase_pathÚfÚ
data_linesÚ	test_slugÚ	start_idxÚstop_idxÚtestÚ	out_startÚdatas              r&   Úupdate_testcase_outputr“   ™   sq  € à×ÑÐ'ÐGÐ)GÓGÐ'Ü—G‘G—L‘L ×!1Ñ!1°8·=±=ÓA€MÜ	ˆmÓ	ð + Ø—V‘V“X×(Ñ(Ó*ˆ
÷+ð ˜Ÿ™˜ qÐ)€IØ×Ñ˜	Ó" aÒ'ØØ× Ñ  Ó+€IØ˜2‰~€HØ
”S˜“_Ò
$¨Z¸Ñ-A×-LÑ-LÈXÔ-VØ�A‰ˆð ”S˜“_Ò
$¨Z¸Ñ-A×-LÑ-LÈXÕ-Vð �i Ð)€DØ—
‘
˜7Ó#€IØ"€Dˆ�Q‰ˆÐØ%)¨R¨D¡[€Jˆy˜Ð"Ø�9‰9�ZÓ €Dä	ˆm˜SÓ	!ð  QÜˆd˜Õ÷ð ÷)+ð +ú÷(ð ús   ÁEÅE&ÅE#Å&E/c           
     óÖ   — d}|�|n| j                   }||k7  r(| j                  j                  dd«      rt        | |«       t	        |||› d| j
                  › d| j                  › d�«       y )NTz--update-dataFz (z, line ú))r‰   ÚconfigÚ	getoptionr“   r   r~   Úline)r+   ÚactualÚmessageÚexpectedÚ	formattedÚ__tracebackhide__Úexpected_outputs          r&   Úassert_test_outputrŸ   µ   sk   € ð Ðà"*Ð"6‘h¸H¿O¹O€OØ˜&Ò  X§_¡_×%>Ñ%>¸ÐPUÔ%VÜ˜x¨Ô0äØ˜ G 9¨B¨x¯}©}¨o¸WÀXÇ]Á]ÀOÐSTÐ!Uõr%   c                óŠ   — g }| D ];  }t        j                  d|«      }|sŒ|j                  |j                  d«      «       Œ= |S )Nzdef ([_a-zA-Z0-9.*$]+)\(rK   )rS   ÚmatchÚappendrV   )r›   ÚresÚsÚms       r&   Úget_func_namesr¦   Ç   sE   € Ø
€CØò #ˆÜ�H‰HÐ0°!Ó4ˆÚØ�J‰J�q—w‘w˜q“zÕ"ð#ð €Jr%   c                ó¸   — g }| D ]R  }|j                  «       j                  d«      r |j                  «       j                  d«      sŒB|j                  |«       ŒT |S )zrReturn a copy of array with comments removed.

    Lines starting with '--' (but not with '---') are removed.
    z--z---)Ústripr‡   r¢   )ÚaÚrr¤   s      r&   Úremove_comment_linesr«   Ð   sT   € ð
 	€AØò ˆØ�7‰7‹9×Ñ Ô%¨a¯g©g«i×.BÑ.BÀ5Ô.IØà�H‰H�Q�Kð	ð
 €Hr%   c                óp   — | j                  «       }t        |«      D ]  \  }}t        d|dz   |fz  «       Œ y )Nz%-4d %srK   )r‚   Ú	enumeraterˆ   )r¤   ÚlinesÚir˜   s       r&   Úprint_with_line_numbersr°   Þ   s:   € Ø�L‰L‹N€EÜ˜UÓ#ò )‰ˆˆ4Üˆi˜1˜q™5 $˜-Ñ'Õ(ñ)r%   c                ó,   — t        d| z   dz   dz   «       y )Nz==================== ú z====================)rˆ   )Útexts    r&   Úheadingr´   ä   s   € Ü	ˆ.˜4Ñ
 #Ñ
%¨Ñ
0Õ1r%   c                ó†   — t        d«       | D ]&  }|D ]  \  }}t        d|› d�«       t        |«       Œ! Œ( t        d«       y )NzGenerated Cz== z ==zEnd C)r´   rˆ   r°   )ÚcfilesrV   ÚcfileÚctexts       r&   Úshow_cr¹   è   sO   € ÜˆMÔØò +ˆØ!ò 	+‰LˆE�5Ü�C˜�w˜cÐ"Ô#Ü# EÕ*ñ	+ð+ô ˆGÕr%   c                ó(  — t        j                  | «      D ]z  \  }}}|D ]o  }|j                  d«      rŒt         j                  j	                  ||«      }t        j
                  |«      j                  |z   }t        j                  |||f¬«       Œq Œ| y )N)z.soz.pydz.oz.obj)Útimes)r1   ÚwalkÚendswithr-   r4   ÚstatÚst_mtimeÚutime)ÚdirÚdeltaÚdirpathr9   Ú	filenamesrƒ   r-   Ú	new_mtimes           r&   Úfudge_dir_mtimesrÆ   ñ   s€   € ô
 "$§¡¨£ò 9Ñˆ��IØò 	9ˆDØ�}‰}Ð:Ô;ØÜ—7‘7—<‘< ¨Ó.ˆDÜŸ™ ›×.Ñ.°Ñ6ˆIÜ�H‰H�T )¨YÐ!7Ö8ñ	9ñ9r%   c                ó  — g }| D ]�  }|j                  d«      }|dk7  rX||d j                  «       d   }t        |dd «      }t        t        |z  «      }|j                  |j                  ||«      «       Œq|j                  |«       Œƒ |S )z2Replace WORDSIZE with platform specific word sizesÚ	WORD_SIZEéÿÿÿÿNr   rI   )ÚfindrW   ÚintÚstrr   r¢   Úreplace)r³   rt   r˜   r…   Úword_size_tokenÚnÚreplace_strs          r&   Úreplace_word_sizerÑ   ÿ   sŽ   € à€FØò 	 ˆØ—	‘	˜+Ó&ˆØ�BŠ;à" 5 6˜l×0Ñ0Ó2°1Ñ5ˆOÜ�O B CÐ(Ó)ˆAÜœm¨aÑ/Ó0ˆKØ�M‰M˜$Ÿ,™, ¸ÓDÕEà�M‰M˜$Õð	 ð €Mr%   c                ó„  — d| v rt         ryd| v rt         syt        d| v dd¬«      }t        j                  d| «      }|r\t	        |j                  d	«      «      t	        |j                  d
«      «      f}|dk\  s
J d| › �«       ‚||_        |j                  |_        nd| v sd| v r
J d| › �«       ‚t        | d«      rd|_	        |S )aù  Look for magic substrings in test case name to set compiler options.

    Return None if the test case should be skipped (always pass).

    Supported naming conventions:

      *_64bit*:
          Run test case only on 64-bit platforms
      *_32bit*:
          Run test caseonly on 32-bit platforms
      *_python3_10* (or for any Python version):
          Use Python 3.10+ C API features (default: lowest supported version)
      *StripAssert*:
          Don't generate code for assert statements
    Ú_64bitNÚ_32bitÚStripAssertrG   T)Ústrip_assertsrJ   Ústrict_traceback_checksz_python([0-9]+)_([0-9]+)(_|\b)rK   é   zUnsupported _python* suffix: Ú_pyÚ_Pythonz,Invalid _py* suffix (should be _pythonX_Y): Úexperimental)
r   r   rS   rT   rË   rV   rJ   r\   Úhas_test_name_tagÚexperimental_features)rƒ   rQ   r¥   Úversions       r&   Ú%infer_ir_build_options_from_test_namerß     s×   € ð" �4ÑÕ.ØØ�4ÑÕ 2ØÜØ# tÐ+¸'Ð[_ô€Gô 	�	‰	Ð3°TÓ:€AÙÜ�q—w‘w˜q“z“?¤C¨¯©°«
£OÐ4ˆØ˜'Ò!ÐIÐ%BÀ4À&Ð#IÓIÐ!Ø&ˆÔØ!(×!5Ñ!5ˆÕØ	�$‰˜) tÑ+ØKÐDÀTÀFÐKÓKˆuÜ˜˜~Ô.Ø(,ˆÔ%Ø€Nr%   c                ó`   — t        j                  dt        j                  |«      › d�| «      duS )z¶Check if a test case name contains a tag token like ``_experimental``.

    A tag matches if it appears as a full underscore-delimited token:
    ``foo_tag_bar`` or ``foo_tag``.
    z(?:^|_)z(?:_|$)N)rS   rT   Úescape)rƒ   Útags     r&   rÜ   rÜ   5  s,   € ô �9‰9˜¤§	¡	¨#£Ð/¨wÐ7¸Ó>ÀdÐJÐJr%   )r,   ú$Callable[[DataDrivenTestCase], None]r-   rÌ   Úreturnrã   )r8   rÌ   r+   r   rä   zIterator[None])r,   rã   r8   rÌ   r+   r   rä   ÚNoner)   )rA   r   rB   úCompilerOptions | Nonerä   zlist[FuncIR])rA   r   rB   ræ   rä   z9tuple[ModuleIR, MypyFile, dict[Expression, Type], Mapper])r+   r   r‰   r   rä   rå   )NN)r+   r   r™   r   rš   rÌ   r›   úlist[str] | Nonerœ   rç   rä   rå   )r›   r   rä   r   )r©   r   rä   r   )r¤   rÌ   rä   rå   )r³   rÌ   rä   rå   )r¶   zlist[list[tuple[str, str]]]rä   rå   )rÁ   rÌ   rÂ   rË   rä   rå   )r³   r   rä   r   )rƒ   rÌ   rä   ræ   )rƒ   rÌ   râ   rÌ   rä   Úbool)HÚ__doc__Ú
__future__r   Ú
contextlibr1   Úos.pathrS   r5   Úcollections.abcr   r   Úmypyr   Úmypy.errorsr   Ú	mypy.mainr   Ú
mypy.nodesr	   r
   Úmypy.optionsr   Úmypy.test.configr   Úmypy.test.datar   r   Úmypy.test.helpersr   Ú
mypy.typesr   Úmypyc.analysis.ircheckr   Úmypyc.commonr   r   Úmypyc.errorsr   Úmypyc.ir.func_irr   Úmypyc.ir.module_irr   Úmypyc.irbuild.mainr   Úmypyc.irbuild.mapperr   Úmypyc.optionsr   Úmypyc.test.configr   r-   r4   ÚICODE_GEN_BUILTINSÚTESTUTIL_PATHr   r/   Úcontextmanagerr<   r*   rC   r?   r“   rŸ   r¦   r«   r°   r´   r¹   rÆ   rÑ   rß   rÜ   r$   r%   r&   ú<module>r     s±  ðÙ å "ã Û 	Û Û 	Û ß .å Ý $Ý %ß +Ý  Ý *ß 8Ý 8Ý Ý 7ß :Ý Ý #Ý 'Ý 'Ý 'Ý )Ý .ð —W‘W—\‘\Ð"2Ð4DÓEÐ à—‘—‘Ð-Ð/EÓF€ô#�Yô #ð?Ø
.ð?Ø69ð?à)ó?ð ×Ñò ó ð ð(Ø
.ðØ?BðØN`ðà	óð, HLðQØðQØ.DðQàóQð HLð1.Øð1.Ø.Dð1.à>ó1.óhð@ "&Ø"&ðØ ðàðð ðð ð	ð
  ðð 
óó$óó)ó2óó9óó #ôLKr%   