
    fٿ                     P	   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZ dZdZdZdZd	Zd
Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z G d d      Z  G d de      Z! G d de
      Z"e!jG                  d       G d  d!e"             Z$ G d" d#e      Z% G d$ d%e
      Z&e!jG                  d       G d& d'e&             Z'e!jG                  d()       G d* d+e&             Z(e!jG                  d,)       G d- d.e&             Z)e!jG                  d/)       G d0 d1e&             Z*e!jG                  d2)       G d3 d4e&             Z+e!jG                  d5       G d6 d7e&             Z,e!jG                  d8       G d9 d:e&             Z-e!jG                  d;)       G d< d=e&             Z.e!jG                  d>)       G d? d@e&             Z/e!jG                  dA)      e!jG                  dB)       G dC dDe&                    Z0e!jG                  dE       G dF dGe&             Z1e!jG                  dH       G dI dJe&             Z2e!jG                  dK       G dL dMe&             Z3e!jG                  dK       G dN dOe&             Z4e!jG                  dP       G dQ dRe&             Z5e!jG                  eS       G dT dUe&             Z6e!jG                  dV       G dW dXe&             Z7e!jG                  dY       G dZ d[e&             Z8e!jG                  d\       G d] d^e&             Z9e!jG                  d_       G d` dae&             Z:e!jG                  db      e!jG                  dc       G dd dee&                    Z;e!jG                  df       G dg dhe&             Z<e!jG                  di       G dj dke&             Z= G dl dme&      Z>e!jG                  dn       G do dpe>             Z?e!jG                  dq       G dr dse>             Z@e!jG                  dt       G du dve>             ZAe!jG                  dw       G dx dye>             ZBe!jG                  dz       G d{ d|e>             ZCe!jG                  d}       G d~ de>             ZDe!jG                  d       G d de>             ZEy)    N)contextmanager)
NormalizerNormalizerConfigIssueRule)_get_token_collection)if_stmt
while_stmtfor_stmttry_stmt	with_stmt)testlist_star_exprtestlist_compexprlist   d   )nested_scopes
generatorsdivisionabsolute_importwith_statementprint_functionunicode_literalsgenerator_stop)comp_forsync_comp_forc                 (   | j                   }|dk(  ry|dk(  rt        |       }| j                  d d \  }}||S |j                   dk(  r2|dk  ry|j                  d   d	k(  s|j                  d
   dk(  r|dk  ryyy|dk(  r:|dk(  s4t        | j                        dk(  r| j                  d   j                   dk(  ry|dk(  rt	        t        |       |      S |dk(  ry|dk(  r|dk(  r|dk  ryy|dk(  rt        | j                        dkD  ry|S |dk(  r*d| j                  v ry|dk  ryt        | j                        S |dk(  r| j                  dk(  r|dk  ryy |d!k(  ry!|d"v ry|d#k(  ry|d$k(  ry%|d&v ry| j                  d
   d'k(  ry(| j                  d)   j                   d*k(  rH| j                  d)   }|j                  d
   dk(  ry+|j                  d
   dk(  ry,|j                  d
   d-k(  ry.|S d/|v rd0|vsd1|v s|d2v r|dk  ryy3|d0k(  ry4|d5k(  ry|d6k(  ry7|S )8Nlambdeflambdaatom   dictorsetmaker      literal   :r   **r$   
   dict displaydict literalset display()r$   r   tuple)version[list{}keywordyieldyield expressionoperator...Ellipsisellipsis
comparisonstringnumberstrings
yield_exprtestconditional expression	atom_exprpowerawaitawait expressiontrailerfunction call	subscript.	attributeexpr	star_expr_testtermfactor
expressionstarredr   fstringf-string expression)type_get_comprehension_typechildrenlen_get_rhs_name_remove_parensvaluestr)noder2   type_comprehensionfirstsecondrL   s          N/var/www/cvtools/html/venv/lib/python3.12/site-packages/parso/python/errors.pyr_   r_      s   IIE		&/5bq)v$  [[,, ??1%,0Bd0J(--(SL3'1,q1A1F1F/1Yc\ !5wGGc\c\fm %%c\c$--014 ^ L] 
)	djj %Vtzz?"	*	u!4W	,		1	1	,	!	&'	(	(==w&%]]2##y0mmB'G"c)&!!!$+"!!!$+"  L 
5[5e&&W	+		&	&	)	$L    c              #      K   | j                   D ]@  }|j                  dk(  r+|j                   D ]  }|j                  dk(  s|dk(  r|  =| B yw)zB
    Iterates over all statements and splits up  simple_stmt.
    simple_stmtnewline;Nr]   r[   )scopechildchild2s      rh   _iter_stmtsrr   m   s[       ::&.. ;;)+v}
 Ks   AAc                    | j                   d d \  }}|j                  dk(  r&|j                   d   j                  t        v r|dk(  ryy|j                  dk(  r3|j                   d   j                  t        v r|j                   d   d	k(  ry
yy )Nr!   r   r'   r3   zlist comprehensionzgenerator expressionr"   rK   r(   zdict comprehensionzset comprehensionr]   r[   _COMP_FOR_TYPES)r    rf   rg   s      rh   r\   r\   {   s    MM"1%ME6{{o%&//!*<*A*A_*TC<')	(	(V__R-@-E-E-X??1$'&ri   c                 h    | j                         }|D cg c]  }|j                   c}dgk(  S c c}w )N
__future__)get_from_namesra   )import_from
from_namesns      rh   _is_future_importr|      s1    
 ++-J'(AGG(\N::(s   /c                     	 | j                   }t        |      dk(  r |d   dk(  rt        | j                   d         S | S # t        $ r Y | S w xY w)z_
    Returns the inner part of an expression like `(foo)`. Also removes nested
    parens.
    r$   r   r/   r'   )r]   r^   r`   AttributeError)r    r]   s     rh   r`   r`      s]    
4== x=A(1+"4!$--"233K   Ks   > 	A
Ac                     | j                   <| j                   } | j                  dk7  s| j                  d   dk7  r| S | j                   <y)za
    Returns an ancestor node of an expression, skipping all levels of parens
    bottom-up.
    Nr    r   r/   parentr[   r]   rc   s    rh   _skip_parens_bottom_upr      sI    
 ++
