@utilities.arguments_not_none<EOL><INDENT>def set_score(self, score):<DEDENT>
if self._grade_system.is_based_on_grades():<EOL><INDENT>raise errors.InvalidArgument()<EOL><DEDENT>if self.get_score_metadata().is_read_only():<EOL><INDENT>raise errors.NoAccess()<EOL><DEDENT>if not self._is_valid_decimal(score, self.get_score_metadata()):<EOL><INDENT>raise errors.InvalidArgument()<EOL><DEDENT>if not isinstance(score, Decimal):<EOL><INDENT>score = Decimal(str(score))<EOL><DEDENT>if (self._grade_system.get_numeric_score_increment() and<EOL>score % self._grade_system.get_numeric_score_increment() != <NUM_LIT:0>):<EOL><INDENT>raise errors.InvalidArgument('<STR_LIT>' + str(self._score_increment))<EOL><DEDENT>self._my_map['<STR_LIT>'] = float(score)<EOL>self._my_map['<STR_LIT>'] = str(self._effective_agent_id)<EOL>self._my_map['<STR_LIT>'] = DateTime.utcnow()<EOL>
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.*