
    JG_kZ                        d Z ddlmZmZ ddlmZ ddlmZ ddlm	Z	m
Z
mZmZmZmZmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ e	r9ddlmZ  edeee
f   eee
f   d      Z edeee
f   eee
f   eee
f   ed      Z dedefdZ!dedeeef   fdZ"efdededee   fdZ#dedefdZ$	 d%dedede%deedf   de&dee&ef   fd Z' G d! d"e      Z(efdedede(fd#Z)y$)&zFDefines parsing functions used by isort for parsing import definitions    )OrderedDictdefaultdict)partial)chain)TYPE_CHECKINGAnyDictList
NamedTupleOptionalTuple)warn   )place)parse)FindersManager)DEFAULT_CONFIGConfig)	TypedDictCommentsAboveDictstraightfromCommentsDictr   r   nestedabovecontentsreturnc                     d| v ryd| v ryy)Nz

 )r   s    -/usr/lib/python3/dist-packages/isort/parse.py_infer_line_separatorr%      s    		    raw_linec                     | j                  dd      }|j                  dd      }|j                  dd      }|j                  dd      }|j                  d	d
      }|j                  dd      }|| fS )zrNormalizes import related statements in the provided line.

    Returns (normalized_line: str, raw_line: str)
    zfrom.import zfrom . import zfrom.cimport zfrom . cimport zimport*zimport *z	 .import z
 . import z
 .cimport z . cimport 	 )replace)r'   lines     r$   _normalize_liner-   (   ss    
 N,<=D<<):;D<<	:.D<<\2D<<m4D<<c"D(r&   r,   configc                     |j                   r.| j                         j                         j                  d      ryd| v sd| v sd| v ry| j	                  d      ry| j	                  d      ry	y)
