
"""Utilities and helper functions."""

# ISO 8601 extended time format without microseconds
_ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'


def isotime(at):
    """Stringify time in ISO 8601 format."""
    st = at.strftime(_ISO8601_TIME_FORMAT)
    tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
    st += ('Z' if tz == 'UTC' else tz)
    return st


"""Utilities and helper functions."""

# ISO 8601 extended time format without microseconds
_ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'


def isotime(at):
    """Stringify time in ISO 8601 format."""
    st = at.strftime(_ISO8601_TIME_FORMAT)
    tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
    # Need to handle either iso8601 or python UTC format
    st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz)
    return st

Handle TZ change in iso8601 >=0.1.12
Handle TZ change in iso8601 >=0.1.12

The iso8601 lib introduced a change such that if running on python
3.2 or later it internally uses the python timezone information
instead of its own implementation. This does not change direct
date handling, but when converting this value there is a slight
difference where now python 2.x will show UTC times as "UTC", but
on python 3 they will end up with "UTC+00:00".

The to_primitive call for DateTime fields was doing an exact match
on "UTC" to determine whether to include "Z" in the resulting string.
This updates that handling to recognize either of the new values.

Change-Id: I71b58e8fd8fee8a57ee275ff3e0b77f165eca836
Closes-bug: #1744160

  
  """Utilities and helper functions."""
  
  # ISO 8601 extended time format without microseconds
  _ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'
  
  
  def isotime(at):
      """Stringify time in ISO 8601 format."""
      st = at.strftime(_ISO8601_TIME_FORMAT)
      tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
+     # Need to handle either iso8601 or python UTC format
-     st += ('Z' if tz == 'UTC' else tz)
+     st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz)
      return st
  
Handle TZ change in iso8601 >=0.1.12
## Code Before:

"""Utilities and helper functions."""

# ISO 8601 extended time format without microseconds
_ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'


def isotime(at):
    """Stringify time in ISO 8601 format."""
    st = at.strftime(_ISO8601_TIME_FORMAT)
    tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
    st += ('Z' if tz == 'UTC' else tz)
    return st

## Instruction:
Handle TZ change in iso8601 >=0.1.12
## Code After:

"""Utilities and helper functions."""

# ISO 8601 extended time format without microseconds
_ISO8601_TIME_FORMAT = '%Y-%m-%dT%H:%M:%S'


def isotime(at):
    """Stringify time in ISO 8601 format."""
    st = at.strftime(_ISO8601_TIME_FORMAT)
    tz = at.tzinfo.tzname(None) if at.tzinfo else 'UTC'
    # Need to handle either iso8601 or python UTC format
    st += ('Z' if tz in ['UTC', 'UTC+00:00'] else tz)
    return st
