class_docstr: State machine that computes the next state of a test based on the current state and
  perform actions accordingly during the state transition. For example:
  - passing -[two last results failed]-> failing: create github issue
  - failing -[last result passed]-> passing: close github issue
  - jailed -[latest result passed]-> passing: update the test's oncall
  ...
code: def _keep_github_issue_open(self) -> None:
      github_issue_number = self.test.get(Test.KEY_GITHUB_ISSUE_NUMBER)
      if not github_issue_number:
          return
      issue = self.ray_repo.get_issue(github_issue_number)
      if issue.state == "open":
          return
      issue.edit(state="open")
      issue.create_comment(
          "Re-opening issue as test is still failing. "
          f"Latest run: {self.test_results[0].url}"
      )
  
imports: import abc
  from github import Github
  from pybuildkite.buildkite import Buildkite
  from ray_release.test import Test, TestState
  from ray_release.aws import get_secret_token
label_desc: Use image node_id 22 for calling the TestStateMachine obj's underlying member method code with example usage: obj._keep_github_issue_open() without return types