U
    j5{ife  ã                
   @  s²  U d dl mZ d dlZd dlmZ ddlmZmZmZm	Z	m
Z
mZ dZer~d dlmZ d dlmZmZmZ dd	lmZmZmZ e ¡ Zd
ed< edd„ edƒD ƒƒeedƒƒB Zd
ed< eedƒ Zd
ed< eedƒ Zd
ed< eZ d
ed< eZ!d
ed< eZ"d
ed< edƒZ#d
ed< e#edƒB Z$d
ed< edƒZ%d
ed< e%edƒB Z&d
ed< ed ƒZ'd
ed!< ed"ddd#d$d%d&d'd(œƒZ(d
ed)< G d*d+„ d+ƒZ)G d,d-„ d-e*ƒZ+e,d.œd/d0d1d2œd3d4„Z-e,d.œd5d0d1d6œd7d8„Z.G d9d:„ d:ƒZ/G d;d<„ d<ƒZ0G d=d>„ d>ƒZ1d5d?d@d?dAœdBdC„Z2d5d?d5dDdEd?dFœdGdH„Z3d5d?d?dIœdJdK„Z4d5d?d?dIœdLdM„Z5d5d?d>dNdOœdPdQ„Z6d5d?d>dNdOœdRdS„Z7d5d?d>dTd0d?dUœdVdW„Z8d5d?d0dXdYdZœd[d\„Z9d5d?dNdIœd]d^„Z:d5d?d_dIœd`da„Z;d5d?d_dIœdbdc„Z<d5d?d0dXdddZœdedf„Z=d5d?d0dXdgdZœdhdi„Z>ddjœd5d?dEd_dkœdldm„Z?d5d?d_dIœdndo„Z@d5d?dXd_dpœdqdr„ZAd5d?d_dIœdsdt„ZBd5d?dEd_duœdvdw„ZCd5d?dEd_dkœdxdy„ZDd5d?d0dXdzdZœd{d|„ZEdXdEd}œd~d„ZFd0d0d€œd�d‚„ZGdS )ƒé    )ÚannotationsN)ÚMappingProxyTypeé   )ÚRE_DATETIMEÚRE_LOCALTIMEÚ	RE_NUMBERÚmatch_to_datetimeÚmatch_to_localtimeÚmatch_to_numberF)ÚIterable)ÚIOÚAnyÚFinal)ÚKeyÚ
ParseFloatÚPosr   ÚMAX_INLINE_NESTINGc                 c  s   | ]}t |ƒV  qd S ©N)Úchr©Ú.0Úi© r   ú1/tmp/pip-unpacked-wheel-fal_hsly/tomli/_parser.pyÚ	<genexpr>%   s     r   é    é   Ú
ASCII_CTRLú	ÚILLEGAL_BASIC_STR_CHARSz	
Ú!ILLEGAL_MULTILINE_BASIC_STR_CHARSÚILLEGAL_LITERAL_STR_CHARSÚ#ILLEGAL_MULTILINE_LITERAL_STR_CHARSÚILLEGAL_COMMENT_CHARSz 	ÚTOML_WSÚ
ÚTOML_WS_AND_NEWLINEz@abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_ÚBARE_KEY_CHARSz"'ÚKEY_INITIAL_CHARSZabcdefABCDEF0123456789ÚHEXDIGIT_CHARSúúúúú"ú\)z\bz\tz\nz\fz\rz\ez\"z\\ÚBASIC_STR_ESCAPE_REPLACEMENTSc                   @  s   e Zd ZdZdS )ÚDEPRECATED_DEFAULTzjSentinel to be used as default arg during deprecation
    period of TOMLDecodeError's free-form arguments.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r1   G   s   r1   c                   @  s,   e Zd ZdZeeefdddddœdd„ZdS )	ÚTOMLDecodeErrora:  An error raised if a document is not valid TOML.

    Adds the following attributes to ValueError:
    msg: The unformatted error message
    doc: The TOML document being parsed
    pos: The index of doc where parsing failed
    lineno: The line corresponding to pos
    colno: The column corresponding to pos
    zstr | type[DEPRECATED_DEFAULT]zPos | type[DEPRECATED_DEFAULT]r   )ÚmsgÚdocÚposÚargsc           
      G  s  |s"t |tƒr"t |tƒr"t |tƒs„dd l}|jdtdd� |tk	rL|f|˜}|tk	r^|f|˜}|tk	rp|f|˜}tj| f|žŽ  d S | 	dd|¡d }|dkr¨|d }n|| 
dd|¡ }|t|ƒkrÌd}nd|› d	|› �}|› d
|› d�}	t | |	¡ || _|| _|| _|| _|| _d S )Nr   z{Free-form arguments for TOMLDecodeError are deprecated. Please set 'msg' (str), 'doc' (str) and 'pos' (int) arguments only.é   )Ú
stacklevelr%   r   zend of documentzline z	, column z (at ú))Ú
isinstanceÚstrÚintÚwarningsÚwarnÚDeprecationWarningr1   Ú
ValueErrorÚ__init__ÚcountÚrindexÚlenr7   r8   r9   ÚlinenoÚcolno)
Úselfr7   r8   r9   r:   rA   rI   rJ   Z
coord_reprÚerrmsgr   r   r   rE   W   sH    ÿþýüü



zTOMLDecodeError.__init__N)r2   r3   r4   r5   r1   rE   r   r   r   r   r6   L   s
   ür6   ©Úparse_floatz	IO[bytes]r   údict[str, Any])Ú__fprN   Úreturnc                C  s@   |   ¡ }z| ¡ }W n tk
r2   tdƒd‚Y nX t||d�S )z%Parse TOML from a binary file object.zEFile must be opened in binary mode, e.g. use `open('foo.toml', 'rb')`NrM   )ÚreadÚdecodeÚAttributeErrorÚ	TypeErrorÚloads)rP   rN   ÚbÚsr   r   r   Úload‰   s    ÿþrY   r?   )Ú__srN   rQ   c             	   C  s®  z|   dd¡}W n0 ttfk
r@   tdt| ƒj› d�ƒd‚Y nX d}tƒ }d}t|ƒ}t||tƒ}z|| }W n t	k
rŠ   Y �q¦Y nX |dkrž|d7 }qX|t
krÄt|||||ƒ}t||tƒ}nŽ|d	k�r<z||d  }W n t	k
rö   d}Y nX |j ¡  |d	k�rt|||ƒ\}}nt|||ƒ\}}t||tƒ}n|d
k�rRtd||ƒ‚t||ƒ}z|| }W n t	k
�r„   Y �q¦Y nX |dk�rœtd||ƒ‚|d7 }qX|jjS )zParse TOML from a string.z
r%   zExpected str object, not 'ú'Nr   r   r   ú[ú#zInvalid statementz5Expected newline or end of document after a statement)ÚreplacerT   rU   Útyper4   ÚOutputÚmake_safe_parse_floatÚ
skip_charsr$   Ú
IndexErrorr(   Úkey_value_ruleÚflagsÚfinalize_pendingÚcreate_list_ruleÚcreate_dict_ruler6   Úskip_commentÚdataÚdict)rZ   rN   Úsrcr9   ÚoutÚheaderÚcharÚsecond_charr   r   r   rV   •   s`    ÿþ







  ÿ
