From 1e4d0fb3e7a8929ccc411986a5fb50e0ca769019 Mon Sep 17 00:00:00 2001 From: mdevolde Date: Wed, 1 Jul 2026 16:12:19 +0300 Subject: [PATCH] fix(server): suppression of a potential raised exception with running processes manipulation --- CHANGELOG.md | 1 + src/language_tool_python/server.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 198e5b9..3b08bcb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/2.0.0/), - Corrected a bug in `language_tool_python.config_file.LanguageToolConfig` where directory paths were incorrectly rejected by the path validator. - Fixed a bug in `LanguageTool._start_server_on_free_port` where `_url` was not updated when retrying on a different port, causing all subsequent server requests to target the wrong (original) port. - Fixed a bug in `LanguageTool._query_server` where `RateLimitError` was only raised when the rate-limit response body was invalid JSON, a valid JSON body with status 426 was silently returned as data instead (for now, the body from LanguageTool for rate-limiting responses is "Upgrade Required", which is not valid JSON, but this may change in the future). +- Fixed a bug in `LanguageTool._terminate_server` where `_RUNNING_SERVER_PROCESSES.remove()` could raise `ValueError` if the server process was not yet in the list or was no longer in it. ### Removed - **Breaking:** Removed all functions and classes previously deprecated in v3.3.0: diff --git a/src/language_tool_python/server.py b/src/language_tool_python/server.py index 4b243a1..5ea514c 100644 --- a/src/language_tool_python/server.py +++ b/src/language_tool_python/server.py @@ -1226,7 +1226,8 @@ def _terminate_server(self) -> None: if self._server: logger.info("Terminating LanguageTool server on port %s", self._port) _kill_processes([self._server]) - _RUNNING_SERVER_PROCESSES.remove(self._server) + with contextlib.suppress(ValueError): + _RUNNING_SERVER_PROCESSES.remove(self._server) if self._server.stdin: self._server.stdin.close()