docs: def reset_score(student_id, course_id, item_id, clear_state=False, emit_signal=True):
      """
      Reset scores for a specific student on a specific problem.
  
      Note: this does *not* delete `Score` models from the database,
      since these are immutable.  It simply creates a new score with
      the "reset" flag set to True.
  
      Args:
          student_id (unicode): The ID of the student for whom to reset scores.
          course_id (unicode): The ID of the course containing the item to reset.
          item_id (unicode): The ID of the item for which to reset scores.
          clear_state (bool): If True, will appear to delete any submissions associated with the specified StudentItem
  
      Returns:
          None
  
      Raises:
          SubmissionInternalError: An unexpected error occurred while resetting scores.
  
      """
      # Retrieve the student item
      try:
          student_item = StudentItem.objects.get(
              student_id=student_id, course_id=course_id, item_id=item_id
          )
      except StudentItem.DoesNotExist:
          # If there is no student item, then there is no score to reset,
          # so we can return immediately.
          return
  
      # Create a "reset" score
      try:
          score = Score.create_reset_score(student_item)
          if emit_signal:
              # Send a signal out to any listeners who are waiting for scoring events.
              score_reset.send(
                  sender=None,
                  anonymous_user_id=student_id,
                  course_id=course_id,
                  item_id=item_id,
                  created_at=score.created_at,
              )
  
          if clear_state:
              for sub in student_item.submission_set.all():
                  # soft-delete the Submission
                  sub.status = Submission.DELETED
                  sub.save(update_fields=["status"])
  
                  # Also clear out cached values
                  cache_key = Submission.get_cache_key(sub.uuid)
                  cache.delete(cache_key)
  
      except DatabaseError:
          msg = (
              u"Error occurred while reseting scores for"
              u" item {item_id} in course {course_id} for student {student_id}"
          ).format(item_id=item_id, course_id=course_id, student_id=student_id)
          logger.exception(msg)
          raise SubmissionInternalError(msg)
      else:
          msg = u"Score reset for item {item_id} in course {course_id} for student {student_id}".format(
              item_id=item_id, course_id=course_id, student_id=student_id
          )
          logger.info(msg)