
    5i                    H   S SK Jr  S SKrS SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SKJ
r
  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJr  S SKJ r   S SKJ!r!  S SKJ"r"  S SKJ#r#  S SKJ$r$  S SKJ%r%  S SKJ&r&  S S KJ'r'  S S!KJ(r(  S S"KJ)r)  S S#KJ*r*  S S$KJ+r+  S S%KJ,r,  S S&KJ-r-  S S'KJ.r.  S S(KJ/r/  S S)KJ0r0  S S*K1J2r2  S S+K3J4r4  S S,K5J6r6  S-r7S.r8S/r9S0r:S1r; " S2 S35      r<g)4    )annotationsN)decode)RFC_3339_LOOSE)_escaped)parse_rfc3339)	Container)EmptyKeyError)EmptyTableNameError)InternalParserError)InvalidCharInStringError)InvalidControlChar)InvalidDateError)InvalidDateTimeError)InvalidNumberError)InvalidTimeError)InvalidUnicodeValueError)
ParseError)UnexpectedCharError)UnexpectedEofError)AoT)Array)Bool)BoolType)Comment)Date)DateTime)Float)InlineTable)Integer)Item)Key)KeyType)Null)	SingleKey)String)
StringType)Table)Time)Trivia)
Whitespace)Source)TOMLChar)TOMLDocument	   
            c                     \ rS rSrSrS*S jr\S 5       r\S 5       r\S 5       r	\S 5       r
S+S jrS,S-S
 jjrS,S.S jjrS/S jrS0S jrS1S jr\4S jrS2S jrS3S jrS4S jrS5S jrS6S7S jjrS8S9S jjrS:S jrS:S jrS:S jrS;S jrS rS rS<S jrS=S jr S>S jr!S?S jr"S@S  jr#S@S! jr$S" r%SAS# jr& SB     SCS$ jjr'SDS% jr(SES& jr)SFS' jr*SGS( jr+S)r,g	)HParser:   z
Parser for TOML documents.
c                D    [        [        U5      5      U l        / U l        g N)r+   r   _src
_aot_stack)selfstrings     .lib/python3.13/site-packages/tomlkit/parser.py__init__Parser.__init__?   s    6&>*	%'    c                .    U R                   R                  $ r7   )r8   stater:   s    r<   _stateParser._stateE   s    yyr?   c                .    U R                   R                  $ r7   )r8   idxrB   s    r<   _idxParser._idxI   s    yy}}r?   c                .    U R                   R                  $ r7   )r8   currentrB   s    r<   _currentParser._currentM   s    yy   r?   c                .    U R                   R                  $ r7   )r8   markerrB   s    r<   _markerParser._markerQ   s    yyr?   c                6    U R                   R                  5       $ )z-
Extracts the value between marker and index
)r8   extractrB   s    r<   rR   Parser.extractU   s     yy  ""r?   Nc                4    U R                   R                  US9$ )zt
Increments the parser if the end of the input has not been reached.
Returns whether or not it was able to advance.
	exception)r8   inc)r:   rV   s     r<   rW   
Parser.inc[   s    
 yy}}y}11r?   c                4    U R                   R                  XS9$ )zU
Increments the parser by n characters
if the end of the input has not been reached.
)nrV   )r8   inc_n)r:   rZ   rV   s      r<   r[   Parser.inc_nb   s    
 yy88r?   c                6    U R                   R                  XUS9$ )z4