!{{99$--"2c"9K ++
! ri   c                 (    d | j                   D        S )Nc              3   ^   K   | ]%  }|j                   d k(  s|j                   dk(  s"| ' yw)paramr:   Nr[   ).0r{   s     rh   	<genexpr>z_iter_params.<locals>.<genexpr>   s&     Y!qvv/@AFFjDXAYs   #--)r]   )parent_nodes    rh   _iter_paramsr      s    Y{++YYri   c                     d}t        | j                               D ]9  }|j                  dk(  r|sd}|| k(  r y|j                  dk(  rt        |      r9 y y)z@
    Checks if the import is the first statement of a file.
    Fr@   Try   N)rr   get_root_noder[   r|   )ry   found_docstringstmts      rh   _is_future_import_firstr      sa     OK5578 	99 ;99%*;D*A	ri   c              #      K   fd| j                   t        v r(| j                  d d d   D ]  } |      E d {     y  |       E d {    y 7 7 w)Nc              3     K   | j                   dk(  rl| j                  d   dk(  rC| j                  d   }|j                   dk(  rt        |      E d {    y  |      E d {    y | j                  d   dk(  r y |  y 7 27 #w)Nr    r   r/   r'   r   r3   )r[   r]   !_iter_definition_exprs_from_lists)rp   r   
check_exprs     rh   r   z5_iter_definition_exprs_from_lists.<locals>.check_expr   s     ::~~a C' %q 1 %%8@OOO  *-888"c)## P 9s$   ABBB"B#"BBr!   )r[   _STAR_EXPR_PARENTSr]   )r   rp   r   s     @rh   r   r      s`       }}**&&ss+ 	)E!%(((	) h''' )'s!   8AAAAAAc                     g }| j                   d dd   D ]0  }|j                  dv r|t        |      z  } |j                  |       2 |S )Nr!   )r   testlist)r]   r[   r   append)	expr_stmtexprslist_s      rh   _get_expr_stmt_definition_exprsr      sW    E##ERE*  ::;;6u==ELL	 
 Lri   c                 H    | j                   d   }t        t        |            S Nr'   )r]   r4   r   )r   r   s     rh   _get_for_stmt_definition_exprsr      s#      #H1(;<<ri   c                 @    | j                   d   j                  t        v S r   rt   )arguments    rh   _is_argument_comprehensionr      s    Q$$77ri   c                     | dk  s|y|j                   dk(  rt        d |j                  D              S |j                   dk(  ry|j                  d      S )Nr$   	   F
error_nodec              3   :   K   | ]  }|j                   d k(    yw)fstring_startNr   )r   rp   s     rh   r   z%_any_fstring_error.<locals>.<genexpr>   s     LU5::0Ls   rY   T)r[   anyr]   search_ancestor)r2   rc   s     rh   _any_fstring_errorr      sR    4<yyL LdmmLLL	i	##I..ri   c                   N    e Zd ZddZd Zd Zd Zd Zd Ze	d        Z
d	 Zd
 Zy)_ContextNc                     || _         g | _        || _        i | _        g | _        g | _        g | _        g | _        || _        y N)	rc   blocksparent_context_used_name_dict_global_names_local_params_names_nonlocal_names_nonlocal_names_in_subscopes_add_syntax_error)selfrc   add_syntax_errorr   s       rh   __init__z_Context.__init__   sH    	,!#% !,.)!1ri   c                 j    | j                         xr" | j                  j                  j                  dv S )N)async_funcdef
async_stmt)is_functionrc   r   r[   r   s    rh   is_async_funcdefz_Context.is_async_funcdef  s5     ! I		  %%)HH	Iri   c                 4    | j                   j                  dk(  S )Nfuncdef)rc   r[   r   s    rh   r   z_Context.is_function  s    yy~~**ri   c                    |j                   j                  }|dk(  ry |dk(  r| j                  j                  |       y |dk(  r| j                  j                  |       y |dk(  rV| j
                  j                  |j                   j                         D cg c]  }|j                  j                   c}       y | j                  j                  |j                  g       j                  |       y c c}w )NrL   global_stmtnonlocal_stmtr   )r   r[   r   r   r   r   extend
get_paramsnamera   r   
setdefault)r   r   parent_typer   s       rh   add_namez_Context.add_name  s    kk&&)#-'%%d+O+  ''-I%$$++/3{{/E/E/GHe!!H   ++DJJ;BB4H Is   C0c                    | j                  | j                  d       | j                  | j                  d       | j                  D ci c]  }|j                  | }}| j                  D ]Q  }	 ||j                     }d|j                  z  }|j
                  |j
                  k  r|}n|}| j                  ||       S g }| j                  D ]  }|j                  }|| j                  v r||v s| j                  "d|j                  z  }| j                  ||       P| j                         r|j                  | j                  vsy|j                  |        | j                  |z   S c c}w # t        $ r Y w xY w)zV
        Returns a list of nonlocal names that need to be part of that scope.
        globalnonlocalz name '%s' is nonlocal and globalz"no binding for nonlocal '%s' found)_analyze_namesr   r   ra   KeyError	start_posr   r   r   r   r   r   r   )	r   r{   global_name_strsnonlocal_nameglobal_namemessage
error_namenonlocals_not_handledsearchs	            rh   finalizez_Context.finalize  s    	D..9D00*=040B0BC1AGGQJCC!11 	8M.}/B/BC 9;;L;LLG$$}'>'>>(
*
"":w7	8 !#!>> 		<M"((F111))T-@-@-H>ATATT&&}g>%%'!''t/C/CC%,,];		< ##&;;;3 D  s   E&-E++	E87E8c                    
 
 fd}g } j                   j                  dk(  r j                   j                         }|D ]  
