L i1ddlZddlZddlZddlmZmZddlmZmZm Z m Z m Z m Z m Z mZmZmZddlmZmZmZmZmZmZddlmZmZddlmZddlmZddlZd ed e efd Z d ed e efd Z!ed ded e"ejFfdZ$ejJejLejNejPfZ)e)ejTejVejXejZfzZ.ej^ej`ejbejdejfejhejjejlejnejpejrejtejvd Z<Gdde=Z>y)N)CodeType FrameType) AnyCallableIteratorOptionalSequenceSetTupleTypeUnioncast) EnhancedASTNotOneValueFoundSourceonlyfunction_node_typesassert_) KnownIssueVerifierFailure) mangled_name) lru_cachenodereturnc#JK t|dr|j}|nyw)Nparent)hasattrrrs e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/executing/_position_node_finder.pyparentsr!s)  4 ";;DJ  s!#c#>K|t|Ed{y7wN)r!rs r node_and_parentsr$s Jt}s codec>ttj|Sr#)listdisget_instructions)r&s r r*r*s $$T* ++) z***@z///%+-z<>&^|c PeZdZdZdedeedejde de f dZ ded e d d fd Z ded e jd efdZded e jd d fdZd e fdZede jded efdZded e jd d fdZd e d ee jfdZd e jd ee jfdZd e d efdZdZej:dk\r ej<fZdej>ej@ejBejDgefd e de#ede$e%dfd efdZ&y )PositionNodeFindera% Mapping bytecode to ast-node based on the source positions, which where introduced in pyhon 3.11. In general every ast-node can be exactly referenced by its begin/end line/col_offset, which is stored in the bytecode. There are only some exceptions for methods and attributes. framestmtstreelastisourcect|jDcic]}|j|c}|_||_||_d|_|j|dk(r|dz}|j|dk(r |j||_ |j|}|J|j|j||_ |j!|j||j#|j||j |j%|j|yt'|j |jj(vycc}w#t$rh|j|dvrtjf}n&|j|dvrtjf}n|j|d||_ Y8wxYw)NCACHE) LOAD_METHOD LOAD_ATTR STORE_ATTR DELETE_ATTR)CALLCALL_KW)end_col_offset end_lineno)match_positionstyp)r*f_codeoffsetbc_dictr7r; decoratoropname find_noderesultrast AttributeCall instruction fix_result known_issuestest_for_decoratorverifyrdecorator_list) selfr7r8r9r:r;bcrHrSs r __init__zPositionNodeFinder.__init__Is-=ell-KMrbiilM   04kk% G+ QJEkk% G+ ../DK>&&u- &&&oodkk;?  $++{3  U3 >> ! KK [ 1 DNNdkk&@&@@ AqN  {{5!&}}&U#':: xxk.. @)DK1 sE8EA-GGrindexrNc<t|jtjtfr||jj vr|j} |j |dz dk(stjdk\r|j |dk(sy|dz }|j |dvr|dz }|j |dvr|j |jdr#|j||k(r||_ ||_ ytjdkr|dz }yy)NPRECALL rCr>)r= EXTENDED_ARGSTORE_) isinstancerrPClassDefrrXrMsys version_info startswithrNrOrL)rYrr\ node_funcs r rVz%PositionNodeFinder.test_for_decorators  t{{S\\3F$G H 222 I&[[+y8C>4;;0 ((( ;;     *""&>> ""s{{CLL#:J:JK4;;s'8'89 ((( ;;%% %   y ([-?-?6-I,,[9F"MM\1$$ (=(==t{{CLL9DKK4444{{)))    )""m34;; 5 000;;%% %   w &;+=+=+G,,[9F"MM^3NN&@@$$ (=(==t{{CLL9DKK444{{)))   w &:dCKK+HZX\X_X_`c`g`gMhmxmmCNnN<<  r+c |jdvrt|trt|trt j |j Dcgc]6}t|tjrt|jdkDr|8}}t|dt|dk(rtt|dx}|_ ntd|ztd|ztj dddk(rOt|tjr5|jd k(r&t#d t%|Dr td t|tj&r td t#d t%|Dr tdtj dk\r[t|tj(r@t|j*tj,r|j*j.dk(r|j0}t3|drmt|tj4tj6fsC|j0}t3|dr+t|tj4tj6fsCd}t3|dr?g|j8j:|j8j8}|r|dj<}|j|j>fdd|fd|fd|ffvr td|jA||r td|jdk(r|j>dk(r td|jd k(rSt|tj(s9t#dtC|Drtj dk\r tdtj dk\r|jd vrtd!|jd"|jd#vr|j>d$k(r td%|jd&k(rst|tjDrYt|jFtjr5t|jHtjJr|jF|_ tj d'k\r|jMx}rtO|jPjSd(} |d)z|jTcxkr| d*z kstd+td+|jVjXjZd,k(r|jd-k(r td.|jVjXjZd,k(r%t|tj\r td/t|tj^rB|jVjXjZ|j`j.k(r td0|jdk(r|jbd,k(r td1|jd2k(r&t|tj,r td3yyycc}w)4N COMPARE_OPIS_OP CONTAINS_OPrz expected at least one comparisonrz4multiple chain comparison inside %s can not be fixedz+chain comparison inside %s can not be fixedra)ra rrCc3PK|]}t|tj ywr#rerPAssert.0ns r z2PositionNodeFinder.known_issues..>sN!Jq#**-N$&zBknown bug in 3.11.1 https://github.com/python/cpython/issues/95921assertc3PK|]}t|tj ywr#)rerPpatternrs r rz2PositionNodeFinder.known_issues..JsJaz!S[[)Jrz)pattern matching ranges seems to be wrongr`superrargs) LOAD_DEREF __class__ LOAD_FASTLOAD_FAST_BORROWrzsuper optimizationzCexeption cleanup does not belong to the last node in a except block STORE_NAME __classcell__zstore __classcell__c3PK|]}t|tj ywr#r)rps r rz2PositionNodeFinder.known_issues..sE!Jq#**-Er)rarr>z&exception generation maps to conditionra )STORE_FAST_STORE_FASTSTORE_FAST_LOAD_FASTLOAD_FAST_LOAD_FASTz can not map z to two ast nodesrrrz^loading of __class__ is accociated with a random node at the end of a class if you use super()rrsr>r^zAsynthetic opcodes in annotations are just bound to the first node __annotate__ STORE_SUBSCRz"synthetic code to store annotationz)JJD4;$NRVW !!NRV!WXX   Ra J .4-""f,N7G7MNNT  dCJJ 'X& & J3CD3IJ JHI I    '4*499chh/ ' ;;D$)*s++S__=3{{ $)*s++S__=3ItV$@..@@ $Q I""K$6$67+i(#Y/y) < !!566  ! !+t 4bc c    -+2D2D2W23 3   & (tCHH-Ewt}EE  J.EF F   w &!!& !< 0B0B/CCT!UVV!!%EE+J\J\`kJk!t ""l2tS[[1t||CKK8tww0#ll   v %!% ; ; ==}= !2!2!45b9 &q;+=+=L{1}L%%hiiM%%hii::$$,,n<ASASUcAc$%IJJ::$$,,n<DQTQ^Q^A_$%cdd$ /TZZ5F5F5N5NPTPYPYP\P\5\ !Z[[!!\1k6I6I^6[ !ABB!!W,D1J !VWW2K,1 &As;Yctjdk\rntj|jj dDcgc]}|j }}t|dk(r|ddvr|d=d}n|d=d}|gdk(r|Sycc}w)Nrsr)COPY_FREE_VARS MAKE_CELL)RESUMErLOAD_SMALL_INTrPOP_JUMP_IF_FALSE NOT_TAKENLOAD_COMMON_CONSTANT)rgrh itertoolsislicerKvaluesrMr)rYinstheader header_sizes r rz)PositionNodeFinder.annotation_header_sizes   f $,5,<,>q !Kq !K'&+WsBrc$jdvryt|tjrXt|jtj r4jj drt|jk(ryt|tjrXt|jtjr4jj drt|jk(rytfdt|DS)N)r STORE_FAST STORE_DEREF STORE_GLOBAL DELETE_NAME DELETE_FAST DELETE_DEREF DELETE_GLOBALFrdDELETE_c3K|]F}t|tjxr&|jxrt |j k(Hywr#)rerP ExceptHandlerrrr)rrrs r rz7PositionNodeFinder.is_except_cleanup..sD  q#++ , Z ZLOt{{|dr6|tjtjtjfry|dr'|tj$tj&fry|dr|tj(ry|ddr|tj*ry|dds|dds|dr|tj,tj.tj0rUt3t5tj.t5tj,j6j8try|dr|tj*ry|dr2|tj:j<tj>ry|dr=|tj@s&|tj,tj0ry|dr|tjry|dd r|tj.ry|d!r/|tjBrj<tEk(ry|d"r]|tjFtjHfr7tKfd#t5tjFjLDry|d$rt|tjNtj$tjPfs&|tj:tjR%rj<tEk(ry |d&r@jZj]d'}|d(k7r |tj^t`|ry|tjbtj>%r|d)tEry|d*r|tjdry|d+r'|tjftj>%ry|tj:tjh%sJ|tj:tjR%rwt3jjtj^rS|d,rKt3j<tlrtEj<vryj<tEk(ry|tj:tj>%r|d-tEry|tj.r-|d.t5tj.j8ry|tjtjtjtjtjnfr |d/ryt j"d k\r|tjptjrr |d0d12ry|tjfr |d3ry|tjHr |d0d42ry|tjts$t3jjtjr |d0d52ry|tj:r |d6d7ry|tjvr2|d0d82s'|d9d:2s|d9d;2s|d2s|d<jz2ry|tj~r1|d0d?2s&|d"jzj2s|d ry|tj$r8jr,|d@dA2ry|dBdC2ry|d0dD2ry|d6d7ry|tjNtjPfrTjrH|d ry|d9dE2ry|dFdGry|dFdHryt j"dIk\r |dJdKry|dLdMry|tj@r|dds|dNry|tjr |dOryt j"dPk\r|dQry|dRr|tjdry|dSr'|tj&tj$fry|dFdAry|dFd7ry|dTrc|tjNtj$tj~tjvtjtjPfry|dFr:|tj~r$jzjj<k(ry|dLdUry|dTr%t3jjtjvry|d9dV2r6|tjvtj|tjxfryt j"dIk\rn|d&d(2r|tjfry|dWd7ry|dXdYry|dJr/|tj:rjj<vrytd} td |jdZr"tjf} tjh}n|jd[r*tj,} t`jZ fd\}nE|jd]r`tjp} ttjrtjtjtj^| fd_}n|d`vr&tjb} tjh}fda}n|dbvr&tj:} tjh}fdc}n|dvrtj(} dd}nh|jder!tjR}tjf} n6|jdfr%tjR}tjb} fdg}tdhd} |tduxstdh xs t3| |} t3| r | r |ryditjdjj} t| )kzE checks if this node could gererate this instruction cy)NTes r z+PositionNodeFinder.verify..sr+Nopnameskwargsrc t|tr|g}j|vxr||Dcic]}|t|c}k(Scc}w)a) match instruction Parameters: opnames: (str|Seq[str]): inst.opname has to be equal to or in `opname` **kwargs: every arg has to match inst.arg Returns: True if all conditions match the instruction )restrrMgetattr)rrkrSs r inst_matchz-PositionNodeFinder.verify..inst_matchs\'3'")%%0V4:@/07;**@6 @sA node_type.cdt|xr"tfd|jDS)a match the ast-node Parameters: node_type: type of the node **kwargs: every `arg` has to be equal `node.arg` or `node.arg` has to be an instance of `arg` if it is a type. c3K|]<\}}t|trtt||nt||k(>ywr#)retyper)rrvrs r rz@PositionNodeFinder.verify..node_match..:sM7Aqa&74+Q/T1%*+7sAA)reallitems)rrrs r node_matchz-PositionNodeFinder.verify..node_match1s5dI.37#LLN 74 r+r=rC)rCrrr`)LOAD_FAST_AND_CLEARr)rCCALL_FUNCTION_EXr LOAD_NAME__annotations__)rr?joinr@)rC BUILD_STRING)leftrr)rr)rrr)r)rrWITH_EXCEPT_START)rr__doc__)rrrr)rrrrc3jK|]*}ttt|jk(,ywr#)rrrr)raliasrSs r rz,PositionNodeFinder.verify..s){UZLk5!9:k>P>PP{s03)rrrr)r BINARY_OP=z[]rB)JUMP_IF_TRUE_OR_POPJUMP_IF_FALSE_OR_POPPOP_JUMP_IF_TRUEr DELETE_SUBSCR)rrLOAD_FAST_CHECKr LOAD_GLOBALrLOAD_FROM_DICT_OR_DEREF!LOAD_FAST_BORROW_LOAD_FAST_BORROW)rrr)rqrrmCALL_INTRINSIC_1INTRINSIC_UNARY_POSITIVE)r BINARY_SLICEINTRINSIC_IMPORT_STARINTRINSIC_ASYNC_GEN_WRAPr __classdict__INTRINSIC_TYPEVARCALL_INTRINSIC_2INTRINSIC_TYPEVAR_WITH_BOUND"INTRINSIC_TYPEVAR_WITH_CONSTRAINTS)rrINTRINSIC_TYPEVARTUPLEINTRINSIC_PARAMSPECINTRINSIC_TYPEALIAS)rrrz .type_params)rrz .generic_baseINTRINSIC_SUBSCRIPT_GENERIC"INTRINSIC_SET_FUNCTION_TYPE_PARAMSr .defaults .kwdefaultsrsr)r r!r__classdictcell__) LIST_APPENDrC FORMAT_VALUErNOPTO_BOOLrDr__static_attributes__INTRINSIC_SET_TYPEPARAM_DEFAULTr)rr__conditional_annotations__) BINARY_SUBSCRzSLICE+BINARY_c`tttj|jSr#)rerrPBinOprrop_types r rz+PositionNodeFinder.verify..sZSYY0B0E0Ew%Or+UNARY_)UNARY_POSITIVEUNARY_NEGATIVErx UNARY_INVERTc`tttj|jSr#)rerrPrrr.s r rz+PositionNodeFinder.verify..sZS[[!0D0G0G%Qr+)r@r? LOOKUP_METHODLOAD_SUPER_ATTRc4t|jk(Sr#rrrrSs r rz+PositionNodeFinder.verify..\!_ 8J8J%Jr+)rrrrLOAD_CLASSDEREFcfttj|jjk(Sr#)rrPrrrr9s r rz+PositionNodeFinder.verify..s#T#((A%6%9%9[=O=O%Or+cbtttj|jdk(S)Nr)rrrPrrrs r rz+PositionNodeFinder.verify..s!Sckk1)=)A)A%Ba%Gr+) STORE_SLICErrAc4t|jk(Sr#r8r9s r rz+PositionNodeFinder.verify..r:r+rzast.z is not created from )MrMrr rr rboolr r rPWith AsyncWithr{r~r|r}rgrhrfrRrrr-ConstantModrerrvaluerrr JoinedStrrrImport ImportFromrnamesrrrMatchAs MatchSequence MatchValuer removesuffix AugAssign op_type_maprQBoolOp SubscriptLoadrtupleryrUAddYieldTypeVar TypeVarTupler ParamSpecrr type_paramsFormattedValueLambdaridictUSubrInvertrr__name__r)rYrrSop_name extra_filterrrrrrHnode_ctx ctx_matchtitler/s `` @r rWzPositionNodeFinder.verifysK $$6D J c8C=&8 9 S T & %eD#I.>(>"? 3 SW  g   f *chh -F"G  > ?J \\3++S[[#,, GE      '@ACLL#++s||DE  2 3 \\388 $9   < =* KKC   k*; < MMB  =8k&9673993<:; OOLLMMKKJJ((  A;'s}}-IILLK$6$66,.EF:; 4;;WZWbWb@c,5VW\fhkhshstwuBuBCFCSCShT]U   w &+d3 3==8Q,_E4=Z[=>:chhCW\`\c\cgrgygy\y JT    9 :--C((C    *))C!+"5"56GOL    )++C"xx"xx'' ZZ   G RL W W--C((CJL   ((C((COL > >++CGL    ? @))C--C    -))C--CJL4- tDz ! )4'' )(C(  dC Y<3E  J       eT;77r+c:|jj|dSr#)rKget)rYr\s r rSzPositionNodeFinder.instructions||d++r+cT|jj|jdz dS)Nr>)rKrfrJ)rYrSs r rz%PositionNodeFinder.instruction_befores&|| 2 2Q 6==r+cB|j|}|y|jS)Nr=)rSrM)rYr\is r rMzPositionNodeFinder.opnames#   5 ! 9xxr+rr`)linenorF col_offsetrErGrH.c|j|}|J|j jJtfd|jj jDS)Nc3K|]itr[ttjsAttjs't fdDrt t kyw)c3PK|]}t|t|k(ywr#)r)rattrrpositions r rz9PositionNodeFinder.find_node...s,$'74+>>s#&N)rerPExprrLrrr)rrrGrprHs @r rz/PositionNodeFinder.find_node.. s[  $$dCHH-dCNN3+ d #  sA/A3)rSrrjrr;_nodes_by_line)rYr\rGrHrSrps `` @r rNzPositionNodeFinder.find_nodesn"&&u- &&&((#(CCC   228??C   r+)'r_ __module__ __qualname__rrr rrPModuleintrr[rVr) InstructionrTrUr staticmethodr@rrWrrSrrrMextra_node_typesrgrh type_paramexprstmt excepthandlerrr rSr rNrr+r r6r6Bs 9Bi9BK0@9B 9B[^9Bhn9Bv-{-3-4-^ee.1ooe eNfXfX3??fXtfXTc25 5 {5 t5 5 nJ8;J8S__J8J8X,,#//)B,>??> #// "> CC  6!NN, *  HH HH    KK !  ! " " "#" 49 " !" r+r6)?rPrgr)typesrrtypingrrrrr r r r r r executingrrrrrr _exceptionsrr_utilsr functoolsrrr!r$r(rwr*IfExpIfrWhilerr{r|r}r~rPowMultMatMultFloorDivDivrDAddSubLShiftRShiftBitAndBitXorBitOrrOobjectr6rr+r rsR %]]]``4  +(;"7;8K+@  3,8,S__(=,, IIFFJJII &LLKKLL ) ''   ,,     ** **    "S S r+