o
    UÌh/”  ã                   @  sB  d dl mZ d dlZ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m0Z0 d d*l1m2Z2 d d+l3m4Z4 d d,l5m6Z6 d-Z7d.Z8d/Z9d0Z:d1Z;G d2d3„ d3ƒZ<dS )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                   @  s’  e Zd ZdZddd„Zedd	„ ƒZed
d„ ƒZedd„ ƒZedd„ ƒZ	d€dd„Z
dd‚dd„Zddƒdd„Zd„dd „Zd…d!d"„Zd†d#d$„Zefd%d&„Zd‡d(d)„Zdˆd.d/„Zd‰d3d4„ZdŠd6d7„Zd‹dŒd;d<„ZddŽd@dA„ZddBdC„ZddDdE„ZddFdG„ZddHdI„ZdJdK„ ZdLdM„ Zd‘dQdR„Zd’dTdU„Zd“dWdX„Z d”d]d^„Z!d•d`da„Z"d•dbdc„Z#ddde„ Z$d–dhdi„Z%	d—d˜dndo„Z&d™dqdr„Z'dšdwdx„Z(d›dydz„Z)dœd}d~„Z*dS )ÚParserz$
    Parser for TOML documents.
    Ústringústr | bytesÚreturnÚNonec                 C  s   t t|ƒƒ| _g | _d S ©N)r*   r   Ú_srcÚ
_aot_stack)Úselfr3   © r;   úb/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/tomlkit/parser.pyÚ__init__?   s   
zParser.__init__c                 C  ó   | j jS r7   )r8   Ústate©r:   r;   r;   r<   Ú_stateE   ó   zParser._statec                 C  r>   r7   )r8   Úidxr@   r;   r;   r<   Ú_idxI   rB   zParser._idxc                 C  r>   r7   )r8   Úcurrentr@   r;   r;   r<   Ú_currentM   rB   zParser._currentc                 C  r>   r7   )r8   Úmarkerr@   r;   r;   r<   Ú_markerQ   rB   zParser._markerÚstrc                 C  ó
   | j  ¡ S )z=
        Extracts the value between marker and index
        )r8   Úextractr@   r;   r;   r<   rK   U   ó   
zParser.extractNÚ	exceptionútype[ParseError] | NoneÚboolc                 C  s   | j j|dS )zŒ
        Increments the parser if the end of the input has not been reached.
        Returns whether or not it was able to advance.
        ©rM   )r8   Úinc)r:   rM   r;   r;   r<   rQ   [   s   z
Parser.incÚnÚintc                 C  s   | j j||dS )zm
        Increments the parser by n characters
        if the end of the input has not been reached.
        )rR   rM   )r8   Úinc_n)r:   rR   rM   r;   r;   r<   rT   b   s   zParser.inc_nr   éÿÿÿÿc                 C  s   | j j|||dS )zD
        Consume chars until min/max is satisfied is valid.
        )ÚcharsÚminÚmax)r8   Úconsume)r:   rV   rW   rX   r;   r;   r<   rY   i   s   zParser.consumec                 C  rJ   )zN
        Returns True if the parser has reached the end of the input.
        )r8   Úendr@   r;   r;   r<   rZ   o   rL   z
Parser.endc                 C  s   | j  ¡  dS )zA
        Sets the marker to the index's current position
        N)r8   Úmarkr@   r;   r;   r<   r[   u   s   zParser.markc                 O  s   | j j|g|¢R i |¤ŽS )zJ
        Creates a generic "parse error" at the current position.
        )r8   Úparse_error)r:   rM   ÚargsÚkwargsr;   r;   r<   r\   {   s   zParser.parse_errorr,   c              
   C  s  t dƒ}|  ¡ sM| jdkrn?|  ¡ }|sn8|\}}|d ur!| ¡ s'|  ||¡sEz| ||¡ W n tyD } z	|  t	t
