1111log = logging .getLogger (__name__ )
1212
1313
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 :
2317
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
2620 self ._cache = {}
2721 self ._time_to_live = time_to_live
2822 self ._cache_ttl = defaultdict (set )
@@ -66,11 +60,11 @@ def get_or_create(self, completion: Completion):
6660 if self .time_key () % self ._clear_every == 0 :
6761 self .clear_outdated ()
6862
69- self ._cache [key ] = self .resolve_label (completion )
63+ self ._cache [key ] = self .resolve (completion )
7064 self ._cache_ttl [self .time_key ()].add (key )
7165 return self ._cache [key ]
7266
73- return self .resolve_label (completion )
67+ return self .resolve (completion )
7468
7569 def _create_completion_id (self , completion : Completion ):
7670 return (
@@ -79,10 +73,10 @@ def _create_completion_id(self, completion: Completion):
7973 self .time_key ()
8074 )
8175
82- def resolve_label (self , completion ):
76+ def resolve (self , completion ):
8377 try :
8478 sig = completion .get_signatures ()
85- return self .format_label (completion , sig )
79+ return self .callback (completion , sig )
8680 except Exception as e : # pylint: disable=broad-except
8781 log .warning (
8882 'Something went wrong when resolving label for {completion}: {e}' ,
@@ -91,4 +85,14 @@ def resolve_label(self, completion):
9185 return ''
9286
9387
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