code: def __init__(self, path):
      self.path = path
      path = Path(path)
      self.ext = path.suffix[1:]
      self.src = path.read_text()
      match = re.search(
          prototype_pattern[self.ext], self.src, re.MULTILINE
      )
      self.name = match.group(1)
      signature = match.group(2)
      types = re.findall(arg_type_pattern[self.ext], signature)
      self.signature = {
          k: convert_type_repr(ty) for k, ty in enumerate(types)
      }
  
imports: from __future__ import annotations
  import hashlib
  import json
  from .._C.libtriton import get_env_vars, ir
  from ..backends import backends
  from ..None import __version__
  from ..runtime.autotuner import OutOfResources
  from ..runtime.cache import get_cache_manager
  from ..runtime.driver import driver
  from ..backends.nvidia.compiler import InfoFromBackendForTensorMap
  from dataclasses import dataclass
  from .code_generator import ast_to_ttir
  from pathlib import Path
  import re
  import functools
  import os
label_desc: Use image node_id 1 to create a new IRSource object  with example: obj = IRSource(path)