docs: def post_grade(self, grade):
          """
          Post grade to LTI consumer using XML
  
          :param: grade: 0 <= grade <= 1
          :return: True if post successful and grade valid
          :exception: LTIPostMessageException if call failed
          """
          message_identifier_id = self.message_identifier_id()
          operation = 'replaceResult'
          lis_result_sourcedid = self.lis_result_sourcedid
          # # edX devbox fix
          score = float(grade)
          if 0 <= score <= 1.0:
              xml = generate_request_xml(
                  message_identifier_id, operation, lis_result_sourcedid,
                  score)
              ret = post_message(self._consumers(), self.key,
                                 self.response_url, xml)
              if not ret:
                  raise LTIPostMessageException("Post Message Failed")
              return True
  
          return False