MCPcopy Create free account
hub / github.com/10Ring/LAA-Net / api_warning_wrapper

Function api_warning_wrapper

register/misc.py:279–321  ·  view source on GitHub ↗
(old_func)

Source from the content-addressed store, hash-verified

277 """
278
279 def api_warning_wrapper(old_func):
280
281 @functools.wraps(old_func)
282 def new_func(*args, **kwargs):
283 # get the arg spec of the decorated method
284 args_info = getfullargspec(old_func)
285 # get name of the function
286 func_name = old_func.__name__
287 if cls_name is not None:
288 func_name = f'{cls_name}.{func_name}'
289 if args:
290 arg_names = args_info.args[:len(args)]
291 for src_arg_name, dst_arg_name in name_dict.items():
292 if src_arg_name in arg_names:
293 warnings.warn(
294 f'"{src_arg_name}" is deprecated in '
295 f'`{func_name}`, please use "{dst_arg_name}" '
296 'instead', DeprecationWarning)
297 arg_names[arg_names.index(src_arg_name)] = dst_arg_name
298 if kwargs:
299 for src_arg_name, dst_arg_name in name_dict.items():
300 if src_arg_name in kwargs:
301
302 assert dst_arg_name not in kwargs, (
303 f'The expected behavior is to replace '
304 f'the deprecated key `{src_arg_name}` to '
305 f'new key `{dst_arg_name}`, but got them '
306 f'in the arguments at the same time, which '
307 f'is confusing. `{src_arg_name} will be '
308 f'deprecated in the future, please '
309 f'use `{dst_arg_name}` instead.')
310
311 warnings.warn(
312 f'"{src_arg_name}" is deprecated in '
313 f'`{func_name}`, please use "{dst_arg_name}" '
314 'instead', DeprecationWarning)
315 kwargs[dst_arg_name] = kwargs.pop(src_arg_name)
316
317 # apply converted arguments to the decorated method
318 output = old_func(*args, **kwargs)
319 return output
320
321 return new_func
322
323 return api_warning_wrapper
324

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected