Skip to content

Commit e47888a

Browse files
Merge pull request #1128 from misrasaurabh1/codeflash/optimize-collect_func_params-m7e2t2pc
⚡️ Speed up function `collect_func_params` by 10%
2 parents 3cffe3f + 9cb0be3 commit e47888a

File tree

1 file changed

+22
-19
lines changed

1 file changed

+22
-19
lines changed

inference/usage_tracking/utils.py

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,30 @@ def collect_func_params(
1919
func: Callable[[Any], Any], args: Iterable[Any], kwargs: Dict[Any, Any]
2020
) -> Dict[str, Any]:
2121
signature = get_signature(func)
22-
23-
params = {}
24-
if args:
25-
for param, arg_value in zip(signature.parameters.keys(), args):
26-
params[param] = arg_value
27-
if kwargs:
28-
params = {**params, **kwargs}
29-
defaults = set(signature.parameters.keys()).difference(set(params.keys()))
30-
for default_arg in defaults:
31-
default = signature.parameters[default_arg].default
32-
if default is inspect.Parameter.empty:
33-
continue
34-
params[default_arg] = default
35-
36-
signature_params = set(signature.parameters)
37-
if set(params) != signature_params:
38-
if "kwargs" in signature_params:
22+
parameters = signature.parameters
23+
24+
# Initialize params with positional arguments
25+
params = {param: arg_value for param, arg_value in zip(parameters.keys(), args)}
26+
27+
# Update params with keyword arguments
28+
params.update(kwargs)
29+
30+
# Set default values for missing arguments
31+
defaults = {
32+
param: param_obj.default
33+
for param, param_obj in parameters.items()
34+
if param not in params and param_obj.default is not inspect.Parameter.empty
35+
}
36+
params.update(defaults)
37+
38+
# Verify against function signature parameters
39+
signature_keys = set(parameters.keys())
40+
if params.keys() != signature_keys:
41+
if "kwargs" in signature_keys:
3942
params["kwargs"] = kwargs
40-
if "args" in signature_params:
43+
if "args" in signature_keys:
4144
params["args"] = args
42-
if not set(params).issuperset(signature_params):
45+
if not set(params).issuperset(signature_keys):
4346
logger.error("Params mismatch for %s.%s", func.__module__, func.__name__)
4447

4548
return params

0 commit comments

Comments
 (0)