@utilities.arguments_not_none<EOL><INDENT>def set_completion(self, completion):<DEDENT>
<EOL>if self.get_completion_metadata().is_read_only():<EOL><INDENT>raise errors.NoAccess()<EOL><DEDENT>try:<EOL><INDENT>completion = float(completion)<EOL><DEDENT>except ValueError:<EOL><INDENT>raise errors.InvalidArgument()<EOL><DEDENT>if not self._is_valid_decimal(completion, self.get_completion_metadata()):<EOL><INDENT>raise errors.InvalidArgument()<EOL><DEDENT>self._my_map['<STR_LIT>'] = completion<EOL>
Sets the completion percentage.

        arg:    completion (decimal): the completion percentage
        raise:  InvalidArgument - ``completion`` is invalid
        raise:  NoAccess - ``Metadata.isReadOnly()`` is ``true``
        *compliance: mandatory -- This method must be implemented.*