code: def grabclipboard():
      if sys.platform == "darwin":
          fh, filepath = tempfile.mkstemp(".png")
          os.close(fh)
          commands = [
              'set theFile to (open for access POSIX file "'
              + filepath
              + '" with write permission)',
              "try",
              "    write (the clipboard as «class PNGf») to theFile",
              "end try",
              "close access theFile",
          ]
          script = ["osascript"]
          for command in commands:
              script += ["-e", command]
          subprocess.call(script)
  
          im = None
          if os.stat(filepath).st_size != 0:
              im = Image.open(filepath)
              im.load()
          os.unlink(filepath)
          return im
      elif sys.platform == "win32":
          fmt, data = Image.core.grabclipboard_win32()
          if fmt == "file":  # CF_HDROP
              import struct
  
              o = struct.unpack_from("I", data)[0]
              if data[16] != 0:
                  files = data[o:].decode("utf-16le").split("\0")
              else:
                  files = data[o:].decode("mbcs").split("\0")
              return files[: files.index("")]
          if isinstance(data, bytes):
              data = io.BytesIO(data)
              if fmt == "png":
                  from . import PngImagePlugin
  
                  return PngImagePlugin.PngImageFile(data)
              elif fmt == "DIB":
                  from . import BmpImagePlugin
  
                  return BmpImagePlugin.DibImageFile(data)
          return None
      else:
          if os.getenv("WAYLAND_DISPLAY"):
              session_type = "wayland"
          elif os.getenv("DISPLAY"):
              session_type = "x11"
          else:  # Session type check failed
              session_type = None
  
          if shutil.which("wl-paste") and session_type in (
              "wayland",
              None,
          ):
              output = subprocess.check_output(
                  ["wl-paste", "-l"]
              ).decode()
              mimetypes = output.splitlines()
              if "image/png" in mimetypes:
                  mimetype = "image/png"
              elif mimetypes:
                  mimetype = mimetypes[0]
              else:
                  mimetype = None
  
              args = ["wl-paste"]
              if mimetype:
                  args.extend(["-t", mimetype])
          elif shutil.which("xclip") and session_type in ("x11", None):
              args = [
                  "xclip",
                  "-selection",
                  "clipboard",
                  "-t",
                  "image/png",
                  "-o",
              ]
          else:
              msg = "wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux"
              raise NotImplementedError(msg)
  
          p = subprocess.run(args, capture_output=True)
          err = p.stderr
          if err:
              msg = f"{args[0]} error: {err.strip().decode()}"
              raise ChildProcessError(msg)
          data = io.BytesIO(p.stdout)
          im = Image.open(data)
          im.load()
          return im
  
file_path: catboost/contrib/python/Pillow/py3/PIL/ImageGrab.py
imports: import io
  import os
  import shutil
  import subprocess
  import sys
  import tempfile
  from .None import Image
label_desc: Use image node_id 2 for calling a global function with example usage: grabclipboard() and returns: im, None, im, files, PngImagePlugin, BmpImagePlugin