
    f                     P   U d dl Z d dlmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZ dZdZd	Zd
ZdZdZdZdZdZeedf   ed<   eez  ZdZdZ G d d      Z G d de      Z G d de      Z G d de      Z G d de      Zd Z  G d d e      Z! G d! d"e      Z" G d# d$e	      Z#y)%    N)contextmanager)Tuple)ErrorFinderErrorFinderConfig)Rule)FlowScope)import_nameimport_from)classdeffuncdefif_stmt
while_stmtfor_stmttry_stmt	with_stmt)termr   power)([{))]})+-~)*r   r   **/z//@)z<<z>>|&^)=%z-><>==z>=z<=z<>!=z+=z-=z*=z@=z/=z%=z&=z|=z^=z<<=z>>=z**=z//=._NEEDS_SPACE)dictorsetmakerargument)	subscriptsubscriptlistsliceopc                   R    e Zd Z e       Z e       Z e       Z e       Z e       Zy)IndentationTypesN)	__name__
__module____qualname__objectVERTICAL_BRACKETHANGING_BRACKET	BACKSLASHSUITEIMPLICIT     L/var/www/cvtools/html/venv/lib/python3.12/site-packages/parso/python/pep8.pyr2   r2      s&    xhOIHExHr=   r2   c                   8    e Zd Zej                  ZddZd Zd Zy)IndentationNodeNc                 .    |x| _         | _        || _        y N)bracket_indentationindentationparent)selfconfigrD   rE   s       r>   __init__zIndentationNode.__init__(   s    6AA 4#3r=   c                 4    d| j                   j                  z  S )Nz<%s>)	__class__r3   )rF   s    r>   __repr__zIndentationNode.__repr__,   s    ////r=   c                 j    | }|/|j                   t        j                  k(  r|S |j                  }|.y y rB   )typer2   r:   rE   )rF   ns     r>   get_latest_suite_nodez%IndentationNode.get_latest_suite_node/   s4    mvv)///A	 mr=   rB   )	r3   r4   r5   r2   r:   rM   rH   rK   rO   r<   r=   r>   r@   r@   %   s    !!D0r=   r@   c                       e Zd ZddZy)BracketNodec                    || _         |}|}|j                  t        j                  k(  r|j                  }	 t        |d      r$|j                  |j                   j                  k7  rn=|j                         }t        |t              r||j                   k7  rn|j                  }m|j                  }|j                         }d|j                  v sd|j                  v r>||j                  z   | _        ||j                  z   | _
        t        j                  | _        nU|j                   d   }	d|j                  v rd | _
        n
d|	z  | _
        | j                  | _        t        j"                  | _        |ri|j                  t        j$                  k(  rL| j                  ||j                  z   k(  r0| xj                  |j                  z  c_
        | j                  | _        || _        y )Nleaf
   	 )rS   rM   r2   r;   rE   hasattrlineget_previous_leaf