|ƒ¡|‚d }~ww |  ¡  |  ¡ r|  ¡ sˆ|  ¡ \}}t|tƒrf| ¡ rf|  ||¡}z| ||¡ W n tyƒ } z	|  t	t
|ƒ¡|‚d }~ww |  ¡ rQ| d¡ |S )NTú[F)r,   rZ   rF   Ú_parse_itemÚis_multiÚ	_merge_wsÚappendÚ	Exceptionr\   r   rI   r[   Ú_parse_tableÚ
isinstancer&   Úis_aot_elementÚ
_parse_aotÚparsing)r:   ÚbodyÚitemÚkeyÚvalueÚer;   r;   r<   Úparse   s<   
€ÿî€ÿ÷
zParser.parserk   r   Ú	containerr   c                 C  sn   |  ¡ }|sdS t|tƒrt|tƒsdS | jt|jƒt|jƒ  }|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.
        FrU   r   T)Ú	last_itemrf   r)   rD   ÚlenÚsrj   r8   )r:   rk   rp   ÚlastÚstartr;   r;   r<   rb   ©   s   
þzParser._merge_wsÚparentr    Úchildc                 C  s0   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)Útuplerr   )r:   rv   rw   Úparent_partsÚchild_partsr;   r;   r<   Ú	_is_child¿   s
   zParser._is_childútuple[Key | None, Item] | Nonec                 C  s  |   ¡  | jn}	 | j}|dkr#|  ¡  dt|  ¡ ƒfW  d  ƒ S |dv r;|  ¡ s:dt|  ¡ ƒfW  d  ƒ S n2|dkr\|  ¡ }|  ¡ \}}}dtt||||ƒƒfW  d  ƒ S |dkri	 W d  ƒ dS d|_	nq	W d  ƒ n1 sxw   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ú 	ú#r_   )r[   rA   rF   rQ   r)   rK   Ú_parse_comment_trailr   r(   ÚrestoreÚ_parse_key_value)r:   r?   ÚcÚindentÚcwsÚcommentÚtrailr;   r;   r<   r`   Ì   s6   ùõ
ïìçæ
zParser._parse_itemTÚparse_trailútuple[str, str, str]c                 C  sb  |   ¡ rdS d}d}|  ¡  	 | j}|dkrn]|dkr_|  ¡ }|  ¡  |  ¡  |   ¡ sV| j ¡ sVt| jƒ}|tksA|tkrH|t	krH|  
t|d¡‚|  ¡ sMn	|   ¡ sV| j ¡ r0|  ¡ }|  ¡  n|dv rh|  ¡  n|  
t|¡‚|   ¡ rsnqd}|r¬| j ¡ r‹|  ¡ r‹	 | j ¡ r‹|  ¡ s| 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~   ú)rZ   r[   rF   rK   rQ   Úis_nlÚordÚCHR_DELÚCTRL_CHAR_LIMITÚCTRL_Ir\   r   r   Ú	is_spacesrD   rH   Úis_ws)r:   rˆ   r†   Ú
comment_wsrƒ   Úcoder‡   r;   r;   r<   r€   ð   sR   
ú
â ÿ


zParser._parse_comment_trailFÚparse_commentútuple[Key, Item]c           
      C  s  |   ¡  | j ¡ r|  ¡ r	 | j ¡ r|  ¡ s|  ¡ }|  ¡ }|   ¡  | jdk}| j ¡ rI|  ¡ rI| jdkr@|r>|  td¡‚d}| j ¡ rI|  ¡ s1|sR|  t| j¡‚|j	s[|  ¡ |_	n	| j	|  ¡ 7  _	|  
¡ }|r|  ¡ \}}}|j}	|	jsz||	_||	_||	_nd|j_||j_||fS )Nú=TrŠ   )r[   rF   r’   rQ   rK   Ú
_parse_keyÚ	is_kv_sepr\   r   ÚsepÚ_parse_valuer€   Útriviar”   r†   r‡   r„   )
r:   r–   r„   rl   Úfound_equalsÚvalr…   r†   r‡   Úmetar;   r;   r<   r‚   -  s<   ÿ

ûzParser._parse_key_valuec                 C  sH   |   ¡  | j ¡ r|  ¡ r	 | j ¡ r|  ¡ s| 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"')r[   rF   r’   rQ   Ú_parse_quoted_keyÚ_parse_bare_keyr@   r;   r;   r<   r™   \  s   þ
zParser._parse_keyc                   sê   |   ¡ }| j‰ t‡ fdd„tD ƒdƒ}|du rtdƒ‚|  |tjkr%tjntj	¡}|j
 ¡ r6|  t|j
