NL i\dZddlmZddlmZddlmZmZddlm Z m Z m Z m Z ddl mZmZddlmZmZmZmZddlmZmZGd d eZeeZGd d ZGd dZddZddZddZddZ ddZ!y)z'Intermediate representation of classes.) annotations) NamedTuple)PROPSET_PREFIXJsonDict)FuncDeclFuncIR FuncSignature RuntimeArg) DeserMapsValue) RInstanceRTypedeserialize_typeobject_rprimitive) NameGenerator exported_namec6eZdZUded<ded<ded<ded<y ) VTableMethodz 'ClassIR'clsstrnamermethod FuncIR | None shadow_methodN)__name__ __module__ __qualname____annotations__W/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/ir/class_ir.pyrrHs N I N  r rc,eZdZdZ d ddZd dZed dZd!dZd"dZ d#dZ d$d Z d%d Z d&d Z d'd Zd'd Zd'dZd'dZd'dZd(dZd(dZdd d)dZddd*dZd'dZd+dZd,dZd-dZd+dZd.dZed/dZy)0ClassIRzpIntermediate representation of a class. This also describes the runtime structure of native instances. Fc ||_||_||_||_||_||_||_d|_d|_d|_ d|_ d|_ d|_ d|_ t|d|tgt!||_td|zdzd|tt%dt&gt!||_i|_g|_i|_i|_i|_i|_i|_d|_g|_i|_d|_g|_ |g|_!|g|_"g|_#tI|_%tI|_&tI|_'d|_(g|_)d|_*d|_+d|_,y)NF __mypyc___setuptype)-r module_nameis_trait is_generated is_abstract is_ext_classis_final_class is_augmentedinherits_pythonhas_dictallow_interpreted_subclassesneeds_getseters _serializable builtin_baserr r ctorr rsetup attributes deletable method_declsmethods glue_methods propertiesproperty_typesvtablevtable_entries trait_vtablesbasetraitsmrobase_mrochildrensetattrs_with_defaults_always_initialized_attrs_sometimes_initialized_attrsinit_self_leak bitmap_attrsenv_user_functionreuse_freed_instanceis_enum)selfrr(r)r*r+r,r-s r!__init__zClassIR.__init__Xs &  (&(,"$ ,1) %#)-T4mB RV6XY  $  )   :f.?@A9T? S   -/$&24*, @BDF13-1 -/;=%) %' $(&(,v /1 .1U 475&7:e)$(*15 %*! r c&dj|S)NzClassIR(name={self.name}, module_name={self.module_name}, is_trait={self.is_trait}, is_generated={self.is_generated}, is_abstract={self.is_abstract}, is_ext_class={self.is_ext_class}, is_final_class={self.is_final_class})rO)formatrRs r!__repr__zClassIR.__repr__s  D!  r c8|jd|jS)N.)r(rrRs r!fullnamezClassIR.fullnames""#1TYYK00r ct|jdkDr(|jdjs|jdSy)z7Return the actual concrete base class, if there is one.N)lenrCr)rRs r! real_basezClassIR.real_bases3 txx=1 TXXa[%9%988A; r c|jJd||jvsJ|jd||j|S)Nzvtable not computed yet has no attribute )r>rrOrs r! vtable_entryzClassIR.vtable_entrysN{{&A(AA&t{{"Ntyym3EdX$NN"{{4  r c|jD]D}||jvr|j||fcS||jvs3|j||fcSt|jd|Nr])rCr7r=KeyErrorrrOrirs r! attr_detailszClassIR.attr_detailssv(( 3Br}}$}}T*B..r(((((.22  3 $))&8ABBr c*|j|dS)Nr)rer^s r! attr_typezClassIR.attr_types  &q))r c|jD]!}||jvs|j|cSt|jd|ra)rCr9rbrrcs r! method_declzClassIR.method_declsM(( -Br&t,, -$))&8ABBr c8|j|jSN)risigr^s r! method_sigzClassIR.method_sig s%)))r cF |j|y#t$rYywxYwNFT)rirbr^s r! has_methodzClassIR.has_methods.    T "     c|j}| |jS|jr/|j}|D]}|j|k7syyt fd|D S)NFTc3@K|]}|jywrk)rp).0subcrs r! z*ClassIR.is_method_final.."sBT4??40Bs) subclassesr-rpriany)rOrsubsrirus ` r!is_method_finalzClassIR.is_method_finalsz  <&& & ??4 **40K !##D)[8  !BTBBB Br cF |j|y#t$rYywxYwro)rgrbr^s r!has_attrzClassIR.has_attr$s,  NN4   rqc@tfd|jDS)Nc3:K|]}|jvywrk)r8rtrdrs r!rvz'ClassIR.is_deletable..,s;B42<<';rxrCr^s `r! is_deletablezClassIR.is_deletable+s;$((;;;r cB|j|ry||jvS)NF)rrHr^s r!is_always_definedzClassIR.is_always_defined.s$   T "t5555r cN|j|j|jSrk) private_namer(rrOnamess r! name_prefixzClassIR.name_prefix3s!!$"2"2DII>>r c2t|jdS)NObject)rrWrs r! struct_namezClassIR.struct_name6s ./v66r  prefer_methodc|jD]?}||jvs|j|}|s|jjry||fcSyrk)rCr:declimplicit)rOrrrdfunc_irs r!get_method_and_classzClassIR.get_method_and_class9sT(( #Brzz!**T*$)>)> {" #r c:|j||}|r|dSdS)Nrr)r)rOrrress r! get_methodzClassIR.get_methodHs(''M'Js1v&$&r c@tfd|jDS)Nc3:K|]}|jvywrk)r9rs r!rvz*ClassIR.has_method_decl..Ms>r42??*>rrr^s `r!has_method_declzClassIR.has_method_declLs>TXX>>>r c>|jgk(xr |j Srk)rEr1rRs r!has_no_subclasseszClassIR.has_no_subclassesOs}}"L4+L+L'LLr c|j |jryt|j}|jD]4}|js|j}|y|j |6|S)zReturn all subclasses of this class, both direct and indirect. Return None if it is impossible to identify all subclasses, for example because we are performing separate compilation. N)rEr1rFrwupdate)rOresultchild child_subss r!rwzClassIR.subclassesRsk == D$E$ET]]#]] *E~~"--/ % j)  *  r c|j}|y|Dchc]}|jr|jr| }}t|dScc}w)zReturn all concrete (i.e. non-trait and non-abstract) subclasses. Include both direct and indirect subclasses. Place classes with no children first. NcLt|jxsg|jfSrk)rZrEr)cs r!z-ClassIR.concrete_subclasses..oss1::3C/Daff.Mr )key)rwr)r+sorted)rOryrconcretes r!concrete_subclasseszClassIR.concrete_subclassescsM   <#I!AJJ!--AIIh$MNN JsA  A A c:td|jDS)Nc34K|]}|jywrk)r3)rtcis r!rvz*ClassIR.is_serializable..rs72##7srrRs r!is_serializablezClassIR.is_serializableqs7dhh777r c id|jd|jd|jd|jd|jd|j d|j d|jd |jd |jd |jd |jd |jd|jd|jjd|j j#Dcgc]\}}||jfc}}d|j$j#Dcgc]1\}}|||j&vr |j(n|jf3c}}id|j&j#Dcgc]\}}||j(fc}}d|j*j#Dcgc]"\\}}}|j,|f|j(f$c}}}d|j.j#Dcgc]\}}||jfc}}dt1|j2d|j4dt7|j8d|j:j#Dcgc]\}}|j,t7|fc}}d|j<r|j<j,ndd|j>Dcgc]}|j,c}d|j@Dcgc]}|j,c}d|jBDcgc]}|j,c}d|jD$|jDDcgc]}|j,c}ndd|jFdtI|jJd tI|jLd!tI|jNd"|jP|jRr|jRj(nd|jT|jVd#Scc}}wcc}}wcc}}wcc}}}wcc}}wcc}}wcc}wcc}wcc}wcc}w)$Nrr(r)r,r+r*r.r-r/r0r1r2r3r4r5r7r9r:r;r=r<r>r?r@rArBrCrDrEr8rGrHrIrJ)rLrMrN),rr(r)r,r+r*r.r-r/r0r1r2r3r4r5 serializer7itemsr9r:idr;rWr=listr<r>serialize_vtabler?r@rArBrCrDrEr8rrGrHrIrJrLrMrN)rOktdmcirvs r!rzClassIR.serializetsR6 DII6 4++6   6  D-- 6 4++ 6 D-- 6  D--6  d116  t336   6  +D,M,M6  t336  T//6  D--6  DII'')6 " $//:O:O:QR$!QAq{{}-R#6 (  --335AqA-ADD1;;=A)6 2 dll.@.@.BCdaADD C36 4 =A=N=N=T=T=V.9hsA#,,"ADD)56 > d>Q>Q>W>W>YZda1;;=1Z?6 @ $t/A6 B dkkC6 D .t/B/BCE6 F BFBTBTBZBZB\8>Q/23G6 N $))DII&&O6 P t{{;s||;Q6 R DHH5SCLL5S6 T ?#?U6 V ;?==;T7#7Z^Y6 \ ]6 ^ "6$*B*B#C_6 ` (0N0N)Oa6 b +F43T3T,Uc6 d d11e6 f?C>T>T!7!7!:!:Z^$($=$=||k6 6 "S D [ <5?7s<1P /6P P 'P P# !P) P/ P4 'P9 P> c |ddz|dz}||jvs Jd|z|j|}|d|_|d|_|d|_|d|_|d |_|d |_|d |_|d |_|d |_ |d|_ |d|_ |d|_ tj|d||_|dDcic]\}}|t!||c}}|_|dDcic]E\}}|t%|t&r|j(|j*ntj||Gc}}|_|dDcic]\}}||j(|c}}|_|dDcic]'\\}}}|j||f|j(|)c}}}|_|dDcic]\}}|t!||c}}|_|dDcic]4}||j.||j.j5t6|zf6c}|_|d|_t=|d||_|dDcic]\}}|j|t=||!c}}|_ |d} | r|j| nd|_!|dD cgc]} |j| c} |_"|dD cgc]} |j| c} |_#|dD cgc]} |j| c} |_$|dxr |dD cgc]} |j| c} |_%|d |_&tO|d!|_(tO|d"|_)tO|d#|_*|d$|_+|d%r|j(|d%nd|_,|d&|_-|d'|_.|Scc}}wcc}}wcc}}wcc}}}wcc}}wcc}wcc}}wcc} wcc} wcc} wcc} w)(Nr(rVrzClass %s not in deser class mapr)r*r+r,r.r-r/r0r1r2r3r4r5r7r9r:r;r=r<r>r?r@rArBrCrDrEr8rGrHrIrJrLrMrN)/classesr)r*r+r,r.r-r/r0r1r2r3r4r deserializer5rr7 isinstancer functionsrr9r:r;r=getrr<r>deserialize_vtabler?r@rArBrCrDrEr8rFrGrHrIrJrLrMrN) rdatactxrWrdrrrrrAss r!rzClassIR.deserializes &,tF|;3;;&T(IH(TT& [[ ":& ~.m,~.~. !12!"34:& *./M*N'!"340~.&&tF|S9AElASTA,Q44T ^, 1  1c(:s}}Q$$@T@TUVX[@\ \ 7;9oFdaaq))F CGCW  6?fq!aS[[^Q q!1 1 FJJZE[\TQQ 0C 88\LPQ]L^ GHA 1 rzz~~nq.@AB B  N .t4D/EsKCGCX ;?1aCKKN.q#6 6 F|'+#++d#-1(^<S[[^< *.u+6Q#++a.6/3J/?@!s{{1~@ :&UDDT+UqCKKN+U K( !$T*?%@!A'*40K+L'M$*-d3Q.R*S' !128<=P8QCMM$23 4W[ #''=">)_  KU G ]  =6@+UsCN5C'?M" O87 r77r r#ceZdZdZddZy)NonExtClassInfozInformation needed to construct a non-extension class (Python class). Includes the class dictionary, a tuple of base classes, the class annotations dictionary, and the metaclass. c<||_||_||_||_yrk)dictbasesanns metaclass)rOrrrrs r!rPzNonExtClassInfo.__init__s   "r N) rr rr rr rr rr)rrrrrPrr r!rrs  #r rcd|jj|j|jjj |j r"|j jj dSddS)Nr).classrrrr)rrWrrrrr)entrys r!serialize_vtable_entryrsd yy!! ,,##&&8=8K8K,,1144   RV  r c>|Dcgc] }t|c}Scc}wrk)r)r>rs r!rrs/5 6! "1 % 66 6sc|ddk(rLt|j|d|d|j|d|dr|j|dSdSJd|dz)NrrrrrrzBogus vtable .class: %s)rrr)rrs r!deserialize_vtable_entryrs H~' KKU $ L MM$x. )484ICMM$/ 0   PT   =+d8n<<5r c@|Dcgc]}t||c}Scc}wrk)r)rrxs r!rrs6: ; $Q , ;; ;sc~|j}|y|js|js|j||S)zFReturn all concrete classes among the class itself and its subclasses.N)rr+r)append)class_irrs r!all_concrete_classesrs;++-H  H$5$5! Or N)rrrr)r> VTableEntriesrlist[JsonDict])rrrr rr)rrrr rr)rr#rr)"r __future__rtypingr mypyc.commonrrmypyc.ir.func_irrrr r mypyc.ir.opsr r mypyc.ir.rtypesr rrr mypyc.namegenrrrrrr#rrrrrrrr r!rsl-"1HH)QQ6z!:!\" SSl # #7=<r