a
    gL	                     @  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 ddlmZ eeddZeejdddddddZddddddddZdddd d!d"ZdS )#z`
Drop branches for old Django versions like:
if django.VERSION >= (1, 8):
    ...
else:
    ...
    )annotationsN)Iterable)partial)Literal)Offset)Token)ast_start_offset)is_passing_comparison)Fixer)State)	TokenFunc)Block)r   r   )min_versionr   zast.Ifztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])statenodeparentsreturnc                 c  sb   t |jtjr^t|j|  }d ur^|jr:t |jd tjs^t|tt	||dkrRdnddfV  d S )Nr   passfirstsecond)r   keep_branch)

isinstancetestastComparer	   orelseIfr   r   
_fix_block)r   r   r   Z	pass_fail r   g/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/versioned_branches.pyvisit_If    s    	r    zlist[Token]intzLiteral['first', 'second']None)tokensir   r   r   c                C  s   | | j dkrd S |jrpt| |\}}|dkrV||  | |j|j= | |j|j= q||  | |j|j= n@tj| |dd}|dkr||  | |j|j= n| |j|j= d S )Nifr   TZtrim_end)	srcr   _find_if_else_blockdedentendstartblockr   find)r#   r$   r   r   if_block
else_blockr   r   r   r   6   s    


r   ztuple[Block, Block])r#   r$   r   c                 C  sB   t | |}|j}| | jdkr*|d7 }qt j| |dd}||fS )Nelse   Tr&   )r   r-   r*   r'   )r#   r$   r.   r/   r   r   r   r(   S   s    
r(   )__doc__
__future__r   r   collections.abcr   	functoolsr   typingr   Ztokenize_rtr   r   Zdjango_upgrade.astr   r	   Zdjango_upgrade.datar
   r   r   Zdjango_upgrade.tokensr   __name__Zfixerregisterr   r    r   r(   r   r   r   r   <module>   s*   