rV   c                   @  sŽ   e Zd ZU dZdZded< dZded< ddœd	d
„Zddddœdd„Zddœdd„Z	dddœdd„Z
dddddœdd„Zddddœdd„ZdS )ÚFlagsz)Flags that map to parsed keys/namespaces.r   r   ÚFROZENr   ÚEXPLICIT_NESTÚNone©rQ   c                 C  s   i | _ tƒ | _d S r   )Ú_flagsÚsetÚ_pending_flags©rK   r   r   r   rE   å   s    zFlags.__init__r   r@   )ÚkeyÚflagrQ   c                 C  s   | j  ||f¡ d S r   )rx   Úadd©rK   rz   r{   r   r   r   Úadd_pendingé   s    zFlags.add_pendingc                 C  s.   | j D ]\}}| j||dd� q| j  ¡  d S )NF©Ú	recursive)rx   rw   Úclearr}   r   r   r   rf   ì   s    zFlags.finalize_pending©rz   rQ   c                 C  sF   | j }|d d… D ]}||kr$ d S || d }q| |d d ¡ d S )NéÿÿÿÿÚnested)rv   Úpop)rK   rz   ÚcontÚkr   r   r   Ú	unset_allñ   s    zFlags.unset_allÚbool)rz   r{   r€   rQ   c                C  sˆ   | j }|d d… |d  }}|D ],}||kr@tƒ tƒ i dœ||< || d }q ||krjtƒ tƒ i dœ||< || |rxdnd  |¡ d S )Nrƒ   )re   Úrecursive_flagsr„   r„   rŠ   re   )rv   rw   r|   )rK   rz   r{   r€   r†   Ú
key_parentÚkey_stemr‡   r   r   r   rw   ù   s    z	Flags.setc                 C  s„   |sdS | j }|d d… D ]4}||kr, dS || }||d krF dS |d }q|d }||kr€|| }||d kp~||d kS dS )NFrƒ   rŠ   Tr„   re   )rv   )rK   rz   r{   r†   r‡   Z
inner_contrŒ   r   r   r   Úis_  s    
z	Flags.is_N)r2   r3   r4   r5   rr   Ú__annotations__rs   rE   r~   rf   rˆ   rw   r�   r   r   r   r   rq   Ü   s   
rq   c                   @  sB   e Zd Zddœdd„Zddœddd	d
œdd„Zdddœdd„ZdS )Ú
NestedDictrt   ru   c                 C  s
   i | _ d S r   )rk   ry   r   r   r   rE     s    zNestedDict.__init__T©Úaccess_listsr   r‰   rO   )rz   r‘   rQ   c                C  sT   | j }|D ]D}||kri ||< || }|r<t|tƒr<|d }t|t ƒs
