MCPcopy Create free account
hub / github.com/InternRobotics/EmbodiedScan / new_func

Function new_func

embodiedscan/utils/array_converter.py:83–197  ·  view source on GitHub ↗

Inner wrapper for the arguments.

(*args, **kwargs)

Source from the content-addressed store, hash-verified

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,

Callers

nothing calls this directly

Calls 4

convertMethod · 0.95
set_templateMethod · 0.95
ArrayConverterClass · 0.85
recursive_recoverFunction · 0.85

Tested by

no test coverage detected