isinstancerQ   rD   get_next_leafprefix#closing_bracket_hanging_indentationrC   r8   end_posr7   r:   )
rF   rG   rS   rE   in_suite_introducerprevious_leafrN   parent_indentation	next_leafexpected_end_indents
             r>   rH   zBracketNode.__init__9   s   	 66%...Aq&!m&8&8AFFKK&G);;=Ma-!&&1HA  ]]&&(	9###ty/?/?'? (:<<(=D$1F4F4FFD(88DI #',,q/v)))#' #&)<#< '+'7'7D$(99DI6;;2B2H2H#H$$(:V=O=O(OO 2 22'+'7'7D$r=   NF)r3   r4   r5   rH   r<   r=   r>   rQ   rQ   8   s    1r=   rQ   c                   "     e Zd ZdZ fdZ xZS )ImplicitNodezk
    Implicit indentation after keyword arguments, default arguments,
    annotations and dict values.
    c                     t         |   |||       t        j                  | _        |j                         }|dk(  r4d|j                  vr%d|j                  vr| xj                  dz  c_        y y y y )N:rT   rU   rX   )superrH   r2   r;   rM   r]   r^   rD   )rF   rG   rS   rE   rd   rJ   s        r>   rH   zImplicitNode.__init__r   sl    v.$--	&&(	3;4y'7'77D	HXHX<X# =Y7;r=   )r3   r4   r5   __doc__rH   __classcell__rJ   s   @r>   rh   rh   m   s    $ $r=   rh   c                   ,    e Zd Zej                  ZddZy)BackslashNodeNc                 ^   |j                  d      }|n|j                  d   }d|j                  v rd | _        n]|j                  |j                  k(  r||j                  z   | _        n/d|j                  d   dz   z  | _        n||j                  z   | _        | j                  | _        || _        y )N	expr_stmtrW   rX   rV   )search_ancestorchildrenrD   r`   	start_posrC   rE   )rF   rG   rc   containing_leafspacingrE   rr   equalss           r>   rH   zBackslashNode.__init__~   s    #33K@	 ''+Fv)))#'  >>W%6%66'9F<N<N'ND$ (+fnnQ.?!.C'DD$1F4F4FFD#'#3#3 r=   rB   )r3   r4   r5   r2   r9   rM   rH   r<   r=   r>   rp   rp   {   s    %%Dr=   rp   c                 r    | j                   j                  d      xr | j                   j                  d      S )N__)value
startswithendswith)names    r>   _is_magic_namer      s+    ::  &D4::+>+>t+DDr=   c                        e Zd Z fdZe fd       Zed        Zd Zd ZddZ	 fdZ
d Zd	 Zd
 Zd Z fdZ xZS )PEP8Normalizerc                 R   t        |   |i | d | _        d | _        d| _        d| _        d | _        d| _        d| _        d| _	        t        | j                  d      x| _        | _        d| _        d| j                  j                  v rd| _        d| _        y d	| _        d| _        y )
NTr   F )rD   rX   spacesrW   tabs)rk   rH   _previous_part_previous_leaf_on_newline_newline_count_wanted_newline_count_max_new_lines_in_prefix_new_statement_implicit_indentation_possibler@   _config_indentation_tos_last_indentation_tos_in_suite_introducerrD   _indentation_type_wrong_indentation_char)rF   argskwargsrJ   s      r>   rH   zPEP8Normalizer.__init__   s    $)&)""%)"()%".3+ DLLb9	: :$)!$,,***%-D"+/D(%+D"+.D(r=   c              #      K   t         |   |      5  | j                  |      5  d  d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wwrB   )rk   
visit_node_visit_node)rF   noderJ   s     r>   r   zPEP8Normalizer.visit_node   sS     W% 	!!$' 	 	 	 	s/   AA;A	AA	 AAAc              #   0	  K   |j                   }|dv r>|j                         }t        |      dkD  r|d d D ]  }| j                  |dd        n|dk(  rT|j                  }|j                   dk(  rt        d |j                  d dd	   D              rx| j                  |d
d       nc|dk(  rF|j                  D ]5  }|j                   dk(  s|j                  dk(  s#| j                  |dd       7 n|dk(  r|j                  D ]  }|j                   dvrt        |j                        d	kD  r+|j                  d   }|j                  d   }|j                   dk(  sY|j                   dk(  si|j                  dk(  sy| j                  |dd        ny nw|dk(  rr|j                  d   }	|	j                         }
|	j                  }|j                  d      s6|j                  d      s%|s|
|
j                  dvr| j                  |	dd       |t        v r|j                  }|j                  }|j                   dk(  r|j                  j                  |      }|j                  d | D ]  }|g}|j                   d k(  r|j                  d d }d!}|D ]}  }|j                   d"k(  r|sd#}|j                   dk(  r!t        d$ |j                         D              rG|j                   t        v st        |t              rj| j                  |d%d&        n  n |t         v }|t"        v }|rd#| _        n|d'k(  r| j&                  j                   t(        j*                  k(  r| j&                  j                  | _        t-        | j.                  | j&                  j0                  | j.                  j0                  z   | j&                  (      | _        n	|rd#| _        d  |d'k(  rL| j&                  j                   t(        j4                  k(  sJ | j&                  j                  | _        d | _        y |rKd!| _        | j&                  j                   t(        j8                  k(  r| j&                  j                  | _        y y |r"d!| _        |d)v r| j;                         | _        y y y w)*Nr
   rV   i  zMultiple imports on one linelambdefrr   c              3   :   K   | ]  }|j                   d k(    yw)r   N)rM   .0rN   s     r>   	<genexpr>z-PEP8Normalizer._visit_node.<locals>.<genexpr>   s#      5Y9: 67VVv5E 5Ys   rs      i  z,Do not assign a lambda expression, use a defr   keywordexcepti  z1Do not use bare except, specify exception instead
