
    \j                   n   U d Z ddlmZ ddlZddlZddlmZmZ ddlZddl	m
ZmZmZ ddlmZmZmZ ddl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! ddl"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;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZkmlZlmmZmmnZnmoZo dd	lpmqZq dd
lrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZzm{Z{ ddl|m}Z} ddl~mZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ ddlmZ eeeee         f                  Z ee(g d          Zded<    G d d          Z	 dsdtdZdud!Zdvd$Zdwd)Z	 dsdxd+Zdyd-Zdzd/Zd{d1Zd|d3Zd}d5Zd~d7Zdd9Zdd;Zdd>Zdd?Zdd@ZddBZddDZddFZg dGZdedH<   dIdJgZdedK<   g dLZdedM<   g dNZdedO<   ddQZddRZddUZddVZddWZdd[Zdd\Zdd]Zdd_ZddaZdddZddeZddfZ	 dddhZddjZddlZddpZddrZdS )a  Python parser that directly constructs a native AST (when compiled).

Use a Rust extension to generate a serialized AST, and deserialize the AST directly
to a mypy AST.

NOTE: This is work in progress. To use this, you need to manually build the
      ast_serialize Rust extension. See the README at https://github.com/mypyc/ast_serialize.

Expected benefits over mypy.fastparse:
 * No intermediate non-mypyc Python-level AST created, to improve performance
 * Parsing doesn't need GIL => use multithreading to construct serialized ASTs in parallel
 * Produce import dependencies without having to build an AST => helps parallel type checking
 * Support all Python syntax even if mypy is running on an older Python version
 * Generate an AST even if there are syntax errors
 * Potential to support incremental parsing (quickly process modified sections in a file)
 * Stripping function bodies in third-party code can happen earlier, for extra performance
    )annotationsN)Finalcast)
read_floatread_intread_str)message_registrynodestypes)DICT_STR_GENEND_TAGLIST_GENLIST_INTLITERAL_FLOATLITERAL_NONELITERAL_STRLOCATION
ReadBufferTag	read_boolr   r   read_str_optread_tag)M	ARG_KINDSARG_POSIMPORT_METADATAIMPORTALL_METADATAIMPORTFROM_METADATAMISSING_FALLBACKArgument
AssertStmtAssignmentExprAssignmentStmt	AwaitExprBlock	BreakStmt	BytesExprCallExprClassDefComparisonExprComplexExprConditionalExprContextContinueStmt	DecoratorDelStmtDictExprDictionaryComprehensionEllipsisExpr
ExpressionExpressionStmtFileRawData	FloatExprForStmtFuncDefGeneratorExpr
GlobalDeclIfStmtImport	ImportAll
ImportBase
ImportFrom	IndexExprIntExpr
LambdaExprListComprehensionListExpr	MatchStmt
MemberExprMypyFileNameExprNonlocalDeclOperatorAssignmentStmtOpExprOverloadedFuncDefOverloadPart
ParseErrorPassStmt	RaiseStmtRefExpr
ReturnStmtSetComprehensionSetExpr	SliceExprStarExpr	StatementStrExpr	SuperExprTemplateStrExprTempNodeTryStmt	TupleExprTypeAliasStmt	TypeParam	UnaryExprVar	WhileStmtWithStmt	YieldExprYieldFromExpr)Options)		AsPatternClassPatternMappingPattern	OrPatternPatternSequencePatternSingletonPatternStarredPatternValuePattern)"infer_reachability_of_if_statement)special_function_elide_names)AnyTypeCallableArgumentCallableTypeEllipsisTypeInstance
ProperTypeRawExpressionType	TupleTypeTypeTypedDictTypeTypeList	TypeOfAnyUnboundType	UnionType
UnpackType)unnamed_functionr   _dummy_fallbackc                  $    e Zd ZddZddddZdS )Stateoptionsrf   returnNonec                0    || _         g | _        d| _        d S )Nr   )r   errors	num_funcs)selfr   s     T/var/www/app.qaans.com/backend/venv/lib/python3.11/site-packages/mypy/nativeparse.py__init__zState.__init__   s    (*    F)blockermessagestrlineintcolumnr   boolcodec               F    | j                             |||||d           dS )z'Report an error at a specific location.)r   r   r   r   r   N)r   append)r   r   r   r   r   r   s         r   	add_errorzState.add_error   s:     	VG]abb	
 	
 	
 	
 	
r   N)r   rf   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )__name__
__module____qualname__r   r    r   r   r   r      sM            HM
 
 
 
 
 
 
 
r   r   Ffilenamer   r   rf   skip_function_bodiesr   r   .tuple[MypyFile, list[ParseError], TypeIgnores]c           
     4   t           j                            |           rt          g g           }| |_        |g g fS t	          | ||          \  }}}}}}	}
}t          g g           }| |_        t          |||t          |          ||	|
|          |_        |||fS )a  Parse a Python file using the native Rust-based parser.

    Return (MypyFile, errors, type_ignores).

    The returned tree is empty with actual serialized data stored in `raw_data`
    attribute. Use read_statements() and/or deserialize_imports() to de-serialize.

    The caller should set these additional attributes on the returned MypyFile:
      - ignored_lines: dict of type ignore comments (from the TypeIgnores return value)
      - is_stub: whether the file is a .pyi stub
    )ospathisdirrG   parse_to_binary_astr5   dictraw_data)r   r   r   nodebr   ignoresimport_bytesis_partial_packageuses_template_stringssource_hashmypy_commentss               r   native_parser      s      
w}}X B	R| 	Hg/CDD		BDDI	W	 	DM   r   datar   r   c                :    t          |           t          k    sJ d S N)r   r   )r   s    r   expect_end_tagr      s    D>>W$$$$$$r   tagr   c                D    t          |           x}|k    s
J |            d S r   )r   )r   r   actuals      r   
expect_tagr      s,    tnn$F,,,f,,,,,r   statenr   list[Statement]c                    g }| j         }t          |          D ]'}t          | |          }|                    |           (| j         |dz   k    rt	          | |          }|S )N   )r   rangeread_statementr   fix_function_overloads)r   r   r   defsold_num_funcs_stmts          r   read_statementsr      sm    DOM1XX  eT**D***%eT22Kr   Ztuple[bytes, list[ParseError], TypeIgnores, bytes, bool, bool, str, list[tuple[int, str]]]c           	     l   t          j                     }t          Dt          j        d           t          j                     |z
  dk    rt          d          t          Dt          j        | ||j        |j        |j        |j        d          \  }}}}}|||||d         |d         |d         |d	         fS )
Ng-C6?g      $@zCannot import ast_serialize   )r   python_versionplatformalways_truealways_falsecache_versionr   r   r   r   )	timeast_serializesleepImportErrorparser   r   r   r   )	r   r   r   t0	ast_bytesr   r   r   ast_datas	            r   r   r      s    
 
B


69;;d"";<<< 
 :G9L1-!'): : :6Ivwh 	%&()!	 	r   rW   c                j    t                    }|t          j        k    rt                     }t	                     }t                    }|rt                     }nd }t                    }t          ||||          }t          |           t          |t                    rt          ||           t                     |S |t          j        k    rCt          t	                               }	t          |	|	j                   t                     |	S |t          j        k    rt	                     }
