B
    /²ô`m  ã               @   sX   d Z ddlZddlZddlmZ e ¡ dkZedƒZe 	d¡ e
e
e
ejdœdd	„ZdS )
zParse time ops.é    N)ÚLazySOÚWindowsz!custom_ops/text/_parse_time_op.sozAddons>ParseTime)Útime_stringÚtime_formatÚoutput_unitÚreturnc             C   s   t rtdƒ‚tj | ||¡S )a•  Parse an input string according to the provided format string into a
    Unix time.

    Parse an input string according to the provided format string into a Unix
    time, the number of seconds / milliseconds / microseconds / nanoseconds
    elapsed since January 1, 1970 UTC.

    Uses strftime()-like formatting options, with the same extensions as
    FormatTime(), but with the exceptions that %E#S is interpreted as %E*S, and
    %E#f as %E*f.  %Ez and %E*z also accept the same inputs.

    %Y consumes as many numeric characters as it can, so the matching
    data should always be terminated with a non-numeric. %E4Y always
    consumes exactly four characters, including any sign.

    Unspecified fields are taken from the default date and time of ...

      "1970-01-01 00:00:00.0 +0000"

    For example, parsing a string of "15:45" (%H:%M) will return an
    Unix time that represents "1970-01-01 15:45:00.0 +0000".

    Note that ParseTime only heeds the fields year, month, day, hour,
    minute, (fractional) second, and UTC offset.  Other fields, like
    weekday (%a or %A), while parsed for syntactic validity, are
    ignored in the conversion.

    Date and time fields that are out-of-range will be treated as
    errors rather than normalizing them like `absl::CivilSecond` does.
    For example, it is an error to parse the date "Oct 32, 2013"
    because 32 is out of range.

    A leap second of ":60" is normalized to ":00" of the following
    minute with fractional seconds discarded.  The following table
    shows how the given seconds and subseconds will be parsed:

      "59.x" -> 59.x  // exact
      "60.x" -> 00.0  // normalized
      "00.x" -> 00.x  // exact

    Args:
      time_string: The input time string to be parsed.
      time_format: The time format.
      output_unit: The output unit of the parsed unix time. Can only be SECOND,
        MILLISECOND, MICROSECOND, NANOSECOND.

    Returns:
      the number of seconds / milliseconds / microseconds / nanoseconds elapsed
        since January 1, 1970 UTC.

    Raises:
      ValueError: If `output_unit` is not a valid value,
        if parsing `time_string` according to `time_format` failed.
    z-parse_time is not yet implemented on Windows.)Ú
IS_WINDOWSÚNotImplementedErrorÚ_parse_time_soÚopsZaddons_parse_time)r   r   r   © r   úS/home/dcms/DCMS/lib/python3.7/site-packages/tensorflow_addons/text/parse_time_op.pyÚ
parse_time   s    7r   )Ú__doc__ÚplatformZ
tensorflowÚtfZ'tensorflow_addons.utils.resource_loaderr   Úsystemr   r
   Zno_gradientÚstrZTensorr   r   r   r   r   Ú<module>   s   
