3
ûâde�W  ã            	   @   sò  d dl Z d dlmZ d dlmZmZmZmZmZm	Z	m
Z
mZmZ d dlmZmZmZmZmZmZmZmZmZ er|d dlmZ edd„ edƒD ƒƒeed	ƒƒB Zeed
ƒ Zeedƒ ZeZeedƒ Z eZ!edƒZ"e"edƒB Z#ee j$e j% d ƒZ&e&edƒB Z'edd
ddddddœƒZ(ee)gef Z*ee)df Z+e,Z-G dd„ de.ƒZ/e0dœee*ee)ef dœdd„Z1e0dœe)e*ee)ef dœdd „Z2G d!d"„ d"ƒZ3G d#d$„ d$ƒZ4G d%d&„ d&ƒZ5e)e-e	e) e-d'œd(d)„Z6e)e-e)ee) e7e-d*œd+d,„Z8e)e-e-d-œd.d/„Z9e)e-e-d-œd0d1„Z:e)e-e3e-d2œd3d4„Z;e)e-e3e-d2œd5d6„Z<e)e-e3e*e-d7œd8d9„Z=e)e-e*ee-e+ef d:œd;d<„Z>e)e-ee-e+f d-œd=d>„Z?e)e-ee-e)f d-œd?d@„Z@e)e-ee-e)f d-œdAdB„ZAe)e-e*ee-eBf d:œdCdD„ZCe)e-e*ee-eDf d:œdEdF„ZEdGdHœe)e-e7ee-e)f dIœdJdK„ZFe)e-ee-e)f d-œdLdM„ZGe)e-e,ee-e)f dNœdOdP„ZHe)e-ee-e)f d-œdQdR„ZIe)e-e7ee-e)f dSœdTdU„ZJe)e-e7ee-e)f dIœdVdW„ZKe)e-dXee-e)f dYœdZd[„ZLe)e-e*ee-ef d:œd\d]„ZMe)e-e)e/d^œd_d`„ZNe,e7daœdbdc„ZOdS )dé    N)ÚMappingProxyType)	ÚTYPE_CHECKINGÚAnyÚCallableÚDictÚ	FrozenSetÚIterableÚOptionalÚTextIOÚTuple)	ÚRE_BINÚRE_DATETIMEÚRE_HEXÚRE_LOCALTIMEÚ	RE_NUMBERÚRE_OCTÚmatch_to_datetimeÚmatch_to_localtimeÚmatch_to_number)ÚPatternc             c   s   | ]}t |ƒV  qd S )N)Úchr)Ú.0Úi© r   ú8/tmp/pip-build-red6nood/pip/pip/_vendor/tomli/_parser.pyú	<genexpr>   s    r   é    é   ú	z	
z	
z 	Ú
z-_z"'úúúú"ú\)z\bz\tz\nz\fz\rz\"z\\.c               @   s   e Zd ZdZdS )ÚTOMLDecodeErrorz0An error raised if a document is not valid TOML.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r%   B   s   r%   )Úparse_float)Úfpr*   Úreturnc            C   s   | j ƒ }t||d�S )zParse TOML from a file object.)r*   )ÚreadÚloads)r+   r*   Úsr   r   r   ÚloadF   s    r0   )r/   r*   r,   c            C   sP  | j ddƒ}d}tƒ }�x.t||tƒ}y|| }W n tk
rH   P Y nX |dkr\|d7 }q|tkr€t||||ƒ}t||tƒ}nv|dkrây||d  }W n tk
r°   d}Y nX |dkrÈt|||ƒ}nt|||ƒ}t||tƒ}n|dkröt	||dƒ‚t
||ƒ}y|| }W n tk
�r$   P Y nX |dk�r<t	||d	ƒ‚|d7 }qW |jjS )
zParse TOML from a string.z
r   r   é   ú[Nú#zInvalid statementz5Expected newline or end of document after a statement)ÚreplaceÚStateÚ
skip_charsÚTOML_WSÚ
IndexErrorÚKEY_INITIAL_CHARSÚkey_value_ruleÚcreate_list_ruleÚcreate_dict_ruleÚsuffixed_errÚskip_commentÚoutÚdict)r/   r*   ÚsrcÚposÚstateÚcharÚsecond_charr   r   r   r.   L   sH    




