U
    k7g                     @   s   d dl Z d dlmZmZ d dlmZ d dlmZmZ dZ	dZ
eee jef ddd	Zeee j ef dd
dZeee j  dddZee eeef dddZeeeef dddZdS )    N)BasicContextDecimal)	parsedate)OptionalUnionz%Y-%m-%dz%Y-%m-%dT%H:%M:%SZ)sreturnc              	   C   sB   z t j | tjt jjd W S  ttfk
r<   |  Y S X dS )z
    Parses an ISO 8601 date string and returns a UTC date object or the string
    if the parsing failed.
    :param s: ISO 8601-formatted date string (2015-01-25)
    :return:
    tzinfoN)	datetimestrptimeISO8601_DATE_FORMATreplacetimezoneutcdate	TypeError
ValueErrorr    r   ;/tmp/pip-unpacked-wheel-qtbjxrb6/twilio/base/deserialize.pyiso8601_date
   s    r   c              	   C   s>   zt j | tjt jjdW S  ttfk
r8   |  Y S X dS )z
    Parses an ISO 8601 datetime string and returns a UTC datetime object,
    or the string if parsing failed.
    :param s: ISO 8601-formatted datetime string (2015-01-25T12:34:56Z)
    r	   N)r   r   ISO8601_DATETIME_FORMATr   r   r   r   r   r   r   r   r   iso8601_datetime   s    r   c                 C   s2   t | }|dkrdS tj|dd  jtjjdS )z
    Parses an RFC 2822 date string and returns a UTC datetime object,
    or the string if parsing failed.
    :param s: RFC 2822-formatted string date
    :return: datetime or str
    N   r	   )r   r   r   r   r   )r   Z
date_tupler   r   r   rfc2822_datetime+   s    r   )dr   c                 C   s   | s| S t | tS )zM
    Parses a decimal string into a Decimal
    :param d: decimal string
    )r   r   )r   r   r   r   decimal8   s    r   )ir   c              	   C   s,   z
t | W S  ttfk
r&   |  Y S X dS )z\
    Parses an integer string into an int
    :param i: integer string
    :return: int
    N)intr   r   )r   r   r   r   integerB   s    
r    )r   r   r   r   email.utilsr   typingr   r   r   r   strr   r   r   r   r   r    r   r   r   r   <module>   s   
