
    JG_E                         d dl Z d dlmZ d dlmZ d dlmZmZmZ d dl	Z
d dlmZmZ ddlmZmZ ddlmZ dd	lmZmZ dd
lmZ dZdez   ZdZdZdefdededededef
dZdedefdZdededededef
dZ y)    N)StringIO)chain)ListTextIOUnion)DEFAULT_CONFIGConfig   )outputparse)FileSkipComment)format_naturalremove_whitespace)FILE_SKIP_COMMENTS)zcimport zcimport*zfrom.cimport)zfrom zfrom.importzimport zimport*)"""''''"#)z# isort: listz# isort: dictz# isort: setz# isort: unique-listz# isort: tuplez# isort: unique-tuplez# isort: assignmentspyinput_streamoutput_stream	extensionconfigreturnc                 0  0 |j                   }|j                  D cg c]  }t        |       }}d}d}d}	d}
d}d}d}d}d}d0d}d}d}d}d}d}d}d}g }|j                  r7d}d}d}t	        | d      D ]  }|r||dk(  rd}||z  }|dv st        |      j                  d	      r|d
k(  rd}|r|r|xs d}|||j                  |      z   z  }g }t        j                  ||      }||j                  z  }d}|r|d   dk(  r|dz  }|dd }|r	|d   dk(  r|j                  ddd      }t        j                  |||d      }|xs# t        |||j                  |j                         }||z  }||z  }d}||xs dz  }||xs dz  } t#        |      } t%        t	        | d            D ]  \  } }|~| dk(  r|j&                  s yd}!d}d}|sd}|r&|r#|j)                  t+        j,                  t.        j0                  j3                  |t        |      |t5        |0            |             n|j7                         }|r>|s<|t9        |j;                               d j                  dd      j                  dd      }t<        D ]  }"|"|v st?        d       |
s|dk(  rd}| dk(  s| dv r$|s"|jA                  d      r||jB                  vrd}n(|r&|jA                  d      r||jB                  v rd}| dz
  }tE        |
      }#|jA                  d      r|
rd|v sd|v rd}$|dk(  r$|jA                  d      s|jA                  d      r| }|$t9        |      k  rl||$   dk(  r|$dz  }$nJ|
r||$|$t9        |
      z    |
k(  r4d}
||k  r-| }n*||$   dv r||$|$dz    }%|%dv r|%}
|$dz  }$n||$   }
n	||$   dk(  rn|$dz  }$|$t9        |      k  rltE        |
      xs
 |#xs |xs |}!|
s|#s|s|r
|dk(  rd}n	|j                  d       rd}!n|tF        v rC|jI                  d!      d   j7                         }|dt9        |jK                                 }d}!n|rn|sc|j)                  t+        j,                  t.        j0                  j3                  |t        |      |t5        |0            |             d}!d}d}d}nB||z  }d}n9||jB                  v r>|r|s|j)                  |       |}d}!n||z  }|dt9        |jK                                 0n|s|sd}!n|rC|jA                  d      r90r0|jK                         z   |k(  r!|jL                  s||jN                  vr||z  }n|jA                  tP              rd}|dt9        |jK                                 }&|}'|j7                         jI                  d      d   }|j                  d      sd"|v rd#|vr|j                  d      r_|r|j                  d      r| jS                         }|j7                         jI                  d      d   }|'|z  }'|rS|j                  d      rKn@d#|vr<| jS                         }|j7                         jI                  d      d   }|'|z  }'d#|vr<|j                  d      rd"|v rd#|vrd}(|'jK                         jA                  tT              sd$|'v sd%|'v sd&|'v sd'|'v rd}(|(|k7  s|&0k7  r|r|r|(}	|'}d}'d}!d}n|(}|&0||'z  }nd}!|!sS|})|ri|s|re|jV                  sY|sW|
sU|sS|jK                         jA                  tX              s0|j                  |      |z   }|r| dk7  r|j)                  |       d}g }|r|s|x})}d}|r|r0s|j                  |      |z   |z   }d}g }0s
||z  }|)|z  })|s|j)                  |       n|dt9        |jK                                 }*|t9        |j;                               d }+|rH|jK                  |      jA                  tX              s$|jK                  |      }|)jK                  |      })d}0r*dj                  0fd(|j[                  d)      D              }t        j                  ||      },||,j                  z  }t        j                  |,t5        |0      ||rd*nd      }-|j7                         r|-rq0r*|*t+        j,                  |-0      j7                         z   |+z   }-|xs t        |)|-||j                         }|j)                  |-       |s0s|r|j)                  |       0r|j)                  |       |sd0|r|	}d}nd}|}d}n|j)                  |       d}!|s|
r|r|r|d+k(  rV|r|d+k(  rO| jS                         }.|.sn<|j)                  |.       |.j7                         jI                  d      d   }|sI|d+k(  rO|jA                  d,      s|jA                  d+      sS|j                  d      sf| jS                         }.|.sz|j)                  |.       |.j7                         jI                  d      d   }|j                  d      rY |r|j\                  r|D ]  }/t_        |/        |S c c}w )-a  Parses stream identifying sections of contiguous imports and sorting them

    Code with unsorted imports is read from the provided `input_stream`, sorted and then
    outputted to the specified `output_stream`.

    - `input_stream`: Text stream with unsorted import sections.
    - `output_stream`: Text stream to output sorted inputs into.
    - `config`: Config settings to use when sorting imports. Defaults settings.
        - *Default*: `isort.settings.DEFAULT_CONFIG`.
    - `extension`: The file extension or file extension rules that should be used.
        - *Default*: `"py"`.
        - *Choices*: `["py", "pyi", "pyx"]`.

    Returns `True` if there were changes that needed to be made (errors present) from what
    was provided in the input_stream, otherwise `False`.
     FTNNz# isort: on
)# isort: split
# isort: off
Nr    r!   
)r   r
   import)import_typebeforeafterline_separatorignore_whitespacer    	zPassed in contentz# isort: off)r
      r   r   r   \)r   r      )r   r   r,   z# isort: onz# isort: splitzisort: ()z	 cimport z	 cimport*z	 cimport(z.cimportc              3   :   K   | ]  }|t              d    y wr   )len).0lineindents     ,/usr/lib/python3/dist-packages/isort/core.py	<genexpr>zprocess.<locals>.<genexpr>H  s!      148DV/1s   )keependscimportyieldraise)0line_endingadd_importsr   float_to_topr   strendswithjoinr   file_contentsverbose_outputreplacer   sorted_imports_has_changedr(   r)   r   	enumerate
force_addswritetextwrapr5   isortliteral
assignment_indented_configstripr2   rstripr   r   
startswithsection_commentsboolCODE_SORT_COMMENTSsplitlstriptreat_all_comments_as_codetreat_comments_as_codeIMPORT_START_IDENTIFIERSreadlineCIMPORT_IDENTIFIERSappend_onlyCOMMENT_INDICATORS
splitlinesonly_modifiedprint)1r   r   r   r   r(   additionr=   import_sectionnext_import_sectionnext_cimportsin_quotefirst_comment_index_startfirst_comment_index_endcontains_importsin_top_commentfirst_import_section	isort_offcode_sortingcode_sorting_sectioncode_sorting_indentcimportsmade_changesstripped_lineend_of_filerC   	new_inputcurrentr4   add_line_separatorparsedextra_spacesorted_outputindexnot_importsfile_skip_commentwas_in_quote
char_index
long_quote
new_indentimport_statementcimport_statementraw_import_sectionleading_whitespacetrailing_whitespaceparsed_contentsorted_import_sectionnew_line
output_strr5   s1                                                   @r6   processr      s
   , !,,NGMGYGYZ8nX6ZKZN!MH%'#%" N!%FI%*L "!HLMK "N		,0 $	&DT-?* %IT!	EETI[I["J ++ $I"-;-Ct*#58J8O8OP[8\#\\&("00HF"f&;&;;N"$K!gbkT&9#t+")#2, "gbkT&9 #."5"5dB"BK$*$9$9	x%M $0 $<&+'-'<'<*0*B*B	4L .I,I GTZR'	4:2%I$	&L  	* |W!=> TGt<z&"3"3KKD!!% 4##OO000-%#3FF#C	 1  ,
 !JJLM^!%c$++-&8&:!;!C!CC!L!T!TUY[]!^%7 ?!$,)*=>>?  ? 	 !8H!,,S1!)@)@@!%s+}@W@W/W%*N.3ai+>L!,,S1X3$;RUY]R]
,2OOC(DOOC,@05- 3t9,J'4/"a
!
Z#h--GHHT')H69RR:? 7j)Z7%)*zA~%F
%7'1H&!OJ'+J'7Hj)S0!OJ# !3t9,& x.WLWNWiK$5$)	"++,<="&K"&88#0#6#6y#A!#D#J#J#LL*./D#dkkm2D1D*E'"&K!(%++$OO % 8 8$8$'$5$-+;FF+K	 !9 !" !4
 '+',/1,.0+,4,!"f&=&==%.>%++N;)-&+&$.!"7S%7$78F'+;"&K%$//4#v'='E"==%V-J-JJ"d*N"--.FG'+$!%&;T[[]);(;!<J'+$$(JJL$6$6s$;A$>M'006},M1I(11$7"/M4J4J44P'3'<'<'>04

0B0B30G0J 0D 8 0 #0M4J4J44P
 #&]":'3'<'<'>04

0B0B30G0J 0D 8 0 #&]": (006},M1I /4%(//1<<=PQ&*::&*::&*::%)99,0)(H4v9MR`),=M2B//1,*.K#%D'8H'F"&66N"&K&4"k**& &001CD!/!4!4[!AN!R5A:!''7#'  ">6II"^&(#v&++K8>INZ # (,$"$K"d*N&$.&'!''7 *88W3~?T?T?V;W:W)X&*8^=R=R=T9U9W*X'+N4I4I&5 j!3455 *8)>)>~)N-?-F-F~-V*/4,)+ 1<J<U<U_c<U<d1 * &+%8%8PV%WN"n&C&CCN,2,A,A&(8!19Ix	-) +002;P! 2"*//2G"P"V"V"X!Y"5!6 2 (4 (|#5"7+9.4.F.F	8 &++,AB#F7J)//?!''-.!#&,H'+$',$!4&(###D)#XnM` G++}/G#/#8#8#:'!%++H5(0(8(>(>s(CA(F ,}/G !++G48P8PQX8Y'006#/#8#8#:'!%++H5(0(8(>(>s(CA(F (006]TGl ,,( 	J*	 w
 [s   jr5   c           
          |s| S t        | t        | j                  t        |      z
  d      t        | j                  t        |      z
  d      d      S )Nr   r
   )r   line_lengthwrap_lengthlines_after_imports)r	   maxr   r2   r   )r   r5   s     r6   rN   rN     sO    **S[8!<**S[8!<	     r&   r'   r(   r)   c                     |r7t        | |      j                         t        ||      j                         k7  S | j                         |j                         k7  S )N)r(   )r   rO   r%   s       r6   rF   rF     sO    f^DJJL ~FLLNO	

 ||~..r   )!rJ   ior   	itertoolsr   typingr   r   r   isort.literalrK   isort.settingsr   r	   r   r   r   
exceptionsr   formatr   r   settingsr   r[   rY   r]   rT   r?   rS   r   rN   rF    r   r6   <module>r      s       & &  1  ' 5 (> IL__ 2   #	rrr r 	r
 
rj	V 	S 	/ /S /# /RV /[_ /r   