code: def mf_pformat_many(  # type: ignore
      description: str,
      obj_dict: Dict[str, Any],
      max_line_length: int = 120,
      indent_prefix: str = "  ",
      include_object_field_names: bool = True,
      include_none_object_fields: bool = False,
      include_empty_object_fields: bool = False,
  ) -> str:
      """Prints many objects in an indented form."""
      lines: List[str] = [description]
      for key, value in obj_dict.items():
          item_block_lines = (
              f"{key}:",
              indent(
                  mf_pformat(
                      obj=value,
                      max_line_length=max(
                          0, max_line_length - len(indent_prefix)
                      ),
                      indent_prefix=indent_prefix,
                      include_object_field_names=include_object_field_names,
                      include_none_object_fields=include_none_object_fields,
                      include_empty_object_fields=include_empty_object_fields,
                  ),
                  indent_prefix=indent_prefix,
              ),
          )
          item_block = "\n".join(item_block_lines)
          lines.append(item_block)
      return "\n\n".join(lines)
  
file_path: metricflow/metricflow/mf_logging/pretty_print.py
imports: from __future__ import annotations
  import logging
  import pprint
  from collections.abc import Mapping
  from dataclasses import fields, is_dataclass
  from enum import Enum
  from typing import Any, Dict, List, Optional, Sized, Union
  from pydantic import BaseModel
  from metricflow.mf_logging.formatting import indent
label_desc: Use image node_id 2 for calling a global function with example usage: mf_pformat_many(description, obj_dict, max_line_length, indent_prefix, include_object_field_names, include_none_object_fields, include_empty_object_fields) and returns: str