j¡‚|| ¡ 7 }|  ¡  | j ¡ rS|  ¡ rS	 | j ¡ rS|  ¡ sI||   ¡ 7 }tt|ƒ|d|d}| jdkrs|  ¡  | |  ¡ ¡}|S )zJ
        Parses a key enclosed in either single or double quotes.
        c                 3  s    | ]
}|j ˆ kr|V  qd S r7   )rm   )Ú.0Út©Úquote_styler;   r<   Ú	<genexpr>q  s   € z+Parser._parse_quoted_key.<locals>.<genexpr>Nz+Should not have entered _parse_quoted_key()rŠ   )r¤   r›   ÚoriginalÚ.)rK   rF   Únextr!   ÚRuntimeErrorÚ_parse_stringÚBasicr%   ÚSLBÚSLLÚ_tÚis_multiliner\   r   rm   Ú	as_stringr[   r’   rQ   r#   rI   Úconcatr™   )r:   r¨   Úkey_typeÚkey_strrl   r;   r¥   r<   r¡   j  s*   ÿ
ÿ
zParser._parse_quoted_keyc                 C  s¨   | j  ¡ s
| j  ¡ r|  ¡ r	 | j  ¡ s| j  ¡ r|  ¡ s|  ¡ }| ¡ }|s,|  t¡‚d|v r:|  td|› d¡‚t	|t
jd|ƒ}| j dkrR|  ¡  | |  ¡ ¡}|S )z$
        Parses a bare key.
        ú zInvalid key "ú"rŠ   r©   )rF   Úis_bare_key_charr’   rQ   rK   Ústripr\   r   r   r#   r!   ÚBarer³   r™   )r:   r¨   rl   r;   r;   r<   r¢   ‡  s0   ÿÿþþÿÿþ

zParser._parse_bare_keyc                 C  sN  |   ¡  | 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r6|  ¡ S |dkr>|  ¡ S |dkrF|  ¡ S |dv sQ|  d¡dv ry| jdvrd|  ¡ rd	 | jdvrd|  ¡ sZ|  ¡ }|  ||¡}|durt|S |  t¡‚|tjv r¡| jdvr’|  ¡ r’	 | jdvr’|  ¡ sˆ|  ¡ }t |¡}|r| d	¡rØ| d
¡rØz"t|ƒ}t|tjƒsµJ ‚t|j|j |j!|j"|j#|j$|j%|j&||ƒ
W S  t'y×   |  t(¡d‚w | d	¡r]zpt|ƒ}t|tj)ƒsëJ ‚t*|j|j |j!||ƒ}|   ¡  | jdvr|  ¡ r	 | jdvr|  ¡ s|  ¡ }| +¡ }	|t,|	ƒd… |_-|	s(|W S t||	 ƒ}t|tjƒs7J ‚t|j|j |j!|j"|j#|j$|j%|j&|||	 ƒ
W S  t'y\   |  t.¡d‚w | d
¡rzt|ƒ}
t|
tj/ƒsqJ ‚t0|
j"|
j#|
j$|
j%|
j&||ƒW S  t'yŽ   |  t1¡d‚w |  ||¡}|durœ|S |  t¡‚|  t2|¡‚)zD
        Attempts to parse a value at the current position.
        r   r_   Ú{z+-é   >   ú+infú+nanú-infú-nanÚinfÚnanú 	
#,]}Né   é   z	
#,]})3r[   rF   r(   r%   r®   rm   Ú_parse_basic_stringr¯   Ú_parse_literal_stringr   ÚTRUEÚ_parse_trueÚFALSEÚ_parse_falseÚ_parse_arrayÚ_parse_inline_tableÚ_peekrQ   rK   Ú_parse_numberr\   r   r3   Údigitsr   ÚmatchÚgroupr   rf   Údatetimer   ÚyearÚmonthÚdayÚhourÚminuteÚsecondÚmicrosecondÚtzinfoÚ
ValueErrorr   Údater   Úrstriprr   r”   r   Útimer'   r   r   )r:   rƒ   r   Úrawrk   ÚmÚdtrÝ   Útime_rawÚ	time_partr¤   r;   r;   r<   rœ   ¢  sÌ   	ÿ
ÿ
öÿÿöÿù	ÿ

zParser._parse_valuec                 C  ó   |   tj¡S r7   )Ú_parse_boolr   rÈ   r@   r;   r;   r<   rÉ     ó   zParser._parse_truec                 C  rå   r7   )ræ   r   rÊ   r@   r;   r;   r<   rË   !  rç   zParser._parse_falseÚstyler   r   c                 C  sX   | j  t|ƒ}|D ]
}| j|ddd q
t|tƒ ƒW  d   ƒ S 1 s%w   Y  d S )NrÄ   )rW   rX   )rA   r   rY   r   r(   )r:   rè   rƒ   r;   r;   r<   ræ   $  s   
$øzParser._parse_boolr   c           
      C  sT  | j td g }d }	 | j}|  tjtj ¡ | j|| j… }ttjƒt|ƒ@ }|r2| 	t
