U
    ¤�©j>  ã                   @  sv   d Z ddlmZ ddlmZmZ ddlmZmZ er\ddl	m	Z	m
Z
 ddlmZ ddlmZ G dd	„ d	eƒZd	gZd
S )z+The interface for timezone implementations.é    )Úannotations)ÚABCÚabstractmethod)ÚTYPE_CHECKINGÚOptional)ÚdatetimeÚtzinfo)Úrrule)Úpropc                   @  sÆ   e Zd ZdZeeddœdd„ƒƒZedddœdd	„ƒZedd
ddœdd„ƒZedddœdd„ƒZ	eddddœdd„ƒZ
edd
dœdd„ƒZedddœdd„ƒZeddœdd„ƒZeddœd d!„ƒZd"S )#Ú
TZProviderz'Interface for timezone implementations.Ústr)Úreturnc                 C  s   dS )zThe name of the implementation.N© ©Úselfr   r   ú?/tmp/pip-unpacked-wheel-g40nyxg1/icalendar/timezone/provider.pyÚname   s    zTZProvider.namer   )Údtr   c                 C  s   dS )zReturn the datetime in UTC.Nr   )r   r   r   r   r   Úlocalize_utc   s    zTZProvider.localize_utcr   )r   Útzr   c                 C  s   dS )z"Localize a datetime to a timezone.Nr   )r   r   r   r   r   r   Úlocalize   s    zTZProvider.localizeÚbool)Úidr   c                 C  s   dS )z=Whether the timezone is already cached by the implementation.Nr   )r   r   r   r   r   Úknows_timezone_id    s    zTZProvider.knows_timezone_idr	   zprop.vRecurÚNone)r	   Ú
ical_rruler   c                 C  s   dS )zLMake sure the until value works for the rrule generated from the ical_rrule.Nr   )r   r	   r   r   r   r   Úfix_rrule_until$   s    zTZProvider.fix_rrule_until)r   r   c                 C  s   dS )z.Create a pytz timezone file given information.Nr   )r   r   Ztransition_timesZtransition_infor   r   r   Úcreate_timezone(   s    zTZProvider.create_timezonezOptional[tzinfo]c                 C  s   dS )z;Return a timezone with a name or None if we cannot find it.Nr   )r   r   r   r   r   Útimezone,   s    zTZProvider.timezonec                 C  s   dS )zWhether we use pytz.Nr   r   r   r   r   Ú	uses_pytz0   s    zTZProvider.uses_pytzc                 C  s   dS )zWhether we use zoneinfo.Nr   r   r   r   r   Úuses_zoneinfo4   s    zTZProvider.uses_zoneinfoN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úpropertyr   r   r   r   r   r   r   r   r   r    r   r   r   r   r      s(   r   N)r$   Ú
__future__r   Úabcr   r   Útypingr   r   r   r   Zdateutil.rruler	   Z	icalendarr
   r   Ú__all__r   r   r   r   Ú<module>   s   )