code: def parse_lazy_data(content, variables_mapping=None):
      
      # TODO: refactor type check
      if content is None or isinstance(content, (numeric_types, bool, type)):
          return content
  
      elif isinstance(content, LazyString):
          variables_mapping = utils.ensure_mapping_format(variables_mapping or {})
          return content.to_value(variables_mapping)
  
      elif isinstance(content, (list, set, tuple)):
          return [
              parse_lazy_data(item, variables_mapping)
              for item in content
          ]
  
      elif isinstance(content, dict):
          parsed_content = {}
          for key, value in content.items():
              parsed_key = parse_lazy_data(key, variables_mapping)
              parsed_value = parse_lazy_data(value, variables_mapping)
              parsed_content[parsed_key] = parsed_value
  
          return parsed_content
  
      return content
docs: parse lazy data with evaluated variables mapping.
          Notice: variables_mapping should not contain any variable or function.