
    JcK                     x   d dl Z d dl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 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 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 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 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  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% 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* 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/ dd+lm0Z0 dd,lm1Z1 dd-lm2Z2 dd.lm3Z3 dd/l4m5Z5 dd0l6m7Z7 dd1l8m9Z9 d2Z:d3Z;d4Z<d5Z=d6Z> G d7 d8          Z?dS )9    N)List)Optional)Tuple)Type)Union   )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                   ,   e Zd ZdZdeddfdZed             Zed             Zed             Z	ed	             Z
defd
Zd>deee                  defdZd>dedeee                  defdZd?dZdefdZd@dZefdZdefdZdededefdZdededefdZdeeee         ef                  fdZdAdedeeeef         fdZ dBd!edeeef         fd"Z!defd#Z"defd$Z#defd%Z$defd&Z%d' Z&d( Z'd)e(de)fd*Z*de+fd+Z,de-fd,Z.d-ed.e/dee         fd/Z0de1fd0Z2de1fd1Z3d2 Z4d3e5de1fd4Z6	 dCd5ee         dee7         deee8e7e9f         f         fd6Z:deeef         fd7Z;d8e7d9ede9fd:Z<dedefd;Z=d<edeee         ee         f         fd=Z>dS )DParserz$
    Parser for TOML documents.
    stringreturnNc                 V    t          t          |                    | _        g | _        d S N)r0   r	   _src