d}t         j                  j                  
j                  g             D ]  }|j                  
j                  kD  rd}|j                  }|j                  dk(  r|j                  |k(  rI|j                         r<|j                  dk(  r*|j                  d   j                  dk(  r|r|
 |d	        nd
}nd}|r ||        n |D ]/  }	|	j                  j                  
j                  k(  s' |d      f 1  y )Nc                 H    j                  | j                  fz         y r   )r   ra   )r   	base_namer   rd   s    rh   raise_z'_Context._analyze_names.<locals>.raise_B  s!    ""9g%8P.PQri   r   FTr   r   r'   	annassignzannotated name '%s' can't be %sz.name '%s' is assigned to before %s declarationz)name '%s' is used prior to %s declarationzname '%s' is parameter and %s)rc   r[   r   reversedr   getra   r   r   r   is_definitionr]   )r   globals_or_nonlocalsrd   r   paramsfound_global_or_nonlocalr   r   r   r   r   s   ` `       @rh   r   z_Context._analyze_namesA  s?   	R 99>>Y&YY))+F- #	=I',$ !5!5!9!9)//2!NO >>I$7$77/3,;;')fkkT.A %%'{{k1 & 2 7 7; F3 )-I@A"RIG/7O9<   =::##y6:;<=C#	=ri   c              #   ~   K   | j                   j                  |       d  | j                   j                          y wr   )r   r   popr   rc   s     rh   	add_blockz_Context.add_blockn  s)     4 s   ;=c                 2    t        || j                  |       S )N)r   )r   r   r   s     rh   add_contextz_Context.add_contextt  s    d44TJJri   c                 J    | xj                   |j                         z  c_         y r   )r   r   )r   child_contexts     rh   close_child_contextz_Context.close_child_contextw  s    ))]-C-C-EE)ri   r   )__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r    ri   rh   r   r      sD    	2I+I" <D+=Z  
KFri   r   c                   d     e Zd ZdZ fdZd Z fdZed        Z fdZ	d Z
d Zd	 Zd
 Z xZS )ErrorFinderz1
    Searches for errors in the syntax tree.
    c                 h    t        |   |i | i | _        | j                  j                  | _        y r   )superr   _error_dictgrammarversion_infor2   )r   argskwargs	__class__s      rh   r   zErrorFinder.__init__  s.    $)&)||00ri   c                 l      fd |      xs t        | j                         _        d _        y )Nc                 |    | y  | j                         }| j                  dv rt        | j                  |      S |S )N)classdefr   
