code: def ls_modules(
      *, skip_prefixes: Sequence[str] = [], skip_main: bool = True
  ) -> list[str]:
      modules: list[str] = []
  
      files = ls_files("src/bokeh/**.py")
  
      for file in files:
          if not file:
              continue
  
          if file.endswith("__main__.py") and skip_main:
              continue
  
          module = (
              file.strip("src/")
              .replace("/", ".")
              .replace(".py", "")
              .replace(".__init__", "")
          )
  
          if any(module.startswith(prefix) for prefix in skip_prefixes):
              continue
  
          modules.append(module)
  
      return modules
  
file_path: bokeh/tests/support/util/project.py
imports: from __future__ import annotations
  import logging
  from pathlib import Path
  from subprocess import run
  from typing import Sequence
label_desc: Use image node_id 2 for calling a global function with example usage: ls_modules() and returns: modules