o
   (]6                   @   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 )
zFixer 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_treeZfuture_featuresr	   )selfZtreefilename	__class__ ?/app/.heroku/python/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>ZuU   )
typer   NAMEZclone_mappingvalueSTRINGr	   joinsplit)r   Znode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
    