comparison)	atom_exprr   r   trailerr   rM   i  z'Do not compare types, use 'isinstance()
file_inputrT   rU      
rT   rU   i$  zNo newline at end of filesimple_stmtFstringTc              3   2   K   | ]  }t        |        y wrB   )r   r   s     r>   r   z-PEP8Normalizer._visit_node.<locals>.<genexpr>   s     #U!N1$5#Us   i  z&Module level import not at top of filesuiterE   )r   r   )rM   get_defined_nameslen	add_issuerE   anyru   r|   r[   r^   r~   _IMPORT_TYPESindexallr\   r   _IMPLICIT_INDENTATION_TYPES_SUITE_INTRODUCERSr   r   r2   r9   r@   r   rD   r   r:   r   r;   _get_wanted_blank_lines_count)rF   r   typnamesr   rr   childr   atom	endmarkerprevr^   r   moduler   ru   found_docstringcimplicit_indentation_possiblein_introducers                       r>   r   zPEP8Normalizer._visit_node   sP    ii-**,E5zA~!"1I NDNN4.LMNII ~~, 5Y>G>P>PQVRTUVQV>W5Y 2YtS*XYJ d ::*u{{h/FNN5#/bc	d
 L  
::%;;u~~&*..+~~a(<<9,f1D JJ&0NN4.WX
 L b)I..0D%%FOOD)&//$2Gdldjj@T.Ty#/JK-++K ''F{{l*--k:#__Ve4 E %wHzz]2#(>>#2#6&+O% !66X-o$*.66[0 ##Uq?R?R?T#U U$66]2jD6I$tS2Z[! !/2 ),/J(J%11(,D%G^$$))-=-G-GG(,(=(=(D(D%$3%%11DLL4L4LL,,%D!
 +26D/'>((--1A1G1GGGG$($9$9$@$@D!)-D&*27D/$$))-=-F-FF(,(=(=(D(D% G(-D%---1-O-O-Q* . s&   CRRB RR/R?LRc                 v    | j                   |j                  v r!| j                  |dd| j                  z          yy)Ne   zIndentation contains TF)r   r|   r   r   )rF   rx   s     r>   _check_tabs_spacesz!PEP8Normalizer._check_tabs_spaces  s6    ''7==8NN7C)@4CYCY)YZr=   c                 j    | j                   j                         }t        |j                  d u       dz   S )NrV   )r   rO   intrE   )rF   
