
    a'a                        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	rNd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)d%S )'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)MissingSection)DEFAULT_CONFIGConfig)	TypedDictCommentsAboveDictstraightfromCommentsDictr   r   nestedabovecontentsreturnc                     d| v rdS d| v rdS dS )Nz

 )r   s    +lib/python3.11/site-packages/isort/parse.py_infer_line_separatorr%      s'    vxt4    raw_linec                    |                      dd          }|                     dd          }|                     dd          }|                     dd          }|                     d	d
          }|                     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.   '   s    
 N,<==D<<):;;D<<	:..D<<\22D<<m44D<<c""D(r&   r-   configc                    |j         r;|                                                                                     d          rdS d| v sd| v sd| v rdS |                     d          rdS |                     d          rd	S dS )
zPIf the current line is an import line it will return its type (from or straight)noqaN
isort:skipisort: skipzisort: splitimport zcimport r   from r   )
honor_noqalowerrstripendswith
startswith)r-   r/   s     r$   import_typer<   5   s     TZZ\\0022;;FCC tt}44$8N8Nt.// zw v4r&   import_stringc                    |                      dd          } |                      dd          } dD ]}|                      |d          } |                                 }dD ]}||v r|                    |           d                    |          } |                      dd          } |                      dd          } |                      dd	                               d
d          S )N_importz[[i]]_cimportz[[ci]])\(),r*   )r   importcimport{ {| }|})r,   splitremovejoin)r=   remove_syntaximport_listkeys       r$   _strip_syntaxrQ   B   s    !)))W==M!))*h??M. B B%--mSAA%%''K, $ $+s###HH[))M!))'9==M!))(J??M  t,,44T4@@@r&   Tin_quoteindexsection_comments.needs_importc                 j   t          |          }d| v sd| v rd}|t          |           k     r| |         dk    r|dz  }n\|r!| ||t          |          z            |k    rd}n9| |         dv r"| ||dz            }|d	v r|}|d
z  }n| |         }n| |         dk    rn|dz  }|t          |           k     d|                     d          d         v rR|rPd |                     d          D             D ]0}|r,|                    d          s|                    d          sd}1t          |p|          |fS )zDetermine if a given line should be skipped.

    Returns back a tuple containing:

    (skip_line: bool,
     in_quote: str,)
    "'r   rA   r    )rX   rW      )"""'''   #;c              3   >   K   | ]}|                                 V  d S Nstrip.0parts     r$   	<genexpr>zskip_line.<locals>.<genexpr>t   s*      >>dTZZ\\>>>>>>r&   r6   r4   T)boollenrK   r;   )	r-   rR   rS   rT   rU   should_skip
char_index
long_quoterf   s	            r$   	skip_linerm   Q   s    x..K
d{{cTkk
3t99$$J4''a

 
Z#h--%??@HLL!Hj!Z//!*zA~"=>
//)H!OJJ#J/HHj!S((!OJ 3t99$$" djjooa   \ >>djjoo>>> 	# 	#D#0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<   dS )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$   ro   ro      s         3i9$$$T#Y''''CH~%%%d3S	>**++++#tCH~%&&&&((((MMMIr&   ro   c                 )  9:; |j         pt          |           }|                                 }| r| d         dv r|                    d           g }t	          |          }|j        rddlm}  ||          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
  }Hd|v re|                    d          rP|                    d          d                                         d	                                         }g |	|<   ||
