code: def test_read_info() -> None:
      example = """JobID|State
  5610980|RUNNING
  5610980.ext+|RUNNING
  5610980.0|RUNING
  20956421_0|RUNNING
  20956421_[2-4%25]|PENDING
  """
      output = slurm.SlurmInfoWatcher().read_info(example)
      assert output["5610980"] == {
          "JobID": "5610980",
          "State": "RUNNING",
      }
      assert output["20956421_2"] == {
          "JobID": "20956421_[2-4%25]",
          "State": "PENDING",
      }
      assert set(output) == {
          "5610980",
          "20956421_0",
          "20956421_2",
          "20956421_3",
          "20956421_4",
      }
  
imports: import contextlib
  import os
  import signal
  import subprocess
  import typing
  from pathlib import Path
  from unittest.mock import patch
  import pytest
  import submitit
  from ..None import helpers
  from ..core import job_environment, submission, test_core, utils
  from ..core.core import Job
  from .None import slurm
label_desc: Use image node_id 18 for calling a global function with example usage: test_read_info() without return types