tdƒ‚q
|S )Nrƒ   z There is no nest behind this key)rk   r>   ÚlistÚKeyError)rK   rz   r‘   r†   r‡   r   r   r   Úget_or_create_nest  s    

zNestedDict.get_or_create_nestr‚   c                 C  sV   |   |d d… ¡}|d }||krH|| }t|tƒs<tdƒ‚| i ¡ n
i g||< d S )Nrƒ   z/An object other than list found behind this key)r”   r>   r’   r“   Úappend)rK   rz   r†   Zlast_keyÚlist_r   r   r   Úappend_nest_to_list,  s    
zNestedDict.append_nest_to_listN)r2   r3   r4   rE   r”   r—   r   r   r   r   r�     s   ür�   c                   @  s   e Zd Zddœdd„ZdS )r`   rt   ru   c                 C  s   t ƒ | _tƒ | _d S r   )r�   rj   rq   re   ry   r   r   r   rE   9  s    zOutput.__init__N)r2   r3   r4   rE   r   r   r   r   r`   8  s   r`   r   zIterable[str])rl   r9   ÚcharsrQ   c                 C  s4   z| | |kr|d7 }qW n t k
r.   Y nX |S )Nr   )rc   )rl   r9   r˜   r   r   r   rb   >  s    rb   zfrozenset[str]r‰   )rl   r9   ÚexpectÚerror_onÚerror_on_eofrQ   c                C  sˆ   z|   ||¡}W n4 tk
rD   t| ƒ}|r@td|›�| |ƒd ‚Y nX | | ||… ¡s„| | |krn|d7 }qXtd| | ›�| |ƒ‚|S )Nz	Expected r   zFound invalid character )ÚindexrD   rH   r6   Ú
isdisjoint)rl   r9   r™   rš   r›   Únew_posr   r   r   Ú
skip_untilG  s    
rŸ   )rl   r9   rQ   c                 C  sH   z| | }W n t k
r$   d }Y nX |dkrDt| |d dtdd�S |S )Nr]   r   r%   F©rš   r›   )rc   rŸ   r#   )rl   r9   ro   r   r   r   ri   ]  s    
    ÿri   c                 C  s,   |}t | |tƒ}t| |ƒ}||kr |S q d S r   )rb   r&   ri   )rl   r9   Zpos_before_skipr   r   r   Úskip_comments_and_array_wsi  s
    
r¡   ztuple[Pos, Key])rl   r9   rm   rQ   c                 C  sÂ   |d7 }t | |tƒ}t| |ƒ\}}|j |tj¡sB|j |tj¡rVtd|› d�| |ƒ‚|jj	|tjdd� z|j
 |¡ W n" tk
rœ   td| |ƒd ‚Y nX |  d|¡s¶td| |ƒ‚|d |fS )	Nr   zCannot declare z twiceFr   úCannot overwrite a valueú]z.Expected ']' at the end of a table declaration)rb   r$   Ú	parse_keyre   r�   rq   rs   rr   r6   rw   rj   r”   r“   Ú
startswith©rl   r9   rm   rz   r   r   r   rh   r  s"       ÿrh   c                 C  s¼   |d7 }t | |tƒ}t| |ƒ\}}|j |tj¡rDtd|› �| |ƒ‚|j |¡ |jj	|tj
dd� z|j |¡ W n" tk
r–   td| |ƒd ‚Y nX |  d|¡s°td| |ƒ‚|d |fS )Nr;   ú"Cannot mutate immutable namespace Fr   r¢   z]]z0Expected ']]' at the end of an array declaration)rb   r$   r¤   re   r�   rq   rr   r6   rˆ   rw   rs   rj   r—   r“   r¥   r¦   r   r   r   rg   †  s$      ÿrg   r   )rl   r9   rm   rn   rN   rQ   c                   s,  t | ||dd�\}‰}ˆd d… ˆd  }}ˆ | }‡ ‡fdd„tdtˆƒƒD ƒ}	|	D ]6}
|j |
tj¡r|td|
› �| |ƒ‚|j |
tj¡ qV|j |tj	¡r°td|› �| |ƒ‚z|j
 |¡}W n" tk
râ   td	| |ƒd ‚Y nX ||krøtd	| |ƒ‚t|ttfƒ�r |jjˆ ˆ tj	d
d� |||< |S )Nr   )Únest_lvlrƒ   c                 3  s   | ]}ˆ ˆd |…  V  qd S r   r   r   ©rn   rz   r   r   r   ¤  s     z!key_value_rule.<locals>.<genexpr>r   zCannot redefine namespace r§   r¢   Tr   )Úparse_key_value_pairÚrangerH   re   r�   rq   rs   r6   r~   rr   rj   r”   r“   r>   rk   r’   rw   )rl   r9   rm   rn   rN   Úvaluer‹   rŒ   Zabs_key_parentZrelative_path_cont_keysZcont_keyÚnestr   r©   r   rd   �  s0      ÿrd   r@   ztuple[Pos, Key, Any])rl   r9   rN   r¨   rQ   c                 C  sx   t | |ƒ\}}z| | }W n tk
r2   d }Y nX |dkrHtd| |ƒ‚|d7 }t| |tƒ}t| |||ƒ\}}|||fS )Nú=z,Expected '=' after a key in a key/value pairr   )r¤   rc   r6   rb   r$   Úparse_value)rl   r9   rN   r¨   rz   ro   r¬   r   r   r   rª   ¿  s    
rª   c                 C  s”   t | |ƒ\}}|f}t| |tƒ}z| | }W n tk
rD   d }Y nX |dkrV||fS |d7 }t| |tƒ}t | |ƒ\}}||f7 }t| |tƒ}q d S )NÚ.r   )Úparse_key_partrb   r$   rc   )rl   r9   Zkey_partrz   ro   r   r   r   r¤   Ï  s    

r¤   ztuple[Pos, str]c                 C  s‚   z| | }W n t k
r$   d }Y nX |tkrN|}t| |tƒ}|| ||… fS |dkr`t| |ƒS |dkrrt| |ƒS td| |ƒ‚d S )Nr[   r.   z(Invalid initial character for a key part)rc   r'   rb   Úparse_literal_strÚparse_one_line_basic_strr6   )rl   r9   ro   Ú	start_posr   r   r   r±   á  s    


r±   c                 C  s   |d7 }t | |dd�S )Nr   F©Ú	multiline)Úparse_basic_str©rl   r9   r   r   r   r³   ñ  s    r³   ztuple[Pos, list[Any]]c                 C  s¼   |d7 }g }t | |ƒ}|  d|¡r.|d |fS t| |||ƒ\}}| |¡ t | |ƒ}| ||d … }|dkrx|d |fS |dkrŒtd| |ƒ‚|d7 }t | |ƒ}|  d|¡r.|d |fS q.d S )Nr   r£   ú,zUnclosed array)r¡   r¥   r¯   r•   r6   )rl   r9   rN   r¨   ÚarrayÚvalÚcr   r   r   Úparse_arrayö  s"    



