docs: def from_json(self, value):
          """
          Parse the date from an ISO-formatted date string, or None.
          """
          if value is None:
              return None
  
          if isinstance(value, six.binary_type):
              value = value.decode('utf-8')
  
          if isinstance(value, six.text_type):
              # Parser interprets empty string as now by default
              if value == "":
                  return None
              try:
                  value = dateutil.parser.parse(value)
              except (TypeError, ValueError):
                  raise ValueError("Could not parse {} as a date".format(value))
  
          if not isinstance(value, datetime.datetime):
              raise TypeError(
                  "Value should be loaded from a string, a datetime object or None, not {}".format(type(value))
              )
  
          if value.tzinfo is not None:  # pylint: disable=maybe-no-member
              return value.astimezone(pytz.utc)  # pylint: disable=maybe-no-member
          else:
              return value.replace(tzinfo=pytz.utc)