|ƒ¡ q
| jdkrM| jdd\}}}| 	tt||||ƒƒ¡ q
|rW| 	t
|ƒ¡ q
|snz| 	|  ¡ ¡ d}W q
 tym   Y nw |r…| jdkr…| j td | 	t
dƒ¡ d}q
| jdkr|   ¡  n|  t| j¡‚z	t|tƒ ƒ}	W |	S  ty©   Y d S w )NrP   Tr   F)rˆ   ú,ú])rQ   r   rD   rY   r+   ÚSPACESÚNLr8   Úsetrc   r)   rF   r€   r   r(   rœ   r   r\   r   rÜ   )
r:   ÚelemsÚ
prev_valuer[   r„   Únewliner…   r†   r‡   Úresr;   r;   r<   rÌ   /  sR   
ÿ
ýÿzParser._parse_arrayr   c                 C  s(  | j td tdƒ}d }	 | j}|  tj¡ | j|| j… }|r'| t	|ƒ¡ |sH| j
dkr3|   ¡  n[|du s@|d u rG| j
dkrG|  t| j
¡‚n| j
dksR| j
dkrY|  t| j
¡‚|  d¡\}}| ||¡ | j}|  tj¡ | j|| j… }|r€| t	|ƒ¡ | j
dk}|r| j td qt|tƒ ƒS )NrP   TÚ}Fré   )rQ   r   r   rD   rY   r+   rë   r8   Úaddr)   rF   r\   r   r‚   r   r(   )r:   rî   Útrailing_commar[   rà   rl   rŸ   r;   r;   r<   rÍ   i  s@   

€
Õ-zParser._parse_inline_tablerà   r   r(   úItem | Nonec                 C  sd  d}|  d¡r|d }|dd … }t|ƒdkr*|  d¡r!|  d¡r(|r*|  d¡r*d S |  d¡r3|r3d S d	}d
}|  d¡rAd}d}n|  d¡rKd}d}n	|  d¡rTd}d}t d|› d|› dd|¡ ¡ }d|v rjd S | d¡s|  d¡s| dd¡d  d¡rd S ztt|| |ƒ||| ƒW S  t	y±   zt
t|| ƒ||| ƒW  Y S  t	y°   Y Y d S w w )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)_(?=ú)Ú_rn   )Ú
startswithrr   ÚreÚsubÚlowerÚendswithÚsplitr   rS   rÜ   r   Úfloat)r:   rà   r   ÚsignrÐ   ÚbaseÚcleanr;   r;   r<   rÏ   ž  s\   
ÿþýü


 ÿþýÿýzParser._parse_numberr$   c                 C  ó6   | j  |  tj¡W  d   ƒ S 1 sw   Y  d S r7   )rA   r¬   r%   r¯   r@   r;   r;   r<   rÇ   Ñ  ó   
