docs: def edit(self, title, state=github.GithubObject.NotSet, description=github.GithubObject.NotSet, due_on=github.GithubObject.NotSet):
          """
          :calls: `PATCH /repos/:owner/:repo/milestones/:number <http://developer.github.com/v3/issues/milestones>`_
          :param title: string
          :param state: string
          :param description: string
          :param due_on: date
          :rtype: None
          """
          assert isinstance(title, (str, unicode)), title
          assert state is github.GithubObject.NotSet or isinstance(state, (str, unicode)), state
          assert description is github.GithubObject.NotSet or isinstance(description, (str, unicode)), description
          assert due_on is github.GithubObject.NotSet or isinstance(due_on, datetime.date), due_on
          post_parameters = {
              "title": title,
          }
          if state is not github.GithubObject.NotSet:
              post_parameters["state"] = state
          if description is not github.GithubObject.NotSet:
              post_parameters["description"] = description
          if due_on is not github.GithubObject.NotSet:
              post_parameters["due_on"] = due_on.strftime("%Y-%m-%d")
          headers, data = self._requester.requestJsonAndCheck(
              "PATCH",
              self.url,
              input=post_parameters
          )
          self._useAttributes(data)