NL i/2ddlmZddlmZddlmZddlmZmZm Z ddl m Z m Z m Z mZmZmZmZmZmZddlmZddlmZmZmZmZddlmZmZdd lmZdd l m!Z!dd l"m#Z#m$Z$m%Z%m&Z&dd l'm(Z(dd l)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/hdZ0GddeZ1 ddZ2ddZ3y)) annotations) Generator)contextmanager) MatchStmtNameExprTypeInfo) AsPattern ClassPatternMappingPattern OrPatternPatternSequencePatternSingletonPatternStarredPattern ValuePattern)TraverserVisitor)Instance LiteralType TupleTypeget_proper_type) BasicBlockValue)object_rprimitive) IRBuilder) dict_copy dict_del_itemmapping_has_keysupports_mapping_protocol)generic_ssize_t_len_op)sequence_get_itemsequence_get_slicesupports_sequence_protocol)fast_isinstance_opslow_isinstance_op> builtins.int builtins.set builtins.str builtins.bool builtins.dict builtins.listbuiltins.bytesbuiltins.floatbuiltins.tuplebuiltins.bytearraybuiltins.frozensetceZdZUded<ded<ded<ded<ded<d ed <d Zd ed <ddZddZddZddZddZ ddZ d dZ d!dZ d"dZ d#dZd$d%dZed&dZy )' MatchVisitorrbuilderr code_block next_block final_blockrsubjectrmatchNzAsPattern | None as_patternc||_t|_t|_t|_||_|j |j|_yN)r2rr3r4r5r7acceptr6)selfr2 match_nodes Y/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypyc/irbuild/match.py__init__zMatchVisitor.__init__?sB $,$,%< ~~j&8&89 c2|jj|j|jj|}|rt |_|jj |}|jj||j|j|jj|j|jj |jj||jj|jyr:) r2activate_blockr3r7guardsrr;add_bool_branchr4bodiesgotor5)r<indexguardconds r>build_match_bodyzMatchVisitor.build_match_bodyIs ##DOO4 !!%( (lDO<<&&u-D LL ( (t P LL ' ' 8 DJJ--e45 $**+r@cRt|jD]j\}}t|_t|_|j ||j ||jj|jl|jj|jyr:) enumeratepatternsrr3r4r;rJr2rBgoto_and_activater5)r<mipatterns r>visit_match_stmtzMatchVisitor.visit_match_stmtYsz#AJJ/ 9JAw(lDO(lDO NN4  ! !! $ LL ' ' 8 9 &&t'7'78r@cJ|jj|j}|jj|j|d|jj }|j ||jj||j|jy)N==) r2r;expr binary_opr6linebind_as_patternrDr3r4)r<rQvaluerIs r>visit_value_patternz MatchVisitor.visit_value_patternesn ##GLL1||%%dllE4ARARS U# $$T4??DOOLr@cd|j}t|_|jD]Z}|j}|j |||_|j j |jt|_\||_|j j|jyr:)r4rrMr8r;r2rBrF)r<rQ backup_blockpbackups r>visit_or_patternzMatchVisitor.visit_or_patternns $,!! +A__F HHTN$DO LL ' ' 8(lDO +' $//*r@c|jj|jrtnt}|jj ||j |jj|jg|j}|jj||j|j|j|j d|jrW|jjtvrS|jj!|jt#|_ |jdj|y|jj$}t'|t(sJ|t+|}t-|jD]\}}|jj!|jt#|_ |jj/|j |||j}|j1|5|j|dddt3|j4|j6D]\} } |jj!|jt#|_ |jj/|j | | j} |j1| 5| j|dddy#1swY^xYw#1swYxYw)NT) new_blockr)r2is_builtin_ref_expr class_refr#r$ primitive_opr6r;rWrDr3r4rX positionalsfullnameMATCHABLE_BUILTINSrBrnode isinstancerextract_dunder_match_args_namesrL py_get_attrenter_subpatternzip keyword_keyskeyword_values) r<rQ isinstance_oprIrh match_argsrPrU positionalkeyrYattrs r>visit_class_patternz MatchVisitor.visit_class_patternsb ||//0A0AB #  ||(( DLL$,,*=*=g>O>O*PQSZS_S_  $$T4??DOOL T\\T:     ))-?? ++DOO<",,##A&--d3$$))DdH- 3t 3-8>J$W%8%89 &4 ++DOO<",,"\\55dllJqMSWS\S\] **:6&KK%&& &g22G4J4JK #JC LL ' ' 8(lDO<<++DLL#uzzJD&&t, # T" # # #&& # #sK3L3K= L c|jr6|j}||_|jj|||_nb|jrV|jj |j}|jj ||j|j|jj|jyr:) rQr8r;namer2get_assignment_targetassignr6rWrFr3)r<rQ old_patterntargets r>visit_as_patternzMatchVisitor.visit_as_patterns ??//K%DO OO " "4 ()DO \\\\77 EF LL   gll C $//*r@c|j|jj}nC|jdur|jj}n|jj }|jj |j |d|j}|jj||j|jy)NTis) rYr2 none_objecttruefalserVr6rWrDr3r4)r<rQobjrIs r>visit_singleton_patternz$MatchVisitor.visit_singleton_patterns == ,,**,C ]]d ",,##%C,,$$&C||%%dllCw||L $$T4??DOOLr@c|jjt|jg|j}|jj ||j |jg}t|j|jD]e\}}|jj|j t|_|jj|}|j||jjt|j|g|j}|jj ||j |j|jj|j t|_|jj!|jd|gt"|j}|j%|5|j|dddh|j&r=|jj|j t|_|jj)t*|jg|j&j} |jj-|j&} |jj/| | |j&jt1|D]?\} } |jjt2| | g|j| jA|jj5|j yy#1swYxYw)N __getitem__)r2call_crr6rWrDr3r4rmkeysvaluesrBrr;appendrgen_method_callrrlrestrdrrxryrLrrF) r<rQis_dictrrsrY key_valueexistsitemrr{rPkey_names r>visit_mapping_patternz"MatchVisitor.visit_mapping_patternsY,,%%&?$,,QXQ]Q]^ $$WdootOgllGNN; #JC LL ' ' 8(lDO ++C0I KK "\\((4<<:SU\UaUabF LL ( ($// R LL ' ' 8(lDO<<// mi[:KW\\D&&t, # T" # ## #( << LL ' ' 8(lDO<<,,Y HYHYZD\\77 EF LL  gll.?.? @( [ 8 ##MD(3CW\\RS_EYEYZ [ LL  doo .  # #s L>>M ctt|\}}}|jjt|jg|j }|jj ||j|j|jj|jt|_|jjt|jg|j }t|}|jj||jj||dnd|j }|jj ||j|jt|D]\} } |jj|jt|_|J| |k\rE|jj||jj|| z d| j } n|jj| } |jjt |j| g| j } |j#| 5| j%|ddd|r5|1|jj|jt|_|jj||jj||z d|j } |jjt&|j|jj|| g|j }|jj)|}|jj+|||j |jj-|jyyy#1swYJxYw)NrTz>=-)prep_sequence_patternr2rr"r6rWrDr3r4rBrrlenrVload_intrLr rlr;r!rxryrF)r< seq_pattern star_indexcapturerMis_list actual_lenmin_lenis_long_enoughrPrQcurrentr capture_endrr{s r>visit_sequence_patternz#MatchVisitor.visit_sequence_patterns(=k(J% GX,,%%&@4<<.R]RbRbc $$WdootO ##DOO4$,\\(()?$,,Q\QaQab h-//  LL ! !' *&DD      $$^T__dooV#H- %JAw LL ' ' 8(lDO%!z/,,00 5 5gk BC ,,//2<<&&'84<<:QSZS_S_`D&&t, %t$ % % %" z- LL ' ' 8(lDO,,00DLL11'J2FGgllK<<&&"t||44Z@+N D \\77@F LL  gll ; LL  doo .#.7 % %s N--N7 c|jr|jjr|jjr|r4|jj |j t |_|jj|jj}|jj|||jjjd|_|r&|jj|j yyyyyr:) r8rQrwr2rBr3rrxryrWrF)r<rYrar{s r>rXzMatchVisitor.bind_as_pattern0s ??t664??;O;O ++DOO<",,\\778L8LMF LL  t/F/F/K/K L"DO !!$//2rlzMatchVisitor.enter_subpattern>s ll   " s ")r2rr=rreturnNone)rGintrr)rOrrr)rQrrr)rQr rr)rQr rr)rQr rr)rQrrr)rQr rr)rrrr)F)rYrraboolrr)r6rrzGenerator[None])__name__ __module__ __qualname____annotations__r8r?rJrRrZr_rur|rrrrXrrlr@r>r1r15s  N #'J ':, 9M+"1#f + M(/T8/t 3##r@r1cd}d}g}t|jD]5\}}t|tr|}|j}%|j |7|||fSr:)rLrMrirrr)rrrrMrPrQs r>rrFsf"J#G H 4 45% 7 g~ .JooG OOG $ % w ((r@c|jjd}|sJt|j}t |t sJ|g}|j D]}t|}d}t |tr#|jr|jj}nt |tr |j}t |ts Jd||j||S)N__match_args__z"Unrecognized __match_args__ item: ) namesgetrtyperiritemsrlast_known_valuerYrstrr)infotymatch_args_typerqr proper_item match_args r>rjrjXs ( )B I2%bgg.O oy 1B?B 1J%% %%d+  k8 ,1M1M#44::I  [ 1#))I)S)V-OPTv+VV))$ % r@N)rrrz1tuple[int | None, NameExpr | None, list[Pattern]])rrrz list[str])4 __future__rcollections.abcr contextlibr mypy.nodesrrr mypy.patternsr r r r r rrrrmypy.traverserr mypy.typesrrrr mypyc.ir.opsrrmypyc.ir.rtypesrmypyc.irbuild.builderrmypyc.primitives.dict_opsrrrrmypyc.primitives.generic_opsrmypyc.primitives.list_opsr r!r"mypyc.primitives.misc_opsr#r$rgr1rrjrr@r>rs"%%44   ,HH*-+ @ M N##N#b) )6)$r@