t#                     }t%                    }g }g }t'          |          D ]H}|                    t	                                |                    t#                                It                    }|rt#                     }nd }|}t+          t-          t/          ||                              D ]\  }}t1          |g|g|          }|j        |_        |j        |_        ||j        |_        |j        |_        n|j        |_        |j        |_        t;          |g          }t          ||           t1          |
g|g|          }t          |           t                     |S |t          j        k    rTt                    }|rt	                     }nd }t?          |          }t          |           t                     |S |t          j         k    rtC                     S |t          j"        k    rt%                    }tG                    }t%                    }g }t'          |          D ]K}tG                    }t                    } | rtG                    }!nd }!|                    ||!f           LtI          |||          }tK          |           t                     |S |t          j&        k    rt	                     }"t	                     }
t#                     }tO                     }t                    }#tQ          |"|
||          }|#|_)        t          |           t                     |S |t          j*        k    ret	                     }$t                    }%|%rt	                     }&nd }&tW          |$|&          }t          |           t                     |S |t          j,        k    rt[                     S |t          j.        k    rt_          t`                     tc                    }' fdt'          |'          D             }(t%                    })t%                    }*te                     }+t          |+tf                    sJ d|+_4        tk          |+j6                  },|+j        |,_        d|,_7        tq          |+|(|,          }|)|_        |*|_        |+j        |_        |+j        |_        t                     |S |t          j9        k    rt%                    }g }-t'          |          D ]K}tG                    }t                    } | rtG                    }!nd }!|-                    ||!f           Ltu          |-          }tK          |           t                     |S |t          j;        k    ryt                    }.|.rt	                     }/nd }/t                    }0|0rt	                     }1nd }1ty          |/|1          }t          |           t                     |S |t          j=        k    ratG                    }2t	                     }3t	                     }t}          |2|3|          }t          |           t                     |S |t          j?        k    r/t                      }t          |           t                     |S |t          jA        k    r/t                      }t          |           t                     |S |t          jC        k    rt%                    }g }4g }5t'          |          D ]s}t	                     }6|4                    |6           t                    }7|7r&t	                     }8|5                    |8           ^|5                    d            tt#                     }t                    }#t          |4|5|          }|#|_)        t          |           t                     |S |t          jE        k    rt                     S |t          jG        k    r/t                      }t          |           t                     |S |t          jI        k    rbt	                     }
t#                     }tO                     }t          |
||          }t          |           t                     |S |t          jK        k    r@t	                     }
t          |
          }t          |           t                     |S |t          jM        k    rt                     S |t          jO        k    rOtG                    }t%                    }t          ||          }tK          |           t                     |S |t          jQ        k    rut%                    }g }9t'          |          D ]$}|9                    tG                               %t          |9          }t          |           t                     |S |t          jS        k    rut%                    }g }9t'          |          D ]$}|9                    tG                               %t          |9          }t          |           t                     |S |t          jU        k    r t	                     }:t%                    };g }<g }=g }>t'          |;          D ]}t                     }?|<                    |?           t                    }@|@r&t	                     }A|=                    |A           n|=                    d            t#                     }|>                    |           t          |:|<|=|>          }t          |           t                     |S J |            )N)type
new_syntaxc                0    g | ]}t                    S r   read_expression.0ir   r   s     r   
<listcomp>z"read_statement.<locals>.<listcomp>  s#    PPPqoeT22PPPr   TF)Xr   r
   ASSIGNMENT_STMTread_expression_listr   r   	read_typer"   read_loc
isinstancer[   set_line_column_ranger   	EXPR_STMTr4   exprIF_STMT
read_blockr   r   r   reversedlistzipr;   r   r   end_line
end_columnr$   RETURN_STMTrR   FUNC_DEF_STMTread_func_defIMPORT_FROMr   r?   _read_and_set_import_metadataFOR_STMTread_optional_blockr7   is_asyncASSERT_STMTr    	CLASS_DEFread_class_def	DECORATORr   r   read_int_barer   r8   is_decoratedra   nameis_readyr.   IMPORTr<   
RAISE_STMTrP   OPERATOR_ASSIGNMENT_STMTrJ   	PASS_STMTrO   CONTINUE_STMTr-   	WITH_STMTrc   TRY_STMTread_try_stmt
BREAK_STMTr%   
WHILE_STMTrb   DEL_STMTr/   TYPE_ALIAS_STMTread_type_alias_stmt
IMPORT_ALLr=   NONLOCAL_DECLrI   GLOBAL_DECLr:   
MATCH_STMTread_patternrE   )Br   r   r   lvaluesrvaluehas_typetype_annotationr   aesr   bodynum_elif
elif_exprselif_bodiesr   has_else	else_bodycurrent_else	elif_expr	elif_body	elif_stmtif_stmt	has_valuevaluer   relative	module_idr   namesr   r   
has_asnameasnameindexr   testhas_msgmsgn_decorators
decoratorsr   r   fdefvaridshas_excexchas_from	from_exproplvalue	expr_listtarget_listcontext_expr
has_targettarget
decl_namessubjectn_casespatternsguardsbodiespattern	has_guardguardsB   ``                                                                r   r   r     s   
4..C
e###&ud33 --T?? 	#'t44OO"Ot__
7FZXXXqfh'' 	-!&!,,,t			OE48899b"'***t				ud++%&&D>>
x 	8 	8AoeT::;;;z%667777T?? 	"5$//III !$,T#j+2N2N-O-O$P$P 	; 	; Iy	{YKFFI&^IN(/I'%1%:	"'3'>	$$%.%7	"'0';	$ )--L!,	::::$$66wt	!	!	!dOO	 	#E400EEE%  tt	#	#	#UD)))	!	!	!D>>TNN	TNNq 	) 	)AD>>D"4J !$LL$(((()Xu55%dD111t			t,,ud++%&&'t44	T??udD)44 tt	!	!	!ud++D// 	!%..CCC$$$tt			eT***			4"""$T**PPPPPE,<O<OPPP
~~$eT**$((((( $)nn9z3//	/t			TNNq 	' 	'AD>>D"4J !$JJf~&&&&c{{%dD111t	 	 	 D// 	!%..CCCT?? 	't44IIIi((tt	.	.	.d^^ -- --%b&&99tt			zztt	#	#	#~~tt			TNN	/1q 	) 	)A*5$77L\***"4J )(55""6****""4((((%&&T??	;55 tt			UD)))	 	 	 {{tt	 	 	 ud++%&&'t44	tY//tt			ud++t}}tt	%	%	%#E4000	 	 	 TNN	D>>H--%dD111t	#	#	#TNN
q 	. 	.Ahtnn----J''tt	!	!	!TNN
q 	. 	.Ahtnn----*%%tt	 	 	 !%..4..*,w 
	  
	 A"5$//GOOG$$$!$I $'t44e$$$$d###eT**DMM$(FF;;ttcr   tuple[list[Argument], bool]c                   t          |t                     t          |          }g }d}t          |          D ]7}t	          |          }t          |          }t          |         }t          |          }	|	rt          | |          }
d}nd}
t          |          }|rt          | |          }nd}t          |          }| j
        j        r>|
<t          |t                    o
|j        dk    }t          |
t                    r||
_        t#          ||
          }d|_        d|_        t)          ||
