ML i;RUdZddlmZddlmZmZddlZddlZddl Zddl m Z ddl m Z ddlmZmZmZmZmZmZmZmZddlmZdd lmZdd lmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'd hZ(d e)d <hdZ*d e)d<dZ+d e)d<GddeZ, d ddZ-ddZ.ddZ/ddZ0ddZ1d dZ2y)!z__ge____gt____le____lt___ORDERING_METHODSzfunctools.partialPARTIALc"eZdZUded<ded<y) _MethodInfobool is_staticrtypeN)__name__ __module__ __qualname____annotations__\/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/plugins/functools.pyr&r&.s O r/r&c t| s'|jjd|jyt fd} |}|syt |}|jj d}|}|jj|jj dk7rit|jj}t|tr!|jjdddk(sttj }t"D]T} j%|rt't)d ||d t*g} t-|j|j.|| |Vy) zFAdd dunder methods to classes decorated with functools.total_ordering.zNNo ordering operation defined when using "functools.total_ordering": < > <= >=Tc|du|fSNr.)kcomparison_methodss r0z9functools_total_ordering_maker_callback..@s2DQ2G42OQR1Sr/)keyz builtins.bool.r'otherN)_analyze_classapifailreasonmax_find_other_type named_typer)ret_typer isinstancernamesplitrrimplementation_artifactr#getr rrrcls) ctxauto_attribs_defaultroot root_method other_type bool_typerBproper_ret_type additional_opargsr5s @r0'functools_total_ordering_maker_callbackrR3s>(,   \ JJ  !'S TD$T*K !+.J""?3IH  CGG$6$6$GG)+*:*:*C*CD  4$$**3/3v=y@@AH*Q "%%m4S*5z4QRD -x P Q r/c4|jrdnd}d}d}t|jj|jjD]1\}}|j r||k(r|}n|dz }%|t k7s/|}n|ttjS|S)z?Find the type of the ``other`` argument in a comparison method.rN) r(zipr) arg_kinds arg_types is_positionalr rrrF)method first_arg_pos cur_pos_arg other_argarg_kindarg_types r0r@r@Zs))AqMKI!&++"7"79N9NO (  ! ! #m+$  1 K  " I  y8899 r/ci}|jjjddD]}tD]}||jvs||vs|j|j }t |tr>t |jtr$t|j|j||<~t |tr?t|j}t |trt|j|||<d||<|S)zMAnalyze the class body, its parents, and return the comparison methods found.Nr9)rHinfomror#namesnoderCr r)rr&r(rris_staticmethod)rIr5rHrDrc proper_types r0r;r;ps9;ww||$0% 0Dsyy T1C%Cyy++d$9:z$))Ua?b/:4>>499/U&t,dC("1$))"t?S?SU`3a*40 +/"4( 00 r/ct|jtjjs |j St |jdk7r |j St |jddk7r |j Stt|jddtr |j St||jddS)z6Infer a more precise return type for functools.partialrrT)callee) rCr<mypychecker TypeCheckerdefault_return_typelenrWrrhandle_partial_with_calleerIs r0partial_new_callbackrps cggt||77 8&&& 3==Q&&& 3== !&&&/#--"21"56 C&&& %c#--2B12E FFr/c !"t|jtjjs |j Stt |x}tr7tj|jDcgc]}t||c}S|jj||j }| |j S|jj}|jjd}|js.|jj!t"|j$g}d}n'|j$}d|jjd<d}g}g!g} g"t'} t)|j*dddD]\} } t)| D]\} }|| vr | j-||j/|!j/|j0| | | j/|j2| | "j/|j4| | t7!| |j0|j2"fd}t'}t)|j4D]=\} }|| s |j9t;|Dchc]}|j<c}?|j?|j0Dcgc]J}|t@jBk(rt@jDn$|t@jFk(rt@jHn|Lc}||jJDcgc]"}|j<|vst|tLs|$c}d }|jNd kr|jQ|j tS|j*d d |!| t|jTtRr|jTjVnd }|jQ|jT|jjXj[||!| | \}}|s||jjd<t |}t|t\s |j S|rmt |j$}t|t^r|j`jbt"k7r |j S|j?|j*d }g}g}g}t)|D]\} }te|j4te|j4k(rS|j4| }tjjg||jjhs|j4| }n|j4| }|r/|j0| t@jjt@jlfvrO|j/|j0| |j/||j/|j2| |sJto!fd|Dr.!|d }|t@jFk(s|t@jlk(rt@jH}|j/||j/||j/|j2| |j$}tjjg||jjhs |j$}|j?||||d }tq||jJDcgc]}|j<c}}|jj!t"|g}|jsd|}|jur|jvJ|jvjy} t@jj!vr| jzj-dt@jl!vr| jzj-d| |_;|Scc}wcc}wcc}wcc}wcc}w)Nror9TFrT)startc|Sr3r.)i actual_typess r0r6z,handle_partial_with_callee..s ,q/r/) actual_kinds actual_names formal_kinds formal_namesactual_arg_typepartial)rVrB variables special_sigr)rhrQrV arg_namesanalyzedrhrQrVr~context)rBc3hK|])}|tjtjfv+ywr3)r rARG_STAR).0jactual_arg_kindss r0 z-handle_partial_with_callee..%s,_RS#A&7??GrCr<rirjrkrlrr make_unionitemsrnextract_callable_typewith_unpacked_kwargswith_normalized_var_args type_context is_type_objnamed_generic_typer$rBset enumeraterQaddappendrVr~rWrupdaterid copy_modifiedr rARG_OPT ARG_NAMED ARG_NAMED_OPTr|rlineset_liner rr expr_checker check_callrrr)fullnamermis_valid_inferred_typeoptionsrr anyrcopy_with_extra_attr param_spec extra_attrscopy immutable)#rIrh callee_properitemfn_type last_contextrBwrapped_return actual_argsactual_arg_names seen_argsrtparamraformal_to_actual can_infer_idsr^tvr4 defaulted call_expr_bound partial_kinds partial_types partial_namesactualskindpartially_appliederased_ret_typeretattrsrrus# @@r0rnrns cggt||77 8&&&?6#::-IF##?L?R?R St 'T 2 S  gg++F8O8O+PG&&&**,EEGG77''+L    33Gg>N>N=OP##$(R KLIchhqrl!4 55e$ 5DAqI~ MM!    q !  # #CMM!$4Q$7 8  # #CMM!$4Q$7 8    a 0 3 4 5 5.%%&&&&1 EM !2!23L 8" .?.IJbeeJKL %%&&  '/0G4E4E/Eg++1N '' uu %ZK-H  !&I$~~3223xx{1~ "")3CKK)J%%PT Is{{#ww##.. "" /HAu #/R E "E e\ *&&&"5>>2(H-1G1G71R** *##X]]1-=#>MMM 017 7 u 3w'8'8#9 9q)H<<66xQ",,Q/((+H'++A.73C3CWEVEV2WW  !2!21!5 6   *  !2!21!5 6N7_W^__#GAJ/Dw(((DG4E4E,E,,   &   *  !2!21!5 6376~~H << . .x I##-- .%X@Q@Q/R"/RSO '' $ $W.? @C " "#35F GC##%***$$&   / / OO   E F    0 0 OO   G H J[ TtK  t0Ss5_1_6 A_;0'` ` ct|jtjjryt|j t r_|j j jtk7s8|j jr"d|j jjvr |jS|j j}t|jd}t|jdk7r |jSg}g}g}t}t!|j"D]\}}t!|D]n\} } | |vr |j%| |j'| |j'|j(|| |j'|j*|| p|jj,j/|||||j0\} } t|t2r|j5| Sd|j6v} d|j6v}|Dcgc]f}t|t8rTt|j:t<r:t|j:j t>r|j:j h}}tAd|D}| s>|s<|jj,jBjE||j0|n>| r<|r:|jj,jBjG||j0tAd|D}|s=|s;|jj,jBjE||j0|| Scc}w)z@Infer a more precise return type for functools.partial.__call__.rrrrc3VK|]!}|jtjk(#ywr3)flavorrARGSrparts r0rz(partial_call_callback..s]ddkk_%9%99]')c3VK|]!}|jtjk(#ywr3)rrKWARGSrs r0rz(partial_call_callback..sa$ '='==ar)$rCr<rirjrkr)rrr$rrrlrrmrWrrrQrrrVr~rrrrrrrrcrrrmsgtoo_few_argumentstoo_many_arguments)rIr partial_typerrrrrtrrrresultr args_bound kwargs_boundargpassed_paramspec_parts args_passed kwargs_passeds r0partial_call_callbackrMs sww 8 8 9#((H- 88== ! !W ,xx## 388#7#7#=#= =&&&((&&K";#4#45E#FGL 3==Q&&&KIchh'95e$ 9DAqI~ MM!    q !  # #CMM!$4Q$7 8  # #CMM!$4Q$7 8  99$$// "" 0IFA lL 1\5L5L5N5V 6+:O:OOJ:k>S>SSL  c8 $ sxx % sxx}}m 4  ]F\]]K k   22<N^_     33L#++NaJ`aaM     22<N^_ M's(A+M8)F)rImypy.plugin.ClassDefContextrJr'returnr')rYr&rr)rIrrzdict[str, _MethodInfo | None])rImypy.plugin.FunctionContextrr)rIrrhrrr)rIzmypy.plugin.MethodContextrr)3__doc__ __future__rtypingrr mypy.checkerri mypy.plugin mypy.semanal mypy.argmaprmypy.erasetyper mypy.nodesrr r r r r rrmypy.plugins.commonr mypy.typeopsr mypy.typesrrrrrrrrrrrrrr-r#r$r&rRr@r;rprnrr.r/r0rsB"$.)   4*    +E)EEC5C$$* DI$ $$<@$ $N,0 Gsl>r/