|<   nhd|v rd|                    d          rO|                    d          d                                         d	                                         }g |	|<   ||
|<   |r|                    |           2|                                }|j        r|dk    r|r|s|                    d          s|                    d          s|                    d          s|                    d          s;|                    d          s&|dz
  }|r||dz
           s|dz  }|r||dz
           n5|                    dd          d	                                         }d|v sd|v rd|v rd|vr|}|}d|v sd|v r|                    dd          d	         }d|v r|                                                    d          s||k     r||k     r{|                                                    d          sT||                             dd          d	         }|dz  }||k     r'|                                                    d          Tn|dz  }||k    rn||         }d|v d|v |                    dd          ^}}d|v r d |                    d          D             }n|g}|r|d          d|d	          |d<   |D ]}t9          |          \  }}t;          ||          pd}|g}|s|                    |           B|dk    r|dz
  }i }t=          |          \  } }!|!r|!gng }"d t?          |                                                               d          D             }#|dk    r&t	          |#          dk    r|"r|"d	         ||#d         <   d|                    dd          d	         v r4||k     r-|                    d          d	                                                             d          s||k     rt=          ||                   \  }}$|dz  }|$r|"                    |$           t?          |                                          }%|dk    r'|%r%d|%                     dd          vr|$r|"d         ||%<   | ||z   z  } |                    |           |                    d          d	                                                             d          s||k     nU|                                                    d          r-t=          ||                   \  }}$|                                }|dz  }|$r|"                    |$           d|                    d          d	         v rd|                    d          d	         vr||k     rt?          |                                          }%|dk    r'|%r%d|%                     dd          vr|$r|"d         ||%<   | ||z   z  } |                    |           |                    d          d	                                                             d          s||k     rt=          ||                   \  }}$|dz  }|$r|"                    |$           t?          |                                          }%|dk    r'|%r%d|%                     dd          vr|$r|"d         ||%<   | ||z   z  } |                    |           |                    d          d	                                                             d          s||k     t?          |                                          }%|dk    r'|%r%d|%                     dd          vr|$r|"d         ||%<   |                                                     d          s'|                                                    d          r	| ||z   z  } n?|                                                     d          dz   |                                z   } |                                                    d          -|dk    r|                      dd                                dd                               d!d          } d"| vr|!                    |           d#| v r|                     d#          }&d$}'n|                     d%          }&d&}'|&d	                             d          }(|'rd#nd%"                    |(d	         dz   d"                    |(dd'                   z   g|&dd'         z             } d( t?          |                                           D             })d'}*|)dd'         9d$}+d},d)|)v rV|)#                    d)          dz   t	          |)          k     r,d&}+d)|)v r%d'}-|)#                    d)          }.|dk    r|)|.dz
           }-|)d	         },|,d*z   |-z   }/|)|.dz            }09$                    |-           9$                    |0           9$                    d)           |-|0k    r|j%        rn1|0|d         |/         vr!|d         |/                             |0           |- d|0 }1|&                    |1          }2|2rK|2|d+         '                    |,i           |1<   |2|"v r(|"(                    |"#                    |2                     nU|)|.dz
           }/|)|.dz            }0|/|0k    r|j%        rn1|0|d,         |/         vr!|d,         |/                             |0           |"r|*|-r'|j)        r |d         '                    |, d-g           }*nj|dk    s&|j%        r<|0|/                    d*          d         k    r|d,         '                    |/g           }*n!|d,         '                    |/ d|0 g           }*|)|.|.dz   = d)|)v %|dk    r|)(                    d	          : |:          }3|j*        r|j+        stY          d.: d/|3            n"|j*        r|                    d.: d/|3            |3dk    rt[          d0: d1| d2           ||3         |         ;|)D ]d}4|&                    |4          }2|2rK|2|d+         '                    :i           |4<   |2|"v r(|"(                    |"#                    |2                     e|j.        ry|"rw|*ut	          |)          dk    rb|d+         '                    :i           }5|5&                    |)d	         d          }6|6 |6rd3nd d3"                    |"           |5|)d	         <   g }"|"r|*|d         '                    :g           }*t	          |          t_          |d          dz
  k    r|r|d                                         nd}7|7                    d          r&|7                    d          s|7                    d          sd|7vrd|7vr|j0        s|7                                |j1        vr|d4         d         '                    :g           2                    d	|(                    d                     |r|d                                         }7nd}7|7                    d          rT|7                    d          s?|7                    d          s*d|7vr&d|7vr"|j0        s|7                                |j1        v|dz
  |k    r2|t	          |d4         d         &                    :g                     z  }:;vrt          9fd5|)D                       ;:<   n);:         3                    9:;fd6|)D                        |"r|*|*!                    |"           |"r|*|*!                    |"           g }"|)D ]}/|"r|"|d,         |/<   g }"t	          |          t_          |dd          dz
  k    r|r|d                                         nd}7|7                    d          r&|7                    d          s|7                    d          sd|7vrd|7vr|j0        s|7                                |j1        vr|d4         d,         '                    |/g           2                    d	|(                    d                     |r|d                                         }7nd}7|7                    d          rT|7                    d          s?|7                    d          s*d|7vr&d|7vr"|j0        s|7                                |j1        v|dz
  |k    r2|t	          |d4         d,         &                    |/g                     z  } ||/          }3|j*        r|j+        stY          d7|/ d/|3            n"|j*        r|                    d7|/ d/|3            |3dk    rGt[          d0|/ d1| d2           |'                    dt                      t                      d           |3r|3|vrti          |/|38          |+||3         |         &                    |/d&          z  }+|+||3         |         |/<   ||k     t	          |          |z
  }8tk          ||||	|
