ML i$UddlmZddlmZddlmZmZmZddlm Z ddl m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;mZ>e?edfZ@deAd <dd ZBdd ZCdd ZDdd ZEGdde>ee@ZFeFZGdeAd<y)) annotations)Iterable)AnyFinalOptional) TypeAlias)1 LITERAL_NO LITERAL_TYPE LITERAL_YESAssertTypeExprAssignmentExpr AwaitExpr BytesExprCallExprCastExprComparisonExpr ComplexExprConditionalExprDictExprDictionaryComprehension EllipsisExpr EnumCallExpr Expression FloatExpr GeneratorExpr IndexExprIntExpr LambdaExprListComprehensionListExpr MemberExprNamedTupleExprNameExpr NewTypeExprOpExpr ParamSpecExpr PromoteExpr RevealExprSetComprehensionSetExpr SliceExprStarExprStrExpr SuperExprTempNode TupleExpr TypeAliasExprTypeApplication TypedDictExpr TypeVarExprTypeVarTupleExpr UnaryExprVar YieldExpr YieldFromExpr)ExpressionVisitor. _TypeAliasKeyc,|jtS)aGenerate a hashable, (mostly) opaque key for expressions supported by the binder. These allow using expressions as dictionary keys based on structural/value matching (instead of based on expression identity). Return None if the expression type is not supported (it cannot be narrowed). See the comment above for more information. NOTE: This is not directly related to literal types. )accept_hasheres S/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/mypy/literals.py literal_hashrCfs 88G c^t|trtd|jDSt|tr2tt |j t |jSt|tttfrt |jSt|trt |jSt|tr7t |jt k(rt |j"St$St|t&rRt|j(t*r2|j(j,r|j(j.t St0St|t2t4t6t8t:frt St=|rt St$S)z*Return the literal kind for an expression.c32K|]}t|ywN)literal.0os rB zliteral..ys2!71:2) isinstancerminoperandsr%rHleftrightr!r6r,exprr targetrindexr baser r#noder7is_final final_valuer rrrr-rrCr@s rBrHrHus!^$2qzz222 Av 7166?GAGG$455 A Ix8 9qvv A~ &qxx  Ay ! 177 { *166? "  Ax affc "qvv166;M;M;Y !gy+w JKA rDcN|Dcgc]}t|ts|c}Scc}wrG)rNtuple)keyelts rBsubkeysr^s 9C*S%"8C 99 9s""c`t|dk(r |ddk(rt|dtr|dSy)zHIf key refers to a Var node, return it. Return None otherwise. rr7N)lenrNr7)r\s rBextract_var_from_literal_hashrcs2  3x1}Q5ZA-D1v rDcteZdZd/dZd0dZd1dZd2dZd3dZd4dZd5dZ d6dZ d7d Z d8d Z d9d Z d:d Zd;d ZddZd?dZd@dZdAdZdBdZdCdZdDdZdEdZdFdZdGdZdHdZdIdZdJdZdKdZdLdZ dMdZ!dNd Z"dOd!Z#dPd"Z$dQd#Z%dRd$Z&dSd%Z'dTd&Z(dUd'Z)dVd(Z*dWd)Z+dXd*Z,dYd+Z-dZd,Z.d[d-Z/y.)\_Hashercd|jfSNLiteralvalueselfrAs rBvisit_int_exprz_Hasher.visit_int_expr177##rDcd|jfSrgrirks rBvisit_str_exprz_Hasher.visit_str_exprrnrDcd|jfSrgrirks rBvisit_bytes_exprz_Hasher.visit_bytes_exprrnrDcd|jfSrgrirks rBvisit_float_exprz_Hasher.visit_float_exprrnrDcd|jfSrgrirks rBvisit_complex_exprz_Hasher.visit_complex_exprrnrDc0dt|jfS)NStar)rCrSrks rBvisit_star_exprz_Hasher.visit_star_exprs QVV,--rDct|jtrD|jjr.|jjd|jjfSd|jfS)Nrhr7)rNrWr7rXrYrks rBvisit_name_exprz_Hasher.visit_name_exprsN affc "qvv166;M;M;Yqvv112 2qvvrDcFdt|j|jfS)NMember)rCrSnamerks rBvisit_member_exprz_Hasher.visit_member_exprs,qvv.77rDcnd|jt|jt|jfS)NBinary)oprCrQrRrks rB visit_op_exprz_Hasher.visit_op_exprs'!$$ QVV 4l1776KLLrDctt|j}|td|jDz }d|zS)Nc32K|]}t|ywrGrCrIs rBrLz0_Hasher.visit_comparison_expr..s:!l1o:rM) Comparison)r[ operatorsrPrlrArests rBvisit_comparison_exprz_Hasher.visit_comparison_exprs4-21;;-? :qzz:::%%rDcFd|jt|jfS)NUnary)rrCrSrks rBvisit_unary_exprz_Hasher.visit_unary_exprs|AFF344rDctd|jDr"td|jD}|f|zSy)Nc3@K|]}t|tk(ywrGrHr rJxs rBrLz#_Hasher.seq_expr..s:Qwqz[(:sc32K|]}t|ywrGrrs rBrLz#_Hasher.seq_expr..s0RQa0RrMallitemsr[)rlrAr~rs rBseq_exprz_Hasher.seq_exprs7 :!'': :+00R!''0R+RD7T> !rDc&|j|dS)NListrrks rBvisit_list_exprz_Hasher.visit_list_exprs}}Q''rDc~td|jDr!td|jD}d|zSy)Nc3vK|]1\}}|xr&t|t|cxk(xr tk(nc3ywrGrrJabs rBrLz*_Hasher.visit_dict_expr..s.QAq.s*1FJaAa4aA1s'))Dictrrs rBvisit_dict_exprz_Hasher.visit_dict_exprs? QQ Q+01NOgg1,Dt# #rDc&|j|dS)NTuplerrks rBvisit_tuple_exprz_Hasher.visit_tuple_exprs}}Q((rDc&|j|dS)NSetrrks rBvisit_set_exprz_Hasher.visit_set_exprs}}Q&&rDct|jtk(r+dt|jt|jfSy)NIndex)rHrUr rCrVrks rBvisit_index_exprz_Hasher.visit_index_exprs5 177 { *\!&&1<3HI IrDc,t|jSrG)rCrTrks rBvisit_assignment_exprz_Hasher.visit_assignment_exprsAHH%%rDcyrGrks rBvisit_call_exprz_Hasher.visit_call_exprrDcyrGrrks rBvisit_slice_exprz_Hasher.visit_slice_exprrrDcyrGrrks rBvisit_cast_exprz_Hasher.visit_cast_exprrrDcyrGrrks rBvisit_assert_type_exprz_Hasher.visit_assert_type_exprrrDcyrGrrks rBvisit_conditional_exprz_Hasher.visit_conditional_exprrrDcyrGrrks rBvisit_ellipsisz_Hasher.visit_ellipsisrrDcyrGrrks rBvisit_yield_from_exprz_Hasher.visit_yield_from_exprrrDcyrGrrks rBvisit_yield_exprz_Hasher.visit_yield_exprrrDcyrGrrks rBvisit_reveal_exprz_Hasher.visit_reveal_exprrrDcyrGrrks rBvisit_super_exprz_Hasher.visit_super_expr rrDcyrGrrks rBvisit_type_applicationz_Hasher.visit_type_application rrDcyrGrrks rBvisit_lambda_exprz_Hasher.visit_lambda_exprrrDcyrGrrks rBvisit_list_comprehensionz _Hasher.visit_list_comprehensionrrDcyrGrrks rBvisit_set_comprehensionz_Hasher.visit_set_comprehensionrrDcyrGrrks rBvisit_dictionary_comprehensionz&_Hasher.visit_dictionary_comprehensionrrDcyrGrrks rBvisit_generator_exprz_Hasher.visit_generator_exprrrDcyrGrrks rBvisit_type_var_exprz_Hasher.visit_type_var_exprrrDcyrGrrks rBvisit_paramspec_exprz_Hasher.visit_paramspec_expr!rrDcyrGrrks rBvisit_type_var_tuple_exprz!_Hasher.visit_type_var_tuple_expr$rrDcyrGrrks rBvisit_type_alias_exprz_Hasher.visit_type_alias_expr'rrDcyrGrrks rBvisit_namedtuple_exprz_Hasher.visit_namedtuple_expr*rrDcyrGrrks rBvisit_enum_call_exprz_Hasher.visit_enum_call_expr-rrDcyrGrrks rBvisit_typeddict_exprz_Hasher.visit_typeddict_expr0rrDcyrGrrks rBvisit_newtype_exprz_Hasher.visit_newtype_expr3rrDcyrGrrks rBvisit__promote_exprz_Hasher.visit__promote_expr6rrDcyrGrrks rBvisit_await_exprz_Hasher.visit_await_expr9rrDcyrGrrks rBvisit_temp_nodez_Hasher.visit_temp_node<rrDN)rArreturnr<)rAr-rr<)rArrr<)rArrr<)rArrr<)rAr,rr<)rAr#rr<)rAr!rr<)rAr%rr<)rArrr<)rAr6rr<)rAzListExpr | TupleExpr | SetExprr~strr Key | None)rAr rr)rArrr)rAr0rr)rAr*rr)rArrr)rAr rr)rArrNone)rAr+rr)rArrr)rAr rr)rArrr)rArrr)rAr9rr)rAr8rr)rAr(rr)rAr.rr)rAr2rr)rArrr)rArrr)rAr)rr)rArrr)rArrr)rAr4rr)rAr&rr)rAr5rr)rAr1rr)rAr"rr)rArrr)rAr3rr)rAr$rr)rAr'rr)rArrr)rAr/rr)0__name__ __module__ __qualname__rmrprrrtrvryr{rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrDrBreres$$$$$.8M& 5 ()' &rDrerr?N)rArrr)rArrint)r\r<rz Iterable[Key])r\r<rz Var | None)H __future__rcollections.abcrtypingrrrtyping_extensionsrr; mypy.nodesr r r r r rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r3r4r5r6r7r8r9 mypy.visitorr:r[r<__annotations__rCrHr^rcrer?rrDrBrs"$''52222222222222f+RS/Z!  F:W .WtrD