r½   ztuple[Pos, dict[str, Any]]c                 C  sv  |d7 }t ƒ }tƒ }t| |ƒ}|  d|¡r8|d |jfS t| |||ƒ\}}}|d d… |d  }}	| |tj¡r‚td|› �| |ƒ‚z|j	|dd�}
W n" t
k
r¶   td| |ƒd ‚Y nX |	|
krÒtd|	›�| |ƒ‚||
|	< t| |ƒ}| ||d … }|dk�r|d |jfS |d	k�r"td
| |ƒ‚|d7 }t| |ƒ}|  d|¡�rP|d |jfS t|ttfƒr8|j|tjdd� q8d S )Nr   Ú}rƒ   r§   Fr�   r¢   zDuplicate inline table key r¹   zUnclosed inline tableTr   )r�   rq   r¡   r¥   rk   rª   r�   rr   r6   r”   r“   r>   r’   rw   )rl   r9   rN   r¨   Znested_dictre   rz   r¬   r‹   rŒ   r­   r¼   r   r   r   Úparse_inline_table  s:    




r¿   rµ   )rl   r9   r¶   rQ   c                C  s  | ||d … }|d7 }|r’|dkr’|dkr~t | |tƒ}z| | }W n tk
r`   |df Y S X |dkrvtd| |ƒ‚|d7 }t | |tƒ}|dfS |dkr¦t| |dƒS |d	krºt| |d
ƒS |dkrÎt| |dƒS z|t| fW S  tk
�r    td| |ƒd ‚Y nX d S )Nr;   >   ú\
ú\	ú\ rÀ   Ú r%   zUnescaped '\' in a stringr   z\xz\ué   z\Ué   )rb   r$   rc   r6   r&   Úparse_hex_charr0   r“   )rl   r9   r¶   Z	escape_idro   r   r   r   Úparse_basic_str_escape4  s0    rÇ   c                 C  s   t | |dd�S )NTrµ   )rÇ   r¸   r   r   r   Ú parse_basic_str_escape_multilineS  s    rÈ   )rl   r9   Úhex_lenrQ   c                 C  sd   | ||| … }t |ƒ|ks&t |¡s2td| |ƒ‚||7 }t|dƒ}t|ƒsXtd| |ƒ‚|t|ƒfS )NzInvalid hex valueé   z/Escaped character is not a Unicode scalar value)rH   r)   Ú
issupersetr6   r@   Úis_unicode_scalar_valuer   )rl   r9   rÉ   Úhex_strZhex_intr   r   r   rÆ   W  s    
  ÿrÆ   c                 C  s2   |d7 }|}t | |dtdd�}|d | ||… fS )Nr   r[   Tr    )rŸ   r!   )rl   r9   r´   r   r   r   r²   d  s        ÿr²   )rl   r9   ÚliteralrQ   c                C  s®   |d7 }|   d|¡r|d7 }|rLd}t| |dtdd�}| ||… }|d }nd}t| |dd	�\}}|   ||¡sv||fS |d7 }|   ||¡s–||| fS |d7 }|||d
  fS )Né   r%   r   r[   ú'''Tr    r.   rµ   r;   )r¥   rŸ   r"   r·   )rl   r9   rÎ   ÚdelimZend_posÚresultr   r   r   Úparse_multiline_strm  s.    û
rÓ   c          	      C  sü   |rt }t}nt}t}d}|}z| | }W n" tk
rL   td| |ƒd ‚Y nX |dkr |sr|d || ||…  fS |  d|¡r–|d || ||…  fS |d7 }q|dkrÔ|| ||… 7 }|| |ƒ\}}||7 }|}q||krîtd|›�| |ƒ‚|d7 }qd S )	NrÃ   zUnterminated stringr.   r   ú"""rÏ   r/   zIllegal character )r    rÈ   r   rÇ   rc   r6   r¥   )	rl   r9   r¶   rš   Zparse_escapesrÒ   r´   ro   Zparsed_escaper   r   r   r·   Œ  s6    r·   ztuple[Pos, Any]c              
   C  s  |t krtdt › d�ƒ‚z| | }W n tk
r<   d }Y nX |dkrj|  d|¡r`t| |dd�S t| |ƒS |dkr–|  d|¡rŒt| |d	d�S t| |ƒS |d
kr¶|  d|¡r¶|d d	fS |dkrÖ|  d|¡rÖ|d dfS |dkrðt| |||d ƒS |dk�rt| |||d ƒS t	 
| |¡}|�rjzt|ƒ}W n2 tk
�r\ } ztd| |ƒ|‚W 5 d }~X Y nX | ¡ |fS t 
| |¡}|�rŒ| ¡ t|ƒfS t 
| |¡}	|	�r°|	 ¡ t|	|ƒfS | ||d … }
|
dk�rÚ|d ||
ƒfS | ||d … }|dk�r|d ||ƒfS td| |ƒ‚d S )Nz;TOML inline arrays/tables are nested more than the allowed z levelsr.   rÔ   F)rÎ   r[   rÐ   TÚtÚtruerÄ   ÚfÚfalseé   r\   r   Ú{zInvalid date or datetimerÏ   >   ÚinfÚnan>   ú-infú-nanú+infú+nanzInvalid value)r   ÚRecursionErrorrc   r¥   rÓ   r³   r²   r½   r¿   r   Úmatchr   rD   r6   Úendr   r	   r   r
   )rl   r9   rN   r¨   ro   Zdatetime_matchZdatetime_objÚeZlocaltime_matchZnumber_matchZfirst_threeZ
