(old_func)
| 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 |
nothing calls this directly
no outgoing calls
no test coverage detected