|||          }t+          ||           t-          ||           |                    |           9||fS )zPRead function/lambda parameters.

    Return (parameters, has_annotations).
    FTNr   )r   r   r   r   r   r   r   r   r   r   r   implicit_optionalr   rH   r   r~   optionalra   is_inferredis_argumentr   r   r   r   )r   r   n_args	argumentshas_annr   arg_namearg_kind_intarg_kindr  annhas_defaultdefaultpos_onlyrJ  r1  args                    r   read_parametersrX  1  s{   
 tX4  FIG6]]  D>>~~\*T?? 	E4((CGGCoo 	%eT22GGGT??=* 	(s!'844O9OH#{++ ('(C  sC(H==sc3'''gr   list[TypeParam]c           
         g }t                    }t          |          D ]}t                    }t                    }t	                    }|rt                     }nd}t          t                     t                    }	 fdt          |	          D             }
t	                    }|rt                     }nd}|                    t          ||||
|                     |S )z(Read type parameters (PEP 695 generics).Nc                0    g | ]}t                    S r   r   r   r   r   r   s     r   r   z$read_type_params.<locals>.<listcomp>j  s#    BBBQ)E4((BBBr   )
r   r   r   r   r   r   r   r   r   r_   )r   r   type_paramsr   r   kindr   	has_boundupper_boundn_valuesvaluesrT  rU  s   ``           r   read_type_paramsrd  [  s   #%KdA1XX P P~~~~dOO	 	#E400KKK4""" &&BBBBB%//BBBoo 	t,,GGG9T4fgNNOOOOr   r8   c                
   | xj         dz  c_         t          |          }t          | |          \  }}t          |          r|D ]	}d|_        
t          | |          }t          |          }t          |          }|rt          | |          }	nd }	t          |          }
|
rt          | |          }d}nd }|rRt          d |D             d |D             d |D             |r|nt          t          j                  t                    }nd }t          |||||	          }|rd|_        t!          ||           |r8|j        |_        |j        |_        ||_        |                                |_        t-          |           |S )Nr   Tc                \    g | ])}|j         r|j         nt          t          j                  *S r   r  rr   r}   unannotatedr   rW  s     r   r   z!read_func_def.<locals>.<listcomp>  sC        (+':^##	H]@^@^  r   c                    g | ]	}|j         
S r   r_  ri  s     r   r   z!read_func_def.<locals>.<listcomp>  s    +++#SX+++r   c                8    g | ]}|j         rd n|j        j        S r   rV  variabler   ri  s     r   r   z!read_func_def.<locals>.<listcomp>  s(    NNNSS\8TTs|'8NNNr   )typ	type_args)r   r   rX  rq   rV  r   r   rd  r   rt   rr   r}   rh  r   r8   is_coroutiner   r   r   
definitioncopy_modifiedunanalyzed_typer   )r   r   r   rN  rO  rW  r  r   has_type_paramsr^  has_return_typereturn_typero  func_defs                 r   r   r   w  s   	OOqOOD>>D(55Iw#D))   	  	 CCLLeT""DH  ooO &ud33ooO t,,  $   ,++++NNINNN&JKKGI4I,J,J	
 	
 tY#MMMH % $T8
 7=_
!#&#4#4#6#6 4Or   r(   c                    t                    }t                     }t                     }t          t                     t                    } fdt          |          D             }t                    }|rt                     }nd }t          t                     t                    }	g }
t          |	          D ]8}t                    }t                     }|
                    ||f           9|
r"t          |
                              d          nd }t          |||r|nd ||
r|
nd |          }||_        t!          |           t#                     |S )Nc                0    g | ]}t                    S r   r   r]  s     r   r   z"read_class_def.<locals>.<listcomp>  s#    LLL1/%..LLLr   	metaclass)base_type_exprsr{  keywordsrp  )r   r   r   r   r   r   r   r   rd  r   r   r   r   getr(   r/  r   r   )r   r   r   r  r|  r.  r/  ru  r^  
n_keywordsr}  r   keyr$  r{  	class_defs   ``              r   r   r     s   D>>DeT""D*5$77OtX &&LLLLLLl8K8KLLLJ  ooO &ud33t\"""t$$JH: & &tnnt,,e%%%%3;EX"";///I+:D%/4  I &IT94r   r^   c           
         t                     }t          |t                    sJ dt          |                       t	                    }|dk    rg }t          |          D ]}t                    }t                    }t                    }|rt                     }	nd}	t          t                     t	                    }
 fdt          |
          D             }t                    }|rt                     }nd}|                    t          |||	||                     ng }t                     }t          |          }t          ||           t!          |g          }d|_        d|_        d|_        d|_        t+          g |          }t          ||           t-          |||          }t/          |           t1                     |S )z"Read PEP 695 type alias statement.z+Expected NameExpr for type alias name, got r   Nc                0    g | ]}t                    S r   r\  r]  s     r   r   z(read_type_alias_stmt.<locals>.<listcomp>  s#    FFFit,,FFFr   r   )r   r   rH   r   r   r   r   r   r   r   r   r   r   r_   rR   r   r$   r   r   r   r   rB   r^   r   r   )r   r   r   n_type_paramsr^  r   r_  
param_namer`  ra  rb  rc  rT  rU  
value_exprreturn_stmtblocklambda_exprr   s   ``                 r   r  r    s   5$''DdH%%aa'aUYZ^U_U_'a'aaaa!$''Mq}%% 	Z 	ZAD>>D!$J!$I #'t44" tX&&&$T**HFFFFFeHooFFFF#D//K #E400yT;PWXXYYYY)	Z,  --J Z((K+z222;-  EEJELENER''K+z222{K88DT44Kr   r\   c                   t          | |          }t          |          }g }t          |          D ]N}t          |          }|r&t	          | |          }|                    |           9|                    d            Og }t          |          D ]l}t          |          }	|	rDt          |          }
t          |
          }t          ||           |                    |           W|                    d            mg }t          |          D ]'}t          | |          }|                    |           (t          |          }|rt          | |          }nd }t          |          }|rt          | |          }nd }t          |          }t          ||||||          }||_
        t          ||           t          |           |S r   )r   r   r   r   r   r   r   rH   r   r\   is_starr   )r   r   r  num_handlers
types_listr   r  exc_type	vars_listhas_namevar_namevar_exprhandlershandler_bodyr  r  has_finallyfinally_bodyr  r   s                       r   r  r    s   eT""DD>>L*,J<   $ $T?? 	$&ud33Hh''''d####')I<   # #T?? 	#~~H))HT8$$$X&&&&T""""H<   & &!%..%%%%H ud++			D//K !%.. ooG4J)\RRDDLT44Kr   rz   c                2    t                    }|t          j        k    r*t                    }t	          t
                     t                    }t           fdt          |          D                       }t                    }t                    }|t          k    rd }n(|t          k    rt                    }nJ d|             t                    }|t          k    rd }	n(|t          k    rt                    }	nJ d|             t          |||||	          }
t          |
           t                     |