$ÿzParser._parse_literal_stringc                 C  r  r7   )rA   r¬   r%   r®   r@   r;   r;   r<   rÆ   Õ  r  zParser._parse_basic_stringc                 C  sÆ   |r'| j  ¡ r'd}| j  ¡ r|| j 7 }| jtd q	d|vr%|  t| j ¡‚dS | j tv r9t| j  }| jtd |S | j dv r\|  | j dk¡\}}|d urW|  t	|ƒd ¡ |S |  t
¡‚|  t| j ¡‚)NrŠ   rP   r}   ¾   ÚUÚur  rÄ   )rF   r“   rQ   r   r\   r   r   Ú_peek_unicoderT   rr   r   )r:   Ú	multilineÚtmprƒ   r  Úuer;   r;   r<   Ú_parse_escaped_charÙ  s(   





zParser._parse_escaped_charÚdelimr%   c                 C  s¶  | j |jkr|  td|› ¡‚| jtd | j |jkr7|  ¡ r%| j |jkr-t|ddtƒ ƒS | jtd | ¡ }|  	¡  d}| 
¡ rz| j dkrM| jtd n-| j }| jdd |  ¡ r`|| j 7 }W d   ƒ n1 sjw   Y  |dkrz| jdtd d	}	 t| j ƒ}| ¡ r”|s”|tks©|tkr”|tks©| 
¡ r°|s°|tks©|tkr°|tttfvr°|  t|d
¡‚|s'| j |jkr'|  ¡ }d}| 
¡ rd}| j |jkrÜ|| j 7 }|  ¡  | j |jksÍt|ƒdk rç||7 }q|t|ƒdkrõt|||tƒ ƒS t|ƒdkr|  t| j ¡‚||d d… 7 }||d d… 7 }t|||tƒ ƒS |  ¡  t|||tƒ ƒS | ¡ r;|r;||  | 
¡ ¡7 }d	}n| ¡ rO| j dkrOd}| jtd n|| j 7 }| jtd q})Nz"Invalid character for string type rP   rŠ   r}   T©r   z
rý   FÚstringsé   é   éýÿÿÿú\)rF   Úunitr\   r
   rQ   r   r$   r(   Útoggler[   r±   rA   rT   rŽ   Úis_singleliner   r   r‘   ÚCTRL_JÚCTRL_Mr   rK   rr   r   Úis_basicr  )r:   r  rm   ÚcurÚescapedr•   r¨   Úcloser;   r;   r<   r¬     sŒ   þ

€þ
ÿþþý

þ
ºzParser._parse_stringÚparent_nameú
Key | NoneúTable | Noneútuple[Key, Table | AoT]c                 C  sâ  | j dkr|  td¡‚|  ¡ }|  ¡  |  ¡ r|  t¡‚d}| j dkr.|  ¡ s,|  t¡‚d}z|  ¡ }W n tyA   |  t	¡d‚w |  ¡ rK|  t¡‚| j dkrW|  t
| j ¡‚d|_|}t|ƒ}tdd	„ |D ƒƒru|  td
| ¡ › d¡‚d}|r~t|ƒ}	nd}	t|ƒt|	ƒd krŒd}|t|	ƒd… }tdƒ}
|  ¡  |r¢|  ¡  |  ¡ \}}}tƒ }t|
t||||ƒ||r¼|d jn|j| ¡ dd}t|ƒdkrS|rèttdƒtd|||ƒ|oà|d | jv d|d jd}|}|d }t|dd… ƒD ][\}}| |ttdƒt||||ƒ|o|t|ƒd k|t|ƒd k |j|t|ƒd kr'| ¡ ndd¡}|rF|t|ƒd krF| |t|g|jdd¡ n| ||¡ |}|j}
qön|rZ|d }|  ¡ sË|  ¡ }|rx|\}}|  ||
¡sw| ||¡ nN| j dkrÀ|   ¡ \}}|  !||¡r¿|  "||¡\}}| ||¡ |  ¡ s¿|   ¡ \}}|  !||¡s¬n|  "||¡\}}| ||¡ |  ¡ ržn|  td¡‚|  ¡ r_|j #¡  t$|tƒrí|}|rí| jrç|| jd krí|  %||¡}||fS )z)
        Parses a table element.
        r_   z/_parse_table() called on non-bracket character.FTNrê   rŠ   c                 s  s&    | ]}d |j  ¡ v o| ¡ V  qdS )r¶   N)rl   r¹   Úis_bare)r£   Úpartr;   r;   r<   r§   š  s   €$ z&Parser._parse_table.<locals>.<genexpr>zInvalid table name "r·   r;   rÄ   r   )ÚnameÚdisplay_nameÚis_super_table)r.  r,  rý   )r.  r,  r-  )r,  Úparsedz7_parse_item() returned None on a non-bracket character.rU   )&rF   r\   r
   rK   rQ   rZ   r   r™   r   r	   r   r›   rx   Úanyr   r²   rr   r   r€   r"   r&   r(   rl   r9   Ú	enumerateÚgetÚ
raw_appendr   r,  rm   r`   rb   Ú_peek_tabler{   re   Ú_validate_out_of_order_tablerf   rh   )r:   r&  rv   r„   Úis_aotrl   Úfull_keyÚ
name_partsÚmissing_tableÚparent_name_partsÚvaluesr…   r†   r‡   ÚresultÚtableÚiÚ_namerw   rk   Ú_keyr  Úkey_nextÚ
table_nextr;   r;   r<   re   w  sà   
ÿ


