B
    KkdV(                 @   s^  d dl Z d dlZ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rPe
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-gxxfd9b7/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 )Nr   )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	xR|D ]H\}	}
|	d
kr|
\}}||kr d| |d||< qn|	dk}|}xL|
d d D ]<}t ||tr|| d \}}q|	|d  f\}}qW  }|
d }||krL|r<| fg||< n| f||< qnt || tr|sj d || 
| f qn|r d || \}}|d k	r d ||f||< qnW  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r* dr*dd  |dkrrr\tfdddd  D r\d  fdd	D n"|d
kr  fdd	D ||S )Nstrr   r   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>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    )
startswith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                sp   | d kr } x\|D ]T}|| kr( d || }t |trRfdd|D | |< q|d |d | |< qW | S )Nkey_table_conflictc                s   g | ]\}} ||qS r   r   )r   sctbl)merge_tablesr   r   r%   S   s    z/loads.<locals>.merge_tables.<locals>.<listcomp>r   r   )
isinstancelist)scopetablesr   r
   )r   r3   r   r   r   r3   K   s    

zloads.<locals>.merge_tables)r4   bytesdecodereplace_Source_p_tomlformatgetr5   
setdefaultappend)sr   r   r   rootr7   r6   srcastr)   r!   r   r
   is_table_arraycurr   d	old_scope
next_tabler   )r   r   r3   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   )rA   _pos_last	_filenamebacktrack_stack)selfrA   r   r   r   r   __init__[   s
    z_Source.__init__c             C   s   | j S )N)rK   )rN   r   r   r   lastb   s    z_Source.lastc             C   s   | j S )N)rJ   )rN   r   r   r   r   e   s    z_Source.posc             C   s
   |  d S )N)_expect)rN   r   r   r   failh   s    z_Source.failc             C   s6   | j r2| j d | _| dd  | _ | | j | jS d S )Nr   r   )rA   rK   _advance)rN   r   r   r   consume_dotk   s    z_Source.consume_dotc             C   s   |  |  S )N)rQ   rT   )rN   r   r   r   
expect_dots   s    z_Source.expect_dotc             C   s   | j sd| _dS dS )N TF)rA   rK   )rN   r   r   r   consume_eofv   s    z_Source.consume_eofc             C   s   |  |  S )N)rQ   rW   )rN   r   r   r   
expect_eof|   s    z_Source.expect_eofc             C   s8   | j |r4| j t|d  | _ || _| | dS dS )NTF)rA   r'   lenrK   rS   )rN   rA   r   r   r   consume   s    
z_Source.consumec             C   s   |  | |S )N)rQ   rZ   )rN   rA   r   r   r   expect   s    z_Source.expectc             C   sH   | | j}|rD| jt|dd  | _|| _| |d |S d S )Nr   )matchrA   rY   grouprK   rS   )rN   remr   r   r   
consume_re   s    z_Source.consume_rec             C   s   |  | |S )N)rQ   r`   )rN   r^   r   r   r   	expect_re   s    z_Source.expect_rec             C   s   | j | j| jf d S )N)rM   r@   rA   rJ   )rN   r   r   r   	__enter__   s    z_Source.__enter__c             C   s.   |d kr| j   n| j  \| _| _|tkS )N)rM   poprA   rJ   r   )rN   typer!   	tracebackr   r   r   __exit__   s    z_Source.__exit__c             C   s   | j | jf| jd< d S )Nr-   )rA   rJ   rM   )rN   r   r   r   commit   s    z_Source.commitc             C   s$   |s t d| jd | jd | j|S )Nr   r   r   )r   rJ   rL   )rN   rr   r   r   rQ      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   r-   r   r   )rfindrJ   rY   count)rN   rA   
suffix_posr   r   r   rS      s    
 z_Source._advance)N)__name__
__module____qualname__rO   rP   r   rR   rT   rU   rW   rX   rZ   r[   r`   ra   rb   rf   rg   rQ   rS   r   r   r   r   r;   Z   s"   
	r;   z!(?:[ \t]|#[^\n]*\n|#[^\n]*\Z|\n)*c             C   s   |  t d S )N)ra   _ews_re)rA   r   r   r   _p_ews   s    rp   z[ \t]*c             C   s   |  t d S )N)ra   _ws_re)rA   r   r   r   _p_ws   s    rr   r   	"\)bnrh   r   rv   rw   fz[^"\\\000-\037]*zu([0-9a-fA-F]{4})zU([0-9a-fA-F]{8})z[btnfr\"\\]z
[ 	
]*c             C   s   g }x| | |d | ds(P | tr4q| tsH| trt| 	 dd}d|  krpdk r|n n| 
  | t| q| t | t| 	 d  qW d|S )Nr   rw   r      i   i   rV   )r@   ra   r]   rZ   r`   _newline_esc_re_short_uni_re_long_uni_reintrP   rR   _chr_escapes_re_escapesjoin)rA   contentresr
   r   r   r   _p_basicstr_content   s    


r   z[0-9a-zA-Z-_]+c          	   C   s   | $ |  d t| t}|  d |S Q R X | dr|| dr^| td}|  d n| td}|  d |S | tdS )Nrv   'z''r   z''')	r[   r   _basicstr_rerZ   ra   _litstr_ml_rer]   
_litstr_re_key_re)rA   rh   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rft| t}| d nt| t}| d d	|||fS | d
r| dr| t	d}| d n| t
	d}| d
 d	|||fS | tr|  }d|	dt||fS | trl|  	d}|dd}d|ksJd|ksJd|krZd|t||fS d|t|d|fS | drg }| J xBt|  |t| |d |   t|  | d |   qW W d Q R X t|  | d dd ||fS | drt|  | }| dst| }t|  | d t|  t| |d||< t|  xT| drt|  t| }t|  | d t|  t| |d||< t|  qPW | d dd ||fS |   d S ) NtrueboolTfalseFrv   z""z"""r   r   z''r   z'''datetime_rV   .eEfloatr   
   [)r   ,]r   {}=r&   )r   rZ   rP   r   _basicstr_ml_rer[   r   ra   r   r]   r   r`   r   r   	_float_rer:   r   r   rp   r@   _p_valuerg   rr   r   rR   )rA   r   r   rh   r_   itemsr   r   r   r   r      s|    














r   c             C   s   |   }| dr| d}t|  t| g}t|  x,| drbt|  |t|  t|  q8W | d |r|| d |rdnd||fS t| }t|  | d t|  t| |d}d||f|fS )	Nr   r   r   r,   r&   r   )r   r+   )r   rZ   rr   r   r@   r[   r   )rA   r   r   is_arraykeyskeyr!   r   r   r   _p_stmt2  s(    





r   z(?:[ \t]*(?:#[^\n]*)?\n)+[ \t]*c          	   C   sl   g }t |  | B |t| |d x(|   | t |t| |d q&W W d Q R X t |  |   |S )N)r   )rp   r@   r   rg   ra   _stmtsep_rerX   )rA   r   stmtsr   r   r   r<   J  s    
 r<   )'stringr^   sysr   corer   utilsr   r   version_infounichrr   chrdictr   r   r;   compilero   rp   rq   rr   r   r   r~   r   r   r}   r   r   r   r   r   r   r   r   r   r   r<   r   r   r   r   <module>   s<    MU













K
