a
    g$                     @  s6  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 ddlmZ ddlmZ ddlmZ eeddZdZddiZdddddZeejdddddd d!Zd"d#dd$d%d&d'd(d)Zeej dd*dddd+d,Z!dS )-zx
Replace imports from django.utils.http:
https://docs.djangoproject.com/en/3.0/releases/3.0/#features-deprecated-in-3-0
    )annotationsN)Iterable)partial)Offset)Token)ast_start_offset)is_rewritable_import_from)Fixer)State)	TokenFunc)extract_indent)find_and_replace_name)insert)update_import_names)   r   )min_versionzdjango.utils.httpZis_safe_urlZurl_has_allowed_host_and_schemequote
quote_plusunquoteunquote_plus)ZurlquoteZurlquote_plusZ
urlunquoteZurlunquote_plusr
   zast.ImportFromztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])statenodeparentsreturnc                 c  s   |j tkrt|ri }i }|jD ]@}|jtv r@t|j ||j< q |jtv r d||j< |j||j< q |rt|t	t
|||dfV  d S )N )r   name_mapurllib_names)moduleMODULEr   namesnameRENAMESURLLIB_NAMESasnamer   r   
fix_import)r   r   r   r   r   alias r&   _/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/utils_http.pyvisit_ImportFrom*   s     



r(   zlist[Token]intzdict[str, str]zdict[str, str | None]None)tokensir   r   r   r   c          
      C  s   t | |\}}t| |||d |rg }| D ]8\}}	|	d u rN|t|  q.|t|  d|	  q.t| || dd| dd d S )N)r   r   z as zfrom urllib.parse import z, 
)Znew_src)r   r   itemsappendr"   r   join)
r+   r,   r   r   r   jindentZurllib_importsr    r#   r&   r&   r'   r$   C   s    r$   zast.Namec                 c  s`   |j  }| jt v r\|tv r&t| }n|tv r8t| }nd }|d ur\t|tt||dfV  d S )N)r    new)idZfrom_importsr   r!   r"   r   r   r   )r   r   r   r    new_namer&   r&   r'   
visit_Name^   s    

r6   )"__doc__
__future__r   astcollections.abcr   	functoolsr   Ztokenize_rtr   r   Zdjango_upgrade.astr   r   Zdjango_upgrade.datar	   r
   r   Zdjango_upgrade.tokensr   r   r   r   __name__Zfixerr   r!   r"   register
ImportFromr(   r$   Namer6   r&   r&   r&   r'   <module>   s@   

