a
    gI                     @  s8  U 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 ee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G dd dZe
 Zde d< dd dd!d"d#Z!ddd$d%d&Z"dS )'zv
Replace django.utils.timezone.utc with datetime.timezone.utc
https://docs.djangoproject.com/en/4.1/releases/4.1/#id2
    )annotationsN)Iterable)MutableMapping)partial)WeakKeyDictionary)Offset)ast_start_offset)is_rewritable_import_from)Fixer)State)	TokenFunc)replace)update_import_names)      )min_versionr   zast.Nameztuple[ast.AST, ...]z"Iterable[tuple[Offset, TokenFunc]])statenodeparentsreturnc                 c  s`   |j dkr\t| |d  }jd ur\|jd ur\t|E d H  |j d}t|tt|dfV  d S )Nutcr   z.timezone.utcsrc)idget_import_detailsold_utc_importdatetime_modulemaybe_rewrite_importr   r   r   r   r   r   detailsZnew_src r    c/var/www/lab.imftr.de/x/nb_venv/lib/python3.9/site-packages/django_upgrade/fixers/utils_timezone.py
visit_Name   s    r"   zast.Attributec                 c  sp   |j dkrlt|jtjrl|jjdkrld| jd v rlt| |d  }jd url|j d}t	|t
t|dfV  d S )Nr   timezonezdjango.utilsr   z	.timezoner   )attr
isinstancevalueastNamer   Zfrom_importsr   r   r   r   r   r   r    r    r!   visit_Attribute1   s    
r)   c                   @  s   e Zd ZdZddddZdS )ImportDetailsr   r   rewrite_scheduledNone)r   c                 C  s   d | _ d | _d| _d S )NFr+   )selfr    r    r!   __init__J   s    zImportDetails.__init__N)__name__
__module____qualname__	__slots__r/   r    r    r    r!   r*   C   s   r*   z$MutableMapping[State, ImportDetails]import_detailszast.AST)r   moduler   c                 C  s   t |tjsJ z
t|  W S  ty,   Y n0 t }|jD ]}t |tjrht |jtj	rht |jjt
rhq:t |tjtjfs~ qt |tjr|jD ](}|jdkr|jd u rd|_q|j|_qq:t|r:|jdkr:tdd |jD r:||_q:|t| < |S )Ndatetimezdjango.utils.timezonec                 s  s   | ]}|j d kV  qdS )r   N)name).0ar    r    r!   	<genexpr>u       z%get_import_details.<locals>.<genexpr>)r%   r'   Moduler4   KeyErrorr*   bodyExprr&   ConstantstrImport
ImportFromnamesr7   asnamer   r	   r5   anyr   )r   r5   r   r   aliasr    r    r!   r   S   s>    





r   )r   r   c                 c  sB   | j r
d S | jd usJ t| jtt| jddidfV  d| _ d S )Nr    )r   Zname_mapT)r,   r   r   r   r   )r   r    r    r!   r   }   s    

r   )#__doc__
__future__r   r'   collections.abcr   r   	functoolsr   weakrefr   Ztokenize_rtr   Zdjango_upgrade.astr   r	   Zdjango_upgrade.datar
   r   r   Zdjango_upgrade.tokensr   r   r0   Zfixerregisterr(   r"   	Attributer)   r*   r4   __annotations__r   r   r    r    r    r!   <module>   s4   

*