suite_nodes     r>   r   z,PEP8Normalizer._get_wanted_blank_lines_count!  s1    **@@B
:$$,-11r=   c                    t        | j                  | j                        | _        | j                  }|X| j                  dz
  }||kD  r=|j                  dk7  r.|s3|dk(  rdnd}d|d|}| j                  |||       d | _        nd | _        |s8| j                         }| j                  dz
  }|j                  }	|	dk(  xr |j                  j                  d	k(  xs^ |	d
k(  xs2 |	dk(  xr |j                         dk(  xs |	dk(  xr | j                  dk7  xr# |j                  j                  j                  dk7  }
|
r||k  r|j                  }|j                  }|j                  dk(  r|j                  }|j                  t        |j                  dk(           |k7  r$|dk(  rdnd}d|d|}| j                  |||       d| _        d| _        y )NrV   r   r   i.  i-  z	expected z blank line, found r!   	decoratorclassasyncdef	decoratedr   r   )maxr   r   r   rM   r   r   r|   rE   r]   r   ru   r   )rF   rx   rS   
is_commentwantedblank_linescodemessageactualvalneeds_linesfunc_or_clsr   s                r>   _reset_newlineszPEP8Normalizer._reset_newlines%  s   --t/B/BC 	% ++--1K#		[(@!"(A+33D!;0GNN7D':15D.-1*779F22Q6F**Cs
>t{{//;> =7N Gg~G$*<*<*>%*GGe|F(;(;w(F= kk((--<  v"kk#**::,!LLE >>#ejjG&;"<=L"(A+33D!6+GNN7D':,-D)r=   c                    t         |   |       |j                         D ]4  }|j                  dk(  r n#| j	                  ||j                         |       6 | j                  |       | j	                  ||       | j                  | _        |j                  dk(  | _	        |j                  dk(  rB| j                  j                  t        j                  k(  r| j                  j                  | _        |j                  dk(  r$|j                  j                  t        v rd| _        n|j                  dk(  rd| _        | j                  s| j!                  ||       d| _        || _        |j                  S )Nrx   newlinerj   FelifTr   )rk   
visit_leaf_split_prefixrM   _visit_partcreate_spacing_part_analyse_non_prefixr   r   r   r2   r9   rE   r|   r   r   r   _max_blank_linesr   )rF   rS   partrJ   s      r>   r   zPEP8Normalizer.visit_leafX  sA   4 &&( 	EDyyI%T4#;#;#=tD		E 	  &tT* &*%:%:""ii94 99	!%%**.>.H.HH$($9$9$@$@D!::!1!15G!G(-D%ZZ6!(,D%""  t,$%D!"zzr=   c                 x   |j                   }|j                  }|dk(  ry |dk(  r4|j                  j                  dk(  r| j                  j                  | _        | j                  }|dk(  r|j	                  d      r%|j                  d      r| j                  |dd       n| j                  rOt        j                  d	|      sb|dk(  s]|j	                  d
      r|j                  dk(  s=| j                  |dd       n)t        j                  d|      s| j                  |dd       | j                  ||d       n|dk(  r| j                  | j                         kD  r!| j                  |dd| j                  z         n:|dv r6|j                  j                  j                  dk(  r| j                  |dd       | xj                  dz  c_        |dk(  r|j                  t        j                  k7  r,|j                  t        j                   k7  r| j                  |dd       n|j"                  }| j$                  r6|j                  t        j                   k(  r|| j&                  j"                  z  }t)        | j&                  |||| j                        | _        n| j                  rb|j                   }|j                  t        j                  k(  r4| j*                  j                  dk(  r| j                  j                  | _        | j-                  |      s|j"                  }|dk(  rU| j.                  }		 t1        |      t1        |	j"                        kD  rn&|	j"                  }|	| _        |	|k(  rn|	j                  }	H| j2                  ri|dk(  r|r| j                  |dd        nv||k7  rpt1        | j&                  j"                        d!| j4                  }
| j                  |d"d#|
z          n*|d$v r|j6                  }n|j"                  }| j$                  rI||j9                         j"                  | j&                  j"                  z   k(  r| j                  |d%d&       n||k7  r| j-                  |      s|j                   d'vr|d$v rG|j                  t        j:                  k(  r| j                  |d(d)       n[| j                  |d*d+       nFt1        |      t1        |      k  r|j                  t        j:                  k(  r| j                  |d,d-       n|j                  t        j                  k(  r| j                  |d.d/       n|j                  t        j<                  k(  r| j                  |d0d1       n| j                  |d2d3       n|j                  t        j:                  k(  r| j                  |d4d5       nW|j                  t        j<                  k(  r| j                  |d6d1       n&| j                  |d7d8       n| j?                  ||       | jA                  ||       |r|d9v r|dk7  r|j                  j                  d:k7  rv|tB        v r3tE        | j&                  || j                  | j$                  ;      | _        n|j                  t        j<                  k7  sJ | j                  j                  | _        n_|d<v r[| jF                  rO|j                  j                  tH        v r3|j"                  }tK        | j&                  || j                        | _        |d=v | _        || _        || _&        y )>N
error_leaf,r,   commentz###i
  z'Too many leading '#' for block comment.z#:? z#!)rV   r   i	  z$Block comment should start with '# 'z#:? [^ ]i  z%Inline comment should start with '# 'T)r   r   i/  zToo many blank lines (%s))r   r   r   i0  z*Blank lines found after function decoratorrV   	backslashi  z+The backslash is redundant between bracketsr   #  Trailing whitespacerX   o   z!Indentation is not a multiple of z])}   z+Line with same indent as next logical blockr   |   z1Closing bracket does not match visual indentation{   zCLosing bracket does not match indentation of opening bracket's line   z2Continuation line under-indented for visual indentz   z2Continuation line missing indentation or outdented   xxxy   z3Continuation line under-indented for hanging indent   z1Continuation line over-indented for visual indent   ~   z2Continuation line over-indented for hanging indentz()[]{}
