B
    Khh\                 @   s   U d Z ddlZddlmZmZmZ dddddd	d
dddd
Zeeef ed< ee edddZeedddZ	ddddZ
edkre
  dS )z<Safely evaluate Python string literals without using eval().    N)DictMatchText
	'"\)
abfnrtvr   r   r   simple_escapes)mreturnc             C   s   |  dd\}}|dstt|}|d k	r4|S |dr|dd  }t|dk rbtd| yt|d}W q tk
r   td| d Y qX n2yt|d}W n" tk
r   td	| d Y nX t|S )
Nr      r   x   z!invalid hex string escape ('\%s')      z#invalid octal string escape ('\%s'))	group
startswithAssertionErrorr   getlen
ValueErrorintchr)r   alltailescZhexesi r*   :/tmp/pip-install-vv81h98y/black/blib2to3/pgen2/literals.pyescape   s$    

r,   )sr   c             C   s   |  ds(|  ds(tt| d d | d }| d d |d krL|d }| |sptt| t| d  t| dt| kst| t|t|  } tdt| S )Nr   r   r   r      r   z)\\(\'|\"|\\|[abfnrtv]|x.{0,2}|[0-7]{1,3}))r   r    reprendswithr"   resubr,   )r-   qr*   r*   r+   
evalString/   s    ($r4   )r   c              C   sD   x>t dD ]2} t| }t|}t|}||kr
t| ||| q
W d S )N   )ranger%   r/   r4   print)r)   cr-   er*   r*   r+   test:   s    r:   __main__)__doc__r1   typingr   r   r   r   __annotations__r,   r4   r:   __name__r*   r*   r*   r+   <module>   s"   	