a
    !fu                     @   s0   d Z ddlmZmZ ddlZdd Zdd ZdS )zParse RFC3339 date strings    )datetimetimezoneNc                 C   s   t |  S )a  Parse an RFC3339 date string and return the number of seconds since the
    epoch (as a float).

    In particular, this method is meant to parse the strings returned by the
    JSON mapping of protobuf google.protobuf.timestamp.Timestamp instances:
    https://github.com/protocolbuffers/protobuf/blob/4cf5bfee9546101d98754d23ff378ff718ba8438/src/google/protobuf/timestamp.proto#L99

    This method has microsecond precision; nanoseconds will be truncated.

    Args:
        datestr: A string in RFC3339 format.
    Returns:
        Float: The number of seconds since the Unix epoch.
    Raises:
        ValueError: Raised if the `datestr` is not a valid RFC3339 date string.
    )_parse_to_datetime	timestamp)datestr r   X/var/www/html/python-backend/venv/lib/python3.9/site-packages/firebase_admin/_rfc3339.pyparse_to_epoch   s    r	   c                 C   s   t dd| }zt|djtjdW S  ty8   Y n0 zt|djtjdW S  tyd   Y n0 t dd|}zt|dW S  ty   Y n0 zt|d	W S  ty   Y n0 td
| dS )a5  Parse an RFC3339 date string and return a python datetime instance.

    Args:
        datestr: A string in RFC3339 format.
    Returns:
        datetime: The corresponding `datetime` (with timezone information).
    Raises:
        ValueError: Raised if the `datestr` is not a valid RFC3339 date string.
    z(\.\d{6})\d*z\1z%Y-%m-%dT%H:%M:%S.%fZ)tzinfoz%Y-%m-%dT%H:%M:%SZz(\d\d):(\d\d)$z\1\2z%Y-%m-%dT%H:%M:%S.%f%zz%Y-%m-%dT%H:%M:%S%zz+time data {0} does not match RFC3339 formatN)	resubr   strptimereplacer   utc
ValueErrorformat)r   Zdatestr_modifiedr   r   r   r   (   s6    r   )__doc__r   r   r   r	   r   r   r   r   r   <module>   s   