11
11
log = logging .getLogger (__name__ )
12
12
13
13
14
- def format_label (completion , sig ):
15
- if sig and completion .type in ('function' , 'method' ):
16
- params = ', ' .join (param .name for param in sig [0 ].params )
17
- label = '{}({})' .format (completion .name , params )
18
- return label
19
- return completion .name
20
-
21
-
22
- class LabelResolver :
14
+ # ---- Base class
15
+ # -----------------------------------------------------------------------------
16
+ class Resolver :
23
17
24
- def __init__ (self , format_label_callback , time_to_live = 60 * 30 ):
25
- self .format_label = format_label_callback
18
+ def __init__ (self , callback , time_to_live = 60 * 30 ):
19
+ self .callback = callback
26
20
self ._cache = {}
27
21
self ._time_to_live = time_to_live
28
22
self ._cache_ttl = defaultdict (set )
@@ -66,11 +60,11 @@ def get_or_create(self, completion: Completion):
66
60
if self .time_key () % self ._clear_every == 0 :
67
61
self .clear_outdated ()
68
62
69
- self ._cache [key ] = self .resolve_label (completion )
63
+ self ._cache [key ] = self .resolve (completion )
70
64
self ._cache_ttl [self .time_key ()].add (key )
71
65
return self ._cache [key ]
72
66
73
- return self .resolve_label (completion )
67
+ return self .resolve (completion )
74
68
75
69
def _create_completion_id (self , completion : Completion ):
76
70
return (
@@ -79,10 +73,10 @@ def _create_completion_id(self, completion: Completion):
79
73
self .time_key ()
80
74
)
81
75
82
- def resolve_label (self , completion ):
76
+ def resolve (self , completion ):
83
77
try :
84
78
sig = completion .get_signatures ()
85
- return self .format_label (completion , sig )
79
+ return self .callback (completion , sig )
86
80
except Exception as e : # pylint: disable=broad-except
87
81
log .warning (
88
82
'Something went wrong when resolving label for {completion}: {e}' ,
@@ -91,4 +85,14 @@ def resolve_label(self, completion):
91
85
return ''
92
86
93
87
94
- LABEL_RESOLVER = LabelResolver (format_label )
88
+ # ---- Label resolver
89
+ # -----------------------------------------------------------------------------
90
+ def format_label (completion , sig ):
91
+ if sig and completion .type in ('function' , 'method' ):
92
+ params = ', ' .join (param .name for param in sig [0 ].params )
93
+ label = '{}({})' .format (completion .name , params )
94
+ return label
95
+ return completion .name
96
+
97
+
98
+ LABEL_RESOLVER = Resolver (format_label )
0 commit comments