
    ^hٿ                        S SK r S SKrS SKrS SKrS SKJr  S SKJrJrJ	r	J
r
  S SKJr  SrSrSrSrS	rS
rS rS rS rS rS rS rS rS rS rS rS rS rS r " S S5      r  " S S\5      r! " S S\
5      r"\!RG                  SS9 " S  S!\"5      5       r$ " S" S#\5      r% " S$ S%\
5      r&\!RG                  SS9 " S& S'\&5      5       r'\!RG                  S(S)9 " S* S+\&5      5       r(\!RG                  S,S)9 " S- S.\&5      5       r)\!RG                  S/S)9 " S0 S1\&5      5       r*\!RG                  S2S)9 " S3 S4\&5      5       r+\!RG                  S5S9 " S6 S7\&5      5       r,\!RG                  S8S9 " S9 S:\&5      5       r-\!RG                  S;S)9 " S< S=\&5      5       r.\!RG                  S>S)9 " S? S@\&5      5       r/\!RG                  SAS)9\!RG                  SBS)9 " SC SD\&5      5       5       r0\!RG                  SES9 " SF SG\&5      5       r1\!RG                  SHS9 " SI SJ\&5      5       r2\!RG                  SKS9 " SL SM\&5      5       r3\!RG                  SKS9 " SN SO\&5      5       r4\!RG                  SPS9 " SQ SR\&5      5       r5\!RG                  \SS9 " ST SU\&5      5       r6\!RG                  SVS9 " SW SX\&5      5       r7\!RG                  SYS9 " SZ S[\&5      5       r8\!RG                  S\S9 " S] S^\&5      5       r9\!RG                  S_S9 " S` Sa\&5      5       r:\!RG                  SbS9\!RG                  ScS9 " Sd Se\&5      5       5       r;\!RG                  SfS9 " Sg Sh\&5      5       r<\!RG                  SiS9 " Sj Sk\&5      5       r= " Sl Sm\&5      r>\!RG                  SnS9 " So Sp\>5      5       r?\!RG                  SqS9 " Sr Ss\>5      5       r@\!RG                  StS9 " Su Sv\>5      5       rA\!RG                  SwS9 " Sx Sy\>5      5       rB\!RG                  SzS9 " S{ S|\>5      5       rC\!RG                  S}S9 " S~ S\>5      5       rD\!RG                  SS9 " S S\>5      5       rEg)    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                    U R                   nUS:X  a  gUS:X  Ga   [        U 5      nU R                  S S u  pEUb  U$ UR                   S:X  a6  US:  a  gUR                  S   S	:X  d  UR                  S
   S:X  a  US:  a  gggUS:X  a=  US:X  d6  [        U R                  5      S:X  a  U R                  S   R                   S:X  a  gUS:X  a  [	        [        U 5      US9$ US:X  a  gUS:X  a  US:X  a  US:  a  ggUS:X  a  [        U R                  5      S:  a  gU$ US:X  a-  SU R                  ;   a  gUS:  a  g[        U R                  5      $ US:X  a  U R                  S:X  a  US:  a  gg US!:X  a  g!US";   a  gUS#:X  a  gUS$:X  a  g%US&;   a~  U R                  S
   S':X  a  g(U R                  S)   R                   S*:X  aK  U R                  S)   nUR                  S
   S:X  a  g+UR                  S
   S:X  a  g,UR                  S
   S-:X  a  g.U$ S/U;   a  S0U;  d  S1U;   d  US2;   a  US:  a  gg3US0:X  a  g4US5:X  a  gUS6:X  a  g7U$ )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          M/home/james-whalen/.local/lib/python3.13/site-packages/parso/python/errors.pyr_   r_      s   IIE		&/5bq)$  [[,, ??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              #      #    U R                    HH  nUR                  S:X  a1  UR                    H  nUR                  S:X  d  US:X  a  M  Uv   M!     MD  Uv   MJ     g7f)z:
Iterates over all statements and splits up  simple_stmt.
simple_stmtnewline;Nr]   r[   )scopechildchild2s      rh   _iter_stmtsrr   m   sP      ::&..;;)+v} )
 K  s   AAc                 $   U R                   S S u  pUR                  S:X  a)  UR                   S   R                  [        ;   a  US:X  a  ggUR                  S:X  a6  UR                   S   R                  [        ;   a  UR                   S   S	:X  a  g
gg )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%ME{{o%&//!*<*A*A_*TC<')	(	(V__R-@-E-E-X??1$'&ri   c                 l    U R                  5       nU Vs/ s H  o"R                  PM     snS/:H  $ s  snf )N
__future__)get_from_namesra   )import_from
from_namesns      rh   _is_future_importr|      s3    
 ++-J'(ZGGZ(\N::(s   1c                      U R                   n[        U5      S:X  a!  US   S:X  a  [        U R                   S   5      $ U $ ! [         a     U $ f = f)zS
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Ac                     U R                   b@  U R                   n U R                  S:w  d  U R                  S   S:w  a  U $ U R                   b  M@  g)zU
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                 (    S U R                    5       $ )Nc              3   h   #    U  H(  oR                   S :X  d  UR                   S:X  d  M$  Uv   M*     g7f)paramr:   Nr[   ).0r{   s     rh   	<genexpr>_iter_params.<locals>.<genexpr>   s(     Y+!vv/@AFFjDXAA+s   #2	2)r]   )parent_nodes    rh   _iter_paramsr      s    Y{++YYri   c                     Sn[        U R                  5       5       HG  nUR                  S:X  a	  U(       d  M  SnX :X  a    gUR                  S:X  a  [        U5      (       a  MG    g   g)z8
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      s]     OK557899 99%*;D*A*A 9ri   c              #      ^#    U4S jmU R                   [        ;   a*  U R                  S S S2    H  nT" U5       S h  vN   M     g T" U 5       S h  vN   g  N N7f)Nc              3     >#    U R                   S:X  ao  U R                  S   S:X  aD  U R                  S   nUR                   S:X  a  [        U5       S h  vN   g T" U5       S h  vN   g U R                  S   S:X  a  Wv   g U v   g  N3 N$7f)Nr    r   r/   r'   r   r3   )r[   r]   !_iter_definition_exprs_from_lists)rp   r   
check_exprs     rh   r   5_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      sY       }}**&&ss+E!%((( , h''' )'s!   ;AAAAAAc                     / nU R                   S SS2    H4  nUR                  S;   a  U[        U5      -  nM#  UR                  U5        M6     U$ )Nr!   )r   testlist)r]   r[   r   append)	expr_stmtexprslist_s      rh   _get_expr_stmt_definition_exprsr      sR    E##ERE*::;;6u==ELL	 +
 Lri   c                 H    U R                   S   n[        [        U5      5      $ Nr'   )r]   r4   r   )r   r   s     rh   _get_for_stmt_definition_exprsr      s#      #H1(;<<ri   c                 B    U R                   S   R                  [        ;   $ r   rt   )arguments    rh   _is_argument_comprehensionr      s    Q$$77ri   c                     U S:  d  Uc  gUR                   S:X  a  [        S UR                   5       5      $ UR                   S:X  a  gUR                  S5      $ )Nr$   	   F
error_nodec              3   >   #    U  H  oR                   S :H  v   M     g7f)fstring_startNr   )r   rp   s     rh   r   %_any_fstring_error.<locals>.<genexpr>   s     LmU::0ms   rY   T)r[   anyr]   search_ancestor)r2   rc   s     rh   _any_fstring_errorr      sR    4<yyL LdmmLLL	i	##I..ri   c                   X    \ rS rSrSS jrS rS rS rS rS r	\
S	 5       rS
 rS rSrg)_Context   Nc                 |    Xl         / U l        X0l        0 U l        / U l        / U l        / U l        / U l        X l        g 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___Context.__init__   sB    	,!#% !,.)!1ri   c                 v    U R                  5       =(       a#    U R                  R                  R                  S;   $ )N)async_funcdef
async_stmt)is_functionrc   r   r[   r   s    rh   is_async_funcdef_Context.is_async_funcdef  s5     ! I		  %%)HH	Iri   c                 4    U R                   R                  S:H  $ )Nfuncdef)rc   r[   r   s    rh   r   _Context.is_function  s    yy~~**ri   c                    UR                   R                  nUS:X  a  g US:X  a  U R                  R                  U5        g US:X  a  U R                  R                  U5        g US:X  aX  U R
                  R                  UR                   R                  5        Vs/ s H  o3R                  R                  PM     sn5        g U R                  R                  UR                  / 5      R                  U5        g s  snf )NrL   global_stmtnonlocal_stmtr   )r   r[   r   r   r   r   extend
get_paramsnamera   r   
setdefault)r   r   parent_typer   s       rh   add_name_Context.add_name  s    kk&&)#-'%%d+O+  ''-I%$$++/3{{/E/E/GH/Ge!!/GH   ++DJJ;BB4H Is   C6c                    U R                  U R                  S5        U R                  U R                  S5        U R                   Vs0 s H  oR                  U_M     nnU R                   HQ  n X#R                     nSUR                  -  nUR
                  UR
                  :  a  UnOUnU R                  Xe5        MS     / nU R                   H  nUR                  nXR                  ;   a  M   X;   d  U R                  c"  SUR                  -  nU R                  X55        MT  U R                  5       (       a  UR                  U R                  ;  d  M  UR                  U5        M     U R                  U-   $ s  snf ! [         a     GM  f = f)zF
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   finalize_Context.finalize  st    	D..9D00*=040B0BC0B1GGQJ0BC!11M./B/BC 9;;L;LLG$$}'>'>>(
*
"":7 2 !#!>>M"((F111)T-@-@-H>ATATT&&}>%%''!''t/C/CC%,,]; ? ##&;;;3 D  s   E7/E<<
F
Fc                   ^ ^^
 U
U U4S jn/ nT R                   R                  S:X  a  T R                   R                  5       nU GH)  m
Sn[        T R                  R                  T
R                  / 5      5       H  nUR                  T
R                  :  a  SnUR                  nUR                  S:X  a  UR                  U:X  a  MM  UR                  5       (       aC  UR                  S:X  a0  UR                  S   R                  S:X  a  U(       a  Um
U" S	5          OS
nOSnU(       a  M  U" U5          O   U H2  n	U	R                  R                  T
R                  :X  d  M)  U" S5      4  M4     GM,     g )Nc                 H   > TR                  TU TR                  T4-  5        g r   )r   ra   )r   	base_namer   rd   s    rh   raise_'_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   _Context._analyze_namesA  s7   	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 P<  ::##y6:;<  C .ri   c              #   ~   #    U R                   R                  U5        S v   U R                   R                  5         g 7fr   )r   r   popr   rc   s     rh   	add_block_Context.add_blockn  s(     4 s   ;=c                 *    [        XR                  U S9$ )N)r   )r   r   r   s     rh   add_context_Context.add_contextt  s    44TJJri   c                 J    U =R                   UR                  5       -  sl         g r   )r   r   )r   child_contexts     rh   close_child_context_Context.close_child_contextw  s    ))]-C-C-EE)ri   )	r   r   r   r   r   r   r   rc   r   r   )__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   r   r   __static_attributes__ ri   rh   r   r      sD    	2I+I" <D+=Z  
KFri   r   c                   r   ^  \ rS rSrSrU 4S jrS rU 4S jr\S 5       r	U 4S jr
S rS	 rS
 rS rSrU =r$ )ErrorFinderi{  z)
Searches for errors in the syntax tree.
c                 j   > [         TU ]  " U0 UD6  0 U l        U R                  R                  U l        g r   )superr   _error_dictgrammarversion_infor2   )r   argskwargs	__class__s      rh   r   ErrorFinder.__init__  s.    $)&)||00ri   c                 x   ^ ^ UU 4S jmT" U5      =(       d    [        UT R                  5      T l        ST l        g )Nc                    > U c  g T" U R                   5      nU R                  S;   a  [        U TR                  U5      $ U$ )N)classdefr   
file_input)r   r[   r   r   )rc   r   create_contextr   s     rh   r  .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   
initializeErrorFinder.initialize  s0    	" &d+Uxd>T>T/U"#ri   c                    > UR                   S:X  a  U R                  U5          S S S 5        g[        TU ]  U5      $ ! , (       d  f       N= f)Nr    )r[   
visit_noder  visit)r   rc   r  s     rh   r  ErrorFinder.visit  sB    99$& 	 '&
 w}T"" '&s	   =
Ac              #     #    U R                  U5        UR                  [        ;   ab  U R                  R	                  U5         [        U R                  R                  5      [        :X  a  U R                  US5        S v   S S S 5        g UR                  S:X  aH  U =R                  S-  sl	        U R                  [        :X  a  U R                  UR                  S   S5        S v   UR                  S:X  a  U =R                  S-  sl	        g UR                  S;   a9  U R                  nUR                  U l        U R                  R                  U5        g g ! , (       d  f       g = f7f)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  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   AE'>ECE'
E$ E'c                    > UR                   S:X  Ga"  UR                  S;   aQ  [        UR                  5       R	                  5       5      S   nUR                  S:X  a  SnOSnU R                  X#5        gUR                  R                  S5      (       a  SnO[        R                  " S	UR                  5      nUcE  S
nU R                  S:  a2  UR                  [        U R                  5      R                  ;   a  SU-   nO#[        UR                  S5      5      S:X  a  SnOSnU R                  X5        gUR                  S:X  a<  UR                   nUR                   S;   a   U R"                  R%                  U5      U l        [&        TU ]Q  U5      $ )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   r2  r   r  s         rh   r5  ErrorFinder.visit_leaf  sW   99$"<< t113AACDRH??h.1GSG++G=* ' ::((..VGHH%>

KE}"2 LLF2 $

.C $/11!2 '3W&<Gu{{1~.!3&IG&WG&&t5ZZ3[[F{{55#||77? w!$''ri   c                 0    U R                  USSU-   5        g )N  IndentationError: 	add_issue)r   r7  r   s      rh   r$  "ErrorFinder._add_indentation_error  s    w%9G%CDri   c                 0    U R                  USSU-   5        g )N  SyntaxError: r<  )r   rc   r   s      rh   r   ErrorFinder._add_syntax_error  s    tS/G";<ri   c                 `    UR                   S   nX#U4nU R                  R                  XE5        g )Nr   )r   r  r   )r   rc   coder   liner
  s         rh   r=  ErrorFinder.add_issue  s0     ~~a t$##D/ri   c                     U R                   R                  5         U R                  R                  5        H+  u  pnU R                  R                  [        X1U5      5        M-     g r   )r  r   r  valuesissuesr   r   )r   rD  r   rc   s       rh   r   ErrorFinder.finalize  sI    #'#3#3#:#:#<D4KKuT9: $=ri   )r  r  r  r2   )r   r   r   r   __doc__r   r  r  r   r  r5  r$  r   r=  r   r  __classcell__r  s   @rh   r  r  {  sK    1
$# 6 6.'(RE=0; ;ri   r  c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )IndentationRulei  r:  c                 ,   > [         TU ]  X5      nSU-   $ )Nr;  )r  _get_messager   r   rc   r  s      rh   rQ  IndentationRule._get_message  s    '&w5#g--ri   r  r   r   r   r   rD  rQ  r  rL  rM  s   @rh   rO  rO    s    D. .ri   rO  r   r   c                   $    \ rS rSrSrS rS rSrg)_ExpectIndentedBlocki  zexpected an indented blockc                 Z    UR                  5       n[        UR                  5       5      S   $ )NrK   )r.  r4   r/  )r   rc   r6  s      rh   get_node_ExpectIndentedBlock.get_node  s)    !!#D&&()"--ri   c                 :    UR                   S   R                  S:H  $ )NrK   rl   rn   r   s     rh   is_issue_ExpectIndentedBlock.is_issue  s    }}R %%22ri   r  Nr   r   r   r   r   rX  r[  r  r  ri   rh   rV  rV    s    *G.3ri   rV  c                       \ rS rSr\rSrg)ErrorFinderConfigi  r  N)r   r   r   r   r  normalizer_classr  r  ri   rh   r_  r_    s    "ri   r_  c                   ,   ^  \ rS rSrSrU 4S jrSrU =r$ )
SyntaxRulei  r@  c                    > [         TU ]  X5      nSU;  a*  [        U R                  R                  U5      (       a  SU-   nSU-   $ )Nzf-stringr,  rA  )r  rQ  r   _normalizerr2   rR  s      rh   rQ  SyntaxRule._get_message  sH    '&w5g%"4#3#3#;#;TBB"W,G((ri   r  rT  rM  s   @rh   rb  rb    s    D) )ri   rb  c                   (    \ rS rSrSrSrS rS rSrg)_InvalidSyntaxRulei  r+  zf-string: invalid syntaxc                 "    UR                  5       $ r   )r.  r   s     rh   rX  _InvalidSyntaxRule.get_node  s    !!##ri   c                     UR                  5       R                  S:g  nU(       a?  [        U R                  R                  U5      (       a  U R                  XR                  S9  g U$ )Nr'  r   )r.  r[   r   rd  r2   r=  fstring_message)r   rc   errors      rh   r[  _InvalidSyntaxRule.is_issue  sR    ""$))\9"4#3#3#;#;TBBNN4)=)=N> Lri   r  N)	r   r   r   r   r   rl  rX  r[  r  r  ri   rh   rg  rg    s    G0O$	ri   rg  rI   )ra   c                   $    \ rS rSrSrS rS rSrg)_AwaitOutsideAsynci)  z'await' outside async functionc                 T    U R                   R                  R                  5       (       + $ r   )rd  r  r   r   r6  s     rh   r[  _AwaitOutsideAsync.is_issue-  s     ##++<<>>>ri   c                     UR                   $ r   r   r   s     rh   get_error_node!_AwaitOutsideAsync.get_error_node0  s    {{ri   r  N)r   r   r   r   r   r[  rv  r  r  ri   rh   rp  rp  )  s    .G?ri   rp  breakc                       \ rS rSrSrS rSrg)_BreakOutsideLoopi5  z'break' outside loopc                     SnU R                   R                  R                   H  nUR                  S;   d  M  SnM     U(       + $ )NFr   r
   T)rd  r  r   r[   )r   r6  in_loopblocks       rh   r[  _BreakOutsideLoop.is_issue9  s?    %%--44Ezz77 5 {ri   r  Nr   r   r   r   r   r[  r  r  ri   rh   rz  rz  5  s    $Gri   rz  continuec                   "    \ rS rSrSrSrS rSrg)_ContinueChecksiA  z'continue' not properly in loopz0'continue' not supported inside 'finally' clausec                 ~   SnU R                   R                  R                   H  nUR                  S;   a  SnUR                  S:X  d  M'  UR                  S   nUS:X  d  M>  UR
                  UR
                  :  d  MZ  U R                   R                  S:  d  Mv  U R                  XR                  S9    g   U(       d  gg )	NFr|  Tr   finallyr#   rk  )	rd  r  r   r[   r]   r   r2   r=  message_in_finally)r   r6  r}  r~  
last_blocks        rh   r[  _ContinueChecks.is_issueF  s    %%--44Ezz77zzZ'"^^B/
)+)=)==((0069NN41H1HNI  5  ri   r  N)r   r   r   r   r   r  r[  r  r  ri   rh   r  r  A  s    /GKri   r  fromc                   $    \ rS rSrSrS rS rSrg)_YieldFromCheckiX  z"'yield from' inside async functionc                 .    UR                   R                   $ r   ru  rr  s     rh   rX  _YieldFromCheck.get_node\  s    {{!!!ri   c                     UR                   R                  S:H  =(       a$    U R                  R                  R	                  5       $ )N	yield_arg)r   r[   rd  r  r   rr  s     rh   r[  _YieldFromCheck.is_issue_  s6    {{;. <  ((99;	<ri   r  Nr]  r  ri   rh   r  r  X  s    2G"<ri   r  r   c                   "    \ rS rSrSrSrS rSrg)_NameChecksid  zcannot assign to __debug__zcannot assign to Nonec                     U R                   R                  R                  U5        UR                  S:X  a  UR	                  5       (       a  gg g )N	__debug__T)rd  r  r   ra   r   rr  s     rh   r[  _NameChecks.is_issuei  sA      ))$/::$););)=)= *>$ri   r  N)r   r   r   r   r   message_noner[  r  r  ri   rh   r  r  d  s    *G*Lri   r  r@   c                   D    \ rS rSr\R
                  S:  a  SrOSrS rSrg)_StringChecksip  r*   z0bytes can only contain ASCII literal characters.z/bytes can only contain ASCII literal charactersc                    UR                   R                  5       nSU;   a"  [        S UR                   5       5      (       a  gSU;  a  UR	                  5       nSU;   a"  UR                  S5      n[        R                  nO[        R                  n [        R                  " 5          [        R                  " S5        U" U5        S S S 5        g g ! , (       d  f       g = f! [         a&  nU R                  US[        U5      -   S9   S nAg S nAf[         a&  nU R                  US	[        U5      -   S9   S nAg S nAff = f)
Nbc              3   H   #    U  H  n[        U5      S :  d  M  Uv   M     g7f)   N)ord)r   cs     rh   r   )_StringChecks.is_issue.<locals>.<genexpr>z  s     >:aQ#:s   "	"Trzutf-8ignorez(unicode error) rk  z(value error) )string_prefixlowerr   ra   _get_payloadencodecodecsescape_decodeunicode_escape_decodewarningscatch_warningsfilterwarningsUnicodeDecodeErrorr=  rb   
ValueError)r   r6  r  payloadfunces         rh   r[  _StringChecks.is_issuew  s   **002->4::>>>m# '')Gm#!..1++33H,,.++H5M /. $ /. & Jt-?#a&-HI Ht-=A-FGHsB   C! 'CC! 
CC! C! !
D?+DD?D::D?r  N)	r   r   r   r   sysr	  r   r[  r  r  ri   rh   r  r  p  s     
'!DCHri   r  *c                       \ rS rSrSrS rSrg)
_StarChecki  z"named arguments must follow bare *c                 "   UR                   nUR                  S:X  an  U(       af  UR                  UR                  R                  U5      S-   S  nU Vs/ s H   nUS;  d  M  UR                  (       a  M  UPM"     nn[        U5      S:H  $ g g s  snf )N
parametersr'   ),r0   r   )r   r[   r]   index
star_countr^   )r   r6  r   afterrp   s        rh   r[  _StarCheck.is_issue  s    ;;,&6OOFOO$9$9$$?!$C$DEE(- JuZ/ 8=8H8H E Ju:?"	 ,2&Js   
B!B4Br  Nr  r  ri   rh   r  r    s    2G#ri   r  r)   c                       \ rS rSrSrS rSrg)_StarStarChecki  z3dict unpacking cannot be used in dict comprehensionc                     UR                   R                  S:X  a<  UR                  5       R                  5       nUS L=(       a    UR                  [        ;   $ g )Nr"   )r   r[   get_next_siblingru   )r   r6  r   s      rh   r[  _StarStarCheck.is_issue  sJ    ;;//,,.??AH4'LHMM_,LL 0ri   r  Nr  r  ri   rh   r  r    s    
 DGMri   r  r8   returnc                   (    \ rS rSrSrSrS rS rSrg)_ReturnAndYieldChecksi  z&'return' with value in async generatorz'yield' inside async functionc                     UR                   $ r   ru  rr  s     rh   rX  _ReturnAndYieldChecks.get_node      {{ri   c                    U R                   R                  R                  R                  S:w  a-  U R	                  U R                  U5      SUR                  -  S9  g U R                   R                  R                  5       (       aj  [        U R                   R                  R                  R                  5       5      (       a-  UR                  S:X  a  UR                  R                  S:X  a  gg g g g )Nr   z'%s' outside functionrk  r  return_stmtT)rd  r  rc   r[   r=  rX  ra   r   r   iter_yield_exprsr   rr  s     rh   r[  _ReturnAndYieldChecks.is_issue  s    ##((--:NN4==.8ORVR\R\8\N]%%6688((0055FFHIIzzX%$++*:*:m*K +L% J 9ri   r  N)	r   r   r   r   r   message_async_yieldrX  r[  r  r  ri   rh   r  r    s     7G9ri   r  rB   c                   $    \ rS rSrSrS rS rSrg)_BytesAndStringMixi  z&cannot mix bytes and nonbytes literalsc                 ^    UR                   S:X  a  gSUR                  R                  5       ;   $ )NrY   Fr  )r[   r  r  )r   r@   s     rh   _is_bytes_literal$_BytesAndStringMix._is_bytes_literal  s+    ;;)#f**00222ri   c                     UR                   S   nU R                  U5      nUR                   SS   H  nX0R                  U5      :w  d  M    g   g )Nr   r'   T)r]   r  )r   rc   rf   first_is_bytesr@   s        rh   r[  _BytesAndStringMix.is_issue  sI    a //6mmAB'F!7!7!?? (ri   r  N)r   r   r   r   r   r  r[  r  r  ri   rh   r  r    s     7G3
ri   r  import_as_namesc                       \ rS rSrSrS rSrg)_TrailingImportCommai  z:trailing comma not allowed without surrounding parenthesesc                 h    UR                   S   S:X  a  UR                  R                   S   S:w  a  gg g )NrK   r  r0   T)r]   r   r   s     rh   r[  _TrailingImportComma.is_issue  s5    ==#(<(<R(@C(G )H#ri   r  Nr  r  ri   rh   r  r    s     KGri   r  ry   c                       \ rS rSrSrS rSrg)_ImportStarInFunctioni  z%import * only allowed at module levelc                 t    UR                  5       =(       a"    U R                  R                  R                  S L$ r   )is_star_importrd  r  r   r   s     rh   r[  _ImportStarInFunction.is_issue  s.    ""$\)9)9)A)A)P)PX\)\\ri   r  Nr  r  ri   rh   r  r    s    5G]ri   r  c                       \ rS rSrSrS rSrg)_FutureImportRulei  z?from __future__ imports must occur at the beginning of the filec                    [        U5      (       a  [        U5      (       d  gUR                  5        H  u  p#UR                  n[	        [
        5      nU R                  R                  S:  a  UR                  S5        US:X  a  U R                  USS9  Mc  US:X  a  SnU R                  XS9  M|  XE;  d  M  S	U-  nU R                  XS9  M     g g )
NTr$      annotationsbracesznot a chancerk  barry_as_FLUFLz-Seriously I'm not implementing this :) ~ Davez future feature %s is not defined)
r|   r   	get_pathsra   r4   ALLOWED_FUTURESrd  r2   r   r=  )r   rc   	from_namefuture_namer   allowed_futuresmr   s           rh   r[  _FutureImportRule.is_issue  s    T""*400*...*:&	"(("&"7##++v5#**=98#NN4N@--GANN4N30@4GGNN4N9 +;	 #ri   r  Nr  r  ri   rh   r  r    s    OG:ri   r  rR   c                       \ rS rSrSrS rSrg)_StarExprRulei  z2iterable unpacking cannot be used in comprehensionc                 Z   S nU R                   R                  S:  a  UR                  nO[        U5      nUR                  / [
        QSP7;  a4  UR                  S:X  a  UR                  S   S:w  d  U R                  USS9  g U" U5      (       a<  U R                   R                  S:  a  U R                  US	S9  g U R                  USS9  g UR                  R                  S
:X  aF  UR                  R                  S   R                  [        ;   a  U R                  XR                  S9  g g g )Nc                     U R                   bF  U R                   n U R                  S:X  a  gU R                  / [        QSP7;  a  gU R                   b  MF  g)Ndel_stmtTr    F)r   r[   r   r   s    rh   check_delete_starred4_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 hererk  zcannot delete starredr   r'   )
rd  r2   r   r   r[   r   r]   r=  ru   message_iterable_unpacking)r   rc   r  ancestors       rh   r[  _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&++>t-L-LM ? /ri   r  N)r   r   r   r   r  r[  r  r  ri   rh   r  r    s    !UNri   r  )typesc                       \ rS rSrS rSrg)_StarExprParentRulei!  c                   ^ U4S jmT" XR                   5      (       a  UR                   Vs/ s H  o"S:w  d  M
  UPM     nnU Vs/ s H  o"R                  S:X  d  M  UPM     nn[        U5      S:  a3  U R                  R
                  S:  a  SnOSnU R                  US   US9  g U(       a1  UR                  US	   5      nUS
:  a  SnU R                  US	   US9  g g g g s  snf s  snf )Nc                    > Uc  gUR                   nUS:X  a  gUS:X  a&  U R                  UR                  S   R                  :  $ T" XR                  5      $ )NFrL   r   rK   )r[   r   r]   r   )rc   r  rd   r   s      rh   r   3_StarExprParentRule.is_issue.<locals>.is_definition$  sW    MME	!#~~(9(9"(=(G(GGG 77ri   r  rR   r'   r   z%two starred expressions in assignmentz*multiple starred expressions in assignmentrk  r      z1too many expressions in star-unpacking assignment)r   r]   r[   r^   rd  r2   r=  r  )r   rc   r  r
  rX   r   countr   s          @rh   r[  _StarExprParentRule.is_issue#  s    	8 {{++#}}9}!SA}D9"&@$Q&&K*?q$G@7|a##++f4EGJGwqz7;

71:.C<QGNN71:wN?    ,9@s   	C!C!C&C&r  Nr   r   r   r   r[  r  r  ri   rh   r  r  !  s    @ri   r  r   c                   $    \ rS rSrSrS rS rSrg)_AnnotatorRuleiA  zillegal target for annotationc                     UR                   $ r   ru  r   s     rh   rX  _AnnotatorRule.get_nodeG  r  ri   c                    S nUR                   R                  S   n[        U5      n UR                  nSU;   d  UR                  S:X  a  US   S:X  a  SnOUR                  S:X  a  US   S:X  a  SnUS   nUcF  UR                  S	:X  d5  UR                  S
;   a#  WR                  S:X  a  UR                  S   S:w  d  gg g SnU R                  UR                   Xb-  S9  g ! [         a     Ntf = f)Nr   r  r    r/   r1   r3   r4   rK   r   rF   rL   Tz,only single target (not %s) can be annotatedrk  )r   r]   r`   r[   r~   r=  )r   rc   rd   lhsr]   rL   r   s          rh   r[  _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+r  Nr]  r  ri   rh   r  r  A  s     .G@ri   r  r   c                       \ rS rSrS rSrg)_ArgumentRuleif  c                    UR                   S   nU R                  R                  S:  a  [        U5      nUR                   S   S:X  an  UR                  S:w  a^  UR                  S:X  a   U R                  R                  S:  a  SnO"SnOU R                  R                  S:  a  S	nOSnU R                  X#S
9  [        U5      (       a,  UR                  R                  S:X  a  U R                  USS
9  g g g )Nr   r#   r'   =r   r   z lambda cannot contain assignmentz=expression cannot contain assignment, perhaps you meant "=="?zkeyword can't be an expressionrk  r  r+  )r]   rd  r2   r`   r[   r=  r   r   )r   rc   rf   r   s       rh   r[  _ArgumentRule.is_issueh  s    a ##f,"5)E==s"uzzV';zzY&##++f4@G]G ##++f4>G]GNN5N2%d++0@0@J0NNN4)9N: 1O+ri   r  Nr  r  ri   rh   r  r  f  s    ;ri   r  r   c                       \ rS rSrSrS rSrg)_NonlocalModuleLevelRulei  z0nonlocal declaration not allowed at module levelc                 F    U R                   R                  R                  S L $ r   )rd  r  r   r   s     rh   r[  !_NonlocalModuleLevelRule.is_issue  s    ''66$>>ri   r  Nr  r  ri   rh   r  r    s    @G?ri   r  arglistc                   *    \ rS rSr\S 5       rS rSrg)_ArglistRulei  c                 :    U R                   R                  S:  a  gg)Nr  z?Generator expression must be parenthesized if not sole argumentz*Generator expression must be parenthesized)rd  r2   r   s    rh   r   _ArglistRule.message  s    ##f,T?ri   c                    [        5       nSnSnUR                   GHF  nUS:X  a  M  UR                  S:X  a  UR                  S   n[        U5      (       a  [	        UR                  5      S:  a    gUS;   a&  US:X  a  U(       a  S	nU R                  XWS
9  M|  M~  SnM  SnUR                  S:X  ay  UR                  U;   aK  SnU R                  R                  S:  a  USR                  UR                  5      -  nU R                  XgS
9  M  UR                  UR                  5        GM  GM  U(       a  SnU R                  XWS
9  GM+  U(       d  GM5  SnU R                  XWS
9  GMI     g )NFr  r   r   r!   T)r  r)   r  z>iterable argument unpacking follows keyword argument unpackingrk  r   zkeyword argument repeatedr   z: {}z6positional argument follows keyword argument unpackingz,positional argument follows keyword argument)setr]   r[   r   r^   r=  ra   rd  r2   formatadd)r   rc   arg_setkw_onlykw_unpacking_onlyr   rf   r   s           rh   r[  _ArglistRule.is_issue  s=   %!H3}}
* ))!,-h77C<NRS<SK'|,'KG NN8NE	 - -1)"GzzV+ ;;'1&AG#//776A '6==+E E NN5NB#KK4 , %VGNN8N=WLGNN8N=M &ri   r  N)r   r   r   r   propertyr   r[  r  r  ri   rh   r  r    s    @ @*>ri   r  r  r   c                       \ rS rSrSrS rSrg)_ParameterRulei  z-non-default argument follows default argumentc                    [        5       nSnSn[        U5       H  nUR                  S:X  a  UR                  S:X  a  SnSnM)  UR                  R                  U;   a2  SnU R                  UR                  XeR                  R                  -  S9  UR                  UR                  R                  5        U(       a  M  UR                  c  UR                  (       d  U(       a    gM  UR                  (       a  SnSnM  SnM     g )NFr:   r  Tz.duplicate argument '%s' in function definitionrk  )	r  r   r[   ra   r   r=  r  defaultr  )r   rc   param_namesdefault_only	star_seenpr   s          rh   r[  _ParameterRule.is_issue  s    e	d#Avv#77c> $I#(Lvv||{*Jqvvw/EFOOAFFLL)999$Q\\## $\\ $I#(L#'L) $ri   r  Nr  r  ri   rh   r#  r#    s     >G(ri   r#  r   c                       \ rS rSrSrS rSrg)_TryStmtRulei  zdefault 'except:' must be lastc                     S nUR                   SS S2    H3  nUS;   a    g US:X  a  UnM  Uc  M  U R                  X R                  S9  M5     g )Nr$   )elser  exceptrk  )r]   r=  r   )r   r   default_exceptexcept_clauses       rh   r[  _TryStmtRule.is_issue  sS    %..qt!t4M 33(!.+~||D 5ri   r  Nr  r  ri   rh   r,  r,    s    .GEri   r,  rY   c                   @    \ rS rSrSrSrSrSrS rS r	S r
SS	 jrS
rg)_FStringRulei  Nz3f-string expression part cannot include a backslashz'f-string: expressions nested too deeplyzAf-string: invalid conversion character: expected 's', 'r', or 'a'c                 B    U R                  UR                  SS  U5        g r   _check_fstring_contentsr]   )r   format_specdepths      rh   _check_format_spec_FStringRule._check_format_spec  s    $$[%9%9!"%=uEri   c                 4   US:  a  U R                  XR                  S9  UR                  S   nSUR                  5       ;   a  U R                  X0R                  S9  UR                  S   nUR
                  S:X  a   UR                  S:X  a  UR                  S   nOUnUR
                  S:X  a8  UR                  S   nUR                  S	;  a  U R                  X`R                  S9  UR                  S
   nUR
                  S:X  a  U R                  XrS-   5        g g )Nr!   rk  r'   r*  r:   r  r$   fstring_conversion)sr  ar   fstring_format_spec)	r=  message_nestedr]   get_codemessage_exprr[   ra   message_conversionr:  )r   fstring_exprr9  rQ   
children_2
conversionr   r8  s           rh   _check_fstring_expr _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t-D-DE"++B/44##K; 5ri   c                 @    U R                  UR                  SS 5        g )Nr'   rK   r6  )r   rY   s     rh   r[  _FStringRule.is_issue  s    $$W%5%5a%;<ri   c                 \    U H&  nUR                   S:X  d  M  U R                  X25        M(     g )NrE  )r[   rH  )r   r]   r9  fstring_contents       rh   r7  $_FStringRule._check_fstring_contents  s(    'O##~5((@  (ri   r  )r   )r   r   r   r   _fstring_grammarrC  rA  rD  r:  rH  r[  r7  r  r  ri   rh   r4  r4    s.    HL>N\F<,=Ari   r4  c                       \ rS rSrSS jrSrg)_CheckAssignmentRulei  c                 
   S nUR                   nUS:X  a  SnGOUS:X  Ga  UR                  S S u  px[        U5      nUGcu  UR                   S:X  aW  U R                  R                  S:  a  SnGO:UR                  S   S	:X  a"  U R                  R                  S
:  a  SnGO	SnGOSnGOUS:X  aF  US:X  a@  U R                  R                  S:  a  SnGOU R                  R                  S
:  a  SnGOSnGOUS:X  a;  [        UR                  5      S:  a"  U R                  R                  S:  a  SnGOxSnGOtUS;   a{  UR                   S:X  a  SnGOZUR                   S:X  aE  U(       a  US:X  a  SnOUS:X  a  SnUR                  S S S2    H  n	U R                  XX45        M     GOU R                  XX45        GOUS:X  aI  UR                  S:X  a  SnGOU R                  R                  S:  a  SnGO[        UR                  5      nGOUS:X  a2  UR                  S:X  a   U R                  R                  S
:  a  SnGOnSnGOjUS:X  a  SnGO`US;   a  SnGOVUS:X  a  S n
U R                  XS!9  GO=US":X  a  S#nGO3US$;   a  UR                  S%   S&:X  a  S'nGOUR                  S(   S):X  a"  U R                  R                  S
:  a  SnGOS*nGOUR                  S+   nUR                   S,:X  d   eUR                  S%   S:X  a  S-nGOU(       a  UR                  S%   S:X  a  S.nGOU(       a  UR                  S%   S/:X  a  S0nGOmUS1:X  a"  U R                  R                  S:  a  SnGOIS2nGOEUS3;   a-  UR                  S S S2    H  n	U R                  XX45        M     GOS4U;   a  US5:w  d  S6U;   d  US7;   a   U R                  R                  S
:  a  SnOS*nOUS5:X  a  U(       a.  U R                  R                  S8:  a  S9nOU R                  US:S!9  OU R                  R                  S8:  a  UR                  nO[        U5      nUR                   [        ;  a;  U(       d4  UR                   S:X  a  UR                  S%   S:X  d  S;n
U R                  XS!9  U R                  UR                  S   5        UbW  U(       a  S<U-  n
O:U R                  R                  S:  a  S=OS>nS?R                  X(       a  S@OSAU/5      n
U R                  XS!9  g g )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 possiblerk  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\   rd  r2   r^   _check_assignmentra   rb   r=  r   r   r   join)r   rc   is_deletionis_namedexpris_aug_assignrm  rd   rf   rg   rp   r   rL   r  rS  s                 rh   rV  &_CheckAssignmentRule._check_assignment  s   		IEf_ MM"1-ME+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%9E 225|c &: ..vL`izzW$*!!))F2!DJJj zzU"##++g5&E&El" E55El"CGNN4N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+&&u<W ,o%;"6E!,,'''1"$k!##++v5%ENN41TNU##++v5#{{H5d;H==(::=!)&!8X=N=Nq=QUX=XTGNN4N9""4==#34EM$($4$4$<$<v$E8((FHV[#\]NN4N1 ri   r  N)FFF)r   r   r   r   rV  r  r  ri   rh   rQ  rQ    s    C2ri   rQ  r   c                       \ rS rSrSrS rSrg)_CompForRulei  z>asynchronous comprehension outside of an asynchronous functionc                     UR                   S   nUR                  S:w  a  U R                  U5        UR                  R                   S   S:H  =(       a)    U R                  R
                  R                  5       (       + $ )Nr'   	expr_listr   async)r]   r[   rV  r   rd  r  r   )r   rc   r_  s      rh   r[  _CompForRule.is_issue  sh    MM!$	>>[(""9-{{##A&'1 @$$,,==??	@ri   r  Nr  r  ri   rh   r]  r]    s    NG@ri   r]  r   c                   (    \ rS rSrSrS\-   rS rSrg)_ExprStmtRulei  z+illegal expression for augmented assignmentz'{target}' is an c           	         UR                   S   nUS:g  =(       a    UR                  S:g  nU R                  R                  S::  d  U(       d(  UR                   S SS2    H  nU R	                  XCS9  M     U(       a  [        UR                   S   5      nUR                  S	:X  dM  UR                  S
;   a>  UR                   S   R                  S:X  a!  UR                   S   R                   S   S:w  a  gU R                  R                  S::  a  gU R                  UU R                  R                  [        UR                   S   U R                  R                  5      S9S9  g g )Nr'   r  r   r#   r   r!   )rZ  r   r   rF   rL   rK   r/   FT)targetrk  )
r]   r[   rd  r2   rV  r`   r=  extended_messager  r_   )r   rc   	augassignrZ  before_equalre  s         rh   r[  _ExprStmtRule.is_issue  s9   MM!$	!S(JY^^{-J##v-] $er!e 4&&|&Q !5 #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   r  N)r   r   r   r   r   rf  r[  r  r  ri   rh   rc  rc    s    ;G*W4ri   rc  	with_itemc                       \ rS rSrS rSrg)_WithItemRulei  c                 @    U R                  UR                  S   5        g Nr!   )rV  r]   )r   rj  s     rh   r[  _WithItemRule.is_issue  s    y11!45ri   r  Nr  r  ri   rh   rl  rl    s    6ri   rl  r  c                       \ rS rSrS rSrg)_DelStmtRulei  c                 d    UR                   S   nUR                  S:w  a  U R                  USS9  g g )Nr'   r_  T)rX  r]   r[   rV  )r   r  rp   s      rh   r[  _DelStmtRule.is_issue  s6    !!!$::$""5d"; %ri   r  Nr  r  ri   rh   rq  rq    s    <ri   rq  r_  c                       \ rS rSrS rSrg)_ExprListRulei  c                 X    UR                   S S S2    H  nU R                  U5        M     g rn  )r]   rV  )r   r_  rQ   s      rh   r[  _ExprListRule.is_issue  s)    &&ss+D""4( ,ri   r  Nr  r  ri   rh   rv  rv    s    )ri   rv  r   c                       \ rS rSrS rSrg)_ForStmtRulei  c                 f    UR                   S   nUR                  S:w  a  U R                  U5        g g )Nr'   r_  rs  )r   r   r_  s      rh   r[  _ForStmtRule.is_issue  s1    %%a(	>>[(""9- )ri   r  Nr  r  ri   rh   rz  rz    s    .ri   rz  namedexpr_testc                       \ rS rSrS rSrg)_NamedExprRulei  c                 0  ^	^
 UR                   S   nS nU" U5      (       a  SnU R                  XS9  [        5       m	U	4S jm
U
4S jnU" U5      nU(       a  U R                  R                  R
                  R                  S:X  a  SnU R                  XS9  T	 Vs/ s H   owR                  S	:X  d  M  UR                  PM"     nnUR                  S	:X  a.  UR                  U;   a  S
UR                  -  nU R                  XS9  U R                  USS9  g s  snf )Nr   c                 x     U R                   nUc  U$ UR                  S:X  a  UR                  S   U :X  a  U$ Un M:  )Nr   r$   r   )rc   r   s     rh   search_namedexpr_in_comp_for=_NamedExprRule.is_issue.<locals>.search_namedexpr_in_comp_for  sC    >!M;;/1fooa6HD6P!M ri   zKassignment expression cannot be used in a comprehension iterable expressionrk  c                    > U R                   S:X  a  U nOU R                   S:X  a  U R                  S   nTR                  [        W5      5        g )Nr   r   r'   )r[   r]   r   r   )r   compr   s     rh   process_comp_for1_NamedExprRule.is_issue.<locals>.process_comp_for  sB    }}/*,((+OO:4@Ari   c                    > Sn U R                  SS5      n U c   U$ U R                   H#  nUR                  [        ;   d  M  T" U5        Sn  O   MM  )NFTr   r"   )r   r]   r[   ru   )rc   has_ancestorsrp   r  s      rh   search_all_comp_ancestors:_NamedExprRule.is_issue.<locals>.search_all_comp_ancestors  s_    !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)rY  )	r]   r=  r4   rd  r  rc   r[   ra   rV  )r   r}  rf   r  r   r  
search_allrQ   namelistr   r  s            @@rh   r[  _NamedExprRule.is_issue  s	   ''*	 (77 dGNN>N; 6	B	! /~>
'',,11Z?;~?/7Oxt99;N


xHOzzV#x(?
@BG++N~?u48 Ps   D2Dr  Nr  r  ri   rh   r  r    s    =9ri   r  )Fr  r  r  r1  
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  rO  register_rulerV  r_  rb  rg  rp  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r#  r,  r4  rQ  r]  rc  rl  rq  rv  rz  r  r  ri   rh   <module>r     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   