r.   c               @   s   e Zd Zddœdd„ZdS )r5   N)r,   c             C   s   t ƒ | _tƒ | _f | _d S )N)Ú
NestedDictr?   ÚFlagsÚflagsÚheader_namespace)Úselfr   r   r   Ú__init__Œ   s    zState.__init__)r&   r'   r(   rK   r   r   r   r   r5   ‹   s   r5   c               @   sp   e Zd ZdZdZdZddœdd„Zeddœd	d
„Zeee	ddœdd„Z
ee	eddœdd„Zee	edœdd„ZdS )rG   z)Flags that map to parsed keys/namespaces.r   r1   N)r,   c             C   s
   i | _ d S )N)Ú_flags)rJ   r   r   r   rK   ž   s    zFlags.__init__)Úkeyr,   c             C   sH   | j }x,|d d… D ]}||kr$d S || d }qW |j|d d ƒ d S )Nr1   ÚnestedéÿÿÿÿrO   )rL   Úpop)rJ   rM   ÚcontÚkr   r   r   Ú	unset_all¡   s    zFlags.unset_all)Úhead_keyÚrel_keyÚflagr,   c             C   sŠ   | j }x4|D ],}||kr,tƒ tƒ i dœ||< || d }qW xH|D ]@}||krb|| d j|ƒ n|htƒ i dœ||< || d }qBW d S )N)rH   Úrecursive_flagsrN   rN   rH   )rL   ÚsetÚadd)rJ   rT   rU   rV   rQ   rR   r   r   r   Úset_for_relative_key©   s    

zFlags.set_for_relative_key)rM   rV   Ú	recursiver,   c            C   sŒ   | j }|d d… |d  }}x4|D ],}||krBtƒ tƒ i dœ||< || d }q"W ||krntƒ tƒ i dœ||< || |r|dnd j|ƒ d S )Nr1   )rH   rW   rN   rN   rW   rH   rO   rO   )rL   rX   rY   )rJ   rM   rV   r[   rQ   Ú
key_parentÚkey_stemrR   r   r   r   rX   ¶   s    
z	Flags.set)rM   rV   r,   c             C   s„   |sdS | j }x@|d d… D ]0}||kr,dS || }||d krDdS |d }qW |d }||kr€|| }||d kp~||d kS dS )	NFr1   rW   TrN   rH   rO   rO   )rL   )rJ   rM   rV   rQ   rR   Z
inner_contr]   r   r   r   Úis_Á   s    z	Flags.is_)r&   r'   r(   r)   ÚFROZENÚEXPLICIT_NESTrK   ÚKeyrS   ÚintrZ   ÚboolrX   r^   r   r   r   r   rG   •   s   rG   c               @   sB   e Zd Zddœdd„Zddœeeedœdd	„Zedd
œdd„ZdS )rF   N)r,   c             C   s
   i | _ d S )N)r@   )rJ   r   r   r   rK   Ô   s    zNestedDict.__init__T)Úaccess_lists)rM   rd   r,   c            C   sX   | j }xL|D ]D}||kr i ||< || }|r>t|tƒr>|d }t|t ƒstdƒ‚qW |S )Nr1   z There is no nest behind this keyrO   )r@   Ú
isinstanceÚlistÚKeyError)rJ   rM   rd   rQ   rR   r   r   r   Úget_or_create_nestØ   s    

