NL iL$ddlmZddlZddlmZddlmZmZddlm Z m Z ddl m Z m Z ddlmZddlmZmZmZmZdd lmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dd l7m8Z8dd l9m:Z:m;Z;mZ>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJdd lKmLZLdd lMmNZNddlOmPZPmQZQmRZRmSZSddlTmUZUddlVmWZWmXZXmYZYddlZm[Z[ddl\m]Z]ddl^m_Z_GddejZaGddejZby)) annotationsN)assert_string_arrays_equal)EmitterEmitterContext)FunctionEmitterVisitorgenerate_native_function) HAVE_IMMORTAL PLATFORM_SIZE)ClassIR)FuncDeclFuncIR FuncSignature RuntimeArg)! ERR_NEVERAssign AssignMulti BasicBlockBoxBranchCallCallCCast ComparisonOpCStringDecRefExtendGetAttr GetElementPtrGotoIncRefIntegerIntOp LoadAddress LoadLiteralLoadMemOpRegisterReturnSetAttr SetElementSetMemTupleGetUnboxUndef UnreachableValue)generate_names_for_ir)RArray RInstanceRStructRTupleRTypebool_rprimitivec_int_rprimitivecstring_rprimitivedict_rprimitiveint32_rprimitiveint64_rprimitiveint_rprimitivelist_rprimitivenone_rprimitiveobject_rprimitivepointer_rprimitiveshort_int_rprimitive)compute_vtable) NameGenerator)dict_get_item_op dict_new_opdict_set_item_opdict_update_op) int_neg_op)list_append_oplist_get_item_oplist_set_item_op)none_object_op) binary_ops) is_subtypeceZdZdZdKdZdKdZdKdZdKdZdKdZdKdZ dKdZ dKd Z dKd Z dKd Z dKd ZdKd ZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZdKdZ dKdZ!dKd Z"dKd!Z#dKd"Z$dKd#Z%dKd$Z&dKd%Z'dKd&Z(dKd'Z)dKd(Z*dKd)Z+dKd*Z,dKd+Z-dKd,Z.dKd-Z/dKd.Z0dKd/Z1dKd0Z2dKd1Z3dKd2Z4dKd3Z5dKd4Z6dKd5Z7dKd6Z8dKd7Z9dKd8Z:dKd9Z;dKd:ZdKd=Z?dKd>Z@dKd?ZAdKd@ZBdKdAZCdKdBZDdKdCZEdKdDZFdKdEZG dLdGdFdGdH dMdIZH dNdJZIyF)OTestFunctionEmitterVisitorz9Test generation of fragments of C from individual IR ops.c g_dfd }|dt_|dt_|dt_|dt _|dt _|dt_ |dt_ |d t_ |d t_|d t_|d t_|d t$_|dt$_|dt*_|dt*_|dt0_|dt5ttg_|dt5t5ttgtg_t;dd}ttt*t$t5ttgd|_ddg|_tA||g|_!|dtE|_#|dtH_%tMdgdtt$t*g_'|djN_(tStUdgg_+y)NcVt||}jj||SN)r' registersappend)namertyperegselfs ^/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/test/test_emitfunc.py add_localz3TestFunctionEmitterVisitor.setUp..add_localWs&5$'C NN ! !# &Jnmkllloo2dbs1s2i32i32_1i64i64_1ptrtttAmod)xyi1i2rnrtrurnoneFoo)rfrrrsst)rWstrrXr6returnr'),rUr=r^r_r`r>rarbr@rcrdr:rer7rfrBrgrhr;rirjr<rkrlrArmr5rnror attributes bitmap_attrsrCmror3rvr?rwr4 struct_typeryrrDcontext)rZr\irs` r[setUpz TestFunctionEmitterVisitor.setUpTs)+  3/3/3/30D/23 12D"343030D"67D"67U$45w(89 U$45w(89 U$673'H IJ &&./!BC_UV S%  ""*,=>?    ,r3 " .fo6 " ?_6FHX$Y D$"2"23%meWI&>? r]cL|jttddy)Nz goto CPyL2;) assert_emitrrrZs r[ test_gotoz$TestFunctionEmitterVisitor.test_gotos jm,m r]cR|jt|jdddy)Nrsra#cpy_r_r0 = ((mod___AObject *)cpy_r_r)->_y; if (unlikely(cpy_r_r0 == CPY_INT_TAG)) { PyErr_SetString(PyExc_AttributeError, "attribute 'y' of 'A' undefined"); } else { CPyTagged_INCREF(cpy_r_r0); } rrrvrs r[ test_get_attrz(TestFunctionEmitterVisitor.test_get_attr|s%  DFFC #  r]cR|jt|jdddy)Nrrrzcpy_r_r0 = ((mod___AObject *)cpy_r_r)->_x; if (unlikely(cpy_r_r0 == 2)) { PyErr_SetString(PyExc_AttributeError, "attribute 'x' of 'A' undefined"); } rrs r[test_get_attr_non_refcountedz7TestFunctionEmitterVisitor.test_get_attr_non_refcounteds%  DFFC #  r]ct|jdd}t|tdtdtj}d|_|j |d|dy) Nrsrrrfoobar{aD cpy_r_r0 = ((mod___AObject *)cpy_r_r)->_y; if (unlikely(cpy_r_r0 == CPY_INT_TAG)) { CPy_AttributeError("prog.py", "foobar", "A", "y", 123, CPyStatic_prog___globals); goto CPyL8; } CPyTagged_INCREF(cpy_r_r0); goto CPyL9; T) next_branch skip_next)rrvrrrtraceback_entryrrZopbranchs r[test_get_attr_mergedz/TestFunctionEmitterVisitor.test_get_attr_mergeds[ TVVS! $JqM:a=&//J!0     r]cR|jt|jdddy)Nrtracpy_r_r0 = ((mod___AObject *)cpy_r_r)->_i1; if (unlikely(cpy_r_r0 == -113) && !(((mod___AObject *)cpy_r_r)->bitmap & 1)) { PyErr_SetString(PyExc_AttributeError, "attribute 'i1' of 'A' undefined"); } rrs r[test_get_attr_with_bitmapz4TestFunctionEmitterVisitor.test_get_attr_with_bitmaps%  DFFD! $  r]cV|jt|jddddy)NrnrT)allow_error_valuezcpy_r_r0 = ((mod___AObject *)cpy_r_r)->_t; if (cpy_r_r0.f0 != NULL) { CPy_INCREF(cpy_r_r0.f0); CPy_INCREF(cpy_r_r0.f1); } rrs r[!test_get_attr_nullable_with_tuplez_y != CPY_INT_TAG) { CPyTagged_DECREF(((mod___AObject *)cpy_r_r)->_y); } ((mod___AObject *)cpy_r_r)->_y = cpy_r_m; cpy_r_r0 = 1; )rr)rvr_rs r[ test_set_attrz(TestFunctionEmitterVisitor.test_set_attrs+  DFFC +  r]ch|jt|jd|jddy)NrrrzS((mod___AObject *)cpy_r_r)->_x = cpy_r_b; cpy_r_r0 = 1; )rr)rvrfrs r[test_set_attr_non_refcountedz7TestFunctionEmitterVisitor.test_set_attr_non_refcounteds+  DFFC +  r]ct|jd|jd}t|_|j |dy)Nrsrzif (((mod___AObject *)cpy_r_r)->_y != CPY_INT_TAG) { CPyTagged_DECREF(((mod___AObject *)cpy_r_r)->_y); } ((mod___AObject *)cpy_r_r)->_y = cpy_r_m; )r)rvr_rrrrZrs r[test_set_attr_no_errorz1TestFunctionEmitterVisitor.test_set_attr_no_errors7 TVVS$&&! ,!     r]ct|jd|jd}t|_|j |dy)Nrrrz6((mod___AObject *)cpy_r_r)->_x = cpy_r_b; )r)rvrfrrrrs r[%test_set_attr_non_refcounted_no_errorz@TestFunctionEmitterVisitor.test_set_attr_non_refcounted_no_errors7 TVVS$&&! ,!     r]c|jt|jd|jdd|jt|jd|jddy)Nrtrif (unlikely(cpy_r_i64 == -113)) { ((mod___AObject *)cpy_r_r)->bitmap |= 1; } ((mod___AObject *)cpy_r_r)->_i1 = cpy_r_i64; cpy_r_r0 = 1; ruzif (unlikely(cpy_r_i32 == -113)) { ((mod___AObject *)cpy_r_r)->bitmap |= 2; } ((mod___AObject *)cpy_r_r)->_i2 = cpy_r_i32; cpy_r_r0 = 1; )rr)rvrkrirs r[test_set_attr_with_bitmapz4TestFunctionEmitterVisitor.test_set_attr_with_bitmapsX  DFFD$((A .    DFFD$((A .  r]czt|jd|jd}d|_|j |dy)NrtrTr)r)rvrkis_initrrs r[test_set_attr_init_with_bitmapz9TestFunctionEmitterVisitor.test_set_attr_init_with_bitmaps7 TVVT488Q /     r]c |jtttj|j |j gtjtjtjtjddy)Nrz.cpy_r_r0 = CPyDict_GetItem(cpy_r_d, cpy_r_o2);) rrrzrErrerdrrrrrs r[test_dict_get_itemz-TestFunctionEmitterVisitor.test_dict_get_itemsd  $445! ,, '' ,, ++  A r]c &|jtttj|j |j |jgtjtjtjtjddy)Nrz7cpy_r_r0 = CPyDict_SetItem(cpy_r_d, cpy_r_o, cpy_r_o2);) rrrzrGrrercrdrrrrrs r[test_dict_set_itemz-TestFunctionEmitterVisitor.test_dict_set_itemsj  $445) ,, '' ,, ++  J r]c |jtttj|j |j gtjtjtjtjddy)Nrz,cpy_r_r0 = CPyDict_Update(cpy_r_d, cpy_r_o);) rrrzrHrrercrrrrrs r[test_dict_updatez+TestFunctionEmitterVisitor.test_dict_update!sb  N223 **%%**))  ? r]c |jttjgtjtj tj tjddy)Nrzcpy_r_r0 = PyDict_New();)rrrFrrrrrrs r[ test_new_dictz(TestFunctionEmitterVisitor.test_new_dict/sP  ++''""''&&  + r]cj|jd|j|j|jdy)Ninz-cpy_r_r0 = PyDict_Contains(cpy_r_d, cpy_r_o);)rrfrcrers r[test_dict_containsz-TestFunctionEmitterVisitor.test_dict_contains=s( "" $&&$&&$&&*] r]c |jtt|j|jtj dd|jtt|j|jtj dd|jtt|j|jtjdd|jtt|j|jtjdd|jtt|j|jtjdd|jtt|j|jtjdd|jtt|j|jtjdd|jtt|j|jtjdd |jtt|j|jtjdd |jtt|j|jtjdd |jtt|j|j tjdd y) Nrzcpy_r_r0 = cpy_r_s1 + cpy_r_s2;zcpy_r_r0 = cpy_r_s1 - cpy_r_s2;zcpy_r_r0 = cpy_r_s1 * cpy_r_s2;zcpy_r_r0 = cpy_r_s1 / cpy_r_s2;zcpy_r_r0 = cpy_r_s1 % cpy_r_s2;zcpy_r_r0 = cpy_r_s1 & cpy_r_s2;zcpy_r_r0 = cpy_r_s1 | cpy_r_s2;zcpy_r_r0 = cpy_r_s1 ^ cpy_r_s2;z cpy_r_r0 = cpy_r_s1 << cpy_r_s2;z8cpy_r_r0 = (Py_ssize_t)cpy_r_s1 >> (Py_ssize_t)cpy_r_s2;z$cpy_r_r0 = cpy_r_i64 >> cpy_r_i64_1;)rr"rBrgrhADDSUBMULDIVMODANDORXOR LEFT_SHIFT RIGHT_SHIFTrkrlrs r[ test_int_opz&TestFunctionEmitterVisitor.test_int_opBs  &%))Q G 1   &%))Q G 1   &%))Q G 1   &%))Q G 1   &%))Q G 1   &%))Q G 1   &%((A F 1   &%))Q G 1   &%:J:JA N 2   &%:K:KQ O J   &$**e>O>OQR S 6 r]c|jt|j|jtjdd|jt|j |j tjdd|jt|j|jtjdd|jt|j|jtjdd|jt|j |j tjdd|jt|j|jtjdd|jt|j|jtjdd|jt|j|jtjdd y) Nrz7cpy_r_r0 = (Py_ssize_t)cpy_r_s1 < (Py_ssize_t)cpy_r_s2;z#cpy_r_r0 = cpy_r_i32 < cpy_r_i32_1;z#cpy_r_r0 = cpy_r_i64 < cpy_r_i64_1;zcpy_r_r0 = cpy_r_s1 < cpy_r_s2;z7cpy_r_r0 = (uint32_t)cpy_r_i32 < (uint32_t)cpy_r_i32_1;z7cpy_r_r0 = (uint64_t)cpy_r_i64 < (uint64_t)cpy_r_i64_1;zcpy_r_r0 = cpy_r_o == cpy_r_o2;zcpy_r_r0 = cpy_r_o != cpy_r_o2;)rrrgrhSLTrirjrkrlULTrcrdEQNEQrs r[test_comparison_opz-TestFunctionEmitterVisitor.test_comparison_oppsv  $''<+;+;Q ? I   4::|/?/? C 5   4::|/?/? C 5  $''<+;+;Q ? 1   4::|/?/? C I   4::|/?/? C I  ,//1 = 1   ,*:*:A > 1 r]cX|jtt|jdy)Nzcpy_r_r0 = *(char *)cpy_r_ptr;)rr%r7rmrs r[ test_load_memz(TestFunctionEmitterVisitor.test_load_mems $((;=abr]cn|jtt|j|jdy)Nz*(char *)cpy_r_ptr = cpy_r_b;)rr+r7rmrfrs r[ test_set_memz'TestFunctionEmitterVisitor.test_set_mems'  ?DHHdff 57Z r]c*tdgdtttg}|j t |j |dd|j t |j |dd|j t |j |ddy) Nrx)rfrirkrfz(cpy_r_r0 = (CPyPtr)&((Foo *)cpy_r_o)->b;riz*cpy_r_r0 = (CPyPtr)&((Foo *)cpy_r_o)->i32;rkz*cpy_r_r0 = (CPyPtr)&((Foo *)cpy_r_o)->i64;)r4r7r;r<rrrc)rZrvs r[test_get_element_ptrz/TestFunctionEmitterVisitor.test_get_element_ptrs  &:JL\(]   $&&!S )+Y   $&&!U +-]   $&&!U +-] r]c|jtt|jd|jd|jt|j d|j dy)Nrfzcpy_r_r0.b = cpy_r_b;rrz7cpy_r_r0 = (Foo) { cpy_r_st.b, cpy_r_i32, cpy_r_st.y };)rr*r.rrfryrirs r[test_set_elementz+TestFunctionEmitterVisitor.test_set_elementsU  uT--.TVV <>Y   twwTXX . I r]cD|jttddy)N PyDict_Typez$cpy_r_r0 = (PyObject *)&PyDict_Type;)rr#r@rs r[test_load_addressz,TestFunctionEmitterVisitor.test_load_addresss  )= 9 6 r]cttd}t|d}|jj ||j t ||j|jgdy)Nraz+PyObject *cpy_r_a[2] = {cpy_r_o, cpy_r_o2};) r2r@r'rUrVrrrcrd)rZrnr2s r[test_assign_multiz,TestFunctionEmitterVisitor.test_assign_multisU $a ( Q  a   DFFDGG, -/` r]c ttd}|jt|t dtd|jt|t dtdy)Nr2lzcpy_r_a = 2147483648LL;izcpy_r_a = 2147483647;r'r<rrr!rZr2s r[test_long_unsignedz-TestFunctionEmitterVisitor.test_long_unsignedsW %s +  1gg'78 9;X   1gm-=> ?A\ r]c ttd}|jt|t dtd|jt|t dtdy)Nr2izcpy_r_a = -2147483647;izcpy_r_a = -2147483648LL;r5r6s r[test_long_signedz+TestFunctionEmitterVisitor.test_long_signedsW %s +  1gn.>? @B^   1gj*:; <>\ r]ct|jtd}td}t |td|tj }d|_|j|d||dy)Nrrrrzif (likely(PyDict_Check(cpy_r_r))) cpy_r_r0 = cpy_r_r; else { CPy_TypeErrorTraceback("prog.py", "foobar", 123, CPyStatic_prog___globals, "dict", cpy_r_r); goto CPyL8; } Trrr)rrvr:rrrrrrZrrrs r[test_cast_and_branch_mergez5TestFunctionEmitterVisitor.test_cast_and_branch_mergesc $&&/1 -] JqM:vG!0   "  r]ct|jtd}t|t dt dtj }d|_|j|dt d|dy) Nrrrr if (likely(PyDict_Check(cpy_r_r))) cpy_r_r0 = cpy_r_r; else { CPy_TypeError("dict", cpy_r_r); cpy_r_r0 = NULL; } Fr;)rrvr:rrrrrrs r[test_cast_and_branch_no_merge_1z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_1sb $&&/1 -JqM:a=&//J!0   ""~  r]ct|jtd}td}t |td|tj }d|_d|_|j|d||y)NrrrTrr?rr) rrvr:rrrrrrr<s r[test_cast_and_branch_no_merge_2z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_2sg $&&/1 -] JqM:vG!0   "  r]ct|jtd}td}t |td|tj }d|_|j|d||y)Nrrrrr?rC)rrvr:rrrrrr<s r[test_cast_and_branch_no_merge_3z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_3s` $&&/1 -] JqM:v{{C!0   "  r]ct|jtd}td}t |td|tj }|j |d||y)Nrrrr?rC)rrvr:rrrrr<s r[test_cast_and_branch_no_merge_4z:TestFunctionEmitterVisitor.test_cast_and_branch_no_merge_4%sX $&&/1 -] JqM:vG   "  r]c ttd}|jt|tdd|jt|tddt dk(rX|jt|j tdd|jt|j tdd t d k(rE|jt|tdd|jt|tddyy) Nr2T)signedzcpy_r_r0 = cpy_r_a;Fzcpy_r_r0 = (uint32_t)cpy_r_a;zcpy_r_r0 = (Py_ssize_t)cpy_r_n;zcpy_r_r0 = cpy_r_n;r)r'r;rrr<r r^r=r6s r[ test_extendz&TestFunctionEmitterVisitor.test_extend7s %s + #3DAC\]  1&u 57Z  A    tvv/=5    tvv/>@Y  A    VA~dCE^ _   q.79\  r]ct|j}|j|t|gtrdydyNrCPy_INCREF(cpy_r_r0);)rrwrr r rs r[test_inc_ref_nonez,TestFunctionEmitterVisitor.test_inc_ref_noneKs/  N !VAY}ZBYZr]ct|j}|j|t|gtrdydyrN)rrfrr r rs r[test_inc_ref_boolz,TestFunctionEmitterVisitor.test_inc_ref_boolOs/ K !VAY}ZBYZr]cdD]7}t|t}|j|t|gtrdnd9dD]/}t|t}|j|t|gd1y)N)rrrrrO)iiiilX)r$r@rr r )rZrrrfs r[test_inc_ref_int_literalz3TestFunctionEmitterVisitor.test_inc_ref_int_literalSsv& _AA01A   a^=RF] ^ _. FAA01A   a^-D E Fr]c httd}|jt|t dd|jt|t dd|jt|t dd|jt|t dd t d D]}t |g}|d k(rd }nA|d k(rd}n9|dk(rd}n1|dk(rd}n)|dk(rd}n!|dks|dk\rd|z}n|jd}|jt|t |d|dy)Nssfoozcpy_r_s = "foo";sfoo "ozcpy_r_s = "foo \"o";zcpy_r_s = "\x00";\zcpy_r_s = "\\";rV z\n z\r z\t"z\"z\\ z\x%.2xasciiz cpy_r_s = "z";)r'r9rrrrangebytesdecode)rZrYirftargets r[ test_c_stringz(TestFunctionEmitterVisitor.test_c_string[s% ' - 76?35KL 79#568ST 77#346NO 75>24JKs NAqc AEzeedeR18"Q'*   VAwqz2k&4L M! Nr]NF)rrrctd}t|tr|jj |n |jj ||d}t |j|g}t|j|} t|j|} g| _ g| _ t| | dd} || _ || _ |r ||g| _n|g| _d| _|j| | j| jz} | D cgc]} | j!d}} t#d|DsJ|D cgc]} | j%d}} |j!sg}n|j%j'd}|D cgc]} | j!d}} t)||dd |r| jd k(sJy| jdk(sJycc} wcc} wcc} w) Nrprog.pyprog c3>K|]}|jdyw) N)endswith).0lines r[ z9TestFunctionEmitterVisitor.assert_emit..s@44==&@srozGenerated code unexpectedT)msg tracebackr)r isinstancer&opsrVextendr1rUrr fragmentsrrrop_indexacceptstripallrstripsplitr)rZrexpectedrrrrblock value_namesemitter declarationsvisitorfragsrr actual_linesexpected_liness r[rz&TestFunctionEmitterVisitor.assert_emitss1  b"  II  R II  R BB+DNNUGD $,, 4t||[9 !# (, 6R' {+GK$GK '&&):)::49:D 3: :@<@@@@6BCd D)C C~~N%__.44T:N6DEd$**S/EE" L.IUY  ##q( ((##q( ((;C FsGG$G)c |tvrt|}|D]}t|j|jds't|j|jdsK||g}|j|jD cgc]} ||  }} |j J|j t|j ||j|j|j|jd|yyJdcc} w)NrrrzCould not find matching op) rNrOr arg_typesorderingrrrrrrr) rZrdestleftrightrrwdescargsrfs r[rz0TestFunctionEmitterVisitor.assert_emit_binary_ops  R.C dii):; JJq 1A!%=D}}015?AQ??//;;;$$ 00  ,, KK ,, OO! + . 76 65# @s= C7r{NonerT)rz Op | list[Op]rrzrzBasicBlock | Nonerboolrz Branch | Nonerrr{r) rrzrr0rr0rr0rrzr{r)J__name__ __module__ __qualname____doc__rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrr%r'r)r+r-r0r3r7r9r=rArDrFrHrLrPrRrWrhrrr]r[rQrQQsC/@b=F<[K G    (TS *X[.W  LLRRJO    Z  Z      &          ,           , \$ Lc         ( & ( & $([[FN8)- /) %)/) /)/)& /)  /)#/)/) /)b77"7*/78=7IL7 7r]rQc$eZdZddZddZddZy)TestGenerateFunctioncxtdt|_ttd|_t d|_y)Nargr)rr=rr'rYrrrs r[rzTestGenerateFunction.setUps)e^4NE2] r]c |jjjt|jt t dddt|jgt|jg|jg}t|j|j}tttdgg|}t!||dd|j"}t%gd|dy)Nmyfuncrqrkrl)z/CPyTagged CPyDef_myfunc(CPyTagged cpy_r_arg) { z return cpy_r_arg; } Generated code invalidrt)rrwrVr(rYr r rrr=r1arg_regsblocksrrrDrryr)rZfnrrresults r[ test_simplez TestGenerateFunction.test_simples fTXX./  XtUM488*n,U V XXJ ZZL  ,BKKC .y)ABKP Wi@""" b ( r]c Ttt}t|td}|jj j ||jj j tttdddt|jgt|jg|jg}t|j|j }t#t%t'dgg|}t)||dd|j*}t-gd|dy) Nrrrqrkrl)z/PyObject *CPyDef_myfunc(CPyTagged cpy_r_arg) { z CPyTagged cpy_r_r0; z cpy_r_r0 = 10; z CPy_Unreachable(); rrr)r'r=rr!rrwrVr/r r rrr>rYr1rrrrrDrryr)rZrYrrrrrs r[ test_registerz"TestGenerateFunction.test_registers~& C $ b! km,  XtUM488*o,V W XXJ ZZL  ,BKKC .y)ABKP Wi@"""  ( r]Nr)rrrrrrrr]r[rrs#  " r]r)c __future__runittestmypy.test.helpersrmypyc.codegen.emitrrmypyc.codegen.emitfuncrr mypyc.commonr r mypyc.ir.class_irr mypyc.ir.func_irr r rr mypyc.ir.opsrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0mypyc.ir.pprintr1mypyc.ir.rtypesr2r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBmypyc.irbuild.vtablerC mypyc.namegenrDmypyc.primitives.dict_opsrErFrGrHmypyc.primitives.int_opsrImypyc.primitives.list_opsrJrKrLmypyc.primitives.misc_opsrMmypyc.primitives.registryrN mypyc.subtyperOTestCaserQrrr]r[rs"86S5%HH"""""""""F2&0' 0XX40$o 7!2!2o 7d/ 8,,/ r]