Fix mypy issues

This commit is contained in:
Dominik Jain authored and Dominik Jain committed 2025-11-19 23:45:11 +01:00
1 parent a52756be46
commit 2338d33356
26 files changed
+98 -66

No files matched your search

@@ -1,3 +1,4 @@
# type: ignore
"""AL Language Server implementation for Microsoft Dynamics 365 Business Central."""
import logging
@@ -125,27 +125,27 @@ class BashLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the Bash Language Server, waits for the server to be ready and yields the LanguageServer instance.
"""
def register_capability_handler(params):
def register_capability_handler(params: dict) -> None:
assert "registrations" in params
for registration in params["registrations"]:
if registration["method"] == "workspace/executeCommand":
self.initialize_searcher_command_available.set()
return
def execute_client_command_handler(params):
def execute_client_command_handler(params: dict) -> list:
return []
def do_nothing(params):
def do_nothing(params: dict) -> None:
return
def window_log_message(msg):
def window_log_message(msg: dict) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
# Check for bash-language-server ready signals
message_text = msg.get("message", "")
@@ -196,7 +196,7 @@ class ClangdLanguageServer(SolidLanguageServer):
if params["quiescent"] == True:
self.server_ready.set()
def window_log_message(msg: Any) -> None:
def window_log_message(msg: dict) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
self.server.on_request("client/registerCapability", register_capability_handler)
@@ -435,6 +435,7 @@ class CSharpLanguageServer(SolidLanguageServer):
# Download .NET 9 runtime using config
dotnet_dir = Path(cls.ls_resources_dir(solidlsp_settings)) / "dotnet-runtime-9.0"
assert dotnet_runtime_dep.binary_name is not None, "Runtime dependency must have a binary_name"
dotnet_exe = dotnet_dir / dotnet_runtime_dep.binary_name
if dotnet_exe.exists():
@@ -642,7 +643,7 @@ class CSharpLanguageServer(SolidLanguageServer):
# Just acknowledge the request - we don't need to track these for now
return
def handle_project_needs_restore(params):
def handle_project_needs_restore(params: dict) -> None:
return
# Set up notification handlers
@@ -17,6 +17,7 @@ from overrides import override
from solidlsp.ls import LSPFileBuffer, SolidLanguageServer
from solidlsp.ls_config import LanguageServerConfig
from solidlsp.ls_logger import LanguageServerLogger
from solidlsp.ls_types import UnifiedSymbolInformation
from solidlsp.ls_utils import FileUtils, PlatformUtils
from solidlsp.lsp_protocol_handler.lsp_types import DocumentSymbol, InitializeParams, SymbolInformation
from solidlsp.lsp_protocol_handler.server import ProcessLaunchInfo
@@ -800,12 +801,12 @@ class EclipseJDTLS(SolidLanguageServer):
# e.g. "myMethod(int) <T>", but we want overloads to be handled via overload_idx,
# which requires the name to be just "myMethod".
def fix_name(symbol: SymbolInformation | DocumentSymbol) -> None:
def fix_name(symbol: SymbolInformation | DocumentSymbol | UnifiedSymbolInformation) -> None:
if "(" in symbol["name"]:
symbol["name"] = symbol["name"][: symbol["name"].index("(")]
children = symbol.get("children")
if children:
for child in children:
for child in children: # type: ignore
fix_name(child)
for root_symbol in result:
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Elm specific instantiation of the LanguageServer class. Contains various configurations and settings specific to Elm.
"""
@@ -1,3 +1,4 @@
# type: ignore
"""Erlang Language Server implementation using Erlang LS."""
import logging
@@ -1,3 +1,4 @@
# type: ignore
"""
Fortran Language Server implementation using fortls.
"""
@@ -7,6 +7,7 @@ import os
import pathlib
import shutil
import time
from typing import Any
from overrides import override
@@ -25,7 +26,7 @@ class HaskellLanguageServer(SolidLanguageServer):
"""
@staticmethod
def _ensure_hls_installed():
def _ensure_hls_installed() -> str:
"""Ensure haskell-language-server-wrapper is available."""
# Try common locations
common_paths = [
@@ -310,20 +311,20 @@ class HaskellLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the Haskell Language Server
"""
def do_nothing(params):
def do_nothing(params: Any) -> None:
return
def window_log_message(msg):
def window_log_message(msg: dict) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
def register_capability_handler(params):
def register_capability_handler(params: dict) -> None:
"""Handle dynamic capability registration from HLS"""
if "registrations" in params:
for registration in params.get("registrations", []):
@@ -331,7 +332,7 @@ class HaskellLanguageServer(SolidLanguageServer):
self.logger.log(f"HLS registered capability: {method}", logging.INFO)
return
def workspace_configuration_handler(params):
def workspace_configuration_handler(params: dict) -> Any:
"""Handle workspace/configuration requests from HLS"""
self.logger.log(f"HLS requesting configuration: {params}", logging.INFO)
@@ -148,7 +148,7 @@ class Intelephense(SolidLanguageServer):
initialization_options["intelephense.files.maxSize"] = max_file_size
initialize_params["initializationOptions"] = initialization_options
return initialize_params
return initialize_params # type: ignore
def _start_server(self) -> None:
"""Start Intelephense server process"""
@@ -4,6 +4,7 @@ import pathlib
import platform
import shutil
import subprocess
from typing import Any
from overrides import override
@@ -30,6 +31,7 @@ class JuliaLanguageServer(SolidLanguageServer):
julia_executable = self._setup_runtime_dependency(logger) # PASS LOGGER
julia_code = "using LanguageServer; runserver()"
julia_ls_cmd: str | list[str]
if platform.system() == "Windows":
# On Windows, pass as list (Serena handles shell=True differently)
julia_ls_cmd = [julia_executable, "--startup-file=no", "--history-file=no", "-e", julia_code, repository_root_path]
@@ -147,15 +149,15 @@ class JuliaLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""Start the LanguageServer.jl server process."""
def do_nothing(params):
def do_nothing(params: Any) -> None:
return
def window_log_message(msg):
def window_log_message(msg: dict) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
self.server.on_notification("window/logMessage", window_log_message)
+2 -1
View File
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Lua specific instantiation of the LanguageServer class using lua-language-server.
"""
@@ -262,7 +263,7 @@ class LuaLanguageServer(SolidLanguageServer):
def register_capability_handler(params):
return
def window_log_message(msg):
def window_log_message(msg: dict):
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
def do_nothing(params):
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Markdown specific instantiation of the LanguageServer class using marksman.
Contains various configurations and settings specific to Markdown.
+1
View File
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Nix specific instantiation of the LanguageServer class using nixd (Nix Language Server).
@@ -9,6 +9,7 @@ import os
import pathlib
import subprocess
import time
from typing import Any
from overrides import override
@@ -16,7 +17,7 @@ from solidlsp.ls import SolidLanguageServer
from solidlsp.ls_config import LanguageServerConfig
from solidlsp.ls_logger import LanguageServerLogger
from solidlsp.ls_utils import PlatformId, PlatformUtils
from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams
from solidlsp.lsp_protocol_handler.lsp_types import DidChangeConfigurationParams, InitializeParams
from solidlsp.lsp_protocol_handler.server import ProcessLaunchInfo
from solidlsp.settings import SolidLSPSettings
@@ -27,7 +28,7 @@ class PerlLanguageServer(SolidLanguageServer):
"""
@staticmethod
def _get_perl_version():
def _get_perl_version() -> str | None:
"""Get the installed Perl version or None if not found."""
try:
result = subprocess.run(["perl", "-v"], capture_output=True, text=True, check=False)
@@ -38,7 +39,7 @@ class PerlLanguageServer(SolidLanguageServer):
return None
@staticmethod
def _get_perl_language_server_version():
def _get_perl_language_server_version() -> str | None:
"""Get the installed Perl::LanguageServer version or None if not found."""
try:
result = subprocess.run(
@@ -147,21 +148,21 @@ class PerlLanguageServer(SolidLanguageServer):
],
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""Start Perl::LanguageServer process"""
def register_capability_handler(params):
def register_capability_handler(params: Any) -> None:
return
def window_log_message(msg):
def window_log_message(msg: str) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
def do_nothing(params):
def do_nothing(params: Any) -> None:
return
def workspace_configuration_handler(params):
def workspace_configuration_handler(params: Any) -> Any:
"""Handle workspace/configuration request from Perl::LanguageServer."""
self.logger.log(f"Received workspace/configuration request: {params}", logging.INFO)
@@ -203,7 +204,7 @@ class PerlLanguageServer(SolidLanguageServer):
# Send workspace configuration to Perl::LanguageServer
# Perl::LanguageServer requires didChangeConfiguration to set perlInc, fileFilter, and ignoreDirs
# See: Perl::LanguageServer::Methods::workspace::_rpcnot_didChangeConfiguration
perl_config = {
perl_config: DidChangeConfigurationParams = {
"settings": {
"perl": {
"perlInc": [self.repository_root_path, "."],
@@ -3,6 +3,7 @@ import os
import pathlib
import subprocess
import threading
from typing import Any
from overrides import override
@@ -32,7 +33,7 @@ class RLanguageServer(SolidLanguageServer):
]
@staticmethod
def _check_r_installation():
def _check_r_installation() -> None:
"""Check if R and languageserver are available."""
try:
# Check R installation
@@ -126,18 +127,18 @@ class RLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""Start R Language Server process."""
def window_log_message(msg):
def window_log_message(msg: str) -> None:
self.logger.log(f"R LSP: window/logMessage: {msg}", logging.INFO)
def do_nothing(params):
def do_nothing(params: Any) -> None:
return
def register_capability_handler(params):
def register_capability_handler(params: Any) -> None:
return
# Register LSP message handlers
+5 -4
View File
@@ -16,7 +16,7 @@ from overrides import override
from solidlsp.ls import SolidLanguageServer
from solidlsp.ls_config import LanguageServerConfig
from solidlsp.ls_logger import LanguageServerLogger
from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams
from solidlsp.lsp_protocol_handler.lsp_types import InitializeParams, InitializeResult
from solidlsp.lsp_protocol_handler.server import ProcessLaunchInfo
from solidlsp.settings import SolidLSPSettings
@@ -180,6 +180,7 @@ class RubyLsp(SolidLanguageServer):
if not bundle_path:
# Try common bundle executables
for bundle_executable in ["bin/bundle", "bundle"]:
bundle_full_path: str | None
if bundle_executable.startswith("bin/"):
bundle_full_path = os.path.join(repository_root_path, bundle_executable)
else:
@@ -340,7 +341,7 @@ class RubyLsp(SolidLanguageServer):
},
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self) -> None:
"""
@@ -394,7 +395,7 @@ class RubyLsp(SolidLanguageServer):
self.analysis_complete.set()
self.completions_available.set()
def window_work_done_progress_create(params: dict) -> None:
def window_work_done_progress_create(params: dict) -> dict:
"""Handle workDoneProgress/create requests from ruby-lsp"""
self.logger.log(f"LSP: window/workDoneProgress/create: {params}", logging.DEBUG)
return {}
@@ -442,7 +443,7 @@ class RubyLsp(SolidLanguageServer):
self.analysis_complete.set()
self.completions_available.set()
def _handle_initialization_response(self, init_response):
def _handle_initialization_response(self, init_response: InitializeResult) -> None:
"""
Handle the initialization response from ruby-lsp and validate capabilities.
"""
@@ -41,7 +41,7 @@ class RustAnalyzer(SolidLanguageServer):
return SolidLanguageServer._determine_log_level(line)
@staticmethod
def _get_rustup_version():
def _get_rustup_version() -> str | None:
"""Get installed rustup version or None if not found."""
try:
result = subprocess.run(["rustup", "--version"], capture_output=True, text=True, check=False)
@@ -52,7 +52,7 @@ class RustAnalyzer(SolidLanguageServer):
return None
@staticmethod
def _get_rust_analyzer_path():
def _get_rust_analyzer_path() -> str | None:
"""Get rust-analyzer path via rustup. Returns None if not found."""
try:
# Note: we avoid using system PATH to avoid picking up incorrect aliases
@@ -66,8 +66,12 @@ class RustAnalyzer(SolidLanguageServer):
return None
@staticmethod
def _ensure_rust_analyzer_installed():
"""Ensure rust-analyzer is available, install via rustup if needed."""
def _ensure_rust_analyzer_installed() -> str:
"""
Ensure rust-analyzer is available, install via rustup if needed.
:return: path to rust-analyzer executable
"""
path = RustAnalyzer._get_rust_analyzer_path()
if path:
return path
@@ -64,6 +64,7 @@ class ScalaLanguageServer(SolidLanguageServer):
os.makedirs(metals_home, exist_ok=True)
metals_executable = os.path.join(metals_home, "metals")
coursier_command_path = shutil.which("coursier")
assert coursier_command_path is not None, "coursier is not installed or not in PATH."
cs_command_path = shutil.which("cs")
if not os.path.exists(metals_executable):
@@ -152,9 +153,9 @@ class ScalaLanguageServer(SolidLanguageServer):
},
"capabilities": {"textDocument": {"documentSymbol": {"hierarchicalDocumentSymbolSupport": True}}},
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the Scala Language Server
"""
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Ruby specific instantiation of the LanguageServer class using Solargraph.
Contains various configurations and settings specific to Ruby.
@@ -1,3 +1,4 @@
# type: ignore
import logging
import os
import pathlib
@@ -8,6 +8,7 @@ import os
import pathlib
import shutil
import threading
from typing import Any
from solidlsp.language_servers.common import RuntimeDependency, RuntimeDependencyCollection
from solidlsp.ls import SolidLanguageServer
@@ -148,20 +149,20 @@ class YamlLanguageServer(SolidLanguageServer):
}
},
}
return initialize_params
return initialize_params # type: ignore
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the YAML Language Server, waits for the server to be ready and yields the LanguageServer instance.
"""
def register_capability_handler(params):
def register_capability_handler(params: Any) -> None:
return
def do_nothing(params):
def do_nothing(params: Any) -> None:
return
def window_log_message(msg):
def window_log_message(msg: str) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
self.server.on_request("client/registerCapability", register_capability_handler)
+1
View File
@@ -1,3 +1,4 @@
# type: ignore
"""
Provides Zig specific instantiation of the LanguageServer class using ZLS (Zig Language Server).
"""
+8 -2
View File
@@ -31,8 +31,14 @@ from solidlsp.ls_utils import FileUtils, PathUtils, TextUtils
from solidlsp.lsp_protocol_handler import lsp_types
from solidlsp.lsp_protocol_handler import lsp_types as LSPTypes
from solidlsp.lsp_protocol_handler.lsp_constants import LSPConstants
from solidlsp.lsp_protocol_handler.lsp_types import Definition, DefinitionParams, DocumentSymbol, LocationLink, SymbolInformation, \
RenameParams
from solidlsp.lsp_protocol_handler.lsp_types import (
Definition,
DefinitionParams,
DocumentSymbol,
LocationLink,
RenameParams,
SymbolInformation,
)
from solidlsp.lsp_protocol_handler.server import (
LSPError,
ProcessLaunchInfo,
+10 -10
View File
@@ -222,7 +222,7 @@ class Language(str, Enum):
return RubyLsp
case self.RUBY_SOLARGRAPH:
from solidlsp.language_servers.solargraph import Solargraph
from solidlsp.language_servers.solargraph import Solargraph # type: ignore
return Solargraph
case self.DART:
@@ -250,7 +250,7 @@ class Language(str, Enum):
return ElixirTools
case self.ELM:
from solidlsp.language_servers.elm_language_server import ElmLanguageServer
from solidlsp.language_servers.elm_language_server import ElmLanguageServer # type: ignore
return ElmLanguageServer
case self.TERRAFORM:
@@ -258,7 +258,7 @@ class Language(str, Enum):
return TerraformLS
case self.SWIFT:
from solidlsp.language_servers.sourcekit_lsp import SourceKitLSP
from solidlsp.language_servers.sourcekit_lsp import SourceKitLSP # type: ignore
return SourceKitLSP
case self.BASH:
@@ -270,23 +270,23 @@ class Language(str, Enum):
return YamlLanguageServer
case self.ZIG:
from solidlsp.language_servers.zls import ZigLanguageServer
from solidlsp.language_servers.zls import ZigLanguageServer # type: ignore
return ZigLanguageServer
case self.NIX:
from solidlsp.language_servers.nixd_ls import NixLanguageServer
from solidlsp.language_servers.nixd_ls import NixLanguageServer # type: ignore
return NixLanguageServer
case self.LUA:
from solidlsp.language_servers.lua_ls import LuaLanguageServer
from solidlsp.language_servers.lua_ls import LuaLanguageServer # type: ignore
return LuaLanguageServer
case self.ERLANG:
from solidlsp.language_servers.erlang_language_server import ErlangLanguageServer
from solidlsp.language_servers.erlang_language_server import ErlangLanguageServer # type: ignore
return ErlangLanguageServer
case self.AL:
from solidlsp.language_servers.al_language_server import ALLanguageServer
from solidlsp.language_servers.al_language_server import ALLanguageServer # type: ignore
return ALLanguageServer
case self.REGO:
@@ -294,7 +294,7 @@ class Language(str, Enum):
return RegalLanguageServer
case self.MARKDOWN:
from solidlsp.language_servers.marksman import Marksman
from solidlsp.language_servers.marksman import Marksman # type: ignore
return Marksman
case self.R:
@@ -310,7 +310,7 @@ class Language(str, Enum):
return JuliaLanguageServer
case self.FORTRAN:
from solidlsp.language_servers.fortran_language_server import FortranLanguageServer
from solidlsp.language_servers.fortran_language_server import FortranLanguageServer # type: ignore
return FortranLanguageServer
case self.HASKELL:
@@ -2478,6 +2478,8 @@ class DocumentSymbol(TypedDict):
""" The range that should be selected and revealed when this symbol is being picked, e.g the name of a function.
Must be contained by the `range`. """
# TODO: I think this type is missing the 'children' field - DJ
class DocumentSymbolRegistrationOptions(TypedDict):
"""Registration options for a {@link DocumentSymbolRequest}."""