a
    g                     @  s  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 ddl
mZ dd	lmZ dd
lmZ ddlmZ ddlmZ ddlmZ eeddZdZdddZeejdddddddZeejdddddddZeejddddddd ZdS )!z
Replace imports from django.utils.encoding:
https://docs.djangoproject.com/en/3.0/releases/3.0/#django-utils-encoding-force-text-and-smart-text  # noqa: E501
    )annotationsN)Iterable)partial)Offset)ast_start_offset)is_rewritable_import_from)Fixer)State)	TokenFunc)find_and_replace_name)update_import_names)   r   )min_versionzdjango.utils.encodingZ	force_strZ	smart_str)Z
force_textZ
smart_textr	   zast.ImportFromztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])statenodeparentsreturnc                 c  s.   |j tkr*t|r*t|tt|tdfV  d S )N)r   Zname_map)moduleMODULEr   r   r   r   NAMES)r   r   r    r   c/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/utils_encoding.pyvisit_ImportFrom"   s    r   zast.Namec                 c  s<   |j  }tv r8|| jt v r8t|tt|t| dfV  d S )Nnamenew)idr   from_importsr   r   r   r   r   r   r   r   r   r   r   
visit_Name.   s    
r   zast.Attributec                 c  sV   |j  }tv rRt|jtjrR|jjdkrRd| jd v rRt|t	t
|t| dfV  d S )Nencodingzdjango.utilsr   )attrr   
isinstancevalueastNamer   r   r   r   r   r   r   r   r   visit_Attribute:   s    

r&   )__doc__
__future__r   r$   collections.abcr   	functoolsr   Ztokenize_rtr   Zdjango_upgrade.astr   r   Zdjango_upgrade.datar   r	   r
   Zdjango_upgrade.tokensr   r   __name__Zfixerr   r   register
ImportFromr   r%   r   	Attributer&   r   r   r   r   <module>   s4   