ÿ

ÿ
ú	ûùþë
€

ø
þ
ä
 zParser._parse_tableútuple[bool, Key]c              	   C  s”   | j ddd9 | jdkr|  td¡‚|  ¡  d}| jdkr$|  ¡  d}z||  ¡ fW W  d  ƒ S  ty?   |  t¡d‚w 1 sCw   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   r_   z._peek_table() entered on non-bracket characterFN)rA   rF   r\   r
   rQ   r™   r   r	   )r:   r6  r;   r;   r<   r4    s$   	
þ
òÿñzParser._peek_tableÚfirstr&   Ú
name_firstr   c                 C  sl   |g}| j  |¡ |  ¡ s+|  ¡ \}}|r&||kr&|  |¡\}}| |¡ nn|  ¡ r| j  ¡  t|ddS )zg
        Parses all siblings of the provided table first and bundles them into
        an AoT.
        T)r/  )r9   rc   rZ   r4  re   Úpopr   )r:   rF  rG  ÚpayloadÚis_aot_nextÚ	name_nextr  r=  r;   r;   r<   rh   -  s   ú
zParser._parse_aotc                 C  sl   | j dd& d}t|ƒD ]}| jd| jj vr"|| j7 }|  ¡  q |W  d  ƒ S 1 s/w   Y  dS )zk
        Peeks ahead n characters.

        n is the max number of characters that will be peeked.
        Tr  rŠ   rÃ   N)rA   ÚrangerF   r8   ÚEOFrQ   )r:   rR   Úbufr  r;   r;   r<   rÎ   @  s   
$÷zParser._peekÚis_longútuple[str | None, str | None]c              
   C  sè   | j dddc | jdvr|  td¡‚|  ¡  |  ¡  |r d}nd}|  |¡s,d\}}n3|  ¡ }|d  ¡ d	krH|d
  	d¡rH	 W d  ƒ dS z	t
t|dƒƒ}W n ttfy^   d}Y nw ||fW  d  ƒ S 1 smw   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.
        TrD  r  z,_peek_unicode() entered on non-unicode valuerþ   r¼   ©NNr   ÚdrÄ   Ú01234567Nrÿ   )rA   rF   r\   r
   rQ   r[   rT   rK   r  r¹   ÚchrrS   rÜ   ÚOverflowError)r:   rO  rV   rm   Ú	extractedr;   r;   r<   r  R  s.   
ÿ

ìÿ$åzParser._peek_unicode)r3   r4   r5   r6   )r5   rI   r7   )rM   rN   r5   rO   )rR   rS   rM   rN   r5   rO   )r   rU   )r5   rO   )r5   r6   )r5   r,   )rk   r   rp   r   r5   rO   )rv   r    rw   r    r5   rO   )r5   r|   )T)rˆ   rO   r5   r‰   )F)r–   rO   r5   r—   )r5   r    )r5   r   )rè   r   r5   r   )r5   r   )r5   r   )rà   rI   r   r(   r5   rõ   )r5   r$   )r  r%   r5   r$   rQ  )r&  r'  rv   r(  r5   r)  )r5   rC  )rF  r&   rG  r    r5   r   )rR   rS   r5   rI   )rO  rO   r5   rP  )+Ú__name__Ú
__module__Ú__qualname__Ú__doc__r=   ÚpropertyrA   rD   rF   rH   rK   rQ   rT   rY   rZ   r[   r   r\   ro   rb   r{   r`   r€   r‚   r™   r¡   r¢   rœ   rÉ   rË   ræ   rÌ   rÍ   rÏ   rÇ   rÆ   r  r¬   re   r4  rh   rÎ   r  r;   r;   r;   r<   r2   :   sZ    










(

$=
/


|


:
5
3

-rÿ 


r2   )=Ú
__future__r   rÓ   r  r3   Ú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‘   r   r!  r   r   r2   r;   r;   r;   r<   Ú<module>   sh    