<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def set_grade( self, assignment_id, student_id, grade_value, gradebook_id='', **kwargs ):
 """Set numerical grade for student and assignment. Set a numerical grade for for a student and assignment. Additional options for grade ``mode`` are: OVERALL_GRADE = ``1``, REGULAR_GRADE = ``2`` To set 'excused' as the grade, enter ``None`` for letter and numeric grade values, and pass ``x`` as the ``specialGradeValue``. ``ReturnAffectedValues`` flag determines whether or not to return student cumulative points and impacted assignment category grades (average and student grade). Args: assignment_id (str):
 numerical ID for assignment student_id (str):
 numerical ID for student grade_value (str):
 numerical grade value gradebook_id (str):
 unique identifier for gradebook, i.e. ``2314`` kwargs (dict):
 dictionary of additional parameters .. code-block:: python { u'letterGradeValue':None, u'booleanGradeValue':None, u'specialGradeValue':None, u'mode':2, u'isGradeApproved':False, u'comment':None, u'returnAffectedValues': True, } Raises: requests.RequestException: Exception connection error ValueError: Unable to decode response content Returns: dict: dictionary containing response ``status`` and ``message`` .. code-block:: python { u'message': u'grade saved successfully', u'status': 1 } """

        # pylint: disable=too-many-arguments

        # numericGradeValue stringified because 'x' is a possible
        # value for excused grades.
        grade_info = {
            'studentId': student_id,
            'assignmentId': assignment_id,
            'mode': 2,
            'comment': 'from MITx {0}'.format(time.ctime(time.time())),
            'numericGradeValue': str(grade_value),
            'isGradeApproved': False
        }
        grade_info.update(kwargs)
        log.info(
            "student %s set_grade=%s for assignment %s",
            student_id,
            grade_value,
            assignment_id)
        return self.post(
            'grades/{gradebookId}'.format(
                gradebookId=gradebook_id or self.gradebook_id
            ),
            data=grade_info,
        )