diff --git a/pyproject.toml b/pyproject.toml index be7606a3..bf6bdb54 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -235,6 +235,7 @@ ignore = [ "SIM103", # forbids multiple returns "SIM110", # requires use of any(...) instead of for-loop "G001", # forbids str.format in log statements + "E722", # forbids unspecific except clause ] unfixable = [ "F841", diff --git a/src/serena/__init__.py b/src/serena/__init__.py index 9a6ae1b2..bcb2bdbe 100644 --- a/src/serena/__init__.py +++ b/src/serena/__init__.py @@ -1,7 +1,26 @@ -__version__ = "0.1.0-dev1" +__version__ = "2025-04-07" def serena_root_path() -> str: from pathlib import Path return str(Path(__file__).parent.parent.parent.absolute()) + + +def serena_version() -> str: + """ + :return: the version of the package, including git status if available. + """ + version = __version__ + try: + from sensai.util.git import git_status + from sensai.util.logging import LoggingDisabledContext + + with LoggingDisabledContext(): + git_status = git_status() + version += f"-{git_status.commit[:8]}" + if not git_status.is_clean: + version += "-dirty" + except: + pass + return version diff --git a/src/serena/agent.py b/src/serena/agent.py index 78acc7a6..e84b7c04 100644 --- a/src/serena/agent.py +++ b/src/serena/agent.py @@ -22,7 +22,7 @@ from multilspy import SyncLanguageServer from multilspy.multilspy_config import Language, MultilspyConfig from multilspy.multilspy_logger import MultilspyLogger from multilspy.multilspy_types import SymbolKind -from serena import __version__, serena_root_path +from serena import serena_root_path, serena_version from serena.gui_log_viewer import GuiLogViewer, GuiLogViewerHandler from serena.llm.prompt_factory import PromptFactory from serena.symbol import SymbolLocation, SymbolManager @@ -145,7 +145,7 @@ class SerenaAgent: self._gui_log_handler = GuiLogViewerHandler(GuiLogViewer(title="Serena Logs"), level=log_level, format_string=LOG_FORMAT) Logger.root.addHandler(self._gui_log_handler) - log.info(f"Starting Serena server (version={__version__}, process id={os.getpid()}, parent process id={os.getppid()})") + log.info(f"Starting Serena server (version={serena_version()}, process id={os.getpid()}, parent process id={os.getppid()})") log.info("Available projects: {}".format(", ".join(self.serena_config.project_names))) self.prompt_factory = PromptFactory()