o
    §4^cè  ã                   @   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)ÚunichrÚ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v | _d S )NÚunicode_literals)Úsuperr   Ú
start_treeÚfuture_featuresr	   )ÚselfÚtreeÚfilename©Ú	__class__© ú0/usr/lib/python3.10/lib2to3/fixes/fix_unicode.pyr      s   zFixUnicode.start_treec                 C   s¦   |j tjkr| ¡ }t|j |_|S |j tjkrQ|j}| js5|d dv r5d|v r5d dd„ | 	d¡D ƒ¡}|d dv rA|dd … }||jkrH|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>ÚuUé   )
Útyper   ÚNAMEÚcloneÚ_mappingÚvalueÚSTRINGr	   ÚjoinÚsplit)r   ÚnodeÚresultsÚnewÚvalr   r   r   Ú	transform   s$   
þ
ózFixUnicode.transform)Ú__name__Ú
__module__Ú__qualname__ÚBM_compatibleÚPATTERNr   r(   Ú__classcell__r   r   r   r   r      s
    r   N)Ú__doc__Úpgen2r   Ú r   r   ÚBaseFixr   r   r   r   r   Ú<module>   s
    

