U
    
HaW                  	   @   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   =/tmp/pip-unpacked-wheel-tx790h60/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   |   }t||dS )zParse TOML from a file object.r+   )readloads)r-   r,   sr   r   r   loadF   s    r2   )r1   r,   r.   c                C   sR  |  dd}d}t }t||t}z|| }W n tk
rH   Y qJY nX |dkr\|d7 }q|tkrt||||}t||t}nv|dkrz||d  }W n tk
r   d}Y nX |dkrt|||}nt|||}t||t}n|dkrt	||dt
||}z|| }W n tk
r(   Y qJY nX |dkr@t	||d	|d7 }q|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)r1   r,   srcposstatecharsecond_charr   r   r   r0   L   sL    



  
r0   c                   @   s   e Zd ZddddZdS )r7   Nr.   c                 C   s   t  | _t | _d| _d S )Nr   )
NestedDictrA   Flagsflagsheader_namespaceselfr   r   r   __init__   s    zState.__init__)r'   r(   r)   rO   r   r   r   r   r7      s   r7   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 )rJ   z)Flags that map to parsed keys/namespaces.r   r3   NrH   c                 C   s
   i | _ d S r   _flagsrM   r   r   r   rO      s    zFlags.__init__keyr.   c                 C   sF   | j }|d d D ]}||kr$ d S || d }q||d d  d S )Nnested)rQ   pop)rN   rS   contkr   r   r   	unset_all   s    zFlags.unset_all)head_keyrel_keyflagr.   c                 C   s   | j }|D ],}||kr*t t i d||< || d }q
|D ]@}||kr\|| d | n|ht i d||< || d }q<d S )NrK   recursive_flagsrU   rU   rK   rQ   setadd)rN   rZ   r[   r\   rW   rX   r   r   r   set_for_relative_key   s    zFlags.set_for_relative_key)rS   r\   	recursiver.   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 )NrT   r]   rU   r^   rK   r_   )rN   rS   r\   rc   rW   
key_parentkey_stemrX   r   r   r   r`      s    z	Flags.set)rS   r\   r.   c                 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 )NFrT   r^   TrU   rK   rP   )rN   rS   r\   rW   rX   Z
inner_contre   r   r   r   is_   s    
z	Flags.is_)r'   r(   r)   r*   FROZENEXPLICIT_NESTrO   KeyrY   intrb   boolr`   rf   r   r   r   r   rJ      s   rJ   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 )rI   NrH   c                 C   s
   i | _ d S r   )rB   rM   r   r   r   rO      s    zNestedDict.__init__Taccess_lists)rS   rm   r.   c                C   sT   | j }|D ]D}||kri ||< || }|r<t|tr<|d }t|t s
tdq
|S )NrT   z There is no nest behind this key)rB   
isinstancelistKeyError)rN   rS   rm   rW   rX   r   r   r   get_or_create_nest   s    

zNestedDict.get_or_create_nestrR   c                 C   sV   |  |d d }|d }||krH|| }t|ts<td|i  n
i g||< d S )NrT   z/An object other than list found behind this key)rq   rn   ro   rp   append)rN   rS   rW   Zlast_keylist_r   r   r   append_nest_to_list   s    
zNestedDict.append_nest_to_list)	r'   r(   r)   rO   ri   rk   rB   rq   rt   r   r   r   r   rI      s   rI   )rC   rD   charsr.   c                 C   s4   z| | |kr|d7 }qW n t k
r.   Y nX |S )Nr3   )r:   )rC   rD   ru   r   r   r   r8      s    r8   )rC   rD   expecterror_onerror_on_eofr.   c          	   	   C   s   z|  ||}W n4 tk
rD   t| }|r@t| |d|dY nX || || }|rtt|}|  ||}t| |d|d|S )Nz
Expected "r$   zFound invalid character ")index
ValueErrorlenr?   intersectionnextiter)	rC   rD   rv   rw   rx   new_posZ	bad_charsZbad_charZbad_posr   r   r   
skip_until   s    r   rC   rD   r.   c                 C   sH   z| | }W n t k
r$   d }Y nX |dkrDt| |d dtddS |S )Nr5   r3   r    Frw   rx   )r:   r   ILLEGAL_COMMENT_CHARS)rC   rD   rF   r   r   r   r@     s    
    r@   c                 C   s,   |}t | |t}t| |}||kr |S q d S r   )r8   TOML_WS_AND_NEWLINEr@   )rC   rD   Zpos_before_skipr   r   r   skip_comments_and_array_ws!  s
    