_aot_stack)selfr:   s     .lib/python3.11/site-packages/tomlkit/parser.py__init__zParser.__init__B   s"    6&>>**	%'    c                     | j         j        S r=   )r>   stater@   s    rA   _statezParser._stateH   s    yrC   c                     | j         j        S r=   )r>   idxrF   s    rA   _idxzParser._idxL   s    y}rC   c                     | j         j        S r=   )r>   currentrF   s    rA   _currentzParser._currentP   s    y  rC   c                     | j         j        S r=   )r>   markerrF   s    rA   _markerzParser._markerT   s    yrC   c                 4    | j                                         S )z=
        Extracts the value between marker and index
        )r>   extractrF   s    rA   rR   zParser.extractX   s     y  """rC   	exceptionc                 8    | j                             |          S )z
        Increments the parser if the end of the input has not been reached.
        Returns whether or not it was able to advance.
        rS   )r>   inc)r@   rS   s     rA   rV   z
Parser.inc^   s    
 y}}y}111rC   nc                 :    | j                             ||          S )zm
        Increments the parser by n characters
        if the end of the input has not been reached.
        )rW   rS   )r>   inc_n)r@   rW   rS   s      rA   rY   zParser.inc_ne   s    
 yi888rC   r   c                 <    | j                             |||          S )zD
        Consume chars until min/max is satisfied is valid.
        )charsminmax)r>   consume)r@   r\   r]   r^   s       rA   r_   zParser.consumel   s!     y  u#3 ???rC   c                 4    | j                                         S )zN
        Returns True if the parser has reached the end of the input.
        )r>   endrF   s    rA   ra   z
Parser.endr   s     y}}rC   c                 8    | j                                          dS )zA
        Sets the marker to the index's current position
        N)r>   markrF   s    rA   rc   zParser.markx   s     		rC   c                 .     | j         j        |g|R i |S )zJ
        Creates a generic "parse error" at the current position.
        )r>   parse_error)r@   rS   argskwargss       rA   re   zParser.parse_error~   s)     %ty$Y@@@@@@@rC   c                    t          d          }|                                 s| j        dk    rn|                                 }|sn|\  }}||                                s|                     ||          sS	 |                    ||           n;# t          $ r.}|                     t          t          |                    |d }~ww xY w|                                  |                                 |                                 s|                                 \  }}t          |t                    r*|                                r|                     ||          }	 |                    ||           n;# t          $ r.}|                     t          t          |                    |d }~ww xY w|                                 |                    d           |S )NT[F)r2   ra   rM   _parse_itemis_multi	_merge_wsappend	Exceptionre   r   strrc   _parse_table
isinstancer,   is_aot_element
_parse_aotparsing)r@   bodyitemkeyvaluees         rA   parsezParser.parse   s   D!! ((** 	}#  ##%%D JC FCLLNN F4>>%QU;V;V FFKKU++++  F F F**:s1vv>>AEF IIKKK% ((** 	( ((** 
	B**,,JC%'' 4E,@,@,B,B 4 s33BC'''' B B B&&z3q66::AB ((** 
	B 	Us0   9B 
C)CCE5 5
F-?)F((F-rv   	containerc                 h   |                                 }|sdS t          |t                    rt          |t                    sdS | j        t	          |j                  t	          |j                  z   z
  }|j        d         d         t          | j        || j                           f|j        d<   dS )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.
        FrZ   r   T)	last_itemrq   r/   rJ   lensru   r>   )r@   rv   r{   laststarts        rA   rl   zParser._merge_ws   s     ""$$ 	5$
++ 	:dJ3O3O 	5	S[[3tv;;67N2q!ty!2344
	r
 trC   parentchildc                     t          |          }t          |          }||k    rdS ||dt          |                   k    S )z
        Returns whether a key is strictly a child of another key.
        AoT siblings are not considered children of one another.
        FN)tupler~   )r@   r   r   parent_partschild_partss        rA   	_is_childzParser._is_child   sJ    
 V}}Ell;& 	5{+>S->->+>???rC   c           
         |                                   | j        5 }	 | j        }|dk    rC|                                  dt	          |                                           fcddd           S |dv rD|                                 s/dt	          |                                           fcddd           S n{|dk    rY|                                 }|                                 \  }}}dt          t          ||||                    fcddd           S |dk    r	 ddd           dS d|_	        n	 ddd           n# 1 swxY w Y   | 
                    d          S )zw
        Attempts to parse the next item and returns it, along with its key
        if the item is value-like.
        T
N 	#ri   )rc   rG   rM   rV   r/   rR   _parse_comment_trailr   r.   restore_parse_key_value)r@   rE   cindentcwscommenttrails          rA   rj   zParser._parse_item   s   
 			[ 	EM9 HHJJJDLLNN!;!;;	 	 	 	 	 	 	 	 '\ 88:: @#Z%?%??	 	 	 	 	 	 	 	@#X !\\^^F*.*C*C*E*E'C%We)L)L!M!MM#	 	 	 	 	 	 	 	$ #X )	 	 	 	 	 	 	 	2 %)EM32 5	 	 	 	 	 	 	 	 	 	 	 	 	 	 	8 $$T***s+   AE .:E 5AE E )
E  EETparse_trailc                 *   |                                  rdS d}d}|                                  	 | j        }|dk    rnw|dk    r%|                                 }|                                  |                                  |                                  s| j                                        st          | j                  }|t          k    s|t          k    r'|t          k    r| 
                    t          |d          |                                 sn-|                                  s| j                                        |                                 }|                                  nK|dv r|                                  n| 
                    t          |          |                                  rnd}|r| j                                        rB|                                 r.	 | j                                        r|                                 .| j        dk    r|                                  | j        dk    r|                                  | j        | j        k    s| j                                        r|                                 }|||fS )	z
        Returns (comment_ws, comment, trail)
        If there is no comment, comment_ws and comment will
        simply be empty.
        ) r   r   r   Tr   r   commentsr   )ra   rc   rM   rR   rV   is_nlordCHR_DELCTRL_CHAR_LIMITCTRL_Ire   r   r   	is_spacesrJ   rP   is_ws)r@   r   r   
comment_wsr   coder   s          rA   r   zParser._parse_comment_trail   so    88:: 	:
			ADy ?c ?!\\^^
		


 ((** T]-@-@-B-B t}--Dw U$/*A Udfn U"../A4TTT88::  ((** T]-@-@-B-B  ,,..		g ?



&&':A>>>xxzz =	@  	'-))++ 

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

  }$ 


}$ 


yDL( 'DM,?,?,A,A '7E))rC   Fparse_commentc                    |                                   | j                                        rB|                                 r.	 | j                                        r|                                 .|                                 }|                                 }|                                   | j        dk    }| j                                        rk|                                 rW| j        dk    r|r|                     t          d          d}| j                                        r|                                 W|s |                     t          | j                  |j	        s|                                 |_	        n"|xj	        |                                 z  c_	        | 
                                }|r<|                                 \  }}}|j        }	|	j        s||	_        ||	_        ||	_        nd|j        _        ||j        _        ||fS )N=Tr   )rc   rM   r   rV   rR   
_parse_key	is_kv_sepre   r   sep_parse_valuer   triviar   r   r   r   )
r@   r   r   rw   found_equalsvalr   r   r   metas
             rA   r   zParser._parse_key_value0  s   		m%%'' 	DHHJJ 	 m%%'' 	DHHJJ 	  oo		}+m%%'' 	(DHHJJ 	(}# ( (**+>DDD#'L m%%'' 	(DHHJJ 	(  	G""#6FFFw 	&llnnCGGGGt||~~%GG !! 		""&";";"="=C%:D? &"%"DLDJJ!CJ"
CxrC   c                 B   |                                   | j                                        rB|                                 r.	 | j                                        r|                                 .| j        dv r|                                 S |                                 S )zz
        Parses a Key at the current position;
        WS before the key must be exhausted first at the callsite.
        z"')rc   rM   r   rV   _parse_quoted_key_parse_bare_keyrF   s    rA   r   zParser._parse_key_  s    
 			m%%'' 	DHHJJ 	 m%%'' 	DHHJJ 	 =E! 	*))+++'')))rC   c                    |                                  }| j        t          fdt          D             d          }|t	          d          |                     |t          j        k    rt          j        nt          j	                  }|j
                                        r%|                     t          |j
        j                  ||                                z  }|                                  | j                                        rB|                                 r.	 | j                                        r|                                 .||                                  z  }t'          t)          |          |d|          }| j        dk    r;|                                  |                    |                                           }|S )zJ
        Parses a key enclosed in either single or double quotes.
        c              3   2   K   | ]}|j         k    |V  d S r=   )rx   ).0tquote_styles     rA   	<genexpr>z+Parser._parse_quoted_key.<locals>.<genexpr>t  s/      FFqqw+/EFFFFFFFrC   Nz+Should not have entered _parse_quoted_key()r   )r   r   original.)rR   rM   nextr'   RuntimeError_parse_stringBasicr+   SLBSLL_tis_multilinere   r   rx   	as_stringrc   r   rV   r)   ro   concatr   )r@   r   key_typekey_strrw   r   s        @rA   r   zParser._parse_quoted_keym  s   
 <<>>mFFFFGFFFMM 	NLMMM$$&'-7KJNNZ^
 
 :""$$ 	J""#6
8HIIIG%%'''		m%%'' 	DHHJJ 	 m%%'' 	DHHJJ 	DLLNN"Gb8LLL=C 	0HHJJJ**T__..//C
rC   c                    | j                                         s| j                                         r[|                                 rG	 | j                                         s| j                                         r|                                 G|                                 }|                                }|s|                     t                    d|v r|                     t          d| d          t          |t          j        d|          }| j         dk    r;|                                  |                    |                                           }|S )z$
        Parses a bare key.
         zInvalid key ""r   r   )rM   is_bare_key_charr   rV   rR   stripre   r   r   r)   r'   Barer   r   )r@   r   rw   s      rA   r   zParser._parse_bare_key  s=   
 M**,,	040G0G0I0I	hhjj	  M**,,	040G0G0I0I	hhjj	
 <<>>nn 	2""=111#: 	G"":/Es/E/E/EFFFW\2x88=C 	0HHJJJ**T__..//C
rC   c                 	   |                                   | j        }t                      }|t          j        j        k    r|                                 S |t          j        j        k    r|                                 S |t          j
        j        d         k    r|                                 S |t          j        j        d         k    r|                                 S |dk    r|                                 S |dk    r|                                 S |dv s|                     d          dv r| j        dvr2|                                 r	 | j        dvr|                                 |                                 }|                     ||          }||S |                     t*                    |t,          j        v r| j        dvr2|                                 r	 | j        dvr|                                 |                                 }t1          j        |          }|rb|                    d	          r|                    d
          rx	 t7          |          }t9          |j        |j        |j        |j         |j!        |j"        |j#        |j$        ||
  
        S # tJ          $ r |                     tL                    w xY w|                    d	          r/	 t7          |          }tO          |j        |j        |j        ||          }|                                   | j        dvr2|                                 r	 | j        dvr|                                 |                                 }|(                                s	||_)        |S t7          ||z             }t9          |j        |j        |j        |j         |j!        |j"        |j#        |j$        |||z   
  
        S # tJ          $ r |                     tT                    w xY w|                    d
          rf	 t7          |          }	tW          |	j         |	j!        |	j"        |	j#        |	j$        ||          S # tJ          $ r |                     tX                    w xY w|                     ||          }||S |                     t*                    |                     tZ          |          )zD
        Attempts to parse a value at the current position.
        r   ri   {z+-   >   +inf+nan-inf-naninfnan 	
#,]}Nr      z	
#,]}).rc   rM   r.   r+   r   rx   _parse_basic_stringr   _parse_literal_stringr   TRUE_parse_trueFALSE_parse_false_parse_array_parse_inline_table_peekrV   rR   _parse_numberre   r   r:   digitsr
   matchgroupr   r!   yearmonthdayhourminutesecondmicrosecondtzinfo
ValueErrorr   r    r   r   r   r-   r   r   )
r@   r   r   rawrv   mdtdatetime_rawr   s
             rA   r   zParser._parse_value  s    			M
$$ m	;++---*.&& k	;--///(-%a(( i	;##%%%(.&q)) g	;$$&&&#X e	;$$&&&#X c	;++---$Y a	;$**Q-- ,
 
 a	; -}4   -}4   ,,..C%%c622D ""#5666&- N	;-}4   -}4   ,,..C$S))A >A771:: E!''!** EE*3//'GHFGIINI"     & E E E"../CDDDE 771:: AA*3//#BGRXrvvsKK		"m<? !DHHJJ !  #m<? !DHHJJ ! $(<<>>'~~// (08F-#'K*3>::'GHFGIINI"(N     & A A A"../?@@@A 771:: AA)#..#FHHMH"     & A A A"../?@@@A %%c622D ""#5666""#6:::s-   AJ %K B0O  AO   %P<Q %R c                 @    |                      t          j                  S r=   )_parse_boolr   r   rF   s    rA   r   zParser._parse_true  s    ...rC   c                 @    |                      t          j                  S r=   )r   r   r   rF   s    rA   r   zParser._parse_false  s    ///rC   stylec                     | j         5  t          |          }|D ]}|                     |dd           t          |t	                                cd d d            S # 1 swxY w Y   d S )Nr   )r]   r^   )rG   r   r_   r   r.   )r@   r   r   s      rA   r   zParser._parse_bool"  s    [ 	) 	)UOOE  . .QA1----vxx((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AAA!$A!c           
      `   |                      t                     g }d }	 | j        }|                     t          j        t          j        z              | j        || j                 }t          t          j                  t          |          z  }|r#|	                    t          |                     | j        dk    rM|                     d          \  }}}|	                    t          t          ||||                               |r$|	                    t          |                     |s<	 |	                    |                                            d}B# t           $ r Y nw xY w|rL| j        dk    rA|                      t                     |	                    t          d                     d}| j        dk    r|                                   n |                     t           | j                  	 t%          |t                                }	|	S # t&          $ r Y d S w xY w)NrU   Tr   F)r   ,])rV   r   rJ   r_   r1   SPACESNLr>   setrm   r/   rM   r   r   r.   r   r   re   r   r   )
r@   elems
prev_valuerc   r   newliner   r   r   ress
             rA   r   zParser._parse_array-  s:   -...
+	G9DLL8;6777Ytdi/0F(+&&V4G Z//000 }# &*&?&?E&?&R&R#WeWVFC%%H%HIIJJJ  Z//000  LL!2!2!4!4555!%J*   D  dms2 #5666Z__---"
 }# 


""#6FFF	vxx((C J  	 	 	DD	s$   7)E" "
E/.E/H 
H-,H-c                    |                      t                     t          d          }d }	 | j        }|                     t
          j                   | j        || j                 }|r"|                    t          |                     |sS| j
        dk    r|                                   n|du s|+| j
        dk    r |                     t          | j
                  n6| j
        dk    s| j
        dk    r |                     t          | j
                  |                     d          \  }}|                    ||           | j        }|                     t
          j                   | j        || j                 }|r"|                    t          |                     | j
        dk    }|r|                      t                     t          |t                                S )NrU   T}Fr   )rV   r   r   rJ   r_   r1   r   r>   addr/   rM   re   r   r   r#   r.   )r@   r   trailing_commarc   r   rw   r   s          rA   r   zParser._parse_inline_tableg  s   -...$+	79DLL))))D49,-C +		*S//***! O =C' HHJJJ #e+O%O ,O **+>NNN =C' O4=C+? O**+>NNN,,U33HCIIc3 9DLL))))D49,-C +		*S//*** "]c1N 7#5666W+	7Z 5&((+++rC   r   r   c                    d}|                     d          r|d         }|dd          }t          |          dk    rC|                     d          r|                     d          r|r|                     d          rd S |                     d          r|rd S d	}d
}|                     d          rd}d}n3|                     d          rd}d}n|                     d          rd}d}t          j        d| d| dd|                                          }d|v rd S |                    d          sD|                     d          s1|                    dd          d                             d          rd S 	 t          t          ||z   |          |||z             S # t          $ r: 	 t          t          ||z             |||z             cY S # t          $ r Y Y d S w xY ww xY w)Nr   )+-r   r   0)z0.0o0x0b0er   )r  r	  r
  z[0-9]r4   r
  z[01]   r  z[0-7]   r	  z[0-9a-f]   z(?i)(?<=z)_(?=)_ry   )
startswithr~   resublowerendswithsplitr$   intr   r"   float)r@   r   r   signr   basecleans          rA   r   zParser._parse_number  sU   >>*%% 	q6Dabb'Cs88a< 	NN3	NN#ABB	 	 s##		 F>>,-- 	$ 	F>>$ 	FDD^^D!! 	FDD^^D!! 	FD 8&88v888"cBBHHJJ%< 	F NN3	##D))	 C##A&//44	
 F	3te|T22FD3JGGG 	 	 	U4%<00&$*EEEEE   	s0   ;$F   
G$+#GG$
G G$G  G$c                     | j         5  |                     t          j                  cd d d            S # 1 swxY w Y   d S r=   )rG   r   r+   r   rF   s    rA   r   zParser._parse_literal_string      [ 	6 	6%%jn55	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6   488c                     | j         5  |                     t          j                  cd d d            S # 1 swxY w Y   d S r=   )rG   r   r+   r   rF   s    rA   r   zParser._parse_basic_string  r  r  c                    |r| j                                         rgd}| j                                         r&|| j         z  }|                     t                     ?d|vr |                     t
          | j                   dS | j         t          v r/t          | j                  }|                     t                     |S | j         dv rd|                     | j         dk              \  }}|'|                     t          |          dz              |S |                     t                    |                     t
          | j                   )Nr   rU   r      Uur"  r   )rM   r   rV   r   re   r   r   _peek_unicoderY   r~   r   )r@   	multilinetmpr   r#  ues         rA   _parse_escaped_charzParser._parse_escaped_char  sJ    	,,.. 	 C-%%'' t}$ #5666 3 P&&'?OOO2=H$ 	'A HH1H222H=J& 		=&&t}';<<EAr 

3r77Q;'''""#;<<<7GGGrC   delimc                    | j         |j        k    r|                     t          d|           |                     t
                     | j         |j        k    rq|                                 r| j         |j        k    rt          |ddt                                S |                     t
                     |                                }| 	                                 d}|
                                r&| j         dk    r|                     t
                     d}	 t          | j                   }|                                r?|s=|t          k    s|t          k    r'|t          k    r|                     t           |d          |
                                rJ|sH|t          k    s!|t          k    r2|t          t"          t$          fvr|                     t           |d          |sc| j         |j        k    rR|                                 }d}|
                                rd}| j         |j        k    r.|| j         z  }|                                  | j         |j        k    .t)          |          dk     r||z  }^t)          |          dk    rt          |||t                                S t)          |          d	k    r |                     t*          | j                   ||d d
         z  }||d d
         z  }t          |||t                                S |                                  t          |||t                                S |                                r/|r-||                     |
                                          z  }d}nb|                                r)| j         dk    rd}|                     t
                     n%|| j         z  }|                     t
                     )Nz"Invalid character for string type rU   r   r   FTstrings      \)rM   unitre   r   rV   r   r*   r.   togglerc   r   r   is_singleliner   r   r   r   CTRL_JCTRL_MrR   r~   r   is_basicr(  )r@   r)  rx   escapedr   r   closes          rA   r   zParser._parse_string  s   =EJ& 	""#<U<<   	-...=EJ& 
	# 88:: 7%*!< 7eRVXX666 HH1H222LLNNE		  	3DMT$9 	3HH1H222H	7t}%%D##%%F7F7 W_F7 )-(?F7 EIFNF7
 &&'94KKK""$$@7@7 GO	@7
 .@7 VVV$<<@7 &&'94KKK 67%*!< 67<<>>%%'' E-5:5 #.


 -5:5 # 5zzA~ !  5zzQ H%eUHfhhGGG5zzQ X"../GWWWU3B3Z'Ecrc
*H!%&((CCC HHJJJeUHfhh???!! 7g 7 11%2D2D2F2FGGG  !! 7dmt&; 7 #56666 & #5666QH	7rC   parent_namec                    | j         dk    r|                     t          d          |                                 }|                                  |                                 r|                     t                    d}| j         dk    r0|                                 s|                     t                    d}	 |                                 }n)# t          $ r |                     t                    dw xY w|                                 r|                     t                    | j         dk    r |                     t          | j                   |j                                        s|                     t                    d|_        |}t          |          }t          d |D                       r1|                     t           d	|                                 d
          d}|rt          |          }	nt                      }	t%          |          t%          |	          dz   k    rd}|t%          |	          d         }t'          d          }
|                                  |r|                                  |                                 \  }}}t+                      }t-          |
t/          ||||          ||r|d         j        n|j        |                                          }t%          |          dk    rs|rKt-          t'          d          t/          ||||          |o|d         | j        v d|d         j                  }|}|d         }t3          |dd                   D ]\  }}||v r	||         }nt-          t'          d          t/          ||||          |o|t%          |          dz
  k    |t%          |          dz
  k     |j        |t%          |          dz
  k    r|                                nd          }|rC|t%          |          dz
  k    r-|                    |t7          |g|j        d                     n|                    ||           |}|j        }
n
|r|d         }|                                 sf|                                 }|r3|\  }}|                     ||
          s|                    ||           n| j         dk    r|                                  \  }}| !                    ||          r| "                    ||          \  }}|                    ||           |                                 sq|                                  \  }}| !                    ||          snC| "                    ||          \  }}|                    ||           |                                 qn0|                     t          d          |                                 ftG          |t*                    r2|}|r.| j        r|| j        d         k    r| $                    ||          }||fS )z)
        Parses a table element.
        ri   z/_parse_table() called on non-bracket character.FTNr   r   c              3   t   K   | ]3}d |j                                         v o|                                V  4dS )r   N)rw   r   is_bare)r   parts     rA   r   z&Parser._parse_table.<locals>.<genexpr>  s@      QQdsdhnn&&&94<<>>QQQQQQrC   zInvalid table name "r   r   r   )namedisplay_name)is_super_tabler=  r  )r?  r=  r>  )r=  parsedz7_parse_item() returned None on a non-bracket character.rZ   )%rM   re   r   rR   rV   ra   r   r   r   r   r   rw   r   r   r   anyr   r   r~   r   r   r(   r,   r.   r?   	enumerate
raw_appendr   r=  rx   rj   rl   _peek_tabler   rp   rq   rs   )r@   r8  r   r   is_aotrw   full_key
name_partsmissing_tableparent_name_partsvaluesr   r   r   resulttablei_namer   rv   _keyr  key_next
table_nexts                           rA   rp   zParser._parse_tableo  s    =C 	""#%V   


88:: 	7""#5666=C 	88:: ;&&'9:::F	B//##CC 	B 	B 	B""#677TA	B88:: 	8""#5666]c! 	8""#6FFF 	8""#67773ZZ
QQjQQQQQ 	""J83E3E3G3GJJJ    	( %k 2 2 %z??S!233a77 	! M$5 6 6 8 89
4


 	HHJJJ"7799We63//&0=A""cg!++--
 
 
 z??Q *	$  dOO6377?z!}?#'#A*   FQ-C%jn55 % %5E> !%LEE!!$vsGU;;;1J!(;#;'(3z??Q+>'>"YJ! 33&"X%7%7%9%9%9!	 	 	E  3a3z??Q#66 3$$UCejQU,V,V,VWWWW$$UE222+%.  $ m((** 	##%%D !
d~~dF33 1$$T4000=C' "&"2"2"4"4KAx~~h99 C/3/@/@5/Q/Q,*((:>>> #'((** C*.*:*:*<*<KAx#'>>(H#E#E & %373D3DXu3U3U0Hj!,,XzBBB #'((** C **+Q  9 ((** 	B fd## 	;F ;t ;(dob>Q2Q ;::F{s   ;C &C6c                    |                      dd          5  | j        dk    r|                     t          d          |                                  d}| j        dk    r|                                  d}	 ||                                 fcddd           S # t          $ r |                     t                    dw xY w# 1 swxY w Y   dS )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   ri   z._peek_table() entered on non-bracket characterFN)rG   rM   re   r   rV   r   r   r   )r@   rE  s     rA   rD  zParser._peek_table  sD    [[T4[88 	F 	F}# &&'D   HHJJJF}# 


Ft000	F 	F 	F 	F 	F 	F 	F 	F ! F F F&&':;;EF	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs$   AC7B&B??CC	Cfirst
name_firstc                 |   |g}| j                             |           |                                 sb|                                 \  }}|r4||k    r.|                     |          \  }}|                    |           nn|                                 b| j                                          t          |d          S )zg
        Parses all siblings of the provided table first and bundles them into
        an AoT.
        T)r@  )r?   rm   ra   rD  rp   popr   )r@   rU  rV  payloadis_aot_next	name_nextr  rL  s           rA   rs   zParser._parse_aot&  s    
 'z***((** 	%)%5%5%7%7"K yJ6 ,,Z885u%%%% ((** 	 	74((((rC   c                     |                      d          5  d}t          |          D ]7}| j        d| j        j        z   vr|| j        z  }|                                  7 |cddd           S # 1 swxY w Y   dS )zk
        Peeks ahead n characters.

        n is the max number of characters that will be peeked.
        T)r   r   r   N)rG   rangerM   r>   EOFrV   )r@   rW   bufr  s       rA   r   zParser._peek9  s     [[[&& 		 		C1XX  =	(EE 4=(CHHJJJ		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 		s   AA//A36A3is_longc                 n   |                      dd          5  | j        dvr|                     t          d          |                                  |                                  |rd}nd}|                     |          sd\  }}n|                                 }|d                                         d	k    r)|d
         	                    d          r	 ddd           dS 	 t          t          |d                    }n# t          t          f$ r d}Y nw xY w||fcddd           S # 1 swxY w Y   dS )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.
        TrS  r!  z,_peek_unicode() entered on non-unicode valuer  r   NNr   dr   01234567Nr  )rG   rM   re   r   rV   rc   rY   rR   r  r   chrr  r   OverflowError)r@   r`  r\   rx   	extracteds        rA   r$  zParser._peek_unicodeK  s    [[T4[88 	$ 	$}J. &&')W   HHJJJIIKKK ::e$$ !#- yy LLNN	Q<%%''3. &9Q<3E3Ej3Q3Q &%)	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$,!Ir 2 233EE"M2 ! ! ! EEE! )#7	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s6   B=D*#D D*DD*DD**D.1D.r=   )r   rZ   )r;   N)T)Frb  )?__name__
__module____qualname____doc__ro   rB   propertyrG   rJ   rM   rP   rR   r   r   r   boolrV   r  rY   r_   ra   rc   re   r2   rz   r%   r   rl   r&   r   r   rj   r   r   r   r   r   r   r   r   r   r   r   r   r   r#   r   r.   r   r*   r   r   r(  r+   r   r,   r   r   rp   rD  rs   r   r$   rC   rA   r9   r9   =   s+        (s (t ( ( ( (   X   X ! ! X!     X # # # # #2 2Xd:&67 24 2 2 2 29 9s 9xZ0@'A 9T 9 9 9 9@ @ @ @T        %/ A A A A&| & & & &Pd y T    ,@ @C @D @ @ @ @"+XeHSM4,?&@A "+ "+ "+ "+H;* ;* ;*c3PSm@T ;* ;* ;* ;*z- -d -uS$Y?O - - - -^*C * * * *3    :    6u;d u; u; u; u;n/ / /0 0 0	) 	)d 	) 	) 	) 	)8e 8 8 8 8t3,[ 3, 3, 3, 3,j1 1f 1$ 1 1 1 1f6v 6 6 6 66V 6 6 6 6+H +H +HZi7: i7& i7 i7 i7 i7X LPZ Z#C=Z9A%Z	sE%*%%	&Z Z Z ZxFU49- F F F F6) )3 )3 ) ) ) )&s s    $#$T #$eHSM8C=4P.Q #$ #$ #$ #$ #$ #$rC   r9   )@r  r:   typingr   r   r   r   r   _compatr	   _utilsr
   r   r   r{   r   
exceptionsr   r   r   r   r   r   r   r   r   r   r   r   r   itemsr   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   sourcer0   	toml_charr1   toml_documentr2   r   r3  r4  r   r   r9   rn  rC   rA   <module>rw     s   				                                      " " " " " "       ! ! ! ! ! !             % % % % % % + + + + + + + + + + + + 0 0 0 0 0 0 * * * * * * ( ( ( ( ( ( , , , , , , * * * * * * ( ( ( ( ( ( 0 0 0 0 0 0 " " " " " " + + + + + + * * * * * *                                                                                                                                           ' ' ' ' ' ' 
		
q$ q$ q$ q$ q$ q$ q$ q$ q$ q$rC   