file_input)r   r[   r   r   )rc   r   create_contextr   s     rh   r  z.ErrorFinder.initialize.<locals>.create_context  sA    |+DKK8NyyAAd&<&<nMM!!ri   r   )r   r   context_indentation_count)r   rc   r  s   ` @rh   
initializezErrorFinder.initialize  s0    	" &d+Uxd>T>T/U"#ri   c                     |j                   dk(  r| j                  |      5  	 d d d        yt        |   |      S # 1 sw Y   xY w)Nr    )r[   
visit_noder   visit)r   rc   r   s     rh   r  zErrorFinder.visit  sK    99$&  	 
 w}T"" s	   <Ac              #     K   | j                  |       |j                  t        v ra| j                  j	                  |      5  t        | j                  j                        t        k(  r| j                  |d       d  d d d        y |j                  dk(  rG| xj                  dz  c_	        | j                  t        k(  r| j                  |j                  d   d       d  |j                  dk(  r| xj                  dz  c_	        y |j                  dv r9| j                  }|j                  | _        | j                  j                  |       y y # 1 sw Y   y xY ww)Nz!too many statically nested blockssuiter'   ztoo many levels of indentationr   r   )_check_type_rulesr[   _BLOCK_STMTSr  r   r^   r   _MAX_BLOCK_SIZEr   r  _MAX_INDENT_COUNT_add_indentation_errorr]   r   r   )r   rc   r  s      rh   r  zErrorFinder.visit_node  s    t$99$''- t||**+>**41TU YY'!##q(#&&*;;++DMM!,<>^_99##q(#YY11llG"11DLLL,,W5 2 s   ?E=E>CEEEc                     |j                   dk(  r|j                  dv rQt        |j                         j	                               d   }|j                  dk(  rd}nd}| j                  ||       y|j                  j                  d      rd}nt        j                  d	|j                        }|Bd
}| j                  dk\  rS|j                  t        | j                        j                  v r(d|z   }n"t        |j                  d            dk(  rd}nd}| j                  ||       y|j                  dk(  r:|j                   }|j                   dv r | j"                  j%                  |      | _        t&        | Q  |      S )N
error_leaf)INDENTERROR_DEDENTrK   r  zunexpected indentz3unindent does not match any outer indentation level\z6unexpected character after line continuation characterz\w{,2}("{1,3}|'{1,3})invalid syntaxr   
f-string: r'   z!EOL while scanning string literalz/EOF while scanning triple-quoted string literalr  r(   r  )r[   
token_typer4   get_next_leaf_split_prefixr  ra   
startswithrematchr2   r   always_break_tokensr^   groupr   r   r  r   r   
visit_leaf)r   leafspacingr   r  r   r   s         rh   r   zErrorFinder.visit_leaf  sW   99$"<< t113AACDRH??h.1GSG++GW=* ' ::((.VGHH%>

KE}"2 LLF2 $

.C $/11!2 '3W&<Gu{{1~.!3&IG&WG&&tW5ZZ3[[F{{55#||77? w!$''ri   c                 0    | j                  |dd|z          y )N  IndentationError: 	add_issue)r   r"  r   s      rh   r  z"ErrorFinder._add_indentation_error  s    w%9G%CDri   c                 0    | j                  |dd|z          y )N  SyntaxError: r&  )r   rc   r   s      rh   r   zErrorFinder._add_syntax_error  s    tS/G";<ri   c                 d    |j                   d   }|||f}| j                  j                  ||       y )Nr   )r   r   r   )r   rc   coder   liner   s         rh   r'  zErrorFinder.add_issue  s4     ~~a gt$##D$/ri   c                     | j                   j                          | j                  j                         D ],  \  }}}| j                  j                  t        |||             . y r   )r  r   r   valuesissuesr   r   )r   r,  r   rc   s       rh   r   zErrorFinder.finalize  sR    #'#3#3#:#:#< 	;D'4KKuT49:	;ri   )r   r   r   __doc__r   r  r  r   r  r   r  r   r'  r   __classcell__r   s   @rh   r   r   {  sF    1
$# 6 6.'(RE=0;ri   r   c                   "     e Zd ZdZ fdZ xZS )IndentationRuler$  c                 .    t         |   ||      }d|z   S )Nr%  )r   _get_messager   r   rc   r   s      rh   r7  zIndentationRule._get_message  s    '&w5#g--ri   r   r   r   r,  r7  r2  r3  s   @rh   r5  r5    s    D. .ri   r5  r   r   c                       e Zd ZdZd Zd Zy)_ExpectIndentedBlockzexpected an indented blockc                 Z    |j                         }t        |j                               d   S )NrK   )r  r4   r  )r   rc   r!  s      rh   get_nodez_ExpectIndentedBlock.get_node  s)    !!#D&&()"--ri   c                 :    |j                   d   j                  dk(  S )NrK   rl   rn   r   s     rh   is_issuez_ExpectIndentedBlock.is_issue  s    }}R %%22ri   Nr   r   r   r   r=  r?  r   ri   rh   r;  r;    s    *G.3ri   r;  c                       e Zd ZeZy)ErrorFinderConfigN)r   r   r   r   normalizer_classr   ri   rh   rB  rB    s    "ri   rB  c                   "     e Zd ZdZ fdZ xZS )
SyntaxRuler)  c                     t         |   ||      }d|vr%t        | j                  j                  |      rd|z   }d|z   S )Nzf-stringr  r*  )r   r7  r   _normalizerr2   r8  s      rh   r7  zSyntaxRule._get_message  sG    '&w5g%"4#3#3#;#;TB"W,G((ri   r9  r3  s   @rh   rE  rE    s    D) )ri   rE  c                        e Zd ZdZdZd Zd Zy)_InvalidSyntaxRuler  zf-string: invalid syntaxc                 "    |j                         S r   )r  r   s     rh   r=  z_InvalidSyntaxRule.get_node  s    !!##ri   c                     |j                         j                  dk7  }|r>t        | j                  j                  |      r| j                  || j                         y |S )Nr  r   )r  r[   r   rG  r2   r'  fstring_message)r   rc   errors      rh   r?  z_InvalidSyntaxRule.is_issue  sQ    ""$))\9"4#3#3#;#;TBNN4)=)=N> Lri   N)r   r   r   r   rM  r=  r?  r   ri   rh   rI  rI    s    G0O$	ri   rI  rI   )ra   c                       e Zd ZdZd Zd Zy)_AwaitOutsideAsyncz'await' outside async functionc                 L    | j                   j                  j                          S r   )rG  r  r   r   r!  s     rh   r?  z_AwaitOutsideAsync.is_issue-  s     ##++<<>>>ri   c                     |j                   S r   r   r   s     rh   get_error_nodez!_AwaitOutsideAsync.get_error_node0  s    {{ri   N)r   r   r   r   r?  rU  r   ri   rh   rP  rP  )  s    .G?ri   rP  breakc                       e Zd ZdZd Zy)_BreakOutsideLoopz'break' outside loopc                 x    d}| j                   j                  j                  D ]  }|j                  dv sd} | S )NFr   r
   T)rG  r  r   r[   )r   r!  in_loopblocks       rh   r?  z_BreakOutsideLoop.is_issue9  sD    %%--44 	Ezz77	 {ri   Nr   r   r   r   r?  r   ri   rh   rX  rX  5  s    $Gri   rX  continuec                       e Zd ZdZdZd Zy)_ContinueChecksz'continue' not properly in loopz0'continue' not supported inside 'finally' clausec                 f   d}| j                   j                  j                  D ]  }|j                  dv rd}|j                  dk(  s#|j                  d   }|dk(  s8|j
                  |j
                  kD  sR| j                   j                  dk  sl| j                  || j                          y |syy )	NFrZ  Tr   finallyr#   rL  )	rG  r  r   r[   r]   r   r2   r'  message_in_finally)r   r!  r[  r\  
last_blocks        rh   r?  z_ContinueChecks.is_issueF  s    %%--44 	!Ezz77zzZ'"^^B/
)+)=)==((0069NN41H1HNI 	!  ri   N)r   r   r   r   rd  r?  r   ri   rh   r`  r`  A  s    /GKri   r`  fromc                       e Zd ZdZd Zd Zy)_YieldFromCheckz"'yield from' inside async functionc                 .    |j                   j                   S r   rT  rR  s     rh   r=  z_YieldFromCheck.get_node\  s    {{!!!ri   c                     |j                   j                  dk(  xr$ | j                  j                  j	                         S )N	yield_arg)r   r[   rG  r  r   rR  s     rh   r?  z_YieldFromCheck.is_issue_  s6    {{;. <  ((99;	<ri   Nr@  r   ri   rh   rh  rh  X  s    2G"<ri   rh  r   c                       e Zd ZdZdZd Zy)_NameCheckszcannot assign to __debug__zcannot assign to Nonec                     | j                   j                  j                  |       |j                  dk(  r|j	                         ryy y )N	__debug__T)rG  r  r   ra   r   rR  s     rh   r?  z_NameChecks.is_issuei  s>      ))$/::$););)= *>$ri   N)r   r   r   r   message_noner?  r   ri   rh   rm  rm  d  s    *G*Lri   rm  r@   c                   @    e Zd Zej                  dk  rdZd ZydZd Zy)_StringChecksr*   z0bytes can only contain ASCII literal characters.z/bytes can only contain ASCII literal charactersc                 h   |j                   j                         }d|v rt        d |j                  D              ryd|vr|j	                         }d|v r"|j                  d      }t        j                  }nt        j                  }	 t        j                         5  t        j                  d        ||       d d d        y y # 1 sw Y   y xY w# t        $ r)}| j                  |dt        |      z          Y d }~y d }~wt        $ r)}| j                  |d	t        |      z          Y d }~y d }~ww xY w)
Nbc              3   >   K   | ]  }t        |      d kD  s|  yw)   N)ord)r   cs     rh   r   z)_StringChecks.is_issue.<locals>.<genexpr>z  s     >aQ#>s   Trzutf-8ignorez(unicode error) rL  z(value error) )string_prefixlowerr   ra   _get_payloadencodecodecsescape_decodeunicode_escape_decodewarningscatch_warningsfilterwarningsUnicodeDecodeErrorr'  rb   
ValueError)r   r!  r{  payloadfunces         rh   r?  z_StringChecks.is_issuew  s   **002->4::>>m# '')Gm#!..1++33H,,. "++H5M" " $" " & Jt-?#a&-HII Ht-=A-FGGHsB   C C9C CC C 	D1C<<D1D,,D1N)r   r   r   sysr   r   r?  r   ri   rh   rr  rr  p  s)    
'!DH DHri   rr  *c                       e Zd ZdZd Zy)
_StarCheckz"named arguments must follow bare *c                     |j                   }|j                  dk(  r[|rX|j                  |j                  j                  |      dz   d  }|D cg c]  }|dvr|j                  s| }}t        |      dk(  S y y c c}w )N
parametersr'   ),r0   r   )r   r[   r]   index
star_countr^   )r   r!  r   afterrp   s        rh   r?  z_StarCheck.is_issue  s    ;;,&6OOFOO$9$9$$?!$C$DEE(- JuZ/8H8H  JE Ju:?"	 ,2&Js   A8Nr]  r   ri   rh   r  r    s    2G#ri   r  r)   c                       e Zd ZdZd Zy)_StarStarCheckz3dict unpacking cannot be used in dict comprehensionc                     |j                   j                  dk(  r6|j                         j                         }|d uxr |j                  t        v S y )Nr"   )r   r[   get_next_siblingru   )r   r!  r   s      rh   r?  z_StarStarCheck.is_issue  sJ    ;;//,,.??AH4'LHMM_,LL 0ri   Nr]  r   ri   rh   r  r    s    
 DGMri   r  r8   returnc                        e Zd ZdZdZd Zd Zy)_ReturnAndYieldChecksz&'return' with value in async generatorz'yield' inside async functionc                     |j                   S r   rT  rR  s     rh   r=  z_ReturnAndYieldChecks.get_node      {{ri   c                    | j                   j                  j                  j                  dk7  r0| j	                  | j                  |      d|j                  z         y | j                   j                  j                         rct        | j                   j                  j                  j                               r+|j                  dk(  r|j                  j                  dk(  ryy y y y )Nr   z'%s' outside functionrL  r  return_stmtT)rG  r  rc   r[   r'  r=  ra   r   r   iter_yield_exprsr   rR  s     rh   r?  z_ReturnAndYieldChecks.is_issue  s    ##((--:NN4==.8ORVR\R\8\N]%%668((0055FFHIzzX%$++*:*:m*K +L% J 9ri   N)r   r   r   r   message_async_yieldr=  r?  r   ri   rh   r  r    s     7G9ri   r  rB   c                       e Zd ZdZd Zd Zy)_BytesAndStringMixz&cannot mix bytes and nonbytes literalsc                 Z    |j                   dk(  ryd|j                  j                         v S )NrY   Frt  )r[   r{  r|  )r   r@   s     rh   _is_bytes_literalz$_BytesAndStringMix._is_bytes_literal  s+    ;;)#f**00222ri   c                     |j                   d   }| j                  |      }|j                   dd  D ]  }|| j                  |      k7  s y y )Nr   r'   T)r]   r  )r   rc   rf   first_is_bytesr@   s        rh   r?  z_BytesAndStringMix.is_issue  sP    a //6mmAB' 	F!7!7!??	ri   N)r   r   r   r   r  r?  r   ri   rh   r  r    s     7G3
