B
    Ç S]è  ã               @   s<   d Z ddlmZ ddlmZ dddœZG dd„ dejƒZd	S )
z¢Fixer for unicode.

* Changes unicode to str and unichr to chr.

* If "...\u..." is not unicode literal change it into "...\\u...".

* Change u"..." into "...".

é   )Útoken)Ú
fixer_baseÚchrÚstr)ZunichrZunicodec                   s,   e Zd ZdZdZ‡ fdd„Zdd„ Z‡  ZS )Ú
FixUnicodeTzSTRING | 'unicode' | 'unichr'c                s"   t t| ƒ ||¡ d|jk| _d S )NÚunicode_literals)Úsuperr   Ú
start_treeZfuture_featuresr   )ÚselfZtreeÚfilename)Ú	__class__© ú*lib/python3.7/lib2to3/fixes/fix_unicode.pyr	      s    zFixUnicode.start_treec             C   s¦   |j tjkr$| ¡ }t|j |_|S |j tjkr¢|j}| jsj|d dkrjd|krjd dd„ | 	d¡D ƒ¡}|d dkr‚|dd … }||jkr|S | ¡ }||_|S d S )	Né    z'"ú\z\\c             S   s    g | ]}|  d d¡  dd¡‘qS )z\uz\\uz\Uz\\U)Úreplace)Ú.0Úvr   r   r   ú
<listcomp>!   s   z(FixUnicode.transform.<locals>.<listcomp>ZuUé   )
Útyper   ÚNAMEZcloneÚ_mappingÚvalueÚSTRINGr   ÚjoinÚsplit)r
   ZnodeZresultsÚnewÚvalr   r   r   Ú	transform   s"    
zFixUnicode.transform)Ú__name__Ú
__module__Ú__qualname__ZBM_compatibleZPATTERNr	   r   Ú__classcell__r   r   )r   r   r      s   r   N)Ú__doc__Zpgen2r   Ú r   r   ZBaseFixr   r   r   r   r   Ú<module>	   s   