r   )rC   rD   rE   r.   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Y nX ||_| ||d  dkrt| |d|d S )	Nr3   zCan not declare z twiceFrc   Can not overwrite a value]z.Expected "]" at the end of a table declaration)r8   r9   	parse_keyrK   rf   rJ   rh   rg   r?   r`   rA   rq   rp   rL   )rC   rD   rE   rS   r   r   r   r>   *  s     r>   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Y nX ||_| ||d  }|dkrt| |d|d|d S )	N   #Can not mutate immutable namespace Fr   r   z]]zFound "z3" at the end of an array declaration. Expected "]]")r8   r9   r   rK   rf   rJ   rg   r?   rY   r`   rh   rA   rt   rp   rL   )rC   rD   rE   rS   Z
end_markerr   r   r   r=   =  s(    
r=   )rC   rD   rE   r,   r.   c                 C   s   t | ||\}}}|d d |d  }}|j| }|j|tjrTt| |d| |j|j|tj z|j	
|}	W n  tk
r   t| |dY nX ||	krt| |dt|ttfr|j| }
|jj|
tjdd ||	|< |S )NrT   r   r   Tr   )parse_key_value_pairrL   rK   rf   rJ   rg   r?   rb   rh   rA   rq   rp   rn   rB   ro   r`   )rC   rD   rE   r,   rS   valuerd   re   Zabs_key_parentnestZabs_keyr   r   r   r<   Y  s*    
  
r<   )rC   rD   r,   r.   c                 C   sv   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 pairr3   )r   r:   r?   r8   r9   parse_value)rC   rD   r,   rS   rF   r   r   r   r   r   r  s    
r   c                 C   s   t | |\}}|g}t| |t}z| | }W n tk
rD   d }Y nX |dkrZ|t|fS |d7 }t| |t}t | |\}}|| t| |t}q d S )N.r3   )parse_key_partr8   r9   r:   tuplerr   )rC   rD   Zkey_partrS   rF   r   r   r   r     s    

r   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 )N'r$   z(Invalid initial character for a key part)r:   BARE_KEY_CHARSr8   parse_literal_strparse_one_line_basic_strr?   )rC   rD   rF   	start_posr   r   r   r     s    


r   c                 C   s   |d7 }t | |ddS )Nr3   F	multiline)parse_basic_strrC   rD   r   r   r   r     s    r   c                 C   s   |d7 }g }t | |}| ||d  dkr6|d |fS t| ||\}}|| t | |}| ||d  }|dkr~|d |fS |dkrt| |d|d7 }t | |}| ||d  dkr6|d |fS q6d S )Nr3   r   ,zUnclosed array)r   r   rr   r?   )rC   rD   r,   arrayvalcr   r   r   parse_array  s"    



r   c                 C   sh  |d7 }t  }t }t| |t}| ||d  dkrB|d |jfS t| ||\}}}|d d |d  }}||tjrt| |d| z|j	|dd}	W n  t
k
r   t| |dY nX ||	krt| |d| d	||	|< t| |t}| ||d  }
|
dkr|d |jfS |
d
kr,t| |dt|ttfrN|j|tjdd |d7 }t| |t}qBd S )Nr3   }rT   r   Frl   r   zDuplicate inline table key "r$   r   zUnclosed inline tableTr   )rI   rJ   r8   r9   rB   r   rf   rg   r?   rq   rp   rn   ro   r`   )rC   rD   r,   Znested_dictrK   rS   r   rd   re   r   r   r   r   r   parse_inline_table  s6    

