o
    e                     @   s`   d dl Z d dlmZmZ d dlmZ d dlZdZdZdd Z	dd	 Z
d
d Zdd Zdd ZdS )    NDecimalBasicContext)	parsedatez%Y-%m-%dz%Y-%m-%dT%H:%M:%SZc              	   C   s:   zt j | tjtjd W S  ttfy   |  Y S w )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:
    tzinfo)	datetimestrptimeISO8601_DATE_FORMATreplacepytzutcdate	TypeError
ValueErrors r   J/var/www/html/venv/lib/python3.10/site-packages/twilio/base/deserialize.pyiso8601_date
   s
   r   c              	   C   s6   zt j | tjtjdW S  ttfy   |  Y S w )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)
    :return: datetime or str
    r   )r   r	   ISO8601_DATETIME_FORMATr   r   r   r   r   r   r   r   r   iso8601_datetime   s
   r   c                 C   s0   t | }|du r
dS tj|dd  jt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   
date_tupler   r   r   rfc2822_datetime$   s   r   c                 C   s   | s| S t | tS )zb
    Parses a decimal string into a Decimal
    :param d: decimal string
    :return: Decimal
    r   )dr   r   r   decimal1   s   
r   c              	   C   s&   zt | W S  ttfy   |  Y S w )z\
    Parses an integer string into an int
    :param i: integer string
    :return: int
    )intr   r   )ir   r   r   integer<   s
   
r   )r   r   r   r   email.utilsr   r   r
   r   r   r   r   r   r   r   r   r   <module>   s    