Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update type stubs for Python 3.8 #2535

Merged
merged 1 commit into from
Oct 22, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions plugin/completion.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ def __init__(
view: sublime.View,
location: int,
triggered_manually: bool,
on_done_async: Callable[[list[sublime.CompletionItem], int], None]
on_done_async: Callable[[list[sublime.CompletionItem], sublime.AutoCompleteFlags], None]
) -> None:
self._view = view
self._location = location
Expand Down Expand Up @@ -212,7 +212,7 @@ def _resolve_completions_async(self, responses: list[ResolvedCompletions]) -> No
items: list[sublime.CompletionItem] = []
item_defaults: CompletionItemDefaults = {}
errors: list[Error] = []
flags = 0
flags = sublime.AutoCompleteFlags.NONE
prefs = userprefs()
if prefs.inhibit_snippet_completions:
flags |= sublime.INHIBIT_EXPLICIT_COMPLETIONS
Expand Down Expand Up @@ -263,7 +263,11 @@ def _cancel_pending_requests_async(self) -> None:
session.cancel_request(request_id, False)
self._pending_completion_requests.clear()

def _resolve_task_async(self, completions: list[sublime.CompletionItem], flags: int = 0) -> None:
def _resolve_task_async(
self,
completions: list[sublime.CompletionItem],
flags: sublime.AutoCompleteFlags = sublime.AutoCompleteFlags.NONE
) -> None:
if not self._resolved:
self._resolved = True
self._on_done_async(completions, flags)
Expand Down
4 changes: 2 additions & 2 deletions plugin/core/open.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def lsp_range_from_uri_fragment(fragment: str) -> Range | None:


def open_file_uri(
window: sublime.Window, uri: DocumentUri, flags: int = 0, group: int = -1
window: sublime.Window, uri: DocumentUri, flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE, group: int = -1
) -> Promise[sublime.View | None]:

decoded_uri = unquote(uri) # decode percent-encoded characters
Expand Down Expand Up @@ -84,7 +84,7 @@ def _find_open_file(window: sublime.Window, fname: str, group: int = -1) -> subl


