Skip to content

Commit 71e1b6f

Browse files
committed
Abstract resolver class in order to generalize it
1 parent 4fde579 commit 71e1b6f

File tree

1 file changed

+20
-16
lines changed

1 file changed

+20
-16
lines changed

pylsp/plugins/_resolvers.py

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,12 @@
1111
log = 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

Comments
 (0)