U
    h                     @   sp   d Z ddlmZ ddlZddlmZ ddlmZ ddlm	Z	 ddl
mZmZmZ edZG d	d
 d
ejZdS )a  
For the ``future`` package.

Adds this import line:

    from past.builtins import str as oldstr

at the top and wraps any unadorned string literals 'abc' or explicit byte-string
literals b'abc' in oldstr() calls so the code has the same behaviour on Py3 as
on Py2.6/2.7.
    )unicode_literalsN)
fixer_base)token)syms)future_importtouch_import_topwrap_in_fn_callz[^uUrR]?[\'\"]c                   @   s   e Zd ZdZdZdd ZdS )FixOldstrWrapTSTRINGc                 C   sX   |j tjkrTtdd| t|jrT| }d|_d|j |_t	d|g|jd}|S d S )Nz
past.typesZoldstr b)prefix)
typer   r
   r   _literal_rematchvaluecloner   r   )selfnoderesultsnewwrapped r   S/var/www/html/venv/lib/python3.8/site-packages/libfuturize/fixes/fix_oldstr_wrap.py	transform   s    zFixOldstrWrap.transformN)__name__
__module____qualname__ZBM_compatibleZPATTERNr   r   r   r   r   r	      s   r	   )__doc__
__future__r   reZlib2to3r   Zlib2to3.pgen2r   Zlib2to3.fixer_utilr   Zlibfuturize.fixer_utilr   r   r   compiler   ZBaseFixr	   r   r   r   r   <module>   s   