S |t          j        k    r-t	          t
                     t                    } fdt          |          D             }t                    }t                    }|t          k    rd }n(|t          k    rt                    }nJ d|             t                    }|t          k    rd }	n(|t          k    rt                    }	nJ d|             t#          ||          }||_        |	|_        t                    |_        t          |           t                     |S |t          j        k    rpt	          t
                     t                    } fdt          |          D             }t-          |          }t          |           t                     |S |t          j        k    rt	          t
                     t                    } fd	t          |          D             }t                    }t1          |t2          |
          }t          |           t                     |S |t          j        k    r$t	          t
                     t                    }fdt          |          D             }t	          t
                     t                    } fdt          |          D             }i }g }t7          ||          D ]9\  }}|-t9          |t:                    sJ |                    |           4|||<   :t?          |tA                      tA                      t2                    }||_!        t          |           t                     |S |t          j"        k    r/tG                      }t          |           t                     |S |t          j$        k    rt                    }d }|dk    rt                    }n|dk    rtK                    }nx|dk    rt                    }nb|dk    rt                    }nL|dk    r9t                    }|t          k    sJ d|             d }tM                    }nJ d|             tO          |||          }t          |           t                     |S |t          j(        k    rQtS                     }t                    }tU          ||          }t          |           t                     |S |t          j+        k    rtY                     S J |            )Nc              3  8   K   | ]}t                    V  d S r   r\  r   s     r   	<genexpr>zread_type.<locals>.<genexpr>F  s-      >>Yud++>>>>>>r   Fz&Unexpected tag for original_str_expr: z*Unexpected tag for original_str_fallback: )empty_tuple_indexoriginal_str_exproriginal_str_fallbackc                0    g | ]}t                    S r   r\  r   s     r   r   zread_type.<locals>.<listcomp>c  #    :::A5$'':::r   )uses_pep604_syntaxc                0    g | ]}t                    S r   r\  r   s     r   r   zread_type.<locals>.<listcomp>}  r  r   c                0    g | ]}t                    S r   r\  r   s     r   r   zread_type.<locals>.<listcomp>  r  r   )implicitc                .    g | ]}t                    S r   )r   )r   r   r   s     r   r   zread_type.<locals>.<listcomp>  s!    555qT""555r   c                0    g | ]}t                    S r   r\  r   s     r   r   zread_type.<locals>.<listcomp>  s#    ;;;Q)E4((;;;r   zbuiltins.boolzbuiltins.intbuiltins.strzbuiltins.bytesz
typing.Anyz,Expected LITERAL_NONE for invalid type, got zUnsupported RawExpressionType: )note)from_star_syntax)-r   r   UNBOUND_TYPEr   r   r   r   tupler   r   r   r   read_str_barer~   r   r   
UNION_TYPEr   r  r  is_evaluated	LIST_TYPEr|   
TUPLE_TYPEry   r   TYPED_DICT_TYPEr   r   rw   r   r{   setextra_items_fromELLIPSIS_TYPEru   RAW_EXPRESSION_TYPEr   r   rx   UNPACK_TYPEr   r   	CALL_TYPEread_call_type) r   r   r   r   r   argsr  tr  r  unbounditemsr  union	type_listr  
tuple_typekeysrc  td_itemsr  r  valtypeddict_typeellipsis_type	type_namer  r$  raw_type
inner_typer  unpacks    ``                              r   r   r   @  s   
4..C
e   ~~4"""$>>>>>U1XX>>>>>%dOOTNN $+ -d 3 3FF1FFFFFTNN$(!!+$1$$7$7!!JJqJJJJJ//"7
 
 
 	wt	 	 	 4"""$:::::q:::&t__TNN $+ -d 3 3FF1FFFFFTNN$(!!+$1$$7$7!!JJqJJJJJ%4FGGG"3&;#&t__ut			4"""$:::::q:::UOO	y!!!t	 	 	 4"""$:::::q:::T??uoIII
z"""t	%	%	%4"""$5555E!HH5554"""$;;;;;%((;;;D&)) 	$ 	$HC{!#z22222 '',,,, #&xOO*:'~&&&t	#	#	#$}%%%t	)	)	)TNN	''dOOEE.((TNNEE.((TNNEE***TNNEE,&&4..C,&&&(\WZ(\(\&&&E%%DDGGIGGGGG$UIDAAAx   t	!	!	!ud++
$T??J9IJJJvt			eT***cr   ro  
str | Nonec                >    t          | t                    r| j        S d S r   )r   r~   r   ro  s    r   stringify_type_namer    s     #{## x4r   c                    t          | t                    r| j        dk    r| j        S t          | t                    r| j        dk    rd S | j        S d S )Nr  r   )r   rx   base_type_nameliteral_valuer~   r   r  s    r   extract_arg_namer    s[    #()) c.@N.R.R  	C	%	% 8v4x4r   c                R    t                     }t          t                     t                    } fdt	          |          D             }t          t                     t                    }g }t	          |          D ]n}t                    }|t          k    rd}	n(|t          k    rt                    }	nJ d|             t                     }
|	                    |	|
f           ot          |          }t          t          j                  }t          |           t                     |s5                     t"          j        j        |j        |j        dd           |S d}d}t          t          j                  }|}d}t/          |          D ][\  }}|dk    r|}d}|d	k    rt1          |          }d}(                     t"          j        j        |j        |j        dd           \|D ]\  }	}
|	d
k    rZ|H|rF                     t"          j                            |          j        |j        |j        dd           t1          |
          }f|	dk    rO||urH|rF                     t"          j                            |          j        |j        |j        dd           |
}                     t"          j                            |	          j        |j        |j        dd           t=          |||          }t?          ||           |S )zDRead Call in type context (Arg/DefaultArg/VarArg/KwArg constructor).c                0    g | ]}t                    S r   r\  r]  s     r   r   z"read_call_type.<locals>.<listcomp>  s#    :::qIeT"":::r   NFz!Unexpected tag for keyword name: Tmiscr   r   r   r   r   r   ) r   r   r   r   r   r   r   r   r  r   r  rr   r}   
from_errorr   r   r   r	   ARG_CONSTRUCTOR_NAME_EXPECTEDr$  r   r   special_form	enumerater  ARG_CONSTRUCTOR_TOO_MANY_ARGSMULTIPLE_VALUES_FOR_NAME_KWARGformatMULTIPLE_VALUES_FOR_TYPE_KWARGARG_CONSTRUCTOR_UNEXPECTED_ARGrs   r   )r   r   callee_typerM  r  n_kwargskwargsr   tag_kwkw_namekw_valueconstructorinvalidr   name_set_from_positionaldefault_typero  typ_set_from_positionalr   rW  call_args   ``                   r   r  r    s   E4((K tX4  F:::::E&MM:::D tXT""HF8__ 	+ 	+$\!!GG{""#D))GGFFfFFFFFUD))w)****%k22Ki*++GT74 :@LN 	 	
 	
 	
  D$9122LC# D//  366C&*##!VV#C((D'+$$OO >D      $  f$<$CJJ;WW]LN       $H--DD,&&+B&$CJJ;WW]LN       CCOO ?FFwOOU       T;77H(G,,,Or   rk   c                	    t                    }|t          j        k    rt                    }|rt	                     }nd }t                    }|r/t                    }t          |          }t          |           nd }t          ||          }t          |           t                     |S |t          j
        k    r[t                    }	 fdt          |	          D             }
t          |
          }t          |           t                     |S |t          j        k    r@t                     }t!          |          }t          |           t                     |S |t          j        k    rSt                    }|t$          k    rd }n|dk    }t'          |          }t          |           t                     |S |t          j        k    r[t                    }	 fdt          |	          D             }
