1
+ import functools
1
2
import sys
2
3
from timeit import default_timer
3
4
from types import TracebackType
6
7
if sys .version_info >= (3 , 8 , 0 ):
7
8
from typing import Literal
8
9
9
- from .decorator import decorate
10
-
11
10
if TYPE_CHECKING :
12
11
from . import Counter
13
12
F = TypeVar ("F" , bound = Callable [..., Any ])
@@ -27,11 +26,11 @@ def __exit__(self, typ: Optional[Type[BaseException]], value: Optional[BaseExcep
27
26
return False
28
27
29
28
def __call__ (self , f : "F" ) -> "F" :
30
- def wrapped (func , * args , ** kwargs ):
29
+ @functools .wraps (f )
30
+ def wrapped (* args : Any , ** kwargs : Any ) -> Any :
31
31
with self :
32
- return func (* args , ** kwargs )
33
-
34
- return decorate (f , wrapped )
32
+ return f (* args , ** kwargs )
33
+ return wrapped
35
34
36
35
37
36
class InprogressTracker :
@@ -45,11 +44,11 @@ def __exit__(self, typ, value, traceback):
45
44
self ._gauge .dec ()
46
45
47
46
def __call__ (self , f ):
48
- def wrapped (func , * args , ** kwargs ):
47
+ @functools .wraps (f )
48
+ def wrapped (* args : Any , ** kwargs : Any ) -> Any :
49
49
with self :
50
- return func (* args , ** kwargs )
51
-
52
- return decorate (f , wrapped )
50
+ return f (* args , ** kwargs )
51
+ return wrapped
53
52
54
53
55
54
class Timer :
@@ -74,10 +73,8 @@ def labels(self, *args, **kw):
74
73
self ._metric = self ._metric .labels (* args , ** kw )
75
74
76
75
def __call__ (self , f ):
77
- def wrapped (func , * args , ** kwargs ):
78
- # Obtaining new instance of timer every time
79
- # ensures thread safety and reentrancy.
76
+ @functools .wraps (f )
77
+ def wrapped (* args : Any , ** kwargs : Any ) -> Any :
80
78
with self ._new_timer ():
81
- return func (* args , ** kwargs )
82
-
83
- return decorate (f , wrapped )
79
+ return f (* args , ** kwargs )
80
+ return wrapped
0 commit comments