NL i%dZddlmZddlZddlZddlZddlZddlZddlm Z ddl m Z ddl m Z ddlmZddlmZmZdd lmZdd lmZdd lmZmZdd lmZdd lmZddlmZddl m!Z!m"Z"ddl#m$Z$ddl%m&Z&ddl'm(Z(ddl)m*Z*ddl+m,Z,ddl-m.Z.ddl/m0Z0ejbjee0dZ3ejbjee0dZ4GddeZ5 d*dZ6ejnd+dZ8 d,dZ9 d- d.dZ: d- d/dZ;d0d Z< d1 d2d!Z=d3d"Z>d4d#Z?d5d$Z@d6d%ZAd7d&ZBd8d'ZCd9d(ZDd:d)ZEy);zHelpers for writing tests) annotationsN)Iterator)Callable)build) CompileError) ExpressionMypyFile)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_prefixzfixtures/ir.pyzfixtures/testutil.pyc eZdZUgZded<eZy)MypycDataSuite list[str]filesN)__name__ __module__ __qualname__r__annotations__r data_prefixY/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/test/testutil.pyrr%sE9"Kr$rcfdS)zDecorate 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. ct|SN) perform_test)testcasefuncpaths r%z"builtins_wrapper..2sLtX>r$r#)r+r,s``r%builtins_wrapperr.+s  ?>r$c#K|jD]+\}}tjj|dk(s)d}nZtjj tjj t d}tj||d} d|rtjyy#|rtjwwxYww)Nz builtins.pyiFT) rosr,basenameabspathjoinr shutilcopyfileremove) builtins_pathr*r,_default_builtinsbuiltinss r%use_custom_builtinsr;5s>> a 77  D !^ 3$   77??277<< ~#NO x0   IIh    IIh  s#5CACB4C4CCc0|jD]+\}}tjj|dk(s)d}n=tjj t d}t j||d}|||rtjyy)Nz builtins.pyFT) rr0r,r1r3r r4r5r6)r+r7r*r,r8r9r:s r%r)r)Js>> a 77  D !] 2$   77<< }= x0 N (r$c4t||djS)Nr)build_ir_for_single_file2 functions) input_linescompiler_optionss r%build_ir_for_single_filerB_s %[2B CA F P PPr$cldj|}|xs td}t}d|_d|_d|_d|_|jxsd|_d|_d|_ d|_ ddi|jd<tjdd|}tj|g|t}|jrt!|jt#|}t%ddi}t'|j(dg|j*|j,|||}|j.rt!|j1t3|j5d } | j6D] } t9| |j*| j:j<} | J| | |j,|fS) N  ) capi_versionTmypyc__main__main)sourcesoptions alt_lib_pathr)r3rr show_tracebackhide_error_codesuse_builtins_fixturesstrict_optionalpython_version export_types preserve_astsallow_empty_bodiesper_module_optionsr BuildSourcer errorsrrrrrgraphtypes num_errors new_messageslistvaluesr?rfullnametree) r@rA program_textrMsourceresultrYmappermodulesmodulefnras r%r>r>es99[)L(O?+OiG!G#G$(G!"G-<<FGG G!%G.5t_Gz*   vz< @F[[&7 WF }}6==)) G_F Z& 'F j !"FLL&,,HXZ`G6..011 '.." #A &F!R ! << ( - -D    4v --r$c|jJdtjj|j|j}t |5}|j j}dddd|jd}j|dk7ry|j|}|dz}|t|kr<||jds(|dz }|t|kr||jds(|||}|jd} ||| dzd|dgz|||dj|} t |d 5}t| | dddy#1swYxYw#1swYyxYw) Nztest was not properly set upz[case ] z[out]rDw)file)old_cwdr0r,r3roopenread splitlinesnamecountindexlen startswithprint) r*output testcase_pathf data_lines test_slug start_idxstop_idxtest out_startdatas r%update_testcase_outputrsq    'G)GG 'GGLL!1!18==AM m +VVX((* + q)I "a'  +I2~H S_ $Z-A-L-LX-VA  S_ $Z-A-L-LX-V i )D 7#I"DQ%)RD[Jy" 99Z D mS !Q d)++(sEE&E#&E/c d}||n |j}||k7r(|jjddr t||t |||d|j d|j dy)NTz --update-dataFz (z, line ))rzconfig getoptionrrroline)r*actualmessageexpected formatted__tracebackhide__expected_outputs r%assert_test_outputrsk"*"6hHOOO& X__%>%>PU%Vx0G9Bx}}oWX]]OST!Ur$cg}|D];}tjd|}|s|j|jd=|S)Nzdef ([_a-zA-Z0-9.*$]+)\(rk)rematchappendgroup)rressms r%get_func_namesrsE C # HH0! 4 JJqwwqz "# Jr$cg}|D]R}|jjdr |jjdsB|j|T|S)zrReturn a copy of array with comments removed. Lines starting with '--' (but not with '---') are removed. z--z---)striprxr)arrs r%remove_comment_linesrsT A  779   %aggi.B.B5.I  HHQK  Hr$cp|j}t|D]\}}td|dz|fzy)Nz%-4d %srk)rs enumeratery)rlinesirs r%print_with_line_numbersrs: LLNEU#)4 i1q5$-'()r$c,td|zdzdzy)Nz====================  z====================)ry)texts r%headingrs .4 # % 01r$ctd|D]&}|D]\}}td|dt|!(tdy)Nz Generated Cz== z ==zEnd C)rryr)cfilesrcfilectexts r%show_crsO M+! +LE5 Cwc" # #E * ++ Gr$ctj|D]h\}}}|D]]}tjj||}tj|j |z}tj |||f_jy)N)times)r0walkr,r3statst_mtimeutime)dirdeltadirpathr8 filenamesrtr, new_mtimes r%fudge_dir_mtimesrsn!#9I 9D77<<.D ..6I HHT)Y!7 8 99r$cg}|D]}|jd}|dk7rX||djd}t|dd}tt|z}|j |j ||q|j ||S)z2Replace WORDSIZE with platform specific word sizes WORD_SIZENr )findsplitintstrrrreplace)rrdrrvword_size_tokenn replace_strs r%replace_word_sizers F   +& B;"56l00215OOBC()Ama/0K MM$,, D E MM$    Mr$c<d|vrtryd|vrtsytd|vd}tjd|}|rLt |j dt |j d f|_|j |_|Sd |vsd |vr Jd ||S) aLook 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_8* (or for any Python version): Use Python 3.8+ C API features (default: lowest supported version) *StripAssert*: Don't generate code for assert statements _64bitN_32bit StripAssertrE) strip_assertsrHz_python([3-9]+)_([0-9]+)(_|\b)rk_py_Pythonz,Invalid _py* suffix (should be _pythonX_Y): )rrrsearchrrrHrS)rtrMrs r%%infer_ir_build_options_from_test_namers"4.4 2MT,APVWG 3T:A #AGGAJQWWQZA!(!5!5 N $)t+KDTFKKu Nr$)r+$Callable[[DataDrivenTestCase], None]r,rreturnr)r7rr*r rzIterator[None])r+rr7rr*r rNoner()r@rrACompilerOptions | Nonerz list[FuncIR])r@rrArrz9tuple[ModuleIR, MypyFile, dict[Expression, Type], Mapper])r*r rzrrr)NN) r*r rrrrrlist[str] | Nonerrrr)rrrr)rrrr)rrrr)rrrr)rzlist[list[tuple[str, str]]]rr)rrrrrr)rrrr)rtrrr)F__doc__ __future__r contextlibr0os.pathrr4collections.abcrtypingrmypyr mypy.errorsr mypy.nodesrr mypy.optionsr mypy.test.configr mypy.test.datar r mypy.test.helpersr mypy.typesrmypyc.analysis.ircheckr mypyc.commonrr mypyc.errorsrmypyc.ir.func_irrmypyc.ir.module_irrmypyc.irbuild.mainrmypyc.irbuild.mapperr mypyc.optionsrmypyc.test.configrr,r3ICODE_GEN_BUILTINS TESTUTIL_PATHrr.contextmanagerr;r)rBr>rrrrrrrrrrr#r$r%rs"  $$+ *887:#''').WW\\"24DE -/EF #Y# ? .?69?)?   ( .?BN` ,HLQQ.DQQHL'.'..D'.>'.T@"&"&        $  ) 29  r$