<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_score(self, score):
 """Sets the score. arg: score (decimal):
 the new score raise: InvalidArgument - ``score`` is invalid or ``GradebookColumn.getGradeSystem().isBasedOnGrades()`` is ``true`` raise: NoAccess - ``score`` cannot be modified *compliance: mandatory -- This method must be implemented.* """

        if self._grade_system.is_based_on_grades():
            raise errors.InvalidArgument()
        if self.get_score_metadata().is_read_only():
            raise errors.NoAccess()
        if not self._is_valid_decimal(score, self.get_score_metadata()):
            raise errors.InvalidArgument()
        if not isinstance(score, Decimal):
            score = Decimal(str(score))
        if (self._grade_system.get_numeric_score_increment() and
                score % self._grade_system.get_numeric_score_increment() != 0):
            raise errors.InvalidArgument('score must be in increments of ' + str(self._score_increment))
        self._my_map['score'] = float(score)
        self._my_map['gradingAgentId'] = str(self._effective_agent_id)
        self._my_map['timeGraded'] = DateTime.utcnow()