zNestedDict.get_or_create_nest)rM   r,   c             C   sV   | j |d d… ƒ}|d }||krH|| }t|tƒs<tdƒ‚|ji ƒ n
i g||< d S )Nr1   z/An object other than list found behind this keyrO   rO   )rh   re   rf   rg   Úappend)rJ   rM   rQ   Zlast_keyÚlist_r   r   r   Úappend_nest_to_listé   s    
zNestedDict.append_nest_to_list)	r&   r'   r(   rK   ra   rc   r@   rh   rk   r   r   r   r   rF   Ó   s   
rF   )rA   rB   Úcharsr,   c             C   s8   yx| | |kr|d7 }qW W n t k
r2   Y nX |S )Nr1   )r8   )rA   rB   rl   r   r   r   r6   õ   s    r6   )rA   rB   ÚexpectÚerror_onÚerror_on_eofr,   c      	      C   sŒ   y| j ||ƒ}W n4 tk
rD   t| ƒ}|r@t| |d|›d�ƒ‚Y nX |j| ||… ƒ}|rˆtt|ƒƒ}| j ||ƒ}t| |d|›d�ƒ‚|S )Nz
Expected "r#   zFound invalid character ")ÚindexÚ
ValueErrorÚlenr=   ÚintersectionÚnextÚiter)	rA   rB   rm   rn   ro   Znew_posZ	bad_charsZbad_charZbad_posr   r   r   Ú
skip_untilþ   s    rv   )rA   rB   r,   c             C   sH   y| | }W n t k
r$   d }Y nX |dkrDt| |d dtdd�S |S )Nr3   r1   r   F)rn   ro   )r8   rv   ÚILLEGAL_COMMENT_CHARS)rA   rB   rD   r   r   r   r>     s    
r>   c             C   s0   x*|}t | |tƒ}t| |ƒ}||kr|S qW d S )N)r6   ÚTOML_WS_AND_NEWLINEr>   )rA   rB   Zpos_before_skipr   r   r   Úskip_comments_and_array_ws!  s    
ry   )rA   rB   rC   r,   c             C   sÊ   |d7 }t | |tƒ}t| |ƒ\}}|jj|tjƒsB|jj|tjƒrVt| |d|› d�ƒ‚|jj	|tjdd� y|j
j|ƒ W n  tk
rš   t| |dƒ‚Y nX ||_| ||d … dkrÂt| |dƒ‚|d S )	Nr1   zCan not declare z twiceF)r[   zCan not overwrite a valueú]z.Expected "]" at the end of a table declaration)r6   r7   Ú	parse_keyrH   r^   rG   r`   r_   r=   rX   r?   rh   rg   rI   )rA   rB   rC   rM   r   r   r   r<   *  s     r<   c             C   sÐ   |d7 }t | |tƒ}t| |ƒ\}}|jj|tjƒrDt| |d|› �ƒ‚|jj|ƒ |jj	|tj
dd� y|jj|ƒ W n  tk
r”   t| |dƒ‚Y nX ||_| ||d … }|dkrÈt| |d|›d�ƒ‚|d S )	Né   z#Can not mutate immutable namespace F)r[   zCan not overwrite a valuez]]zFound "z3" at the end of an array declaration. Expected "]]")r6   r7   r{   rH   r^   rG   r_   r=   rS   rX   r`   r?   rk   rg   rI   )rA   rB   rC   rM   Z
end_markerr   r   r   r;   =  s&    r;   )rA   rB   rC   r*   r,   c             C   sæ   t | ||ƒ\}}}|d d… |d  }}|j| }|jj|tjƒrTt| |d|› �ƒ‚|jj|j|tjƒ y|j	j
|ƒ}	W n  tk
r˜   t| |dƒ‚Y nX ||	kr®t| |dƒ‚t|ttfƒrÚ|j| }
|jj|
tjdd� ||	|< |S )Nr1   z#Can not mutate immutable namespace zCan not overwrite a valueT)r[   rO   rO   )Úparse_key_value_pairrI   rH   r^   rG   r_   r=   rZ   r`   r?   rh   rg   re   r@   rf   rX   )rA   rB   rC   r*   rM   Úvaluer\   r]   Zabs_key_parentÚnestZabs_keyr   r   r   r:   Y  s$    

r:   )rA   rB   r*   r,   c             C   sv   t | |ƒ\}}y| | }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 pairr1   )r{   r8   r=   r6   r7   Úparse_value)rA   rB   r*   rM   rD   r~   r   r   r   r}   r  s    
r}   c             C   sœ   t | |ƒ\}}|g}t| |tƒ}xvy| | }W n tk
rF   d }Y nX |dkr\|t|ƒfS |d7 }t| |tƒ}t | |ƒ\}}|j|ƒ t| |tƒ}q"W d S )NÚ.r1   )Úparse_key_partr6   r7   r8   Útupleri   )rA   rB   Zkey_partrM   rD   r   r   r   r{   ‚  s    

r{   c             C   s‚   y| | }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 )Nú'r#   z(Invalid initial character for a key part)r8   ÚBARE_KEY_CHARSr6   Úparse_literal_strÚparse_one_line_basic_strr=   )rA   rB   rD   Ú	start_posr   r   r   rƒ   ”  s    