error_node)rE   ra   )r%   rj   )r   r   bom)'r|   rM   rE   r   r}   lstripr   r   rematchrv   r   r   r   r2   r9   r:   rD   r   r   rp   r   r   r   r   r   r   rC   rO   r7   r;   _check_spacing_check_line_length_OPENING_BRACKETSrQ   r   r   rh   _previous_spacing)rF   r   rx   rS   r|   type_r   rD   should_be_indentationrN   ss              r>   r   zPEP8Normalizer._visit_partz  s7   

		L C<DKK,,0@@$($9$9$@$@D!$$I%<<$NN4.WX!!xx/!&!1!1$!7DNNf<TNN4.TUxxU3NN4.UV  $4 @i""T%G%G%IItS*EH[H[*[\))**//;>tS*VW1$Kyy,66699 0 6 66NN4.[\"&"2"2K00TYYBRBXBX5X#t||'?'??,9##44-D) !--Kyy,666++00I=(,(=(=(D(D%**73(,(8(8%I%22A{+c!--.@@!01-5629!HH  &&	)& NN7C9NO$(=='*4<<+C+C'DdF\F\]tS2UXY2YZ~040H0H-040@0@-00[ 668DD"ll66767 tS2_`$(==#66w?DJJ 4E5$~#'990@0Q0Q#Q$(NN(,(+([%& %)NN(,(+)P%& $'{#3c:O6P#P'+yy4D4U4U'U(,,0,/,`)*
 *.6F6P6P)P(,,0,/,`)*
 *.6F6O6O)O(,tS%(H(,,0,/,a)* (,yy4D4U4U'U(,,0,/,_)*
 *.6F6O6O)O(,tS%(H(,,0,/,`)* g.g. Uh&5L+@KK$$4))(3LL$00(,(A(A)% yy$4$=$====(,(=(=(D(D%j T%H%HKK$$(CC**K$0d4+@+@%D! !$CC"!(r=   c           	         |j                   dk(  r|j                  d   dz   }n|j                  d   }|| j                  j                  kD  r|j                  d   | j                  j                  k  rd}|j                   dk(  rN|j
                  dd  j                         }t        |      dk(  r#|j                  d   t        |d         z
  dk  rd}|r/| j                  |dd	|d
| j                  j                  d       y y y y )Nr   rV   Tr   r   H   Fi  zLine too long (z > z characters))	rM   rv   r`   r   max_charactersr|   splitr   r   )rF   r   rx   last_columnreportsplitteds         r>   r   z!PEP8Normalizer._check_line_length'  s    99#..+a/K,,q/K444%%a(DLL,G,GG FyyI%::ab>//1x=A%!\\!_s8A;/??2E"F $,,"="=?  H 5r=   c                 Z     fd} fd}|j                    j                  }||j                  dk(  s|j                  dk(  ry |j                  }dv r j                  |dd       y |dk(  r7t	               j
                  j                  k  r j                  |dd	       y y |d
k(  r ||dd       y t	              dkD  r j                  |dd       y |t        v rd|j                   z  } ||d|       y |t        v rd|j                   z  } ||d|       y |dv s!|dk(  r6|j                  j                  t        vrd|j                   z  } ||d|       y |dk(  r|j                  j                  t        v ry |dv r ||dd       y |dk(  ry |dv r|j                  j                  t        vs |dv r|j                  j                  t        vry |t        v r|j                  j                  dk(  ry |dk(  r|j                  j                  dk(  ry |t        v s|t        v r|dk(  r|j                  j                  dv s|dk(  rg|j                  j                  dv rO|dk(  r|j                  }n|j                  }|j                  d k(  r|j                  r ||d!d"       y  ||d#d$       y |t        v s|t        v r ||d%d&       y |d'k(  s|d'k(  r ||d(d)       y d*}	 ||d+|	       y |d,k(  s|j                  d,k(  r ||d-d.       y  j                   }
|t"        v rT|
j                   k7  rEd/ j$                  j&                  vr-d0 j$                  j&                  vrd1} j                  |d2|       r7|t"        vr.|t"        vr%d*}	|t        v rd|j                   z  } ||d3|       y y y y y )4Nc                  (    r j                   |  S y rB   r   r   rF   r   s    r>   add_if_spacesz4PEP8Normalizer._check_spacing.<locals>.add_if_spaces?  s    %t~~t,, r=   c                  (    s j                   |  S y rB   r  r  s    r>   add_not_spacesz5PEP8Normalizer._check_spacing.<locals>.add_not_spacesC  s    %t~~t,, r=   r   rW      zUsed tab to separate tokensr   i  z)At least two spaces before inline commentr   r   r   rV      zMultiple spaces usedzWhitespace after '%s'   zWhitespace before '%s'   )r   ;rj      )r   r  rj      zmissing whitespace after '%s')r   r   factorr!   r   r%   )r-   paramr     z(Expected spaces around annotation equals   z3Unexpected spaces around keyword / parameter equals   z3Missing whitespace around bitwise or shift operatorr&      z)Missing whitespace around modulo operatorz!Missing whitespace between tokens   r   i  z!Missing whitespace around keywordrT   rU   z>Whitespace before operator doesn't match with whitespace after      )r|   r   rM   r   r   r   spaces_before_commentr  _CLOSING_BRACKETSrE   _POSSIBLE_SLICE_PARENTS_NON_STAR_TYPES_FACTORr+   
annotation_BITWISE_OPERATORr  _ALLOW_SPACEr   r^   )rF   r   rx   r  r  r   r  r   r  message_225prev_spacingr   s   `          @r>   r   zPEP8Normalizer._check_spacing>  s   	-	- ""		\ 9TYY,=V		6>NN7C)FGi6{T\\???w-XY @i'3(=>[1_NN7C)?@((1DJJ>gsG4**2TZZ?gsG4#ts{((0GG2TZZ?gsG4!1!15L!L(w-LM$)9)9)P{*((?T[[%5%5%A!1!1[!@%)=3;4;;#3#37L#L3;4;;+;+;?T+Ts{ $ $zzW,1A1A&w5_`%#Q
 ..$:K2K"M
 S[DCK"7C1\]"EK"7C=)#tyyI'=w-PQ#55<'Fl6H6H,H (;(;(B(BB (;(;(B(BB^GNN7C9d,64|;S"EK 00":TZZ"G%gsG< 1	 <T66r=   c                    |j                   }|dk(  r|j                  dv r|j                         rd}|j                  j                   dk(  r0|j                  j                  |k(  r| j                  |d|dz         y |j                  j                   dk(  r0|j                  j                  |k(  r| j                  |d|dz         y | j                  d	|d
z  |       y y |j                  dk(  rt        |j                  t        t        f      r{|j                  j                   dk7  ra|j                         }|j                   dk7  rA|j                  j                   dk(  r| j                  |dd       y | j                  |dd       y y y y |j                  dk(  rD|j                         j                   dv r| j                  |dd       y | j                  |dd       y |j                  dv r|j                  }|j                  j                  |      }|j                  |dz
     }|j                  |dz      }||fD ]l  }	|	j                   dk(  s|	j                   dk(  s"|	j                  dk(  rd}| j                  |d|        y |	j                  dv sWd }| j                  |d!|        y  y |j                  d"v rm|j                  }|j                   d#k(  rQ|j                  j                   d$k(  r7|j                  d%k(  r| j                  |d&d'       y | j                  |d(d)       y y y |d*k(  rpt        |j                  j                         dd        D ]F  \  }
}t        j                   d+|      j#                  d,      }|j$                  |
z   t'        |      f}| H y |d-k(  r$| j(                  d.k\  r| j                  |d/d0       y y y )1Nr   )lOIz0Do not define %s named 'l', 'O', or 'I' one liner   i  classesfunctioni  i  	variablesrj   r   r   r   i  z%Multiple statements on one line (def)i  z'Multiple statements on one line (colon)r  )r   r   i  zStatement ends with a semicoloni  z+Multiple statements on one line (semicolon))r)   r*   rV   r   Nonez/comparison to None should be 'if cond is None:'i  )TrueFalsezCcomparison to False/True should be 'if cond is True:' or 'if cond:'i  )inisr   not_testr8  i  z&test for membership should be 'not in'i  z+test for object identity should be 'is not'r   z[ \t]*r   r   r   i  Blank line at end of file)rM   r|   is_definitionrE   r   r   add_issuadd_issuer\   r   r	   r]   ru   r   	enumerate
splitlinesr   r   grouprZ   r   r   )rF   rS   r   r   rd   r   r   leftrightr   irZ   rD   rv   s                 r>   r   z"PEP8Normalizer._analyse_non_prefix  sb   ii&=TZZ?:!!#L;;##w.4;;3C3Ct3KNN4g	.AB[[%%38H8HD8PNN4g
.BC**3+0EtL $ ZZ3$++e}5$++:J:Ji:W ..0	>>Y.{{''94y#7^_y#7`a	 / ;X5 ZZ3!!#((,DDtS*KLtS*WXZZ<'J''--d3E&&uqy1D''	2Ee 
99	)TYY&-@zzV+"StS':'88#EtS':
 ZZ<'J,.:3D3D3I3IZ3W::%NN4.VWNN4.[\	 4X.
 H_$TZZ%:%:%<QR%@A 4 hhy$7==a@ IIM3{+;;		
 K""a'tS*EF (  r=   c                    | j                   6| j                   j                  d      y | j                   j                  dk(  ry |j                  d      y |dv rt        |   |||       y t        t
        |   |||       y )Nr   r   )i  i  )r   rt   rM   rk   r   r   )rF   r   r   r   rJ   s       r>   r   zPEP8Normalizer.add_issue  s    *""22<@L""''<7-9:GdD'2 +t.tT7Cr=   rf   )r3   r4   r5   rH   r   r   r   r   r   r   r   r   r   r   r   r   rm   rn   s   @r>   r   r      sq    /,  
 cR cRJ21 f Dk)Z.]=~8GtD Dr=   r   c                       e Zd ZeZ	 	 	 ddZy)PEP8NormalizerConfigNc                 `    || _         ||}|| _        d| _        d| _        || _        || _        y )Nr   F)rD   hanging_indentationr_   break_after_binaryr  r$  )rF   rD   rH  r  r$  s        r>   rH   zPEP8NormalizerConfig.__init__  s>    &&"-#6 350"',%:"r=   )z    NO   r   )r3   r4   r5   r   normalizer_classrH   r<   r=   r>   rF  rF    s    % AE:;	;r=   rF  c                       e Zd ZdZdZd Zy)BlankLineAtEndi  r;  c                      | j                   dk\  S )Nr   )r   )rF   rS   s     r>   is_issuezBlankLineAtEnd.is_issue  s    ""a''r=   N)r3   r4   r5   r   r   rO  r<   r=   r>   rM  rM    s    D)G(r=   rM  )$r   
contextlibr   typingr   parso.python.errorsr   r   parso.normalizerr   parso.python.treer   r	   r   r   r'  r  r%  r(  r+  r*  r+   str__annotations__r   r&  r2   r6   r@   rQ   rh   rp   r   r   rF  rM  r<   r=   r>   <module>rW     s    	 %  > ! ) /; 2! ! 
2- !eCHo 
 ! !< C  f &2/ 2j$; $O 2EL	D[ L	D^;, ;&(T (r=   