zPIf the current line is an import line it will return its type (from or straight)noqaN
isort:skipisort: skipzisort: splitzimport zcimport r   from r   )
honor_noqalowerrstripendswith
startswith)r,   r.   s     r$   import_typer:   6   se    TZZ\002;;FC		$!6.D:P	0	1		!r&   import_stringc                    | j                  dd      } | j                  dd      } dD ]  }| j                  |d      }  | j                         }dD ]  }||v s|j                  |        dj                  |      } | j                  dd      } | j                  dd      } | j                  dd	      j                  d
d      S )N_importz[[i]]_cimportz[[ci]])\(),r*   )r   importcimport{ {| }|})r+   splitremovejoin)r;   remove_syntaximport_listkeys       r$   _strip_syntaxrO   C   s    !)))W=M!))*h?M. B%--mSAB%%'K, $+s#$ HH[)M!))'9=M!))(J?M  t,44T4@@r&   in_quoteindexsection_comments.needs_importc                    t        |      }d| v sd| v rud}|t        |       k  re| |   dk(  r|dz  }nC|r| ||t        |      z    |k(  r-d}n*| |   dv r| ||dz    }|d	v r|}|d
z  }n| |   }n	| |   dk(  rn|dz  }|t        |       k  red| j                  d      d   v rH|rFd | j                  d      D        D ]+  }|s|j                  d      r|j                  d      r*d}- t        |xs |      |fS )zDetermine if a given line should be skipped.

    Returns back a tuple containing:

    (skip_line: bool,
     in_quote: str,)
    "'r   r?   r    )rV   rU      )"""'''   #;c              3   <   K   | ]  }|j                           y wN)strip).0parts     r$   	<genexpr>zskip_line.<locals>.<genexpr>u   s     >dTZZ\>s   r4   r3   T)boollenrI   r9   )	r,   rP   rQ   rR   rS   should_skip
char_index
long_quoterb   s	            r$   	skip_lineri   R   s2    x.K
d{cTk
3t9$J4'a

Z#h-%?@HL!Hj!Z/!*zA~>
/)H!OJ#J/Hj!S(!OJ 3t9$" djjoa  \>djjo> 	#D0(?@"	# ()844r&   c                       e Zd ZU ee   ed<   ee   ed<   eed<   eeee   f   ed<   eeef   ed<   eeeeee   f   f   ed<   eeeeef   f   ed<   ded	<   eed
<   eed<   eed<   eed<   ee   ed<   y)ParsedContentin_lineslines_without_importsimport_indexplace_importsimport_placementsas_mapimportsr   categorized_commentschange_countoriginal_line_countline_separatorsectionsverbose_outputN)	__name__
__module____qualname__r
   str__annotations__intr	   r   r#   r&   r$   rk   rk      s    3i9$T#Y''CH~%d3S	>**++#tCH~%&&((MIr&   rk   c                    789 |j                   xs t        |       }| j                         }| r| d   dv r|j                  d       g }t	        |      }|j
                  rt        |      j                  }nt        t        j                  |      }t	        |      }i }i }	t        t              t        t              d}
t               }g }t        |j                  |j                         D ]  }t               t               d||<    i i i i i dd}d}d}d}||k  r||   }|dz  }|}t#        ||||j$                  	      \  }}||j$                  v r|s|dk(  r|dz
  }Id
|v rO|j'                  d      r>|j)                  d
      d   j)                         d   j+                         }g ||<   ||	|<   nRd|v rN|j'                  d      r=|j)                  d      d   j)                         d   j+                         }g ||<   ||	|<   |r|j                  |       |j-                         }|j.                  r|dk(  r~|r{|sx|j'                  d      sf|j'                  d      sT|j'                  d      sB|j'                  d      s4|j'                  d      s#|dz
  }|r||dz
     s|dz  }|r||dz
     sn|j)                  dd      d   j1                         }d|v sd|v rd|v rd|vr|}|}d|v sd|v r|j)                  dd      d   }d|v r|j3                         j5                  d      sl||k  rg||k  rg|j3                         j5                  d      sH||   j)                  dd      d   }|dz  }||k  r&|j3                         j5                  d      sBn|dz  }||k\  rn||   }d|v rd|v r|j)                  dd      ^}}d|v r-|j)                  d      D cg c]  }|j1                          }}n|g}|r|d    d|d    |d<   |D ]  }t7        |      \  }}t9        ||      xs d}|s|j                  |       6|dk(  r|dz
  }i }t;        |      \  }}|r|gng } t=        |      j1                         j)                  d      D !cg c]  }!|!s|!	 }"}!|dk(  rt	        |"      dk(  r| r| d   ||"d   <   d|j)                  dd      d   v r||k  r|j)                  d      d   j1                         j5                  d      s'||k  r!t;        ||         \  }}#|dz  }|#r| j                  |#       t=        |      j1                         }$|dk(  r |$rd|$j?                  dd      vr
|#r| d   ||$<   |||z   z  }|j)                  d      d   j1                         j5                  d      s||k  rnx|j1                         j5                  d      rXt;        ||         \  }}#|dz  }|#r| j                  |#       d|j)                  d      d   v r?d|j)                  d      d   vr(||k  r"t=        |      j1                         }$|dk(  r |$rd|$j?                  dd      vr
|#r| d   ||$<   |||z   z  }|j)                  d      d   j1                         j5                  d      s||k  rt;        ||         \  }}#|dz  }|#r| j                  |#       t=        |      j1                         }$|dk(  r |$rd|$j?                  dd      vr
|#r| d   ||$<   |||z   z  }|j)                  d      d   j1                         j5                  d      s||k  rt=        |      j1                         }$|dk(  r |$rd|$j?                  dd      vr
|#r| d   ||$<   |j1                         j5                  d      s|j1                         j'                  d      r	|||z   z  }n3|j3                         j3                  d      dz   |j-                         z   }|j1                         j5                  d      rX|dk(  r|j?                  dd      j?                  dd      j?                  dd      }d|v r|j)                  d      }%d }&n|j)                  d!      }%d"}&|%d   j)                  d      }'|&rdnd!jA                  |'d   dz   djA                  |'dd#       z   g|%dd# z         }t=        |      j)                         D (cg c]$  }(|(j?                  d$d%      j?                  d&d'      & })}(d#}*|)dd# 7d }+d(|)v r|)jC                  d(      dz   t	        |)      k  rd"}+d(|)v rd#},|)jC                  d(      }-|dk(  r|)|-dz
     },|)d   }.|.d)z   |,z   }/|)|-dz      }07jE                  |,       7jE                  |0       7jE                  d(       |,|0k(  r|jF                  rn!|0|
d   |/   vr|
d   |/   j                  |0       |, d|0 }1|jI                  |1      }2|2r|2|d*   jK                  |.i       |1<   |2| v rd| jM                  | jC                  |2             nC|)|-dz
     }/|)|-dz      }0|/|0k(  r|jF                  rn!|0|
d+   |/   vr|
d+   |/   j                  |0       | r>|*<|,r%|jN                  r|d   jK                  . d,g       }*n|d+   jK                  |/g       }*|)|-|-dz   = d(|)v r|dk(  r|)jM                  d      8 |8      }3|jP                  r|jR                  stU        d-8 d.|3        n#|jP                  r|j                  d-8 d.|3        |3dk(  rtW        d/8 d0| d1       ||3   |   9|)D ]S  }4|jI                  |4      }2|2s|2|d*   jK                  8i       |4<   |2| v s4| jM                  | jC                  |2             U | r|*|d   jK                  8g       }*t	        |      tY        |d      dz
  kD  r^|xr |d   j3                         xs d}5|5j'                  d      r|5j5                  d      s|5j5                  d      sd
|5vrd|5vr|jZ                  s|5j1                         |j\                  vr|d2   d   jK                  8g       j_                  d|jM                  d             |r|d   j3                         }5nd}5|5j'                  d      rS|5j5                  d      sB|5j5                  d      s1d
|5vr-d|5vr)|jZ                  s|5j1                         |j\                  vr|dz
  |k(  r$|t	        |d2   d   jI                  8g             z  }89vrt        7fd3|)D              98<   n98   ja                  789fd4|)D               | s	|*	|*jc                  |        	| r|*|*jc                  |        g } |)D ]A  }/| r
| |d+   |/<   g } t	        |      tY        |dd      dz
  kD  r^|xr |d   j3                         xs d}5|5j'                  d      r|5j5                  d      s|5j5                  d      sd
|5vrd|5vr|jZ                  s|5j1                         |j\                  vr|d2   d+   jK                  |/g       j_                  d|jM                  d             |r|d   j3                         }5nd}5|5j'                  d      rS|5j5                  d      sB|5j5                  d      s1d
|5vr-d|5vr)|jZ                  s|5j1                         |j\                  vr|dz
  |k(  r$|t	        |d2   d+   jI                  |/g             z  } ||/      }3|jP                  r|jR                  stU        d5|/ d.|3        n#|jP                  r|j                  d5|/ d.|3        |3dk(  r7tW        d/|/ d0| d1       |jK                  dt               t               d       |+||3   |   jI                  |/d"      z  }+|+||3   |   |/<   D  ||k  rt	        |      |z
  }6te        |||||	|
|||6|||j                  |6      S c c}w c c}!w c c}(w )7z9Parses a python file taking out and categorizing imports.)r"   r!   rW   )r.   r   r   r   r   )rP   rQ   rR   zisort:imports-r\   zisort: imports-rZ   rY   rC   r   r1   r2   r@   rA   r]   r*   r[   z as r?   )z importz cimportr3   zimport(zimport (r"   z	 cimport Tz import FNrF   rE   rH   rG   as.r   r   z.__combined_as__zfrom-type place_module for z
 returned zcould not place module z	 of line z, -- Do you need to define a default section?r   c              3   *   K   | ]
  }||v f  y wr_   r#   )ra   moduledirect_importss     r$   rc   z file_contents.<locals>.<genexpr>  s       4?E>!9:4s   c              3   X   K   | ]!  }|   j                  |d       xs |v f # yw)FN)get)ra   r   r   import_fromroots     r$   rc   z file_contents.<locals>.<genexpr>  s;      -"  k!2!6!6vu!E!aSaIab-s   '*zelse-type place_module for )rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   )3line_endingr%   
splitlinesappendre   old_findersr   findr   r   r   r   listr   r   rw   forced_separateri   rR   r9   rI   upperlstripfloat_to_topr`   r7   r8   r-   r:   parse_commentsrO   r+   rK   rQ   rJ   remove_redundant_aliasesr   
setdefaultpopcombine_as_importsverboseonly_modifiedprintr   maxtreat_all_comments_as_codetreat_comments_as_codeinsertupdateextendrk   ):r   r.   rv   rl   	out_linesru   finder
line_countro   rp   rq   rr   rx   sectionrs   rQ   rn   rP   r,   statement_indexskipping_linelstripped_linecommentlessstarting_lineend_of_line_comment
statements	statementr'   type_of_importnested_commentsr;   commentcommentsrb   
line_partsnew_commentstripped_linepartscimportsfrom_importitemjust_importsattach_comments_tostraight_importnested_moduleas_indextop_level_moduler   as_name	full_nameassociated_commentplaced_moduleimport_namelastrt   r   r   r   s:                                                          @@@r$   file_contentsr      s    ,,O0Eh0ON""$HHRLL0Ih-v.33f5XJ*,M(*%D!/F 1<G "N&*@*@A N(3{}MN  "-	* ELH
*

$-856CZCZ%
! 6***=r!$qyt#(<jj!1226<<>qAGGIG%'M'"&-d#$&4??3+?jj!23B7==?BHHJG%'M'"&-d#T"""--c2"--e4"--e4!,,X6~?X?XY_?`$qy"8L14D+E A%L #8L14D+E #jja0399;!T)]d-B{*;.#(L$(M&-7=M;Y&3&9&9#q&A!&D;.$/$6$6$8$A$A#$F ,z 9 #/";KDVDVDXDaDa #E /7|.D.J.J3PQ.RST.U , 1	 #/";KDVDVDXDaDa #E )A-L':5!,4\,BM' '-7=M;Y* &*ZZQ%7""$;37::c?C4$**,CJCJ *2/q1DQ1G0HIJrN# N	UI,Y7ND((v6<"N!  *r!$qy O%3D%9"M7$+yH+8+G+M+M+O+U+UVY+Zc4^b$cJc'C
Oq,@X2:1+
2/djja(++
0B**S/!,224==cBuzGY(6x(G%D+QJE" 4$1$$7$=$=$?M&&0)}'<'<VR'HH'9A"6!^d%::M **S/!,224==cBuzGY jjl++D1(6x(G%D+QJE" 4 tzz#q11tzz#q'99!J.(5d(;(A(A(C*f4 - #=+@+@+L L +=Eb\OM:%$)>>"&**S/!"4":":"<"E"Ec"JuWaOa0>x0O-D+!QJE* ( <,9$,?,E,E,GM .& 8$1$'}/D/DVR/P$P$/AI" >)^d-BBM #'**S/!"4":":"<"E"Ec"JuWaOa %2$$7$=$=$?M&&0)}'<'<VR'HH'9A"6$**,55/001HI%$)>>(5(<(<(>(E(Ed(Kc(QTXT_T_Ta(ae jjl++D1h ' ")))Z@WT3'WT3' 
 -/)//<E#H *//
;E$H#AhnnS108j N N ^c)BGGKO,DDEab	Q! *-8>>@ T4(00t<L 
 7;)!"-N"O|#););D)AA)E\IZ(Z"'l*$(M+11$7H%/(4X\(B+7?(!1C!7-!G".x!|"<&--m<&--g6&--d3(G38W8W $F6N6,BB"6N6299'B'4oT'$C	-<-@-@-K*- !3 1:EEFVXZ[ )  2X= (X^^<N-O P!-hl!;".x!|"<!W,1P1P $F:,>v,FF":.v6==gF$6$>(V-F-F1Ef1M1X1X#3"44D Er2. 2Fj1Q1\1\ &2. %X1%<=S l*V '*..q1 &{ 3>>&*>*>7}J}o^_^^"))5k]*]O\ !B&1+iv ND D }-n=#/ MK)8)<)<[)I&) / -X6AA+rR' .9$LL8J)KLM  2 :)=f)E)P)PQ\^`)a&y>Ca$81$<<$?2)=)=)?E2D, $e 4 $e 4,D8-T9 & A A $

0M0M M,W5f=HHVXY``y}}R0 %#,R=#7#7#9D#%D , $e 4 $e 4,D8-T9 & A A $

0M0M M '*l:$09&AEEkSUV)  d*(3 4IU4 )D% %,, -&2- 
  2 >&--h7 2 >&--h7!H* -UFCK,Z8@#%9~L"a(@1(DD(CYr]-A-A-CIr OOC0$(MM%$8$(MM%$8 0 < 1 =$*$E$E$(JJLF4Q4Q$Q09*EPPQWY[\cc !9==#4  )'0}';';'=') !OOC0$(MM%$8$(MM%$8 0 < 1 =$*$E$E$(JJLF4Q4Q$Q !194(C 4W =j I M MfVX Y- L %+6NM~~f.B.B ;F8:m_]^&--9&M?[ %*5fXYtf MH H  **2KMS^S`/ab#w}'=n'M'Q'Q( O FUGM*>:6B[-UCN	U_ *
~
 y>$77L'!#+1!/%% q D$ dxs   (AAAA"AA)AAN)T)*__doc__collectionsr   r   	functoolsr   	itertoolsr   typingr   r   r	   r
   r   r   r   warningsr   rW   r   r   r   r   deprecated.findersr   settingsr   r   mypy_extensionsr   r|   r   r   r%   r-   r:   rO   r~   rd   ri   rk   r   r#   r&   r$   <module>r      sw   L 0   N N N   - . ,)!$sCx.$sCx.Q cNS#X38n&		
LC C c eCHo  -; 
c 
6 
x} 
A A A( +5
+5+5 +5 CHo	+5
 +5 49+5\J   3A TC T T] Tr&   