class_docstr: Base class for providing shell completion support. A subclass for
  a given shell will override attributes and methods to implement the
  completion instructions (``source`` and ``complete``).
  
  :param cli: Command being called.
  :param prog_name: Name of the executable in the shell.
  :param complete_var: Name of the environment variable that holds
      the completion instruction.
  
  .. versionadded:: 8.0
class_docstr_tok: ["Base","class","for","providing","shell","completion","support",".","A","subclass","for","a","given","shell","will","override","attributes","and","methods","to","implement","the","completion","instructions","(","``","source","``","and","``","complete","``",")",".",":","param","cli",":","Command","being","called",".",":","param","prog_name",":","Name","of","the","executable","in","the","shell",".",":","param","complete_var",":","Name","of","the","environment","variable","that","holds","the","completion","instruction",".","..","versionadded",":",":","8.0"]
code: def __init__(
      self,
      cli: BaseCommand,
      ctx_args: t.MutableMapping[str, t.Any],
      prog_name: str,
      complete_var: str,
  ) -> None:
      self.cli = cli
      self.ctx_args = ctx_args
      self.prog_name = prog_name
      self.complete_var = complete_var
  
imports: import os
  import re
  import typing
  from gettext import gettext
  from .core import Argument
  from .core import BaseCommand
  from .core import Context
  from .core import MultiCommand
  from .core import Option
  from .core import Parameter
  from .core import ParameterSource
  from .parser import split_arg_string
  from .utils import echo
label_desc: Use image node_id 1 to create a new ShellComplete object  with example: obj = ShellComplete(cli, ctx_args, prog_name, complete_var)