def open_file(
window: sublime.Window, uri: DocumentUri, flags: int = 0, group: int = -1
window: sublime.Window, uri: DocumentUri, flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE, group: int = -1
) -> Promise[sublime.View | None]:
"""
Open a file asynchronously.
Expand Down
4 changes: 2 additions & 2 deletions plugin/core/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def run(
self,
location: Location | LocationLink,
session_name: str | None = None,
flags: int = 0,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int = -1,
event: dict | None = None
) -> None:
Expand All @@ -191,7 +191,7 @@ def want_event(self) -> bool:
return True

def _run_async(
self, location: Location | LocationLink, session_name: str | None, flags: int, group: int
self, location: Location | LocationLink, session_name: str | None, flags: sublime.NewFileFlags, group: int
) -> None:
session = self.session_by_name(session_name) if session_name else self.session()
if session:
Expand Down
16 changes: 10 additions & 6 deletions plugin/core/sessions.py
Original file line number Diff line number Diff line change
Expand Up @@ -1686,7 +1686,7 @@ def try_open_uri_async(
self,
uri: DocumentUri,
r: Range | None = None,
flags: int = 0,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int = -1
) -> Promise[sublime.View | None] | None:
if uri.startswith("file:"):
Expand All @@ -1708,7 +1708,7 @@ def open_uri_async(
self,
uri: DocumentUri,
r: Range | None = None,
flags: int = 0,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int = -1
) -> Promise[sublime.View | None]:
promise = self.try_open_uri_async(uri, r, flags, group)
Expand All @@ -1718,7 +1718,7 @@ def _open_file_uri_async(
self,
uri: DocumentUri,
r: Range | None = None,
flags: int = 0,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int = -1
) -> Promise[sublime.View | None]:
result: PackagedTask[sublime.View | None] = Promise.packaged_task()
Expand All @@ -1736,7 +1736,7 @@ def _open_uri_with_plugin_async(
plugin: AbstractPlugin,
uri: DocumentUri,
r: Range | None,
flags: int,
flags: sublime.NewFileFlags,
group: int,
) -> Promise[sublime.View | None] | None:
# I cannot type-hint an unpacked tuple
Expand Down Expand Up @@ -1765,8 +1765,12 @@ def open_scratch_buffer(title: str, content: str, syntax: str) -> None:
return result[0]
return None

def open_location_async(self, location: Location | LocationLink, flags: int = 0,
group: int = -1) -> Promise[sublime.View | None]:
def open_location_async(
self,
location: Location | LocationLink,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int = -1
) -> Promise[sublime.View | None]:
uri, r = get_uri_and_range_from_location(location)
return self.open_uri_async(uri, r, flags, group)

Expand Down
8 changes: 4 additions & 4 deletions plugin/core/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@ def r(name: str, default: bool | int | str | list | dict) -> None:

set_debug_logging(self.log_debug)

def highlight_style_region_flags(self, style_str: str) -> tuple[int, int]:
def highlight_style_region_flags(self, style_str: str) -> tuple[sublime.RegionFlags, sublime.RegionFlags]:
default = sublime.NO_UNDO
if style_str in ("background", "fill"): # Backwards-compatible with "fill"
style = default | sublime.DRAW_NO_OUTLINE
Expand All @@ -339,7 +339,7 @@ def highlight_style_region_flags(self, style_str: str) -> tuple[int, int]:
return default | sublime.DRAW_NO_FILL, default | sublime.DRAW_NO_FILL | sublime.DRAW_NO_OUTLINE | sublime.DRAW_SOLID_UNDERLINE # noqa: E501

@staticmethod
def _style_str_to_flag(style_str: str) -> int | None:
def _style_str_to_flag(style_str: str) -> sublime.RegionFlags | None:
default = sublime.DRAW_EMPTY_AS_OVERWRITE | sublime.DRAW_NO_FILL | sublime.NO_UNDO
# This method could be a dict or lru_cache
if style_str == "":
Expand All @@ -355,13 +355,13 @@ def _style_str_to_flag(style_str: str) -> int | None:
# default style (includes NO_UNDO)
return None

def diagnostics_highlight_style_flags(self) -> list[int | None]:
def diagnostics_highlight_style_flags(self) -> list[sublime.RegionFlags | None]:
"""Returns flags for highlighting diagnostics on single lines per severity"""
if isinstance(self.diagnostics_highlight_style, str):
# same style for all severity levels
return [self._style_str_to_flag(self.diagnostics_highlight_style)] * 4
elif isinstance(self.diagnostics_highlight_style, dict):
flags: list[int | None] = []
flags: list[sublime.RegionFlags | None] = []
for sev in ("error", "warning", "info", "hint"):
user_style = self.diagnostics_highlight_style.get(sev)
if user_style is None: # user did not provide a style
Expand Down
4 changes: 2 additions & 2 deletions plugin/core/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@
_baseflags = sublime.DRAW_NO_FILL | sublime.DRAW_NO_OUTLINE | sublime.DRAW_EMPTY_AS_OVERWRITE | sublime.NO_UNDO
_multilineflags = sublime.DRAW_NO_FILL | sublime.NO_UNDO

DIAGNOSTIC_SEVERITY: list[tuple[str, str, str, str, int, int]] = [
DIAGNOSTIC_SEVERITY: list[tuple[str, str, str, str, sublime.RegionFlags, sublime.RegionFlags]] = [
# Kind CSS class Scope for color Icon resource add_regions flags for single-line diagnostic multi-line diagnostic # noqa: E501
("error", "errors", "region.redish markup.error.lsp", "Packages/LSP/icons/error.png", _baseflags | sublime.DRAW_SQUIGGLY_UNDERLINE, _multilineflags), # noqa: E501
("warning", "warnings", "region.yellowish markup.warning.lsp", "Packages/LSP/icons/warning.png", _baseflags | sublime.DRAW_SQUIGGLY_UNDERLINE, _multilineflags), # noqa: E501
Expand Down Expand Up @@ -429,7 +429,7 @@ def show_lsp_popup(
*,
location: int = -1,
md: bool = False,
flags: int = 0,
flags: sublime.PopupFlags = sublime.PopupFlags.NONE,
css: str | None = None,
wrapper_class: str | None = None,
body_id: str | None = None,
Expand Down
7 changes: 5 additions & 2 deletions plugin/documents.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ def is_regular_view(v: sublime.View) -> bool:
def previous_non_whitespace_char(view: sublime.View, pt: int) -> str:
prev = view.substr(pt - 1)
if prev.isspace():
return view.substr(view.find_by_class(pt, False, ~0) - 1)
return view.substr(view.find_by_class(pt, False, ~0) - 1) # type: ignore
return prev


Expand Down Expand Up @@ -606,7 +606,10 @@ def _on_query_completions_async(
self._completions_task.query_completions_async(sessions)

def _on_query_completions_resolved_async(
self, clist: sublime.CompletionList, completions: list[sublime.CompletionItem], flags: int = 0
self,
clist: sublime.CompletionList,
completions: list[sublime.CompletionItem],
flags: sublime.AutoCompleteFlags = sublime.AutoCompleteFlags.NONE
) -> None:
self._completions_task = None
# Resolve on the main thread to prevent any sort of data race for _set_target (see sublime_plugin.py).
Expand Down
10 changes: 8 additions & 2 deletions plugin/formatting.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,10 @@ def is_applicable(cls, view: sublime.View) -> bool:
def run_async(self) -> None:
super().run_async()
self._purge_changes_async()
base_scope = self._task_runner.view.syntax().scope
syntax = self._task_runner.view.syntax()
if not syntax:
return
base_scope = syntax.scope
formatter = get_formatter(self._task_runner.view.window(), base_scope)
format_document(self._task_runner, formatter).then(self._on_response)

Expand All @@ -121,7 +124,10 @@ def is_enabled(self, event: dict | None = None, select: bool = False) -> bool:

def run(self, edit: sublime.Edit, event: dict | None = None, select: bool = False) -> None:
session_names = [session.config.name for session in self.sessions(self.capability)]
base_scope = self.view.syntax().scope
syntax = self.view.syntax()
if not syntax:
return
base_scope = syntax.scope
if select:
self.select_formatter(base_scope, session_names)
elif len(session_names) > 1:
Expand Down
4 changes: 3 additions & 1 deletion plugin/goto_diagnostic.py
Original file line number Diff line number Diff line change
Expand Up @@ -261,7 +261,9 @@ def diagnostic_location(parsed_uri: ParsedUri, diagnostic: Diagnostic) -> Locati
}


def open_location(session: Session, location: Location, flags: int = 0, group: int = -1) -> sublime.View:
def open_location(
session: Session, location: Location, flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE, group: int = -1
) -> sublime.View:
uri, position = get_uri_and_position_from_location(location)
file_name = to_encoded_filename(session.config.map_server_uri_to_client_path(uri), position)
return session.window.open_file(file_name, flags=flags | sublime.ENCODED_POSITION, group=group)
Expand Down
2 changes: 1 addition & 1 deletion plugin/locationpicker.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def open_basic_file(
session: Session,
uri: str,
position: Position,
flags: int = 0,
flags: sublime.NewFileFlags = sublime.NewFileFlags.NONE,
group: int | None = None
) -> sublime.View | None:
if group is None:
Expand Down
2 changes: 1 addition & 1 deletion plugin/session_view.py
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ def _draw_diagnostics(
self,
severity: int,
max_severity_level: int,
flags: int,
flags: sublime.RegionFlags,
multiline: bool
) -> None:
ICON_FLAGS = sublime.HIDE_ON_MINIMAP | sublime.DRAW_NO_FILL | sublime.DRAW_NO_OUTLINE | sublime.NO_UNDO
Expand Down
Loading