first_fourr   r   r   r¯   ¬  s\    
ÿ



 

r¯   )Ú	codepointrQ   c                 C  s0   d|   kodkn  p.d|   ko*dkS   S )Nr   iÿ×  i à  iÿÿ r   )rå   r   r   r   rÌ   ø  s    rÌ   )rN   rQ   c                   s$   ˆ t krt S dddœ‡ fdd„}|S )a%  A decorator to make `parse_float` safe.

    `parse_float` must not return dicts or lists, because these types
    would be mixed with parsed TOML tables and arrays, thus confusing
    the parser. The returned decorated callable raises `ValueError`
    instead of returning illegal types.
    r?   r   )Ú	float_strrQ   c                   s"   ˆ | ƒ}t |ttfƒrtdƒ‚|S )Nz*parse_float must not return dicts or lists)r>   rk   r’   rD   )ræ   Zfloat_valuerM   r   r   Úsafe_parse_float  s    z/make_safe_parse_float.<locals>.safe_parse_float)Úfloat)rN   rç   r   rM   r   ra   ü  s    	ra   )HÚ
__future__r   ÚsysÚtypesr   Ú_rer   r   r   r   r	   r
   ÚTYPE_CHECKINGÚcollections.abcr   Útypingr   r   r   Ú_typesr   r   r   Úgetrecursionlimitr   rŽ   Ú	frozensetr«   r   r   r   r    r!   r"   r#   r$   r&   r'   r(   r)   r0   r1   rD   r6   rè   rY   rV   rq   r�   r`   rb   rŸ   ri   r¡   rh   rg   rd   rª   r¤   r±   r³   r½   r¿   rÇ   rÈ   rÆ   r²   rÓ   r·   r¯   rÌ   ra   r   r   r   r   Ú<module>   s€     	*ÿøÿ=G:"		"%ÿ	 L