code: def gen_dynamic_completions(self, text):
          
          try:  # pylint: disable=too-many-nested-blocks
              param = self.leftover_args[-1]
  
              # command table specific name
              arg_name = self.get_arg_name(param)
  
              for comp in self.gen_enum_completions(arg_name):
                  yield comp
  
              parsed_args = self.mute_parse_args(text)
  
              # there are 3 formats for completers the cli uses
              # this try catches which format it is
              if self.cmdtab[self.current_command].arguments[arg_name].completer:
                  completions = []
                  try:
                      completions = self.cmdtab[self.current_command].arguments[arg_name].completer(
                          prefix=self.unfinished_word, action=None, parsed_args=parsed_args)
                  except TypeError:
                      try:
                          completions = self.cmdtab[self.current_command].arguments[arg_name].completer(
                              prefix=self.unfinished_word)
                      except TypeError:
                          try:
                              completions = self.cmdtab[self.current_command].arguments[arg_name].completer()
                          except TypeError:
                              pass  # other completion method used
  
                  for comp in completions:
                      for completion in self.process_dynamic_completion(comp):
                          yield completion
  
          # if the user isn't logged in
          except Exception:  # pylint: disable=broad-except
              pass
docs: generates the dynamic values, like the names of resource groups