t+          |
          }t          |           t                     |S |t          j        k    rrt                    }|r/t                    }t          |          }t          |           nd }t/          |          }t          |           t                     |S |t          j        k    rt                    }	g }g }t          |	          D ]L}t                     }t	                     }|                    |           |                    |           Mt                    }|r/t                    }t          |          }t          |           nd }t5          |||          }t          |           t                     |S |t          j        k    rt9          t:          t                               }t                    } fdt          |          D             }t                    }g }g } t          |          D ]K}t                    }t	                     }|                    |           |                     |           Lt=          ||||           }!t          |!           t                     |!S J d|             )Nc                0    g | ]}t                    S r   r  r]  s     r   r   z read_pattern.<locals>.<listcomp>T  #    @@@!L--@@@r   r   c                0    g | ]}t                    S r   r  r]  s     r   r   z read_pattern.<locals>.<listcomp>l  r  r   c                0    g | ]}t                    S r   r  r]  s     r   r   z read_pattern.<locals>.<listcomp>  s#    NNNQ|E400NNNr   FzUnknown pattern tag: )r   r
   
AS_PATTERNr   r  r   rH   r   rg   r   
OR_PATTERNr   r   rj   VALUE_PATTERNr   ro   SINGLETON_PATTERNr   rm   SEQUENCE_PATTERNrl   STARRED_PATTERNrn   MAPPING_PATTERNr   ri   CLASS_PATTERNr   rQ   rh   )"r   r   r   has_patternrD  r  name_strr   
as_patternr   rA  
or_patternr   value_patternsingleton_tagr$  singleton_patternsequence_patternstarred_patternr  rc  r   r  has_restrest_strrestmapping_pattern	class_refn_positionalpositionalsr  keyword_keyskeyword_valuesclass_patterns"   ``                                r   r  r  ?  s   
4..C
eoo 	"5$//GGGT?? 	~~HH%%DT4    Dw--
z"""t	 	 	 TNN@@@@@uQxx@@@x((
z"""t	#	#	#ud++$T**}%%%t	'	'	' L((EE "Q&E,U33()))t  	&	&	&TNN@@@@@uQxx@@@*844'(((t	%	%	%T?? 	~~HH%%DT4    D(..'''t	%	%	%TNNq 	! 	!A!%..C --EKKMM%    T?? 	~~HH%%DT4    D(vt<<'''t	#	#	#/%">">??	~~NNNNN%:M:MNNNd^^
z"" 	) 	)A4..C --E$$$!!%(((($Y\>ZZ}%%%t33c33333r   r$   c                   t          |t          j                   t          |t                     t	          |          }t          |          }|dk    r2t          g |          }t          ||           t          |           |S t          | ||          }t          |           t          ||          }|d         j
        |_
        |d         j        |_        |d         j        |_        |d         j        |_        |S )Nr   is_unreachabler   )r   r
   BLOCKr   r   r   r$   r   r   r   r   r   r   r   r   r   r   r  r   r  s         r   r   r     s    tU[!!!tXdAt__NAvv"^444qt E4++t!N3331Q4;rU^
u'r   Block | Nonec                    t          t          j                   t          t                     t	                    }t                    }|dk    rd }nu fdt          |          D             }t          ||          }|d         j        |_        |d         j	        |_	        |d         j
        |_
        |d         j        |_        t                     |S )Nr   c                0    g | ]}t                    S r   )r   r   s     r   r   z'read_optional_block.<locals>.<listcomp>  s#    ;;;Q^E4((;;;r   r
  r   )r   r
   r  r   r   r   r   r$   r   r   r   r   r   r  s   ``    r   r   r     s    tU[!!!tXdAt__NAvv;;;;;%((;;;!N3331Q4;rU^
u'4Hr   )+-*@/%z**z<<z>>|^&z//bin_opsandorbool_ops)
z==z!=<z<=>z>=iszis notinznot incmp_ops)~notr  r  	unary_opsr3   c                |#    t                    }|t          j        k    r?t                    }t	          |          }t          |           t                     |S |t          j        k    rt                     }t                    }t          ||          }t          |t                    r;t          |j        t                    r!|j        j        dk    rt          ||          }n|}t          |           t                     |S |t          j        k    r4t                     }	t!                     }
t#          t$                     t'                    }fdt)          |          D             }t#          t*                     t'                    }g }t)          |          D ]l}t                    }|t,          k    r|                    d            2|t0          k    r#|                    t3                               `J d|             t          |	|
||          }t          |           t                     |S |t          j        k    r=t7          t                              }t          |           t                     |S |t          j        k    rt                     }t#          t$                     t'                    }fdt)          |          D             }t!                     }t;          |          t;          |          k    sJ t=          ||g|z             }t          |           t                     |S |t          j        k    r=tA          tC                              }t          |           t                     |S |t          j"        k    rQt                     }t                     }tG          ||          }t          |           t                     |S |t          j$        k    r@t!                     }tK          |          }t          |           t                     |S |t          j&        k    r@t!                     }tO          |          }t          |           t                     |S |t          j(        k    rtR          tC                             }t!                     }t;          |          dk    sJ |d         x}}|dd d         D ]C}tU          |||          }|j+        |_+        |j,        |_,        |j-        |_-        |j.        |_.        Dt          |           t                     |S |t          j/        k    r[t`          tC                             }t                     } tc          ||           }t          |           t                     |S |t          j2        k    rtf          tC                             }t                     }t                     }!tU          |||!          }"|j+        |"_+        |j,        |"_,        |!j-        |"_-        |!j.        |"_.        t                     |"S |t          j4        k    rtC                    }#g }$t)          |#          D ]}tk                    }%|%rEtC                    }&t)          |&          D ]%}'|$                    tm                                &Xt7          t                              }t          |           |$                    |           to          |$          }t                     |S |t          j8        k    rPts                     }(tu          |(          }t          |           tw          |(|           t                     |S |t          j<        k    rt#          t*                     t'                    })g }*t)          |)          D ]L}tk                    }+|+r$|*                    t                                7|*                    d            Mt!                     }t{          t}          |*|                    }t          |          }t          |           t                     |S |t          j@        k    r9t          t          t          jD                  d	
          },t                     |,S |t          jE        k    rbt                     }-t                     }.t                     }/t          |.|-|/          }t          |           t                     |S |t          jG        k    rtk                    }0|0rt                     nd }1tk                    }2|2rt                     nd }3tk                    }4|4rt                     nd }5t          |1|3|5          }t          |           t                     |S |t          jI        k    r1ts                     }t          |           t                     |S |t          jJ        k    rTtk                    }6|6rt                     }7nd }7t          |7          }t          |           t                     |S |t          jL        k    r@t!                     }t          |          }t          |           t                     |S |t          jN        k    r/t                      }t          |           t                     |S |t          jP        k    rtC                    }#g }8t)          |#          D ]}tk                    r|t                     }t                    }tk                    rt                    }9nd }9tk                    rt                     }:nd }:|8                    |||9|:f           t7          t                              }t          |           |8                    |           t          |8          }t          |           t                     |S |t          jS        k    rt                     \  };}<t                     }=|<rNt          d |;D             d |;D             d |;D             t          t          jW                  t                    }>nd }>t          |;|=          }|>|_Z        t          |           t                     |S |t          j[        k    rt                     }?t                     }7tC                    }@ fdt)          |@          D             }A fdt)          |@          D             }B fdt)          |@          D             }Cfdt)          |@          D             }Dt          |?|7|A|B|C|D          }t          |           t                     |S |t          j]        k    rPts                     }(t          |(          }t          |           tw          |(|           t                     |S |t          j_        k    r?t                    }7t          |7          }t          |           t                     |S |t          ja        k    rt                     }Et                     }7t          |Et                    sJ dt          |E                       t          |E|7          }t          |           t                     |S |t          jc        k    rTt#          t                     t                    }7t          |7          }Ft          |F           t                     |FS |t          jg        k    r@t                     }Gt          |G          }t          |           t                     |S |t          ji        k    r@t                     }7t          |7          }t          |           t                     |S |t          jk        k    r@t                     }7t          |7          }t          |           t                     |S |t          jm        k    rt#          t                     t                    }Ht#          t                     t                    }It          t          |H|I                    }t          |           t                     |S |t          jp        k    rNt                    }JtA          t          |Jd                    }t          |           t                     |S J |            )Nsuperc                D    g | ]}t           t                             S r   )r   r   r   r   r   s     r   r   z#read_expression.<locals>.<listcomp>  s&    LLLY}T223LLLr   FzUnexpected tag for arg_name: c                D    g | ]}t           t                             S r   )r"  r   r)  s     r   r   z#read_expression.<locals>.<listcomp>
  s&    BBBw}T**+BBBr      r   T)no_rhsc                \    g | ])}|j         r|j         nt          t          j                  *S r   rg  ri  s     r   r   z#read_expression.<locals>.<listcomp>  sC        ,/+>bC''GILaDbDb  r   c                    g | ]	}|j         
