a
    gX                     @  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d dZeejdddddddZddddddddZdS ) z
Replace declarations of database support in test cases:
https://docs.djangoproject.com/en/2.2/releases/2.2/#features-deprecated-in-2-2
    )annotationsN)Iterable)partial)Offset)Token)ast_start_offset)Fixer)State)	TokenFunc)CODE)find_last_token)   r   c                 C  s   | j S )N)Zlooks_like_test_file)state r   g/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/testcase_databases.py<lambda>       r   )min_version	conditionr	   z
ast.Assignztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])r   nodeparentsreturnc                 c  s   t |d tjrt|jdkrt |jd tjr|jd jdv rt |jtjr|jjdu sf|jjdu rt	|t
t||jjdfV  d S )N   r   )Zallow_database_queriesZmulti_dbTF)r   value)
isinstanceastClassDeflentargetsNameidr   Constantr   r   replace_assignment)r   r   r   r   r   r   visit_Assign   s"    


r$   zlist[Token]intboolNone)tokensir   r   r   c                C  sF   d}|r|d7 }n|d7 }t | ||d}tt|dg| ||d < d S )Nzdatabases = z	"__all__"z[])r   )namesrcr   )r   r   r   )r(   r)   r   r   Znew_srcjr   r   r   r#   0   s    
r#   )__doc__
__future__r   r   collections.abcr   	functoolsr   Ztokenize_rtr   r   Zdjango_upgrade.astr   Zdjango_upgrade.datar   r	   r
   Zdjango_upgrade.tokensr   r   __name__ZfixerregisterAssignr$   r#   r   r   r   r   <module>   s(   
