code: def run_compile_www_assets(
      dev: bool,
      run_in_background: bool,
      force_clean: bool,
  ):
      if force_clean:
          clean_www_assets()
      if dev:
          get_console().print(
              "\n[warning] The command below will run forever until you press Ctrl-C[/]\n"
          )
          get_console().print(
              "\n[info]If you want to see output of the compilation command,\n"
              "[info]cancel it, go to airflow/www folder and run 'yarn dev'.\n"
              "[info]However, it requires you to have local yarn installation.\n"
          )
      command_to_execute = [
          sys.executable,
          "-m",
          "pre_commit",
          "run",
          "--hook-stage",
          "manual",
          "compile-www-assets-dev" if dev else "compile-www-assets",
          "--all-files",
          "--verbose",
      ]
      get_console().print(
          "[info]The output of the asset compilation is stored in: [/]"
          f"{WWW_ASSET_OUT_DEV_MODE_FILE if dev else WWW_ASSET_OUT_FILE}\n"
      )
      if run_in_background:
          pid = os.fork()
          if pid:
              # Parent process - send signal to process group of the child process
              atexit.register(kill_process_group, pid)
          else:
              # Check if we are not a group leader already (We should not be)
              if os.getpid() != os.getsid(0):
                  # and create a new process group where we are the leader
                  os.setpgid(0, 0)
              _run_compile_internally(command_to_execute, dev)
              sys.exit(0)
      else:
          return _run_compile_internally(command_to_execute, dev)
  
imports: from __future__ import annotations
  import atexit
  import contextlib
  import os
  import re
  import shlex
  import shutil
  import signal
  import stat
  import subprocess
  import sys
  from functools import lru_cache
  from pathlib import Path
  from typing import Mapping, Union
  from rich.markup import escape
  from airflow_breeze.utils.ci_group import ci_group
  from airflow_breeze.utils.console import Output, get_console
  from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT, WWW_ASSET_COMPILE_LOCK, WWW_ASSET_HASH_FILE, WWW_ASSET_OUT_DEV_MODE_FILE, WWW_ASSET_OUT_FILE, WWW_NODE_MODULES_DIR, WWW_STATIC_DIST_DIR
  from airflow_breeze.utils.shared_options import get_dry_run, get_verbose
label_desc: Use image node_id 17 for calling a global function with example usage: run_compile_www_assets(dev, run_in_background, force_clean) and returns: _run_compile_internally