rƒ   c             C   s   |d7 }t | |dd�S )Nr1   F)Ú	multiline)Úparse_basic_str)rA   rB   r   r   r   rˆ   ¤  s    rˆ   c             C   sÎ   |d7 }g }t | |ƒ}| ||d … dkr6|d |fS x’t| ||ƒ\}}|j|ƒ t | |ƒ}| ||d … }|dkr€|d |fS |dkr”t| |dƒ‚|d7 }t | |ƒ}| ||d … dkr8|d |fS q8W d S )Nr1   rz   ú,zUnclosed array)ry   r�   ri   r=   )rA   rB   r*   ÚarrayÚvalÚcr   r   r   Úparse_array©  s$    



r�   c             C   sn  |d7 }t ƒ }tƒ }t| |tƒ}| ||d … dkrB|d |jfS �x$t| ||ƒ\}}}|d d… |d  }}|j|tjƒrŽt| |d|› �ƒ‚y|j	|dd�}	W n  t
k
rÀ   t| |dƒ‚Y nX ||	krÞt| |d|› d�ƒ‚||	|< t| |tƒ}| ||d … }
|
dk�r|d |jfS |
d	k�r0t| |d
ƒ‚t|ttfƒ�rR|j|tjdd� |d7 }t| |tƒ}qFW d S )Nr1   Ú}z#Can not mutate immutable namespace F)rd   zCan not overwrite a valuezDuplicate inline table key "r#   rŒ   zUnclosed inline tableT)r[   rO   rO   )rF   rG   r6   r7   r@   r}   r^   r_   r=   rh   rg   re   rf   rX   )rA   rB   r*   Znested_dictrH   rM   r~   r\   r]   r   r�   r   r   r   Úparse_inline_tableÁ  s8    

