More types, less type: ignore

Thanks to Claude Code
This commit is contained in:
Michael Panchenko committed 2025-11-20 15:05:58 +07:00
1 parent fff9f1e983
commit 4a3590bcde
8 files changed
+53 -62

No files matched your search

@@ -1,4 +1,3 @@
# type: ignore
"""
Provides Elm specific instantiation of the LanguageServer class. Contains various configurations and settings specific to Elm.
"""
@@ -144,17 +143,17 @@ class ElmLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore[return-value]
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the Elm Language Server, waits for the server to be ready and yields the LanguageServer instance.
"""
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)
self.server.on_notification("window/logMessage", window_log_message)
@@ -1,4 +1,3 @@
# type: ignore
"""Erlang Language Server implementation using Erlang LS."""
import logging
@@ -62,7 +61,7 @@ class ErlangLanguageServer(SolidLanguageServer):
return False
@classmethod
def _get_erlang_version(cls):
def _get_erlang_version(cls) -> str | None:
"""Get the installed Erlang/OTP version or None if not found."""
try:
result = subprocess.run(["erl", "-version"], check=False, capture_output=True, text=True, timeout=10)
@@ -81,13 +80,13 @@ class ErlangLanguageServer(SolidLanguageServer):
except (subprocess.SubprocessError, FileNotFoundError):
return False
def _start_server(self):
def _start_server(self) -> None:
"""Start Erlang LS server process with proper initialization waiting."""
def register_capability_handler(params):
def register_capability_handler(params: dict) -> None:
return
def window_log_message(msg):
def window_log_message(msg: dict) -> None:
"""Handle window/logMessage notifications from Erlang LS"""
message_text = msg.get("message", "")
self.logger.log(f"LSP: window/logMessage: {message_text}", logging.INFO)
@@ -110,10 +109,10 @@ class ErlangLanguageServer(SolidLanguageServer):
self.server_ready.set()
break
def do_nothing(params):
def do_nothing(params: dict) -> None:
return
def check_server_ready(params):
def check_server_ready(params: dict) -> None:
"""Handle $/progress notifications from Erlang LS as fallback."""
value = params.get("value", {})
@@ -155,7 +154,7 @@ class ErlangLanguageServer(SolidLanguageServer):
}
self.logger.log("Sending initialize request to Erlang LS", logging.INFO)
init_response = self.server.send.initialize(initialize_params)
init_response = self.server.send.initialize(initialize_params) # type: ignore[arg-type]
# Verify server capabilities
if "capabilities" in init_response:
@@ -1,4 +1,3 @@
# type: ignore
"""
Fortran Language Server implementation using fortls.
"""
@@ -126,7 +125,7 @@ class FortranLanguageServer(SolidLanguageServer):
# Create modified symbol with corrected selectionRange
corrected_symbol = symbol.copy()
corrected_symbol["selectionRange"] = new_sel_range
corrected_symbol["selectionRange"] = new_sel_range # type: ignore[typeddict-item]
self.logger.log(
f"Fixed fortls selectionRange for {identifier_name}: char {start_char} -> {identifier_start}",
@@ -175,7 +174,7 @@ class FortranLanguageServer(SolidLanguageServer):
return DocumentSymbols(fixed_root_symbols)
@staticmethod
def _check_fortls_installation():
def _check_fortls_installation() -> str:
"""Check if fortls is available."""
fortls_path = shutil.which("fortls")
if fortls_path is None:
@@ -256,18 +255,18 @@ class FortranLanguageServer(SolidLanguageServer):
}
],
}
return initialize_params
return initialize_params # type: ignore[return-value]
def _start_server(self):
def _start_server(self) -> None:
"""Start Fortran Language Server process."""
def window_log_message(msg):
def window_log_message(msg: dict) -> None:
self.logger.log(f"Fortran LSP: window/logMessage: {msg}", logging.INFO)
def do_nothing(params):
def do_nothing(params: dict) -> None:
return
def register_capability_handler(params):
def register_capability_handler(params: dict) -> None:
return
# Register LSP message handlers
+8 -9
View File
@@ -1,4 +1,3 @@
# type: ignore
"""
Provides Lua specific instantiation of the LanguageServer class using lua-language-server.
"""
@@ -38,7 +37,7 @@ class LuaLanguageServer(SolidLanguageServer):
return super().is_ignored_dirname(dirname) or dirname in [".luarocks", "lua_modules", "node_modules", "build", "dist", ".cache"]
@staticmethod
def _get_lua_ls_path():
def _get_lua_ls_path() -> str | None:
"""Get the path to lua-language-server executable."""
# First check if it's in PATH
lua_ls = shutil.which("lua-language-server")
@@ -70,7 +69,7 @@ class LuaLanguageServer(SolidLanguageServer):
return None
@staticmethod
def _download_lua_ls():
def _download_lua_ls() -> str:
"""Download and install lua-language-server if not present."""
system = platform.system()
machine = platform.machine().lower()
@@ -141,7 +140,7 @@ class LuaLanguageServer(SolidLanguageServer):
raise RuntimeError("Failed to find lua-language-server executable after extraction")
@staticmethod
def _setup_runtime_dependency():
def _setup_runtime_dependency() -> str:
"""
Check if required Lua runtime dependencies are available.
Downloads lua-language-server if not present.
@@ -255,18 +254,18 @@ class LuaLanguageServer(SolidLanguageServer):
},
},
}
return initialize_params
return initialize_params # type: ignore[return-value]
def _start_server(self):
def _start_server(self) -> None:
"""Start Lua Language Server process"""
def register_capability_handler(params):
def register_capability_handler(params: dict) -> None:
return
def window_log_message(msg: dict):
def window_log_message(msg: dict) -> None:
self.logger.log(f"LSP: window/logMessage: {msg}", logging.INFO)
def do_nothing(params):
def do_nothing(params: dict) -> None:
return
self.server.on_request("client/registerCapability", register_capability_handler)
+6 -7
View File
@@ -1,4 +1,3 @@
# type: ignore
"""
Provides Markdown specific instantiation of the LanguageServer class using marksman.
Contains various configurations and settings specific to Markdown.
@@ -131,9 +130,9 @@ class Marksman(SolidLanguageServer):
"documentSymbol": {
"dynamicRegistration": True,
"hierarchicalDocumentSymbolSupport": True,
"symbolKind": {"valueSet": list(range(1, 27))},
"symbolKind": {"valueSet": list(range(1, 27))}, # type: ignore[arg-type]
},
"hover": {"dynamicRegistration": True, "contentFormat": ["markdown", "plaintext"]},
"hover": {"dynamicRegistration": True, "contentFormat": ["markdown", "plaintext"]}, # type: ignore[list-item]
"codeAction": {"dynamicRegistration": True},
},
"workspace": {
@@ -151,18 +150,18 @@ class Marksman(SolidLanguageServer):
}
return initialize_params
def _start_server(self):
def _start_server(self) -> None:
"""
Starts the Marksman Language Server and waits for it to be ready.
"""
def register_capability_handler(_params):
def register_capability_handler(_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)
def do_nothing(_params):
def do_nothing(_params: dict) -> None:
return
self.server.on_request("client/registerCapability", register_capability_handler)
+6 -8
View File
@@ -1,4 +1,3 @@
# type: ignore
"""
Provides Ruby specific instantiation of the LanguageServer class using Solargraph.
Contains various configurations and settings specific to Ruby.
@@ -12,7 +11,6 @@ import re
import shutil
import subprocess
import threading
from typing import cast
from overrides import override
@@ -136,7 +134,7 @@ class Solargraph(SolidLanguageServer):
if bundle_cmd.startswith("bin/"):
bundle_full_path = os.path.join(repository_root_path, bundle_cmd)
else:
bundle_full_path = find_executable_with_extensions(bundle_cmd)
bundle_full_path = find_executable_with_extensions(bundle_cmd) # type: ignore[assignment]
if bundle_full_path and os.path.exists(bundle_full_path):
bundle_path = bundle_full_path if bundle_cmd.startswith("bin/") else bundle_cmd
break
@@ -284,7 +282,7 @@ class Solargraph(SolidLanguageServer):
"rootPath": repository_absolute_path,
"rootUri": root_uri,
"initializationOptions": {
"exclude": exclude_patterns,
"exclude": exclude_patterns, # type: ignore[dict-item]
},
"capabilities": {
"workspace": {
@@ -293,11 +291,11 @@ class Solargraph(SolidLanguageServer):
"textDocument": {
"documentSymbol": {
"hierarchicalDocumentSymbolSupport": True,
"symbolKind": {"valueSet": list(range(1, 27))},
"symbolKind": {"valueSet": list(range(1, 27))}, # type: ignore[arg-type]
},
},
},
"trace": "verbose",
"trace": "verbose", # type: ignore[typeddict-item]
"workspaceFolders": [
{
"uri": root_uri,
@@ -305,7 +303,7 @@ class Solargraph(SolidLanguageServer):
}
],
}
return cast(InitializeParams, initialize_params)
return initialize_params # type: ignore[return-value]
def _start_server(self) -> None:
"""
@@ -320,7 +318,7 @@ class Solargraph(SolidLanguageServer):
self.resolve_main_method_available.set()
return
def lang_status_handler(params):
def lang_status_handler(params: dict) -> None:
self.logger.log(f"LSP: language/status: {params}", logging.INFO)
if params.get("type") == "ServiceReady" and params.get("message") == "Service is ready.":
self.logger.log("Solargraph service is ready.", logging.INFO)
@@ -1,4 +1,3 @@
# type: ignore
import logging
import os
import pathlib
@@ -63,7 +62,7 @@ class SourceKitLSP(SolidLanguageServer):
self.server_ready = threading.Event()
self.request_id = 0
self._did_sleep_before_requesting_references = False
self._initialization_timestamp = None
self._initialization_timestamp: float | None = None
@staticmethod
def _get_initialize_params(repository_absolute_path: str) -> InitializeParams:
@@ -306,18 +305,18 @@ class SourceKitLSP(SolidLanguageServer):
],
}
return initialize_params
return initialize_params # type: ignore[return-value]
def _start_server(self):
def _start_server(self) -> None:
"""Start sourcekit-lsp server process"""
def register_capability_handler(_params):
def register_capability_handler(_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)
def do_nothing(_params):
def do_nothing(_params: dict) -> None:
return
self.server.on_request("client/registerCapability", register_capability_handler)
+9 -10
View File
@@ -1,4 +1,3 @@
# type: ignore
"""
Provides Zig specific instantiation of the LanguageServer class using ZLS (Zig Language Server).
"""
@@ -36,7 +35,7 @@ class ZigLanguageServer(SolidLanguageServer):
return super().is_ignored_dirname(dirname) or dirname in ["zig-cache", "zig-out", ".zig-cache", "node_modules", "build", "dist"]
@staticmethod
def _get_zig_version():
def _get_zig_version() -> str | None:
"""Get the installed Zig version or None if not found."""
try:
result = subprocess.run(["zig", "version"], capture_output=True, text=True, check=False)
@@ -47,7 +46,7 @@ class ZigLanguageServer(SolidLanguageServer):
return None
@staticmethod
def _get_zls_version():
def _get_zls_version() -> str | None:
"""Get the installed ZLS version or None if not found."""
try:
result = subprocess.run(["zls", "--version"], capture_output=True, text=True, check=False)
@@ -58,12 +57,12 @@ class ZigLanguageServer(SolidLanguageServer):
return None
@staticmethod
def _check_zls_installed():
def _check_zls_installed() -> bool:
"""Check if ZLS is installed in the system."""
return shutil.which("zls") is not None
@staticmethod
def _setup_runtime_dependency():
def _setup_runtime_dependency() -> bool:
"""
Check if required Zig runtime dependencies are available.
Raises RuntimeError with helpful message if dependencies are missing.
@@ -189,18 +188,18 @@ class ZigLanguageServer(SolidLanguageServer):
"inlay_hints_hide_redundant_param_names_last_token": False,
},
}
return initialize_params
return initialize_params # type: ignore[return-value]
def _start_server(self):
def _start_server(self) -> None:
"""Start ZLS server process"""
def register_capability_handler(params):
def register_capability_handler(params: dict) -> 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: dict) -> None:
return
self.server.on_request("client/registerCapability", register_capability_handler)