code: def generate_constraints_no_providers(
      config_params: ConfigParams,
  ) -> None:
      """
      Generates constraints without any provider dependencies. This is used mostly to generate SBOM
      files - where we generate list of dependencies for Airflow without any provider installed.
      """
      uninstall_all_packages(config_params)
      console.print(
          "[bright_blue]Installing airflow with [all-core] extras only with eager upgrade in "
          "installable mode."
      )
      install_local_airflow_with_eager_upgrade(
          config_params,
          config_params.eager_upgrade_additional_requirements,
      )
      console.print(
          "[success]Installed airflow with [all-core] extras only with eager upgrade."
      )
      with config_params.current_constraints_file.open(
          "w"
      ) as constraints_file:
          constraints_file.write(NO_PROVIDERS_CONSTRAINTS_PREFIX)
          freeze_packages_to_file(config_params, constraints_file)
      download_latest_constraint_file(config_params)
      diff_constraints(config_params)
  
imports: from __future__ import annotations
  import json
  import os
  import sys
  from dataclasses import dataclass
  from datetime import datetime
  from functools import cached_property
  from pathlib import Path
  from typing import TextIO
  import requests
  from click import Choice
  from in_container_utils import click, console, run_command
label_desc: Use image node_id 9 for calling a global function with example usage: generate_constraints_no_providers(config_params) without return types