||||8|||j        |9          S ):z9Parses a python file taking out and categorizing imports.)r"   r!   rY   r   )FindersManager)r/   r   r   r   )rR   rS   rT   zisort:imports-r^   zisort: imports-r\   r[   rE   r   r2   r3   rB   rC   r_   c                 6    g | ]}|                                 S r#   rb   )re   r-   s     r$   
<listcomp>z!file_contents.<locals>.<listcomp>   s     CCC4$**,,CCCr&   c                     g | ]}||S r#   r#   rd   s     r$   r   z!file_contents.<locals>.<listcomp>  s    ccc4^bc$cccr&   r*   r]   z as rA   )z importz cimportr4   zimport(zimport (r"   r5   z	 cimport Tz import FNc                 b    g | ],}|                     d d                               dd          -S )rH   rG   rJ   rI   r+   )re   items     r$   r   z!file_contents.<locals>.<listcomp>v  sF        T4((00t<<  r&   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?z; r   c              3   $   K   | ]
}||v fV  d S ra   r#   )re   moduledirect_importss     r$   rg   z file_contents.<locals>.<genexpr>  s>       4 4?E>!9:4 4 4 4 4 4r&   c              3   \   K   | ]&}|                              |d           p|v fV  'dS )FN)get)re   r   r   import_fromroots     r$   rg   z file_contents.<locals>.<genexpr>  s\       - -"  k!2!6!6vu!E!E!aSaIab- - - - - -r&   zelse-type place_module for )import_modulesection)rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   )6line_endingr%   
splitlinesappendri   old_findersdeprecated.findersr   findr   r   r   r   listr   r   r{   forced_separaterm   rT   r;   rK   upperlstripfloat_to_toprc   r9   r:   r.   r<   parse_commentsrQ   r,   extendrM   rS   rL   remove_redundant_aliasesr   
setdefaultpopcombine_as_importsverboseonly_modifiedprintr   force_single_linemaxtreat_all_comments_as_codetreat_comments_as_codeinsertupdater   ro   )<r   r/   rz   rp   	out_linesry   r   finder
line_countrs   rt   ru   rv   r|   r   rw   rS   rr   rR   r-   statement_indexskipping_linelstripped_linecommentlessstarting_lineend_of_line_comment
statements	statementr'   type_of_import	raw_linesnested_commentsr=   commentcomments
line_partsnew_commentstripped_linepartscimportsfrom_importjust_importsattach_comments_tostraight_importtop_level_modulenested_moduleas_indexr   as_name	full_nameassociated_commentplaced_moduleimport_namenested_from_commentsexisting_commentlastrx   r   r   r   s<                                                            @@@r$   file_contentsr      s    ,O0Eh0O0ON""$$H HRLL00Ih-- 6666666v...3f555XJ*,M(*%%D!!/ /F 1<G "N&*@AA N N(3{}}MM "--	* * ELH
*


$-856CZ%
 %
 %
! 6***=*r!!$qyt##(<(<#jj!12226<<>>qAGGIIG%'M'"&-d##$&&4??3+?+?&jj!233B7==??BHHJJG%'M'"&-d# 	T"""*	?"" # # #--c22 # #--e44	 #
 #--e44 # ",,X66 !?~?X?XY_?`?` !?$qy" &8L14D+E & A%L # &8L14D+E & #jja00399;;!T))]d-B-B{**;..#(L$(M&-77=M;Y;Y&3&9&9#q&A&A!&D;..$/$6$6$8$8$A$A#$F$F / ,z 9 9 #/";";KDVDVDXDXDaDa #E E"; /7|.D.J.J3PQ.R.RST.U , 1	 #/";";KDVDVDXDXDaDa #E E"; )A-L':55!(0(>' '-77=M;Y;Y* &*ZZQ%7%7""$;;CC4::c??CCCJJJ 	J *2II1DQ1GIIJrN# q	U q	UI,Y77ND((v66<"N!
I!   ***r!!$qy O%3D%9%9"M7$+3yyHcc=+G+G+M+M+O+O+U+UVY+Z+ZcccJ''C
OOq,@,@X,@2:1+
2/djja((+++
0B0B**S//!,2244==cBB +uzGYGY(6x(G(G%D+QJE" 5 444$1$$7$7$=$=$?$?M&&00) 1}'<'<VR'H'HHH' I :B"6!^d%::M$$T*** **S//!,2244==cBB +uzGYGY  jjll++D11 5b(6x(G(G%D+;;==DQJE" 5 444 tzz#q111tzz#q'999!J..(5d(;(;(A(A(C(C*f44 - 5 #=+@+@+L+L L L + !M >Fb\OM:%$)>>!((..."&**S//!"4":":"<"<"E"Ec"J"J 3uWaOaOa0>x0O0O-D+!QJE* = ( < < <,9$,?,?,E,E,G,GM .& 8 8$1 !9$'}/D/DVR/P/P$P$P$/ %Q BJ" >)^d-BBM%,,T222 #'**S//!"4":":"<"<"E"Ec"J"J 3uWaOaOa  %2$$7$7$=$=$?$?M&&00) 1}'<'<VR'H'HHH' I :B"6$**,,55/  b001HIIb &$)>>(5(<(<(>(>(E(Ed(K(Kc(QTXT_T_TaTa(ak jjll++D11 5bn '' ")))Z@@WT3''WT3'' 
 M11$$Y///-//)//<<E#HH *//
;;E$H#AhnnS1108!Hj N N ^c)BGGKO,D,DDEabb	Q! ! )-88>>@@  L
 7;)!""-N"O!|##););D)A)AA)E\IZIZ(Z(Z"'l**$(M+11$77H%//(4X\(B+7?(!1C!7-!G".x!|"<&--m<<<&--g666&--d333(G338W3 $F6N6,BBB"6N6299'BBB'4$C$C'$C$C	-<-@-@-K-K*- Q !3 1:EEFVXZ[[ )  2X== (X^^<N-O-O P P P!-hl!;".x!|"<!W,,1P, $F:,>v,FFF":.v6==gFFF "$6$>( "V-F "1Ef1M1X1X#3 E E Er2 2..  .77 & ?  8DKv||\_O`O`acOdDdDd5I*5U5`5`$*B6" 6" 2 2 6J*5U5`5`'-$<$<7$<$<b6" 6" 2 %X1%<=a l**d ''*..q11 &{ 3 3> &*> ^^^}^^____^ "))\k\\]\\   !B&&D+ D D D D D   }-n=#/ M MK)8)<)<[)I)I&) M / -X6AA+rRR' .99$LL8J)K)KLLL," " +2L))Q..+?+I+T+T#R, ,( (<'?'?QQS'T'T$ ,d5E-MTT2dtyyYaObObdd )$Q  "H b 2 :)=f)E)P)PQ\^`)a)a&y>>Ca$8$81$<<<5>F9R=//111BD,,& $e 4 4& !%e 4 4& -D88-T99 & A : $

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

0M M M '*l::$09&AEEkSUVV) )  d**(3 4 4 4 4IU4 4 4 ) )D%% %,, - - - - - -&2- - -   
  8 2 >&--h777 " 2 >&--h777!H* 1U 1UF &CK,Z8@#%9~~L"a(@(@1(DDD9BJy}33555 OOC00*$(MM%$8$8* %)MM%$8$8* !1 < < 1 = =$*$E !>$(JJLLF4Q$Q$Q09*EPPQWY[\\cc !9==#4#4    ) *'0}';';'='=') !OOC00*$(MM%$8$8* %)MM%$8$8* !1 < < 1 = =$*$E !>$(JJLLF4Q$Q$Q !1944(C 4W =j I M MfVX Y Y- - L %+F6NNM~ f.B ]F]]m]]^^^^ &--[&[[M[[   %**Hf H Ht H H H    **2KMMS^S`S`/a/abbb$ Zg)E)E,6=YYYY#w}'=n'M'Q'Q( ( O FUGM*>:6BBc1U_
 *

D y>>$77L'!#+1!/%%   r&   N)T)*__doc__collectionsr   r   	functoolsr   	itertoolsr   typingr   r   r	   r
   r   r   r   warningsr   rY   r   r   r   r   
exceptionsr   settingsr   r   mypy_extensionsr   r   r   r   r%   r.   r<   rQ   r   rh   rm   ro   r   r#   r&   r$   <module>r      s   L L 0 0 0 0 0 0 0 0             N N N N N N N N N N N N N N N N N N             - - - - - - & & & & & & , , , , , , , , ))))))!	$sCx.$sCx.QQ  9cNS#X38n&		
 	
 LC C    c eCHo     -; 
 
c 
6 
x} 
 
 
 
A A A A A A( +5 +5
+5+5 +5 CHo	+5
 +5 49+5 +5 +5 +5\    J     3A y yC y y] y y y y y yr&   