|
1 | 1 | from enum import Enum |
2 | | -from typing import List, Union, NewType, Optional |
| 2 | +from functools import wraps |
| 3 | +from typing import List, Union, NewType, Optional, Tuple |
3 | 4 |
|
4 | 5 | from robot.api import logger |
5 | 6 |
|
|
10 | 11 | penum = Enum("penum", "ok") |
11 | 12 |
|
12 | 13 |
|
| 14 | +def _my_deco(old_args: Tuple[str, str], new_args: Tuple[str, str]): |
| 15 | + def actual_decorator(method): |
| 16 | + @wraps(method) |
| 17 | + def wrapper(*args, **kwargs): |
| 18 | + for index, old_arg in enumerate(old_args): |
| 19 | + logger.warn( |
| 20 | + f"{old_arg} has deprecated, use {new_args[index]}", |
| 21 | + ) |
| 22 | + return method(*args, **kwargs) |
| 23 | + |
| 24 | + return wrapper |
| 25 | + |
| 26 | + return actual_decorator |
| 27 | + |
| 28 | + |
13 | 29 | class CustomObject(object): |
14 | 30 |
|
15 | 31 | def __init__(self, x, y): |
@@ -126,3 +142,8 @@ def enum_conversion(self, param: Optional[penum] = None): |
126 | 142 | logger.info(f'OK {param}') |
127 | 143 | logger.info(param.ok) |
128 | 144 | return f'OK {param}' |
| 145 | + |
| 146 | + @keyword |
| 147 | + @_my_deco(old_args=("arg1", ), new_args=("arg2", )) |
| 148 | + def keyword_with_deco_and_signature(self, arg1: bool = False, arg2: bool = False): |
| 149 | + return f"{arg1}: {type(arg1)}, {arg2}: {type(arg2)}" |
0 commit comments