o
    :i                     @   s  U d dl Z d dlmZmZ d dlmZmZmZ d dlZdZzd dlZW n	 e	y,   Y nw ej
ed< dZeed< dZdej
d	eej
ef fd
dZdeeeef  d	efddZded	efddZze
e jddZW n ejy~   e  jZY nw ee\ZZdS )    N)datetimetzinfo)OptionalTupleUnionlocal_tzFlocal_tz_dst_safe)UTCzEtc/UTCGMT	UniversalzGMT-0Zulu	GreenwichUCTtimezonereturnc                 C   s`   |  d tv rtjdfS |  d tjv r| dfS td ur,t }|tjv r,t|dfS | dfS )NTF)tznameUTC_EQUIVALENTSpytzr	   common_timezonestzlocalget_localzone_namer   )r   
local_name r   m/home/aiteam/pcaa-dev/dashboard-backend/venv/lib/python3.10/site-packages/clickhouse_connect/driver/tzutil.pynormalize_timezone   s   

r   tzc                 C   s:   | du rdS t | tr| tv S | tjkrdS | dtv S )zCheck if timezone is UTC or an equivalent (Etc/UTC, GMT, etc.).

    This handles the issue where pytz.timezone('Etc/UTC') != pytz.UTC despite
    being semantically equivalent. Also accepts timezone name strings.
    NFT)
isinstancestrr   r   r	   r   r   r   r   r   is_utc_timezone'   s   

r   tsc                 C   s   t j| tjdjd dS )Nr   )r   )r   fromtimestampr   r	   replace)r    r   r   r   utcfromtimestamp6   s   r#   TZ )osr   r   typingr   r   r   r   r   ImportErrorr   __annotations__r   boolr   r   r   r   floatr#   environgetr   UnknownTimeZoneErrornow
astimezoner   r   r   r   <module>   s,   
 
