<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def create_assignment( # pylint: disable=too-many-arguments self, name, short_name, weight, max_points, due_date_str, gradebook_id='', **kwargs ):
 """Create a new assignment. Create a new assignment. By default, assignments are created under the `Uncategorized` category. Args: name (str):
 descriptive assignment name, i.e. ``new NUMERIC SIMPLE ASSIGNMENT`` short_name (str):
 short name of assignment, one word of no more than 5 characters, i.e. ``SAnew`` weight (str):
 floating point value for weight, i.e. ``1.0`` max_points (str):
 floating point value for maximum point total, i.e. ``100.0`` due_date_str (str):
 due date as string in ``mm-dd-yyyy`` format, i.e. ``08-21-2011`` gradebook_id (str):
 unique identifier for gradebook, i.e. ``2314`` kwargs (dict):
 dictionary containing additional parameters, i.e. ``graderVisible``, ``totalAverage``, and ``categoryId``. For example: .. code-block:: python { u'graderVisible': True, u'totalAverage': None u'categoryId': 1007964, } Raises: requests.RequestException: Exception connection error ValueError: Unable to decode response content Returns: dict: dictionary containing ``data``, ``status`` and ``message`` for example: .. code-block:: python { u'data': { u'assignmentId': 18490492, u'categoryId': 1293820, u'description': u'', u'dueDate': 1312171200000, u'dueDateString': u'08-01-2011', u'gradebookId': 1293808, u'graderVisible': False, u'gradingSchemeId': 18490493, u'gradingSchemeType': u'NUMERIC', u'isComposite': False, u'isHomework': False, u'maxPointsTotal': 100.0, u'name': u'new NUMERIC SIMPLE ASSIGNMENT', u'numStudentGradesToBeApproved': 0, u'numStudentsToBeGraded': 614, u'shortName': u'SAnew', u'userDeleted': False, u'weight': 1.0 }, u'message': u'assignment is created successfully', u'status': 1 } """

        data = {
            'name': name,
            'shortName': short_name,
            'weight': weight,
            'graderVisible': False,
            'gradingSchemeType': 'NUMERIC',
            'gradebookId': gradebook_id or self.gradebook_id,
            'maxPointsTotal': max_points,
            'dueDateString': due_date_str
        }
        data.update(kwargs)
        log.info("Creating assignment %s", name)
        response = self.post('assignment', data)
        log.debug('Received response data: %s', response)
        return response