code: def calculate_md5_checksum_for_files(
      md5sum_cache_dir: Path,
      update: bool = False,
      skip_provider_dependencies_check: bool = False,
  ) -> tuple[list[str], list[str]]:
      """
      Calculates checksums for all interesting files and stores the hashes in the md5sum_cache_dir.
      Optionally modifies the hashes.
  
      :param md5sum_cache_dir: directory where to store cached information
      :param update: whether to update the hashes
      :param skip_provider_dependencies_check: whether to skip regeneration of the provider dependencies
      :return: Tuple of two lists: modified and not-modified files
      """
      not_modified_files = []
      modified_files = []
      if not skip_provider_dependencies_check:
          modified_provider_yaml_files = []
          for file in ALL_PROVIDER_YAML_FILES:
              # Only check provider yaml files once and save the result immediately.
              # If we need to regenerate the dependencies and they are not modified then
              # all is fine and we can save checksums for the new files
              if check_md5_sum_for_file(file, md5sum_cache_dir, True):
                  modified_provider_yaml_files.append(file)
          if modified_provider_yaml_files:
              get_console().print(
                  "[info]Attempting to generate provider dependencies. "
                  f"{len(modified_provider_yaml_files)} provider.yaml file(s) changed since last check."
              )
              if get_verbose():
                  get_console().print(
                      [
                          os.fspath(
                              file.relative_to(AIRFLOW_SOURCES_ROOT)
                          )
                          for file in modified_provider_yaml_files
                      ]
                  )
              # Regenerate provider_dependencies.json
              run_command(
                  [
                      sys.executable,
                      os.fspath(
                          AIRFLOW_SOURCES_ROOT
                          / "scripts"
                          / "ci"
                          / "pre_commit"
                          / "pre_commit_update_providers_dependencies.py"
                      ),
                  ],
                  cwd=AIRFLOW_SOURCES_ROOT,
              )
      for file in FILES_FOR_REBUILD_CHECK:
          is_modified = check_md5_sum_for_file(
              file, md5sum_cache_dir, update
          )
          if is_modified:
              modified_files.append(file)
          else:
              not_modified_files.append(file)
      return modified_files, not_modified_files
  
file_path: airflow/dev/breeze/src/airflow_breeze/utils/md5_build_check.py
imports: from __future__ import annotations
  import hashlib
  import os
  import sys
  from pathlib import Path
  from typing import TYPE_CHECKING
  from airflow_breeze.global_constants import ALL_PROVIDER_YAML_FILES, FILES_FOR_REBUILD_CHECK
  from airflow_breeze.utils.console import get_console
  from airflow_breeze.utils.path_utils import AIRFLOW_SOURCES_ROOT
  from airflow_breeze.utils.run_utils import run_command
  from airflow_breeze.utils.shared_options import get_verbose
label_desc: Use image node_id 4 for calling a global function with example usage: calculate_md5_checksum_for_files(md5sum_cache_dir, update, skip_provider_dependencies_check) and returns: modified_files,  not_modified_files