code: def make_so_cache_key(
      version_hash, signature, constants, ids, **kwargs
  ):
      # Get unique key for the compiled code
      signature = {
          k: "ptr" if v[0] == "*" else v for k, v in signature.items()
      }
      key = f"{version_hash}-{''.join(signature.values())}-{constants}-{ids}"
      for kw in kwargs:
          key = f"{key}-{kwargs.get(kw)}"
      key = hashlib.md5(key.encode("utf-8")).hexdigest()
      return key
  
imports: import json
  import os
  import random
  from abc import ABC, abstractmethod
  from pathlib import Path
  from typing import Dict, Optional
  import hashlib
label_desc: Use image node_id 7 for calling a global function with example usage: make_so_cache_key(version_hash, signature, constants, ids) and returns: key