<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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