a
    g                     @  sX  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 ddlmZ ddlmZ ddlmZ eeddZdZdZeejdddddddZ dd dd!d"d#d$Z!eej"dd%dddd&d'Z#dd d%d!d"d(d)Z$dS )*z
Rewrite django.utils.timezone.FixedOffset to datetime.timezone.
https://docs.djangoproject.com/en/2.2/releases/2.2/#features-deprecated-in-2-2
    )annotationsN)Iterable)partial)Offset)Token)ast_start_offset)is_rewritable_import_from)Fixer)State)	TokenFunc)OP)extract_indent)find)insert)parse_call_args)replace)update_import_names)   r   )min_versionzdjango.utils.timezoneZFixedOffsetr
   zast.ImportFromztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])statenodeparentsreturnc                 c  s@   |j tkr<t|r<tdd |jD r<t|tt|dfV  d S )Nc                 s  s   | ]}|j tkV  qd S )N)nameOLD_NAME).0alias r   i/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/timezone_fixedoffset.py	<genexpr>.       z#visit_ImportFrom.<locals>.<genexpr>r   )moduleMODULEr   anynamesr   r   fix_import_fromr   r   r   r   r   r   visit_ImportFrom%   s    r(   zlist[Token]intNone)tokensir   r   c                C  s:   t | |\}}t| ||tdid t| || dd d S )N )r   Zname_mapz)from datetime import timedelta, timezone
Znew_src)r   r   r   r   )r+   r,   r   jindentr   r   r   r&   3   s    r&   zast.Callc                 c  sB   t | jt v r>t|jtjr>|jjt kr>t|t	t
|dfV  d S )Nr!   )r   Zfrom_importsr#   
isinstancefuncastNameidr   r   fix_offset_argr'   r   r   r   
visit_Call9   s    
r7   c                C  s   t | |tdd}t| |\}}d}t|jdkrpt|jd tjs|d \}}t| |dd t| |dd d	}n^t	|j
D ]R\}	}
|
jd
krz||	 \}}t| |dd t | |tdd}t| |d dd d	}qz|rt| |dd d S )N()r   srcF   r   )r.   ztimedelta(minutes=Toffset=timezone)r9   )r   r   r   lenargsr1   r3   Starredr   	enumeratekeywordsargr   )r+   r,   r   r/   	func_args_Zrewrote_offset_argZ	start_idxZend_idxnkeywordZ	equal_idxr   r   r   r6   G   s$    
r6   )%__doc__
__future__r   r3   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   r   r   r   __name__Zfixerr#   r   register
ImportFromr(   r&   Callr7   r6   r   r   r   r   <module>   s<   

