code: def main():
      yml_path = "mlflow/ml-package-versions.yml"
      old_src = read_file(yml_path)
      new_src = old_src
      config_dict = yaml.load(old_src, Loader=yaml.SafeLoader)
  
      for flavor_key, config in config_dict.items():
          for category in ["autologging", "models"]:
              if (category not in config) or config[category].get(
                  "pin_maximum", False
              ):
                  continue
              print("Processing", flavor_key, category)
  
              package_name = config["package_info"]["pip_release"]
              max_ver = config[category]["maximum"]
              versions = get_package_versions(package_name)
              unsupported = config[category].get("unsupported", [])
              versions = set(versions).difference(
                  unsupported
              )  # exclude unsupported versions
              latest_version = get_latest_version(versions)
  
              if Version(latest_version) <= Version(max_ver):
                  continue
  
              new_src = update_max_version(
                  new_src, flavor_key, latest_version, category
              )
  
      save_file(new_src, yml_path)
      update_ml_package_versions_py(yml_path)
  
file_path: mlflow/dev/update_ml_package_versions.py
imports: import json
  import re
  import urllib.request
  from pathlib import Path
  import yaml
  from packaging.version import Version
label_desc: Use image node_id 8 for calling a global function with example usage: main() without return types