o
    ×èFhu  ã                   @   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   úP/var/www/html/loop/nvenv/lib/python3.10/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y   Y nw zt |d¡jtjd�W S  ty2   Y nw t  dd|¡}zt |d¡W S  tyJ   Y nw zt |d	¡W S  ty[   Y nw td
 | ¡ƒ‚)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 format)	ÚreÚsubr   ÚstrptimeÚreplacer   ÚutcÚ
ValueErrorÚformat)r   Údatestr_modifiedr   r   r   r   (   s>   ÿþÿÿþÿÿÿr   )Ú__doc__r   r   r   r	   r   r   r   r   r   Ú<module>   s
   