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   )