Consume chars until min/max is satisfied is valid.
)charsminmax)r8   consume)r:   r^   r_   r`   s       r<   ra   Parser.consumei   s     yy  u3 ??r?   c                6    U R                   R                  5       $ )z>
Returns True if the parser has reached the end of the input.
)r8   endrB   s    r<   rd   
Parser.endo   s     yy}}r?   c                8    U R                   R                  5         g)z1
Sets the marker to the index's current position
N)r8   markrB   s    r<   rg   Parser.marku   s     			r?   c                B    U R                   R                  " U/UQ70 UD6$ )z:
Creates a generic "parse error" at the current position.
)r8   parse_error)r:   rV   argskwargss       r<   rj   Parser.parse_error{   s#     yy$$Y@@@@r?   c                n   [        S5      nU R                  5       (       d  U R                  S:X  a  OU R                  5       nU(       d  OkUu  p4Ub  UR	                  5       (       d  U R                  XA5      (       d   UR                  X45        U R                  5         U R                  5       (       d  M  U R                  5       (       dv  U R                  5       u  p4[        U[        5      (       a&  UR                  5       (       a  U R!                  XC5      n UR                  X45        U R                  5       (       d  Mv  UR#                  S5        U$ ! [         a%  nU R                  [        [        U5      5      UeS nAff = f! [         a%  nU R                  [        [        U5      5      UeS nAff = f)NT[F)r-   rd   rK   _parse_itemis_multi	_merge_wsappend	Exceptionrj   r   strrg   _parse_table
isinstancer'   is_aot_element
_parse_aotparsing)r:   bodyitemkeyvaluees         r<   parseParser.parse   s_   D! ((**}}# ##%DJCCLLNN4>>%;V;VFKK+ IIK% ((**( ((****,JC%''E,@,@,B,B 3BC' ((** 	U' ! F**:s1v>AEF  B&&z3q6:ABs0   =E F 
F E==F
F4 F//F4c                z   UR                  5       nU(       d  g[        U[        5      (       a  [        U[        5      (       d  gU R                  [	        UR
                  5      [	        UR
                  5      -   -
  nUR                  S   S   [        U R                  X@R                   5      4UR                  S'   g)z
Merges the given Item with the last one currently in the given Container if
both are whitespace items.

Returns True if the items were merged.
Fr   T)	last_itemrw   r*   rG   lensr{   r8   )r:   r|   	containerlaststarts        r<   rr   Parser._merge_ws   s     ""$$
++:dJ3O3O		S[3tvv;67NN2q!tyy34
	r
 r?   c                Z    [        U5      n[        U5      nX4:X  a  gX4S[        U5       :H  $ )zt
Returns whether a key is strictly a child of another key.
AoT siblings are not considered children of one another.
FN)tupler   )r:   parentchildparent_partschild_partss        r<   	_is_childParser._is_child   s5    
 V}El&+>S->???r?   c           
     d   U R                  5         U R                   n U R                  nUS:X  a4  U R                  5         S[	        U R                  5       5      4sSSS5        $ US;   a:  U R                  5       (       d$  S[	        U R                  5       5      4sSSS5        $ OaUS:X  aC  U R                  5       nU R                  5       u  pEnS[        [        X4XV5      5      4sSSS5        $ US:X  a
   SSS5        gSUl	        OM  SSS5        U R                  S5      $ ! , (       d  f       N= f)z_
Attempts to parse the next item and returns it, along with its key
if the item is value-like.
T
N 	#ro   )rg   rC   rK   rW   r*   rR   _parse_comment_trailr   r)   restore_parse_key_value)r:   rA   cindentcwscommenttrails          r<   rp   Parser._parse_item   s   
 			[[EMM9HHJDLLN!;; [ '\88::#Z%?? [ &#X!\\^F*.*C*C*E'C%W)L!MM# [$ #X) [2 %)EM3  8 $$T**9 [s$   >D!%5D!$A D!.D!>
D!!
D/c                R   U R                  5       (       a  gSnSnU R                  5          U R                  nUS:X  a  GOhUS:X  Ga  U R                  5       nU R                  5         U R	                  5         U R                  5       (       d  U R                  R                  5       (       d  [        U R                  5      nU[        :X  d  U[        ::  a!  U[        :w  a  U R                  [        US5      eU R	                  5       (       d  O6U R                  5       (       d!  U R                  R                  5       (       d  M  U R                  5       nU R                  5         OFUS;   a  U R	                  5         OU R                  [        U5      eU R                  5       (       a  OGM|  SnU(       a  U R                  R                  5       (       aL  U R	                  5       (       a7   U R                  R                  5       (       a  U R	                  5       (       a  M7  U R                  S:X  a  U R	                  5         U R                  S:X  a  U R	                  5         U R                  U R                  :w  d  U R                  R!                  5       (       a  U R                  5       nX2U4$ )zk
Returns (comment_ws, comment, trail)
If there is no comment, comment_ws and comment will
simply be empty.
) r   r   r   r   r   commentsr   )rd   rg   rK   rR   rW   is_nlordCHR_DELCTRL_CHAR_LIMITCTRL_Irj   r   r   	is_spacesrG   rO   is_ws)r:   parse_trailr   
comment_wsr   coder   s          r<   r   Parser._parse_comment_trail   s    88::
		ADyc!\\^
		
 ((**T]]-@-@-B-Bt}}-Dw4?+Btv~"../A4TT88:: ((**T]]-@-@-B-B ,,.		g
&&':A>>xxzz= @ --))++

 --))++

 }}$
}}$
yyDLL(DMM,?,?,A,AE))r?   c                   U R                  5         U R                  R                  5       (       aL  U R                  5       (       a7   U R                  R                  5       (       a  U R                  5       (       a  M7  U R	                  5       nU R                  5       nU R                  5         U R                  S:H  nU R                  R                  5       (       az  U R                  5       (       ae  U R                  S:X  a  U(       a  U R                  [        S5      eSnU R                  R                  5       (       a  U R                  5       (       a  Me  U(       d   U R                  [        U R                  5      eUR                  (       d  U R	                  5       Ul	        O#U=R                  U R	                  5       -  sl	        U R                  5       nU(       aC  U R                  5       u  pgnUR                  n	U	R                  (       d  Xil        Xyl        Xl        OSUR                  l        X%R                  l        X54$ )N=Tr   )rg   rK   r   rW   rR   
_parse_key	is_kv_seprj   r   sep_parse_valuer   triviar   r   r   r   )
r:   parse_commentr   r}   found_equalsvalr   r   r   metas
             r<   r   Parser._parse_key_value-  s   		mm%%''DHHJJ mm%%''DHHJJ  oo		}}+mm%%''DHHJJ}}#**+>DD#'L mm%%''DHHJJ ""#6FFwwllnCGGGt||~%G !"&";";"=C%::D??"%"LJ!CJJ"

xr?   c                X   U R                  5         U R                  R                  5       (       aL  U R                  5       (       a7   U R                  R                  5       (       a  U R                  5       (       a  M7  U R                  S;   a  U R	                  5       $ U R                  5       $ )zb
Parses a Key at the current position;
WS before the key must be exhausted first at the callsite.
z"')rg   rK   r   rW   _parse_quoted_key_parse_bare_keyrB   s    r<   r   Parser._parse_key\  sx    
 			mm%%''DHHJJ mm%%''DHHJJ ==E!))++''))r?   c                  ^ U R                  5       nU R                  m[        U4S j[         5       S5      nUc  [	        S5      eU R                  U[        R                  :X  a  [        R                  O[        R                  5      nUR                  R                  5       (       a*  U R                  [        UR                  R                  5      eXR                  5       -  nU R!                  5         U R                  R#                  5       (       aL  U R%                  5       (       a7   U R                  R#                  5       (       a  U R%                  5       (       a  M7  XR                  5       -  n['        [)        U5      USUS9nU R                  S:X  a/  U R%                  5         UR+                  U R-                  5       5      nU$ )z:
Parses a key enclosed in either single or double quotes.
c              3  J   >#    U  H  oR                   T:X  d  M  Uv   M     g 7fr7   )r~   ).0tquote_styles     r<   	<genexpr>+Parser._parse_quoted_key.<locals>.<genexpr>q  s     FGqww+/EGs   #	#Nz+Should not have entered _parse_quoted_key()r   )r   r   original.)rR   rK   nextr"   RuntimeError_parse_stringBasicr&   SLBSLL_tis_multilinerj   r   r~   	as_stringrg   r   rW   r$   ru   concatr   )r:   r   key_typekey_strr}   r   s        @r<   r   Parser._parse_quoted_keyj  sB   
 <<>mmFGFMLMM$$&'--7JNNZ^^
 ::""$$""#6

8H8HII%%''		mm%%''DHHJJ mm%%''DHHJJLLN"Gb8L==CHHJ**T__./C
r?   c                   U R                   R                  5       (       d  U R                   R                  5       (       ak  U R                  5       (       aV   U R                   R                  5       (       d  U R                   R                  5       (       a  U R                  5       (       a  MV  U R	                  5       nUR                  5       nU(       d  U R                  [        5      eSU;   a  U R                  [        SU S35      e[        U[        R                  SU5      nU R                   S:X  a/  U R                  5         UR                  U R                  5       5      nU$ )z
Parses a bare key.
 zInvalid key ""r   r   )rK   is_bare_key_charr   rW   rR   striprj   r	   r   r$   r"   Barer   r   )r:   r   r}   s      r<   r   Parser._parse_bare_key  s    
 MM**,,0G0G0I0Ihhjj MM**,,0G0G0I0Ihhjj <<>nn""=11#:"":se1/EFFW\\2x8==CHHJ**T__./C
r?   c                   U R                  5         U R                  n[        5       nU[        R                  R
                  :X  a  U R                  5       $ U[        R                  R
                  :X  a  U R                  5       $ U[        R                  R
                  S   :X  a  U R                  5       $ U[        R                  R
                  S   :X  a  U R                  5       $ US:X  a  U R                  5       $ US:X  a  U R                  5       $ US;   d  U R!                  S5      S;   a  U R                  S;  a=  U R#                  5       (       a(   U R                  S;  a  U R#                  5       (       a  M(  U R%                  5       nU R'                  X25      nUb  U$ U R)                  [*        5      eU[,        R.                  ;   Ga  U R                  S;  a=  U R#                  5       (       a(   U R                  S;  a  U R#                  5       (       a  M(  U R%                  5       n[0        R2                  " U5      nU(       Ga  UR5                  S	5      (       a  UR5                  S
5      (       a   [7        U5      n[9        U[:        R:                  5      (       d   e[=        UR>                  UR@                  URB                  URD                  URF                  URH                  URJ                  URL                  UU5
      $ UR5                  S	5      (       Ga   [7        U5      n[9        U[:        RR                  5      (       d   e[U        UR>                  UR@                  URB                  X#5      nU R                  5         U R                  S;  a=  U R#                  5       (       a(   U R                  S;  a  U R#                  5       (       a  M(  U R%                  5       nURW                  5       n	U[Y        U	5      S Ul-        U	(       d  U$ [7        X9-   5      n[9        U[:        R:                  5      (       d   e[=        UR>                  UR@                  URB                  URD                  URF                  URH                  URJ                  URL                  UX9-   5
      $ UR5                  S
5      (       ap   [7        U5      n
[9        U
[:        R^                  5      (       d   e[a        U
RD                  U
RF                  U
RH                  U
RJ                  U
RL                  UU5      $ U R'                  X25      nUb  U$ U R)                  [*        5      eU R)                  [d        U5      e! [N         a    U R)                  [P        5      Sef = f! [N         a    U R)                  [\        5      Sef = f! [N         a    U R)                  [b        5      Sef = f)z4
Attempts to parse a value at the current position.
r   ro   {z+-   >   infnan+inf+nan-inf-nan 	
#,]}N      z	
#,]})3rg   rK   r)   r&   r   r~   _parse_basic_stringr   _parse_literal_stringr   TRUE_parse_trueFALSE_parse_false_parse_array_parse_inline_table_peekrW   rR   _parse_numberrj   r   r;   digitsr   matchgroupr   rw   datetimer   yearmonthdayhourminutesecondmicrosecondtzinfo
ValueErrorr   dater   rstripr   r   r   timer(   r   r   )r:   r   r   rawr|   mdtr   time_raw	time_partr   s              r<   r   Parser._parse_value  s    			MM
$$$++--*..&&&--//(--%%a((##%%(..&&q))$$&&#X$$&&#X++--$Y$**Q- ,
 
 --}4 --}4 ,,.C%%c2D""#566&----}4 --}4 ,,.C$$S)A771::!''!**O*3/)"h.?.?@@@@'GGHHFFGGIIIINNII"   771::K*3/)"hmm<<<<#BGGRXXrvvvK		"mm<?DHHJJ  #mm<?DHHJJ $(<<>$,OO$5	,4S^5E,F)(#'K*3?;)"h.?.?@@@@'GGHHFFGGIIIINNII"O   771::K)#.)!X]];;;;#FFHHHHMMHH"   %%c2D""#566""#6::s & O"../CD$NO@ & K"../?@dJK  & K"../?@dJKs4   1BU% B3V	 ;V	 
BV	 5A.V- %!V	!V*-!Wc                @    U R                  [        R                  5      $ r7   )_parse_boolr   r   rB   s    r<   r   Parser._parse_true  s    ..r?   c                @    U R                  [        R                  5      $ r7   )r	  r   r   rB   s    r<   r   Parser._parse_false!  s    //r?   c                    U R                      [        U5      nU H  nU R                  USSS9  M     [        U[	        5       5      sS S S 5        $ ! , (       d  f       g = f)Nr   )r_   r`   )rC   r   ra   r   r)   )r:   styler   s      r<   r	  Parser._parse_bool$  sH    [[UOE QA1-  vx( [[s   9A
Ac           
        U R                  [        S9  / nS n U R                  nU R                  [        R
                  [        R                  -   5        U R                  X0R                   n[        [        R                  5      [        U5      -  nU(       a  UR                  [        U5      5        M  U R                  S:X  a8  U R                  SS9u  pgnUR                  [        [        XFXx5      5      5        M  U(       a  UR                  [        U5      5        GM	  U(       d%   UR                  U R                  5       5        SnGM5  U(       au  U R                  S:X  ae  U R                  [        S9  [#        US   [        5      (       a  US   R$                  S-   US   l        OUR                  [        S5      5        SnGM  U R                  S:X  a  U R                  5         O U R)                  [         U R                  5      e [+        U[        5       5      n	U	$ ! [          a     Nf = f! [,         a     g f = f)	NrU   Tr   F)r   ,r   ])rW   r   rG   ra   r,   SPACESNLr8   setrs   r*   rK   r   r   r)   r   r   rw   r   _srj   r   r   )
r:   elems
prev_valuerg   r   newliner   r   r   ress
             r<   r   Parser._parse_array/  s   -.
99DLL8;;67YYtii0F(++&V4GZ/0 }}#&*&?&?E&?&R#eWVF%HIJ Z/0 LL!2!2!45!%J
 dmms2#56eBi44#(9;;#4E"ILLLC1"
 }}#
""#6FF	vx(C J7 + 0  		s$   )!H! H1 !
H.-H.1
H>=H>c                   U R                  [        S9  [        S5      nS n U R                  nU R	                  [
        R                  5        U R                  X0R                   nU(       a  UR                  [        U5      5        U(       d[  U R                  S:X  a  U R                  5         GO-USL d  Uc0  U R                  S:X  a   U R                  [        U R                  5      eO@U R                  S:X  d  U R                  S:X  a   U R                  [        U R                  5      eU R                  S5      u  pVUR                  XV5        U R                  nU R	                  [
        R                  5        U R                  X0R                   nU(       a  UR                  [        U5      5        U R                  S:H  nU(       a  U R                  [        S9  GM  [        U[        5       5      $ )NrU   T}Fr  )rW   r   r   rG   ra   r,   r  r8   addr*   rK   rj   r   r   r   r)   )r:   r  trailing_commarg   r  r}   r   s          r<   r   Parser._parse_inline_tablem  sz   -.$99DLL)))D99-C		*S/*! ==C'HHJ!U*"*t}}/C **+>NN ==C'4==C+?**+>NN,,U3HCIIc 99DLL)))D99-C		*S/* "]]c1N#56S V 5&(++r?   c                   SnUR                  S5      (       a
  US   nUSS  n[        U5      S:  aJ  UR                  S5      (       a  UR                  S5      (       a  U(       a  UR                  S5      (       a  g UR                  S5      (       a  U(       a  g S	nS
nUR                  S5      (       a  SnSnO5UR                  S5      (       a  SnSnOUR                  S5      (       a  SnSn[        R                  " SU SU S3SU5      R	                  5       nSU;   a  g UR                  S5      (       d?  UR                  S5      (       d*  UR                  SS5      S   R                  S5      (       a  g  [        [        X6-   U5      X#U-   5      $ ! [         a/     [        [        X6-   5      X#U-   5      s $ ! [         a      g f = ff = f)Nr   )+-r   r   0)z0.0o0x0b0er   )r%  r&  r'  z[0-9]r/   r'  z[01]   r%  z[0-7]   r&  z[0-9a-f]   z(?i)(?<=z)_(?=)_r   )
startswithr   resublowerendswithsplitr   intr   r   float)r:   r  r   signr   basecleans          r<   r   Parser._parse_number  s   >>*%%q6Dab'Cs8a<^^C  8V)W)W,,>>,--$>>$FD^^D!!FD^^D!!FD &vha8"cBHHJ%<>>#  &&5;;sA+>q+A+J+J3+O+O	3t|T2F3JGG 	U4<0&*EE 	s0   9F 
GF;8G;
G	GG		Gc                    U R                      U R                  [        R                  5      sS S S 5        $ ! , (       d  f       g = fr7   )rC   r   r&   r   rB   s    r<   r   Parser._parse_literal_string  %    [[%%jnn5 [[	   6
Ac                    U R                      U R                  [        R                  5      sS S S 5        $ ! , (       d  f       g = fr7   )rC   r   r&   r   rB   s    r<   r   Parser._parse_basic_string  r<  r=  c                   U(       a  U R                   R                  5       (       ak  SnU R                   R                  5       (       a#  X R                   -  nU R                  [        S9  MB  SU;  a   U R	                  [
        U R                   5      egU R                   [        ;   a(  [        U R                      nU R                  [        S9  U$ U R                   S;   aW  U R                  U R                   S:H  5      u  pEUb  U R                  [        U5      S-   5        U$ U R	                  [        5      eU R	                  [
        U R                   5      e)Nr   rU   r      UurB  r   )rK   r   rW   r   rj   r   r   _peek_unicoder[   r   r   )r:   	multilinetmpr   rC  ues         r<   _parse_escaped_charParser._parse_escaped_char  s   ,,.. C--%%''}}$ #56 3&&'?OO==H$'A HH1H2H==J&&&t}}';<EA}

3r7Q;'""#;<<7GGr?   c                J   U R                   UR                  :w  a  U R                  [        SU 35      eU R	                  [
        S9  U R                   UR                  :X  ah  U R	                  5       (       a  U R                   UR                  :w  a  [        USS[        5       5      $ U R	                  [
        S9  UR                  5       nU R                  5         SnUR                  5       (       a  U R                   S:X  a  U R	                  [
        S9  OaU R                   nU R                  SS9   U R	                  5       (       a  X0R                   -  nS S S 5        US:X  a  U R                  S[
        S9  S	n [        U R                   5      nUR                  5       (       a%  U(       d  U[        :X  dY  U[         ::  a
  U["        :w  dE  UR                  5       (       aG  U(       d@  U[        :X  d  U[         ::  a,  U["        [$        [&        4;  a  U R                  [(        US
5      eU(       GdI  U R                   UR                  :X  Ga.  U R+                  5       nSnUR                  5       (       a  SnU R                   UR                  :X  a:  XpR                   -  nU R	                  5         U R                   UR                  :X  a  M:  [-        U5      S:  a  X'-  nGMb  [-        U5      S:X  a  [        XU[        5       5      $ [-        U5      S:  a   U R                  [.        U R                   5      eX'S S -  nXgS S -  n[        XU[        5       5      $ U R	                  5         [        XU[        5       5      $ UR1                  5       (       a+  U(       a$  X R3                  UR                  5       5      -  nS	nO\UR1                  5       (       a&  U R                   S:X  a  SnU R	                  [
        S9  O!X R                   -  nU R	                  [
        S9  GM  ! , (       d  f       GN= f)Nz"Invalid character for string type rU   r   r   Tr   z
r)  Fstrings      \)rK   unitrj   r   rW   r   r%   r)   togglerg   r   rC   r[   r   is_singleliner   r   r   CTRL_JCTRL_Mr   rR   r   r   is_basicrH  )r:   delimr~   curescapedr   r   closes           r<   r   Parser._parse_string  sG   ==EJJ&""#4UG<  	-.==EJJ& 88::%**!<eRVX66 HH1H2LLNE		 }}$#56mm[[[.xxzz}}, / &=JJq,>J?t}}%D##%%W_)@TV^""$$GO/DQW@X4X &&'94KK%**!<<<>%%''E--5::5.
 --5::5 5zA~  5zQ%eHfhGG5zQ"../GWW3BZ'Ecr
*H!%&(CC HHJeHfh??!!g 11%2D2D2FGG  !!dmmt&; #56 & #56O  /.s   /$P
P"c                Z   U R                   S:w  a  U R                  [        S5      eU R                  5       nU R	                  5         U R                  5       (       a  U R                  [        5      eSnU R                   S:X  a,  U R	                  5       (       d  U R                  [        5      eSn U R                  5       nU R                  5       (       a  U R                  [        5      eU R                   S:w  a   U R                  [        U R                   5      eSUl        Un[        U5      n[        S U 5       5      (       a(  U R                  [        S	UR                  5        S
35      eSnU(       a  [        U5      n	OSn	[!        U5      [!        U	5      S-   :  a  SnU[!        U	5      S n[#        S5      n
U R	                  5         U(       a  U R	                  5         U R%                  5       u  pn['        5       n[)        U
[+        X;X5      UU(       a  US   R,                  OUR,                  UR                  5       SS9n[!        U5      S:  GaR  U(       aG  [)        [#        S5      [+        SXU5      U=(       a    US   U R.                  ;   SUS   R,                  S9nUnUS   n[1        USS 5       H  u  nnUR3                  U[)        [#        S5      [+        X;X5      U=(       a    U[!        U5      S-
  :H  U[!        U5      S-
  :  UR,                  U[!        U5      S-
  :X  a  UR                  5       OSS95      nU(       a9  U[!        U5      S-
  :X  a'  UR5                  U[7        U/UR8                  SS95        OUR5                  UU5        UnUR:                  n
M     OU(       a  US   nU R                  5       (       GdR  U R=                  5       nU(       a/  Uu  nnU R?                  UU
5      (       d  UR5                  UU5        OU R                   S:X  a  U RA                  5       u  nnU RC                  UU5      (       a  U RE                  Xo5      u  nnUR5                  UU5        U R                  5       (       dh  U RA                  5       u  nnU RC                  UU5      (       d  O=U RE                  Xo5      u  nnUR5                  UU5        U R                  5       (       d  Mh  O.U R                  [        S5      eU R                  5       (       d  GMR  UR:                  RG                  5         [I        U[&        5      (       a=  UnU(       a4  U R.                  (       a  X`R.                  S   :w  a  U RK                  X5      nX^4$ ! [         a    U R                  [        5      Sef = f)z
Parses a table element.
ro   z/_parse_table() called on non-bracket character.FTNr  r   c              3     #    U  H9  nS UR                   R                  5       ;   =(       a    UR                  5       v   M;     g7f)r   N)r}   r   is_bare)r   parts     r<   r   &Parser._parse_table.<locals>.<genexpr>  s.     Qjdsdhhnn&&94<<>9js   AAzInvalid table name "r    r   r   )namedisplay_nameis_super_table)rd  rb  r)  )rd  rb  rc  )rb  parsedz7_parse_item() returned None on a non-bracket character.r   )&rK   rj   r   rR   rW   rd   r   r   r	   r
   r   r   r   anyr   r   r   r   r   r#   r'   r)   r}   r9   	enumerateget
raw_appendr   rb  r~   rp   rr   _peek_tabler   rv   _validate_out_of_order_tablerw   ry   )r:   parent_namer   r   is_aotr}   full_key
name_partsmissing_tableparent_name_partsvaluesr   r   r   resulttablei_namer   r|   _keyr-  key_next
table_nexts                           r<   rv   Parser._parse_tablev  s    ==C""#%V  
88::""#566==C88::&&'9::F	B//#C 88::""#566]]c!""#6FF3Z
QjQQQ""283E3E3G2HJ   %k 2 "z?S!23a77 M$5 6 89
4
HHJ"779e6/&0A""cgg!++- 
 z?Q dO2sU3?z!}?#'#A** FQ-C%jn55		!$vG;;1J!(;#;'(3z?Q+>'>"YY45Z19L4LH..0RV	 a3z?Q#66$$UCejjQU,VW$$UE2+ 6.  m((**##%D!
d~~dF33$$T40==C'"&"2"2"4KAx~~h99/3/@/@/Q,*((:> #'((***.*:*:*<KAx#'>>(H#E#E %373D3DX3U0Hj!,,XzB #'((** **+Q 9 ((**@ 	002fd##Ft(oob>Q2Q:{A  	B""#67TA	Bs   0V	 	!V*c                x   U R                  SSS9   U R                  S:w  a  U R                  [        S5      eU R	                  5         SnU R                  S:X  a  U R	                  5         Sn XR                  5       4sSSS5        $ ! [         a    U R                  [        5      Sef = f! , (       d  f       g= f)z
Peeks ahead non-intrusively by cloning then restoring the
initial state of the parser.

Returns the name of the table about to be parsed,
as well as whether it is part of an AoT.
Tsave_markerr   ro   z._peek_table() entered on non-bracket characterFN)rC   rK   rj   r   rW   r   r	   r
   )r:   rm  s     r<   rj  Parser._peek_table  s     [[T4[8}}#&&'D  HHJF}}#
F00 98 ! F&&':;EF 98s   AB+-B!B((B++
B9c                f   U/nU R                   R                  U5        U R                  5       (       d[  U R                  5       u  pEU(       a*  XR:X  a%  U R	                  U5      u  pgUR                  U5        OOU R                  5       (       d  M[  U R                   R                  5         [        USS9$ )zO
Parses all siblings of the provided table first and bundles them into
an AoT.
T)re  )r9   rs   rd   rj  rv   popr   )r:   first
name_firstpayloadis_aot_next	name_nextr-  rt  s           r<   ry   Parser._parse_aot,  s    
 'z*((**%)%5%5%7"Ky6,,Z8u% ((** 	74((r?   c                   U R                  SS9   Sn[        U5       HJ  nU R                  SU R                  R                  -   ;  a   X R                  -  nU R                  5         MJ    O   UsSSS5        $ ! , (       d  f       g= f)zS
Peeks ahead n characters.

n is the max number of characters that will be peeked.
TrK  r   r   N)rC   rangerK   r8   EOFrW   )r:   rZ   bufr-  s       r<   r   Parser._peek?  sj     [[[&C1X==		(EE==(CHHJ   '&&s   AA77
Bc                (   U R                  SSS9   U R                  S;  a  U R                  [        S5      eU R	                  5         U R                  5         U(       a  SnOSnU R                  U5      (       d  Su  p4O`U R                  5       nUS   R                  5       S	:X  a#  US
   R                  S5      (       a
   SSS5        g [        [        US5      5      nX44sSSS5        $ ! [        [        4 a    Sn N f = f! , (       d  f       g= f)z
Peeks ahead non-intrusively by cloning then restoring the
initial state of the parser.

Returns the unicode value is it's a valid one else None.
Tr|  rA  z,_peek_unicode() entered on non-unicode valuer*  r   NNr   dr   01234567Nr+  )rC   rK   rj   r   rW   rg   r[   rR   r1  r   chrr4  r   OverflowError)r:   is_longr^   r~   	extracteds        r<   rD  Parser._peek_unicodeQ  s     [[T4[8}}J.&&')W  HHJIIK::e$$#- y LLN	Q<%%'3.9Q<3E3Ej3Q3Q%) 98,!Ir 23E #7 980 #M2 ! E!1 98s0   B/D
C+D+D =D?D  D
D)r9   r8   )r;   zstr | bytesreturnNone)r  ru   r7   )rV   type[ParseError] | Noner  bool)rZ   r4  rV   r  r  r  )r   r   )r  r  )r  r  )r  r-   )r|   r    r   r   r  r  )r   r!   r   r!   r  r  )r  ztuple[Key | None, Item] | None)T)r   r  r  ztuple[str, str, str])F)r   r  r  ztuple[Key, Item])r  r!   )r  r    )r  r   r  r   )r  r   )r  r   )r  ru   r   r)   r  zItem | None)r  r%   )rW  r&   r  r%   r  )rl  z
Key | Noner   zTable | Noner  ztuple[Key, Table | AoT])r  ztuple[bool, Key])r  r'   r  r!   r  r   )rZ   r4  r  ru   )r  r  r  ztuple[str | None, str | None])-__name__
__module____qualname____firstlineno____doc__r=   propertyrC   rG   rK   rO   rR   rW   r[   ra   rd   rg   r   rj   r   rr   r   rp   r   r   r   r   r   r   r   r   r	  r   r   r   r   r   rH  r   rv   rj  ry   r   rD  __static_attributes__ra  r?   r<   r4   r4   :   s6   (     ! !    #29@ %/ A&P,@"+H;*z-^*:6z;x/0	)<|1,f-^66+HZp7f FJY%Y6BY	 YvF6)&$#$r?   r4   )=
__future__r   r   r/  r;   tomlkit._compatr   tomlkit._utilsr   r   r   tomlkit.containerr   tomlkit.exceptionsr	   r
   r   r   r   r   r   r   r   r   r   r   r   tomlkit.itemsr   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   tomlkit.sourcer+   tomlkit.toml_charr,   tomlkit.toml_documentr-   r   rT  rU  r   r   r4   ra  r?   r<   <module>r     s    "  	  " ) # ( ' , 2 2 7 1 / 3 1 / 7 ) 2 1    " !  "  % !   !  #   $     $ ! & . 
		
z$ z$r?   