mirror of
https://github.com/tiennm99/serena.git
synced 2026-10-14 02:16:21 +00:00
Improve string representation of Project and JetBrainsSymbol
Improve typing of JetBrainsSymbol
This commit is contained in:
1 parent
1e06812d68
commit
570703d0ae
2 files changed
+28
-4
No files matched your search
@@ -5,6 +5,7 @@ from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
import pathspec
|
||||
from sensai.util.string import ToStringMixin
|
||||
|
||||
from serena.config.serena_config import DEFAULT_TOOL_TIMEOUT, ProjectConfig, get_serena_managed_in_project_dir
|
||||
from serena.constants import SERENA_FILE_ENCODING, SERENA_MANAGED_DIR_IN_HOME, SERENA_MANAGED_DIR_NAME
|
||||
@@ -53,7 +54,7 @@ class MemoriesManager:
|
||||
return f"Memory {name} deleted."
|
||||
|
||||
|
||||
class Project:
|
||||
class Project(ToStringMixin):
|
||||
def __init__(self, project_root: str, project_config: ProjectConfig, is_newly_created: bool = False):
|
||||
self.project_root = project_root
|
||||
self.project_config = project_config
|
||||
@@ -90,6 +91,12 @@ class Project:
|
||||
log.debug(f"Processing {len(processed_patterns)} ignored paths")
|
||||
self._ignore_spec = pathspec.PathSpec.from_lines(pathspec.patterns.GitWildMatchPattern, processed_patterns)
|
||||
|
||||
def _tostring_includes(self) -> list[str]:
|
||||
return []
|
||||
|
||||
def _tostring_additional_entries(self) -> dict[str, Any]:
|
||||
return {"root": self.project_root, "name": self.project_name}
|
||||
|
||||
@property
|
||||
def project_name(self) -> str:
|
||||
return self.project_config.project_name
|
||||
|
||||
+20
-3
@@ -4,7 +4,7 @@ import os
|
||||
from abc import ABC, abstractmethod
|
||||
from collections.abc import Iterator, Sequence
|
||||
from dataclasses import asdict, dataclass
|
||||
from typing import TYPE_CHECKING, Any, Self, Union
|
||||
from typing import TYPE_CHECKING, Any, NotRequired, Self, TypedDict, Union
|
||||
|
||||
from sensai.util.string import ToStringMixin
|
||||
|
||||
@@ -77,7 +77,7 @@ class PositionInFile:
|
||||
return Position(line=self.line, character=self.col)
|
||||
|
||||
|
||||
class Symbol(ABC):
|
||||
class Symbol(ToStringMixin, ABC):
|
||||
@abstractmethod
|
||||
def get_body_start_position(self) -> PositionInFile | None:
|
||||
pass
|
||||
@@ -599,7 +599,15 @@ class LanguageServerSymbolRetriever:
|
||||
|
||||
|
||||
class JetBrainsSymbol(Symbol):
|
||||
def __init__(self, symbol_dict: dict, project: Project) -> None:
|
||||
class SymbolDict(TypedDict):
|
||||
name_path: str
|
||||
relative_path: str
|
||||
type: str
|
||||
text_range: NotRequired[dict]
|
||||
body: NotRequired[str]
|
||||
children: NotRequired[list["JetBrainsSymbol.SymbolDict"]]
|
||||
|
||||
def __init__(self, symbol_dict: SymbolDict, project: Project) -> None:
|
||||
"""
|
||||
:param symbol_dict: dictionary as returned by the JetBrains plugin client.
|
||||
"""
|
||||
@@ -609,6 +617,15 @@ class JetBrainsSymbol(Symbol):
|
||||
self._cached_body_start_position: PositionInFile | None = None
|
||||
self._cached_body_end_position: PositionInFile | None = None
|
||||
|
||||
def _tostring_includes(self) -> list[str]:
|
||||
return []
|
||||
|
||||
def _tostring_additional_entries(self) -> dict[str, Any]:
|
||||
return dict(name_path=self.get_name_path(), relative_path=self.get_relative_path(), type=self._dict["type"])
|
||||
|
||||
def get_name_path(self) -> str:
|
||||
return self._dict["name_path"]
|
||||
|
||||
def get_relative_path(self) -> str:
|
||||
return self._dict["relative_path"]
|
||||
|
||||
|
||||
Reference in new issue
Block a user