<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def FormatTime(fmt, stime = None):
 """A compatibility wrapper for the `strftime` function. It is guaranteed to always take unicode string as an argument and return an unicode string as a result. Args: fmt: A format string specifying formatting of the output. stime: A time representation as returned by `gmtime` or `localtime`. Returns: A human-readable representation of `stime`. """

  precondition.AssertType(fmt, str)
  precondition.AssertOptionalType(stime, time.struct_time)

  # TODO(hanuszczak): https://github.com/google/pytype/issues/127
  # pytype: disable=wrong-arg-types
  # We need this because second parameter is not a keyword argument, so method
  # must be explicitly called with or without it.
  if stime is None:
    strftime = time.strftime
  else:
    strftime = lambda fmt: time.strftime(fmt, stime)

  if PY2:
    return strftime(fmt.encode("ascii")).decode("ascii")
  else:
    return strftime(fmt)