NL iy<UdZddlmZddlmZddlmZddlmZm Z ddl m Z ddl m Z mZmZddlmZmZdd lmZmZmZmZmZmZmZmZmZmZdd lmZm Z m!Z!m"Z"m#Z#dd l$m%Z%m&Z&dd l'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.m/Z/m0Z0ddl1m2Z2ddl3m4Z4ddZ5ee%e+e ge6fZ7ee6e8e6e7ffZ9ddfddfde5fde5fde5fde5fdefdefdZ:de;d<defdefdefd efd!Zefd?d>efd@dAefdBdAefidCdDefdEdDefdFdGefdHdGefdIdJefdKdJefdLdMefdNdMefdOdPefdQdPefdRdSefdTdSefdUdVefdWdVefdXdYefdZdYefd[d\efd]efd^efd_efd`efdaefdbefdcefddefdeefdfefdgefdhefdhefdiefdjZ>de;dk<dle5fdme5fdne5fdoZ?de;dp<dqdrefdwdxe?fgZ@dyhZAddzZBdd{ZCdd|ZD dd}ZE dd~ZFddZGddZHddZIddZJ ddZK ddZL ddZM ddZNddZOddZP ddZQ ddZRddZS ddZTddZUddZVddZW ddZXddZY ddZZddZ[ ddZ\ddZ]ddZ^ddZ_ddZ`ddZa ddZb ddZcddZdddZey)z8Code generation for native classes and related wrappers.) annotations)Mapping)Callable)ARG_STAR ARG_STAR2)c_string_initializer)EmitterHeaderDeclaration ReturnHandler)native_function_doc_initializernative_function_header) generate_bin_op_wrappergenerate_bool_wrappergenerate_contains_wrappergenerate_dunder_wrappergenerate_get_wrappergenerate_hash_wrappergenerate_ipow_wrappergenerate_len_wrappergenerate_richcompare_wrappergenerate_set_del_item_wrapper) BITMAP_BITS BITMAP_TYPE NATIVE_PREFIXPREFIX REG_PREFIX)ClassIR VTableEntries)FUNC_CLASSMETHODFUNC_STATICMETHODFuncDeclFuncIRget_text_signature)RTupleRTypeobject_rprimitive) NameGenerator) is_same_typecHt|j|jSN)rcnamenamesclfnemitters ]/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/codegen/emitclass.py native_slotr2&s_RXXgmm45 66tp_initct|||Sr*)generate_init_for_classctes r1r;2s,CAq!,Lr3tp_callct|||Sr*)generate_call_wrapperr7s r1r;r;3s,A!Q,Jr3tp_strtp_repr tp_iternexttp_itertp_hash tp_descr_get)__init____call____str____repr____next____iter____hash____get__ SlotTable SLOT_DEFS mp_subscriptmp_ass_subscript mp_length) __getitem__ __setitem__ __delitem____len__AS_MAPPING_SLOT_DEFS __contains__ sq_containsAS_SEQUENCE_SLOT_DEFS__bool__nb_bool__int__nb_int __float__nb_float__neg__ nb_negative__pos__ nb_positive__abs__ nb_absolute __invert__ nb_invert__add__nb_add__radd____sub__ nb_subtract__rsub____mul__ nb_multiply__rmul____mod__ nb_remainder__rmod__ __truediv__nb_true_divide __rtruediv__ __floordiv__nb_floor_divide __rfloordiv__ __divmod__ nb_divmod __rdivmod__ __lshift__ nb_lshift __rlshift__ __rshift__ nb_rshift __rrshift____and__nb_and__rand____or__nb_or__ror____xor__nb_xor__rxor__ __matmul__nb_matrix_multiply __rmatmul____iadd__nb_inplace_addnb_inplace_subtractnb_inplace_multiplynb_inplace_remaindernb_inplace_true_dividenb_inplace_floor_dividenb_inplace_lshiftnb_inplace_rshiftnb_inplace_and nb_inplace_ornb_inplace_xornb_inplace_matrix_multiplynb_powernb_inplace_power)__isub____imul____imod__ __itruediv__ __ifloordiv__ __ilshift__ __irshift____iand____ior____ixor__ __imatmul____pow____rpow____ipow__AS_NUMBER_SLOT_DEFSam_awaitam_aiteram_anext) __await__ __aiter__ __anext__AS_ASYNC_SLOT_DEFS as_mappingPyMappingMethods as_sequencePySequenceMethods as_numberPyNumberMethodsas_asyncPyAsyncMethodsrKcy)NPyVectorcall_Callr-s r1r>r>s r3cF|jdr|dk7s|dk(rd|zS|S)zuMap dunder method name to sort key. Sort reverse operator methods and __delitem__ after others ('x' > '_'). __rrrTx) startswith)attrs r1slot_keyrs- 4<#7DM.sxPQRSPT~r3)keyr)sorteditemsget_method_and_class ALWAYS_FILL) r.tabler0fields generatednameslot generator method_clss r1generate_slotsrsF "I#)%++-=U#V 'tY,,T2 :a=B.$+2Ey (t !Z]G<#t "& $ ' Mr3c|j}|j|}td|j|dd|j|<|jsyt |||j xr |j }|rKtt|j|dd|j|j|j<yy)NzPyTypeObject *;T needs_export) contexttype_struct_namer declarations is_ext_classgenerate_object_structis_trait builtin_baser ctornative_function_name)r. c_emitterexternal_emitterr0rr generate_fulls r1generate_class_type_declrsG  # #B 'D!2 11"56a8t"G ??2/0 O;BOO(;MFW%bggw78 :G W99"''BCr3c&|jsJ|js|jgk(sJ|j}|j |j dz}|j |j }td|d|dd|j|<y)zGenerate a definition of a single-object per-class free "list". This speeds up object allocation and freeing when there are many short-lived objects. TODO: Generalize to support a free list with up to N objects. _free_instancezCPyThreadLocal z *rTrN) reuse_freed_instanceis_final_classchildrenr name_prefixr, struct_namer r)r.rrr0rrrs r1generate_class_reusers  " "" "    r 11 1G >>)// *-= =D..1K!2 +ba0t"Gr3c |j}|jj}j|j}|d}|d}|d}|d} |d} |d} |d} |d} |d }|d }d d |d i}|j xr |j }|jxs|j xs |j}|j s||d <|rd|d|d<d|d|d<d|d|d<td|jDd}|rd||d<|r| |d<||d<dKfd }||jd}|jd}|jt|tt D]0\}}}t||}|st#||||}d||d|<2t%|}|r||d<|j'j}|j rd|j d }n|j rd!}nd|d }|jrYt)|sM|d"}j+d#|d$d%|d&d'|d&d(d)||d*<|d+|d,<j,d-kr||d.<||d/<n||d,<|r%|jJj/t1|jd0z|j2Jj/t1|j2d0z||jd}t5||| |||t7|| |t9|| |t;|| | t=|||j>rtA||d1z| d1zd23} |nd} tA||| d43} ||rtC||||r'tE||tG|| ||j r tI||tK|||gd5}!|r|!jMd6|jOd7rTd8jQ|j'j|d9<|!jMd:|jSd;sd<|d=<t)|r|!jMd>d?jU|!|d@<dAtW|d |dB<j/dCjY|dDj/dE|j[D]\}"}#j/dF|"dG|#dHj/d)j/dIjQjY|Jj/|rIt]|||  j/t_||j2||| j/|r ta|yy)LzRGenerate C code for a class. This is the main entry point to the module. _new _finalize_members _getseters_vtable _traverse_clear_dealloc_methods_trait_vtable_setuptp_name"tp_newz (destructor) tp_deallocz(traverseproc) tp_traversez (inquiry)tp_clearc3TK|] }|jdk(s|j"yw)__del__N)rmethod).0r:s r1 z!generate_class..sRAaff >QqxxRs((N tp_finalize tp_getset tp_methodsc&jyr* emit_liner0sr1r z!generate_class..emit_linesr3__mypyc_defaults_setuprE&tp_tp_richcomparezsizeof()zsizeof(PyObject)z + sizeof(PyObject *)z PyMemberDef [] = {z{"__dict__", T_OBJECT_EX, z , 0, NULL},z{"__weakref__", T_OBJECT_EX, z{0}}; tp_membersz + 2*sizeof(PyObject *) tp_basicsize tp_dictoffsettp_weaklistoffsetr_shadowT)shadowF)Py_TPFLAGS_DEFAULTPy_TPFLAGS_HEAPTYPEPy_TPFLAGS_BASETYPEPy_TPFLAGS_HAVE_GCrFzoffsetof({}, vectorcall)tp_vectorcall_offset_Py_TPFLAGS_HAVE_VECTORCALL tp_vectorcallrr<Py_TPFLAGS_MANAGED_DICT | tp_flagsz PyDoc_STR(tp_doczstatic PyTypeObject z_template_ = {zPyVarObject_HEAD_INIT(NULL, 0). = ,z3static PyTypeObject *{t}_template = &{t}_template_;)r9returnNone)1rrr,rsetuprrneeds_getseters is_generatedhas_dictnextvtable_entries get_methodupdaterrN SIDE_TABLESgenerate_side_table_for_classrrhas_managed_dict emit_lines capi_versionr r rgenerate_new_for_classgenerate_traverse_for_classgenerate_clear_for_classgenerate_dealloc_for_classboolallow_interpreted_subclassesgenerate_vtablesgenerate_finalize_for_classgenerate_getseter_declarationsgenerate_getseters_tablegenerate_new_for_traitgenerate_methods_tableappend has_methodformatgetjoinnative_class_doc_initializerrrgenerate_setup_for_classgenerate_constructor_for_classgenerate_getseters)$r.moduler0rr setup_namenew_name finalize_name members_namegetseters_name vtable_name traverse_name clear_name dealloc_name methods_namevtable_setup_namerrr- del_methodr  defaults_fninit_fn table_nametype slot_defsslotstable_struct_namerichcompare_namer base_size weak_offsetshadow_vtable_nameflagsfieldvalues$ ` r1generate_classrisa 77D../K--bhh7Jd#H"m9-M!](+L#}J/N M)K"m9-M='J!](+L!](+L&-':;'1TF!5F O;BOO(;M((N,?N2;;O ??#x!-k](C|"0 Y G}( V<zR):):RTXYJ".}o >},{'F<K-- 89KmmJ'G MM.Y89(3A# D)r9g6  =b*dTY[b c +,->,?)@FS % & A 4B@#3 ../K boo.a0 & k]!,  {{+B8# #89 <. 0))L A,[M F     ,|$-;.E!F~   ' )&/F? #*5F& '!*~xx###07CcIJww"""0'BSHI -- +r8[*gwW #B w?  Z9 "2|ZjAQSZ[ * *-=% 1;3JG\`.  K!% &r+(BC<W"1c$*;*;&?r3c 8dfd }dfd }jdj|tdtjdtj zzj j D]z\}}jd||dtdt|djd j||tdt|j|jd jt|d jd jrsjt|d g} j j D]F\}}||} ||} t|| gt| || j|| | fHtj|| jdjd| s|S|dt| dzS)aEmit the vtables and vtable setup functions for a class. This includes both the primary vtable and any trait implementation vtables. The trait vtables go before the main vtable, and have the following layout: { CPyType_T1, // pointer to type object C_T1_trait_vtable, // pointer to array of method pointers C_T1_offset_table, // pointer to array of attribute offsets CPyType_T2, C_T2_trait_vtable, C_T2_offset_table, ... } The method implementations are calculated at the end of IR pass, attribute offsets are {offsetof(native__C, _x1), offsetof(native__C, _y1), ...}. To account for both dynamic loading and dynamic class creation, vtables are populated dynamically at class creation time, so we emit empty array definitions to store the vtables and a function to populate them. If shadow is True, generate "shadow vtables" that point to the shadow glue methods (which should dispatch via the Python C-API). Returns the expression to use to refer to the vtable, which might be different than the name, if there are trait vtables. cdjjj|jjrdSdS)Nz{}_{}_trait_vtable{}rryrGrr,)traitrr0rs r1trait_vtable_namez+generate_vtables..trait_vtable_namesN%,,   W]] +   gmm ,I  &(  r3cdjjj|jjS)Nz{}_{}_offset_tabler)rrr0s r1trait_offset_table_namez1generate_vtables..trait_offset_table_names9#**   W]] +U->->w}}-M  r3zstatic CPyVTableItem {}[{}];rrzstatic CPyVTableItem [z];zstatic size_t {}[{}];z static boolz(void){z _shadow();z return 1;}z + )rrr*str) r rGmaxrr1 trait_vtablesrrrr>generate_vtablegenerate_offset_tablerE) rrYrTr0rrrrvtable subtablesr offset_names ` `` r1r?r?s >   &-- QD$7$7 81s4CUCU?V;V VW  ++113  v#$5e$<#=Qs1c&k?R>SSU V   # * *'.As5;K;K7L0M    m$ (9':&AB c ((]O,=+>jIJI++1135 v '-e4 gr6:k7E4@%{34 5D''gy&Q k" c';T }CIQR@R?S-TTr3c n|jd|d|jD]B}|jd|j|jd|j |dD|js|jd|jd|jdj | y ) z0Generate attribute offset row of a trait vtable.zsize_t _scratch[] = {z offsetof(, z),0r/memcpy({name}, {name}_scratch, sizeof({name}));rN)r rrr,rrG)rr0rr.rs r1rrs  78HI  _IbnnW]]&C%DBw||TXGYFZZ\]^_   # d 9@@F]@^r3c |jd|d|r^|jd|D]7\}}}|jdj|j|||9|jd|D]}|r|jr |jn |j} |jdj|j |jj t| j|j|s|jd|jd|jd j| y) NzCPyVTableItem rz/* Array of trait vtables */z8(CPyVTableItem){}, (CPyVTableItem){}, (CPyVTableItem){},z/* Start of real vtable */z(CPyVTableItem){}{}{},NULLrrr) r rGr shadow_methodrget_group_prefixdeclrr+r,) entriesrTr0rrrr offset_tableentryrs r1rrs2 {m?CD89*3  &E5,   JQQ,,U3UL   67 (.53F3F$$ELL $ + +(():):; W]]+    &! d GNNT_N`ar3c |jt|j||jdt|jjj dj z}|jd|d|j|j}|j|d|j|j}|jr|jd|d|jd|d |j|d |jd |jd | t|d||jd|jd|jd|j|jd|jd|jd|rq|jd|j|d|jd|d|jd|jd|d|jdn|jd|dt|||jdrE|jdj!|j}|jdt"|dt%|j&D]b} | j(j+D]C\} } |j-| } | dk7s|jd|j/| d| dEd| t|d||jd|jdy )zAGenerate a native function that allocates an instance of a class.rrz$PyTypeObject *type = (PyTypeObject*)rz *self;if (z_free_instance != NULL) {zself = z_free_instance;z_free_instance = NULL;zPy_SET_REFCNT(self, 1);zPyObject_GC_Track(self);Nselfzreturn (PyObject *)self;rzself = (z *)type->tp_alloc(type, 0);if (self == NULL) return NULL; if (type != ) {zself->vtable = } else {rFzself->vectorcall = rself->r')r r r,rsigargsrrr,rremit_attr_defaults_func_callremit_clear_bitmapsrF method_declr+rr|r}rrc_undefined_valuer) r.r[rTrer0 type_arg_namerprefixrrrrrhs r1rKrKAs ,RXXw?@ c!2!21!5!:!::M <]O1MN../K  W-. ^^GMM *F D(BCDGF8?;<VH$:;<3445  " (fg F45#  !> ??Z[\ )* ()L)A)A")E(FdKLO,>+?qAB*%OK=:;#OK=:;r7# }}Z ~~j)// >/xvQ?@%M??002 MKD%--e4E!!VGLL,>+?s5'"KL  MM$[&'B 01 cr3ctdt|jtD](}|j |}|j d|d*y)zMEmit C code to clear bitmaps that track if attributes have an assigned value.rrz = 0;N)rrr~rrr )r.r0rrgs r1rrsJ 1c"//*K 81$$Q'F5'/01r3c|jdjt|j|j|dddy)z{Emit C code to initialize attribute defaults by calling defaults_fn. The code returns NULL on a raised exception. z!if ({}{}((PyObject *){}) == 0) {{Py_DECREF(self); return NULL;rN)r7rGrr+r,)r[ self_namer0s r1rrsA  +22 ;,,W]];Y   r3cd fd }|jd}|s jd|d|d|y|r"j|jtznt }|} |dk7r| d|zz } jd||j jd| d|jdj|d jd y) NcJjdjdy)Nrrrr sr1emit_null_checkz6emit_setup_or_dunder_new_call..emit_null_checks!-.,-r3__new__zPyObject *self = ();ryrzif (Py_TYPE(self) != rz return self;r)) r2r rrrrr+r,r) r.rOtype_arg native_prefixnew_argsr0rnew_fnrall_argss ` r1emit_setup_or_dunder_new_callrs.]]9 %F -j\8*BGHFSW % %fkk 2] BY_FH2~D8O# )&&,,w}}2M1NaPXzY[\] -g.F.Fr.J-K1MN ()r3c @|jt|||jd|jjDcgc]}t|j z}}d|j |z}dj|} |jdxrzt|jjdk(xrV|jjdjtk(xr*|jjdjtk(} t|||| | |djdg|z} || rtnt} | rd nd } |jd j!|j#|j$| |j'|j(| | |jd |jd|jd|jdnt|jjdkDrk|jd|j |d| d|jd|jd|jd|jd|jd|jdy cc}w)zQGenerate a native function that allocates and initializes an instance of a class.rz (PyObject *)rrrrrNz!= NULL ? 0 : -1ryzchar res = {}{}{}({}){};zif (res == 2) {rrrz int res = z ->tp_init(rzif (res < 0) { return self;)r r rrrrrrIrFrkindrrrrrrGrrr+r,)r.r/r\rOrTr0argfn_argsrr use_wrapperrrcasts r1rLrLsD /G<=? c02 <zCHH$rrFrGrr+)r.r\r0 func_names r1r6r6s>>'--017I l#  #STU c &&"//R]]9=U = D D gmm4  +& c r3c|jd|j|d|jd|jsW|jd|j|d|jd|jd|jdd }d }t|||d |||r9|js-|js!|j s|j d r|jd nW|jdt|j|jd|jdd|jd |jdy)Nstatic PyObject *4(PyTypeObject *type, PyObject *args, PyObject *kwds)rrrzUPyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled");rrz(PyObject*)typez args, kwdsFrrzPyObject *ret = z(self, args, kwds);zif (ret == NULL)r) r r>rrris_serializablerFrr+r,r7)r.rrTrOr\r0rrs r1r9r9sH )*  #WXY c * *L)A)A")E(FdKL c  .)# HH!"j(E8WU  * * ??    == # .) vhw}}W]]'C&DDW X  -/AB.) cr3c|jd|j|d|jd|jd|j|d|jd|jd|jd|jd |jd |jd y) Nrrrrrz\PyErr_SetString(PyExc_TypeError, "interpreted classes cannot inherit from compiled traits");rzGPyErr_SetString(PyExc_TypeError, "traits may not be directly created");rr)r r)r.rr0s r1rCrC0s )*  #WXY c  W%=%=b%A$B$GH  F j! _` c n% cr3c|jd|j|d|j|jd|jdt|jD]H}|j j D])\}}|jd|j||+Jt||r|jdn[|jrO|j|j}|jd|dt|jd |dt|jd |jd y ) z>Emit function that performs cycle GC traversal of an instance.rrz# *self, visitproc visit, void *arg)rrz8PyObject_VisitManagedDict((PyObject *)self, visit, arg);&*((PyObject **)((char *)self + sizeof()));*((PyObject **)((char *)self + sizeof(PyObject *) + sizeof(rrN) r rr,r|r}rr emit_gc_visitrr6r/r&r.rr0rrrrs r1r:r:@s9 l#  +Qr~~gmm455XY c%H??002 HKD%  ! !F7<<+=*>"? G HHG$TU nnW]]3 4[M EGX  I+VY Z   k" cr3c|jd|j|d|j|jd|jdt|jD]H}|j j D])\}}|jd|j||+Jt||r|jdn[|jrO|j|j}|jd|dt|jd |dt|jd |jd y) Nrr *self)rrz,PyObject_ClearManagedDict((PyObject *)self);rrrrr) r rr,r|r}rr emit_gc_clearrr6r/r&rs r1r;r;Zs3 l#  1R^^GMM%B$C7KL c%H??002 HKD%  ! !F7<<+=*>"? G HHG$HI nnW]]3 4[M EGX  I+VY Z   k" cr3c|jd|j|d|j|jd|jd|r3|jd|jd|jd|jd|jr t |||jd |d |j|d |jd |jd |jdy)N static voidrrrz1if (!PyObject_GC_IsFinalized((PyObject *)self)) {z-Py_TYPE(self)->tp_finalize((PyObject *)self);rzPyObject_GC_UnTrack(self);zCPy_TRASHCAN_BEGIN(self, rz(self);z)Py_TYPE(self)->tp_free((PyObject *)self);zCPy_TRASHCAN_END(self))r rr,remit_reuse_dealloc)r.dealloc_func_nameclear_func_namehas_tp_finalizer0s r1r<r<qs m$ *+1R^^GMM-J,K7ST cMNIJ# 23 2w' 12C1DAFG )12 AB ./ cr3c|j|j}|jd|d|j|dt||t |j D]H}|j jD])\}}|jd|j||+J|jd|jdy)zEmit code to deallocate object by putting it to per-type free list. The free "list" currently can have up to one object. rz_free_instance == NULL) {z_free_instance = self;rzreturn;rN) rr,r rr|r}rremit_reuse_clearr)r.r0rrrrs r1rrs ^^GMM *F VH$>?@  678r7#%K??002 KKD%  $ $vgll4.@-A%BE J KK i  cr3c |jd|j|d|jd|jd|jd|jdj|j|jt|j |j |jd|jd|jd |jd |jd |jd |jd |jd|jd y)Nrz(PyObject *self)rz#PyObject *type, *value, *traceback;z'PyErr_Fetch(&type, &value, &traceback);z {}{}{}(self);zif (PyErr_Occurred() != NULL) {z4PyObject *del_str = PyUnicode_FromString("__del__");zYPyObject *del_method = (del_str == NULL) ? NULL : _PyType_Lookup(Py_TYPE(self), del_str);z"PyErr_WriteUnraisable(del_method);zPy_XDECREF(del_method);zPy_XDECREF(del_str);rz&PyErr_Restore(type, value, traceback);)r rGrrrr+r,)rZfinalize_func_namer0s r1r@r@s$ m$ +,,<=> c ;< ?@   $ $Z__ 5    W]] +  78 LM c :; /0 ,- c >? cr3cl|jd|d|jjD]+}|jjs"|jj s |j r=|jd|jd|jdt|j|jdddg}|jjtk(r|jd n.|jjtk(r|jd t|}|jd j!d j#||.|j%d s#|j%ds|j'dd|jd|jdy)Nzstatic PyMethodDef r{"",z (PyCFunction)r( METH_FASTCALL METH_KEYWORDS METH_STATIC METH_CLASSz {}, PyDoc_STR({})}},r# __setstate__ __getstate__z@{"__setstate__", (PyCFunction)CPyPickle_SetState, METH_O, NULL},zE{"__getstate__", (PyCFunction)CPyPickle_GetState, METH_NOARGS, NULL},{NULL} /* Sentinel */r)r methodsvaluesris_prop_setteris_prop_getterinternalrrr+r,rr rErr rGrIrFr7)r.rr0r/rfdocs r1rDrDs] +D69:jj! R 77 ! !RWW%;%;r{{ Cy+,N6(288GMM3J2K1MN /2 77<<, , LL ' WW\\- - LL &-b1188E9JCPQ R == (~1N N S  ./ dr3c|j|jd|}|jd|d|d|jD]\}}|jd|d|d|jd|S) N_zstatic rxz = {r&r'r(r)rr,r r)r.rr^r`r0rgrhs r1r5r5snnW]]+ ,AdV 4D vQtfE23 2 uAeWCwa012 d Kr3c |js|jD]}|jd|jdjt |||j |j |j |jd|jdjt|||j |j |j |jjD]\}\}}|jjr |jd|jdjt |||j |j |j |s|jd|jdjt|||j |j |j y)Nrz{}({} *self, void *closure);rz-{}({} *self, PyObject *value, void *closure);) rrr rGrqr,rru propertiesrrimplicit)r.r0rpropgettersetters r1rArAs ;;MM D   1 2   .55D'--8"..:W    l +   ?FFD'--8"..:W  #%--"5"5"7vv ;;    -. * 1 1Bgmm4bnnW]]6S      l +   ?FFD'--8"..:W r3c \|jd|d|js|jD]s}|jd|d|jdjt |||j t |||j |jdu|jjD]\}\}}|jjr |jd|d|jdt |||j d|r<|jd t |||j d|jd |jd |jr|jd |jd |jdy)Nzstatic PyGetSetDef rrrz (getter){}, (setter){},z NULL, NULL},z (getter)r(z (setter)z NULL, NULL},zNULL, NULL, NULL},z?{"__dict__", PyObject_GenericGetDict, PyObject_GenericSetDict},rr) r rrrGrqr,rurrrrr/)r.rr0rrr r s r1rBrB s +D69: ;;MM /D   D6n -   *11D'--8+b$PWP]P]:^    o . /#%--"5"5"7 4vv ;;   CvR.)Ik"dGMM&J%K1MN     +b$ *N)OqQ R   n -   2 3 4 {{[\ ./ dr3c|jst|jjD]b\}\}}t |||||j dt |||||t|jdz ksR|j dd|jjD]\}\}}|jjr |jj}|j dt||||||sY|jjdj}|j dt!|||||y)Nryr)r enumeraterrgenerate_getterr generate_setterrrrrrret_typegenerate_readonly_getterrr^generate_property_setter) r.r0rrrrr r arg_types r1rMrM+s! ;; )"--*=*=*? @ & A}e BeW 5   b ! BeW 53r}}%))!!"%  & #%--"5"5"7 Jvv ;;    ##" T5&'B zzq)..H   b ! $Rx I Jr3c |j|}|jd|jdjt|||j|j |j|jdd|}|j |xr |j }|s|j||dd||d|jd |jd t|d t|jd |jd |jd|jd|||jd|d|d|jd|jdy)Nr{}({} *self, void *closure)rrz==rT)unlikely%PyErr_SetString(PyExc_AttributeError,z "attribute z of z undefined");rrretval declare_destzreturn retval;) rr rGrqr,ris_always_defined is_refcountedemit_undefined_attr_checkreprr emit_inc_refemit_box)r.rrr0 attr_field attr_expralways_defineds r1rr@s^d#J )* %,, D'-- 0"..2O   c %I ))$/K8K8K4KN ))%D&$PR]a)bABODJr'rr)rr rGrur,r is_deletablerrrrr emit_dec_ref is_unboxed emit_unboxr r(r& emit_castr7r error_overlapemit_attr_bitmap_setremit_attr_bitmap_clear)r.rrr0r! deletabler#r"s r1rr\sd#J l# 6== D'-- 0"..2O   c%I 01ABDM?"4T$ZL@U V  ,'# ))$/K8K8K4KN ZL)   - -eYfdTV Wvj\2E:   c "01 7E5 d8KZ^_ e. /23'5%dC;(89 & zl'23 >$$UFE2tD(#Jzl#g6O6OPU6V5WWXYZ     * *65"d C k" cr3c |jd|jdjt|||j|j |j|jd|j r|jdj|j |t|j|j|jd|d|jdd|d |jd n4|jd t|j|jd |jd y)Nrrrz#{}retval = {}{}((PyObject *) self);rrretboxTrzreturn retbox;zreturn z((PyObject *) self);r) r rGrqr,rr,rrr+emit_error_checkr )r.rrfunc_irr0s r1rrs )* %,, D'-- 0"..2O   c  1 8 8$$U+]GMM'--*H%I  0 0AS 0 T UUr3N)r.rr/r"r0r r*r)rrr*r)r.rrrMr0r r*dict[str, str]) r.rrr rr r0r r*r+)r.rrNrr0r r*r+)r.rrprr,r'r*r)r.rr0r r*r+) rrrYrrTrr0r rr=r*r) rrr0r rrr.rr*r+) rrrTrr0r rzlist[tuple[ClassIR, str, str]]rr=r*r+) r.rr[ FuncIR | NonerTrre str | Noner0r r*r+)r[r"rrr0r r*r+)r.rrOrrrrr=rrr0r r*r+)r.rr/r!r\rDrOrrTrr0r r*r+)r.rr\r"r0r r*r)r.rrrrTrrOrr\rDr0r r*r+)r.rrrr0r r*r+) r.rrrrrrr=r0r r*r+)rZr"rrr0r r*r+)r.rrrr0r r*r+) r.rrrr^rr`rCr0r r*rE) r.rrrrr%r0r r*r+) r.rrrrr%r6r"r0r r*r+) r.rrrrr%r6r"r0r r*r+)r.rr0r r*r=)r.rr*r)f__doc__ __future__rcollections.abcrtypingr mypy.nodesrrmypyc.codegen.cstringrmypyc.codegen.emitr r r mypyc.codegen.emitfuncr r mypyc.codegen.emitwrapperrrrrrrrrrr mypyc.commonrrrrrmypyc.ir.class_irrrmypyc.ir.func_irrr r!r"r#mypyc.ir.rtypesr$r%r& mypyc.namegenr'mypyc.sametyper(r2r SlotGeneratortuplerMrN__annotations__rVrYrrr4rr>rrrrrirqrurr?rrrKrrrrLr6r9rCr:r;r<rr@rDr5rArBrMrrrrr6rJrr3r1rXs?>"#*6HHZ   UT4=<''7'673S89 CsM122 3 LMJK+&K( ,K(12 45  9 #$;<&(EF&(EF12 #i%3]D]4^#_y_6"126"126"*56 6"  67 6"  67 6" 676"; 786"126"236" 676" 786" 676" 786"  78!6""!89#6"$$&=>%6"&%'>?'6"(&(?@)6"*')@A+6",; 78-6".K!89/6"0; 7816"2K!8936"4; 7856"6K!8976"81296":23;6"< w/0=6">01?6"@12A6"B23C6"D')@AE6"F(*ABG6"J!#:;K6"L'(?@&(?@')@A-/FG/1HI')@A')@A!#:;!89!#:;02IJ3445#%:;k6"Y6rk*k*k*!I%';<')>?#%89!#56  l &  # 7> IP   *#7>IP .q(hLL@SU SU&)SU8;SUFMSUW[SUSUl   +2 ;B HO    b  b b b. b  b  bF====# =  =  =@1 **** *  *  * *:4444 4  4  4 4n2)))) )  )  ) )X  4.     2*,/:A B6"%.<GN#L>J*86r#(39DK 4&+6<GN .  Vr3