docs: def process_input_args(self, ifiles: sos_targets, **kwargs):
          """This function handles directive input and all its parameters.
          It
              determines and set __step_input__
              determines and set pattern variables if needed
          returns
              _groups
              _vars
          which are groups of _input and related _vars
          """
          if ifiles.unspecified():
              env.sos_dict.set('step_input', sos_targets([]))
              env.sos_dict.set('_input', sos_targets([]))
              env.sos_dict.set('step_output', sos_targets())
              return [sos_targets([])], [{}]
  
          assert isinstance(ifiles, sos_targets)
  
          if env.sos_dict.get('__dynamic_input__', False):
              runner = self.verify_dynamic_targets(
                  [x for x in ifiles if isinstance(x, file_target)])
              try:
                  yreq = next(runner)
                  while True:
                      yres = yield yreq
                      yreq = runner.send(yres)
              except StopIteration as e:
                  pass
  
          # input file is the filtered files
          env.sos_dict.set('step_input', ifiles)
          env.sos_dict.set('_input', ifiles)
  
          if ifiles._num_groups() == 0:
              ifiles._group('all')
          #
          return ifiles.groups