code: def _extract_compression_hyperparameters(params):
      """
      Helper function used to extract a list of compression hyperparameters from
      config_list mappings.
      This function searches recursively in compression config_list entries for keywords
      mapped to dictionaries containing a "range" and "type", and resolves for them a
      serialized name based on the depth at which they are found.
  
      :param params: config_list element
      :type params: dict
      :return: list of hyperparameters as dictionaries containing "name", "range" and
      "type"
      :rtype: list
      """
      args = []
      for key, val in params.items():
          if isinstance(val, dict):
              if "type" in val:
                  args += [
                      {
                          "name": key,
                          **{
                              key: val[key]
                              for key in hyperparams_params
                              if key in val
                          },
                      }
                  ]
              else:
                  ret = _extract_compression_hyperparameters(val)
                  ret = [
                      {
                          **val,
                          "name": "{}{}{}".format(
                              key, SERIALIZATION_SEPARATOR, val["name"]
                          ),
                      }
                      for val in ret
                  ]
                  args += ret
      return args
  
file_path: auptimizer/src/aup/compression/utils.py
imports: import json
  import logging
  import signal
  import sys
  import _thread
  import threading
  import time
  from ..EE.Resource import get_resource_manager
  from ..aup import BasicConfig
  from ..EE.Job import Job
  from ..utils import get_default_username, get_default_connector, check_missing_key
label_desc: Use image node_id 3 for calling a global function with example usage: _extract_compression_hyperparameters(params) and returns: args