U
    nËj  ã                   @   sž   d dl Z d dlZd dlZd dlZd dlZd dlZzd dlZW n  ek
r\   d dlmZ Y nX d dl	m
Z
 e d¡Zdd„ Zddd	„Zdd
d„Zddd„ZdS )é    N)Úzoneinfo)Ú
windows_tzÚtzlocalc                 C   s   t tj | ¡ ¡  ¡ ƒS )zCGet timezone's offset using built-in function datetime.utcoffset().)ÚintÚdatetimeÚnowÚ	utcoffsetÚtotal_seconds)Útz© r   ú1/tmp/pip-unpacked-wheel-b84pagfs/tzlocal/utils.pyÚget_tz_offset   s    r   Tc                 C   s`   t | ƒ}t t ¡ ¡t t ¡ ¡ }t|| ƒdkr\d|› d|› d�}|rRt|ƒ‚t 	|¡ dS )aJ  Assert that system's timezone offset equals to the timezone offset found.

    If they don't match, we probably have a misconfiguration, for example, an
    incorrect timezone set in /etc/timezone file in systemd distributions.

    If error is True, this method will raise a ValueError, otherwise it will
    emit a warning.
    é<   z.Timezone offset does not match system offset: z != z". Please, check your config files.N)
r   ÚcalendarÚtimegmÚtimeÚ	localtimeÚgmtimeÚabsÚ
ValueErrorÚwarningsÚwarn)r
   ÚerrorZ	tz_offsetZsystem_offsetÚmsgr   r   r   Úassert_tz_offset   s    
ÿr   c                 C   sÂ   | d krt j d¡} | sd S t d| › �¡ | d dkrD| dd … } | tjkrR| S t j | ¡r´t j 	| ¡r´t j 
| ¡ t j¡}d |dd … ¡}|tjkrž|S |d tjkr´|d S t d	¡ d S )
NÚTZzFound a TZ environment: r   ú:é   ú/éþÿÿÿéÿÿÿÿz$TZ does not contain a time zone name)ÚosÚenvironÚgetÚlogÚdebugr   Ztz_winÚpathÚisabsÚexistsÚrealpathÚsplitÚsepÚjoin)ÚtzenvÚpartsZpossible_tzr   r   r   Ú_tz_name_from_env.   s$    


r/   c              
   C   sÖ   | d krt j d¡} | sd S | d dkr4| dd … } t j | ¡r–t j | ¡r–t| ƒ}|sh|  t j¡d }t	| dƒ�}t
jj||d�W  5 Q R £ S Q R X zt
 | ¡}|W S  t
jk
rÐ   t
 d| › d	�¡d ‚Y nX d S )
Nr   r   r   r   r    Úrb)Úkeyz7tzlocal() does not support non-zoneinfo timezones like z6. 
Please use a timezone in the form of Continent/City)r!   r"   r#   r&   r'   r(   r/   r*   r+   Úopenr   ZZoneInfoÚ	from_fileZZoneInfoNotFoundError)r-   ÚtznameZtzfiler
   r   r   r   Ú_tz_from_envQ   s*    "

ÿýr5   )T)N)N)r   r   Úloggingr!   r   r   r   ÚImportErrorZ	backportsr   r   Ú	getLoggerr$   r   r   r/   r5   r   r   r   r   Ú<module>   s   


#