ri   r  import_as_namesc                       e Zd ZdZd Zy)_TrailingImportCommaz:trailing comma not allowed without surrounding parenthesesc                 d    |j                   d   dk(  r|j                  j                   d   dk7  ryy y )NrK   r  r0   T)r]   r   r   s     rh   r?  z_TrailingImportComma.is_issue  s5    ==#(<(<R(@C(G )H#ri   Nr]  r   ri   rh   r  r    s     KGri   r  ry   c                       e Zd ZdZd Zy)_ImportStarInFunctionz%import * only allowed at module levelc                 j    |j                         xr" | j                  j                  j                  d uS r   )is_star_importrG  r  r   r   s     rh   r?  z_ImportStarInFunction.is_issue  s.    ""$\)9)9)A)A)P)PX\)\\ri   Nr]  r   ri   rh   r  r    s    5G]ri   r  c                       e Zd ZdZd Zy)_FutureImportRulez?from __future__ imports must occur at the beginning of the filec                    t        |      rt        |      sy|j                         D ]  \  }}|j                  }t	        t
              }| j                  j                  dk\  r|j                  d       |dk(  r| j                  |d       d|dk(  rd}| j                  ||       ||vsd	|z  }| j                  ||        y y )
NTr$      annotationsbracesznot a chancerL  barry_as_FLUFLz-Seriously I'm not implementing this :) ~ Davez future feature %s is not defined)
r|   r   	get_pathsra   r4   ALLOWED_FUTURESrG  r2   r   r'  )r   rc   	from_namefuture_namer   allowed_futuresmr   s           rh   r?  z_FutureImportRule.is_issue  s    T"*40*...*: :&	;"(("&"7##++v5#**=98#NN4N@--GANN4N30@4GGNN4N9:	 #ri   Nr]  r   ri   rh   r  r    s    OG:ri   r  rR   c                       e Zd ZdZd Zy)_StarExprRulez2iterable unpacking cannot be used in comprehensionc                 X   d }| j                   j                  dk\  r|j                  }nt        |      }|j                  g t
        dvr5|j                  dk(  r|j                  d   dk7  s| j                  |d       y  ||      rA| j                   j                  dk\  r| j                  |d	       y | j                  |d       y |j                  j                  d
k(  rH|j                  j                  d   j                  t        v r| j                  || j                         y y y )Nc                     | j                   A| j                   } | j                  dk(  ry| j                  g t        dvry| j                   Ay)Ndel_stmtTr    F)r   r[   r   r   s    rh   check_delete_starredz4_StarExprRule.is_issue.<locals>.check_delete_starred  sP    ++){{99
*99$A&8$A&$AA  ++) ri   r   r"   r    r   r/   !can't use starred expression hererL  zcannot delete starredr   r'   )
rG  r2   r   r   r[   r   r]   r'  ru   message_iterable_unpacking)r   rc   r  ancestors       rh   r?  z_StarExprRule.is_issue   s   	 ##v-{{H-d3H== G"4 G6F GG!&0X5F5Fq5IS5PNN4)LNM%''61t-DE  t-PQ;;.{{##A&++>tT-L-LM ? /ri   N)r   r   r   r  r?  r   ri   rh   r  r    s    !UNri   r  )typesc                       e Zd Zd Zy)_StarExprParentRulec                    fd ||j                         r|j                  D cg c]
  }|dk7  s	| }}|D cg c]  }|j                  dk(  s| }}t        |      dkD  r5| j                  j
                  dk  rd}nd}| j                  |d   |       y |r3|j                  |d	         }|d
