docs: def to_python(self, value):
          """
          Validates that the input can be converted to a time. Returns a
          Python datetime.time object.
          """
          if value in validators.EMPTY_VALUES:
              return None
          if isinstance(value, datetime.datetime):
              return value.time()
          if isinstance(value, datetime.time):
              return value
          if isinstance(value, list):
              # Input comes from a 2 SplitTimeWidgets, for example. So, it's two
              # components: start time and end time.
              if len(value) != 2:
                  raise ValidationError(self.error_messages['invalid'])
              if value[0] in validators.EMPTY_VALUES and value[1] in \
                      validators.EMPTY_VALUES:
                  return None
  
              start_value = value[0]
              end_value = value[1]
  
          start_time = None
          end_time = None
  
          for format in self.input_formats or formats.get_format(\
                  'TIME_INPUT_FORMATS'):
              try:
                  start_time = datetime.datetime(
                      *time.strptime(start_value, format)[:6]
                  ).time()
              except ValueError:
                  if start_time:
                      continue
                  else:
                      raise ValidationError(self.error_messages['invalid'])
  
          for format in self.input_formats or formats.get_format(\
                  'TIME_INPUT_FORMATS'):
              try:
                  end_time = datetime.datetime(
                      *time.strptime(end_value, format)[:6]
                  ).time()
              except ValueError:
                  if end_time:
                      continue
                  else:
                      raise ValidationError(self.error_messages['invalid'])
  
          return (start_time, end_time)