
§@VB  ã               @   sX   d  d l  m Z d  d l m Z m Z Gd d „  d e ƒ Z d d „  Z d d „  Z d	 S)
é    )Údivision)Ú	timedeltaÚtzinfoc               @   sR   e  Z d  Z d Z d d „  Z d d „  Z d d „  Z d d	 „  Z d
 d „  Z d S)ÚFixedOffseta™  
    Represent a timezone with a fixed offset from UTC and no adjustment for
    DST.

    >>> FixedOffset(4,0)
    <UTC+04:00>
    >>> FixedOffset(-4,0)
    <UTC-04:00>
    >>> FixedOffset(4,30)
    <UTC+04:30>

    >>> tz = FixedOffset(-5,0)
    >>> tz.dst(None)
    datetime.timedelta(0)

    The class tries to do the right thing with the sign
    of the time zone offset:

    >>> FixedOffset(-9,30)
    <UTC-09:30>
    >>> FixedOffset(-9,-30)
    Traceback (most recent call last):
    ...
    ValueError: minutes must not be negative

    Offsets must thus be normalized so that the minute value is positive:

    >>> FixedOffset(-8,30)
    <UTC-08:30>

    c             C   ss   t  j |  ƒ | d k  r% t d ƒ ‚ | d k  r; | d 9} t d | d | ƒ |  _ d t t |  j ƒ ƒ |  _ d S)	zK
        Create a new FixedOffset instance with the given offset.

        r   zminutes must not be negativeé   ÚhoursÚminutesZUTCNéÿÿÿÿ)r   Ú__init__Ú
ValueErrorr   Ú_FixedOffset__offsetÚtimezoneÚtimedelta_secondsÚ_FixedOffset__name)Úselfr   r   © r   ú1/usr/lib/python3/dist-packages/pyrfc3339/utils.pyr
   '   s    
zFixedOffset.__init__c             C   s
   t  d ƒ S)zG
        Return offset for DST.  Always returns timedelta(0).

        r   )r   )r   Údtr   r   r   Údst5   s    zFixedOffset.dstc             C   s   |  j  S)z*
        Return offset from UTC.

        )r   )r   r   r   r   r   Ú	utcoffset<   s    zFixedOffset.utcoffsetc             C   s   |  j  S)z+
        Return name of timezone.

        )r   )r   r   r   r   r   ÚtznameC   s    zFixedOffset.tznamec             C   s   d j  |  j d  ƒ ƒ S)Nz<{0}>)Úformatr   )r   r   r   r   Ú__repr__J   s    zFixedOffset.__repr__N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r
   r   r   r   r   r   r   r   r   r      s   r   c             C   sn   y t  t |  j ƒ  ƒ ƒ SWnM t k
 ri |  j } |  j } |  j } t  t | d | | d ƒ ƒ SYn Xd S)a•  
    Return the offset stored by a :class:`datetime.timedelta` object as an
    integer number of seconds.  Microseconds, if present, are rounded to
    the nearest second.

    Delegates to
    :meth:`timedelta.total_seconds() <datetime.timedelta.total_seconds()>`
    if available.

    >>> timedelta_seconds(timedelta(hours=1))
    3600
    >>> timedelta_seconds(timedelta(hours=-1))
    -3600
    >>> timedelta_seconds(timedelta(hours=1, minutes=30))
    5400
    >>> timedelta_seconds(timedelta(hours=1, minutes=30,
    ... microseconds=300000))
    5400
    >>> timedelta_seconds(timedelta(hours=1, minutes=30,
    ...	microseconds=900000))
    5401

    i€Q i@B N)ÚintÚroundZtotal_secondsÚAttributeErrorÚdaysÚsecondsÚmicroseconds)Ztdr    r!   r"   r   r   r   r   N   s    			r   c             C   sk   t  t |  ƒ d ƒ \ } } t t | ƒ d ƒ } |  d k rF d } n d } d j | t | ƒ t | ƒ ƒ S)zä
    Return a string representing the timezone offset.
    Remaining seconds are rounded to the nearest minute.

    >>> timezone(3600)
    '+01:00'
    >>> timezone(5400)
    '+01:30'
    >>> timezone(-28800)
    '-08:00'

    i  é<   r   ú+ú-z{0}{1:02d}:{2:02d})ÚdivmodÚabsr   Úfloatr   r   )r   r   r!   r   Zsignr   r   r   r   q   s    	r   N)Z
__future__r   Zdatetimer   r   r   r   r   r   r   r   r   Ú<module>   s   H#