Inner wrapper for the arguments.
(*args, **kwargs)
| 81 | |
| 82 | @functools.wraps(func) |
| 83 | def new_func(*args, **kwargs): |
| 84 | """Inner wrapper for the arguments.""" |
| 85 | if len(apply_to) == 0: |
| 86 | return func(*args, **kwargs) |
| 87 | |
| 88 | func_name = func.__name__ |
| 89 | |
| 90 | arg_spec = getfullargspec(func) |
| 91 | |
| 92 | arg_names = arg_spec.args |
| 93 | arg_num = len(arg_names) |
| 94 | default_arg_values = arg_spec.defaults |
| 95 | if default_arg_values is None: |
| 96 | default_arg_values = [] |
| 97 | no_default_arg_num = len(arg_names) - len(default_arg_values) |
| 98 | |
| 99 | kwonly_arg_names = arg_spec.kwonlyargs |
| 100 | kwonly_default_arg_values = arg_spec.kwonlydefaults |
| 101 | if kwonly_default_arg_values is None: |
| 102 | kwonly_default_arg_values = {} |
| 103 | |
| 104 | all_arg_names = arg_names + kwonly_arg_names |
| 105 | |
| 106 | # in case there are args in the form of *args |
| 107 | if len(args) > arg_num: |
| 108 | named_args = args[:arg_num] |
| 109 | nameless_args = args[arg_num:] |
| 110 | else: |
| 111 | named_args = args |
| 112 | nameless_args = [] |
| 113 | |
| 114 | # template argument data type is used for all array-like arguments |
| 115 | if template_arg_name_ is None: |
| 116 | template_arg_name = apply_to[0] |
| 117 | else: |
| 118 | template_arg_name = template_arg_name_ |
| 119 | |
| 120 | if template_arg_name not in all_arg_names: |
| 121 | raise ValueError(f'{template_arg_name} is not among the ' |
| 122 | f'argument list of function {func_name}') |
| 123 | |
| 124 | # inspect apply_to |
| 125 | for arg_to_apply in apply_to: |
| 126 | if arg_to_apply not in all_arg_names: |
| 127 | raise ValueError( |
| 128 | f'{arg_to_apply} is not an argument of {func_name}') |
| 129 | |
| 130 | new_args = [] |
| 131 | new_kwargs = {} |
| 132 | |
| 133 | converter = ArrayConverter() |
| 134 | target_type = torch.Tensor if to_torch else np.ndarray |
| 135 | |
| 136 | # non-keyword arguments |
| 137 | for i, arg_value in enumerate(named_args): |
| 138 | if arg_names[i] in apply_to: |
| 139 | new_args.append( |
| 140 | converter.convert(input_array=arg_value, |
nothing calls this directly
no test coverage detected