S r   rk  ri  s     r   r   z#read_expression.<locals>.<listcomp>  s    ///c///r   c                8    g | ]}|j         rd n|j        j        S r   rm  ri  s     r   r   z#read_expression.<locals>.<listcomp>  s(    RRR<3<+<RRRr   c                0    g | ]}t                    S r   r   r]  s     r   r   z#read_expression.<locals>.<listcomp>  s#    MMMA?5$//MMMr   c                0    g | ]}t                    S r   r   r]  s     r   r   z#read_expression.<locals>.<listcomp>  s#    OOOa_UD11OOOr   c                0    g | ]}t                    S r   r   r]  s     r   r   z#read_expression.<locals>.<listcomp>  s$    TTT1)%66TTTr   c                .    g | ]}t                    S r   r   r)  s     r   r   z#read_expression.<locals>.<listcomp>  s    AAAIdOOAAAr   z"Expected NameExpr for target, got r   )base)rr   r
   	NAME_EXPRr   rH   r   r   MEMBER_EXPRr   rF   r   r'   calleer   rY   	CALL_EXPRr   r   r   r   r   r   r   r   r   r  STR_EXPRrX   COMPARISON_EXPRlenr)   INT_EXPRrA   r   
INDEX_EXPRr@   	LIST_EXPRrD   
TUPLE_EXPRr]   BOOL_OP_EXPRr  rK   r   r   r   r   
UNARY_EXPRr%  r`   OP_EXPRr  FSTRING_EXPRr   read_fstring_itembuild_fstring_joinLIST_COMPREHENSIONread_generator_exprrC   r   	DICT_EXPRr   r   r0   	TEMP_NODEr[   rr   r}   r  CONDITIONAL_EXPRr+   
SLICE_EXPRrU   GENERATOR_EXPR
YIELD_EXPRrd   SET_EXPRrT   ELLIPSIS_EXPRr2   TSTRING_EXPRread_fstring_itemsrZ   LAMBDA_EXPRrX  r   rt   rh  r   rB   r   DICT_COMPREHENSIONr1   SET_COMPREHENSIONrS   
BYTES_EXPRr&   ASSIGNMENT_EXPRr!   
FLOAT_EXPRr   read_float_barer6   	STAR_EXPRrV   YIELD_FROM_EXPRre   
AWAIT_EXPRr#   COMPLEX_EXPRr*   complexBIG_INT_EXPRr   )Kr   r   r   sneeattrmresultr:  r  n_kinds	arg_kindsn_names	arg_namesr   ceseleftn_opsopscomparatorsr   ier7  r*  r  r  r7  rc  lastr  operandrightonpartsfitemsr   r   r   	generatorn_keysr  has_keytempif_exprcond	else_expr	has_beginbegin_indexhas_end	end_index
has_stridestrider#  r$  titemsconvformat_specrN  rO  r  ro  r  n_generatorsindices	sequences	condlistsr   r=  fewrapped_exprrealimagstrvalsK   ``                                                                         r   r   r     s,   
4..C
eoTNNa[[rt		!	!	!E4((~~q$a"" 	z!(H'E'E 	!(-[bJbJb!*4!3!3FFFvt			 --#E4004"""%%LLLLU7^^LLL	4"""%%&(	w 	D 	DA4..Cl""  &&&&##  t!4!45555CCcCCCCCfdIy99rt				Xd^^$$rt		%	%	%ud++4"""d##BBBBU5\\BBB*5$773xx3{++++++cD6K#788tt			Xd^^$$rt		 	 	 ud++t,,u%%tt			$UD11tt	 	 	 $UD11eqt	"	"	"htnn%%eT22 6{{ar
""&b&> 	0 	0CBV,,F(FKJFM"mFO $Fvt	 	 	 x~~&!%..W%%tt			Xd^^$ud++t,,2tU##;^
't	"	"	" $v 		! 		!A$A !TNNq B BAMM"3E4"@"@AAAAB HTNN++q!!!a    !$//t	(	(	('t44	 ++ti...t			4"""t$$(*v 	" 	"AooG "OE4889999D!!!!%eT22Sv&&''tt				 677EEEt	&	&	&!%..ud++#E400	tWi88tt	 	 	 dOO	6?IoeT222TD//4;EOE4000	t__
1;E---i88tt	$	$	$"5$//tt	 	 	 dOO	 	#E400EEEtt			$UD11u~~tt	#	#	#~~tt	"	"	"$[]v 	! 	!A !#E400TNNT??  #D>>DDDT?? '"4UD"A"AKK"&Kq!T;78888HTNN++q!!!a    v&&tt	!	!	!,UD99	7%&& 	 (   0/Y///RR	RRR	-..	 	CC C)T**	tt	(	(	(eT**t,,~~MMMMM|9L9LMMMOOOOO5;N;NOOO	TTTTTl@S@STTT	AAAAU<-@-@AAA&sE7IyRZ[[tt	'	'	''t44		**ti...t	 	 	 tt	%	%	% --t,,&(++``-`RVW]R^R^-`-````fe,,tt	 	 	 4'''%%urt				&ud33%%tt	%	%	%t,,U##tt	 	 	 t,,tt	"	"	"4'''t$$4'''t$$74..//tt	"	"	"$Sa((())rt	cr   c                |     t                    } fdt          |          D             }t          |          S )Nc                0    g | ]}t                    S r   )rG  r]  s     r   r   z&read_fstring_items.<locals>.<listcomp>&  s$    >>>ud++>>>r   )r   r   rH  )r   r   r   r  s   ``  r   rT  rT  $  sA    A>>>>>U1XX>>>EdE***r   r  list[Expression]c                   t          |          }t          |          dk    r|d         }t          | |           |S t          |          }t	          d          }t          |d          }t          ||gt          gd g          }t          | |           t          ||           t          ||           t          ||           |S )Nr   r    join)	collapse_consecutive_str_itemsr>  r   rD   rX   rF   r'   r   set_line_column)r   r  r   r  str_exprmembercalls          r   rH  rH  *  s    *511E
5zzQQxtE??Dr{{H&))FFTFWIv66DT4D$Hd###FD!!!Kr   c                >   t          |           dk    r| S | d         }|g}| dd          D ]q}t          |t                    rCt          |t                    r.|xj        |j        z  c_        |j        |_        |j        |_        Z|                    |           |}r|S )Nr   r   )r>  r   rX   r$  r   r   r   )r  rs  	new_itemsitems       r   r  r  ;  s    
5zzQ8DIabb	  dG$$ 	D')B)B 	JJ$*$JJ MDM"oDOOT"""DDr   c                   t          |          }|t          k    r.t          t          |                    }t	          ||           |S |t
          j        k    rt          | |          }t          |          }|rt          |          }d|z   dz   }nd}t          |          }|rt          | |          }	nt          d          }	t          t          |          d          }
t          |
|           t          |
||	gt          t          gd d g          }t          ||           t          |           |S t!          d|           )N{z:{}}z{:{}}r  r  zUnexpected tag )r   r   rX   r  r   r
   FSTRING_INTERPOLATIONr   r   r   rT  rF   r  r'   r   r   
ValueError)r   r   r  r  r   has_convcfmthas_specspecr  r  s               r   rG  rG  K  sD   AK=..//x   	
e)	)	)ud++ T?? 	A'F"CCC T?? 	%eT22DD2;;DGCLL(33%%%tw.@4,OOd###t.1..///r   r=  r,   srcc                6    |j         | _         |j        | _        d S r   )r   r   r=  r  s     r   r  r  m  s    (FKJFMMMr   c                f    |j         | _         |j        | _        |j        | _        |j        | _        d S r   )r   r   r   r   r  s     r   r   r   r  s-    (FKJFMlFOFr   c                     t          t                     t                    } fdt          |          D             S )Nc                0    g | ]}t                    S r   r   r   s     r   r   z(read_expression_list.<locals>.<listcomp>|  s#    ;;;QOE4((;;;r   )r   r   r   r   )r   r   r   s   `` r   r   r   y  sD    tXdA;;;;;%((;;;;r   r9   c                H    t                     }t                    } fdt          |          D             } fdt          |          D             } fdt          |          D             }fdt          |          D             }t          |||||          S )zSHelper function to read comprehension data (shared by Generator, ListComp, SetComp)c                0    g | ]}t                    S r   r   r]  s     r   r   z'read_generator_expr.<locals>.<listcomp>  s#    IIIud++IIIr   c                0    g | ]}t                    S r   r   r]  s     r   r   z'read_generator_expr.<locals>.<listcomp>  s#    KKK!--KKKr   c                0    g | ]}t                    S r   r4  r]  s     r   r   z'read_generator_expr.<locals>.<listcomp>  s$    PPPq%eT22PPPr   c                .    g | ]}t                    S r   r6  r)  s     r   r   z'read_generator_expr.<locals>.<listcomp>  s    ===A	$===r   )r   r   r   r9   )r   r   	left_exprr  r  r  r  r   s   ``      r   rJ  rJ    s    t,,ID>>LIIIIIU<5H5HIIIGKKKKKu\7J7JKKKIPPPPPE,<O<OPPPI====|)<)<===HGY	8LLLr   r   c                    t          | t                     t          |           }||_        t          |           }||_        |t          |           z   |_        |t          |           z   |_        d S r   )r   r   r   r   r   r   r   )r   r   r   r   s       r   r   r     sf    tXDDI4  FDK=...DM}T222DOOOr   r   r;   c                N   t          | j                  dk    rg | j        d         _        | j        rqt          | j        j                  dk    rVt          | j        j        d         t                    r!t          | j        j        d                    dS g | j        _        dS dS dS )zRemove contents from IfStmt.

    Needed to still be able to check the conditions after the contents
    have been merged with the surrounding function overloads.
    r   r   N)r>  r  r  r   r;   strip_contents_from_if_stmtr   s    r   r  r    s     49~~	!~ %#dn122a77dn)!,f55 	%'(;A(>?????"$DN	% %77r   c                4   t          | t                    sdS t          | j                  dk    r#t          | j        d         j                  dk    sdS | j        rt          | j        j                  dk    rdS t          | j        j        d                   S )z`Check stmt to make sure it is a stripped IfStmt.

    See also: strip_contents_from_if_stmt
    Fr   r   T)r   r;   r>  r  r  is_stripped_if_stmtr  s    r   r  r    s    
 dF## u	NNaC	!(9$:$:a$?$?u> S!455::t t~215666r   c                l    |                      t          j        j        |j        |j        dd           dS )zIReport an error when overloads cannot be merged due to unknown condition.Fr  r  N)r   r	   FAILED_TO_MERGE_OVERLOADSr$  r   r   )r   r   s     r   fail_merge_overloadr    s@    	OO28	      r   current_overload_namec                $   t          | j        d         j                  dk    r_t          | j        d         j        d         t          t          f          s|+t          | j        d         j        d         t
                    st          | j        d         j                  dk    r\t          | j        d         j        d         t                    r1t          d | j        d         j        dd         D                       sdS t          t          t
          z  t          z  | j        d         j        d                   j        }| j	        | j	        j
        r|S t          | j	        j                  dk    rt          | j	        j        d         t          t
          t          f          r| j	        j        d         j        |k    r|S t          | j	        j        d         t                    r&t          | j	        j        d         |          |k    r|S dS )zsCheck if IfStmt contains only overloads with the same name.
    Return overload_name if found, None otherwise.
    r   r   Nr   c              3  4   K   | ]}t          |          V  d S r   )r  )r   r"  s     r   r  z-check_ifstmt_for_overloads.<locals>.<genexpr>  s+      SS#G,,SSSSSSr   )r>  r  r   r.   rL   r8   allr   r   r  r  r;   check_ifstmt_for_overloads)r   r  overload_names      r   r  r    s    	DIaL!##ty|(+i9J-KLL 	$ %049Q<,Q/99 1 ty| !!A%%ty|(,.?@@ &SSDIaL<Mcrc<RSSSSS & tW,/@@$)A,BSTVBWXX]M~!>