k\  rd}| j                  |d	   |       y y y y c c}w c c}w )Nc                     |y|j                   }|dk(  ry|dk(  r&| j                  |j                  d   j                  k  S  | |j                        S )NFrL   r   rK   )r[   r   r]   r   )rc   r  rd   r   s      rh   r   z3_StarExprParentRule.is_issue.<locals>.is_definition$  sY    MME	!#~~(9(9"(=(G(GGG x77ri   r  rR   r'   r   z%two starred expressions in assignmentz*multiple starred expressions in assignmentrL  r      z1too many expressions in star-unpacking assignment)r   r]   r[   r^   rG  r2   r'  r  )r   rc   rx  r   rX   r   countr   s          @rh   r?  z_StarExprParentRule.is_issue#  s    	8 t{{+#}}9!SA9D9"&@Q!&&K*?q@G@7|a##++f4EGJGwqz7;

71:.C<QGNN71:wN?    ,9@s   
CCCCNr   r   r   r?  r   ri   rh   r  r  !  s    @ri   r  r   c                       e Zd ZdZd Zd Zy)_AnnotatorRulezillegal target for annotationc                     |j                   S r   rT  r   s     rh   r=  z_AnnotatorRule.get_nodeG  r  ri   c                    d }|j                   j                  d   }t        |      }	 |j                  }d|v s|j                  dk(  r|d   dk(  rd}n|j                  dk(  r
|d   dk(  rd}|d   }|A|j                  d	k(  s1|j                  d
v r!j                  dk(  r|j                  d   dk7  syy y d}| j                  |j                   ||z         y # t        $ r Y qw xY w)Nr   r  r    r/   r1   r3   r4   rK   r   rF   rL   Tz,only single target (not %s) can be annotatedrL  )r   r]   r`   r[   r~   r'  )r   rc   rd   lhsr]   rL   r   s          rh   r?  z_AnnotatorRule.is_issueJ  s    kk""1%S!		#||H h#((f"4!9KV#s(:rlG=HH&xx#99	1((+s2 3	 ' EGNN3::wN?'  		s   C 	C"!C"Nr@  r   ri   rh   r  r  A  s     .G@ri   r  r   c                       e Zd Zd Zy)_ArgumentRulec                    |j                   d   }| j                  j                  dk  rt        |      }|j                   d   dk(  rn|j                  dk7  r_|j                  dk(  r| j                  j                  dk  rd}n!d}n| j                  j                  dk  rd	}nd}| j                  ||
       t        |      r.|j                  j                  dk(  r| j                  |d
       y y y )Nr   r#   r'   =r   r   z lambda cannot contain assignmentz=expression cannot contain assignment, perhaps you meant "=="?zkeyword can't be an expressionrL  r   r  )r]   rG  r2   r`   r[   r'  r   r   )r   rc   rf   r   s       rh   r?  z_ArgumentRule.is_issueh  s    a ##f,"5)E==s"uzzV';zzY&##++f4@G]G ##++f4>G]GNN5'N2%d+0@0@J0NNN4)9N: 1O+ri   Nr  r   ri   rh   r  r  f  s    ;ri   r  r   c                       e Zd ZdZd Zy)_NonlocalModuleLevelRulez0nonlocal declaration not allowed at module levelc                 F    | j                   j                  j                  d u S r   )rG  r  r   r   s     rh   r?  z!_NonlocalModuleLevelRule.is_issue  s    ''66$>>ri   Nr]  r   ri   rh   r  r    s    @G?ri   r  arglistc                   "    e Zd Zed        Zd Zy)_ArglistRulec                 8    | j                   j                  dk  ryy)Nr  z?Generator expression must be parenthesized if not sole argumentz*Generator expression must be parenthesized)rG  r2   r   s    rh   r   z_ArglistRule.message  s    ##f,T?ri   c                    t               }d}d}|j                  D ],  }|dk(  r
|j                  dk(  r|j                  d   }t        |      rt	        |j                        dk\  r y|dv r!|dk(  r|sYd	}| j                  ||
       od}rd}|j                  dk(  s|j                  |v rMd}| j                  j                  dk\  r|dj                  |j                        z  }| j                  ||
       |j                  |j                         |rd}| j                  ||
       |sd}| j                  ||
       / y )NFr  r   r   r!   T)r  r)   r  z>iterable argument unpacking follows keyword argument unpackingrL  r   zkeyword argument repeatedr   z: {}z6positional argument follows keyword argument unpackingz,positional argument follows keyword argument)setr]   r[   r   r^   r'  ra   rG  r2   formatadd)r   rc   arg_setkw_onlykw_unpacking_onlyr   rf   r   s           rh   r?  z_ArglistRule.is_issue  s7   %! &	>H3}}
* ))!,-h7C<NRS<SK'|,'KG NN8WNE,0)"GzzV+ ;;'1&AG#//776A '6==+E E NN5'NB#KK4$VGNN8WN=LGNN8WN=M&	>ri   N)r   r   r   propertyr   r?  r   ri   rh   r  r    s    @ @*>ri   r  r  r   c                       e Zd ZdZd Zy)_ParameterRulez-non-default argument follows default argumentc                    t               }d}d}t        |      D ]  }|j                  dk(  r|j                  dk(  rd}d}&|j                  j                  |v r6d}| j                  |j                  ||j                  j                  z         |j                  |j                  j                         |r|j                  |j                  s|s y|j                  rd}d}d} y )NFr:   r  Tz.duplicate argument '%s' in function definitionrL  )	r  r   r[   ra   r   r'  r  defaultr  )r   rc   param_namesdefault_only	star_seenpr   s          rh   r?  z_ParameterRule.is_issue  s    e	d# 	(Avv#77c> $I#(Lvv||{*Jqvvw/EFOOAFFLL)99$Q\\##\\ $I#(L#'L)	(ri   Nr]  r   ri   rh   r  r    s     >G(ri   r  r   c                       e Zd ZdZd Zy)_TryStmtRulezdefault 'except:' must be lastc                     d }|j                   dd d   D ]0  }|dv r y |dk(  r|}|| j                  || j                         2 y )Nr$   )elserc  exceptrL  )r]   r'  r   )r   r   default_exceptexcept_clauses       rh   r?  z_TryStmtRule.is_issue  s\    %..qt!t4 	EM 33(!.+~t||D	Eri   Nr]  r   ri   rh   r  r    s    .GEri   r  rY   c                   6    e Zd ZdZdZdZdZd Zd Zd Z	d	dZ
y)
_FStringRuleNz3f-string expression part cannot include a backslashz'f-string: expressions nested too deeplyzAf-string: invalid conversion character: expected 's', 'r', or 'a'c                 B    | j                  |j                  dd  |       y r   _check_fstring_contentsr]   )r   format_specdepths      rh   _check_format_specz_FStringRule._check_format_spec  s    $$[%9%9!"%=uEri   c                 <   |dk\  r| j                  || j                         |j                  d   }d|j                         v r| j                  || j                         |j                  d   }|j
                  dk(  r|j                  dk(  r|j                  d   }n|}|j
                  dk(  r:|j                  d   }|j                  d	vr| j                  || j                         |j                  d
   }|j
                  dk(  r| j                  ||dz          y y )Nr!   rL  r'   r  r:   r  r$   fstring_conversion)sry  ar   fstring_format_spec)	r'  message_nestedr]   get_codemessage_exprr[   ra   message_conversionr  )r   fstring_exprr  rQ   
