class_docstr: Container that displays the completions in several columns.
  When `show_meta` (a :class:`~prompt_toolkit.filters.Filter`) evaluates
  to True, it shows the meta information at the bottom.
class_docstr_tok: ["Container","that","displays","the","completions","in","several","columns",".","When","`","show_meta","`","(","a",":","class",":","`","~prompt_toolkit.filters.Filter","`",")","evaluates","to","True",",","it","shows","the","meta","information","at","the","bottom","."]
code: def __init__(
      self,
      min_rows: int = 3,
      suggested_max_column_width: int = 30,
      show_meta: FilterOrBool = True,
      extra_filter: FilterOrBool = True,
      z_index: int = 10**8,
  ) -> None:
      show_meta = to_filter(show_meta)
      extra_filter = to_filter(extra_filter)
  
      # Display filter: show when there are completions but not at the point
      # we are returning the input.
      full_filter = extra_filter & has_completions & ~is_done
  
      @Condition
      def any_completion_has_meta() -> bool:
          complete_state = get_app().current_buffer.complete_state
          return complete_state is not None and any(
              c.display_meta for c in complete_state.completions
          )
  
      # Create child windows.
      # NOTE: We don't set style='class:completion-menu' to the
      #       `MultiColumnCompletionMenuControl`, because this is used in a
      #       Float that is made transparent, and the size of the control
      #       doesn't always correspond exactly with the size of the
      #       generated content.
      completions_window = ConditionalContainer(
          content=Window(
              content=MultiColumnCompletionMenuControl(
                  min_rows=min_rows,
                  suggested_max_column_width=suggested_max_column_width,
              ),
              width=Dimension(min=8),
              height=Dimension(min=1),
          ),
          filter=full_filter,
      )
  
      meta_window = ConditionalContainer(
          content=Window(content=_SelectedCompletionMetaControl()),
          filter=full_filter & show_meta & any_completion_has_meta,
      )
  
      # Initialize split.
      super().__init__(
          [completions_window, meta_window], z_index=z_index
      )
  
imports: from __future__ import annotations
  import math
  from itertools import zip_longest
  from typing import TYPE_CHECKING, Callable, Iterable, Sequence, TypeVar, cast
  from weakref import WeakKeyDictionary
  from prompt_toolkit.application.current import get_app
  from prompt_toolkit.buffer import CompletionState
  from prompt_toolkit.completion import Completion
  from prompt_toolkit.data_structures import Point
  from prompt_toolkit.filters import Condition, FilterOrBool, has_completions, is_done, to_filter
  from prompt_toolkit.formatted_text import StyleAndTextTuples, fragment_list_width, to_formatted_text
  from prompt_toolkit.key_binding.key_processor import KeyPressEvent
  from prompt_toolkit.layout.utils import explode_text_fragments
  from prompt_toolkit.mouse_events import MouseEvent, MouseEventType
  from prompt_toolkit.utils import get_cwidth
  from .containers import ConditionalContainer, HSplit, ScrollOffsets, Window
  from .controls import GetLinePrefixCallable, UIContent, UIControl
  from .dimension import Dimension
  from .margins import ScrollbarMargin
label_desc: Use image node_id 1 to create a new MultiColumnCompletionsMenu object from inherited base classes: HSplit with example: obj = MultiColumnCompletionsMenu(min_rows, suggested_max_column_width, show_meta, extra_filter, z_index)