r   Fr   )rC   rD   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rt| |d	S |d
krt| |dS z|t| fW S  tk
r   t|dkrt| |dt| |dY nX d S )Nr   >   \ \	\
r   r3    r    zUnescaped "\" in a stringz\u   z\U   Unterminated string)r8   r9   r?   r   parse_hex_charBASIC_STR_ESCAPE_REPLACEMENTSrp   r{   )rC   rD   r   Z	escape_idrF   r   r   r   parse_basic_str_escape  s.    r   c                 C   s   t | |ddS )NTr   )r   r   r   r   r    parse_basic_str_escape_multiline  s    r   )rC   rD   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 r   )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)r{   anyr?   rj   is_unicode_scalar_valuer   )rC   rD   r   hex_strZhex_intr   r   r   r     s    
r   c                 C   s2   |d7 }|}t | |dtdd}|d | || fS )Nr3   r   Tr   )r   ILLEGAL_LITERAL_STR_CHARS)rC   rD   r   r   r   r   r     s        r   )rC   rD   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   r3   r    r   z'''Tr   r$   r   r   )r   #ILLEGAL_MULTILINE_LITERAL_STR_CHARSr   )rC   rD   r   delimZend_posresultr   r   r   parse_multiline_str  s.    
r   c          	      C   s  |rt }t}nt}t}d}|}z| | }W n  tk
rJ   t| |dY nX |dkr|sp|d || ||  fS | |d |d  dkr|d || ||  fS |d7 }q|dkr|| || 7 }|| |\}}||7 }|}q||krt| |d|d|d7 }qd S )	Nr   r   r$   r3   r   ""r%   zIllegal character ")!ILLEGAL_MULTILINE_BASIC_STR_CHARSr   ILLEGAL_BASIC_STR_CHARSr   r:   r?   )	rC   rD   r   rw   Zparse_escapesr   r   rF   Zparsed_escaper   r   r   r   6  s6    r   r   )rC   rD   regexr.   c                 C   s,   | | |}|st| |d| | fS )NzUnexpected sequence)matchr?   endgroup)rC   rD   r   r   r   r   r   parse_regexV  s    r   c                 C   s  z| | }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rt| |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| |}|r<zt|}W n" tk
r.   t| |dY nX |	 |fS t
| |}|r^|	 t|fS |dkr | |d |d  }|dkrt| |d t\}}|t|dfS |dkrt| |d t\}}	|t|	dfS |dkr t| |d t\}}
|t|
dfS t| |}|r$|	 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$   r3   r   r   F)r   r   z''Ttr   Zruef   ZalsezInvalid date or datetime0r   xr   or   br4   {>   naninf>   -inf-nan+inf+nanzInvalid value)r:   r   r   r   r   r   r   rz   r?   r   r   r   r   r   rj   r   r   r   r   r   r   )rC   rD   r,   rF   Zdatetime_matchZdatetime_objZlocaltime_matchrG   r   Zoct_strZbin_strZnumber_matchZfirst_threeZ
first_fourr   r   r   r   ]  sj    










r   )rC   rD   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.r   c                 S   sV   |t | krdS | dd|d }|dkr4|d }n|| dd| }d| d| S )Nzend of documentr    r   r3   zline z	, column )r{   countrindex)rC   rD   linecolumnr   r   r   
coord_repr  s    
z suffixed_err.<locals>.coord_reprz (at ))strPosr&   )rC   rD   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   r   r9   r   ascii_lettersdigitsr   r;   r   r   Z
ParseFloatri   rj   r   rz   r&   floatr2   r0   r7   rJ   rI   r8   rk   r   r@   r   r>   r=   r<   r   r   r   r   ro   r   rB   r   r   r   r   r   r   r   r   r   r?   r   r   r   r   r   <module>   s   ,,"  ?
>"
	  !  
	   
P