children_2
conversionr   r  s           rh   _check_fstring_exprz _FStringRule._check_fstring_expr  s   A:NN<1D1DNE$$Q'4==?"NN4):):N;!**1-
??j(Z-=-=-D%..q1J#J??22&&q)Dzz0tT-D-DE"++B/44##K; 5ri   c                 @    | j                  |j                  dd        y )Nr'   rK   r  )r   rY   s     rh   r?  z_FStringRule.is_issue  s    $$W%5%5a%;<ri   c                 V    |D ]$  }|j                   dk(  s| j                  ||       & y )Nr  )r[   r	  )r   r]   r  fstring_contents       rh   r  z$_FStringRule._check_fstring_contents  s1    ' 	AO##~5((%@	Ari   )r   )r   r   r   _fstring_grammarr  r  r  r  r	  r?  r  r   ri   rh   r  r    s.    HL>N\F<,=Ari   r  c                       e Zd ZddZy)_CheckAssignmentRulec                 t	   d }|j                   }|dk(  rd}nN|dk(  r|j                  d d \  }}t        |      }|(|j                   dk(  rT| j                  j                  dk  rd}n|j                  d   d	k(  r!| j                  j                  d
k  rd}nd}nd}n|dk(  rC|dk(  r>| j                  j                  dk  rd}n| j                  j                  d
k  rd}nd}n}|dk(  r9t        |j                        dkD  r!| j                  j                  dk  rd}nCd}n?|dv r:|j                   dk(  rd}n'|j                   dk(  r>|r|dk(  rd}n|dk(  rd}|j                  d d d   D ]  }	| j                  |	|||        n| j                  ||||       n|dk(  rG|j                  dk(  rd}n| j                  j                  dk  rd}nt        |j                        }nx|dk(  r1|j                  dk(  rc| j                  j                  d
k  rd}nFd}nB|dk(  rd}n9|dv rd}n1|dk(  rd }
| j                  ||
!       n|d"k(  rd#}n|d$v r|j                  d%   d&k(  rd'}n|j                  d(   d)k(  r!| j                  j                  d
k  rd}nd*}n|j                  d+   }|j                   d,k(  sJ |j                  d%   dk(  rd-}n|r|j                  d%   dk(  rd.}nq|rn|j                  d%   d/k(  r[d0}nW|d1k(  r!| j                  j                  dk  rd}n5d2}n1|d3v r-|j                  d d d   D ]  }	| j                  |	|||        n d4|v r|d5k7  sd6|v s|d7v r| j                  j                  d
k  rd}nd*}n|d5k(  r|r0| j                  j                  d8k\  rd9}n| j                  |d:!       n{| j                  j                  d8k\  r|j                  }nt        |      }|j                   t        vr8|s6|j                   dk(  r|j                  d%   dk(  sd;}
| j                  ||
!       | j                  |j                  d          |Q|rd<|z  }
n5| j                  j                  dk  rd=nd>}d?j                  ||rd@ndA|g      }
| j                  ||
!       y y )BNr   r   r    r!   r"   r#   r&   r'   r(   r*   r,   r-   r.   r5   r6   )r/   r3   rC   r9   r   r/   r1   r3   r4   r7   r8   r:   r;   r<   r=   r>   r?   z+assignment to yield expression not possiblerL  rD   rE   rF   r   rI   rJ   r   r)   rW   rK   rL   rM   rN   rO   rP   rY   rZ   )r   r   r   rQ   rR   rS   rT   r   rX   r  z4starred assignment target must be in a list or tuplez)cannot use assignment expressions with %szcan'tcannot deletez	assign to)r[   r]   r\   rG  r2   r^   _check_assignmentra   rb   r'  r   r   r   join)r   rc   is_deletionis_namedexpris_aug_assignrN  rd   rf   rg   rp   r   rL   r  r  s                 rh   r  z&_CheckAssignmentRule._check_assignment  s   		IEf_ MM"1-ME6+D1E};;"22''//&8 )!??1-4#//77'A(6(6$1Ec\fm''//&8 )++33g=$2E$2Ec\c$--&81&<''//&8 ) -j({{l2 27 ($|(/!&#(. &,__SqS%9 dE 225+|Ubcd ..v{LR_`izzW$*!!))F2!DJJj zzU"##++g5&E&El" E55El"CGNN4N1f_,E,,}}Q7**r"d*##++g5&E(E --+||y000##A&#-+E!g&6&6q&9S&@'E!g&6&6q&9S&@'Ei''&0!-DDss+ X&&uk<WXo%;"6E!,,'''1"$k!##++v5%ENN41TNU##++v5#{{H5d;H==(::=!)&!8X=N=Nq=QUX=XTGNN4N9""4==#34EM$($4$4$<$<v$E8((FHV[#\]NN4N1 ri   N)FFF)r   r   r   r  r   ri   rh   r  r    s    C2ri   r  r   c                       e Zd ZdZd Zy)_CompForRulez>asynchronous comprehension outside of an asynchronous functionc                     |j                   d   }|j                  dk7  r| j                  |       |j                  j                   d   dk(  xr% | j                  j
                  j                          S )Nr'   	expr_listr   async)r]   r[   r  r   rG  r  r   )r   rc   r  s      rh   r?  z_CompForRule.is_issue  sh    MM!$	>>[(""9-{{##A&'1 @$$,,==??	@ri   Nr]  r   ri   rh   r  r    s    NG@ri   r  r   c                        e Zd ZdZdez   Zd Zy)_ExprStmtRulez+illegal expression for augmented assignmentz'{target}' is an c           	         |j                   d   }|dk7  xr |j                  dk7  }| j                  j                  dk  s|s*|j                   d dd   D ]  }| j	                  ||        |rt        |j                   d         }|j                  d	k(  sI|j                  d
v r<|j                   d   j                  dk(  r |j                   d   j                   d   dk7  ry| j                  j                  dk  ry| j                  || j                  j                  t        |j                   d   | j                  j                                     y y )Nr'   r  r   r#   r   r!   )r  r   r   rF   rL   rK   r/   FT)targetrL  )
r]   r[   rG  r2   r  r`   r'  extended_messager  r_   )r   rc   	augassignr  before_equalr!  s         rh   r?  z_ExprStmtRule.is_issue  sB   MM!$	!S(JY^^{-J##v-] $er!e 4 R&&|=&QR #DMM!$45F {{f$55OOA&++y8OOB'003s:''61 1188,T]]1-=t?O?O?W?WX 9    ri   N)r   r   r   r   r"  r?  r   ri   rh   r  r    s    ;G*W4ri   r  	with_itemc                       e Zd Zd Zy)_WithItemRulec                 @    | j                  |j                  d          y Nr!   )r  r]   )r   r%  s     rh   r?  z_WithItemRule.is_issue  s    y11!45ri   Nr  r   ri   rh   r'  r'    s    6ri   r'  r  c                       e Zd Zd Zy)_DelStmtRulec                 h    |j                   d   }|j                  dk7  r| j                  |d       y y )Nr'   r  T)r  r]   r[   r  )r   r  rp   s      rh   r?  z_DelStmtRule.is_issue  s6    !!!$::$""5d"; %ri   Nr  r   ri   rh   r+  r+    s    <ri   r+  r  c                       e Zd Zd Zy)_ExprListRulec                 T    |j                   d d d   D ]  }| j                  |        y r)  )r]   r  )r   r  rQ   s      rh   r?  z_ExprListRule.is_issue  s.    &&ss+ 	)D""4(	)ri   Nr  r   ri   rh   r/  r/    s    )ri   r/  r   c                       e Zd Zd Zy)_ForStmtRulec                 d    |j                   d   }|j                  dk7  r| j                  |       y y )Nr'   r  r-  )r   r   r  s      rh   r?  z_ForStmtRule.is_issue  s1    %%a(	>>[(""9- )ri   Nr  r   ri   rh   r2  r2    s    .ri   r2  namedexpr_testc                       e Zd Zd Zy)_NamedExprRulec                 &  	
 |j                   d   }d } ||      rd}| j                  ||       t               		fd

fd} ||      }|r| j                  j                  j
                  j                  dk(  rd}| j                  ||       	D cg c]  }|j                  d	k(  s|j                    }}|j                  d	k(  r0|j                  |v r"d
|j                  z  }| j                  ||       | j                  |d       y c c}w )Nr   c                 p    	 | j                   }||S |j                  dk(  r|j                  d   | k(  r|S |} 6)Nr   r$   r   )rc   r   s     rh   search_namedexpr_in_comp_forz=_NamedExprRule.is_issue.<locals>.search_namedexpr_in_comp_for  sC    >!M;;/1fooa6HD6P!M ri   zKassignment expression cannot be used in a comprehension iterable expressionrL  c                     | j                   dk(  r| }n| j                   dk(  r| j                  d   }j                  t                     y )Nr   r   r'   )r[   r]   r   r   )r   compr   s     rh   process_comp_forz1_NamedExprRule.is_issue.<locals>.process_comp_for  sB    }}/*,((+OO:4@Ari   c                     d}	 | j                  dd      } | 	 |S | j                  D ]   }|j                  t        v s |       d} n G)NFTr   r"   )r   r]   r[   ru   )rc   has_ancestorsrp   r<  s      rh   search_all_comp_ancestorsz:_NamedExprRule.is_issue.<locals>.search_all_comp_ancestors  sd    !M++O=MN< !  "]] Ezz_4(/(,		 ri   r   zKassignment expression within a comprehension cannot be used in a class bodyr   zGassignment expression cannot rebind comprehension iteration variable %rT)r  )	r]   r'  r4   rG  r  rc   r[   ra   r  )r   r4  rf   r9  r   r?  
search_allrQ   namelistr   r<  s            @@rh   r?  z_NamedExprRule.is_issue  s   ''*	 (7 dGNN>7N; 6	B	! /~>
'',,11Z?;~w?/7Ot499;N

OHOzzV#x(?
@BG++N~w?u48 Ps   D+DNr  r   ri   rh   r6  r6    s    =9ri   r6  )Fr  r  r  r  
contextlibr   parso.normalizerr   r   r   r   parso.python.tokenizer   r  r   r  r  r  ru   r_   rr   r\   r|   r`   r   r   r   r   r   r   r   r   r   r   r5  register_ruler;  rB  rE  rI  rP  rX  r`  rh  rm  rr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r'  r+  r/  r2  r6  r   ri   rh   <module>rF     s(    
  	 % F F 7MH   0Sl;	Z"(0=
8/F FDq;* q;h.d . -	3? 	3 .	3#( #
) 
) -  .& )  * )
  * ,j  -, (<j < )< '*  ( ) HJ  H * HF %	# 	# &	# &	MZ 	M '	M )*J  + *  	*  +"  12:  3 .]J ] /] .:
 : /:. ,!NJ !N -!NH !34@* @ 5@> ,!@Z !@ -!@H 
+;J ; ,;2 0?z ? 1? 	*2>: 2> +2>j -	*(Z ( + .(> 
+E: E ,E 	*%A: %A +%APD2: D2N 0	@' 	@ 1	@ ,(  -D ,6( 6 -6
 
+<' < ,< ,)( ) -) 
+.' . ,.  01@9) @9 2@9ri   