U
    P^E(                     @   sN  d dl Z d dlZddlmZ ddlmZmZ ejd  dkr@eZ	ne
Z	dd efdd	Zd
dd efddZG dd dZe dZdd Ze dZdd ZddddddddZe dZe dZe d Ze d!Ze d"Zefd#d$Ze d%Zd&d' Ze d(Ze d)Ze d*Ze d+Z d,d- Z!d.d/ Z"e d0Z#d1d2 Z$dS )3    N   	TomlError)
rfc3339_reparse_rfc3339_re   c                 C   s   |S N txvr	   r	   :/tmp/pip-install-220asx0h/pip/pip/_vendor/pytoml/parser.py<lambda>
       r   c              	   C   s    t |  ||t| dt| dS )Nname)	translateobject_pairs_hookfilename)loadsreadgetattrrepr)finr   r   r	   r	   r   load
   s    r   z<string>c                 C   s   |S r   r	   r
   r	   r	   r   r      r   c                    s  t | tr| d} | dd}  } }|}t| d}t|d}fdd  fdd	|D ]D\}	}
|	d
kr|
\}}||kr d| |d||< qj|	dk}|}|
d d D ]<}t ||tr|| d \}}q|	|d  f\}}qƈ }|
d }||krD|r4| fg||< n| f||< qjt || trx|sb d || 
| f qj|r d || \}}|d k	r d ||f||< qj fdd||S )Nzutf-8z

)r   r   c                    s   t | d d  d S Nr   r   r   )msg)r   posr	   r   error   s    zloads.<locals>.errorc                    s   | \}}}|dkrTr>t fdddd  D r>d  fddD n"|dkrv  fd	dD ||S )
Narrayc                 3   s&   | ]\}}}}| d  d  kV  qdS )r   Nr	   ).0kr   r   p)valuer	   r   	<genexpr>    s    
 z/loads.<locals>.process_value.<locals>.<genexpr>r   zarray-type-mismatchc                    s   g | ]}| d qS r   r	   )r"   item)r   process_valuer	   r   
<listcomp>"   s     z0loads.<locals>.process_value.<locals>.<listcomp>tablec                    s    g | ]}||  d fqS r'   r	   )r"   r#   )r   r)   r%   r	   r   r*   $   s     )any)r   r   kindtextr   )r    r)   r   )r   r%   r   r)      s    "zloads.<locals>.process_valuekvz2duplicate_keys. Key "{0}" was used more than once.table_arraytable_type_mismatchduplicate_tablesc                    sl   | d kr } |D ]T}|| kr& d || }t |trPfdd|D | |< q|d |d | |< q| S )Nkey_table_conflictc                    s   g | ]\}} ||qS r	   r	   )r"   sctbl)merge_tablesr	   r   r*   Q   s     z/loads.<locals>.merge_tables.<locals>.<listcomp>r   r   )
isinstancelist)scopetablesr#   r   )r    r7   r   r	   r   r7   I   s    
zloads.<locals>.merge_tables)r8   bytesdecodereplace_Source_p_tomlformatgetr9   
setdefaultappend)sr   r   r   rootr;   r:   srcastr-   r%   r#   r   is_table_arraycurr   d	old_scope
next_tabler	   )r    r   r7   r   r   r)   r   r   r      sP    




r   c                   @   s   e Zd Zd$ddZdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# ZdS )%r?   Nc                 C   s"   || _ d| _d | _|| _g | _d S )N)r   r   )rE   _pos_last	_filenamebacktrack_stack)selfrE   r   r	   r	   r   __init__Y   s
    z_Source.__init__c                 C   s   | j S r   )rO   rR   r	   r	   r   last`   s    z_Source.lastc                 C   s   | j S r   )rN   rT   r	   r	   r   r   c   s    z_Source.posc                 C   s
   |  d S r   )_expectrT   r	   r	   r   failf   s    z_Source.failc                 C   s6   | j r2| j d | _| dd  | _ | | j | jS d S r   )rE   rO   _advancerT   r	   r	   r   consume_doti   s    z_Source.consume_dotc                 C   s   |  |  S r   )rV   rY   rT   r	   r	   r   
expect_dotq   s    z_Source.expect_dotc                 C   s   | j sd| _dS dS )N TF)rE   rO   rT   r	   r	   r   consume_eoft   s    z_Source.consume_eofc                 C   s   |  |  S r   )rV   r\   rT   r	   r	   r   
expect_eofz   s    z_Source.expect_eofc                 C   s8   | j |r4| j t|d  | _ || _| | dS dS )NTF)rE   
startswithlenrO   rX   rR   rE   r	   r	   r   consume}   s    
z_Source.consumec                 C   s   |  | |S r   )rV   ra   r`   r	   r	   r   expect   s    z_Source.expectc                 C   sH   | | j}|rD| jt|dd  | _|| _| |d |S d S )Nr   )matchrE   r_   grouprO   rX   )rR   remr	   r	   r   
consume_re   s    z_Source.consume_rec                 C   s   |  | |S r   )rV   rg   )rR   re   r	   r	   r   	expect_re   s    z_Source.expect_rec                 C   s   | j | j| jf d S r   )rQ   rD   rE   rN   rT   r	   r	   r   	__enter__   s    z_Source.__enter__c                 C   s.   |d kr| j   n| j  \| _| _|tkS r   )rQ   poprE   rN   r   )rR   typer%   	tracebackr	   r	   r   __exit__   s    z_Source.__exit__c                 C   s   | j | jf| jd< d S )Nr1   )rE   rN   rQ   rT   r	   r	   r   commit   s    z_Source.commitc                 C   s$   |s t d| jd | jd | j|S )Nr   r   r   )r   rN   rP   )rR   rr	   r	   r   rV      s    z_Source._expectc                 C   sX   | d}|dkr2| jd | jd t| f| _n"| jd |d t|| f| _d S )Nr   r1   r   r   )rfindrN   r_   count)rR   rE   
suffix_posr	   r	   r   rX      s    
 z_Source._advance)N)__name__