r’   F)rŠ   )rA   rB   rŠ   r,   c            C   sö   | ||d … }|d7 }|r„|dkr„|dkrpt | |tƒ}| ||d … }|sT|dfS |dkrht| |dƒ‚|d7 }t | |tƒ}|dfS |d	kr˜t| |d
ƒS |dkr¬t| |dƒS y|t| fS  tk
rð   t|ƒdkràt| |dƒ‚t| |dƒ‚Y nX d S )Nr|   ú\ ú\	ú\
r1   Ú r   zUnescaped "\" in a stringz\ué   z\Ué   zUnterminated string>   r”   r•   r“   )r6   r7   r=   rx   Úparse_hex_charÚBASIC_STR_ESCAPE_REPLACEMENTSrg   rr   )rA   rB   rŠ   Z	escape_idrD   r   r   r   Úparse_basic_str_escapeá  s.    r›   c             C   s   t | |dd�S )NT)rŠ   )r›   )rA   rB   r   r   r   Ú parse_basic_str_escape_multilineÿ  s    rœ   )rA   rB   Úhex_lenr,   c             C   sl   | ||| … }t |ƒ|ks.tdd„ |D ƒƒr:t| |dƒ‚||7 }t|dƒ}t|ƒs`t| |dƒ‚|t|ƒfS )Nc             s   s   | ]}|t jkV  qd S )N)ÚstringÚ	hexdigits)r   r�   r   r   r   r     s    z!parse_hex_char.<locals>.<genexpr>zInvalid hex valueé   z/Escaped character is not a Unicode scalar value)rr   Úanyr=   rb   Úis_unicode_scalar_valuer   )rA   rB   r�   Úhex_strZhex_intr   r   r   r™     s    
r™   c             C   s2   |d7 }|}t | |dtdd�}|d | ||… fS )Nr1   r…   T)rn   ro   )rv   ÚILLEGAL_LITERAL_STR_CHARS)rA   rB   r‰   r   r   r   r‡     s
    r‡   )rA   rB   Úliteralr,   c            C   sÆ   |d7 }| ||d … dkr$|d7 }|rTd}t | |dtdd�}| ||… }|d }nd}t| |dd	�\}}| ||d … |kr†||fS |d7 }| ||d … |kr®||| fS |d7 }|||d
  fS )Né   r1   r   r…   z'''T)rn   ro   r#   )rŠ   r|   )rv   Ú#ILLEGAL_MULTILINE_LITERAL_STR_CHARSr‹   )rA   rB   r¥   ÚdelimZend_posÚresultr   r   r   Úparse_multiline_str  s,    
rª   c      	      C   s  |rt }t}nt}t}d}|}xèy| | }W n  tk
rL   t| |dƒ‚Y nX |dkr¬|sr|d || ||…  fS | |d |d … dkr¢|d || ||…  fS |d7 }q |dkrà|| ||… 7 }|| |ƒ\}}||7 }|}q ||krüt| |d|›d�ƒ‚|d7 }q W d S )	Nr–   zUnterminated stringr#   r1   r¦   z""r$   zIllegal character ")Ú!ILLEGAL_MULTILINE_BASIC_STR_CHARSrœ   ÚILLEGAL_BASIC_STR_CHARSr›   r8   r=   )	rA   rB   rŠ   rn   Zparse_escapesr©   r‰   rD   Zparsed_escaper   r   r   r‹   6  s8    r‹   r   )rA   rB   Úregexr,   c             C   s,   |j | |ƒ}|st| |dƒ‚|jƒ |jƒ fS )NzUnexpected sequence)Úmatchr=   ÚendÚgroup)rA   rB   r­   r®   r   r   r   Úparse_regexV  s    r±   c             C   s´  y| | }W n t k
r$   d }Y nX |dkr^| |d |d … dkrTt| |dd�S t| |ƒS |dkr–| |d |d … dkrŒt| |d	d�S t| |ƒS |d
krÂ| |d |d … dkrÂ|d d	fS |dkrî| |d |d … dkrî|d dfS tj| |ƒ}|�r<yt|ƒ}W n" tk
�r.   t| |dƒ‚Y nX |j	ƒ |fS t
j| |ƒ}|�r^|j	ƒ t|ƒfS |dk�r | |d |d … }|dk�r¨t| |d tƒ\}}|t|dƒfS |dk�rÔt| |d tƒ\}}	|t|	dƒfS |dk�r t| |d tƒ\}}
|t|
dƒfS tj| |ƒ}|�r$|j	ƒ t||ƒfS |dk�r:t| ||ƒS |dk�rPt| ||ƒS | ||d … }|d!k�rz|d ||ƒfS | ||d … }|d"k�r¤|d ||ƒfS t| |d ƒ‚d S )#Nr#   r1   r¦   z""F)r¥   r…   z''TÚtr—   ZrueÚfé   ZalsezInvalid date or datetimeÚ0r|   Úxr    Úor˜   Úbr2   Ú{ÚinfÚnanú-infú+infú-nanú+nanzInvalid value>   rº   r»   >   r¿   r¾   r¼   r½   )r8   rª   rˆ   r‡   r   r®   r   rq   r=   r¯   r   r   r±   r   rb   r   r   r   r   r�   r’   )rA   rB   r*   rD   Zdatetime_matchZdatetime_objZlocaltime_matchrE   r£   Zoct_strZbin_strZnumber_matchZfirst_threeZ
first_fourr   r   r   r�   ]  sj    










r�   )rA   rB   Úmsgr,   c             C   s,   t tt dœdd„}t|› d|| |ƒ› d�ƒS )zZReturn a `TOMLDecodeError` where error message is suffixed with
    coordinates in source.)rA   rB   r,   c             S   sV   |t | ƒkrdS | jdd|ƒd }|dkr4|d }n|| jdd|ƒ }d|› d|› �S )Nzend of documentr   r   r1   zline z	, column )rr   ÚcountÚrindex)rA   rB   ÚlineÚcolumnr   r   r   Ú
coord_repr±  s    
z suffixed_err.<locals>.coord_reprz (at ú))ÚstrÚPosr%   )rA   rB   rÀ   rÅ   r   r   r   r=   ­  s    
r=   )Ú	codepointr,   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¢   )Prž   Útypesr   Útypingr   r   r   r   r   r   r	   r
   r   Zpip._vendor.tomli._rer   r   r   r   r   r   r   r   r   Úrer   Ú	frozensetÚranger   Z
ASCII_CTRLr¬   r«   r¤   r§   rw   r7   rx   Úascii_lettersÚdigitsr†   r9   rš   rÇ   Z
ParseFloatra   rb   rÈ   rq   r%   Úfloatr0   r.   r5   rG   rF   r6   rc   rv   r>   ry   r<   r;   r:   r}   r{   rƒ   rˆ   rf   r�   r@   r’   r›   rœ   r™   r‡   rª   r‹   r±   r�   r=   r¢   r   r   r   r   Ú<module>   s~   ,,"
  ?
>"
	!	 N