docs: def get_arg_names(target) -> typing.List[str]:
      """
      Gets the list of named arguments for the target function
  
      :param target:
          Function for which the argument names will be retrieved
      """
  
      code = getattr(target, '__code__')
  
      if code is None:
          return []
  
      arg_count = code.co_argcount
      kwarg_count = code.co_kwonlyargcount
      args_index = get_args_index(target)
      kwargs_index = get_kwargs_index(target)
  
      arg_names = list(code.co_varnames[:arg_count])
      if args_index != -1:
          arg_names.append(code.co_varnames[args_index])
      arg_names += list(code.co_varnames[arg_count:(arg_count + kwarg_count)])
      if kwargs_index != -1:
          arg_names.append(code.co_varnames[kwargs_index])
      if len(arg_names) > 0 and arg_names[0] in ['self', 'cls']:
          arg_count -= 1
          arg_names.pop(0)
  
      return arg_names