4>1$$ t~*1-	7DU/VWW	!#A&+}<<  t~*1-v66	!*4>+>q+ACXYY  ! 4r   "tuple[Block | None, IfStmt | None]c                   t          | |           | j        | j        d         j        du rdS | j        "| j        d         j        du r| j        j        du rd| fS | j        j        r| j        d         dfS | j        d         j        du rNt	          | j        j        d         t
                    r t          | j        j        d         |          S | j        dfS d| fS )zReturn block from IfStmt that will get executed.

    Return
        0 -> A block if sure that alternative blocks are unreachable.
        1 -> An IfStmt if the reachability of it can't be inferred,
             i.e. the truth value is unknown.
    Nr   TNNF)rp   r  r  r  r   r;   &get_executable_if_block_with_overloads)r   r   s     r   r  r    s     'tW555~$)A,"="E"Ez9Q<&%//N)U22 Tz~$ "y|T!!y|"d** dn)!,f55 	[9$.:Ma:PRYZZZ~t##:r   stmtsc           	     n
   g }g }d}d}d}d}d}d}	g }
|D ]]}d}d}d}t          |t                    r*t          ||          }|t          || j                  \  }}|t          |t
          t          f          r|j        |k    r||
                    |           |Jt          |t                    r|
                    |j                   n|                    |           d\  }}|	rt          | |	           d}	|                    |           t          |t                    r|j        }|_t          |t                    rI||k    rB||k    r;|
                    |           ||t          | |           m|Jt          |t                    r|
                    |j                   n|                    |           d\  }}t          |j        d         t                    rg|

                    t          t          t                   |j        dd                              |
                    |j        d         j                   @|                    t          t
          t          z  |j        d                              }||                    |           |}d\  }}d}	|rF||k    r@|                                }t          |t                    sJ |
                    |           |r-|