__module____qualname__rS   rU   r   rW   rY   rZ   r\   r]   ra   rb   rg   rh   ri   rm   rn   rV   rX   r	   r	   r	   r   r?   X   s"   
	r?   z!(?:[ \t]|#[^\n]*\n|#[^\n]*\Z|\n)*c                 C   s   |  t d S r   )rh   _ews_rerE   r	   r	   r   _p_ews   s    rx   z[ \t]*c                 C   s   |  t d S r   )rh   _ws_rerw   r	   r	   r   _p_ws   s    rz   r   	"\)bnro   r   r~   r   fz[^"\\\000-\037]*zu([0-9a-fA-F]{4})zU([0-9a-fA-F]{8})z[btnfr\"\\]z
[ 	
]*c                 C   s   g }| | |d | ds&q| tr2q| tsF| trt| 	 dd}d|  krndk rzn n| 
  | t| q| t | t| 	 d  qd|S )Nr   r   r      i   i   r[   )rD   rh   rd   ra   rg   _newline_esc_re_short_uni_re_long_uni_reintrU   rW   _chr_escapes_re_escapesjoin)rE   contentresr   r	   r	   r   _p_basicstr_content   s    


r   z[0-9a-zA-Z-_]+c              
   C   s   | 0 |  d t| t}|  d |W  5 Q R  S Q R X | dr| drt| d | td}|  d n| td}|  d |S | tdS )Nr~   '''r   r   ''')	rb   r   _basicstr_rera   rh   _litstr_ml_rerd   
_litstr_re_key_re)rE   ro   r	   r	   r   _p_key   s    






r   zH[+-]?(?:0|[1-9](?:_?\d)*)(?:\.\d(?:_?\d)*)?(?:[eE][+-]?(?:\d(?:_?\d)*))?z&(?:""?(?!")|[^"\\\000-\011\013-\037])*z[^'\000\010\012-\037]*z((?:(?:|'|'')(?:[^'\000-\010\013-\037]))*c              	   C   s  |   }| dr"d|  d|fS | dr<d|  d|fS | dr| drp| d t| t}| d	 nt| t}| d d
|||fS | dr| dr| d | t	d}| d n| t
	d}| d d
|||fS | tr|  }d|	dt||fS | tr|  	d}|dd}d|ks^d|ks^d|krnd|t||fS d|t|d|fS | drg }| F t|  |t| |d |   t|  | d |   qW 5 Q R X t|  | d dd ||fS | drt|  | }| dst| }t|  | d t|  t| |d||< t|  | drt|  t| }t|  | d t|  t| |d||< t|  q^| d d d ||fS |   d S )!NtrueboolTfalseFr~   z""r   z"""strr   r   r   r   datetime_r[   .eEfloatr   
   [r   ,]r!   {}=r+   )r   ra   rU   r   _basicstr_ml_rerb   r   rh   r   rd   r   rg   r   r   	_float_rer>   r   r   rx   rD   _p_valuern   rz   r   rW   )rE   r   r   ro   rf   itemsr#   r	   r	   r   r      s~    
















r   c                 C   s   |   }| dr| d}t|  t| g}t|  | dr`t|  |t|  t|  q6| d |rx| d |rdnd||fS t| }t|  | d t|  t| |d}d||f|fS )	Nr   r   r   r0   r+   r   r   r/   )r   ra   rz   r   rD   rb   r   )rE   r   r   is_arraykeyskeyr%   r	   r	   r   _p_stmt3  s(    







r   z(?:[ \t]*(?:#[^\n]*)?\n)+[ \t]*c              	   C   sh   g }t |  | > |t| |d |   | t |t| |d q$W 5 Q R X t |  |   |S )Nr   )rx   rD   r   rn   rh   _stmtsep_rer]   )rE   r   stmtsr	   r	   r   r@   K  s    
r@   )%re   syscorer   utilsr   r   version_infounichrr   chrdictr   r   r?   compilerv   rx   ry   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r@   r	   r	   r	   r   <module>   s@   KU


 









M
