mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-12 14:15:14 +00:00
SymbolDictGrouper: Allow grouper to be temporarily disabled via disabled_context
This commit is contained in:
1 parent
d6993fe8b6
commit
101d7a01d9
1 file changed
+18
@@ -5,6 +5,7 @@ import os
|
||||
from abc import ABC, abstractmethod
|
||||
from collections import OrderedDict
|
||||
from collections.abc import Callable, Iterable, Iterator, Sequence
|
||||
from contextlib import contextmanager
|
||||
from dataclasses import asdict, dataclass
|
||||
from time import perf_counter
|
||||
from typing import Any, Generic, Literal, NotRequired, Self, TypedDict, TypeVar
|
||||
@@ -1261,6 +1262,7 @@ class SymbolDictGrouper(Generic[TSymbolDict], ABC):
|
||||
self._group_keys = group_keys
|
||||
self._group_children_keys = group_children_keys
|
||||
self._collapse_singleton = collapse_singleton
|
||||
self._is_enabled = True
|
||||
|
||||
def _group_by(self, l: list[dict], keys: list[str], children_keys: list[str], is_children: bool) -> dict[str, Any] | list[Any]:
|
||||
"""
|
||||
@@ -1321,8 +1323,24 @@ class SymbolDictGrouper(Generic[TSymbolDict], ABC):
|
||||
"""
|
||||
# avoid side effects by working on a deep-copy
|
||||
symbols_copy = copy.deepcopy(symbols)
|
||||
|
||||
if not self._is_enabled:
|
||||
return symbols_copy
|
||||
|
||||
return self._group_by(symbols_copy, self._group_keys, self._group_children_keys, is_children=False)
|
||||
|
||||
@contextmanager
|
||||
def disabled_context(self) -> Iterator[None]:
|
||||
"""
|
||||
A context manager that temporarily disables grouping.
|
||||
"""
|
||||
original_state = self._is_enabled
|
||||
self._is_enabled = False
|
||||
try:
|
||||
yield
|
||||
finally:
|
||||
self._is_enabled = original_state
|
||||
|
||||
|
||||
class LanguageServerSymbolDictGrouper(SymbolDictGrouper[LanguageServerSymbol.OutputDict]):
|
||||
def __init__(
|
||||
|
||||
Reference in new issue
Block a user