r+|
D ]&}t#          |           |                    |           'g }
t%          |          dk    r|                    |d                    n5t%          |          dk    r"|                    t          |                     d}t          |t
                    r t'          |j                  s|g}|j        }t          |t                    r|~g }|}|}d}|p|

                    t          t          t                   |j        dd                              t          t
          t          z  t          z  |j        d                   }|}	Dg }d}|                    |           _|r+|
r)|
D ]&}t#          |           |                    |           't%          |          dk    r|                    |d                    net%          |          dk    r#|                    t          |                     n/||                    |           n||                    |           |S )zMerge consecutive function overloads into OverloadedFuncDef nodes.

    Also handles conditional overloads (overloads inside if statements).
    Nr  r   r   r   )r   r;   r  r  r   r.   r8   r   r   rL   extendr  r  r  r   r   popr  r>  r   )r   r  retcurrent_overloadr  last_unconditional_func_deflast_if_stmtlast_if_overloadlast_if_stmt_overload_namelast_if_unknown_truth_valueskipped_if_stmtsr   if_overload_nameif_block_with_overloadif_unknown_truth_valuepoppedr"  s                    r   r   r     s   
 C+-(,.2"&LGK-115%' s! s!'+/304dF## 	9$@UVV+:4OO ?&(>
 "-4)W!566 .	222' ''555+ .0ABB >$++,<,BCCCC$++,<===1;..* 3#E+FGGG.2+##D)))$(( 8 /3i+!-4(( . $999+/DDD ##D)))%-)5'/EFFF+ .0ABB >$++,<,BCCCC$++,<===1;..05b9;LMM c ''T&\;Q;VWZXZWZ;[(\(\]]] ''(>(CB(G(MNNNN ''Y-@BXB]^_B`(a(abbbb'

<(((-B*1;...2+ 0$9=W$W$W !&&11111 ''/// &$4 &  0 ( (G/888JJw''''#% #$$))

+A.////%&&**

,-=>>??? +/'$	** !3CDI3N3N !$(6 (,	%%D&)) !.>.J#% (8%#-1*)5$++Df?U?Z[^\^[^?_,`,`aaa'+!G+.??AWA\]_A`( ($ /E++#% (,%

4      ,   ( 	  	 G'000JJw
!!

#A&''''				"	"

$%5667777		%

#$$$$		!

<   Jr   r   byteslist[ImportBase]c                j   | sg S t          |           }t          |t                     t          |          }g }t	          |          D ]}t          |          }|t          k    ryt          |          }t          |          }t          |          }|rt          |          }	nd}	t          ||	fg          }
t          ||
           |                    |
           |t          k    rt          |          }t          |          }t          |t                     t          |          }g }t	          |          D ]K}t          |          }t          |          }|rt          |          }	nd}	|                    ||	f           Lt          |||          }
t          ||
           |                    |
           x|t          k    rUt          |          }t          |          }t!          ||          }
t          ||
           |                    |
           t#          d|           |S )z;Deserialize import metadata from bytes into mypy AST nodes.Nz#Unexpected tag in import metadata: )r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r?   r   r=   r  )r   r   	n_importsimportsr   r   r   r%  r(  r)  r   modulerj  r'  s                 r   deserialize_importsr    s/    	l##DtXd##I "G9 0J 0Jtnn/!!D>>D~~H"4J !$ D&>*++D)$555NN4    '''d^^F~~HtX&&&#D))G24E7^^ - -~~&t__
 "%d^^FF!FdF^,,,,fh66D)$555NN4    &&&d^^F~~HVX..D)$555NN4     H3HHIIINr   Import | ImportFrom | ImportAllc                    t          | |           t          |           }|dz  dk    |_        |dz  dk    |_        |dz  dk    |_        d S )Nr   r   r+     )r   r   is_top_levelr  is_mypy_only)r   r   flagss      r   r   r     sZ    T4 TNNE !+D 4<A-D!+Dr   )F)r   r   r   rf   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   rf   r   r   r   r   )r   r   r   r   r   rW   )r   r   r   r   r   rG  )r   r   r   r   r   rY  )r   r   r   r   r   r8   )r   r   r   r   r   r(   )r   r   r   r   r   r^   )r   r   r   r   r   r\   )r   r   r   r   r   rz   )ro  rz   r   r  )r   r   r   r   r   rk   )r   r   r   r   r   r$   )r   r   r   r   r   r  )r   r   r   r   r   r3   )r   r   r  r  r   r3   )r  r  r   r  )r=  r,   r  r,   r   r   )r   r   r   r   r   r  )r   r   r   r   r   r9   )r   r   r   r,   r   r   )r   r;   r   r   )r   rW   r   r   )r   r   r   r;   r   r   r   )r   r;   r  r  r   r  )r   r;   r   rf   r   r  )r   r   r  r   r   r   )r   r  r   r  )r   r   r   r  r   r   )__doc__
__future__r   r   r   typingr   r   r   librt.internalr   r[  r   r   r   r  mypyr	   r
   r   
mypy.cacher   r   r   r   r   r   r   r   r   r   r   r   r   
mypy.nodesr   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   r_   r`   ra   rb   rc   rd   re   mypy.optionsrf   mypy.patternsrg   rh   ri   rj   rk   rl   rm   rn   ro   mypy.reachabilityrp   mypy.sharedparserq   
mypy.typesrr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   	mypy.utilr   r   r  r   r   TypeIgnoresr   __annotations__r   r   r   r   r   r   r   rX  rd  r   r   r  r  r   r  r  r  r  r   r   r  r  r"  r%  r   rT  rH  r  rG  r  r   r   rJ  r   r  r  r  r  r  r   r  r   r   r   r   <module>r     sp
    $ # " " " " " 				                       0 / / / / / / / / /                                 "N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N^ !          
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 A @ @ @ @ @ 9 9 9 9 9 9                                 " ' & & & & &5d3i() ""2B;; ; ; ; ;
 
 
 
 
 
 
 
  CH+! +! +! +! +!\% % % %5 5 5 5	 	 	 	 CH    >U U U Up' ' ' 'T   84 4 4 4n& & & &R3 3 3 3l0 0 0 0fH H H HV      a a a aHc4 c4 c4 c4L   .   $ WVV V V V V$-    SSS S S S S)))	 ) ) ) )M M M M`
+ + + +   "    0 0 0 0D   
' ' ' '< < < <M M M M3 3 3 3% % % %7 7 7 7(    7;' ' ' ' 'T   BQ Q Q Qh> > > >B, , , , , ,r   