python-fragments 0.2__py3-none-any.whl → 0.4__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,7 +6,7 @@ from lsprotocol import types
6
6
 
7
7
  from fragments import grammar
8
8
  from fragments.lsp.pyright import PyrightClient
9
- from fragments.lsp.server import FragmentsServer, _TOKEN_MODIFIERS, _TOKEN_TYPES, _build_file_state, _parse_error_to_diagnostic, server
9
+ from fragments.lsp.server import FragmentsServer, _TOKEN_MODIFIERS, _TOKEN_TYPES, _build_file_state, _converter, _parse_error_to_diagnostic, server
10
10
 
11
11
  _DEBOUNCE_SECONDS = 0.15
12
12
 
@@ -56,18 +56,19 @@ async def did_open(language_server: FragmentsServer, params: types.DidOpenTextDo
56
56
  language_server._republish_diagnostics(document.uri)
57
57
  language_server._files[document.uri] = state
58
58
 
59
- if language_server._pyright:
60
- language_server._pyright.notify(
61
- "textDocument/didOpen",
62
- {
63
- "textDocument": {
64
- "uri": document.uri,
65
- "languageId": document.language_id,
66
- "version": document.version,
67
- "text": content_for_pyright,
68
- }
69
- },
70
- )
59
+ if not language_server._pyright:
60
+ return
61
+ language_server._pyright.notify(
62
+ "textDocument/didOpen",
63
+ {
64
+ "textDocument": {
65
+ "uri": document.uri,
66
+ "languageId": document.language_id,
67
+ "version": document.version,
68
+ "text": content_for_pyright,
69
+ }
70
+ },
71
+ )
71
72
 
72
73
 
73
74
  @server.feature(types.TEXT_DOCUMENT_DID_CHANGE)
@@ -86,14 +87,15 @@ def did_change(language_server: FragmentsServer, params: types.DidChangeTextDocu
86
87
  state, content_for_pyright = await asyncio.get_running_loop().run_in_executor(None, _build_file_state, text)
87
88
  language_server._parse_errors[uri] = None
88
89
  language_server._files[uri] = state
89
- if language_server._pyright:
90
- language_server._pyright.notify(
91
- "textDocument/didChange",
92
- {
93
- "textDocument": {"uri": uri, "version": params.text_document.version},
94
- "contentChanges": [{"text": content_for_pyright}],
95
- },
96
- )
90
+ if not language_server._pyright:
91
+ return
92
+ language_server._pyright.notify(
93
+ "textDocument/didChange",
94
+ {
95
+ "textDocument": {"uri": uri, "version": params.text_document.version},
96
+ "contentChanges": [{"text": content_for_pyright}],
97
+ },
98
+ )
97
99
  except grammar.ParsingError as error:
98
100
  language_server._parse_errors[uri] = _parse_error_to_diagnostic(text, error)
99
101
  language_server._republish_diagnostics(uri)
@@ -112,5 +114,13 @@ def did_close(language_server: FragmentsServer, params: types.DidCloseTextDocume
112
114
  if existing:
113
115
  existing.cancel()
114
116
 
115
- if language_server._pyright:
116
- language_server._pyright.notify("textDocument/didClose", {"textDocument": {"uri": uri}})
117
+ if not language_server._pyright:
118
+ return
119
+ language_server._pyright.notify("textDocument/didClose", {"textDocument": {"uri": uri}})
120
+
121
+
122
+ @server.feature(types.WORKSPACE_DID_CHANGE_WATCHED_FILES)
123
+ def did_change_watched_files(language_server: FragmentsServer, params: types.DidChangeWatchedFilesParams) -> None:
124
+ if not language_server._pyright:
125
+ return
126
+ language_server._pyright.notify("workspace/didChangeWatchedFiles", _converter.unstructure(params))
fragments/lsp/server.py CHANGED
@@ -49,6 +49,12 @@ class FragmentsServer(LanguageServer):
49
49
  config = {**(config or {}), "pythonPath": sys.executable, "defaultInterpreterPath": sys.executable}
50
50
  result.append(config) # type: ignore[arg-type]
51
51
  return result
52
+ if message["method"] == "client/registerCapability":
53
+ await self.client_register_capability_async(_converter.structure(message["params"], types.RegistrationParams))
54
+ return {}
55
+ if message["method"] == "client/unregisterCapability":
56
+ await self.client_unregister_capability_async(_converter.structure(message["params"], types.UnregistrationParams))
57
+ return {}
52
58
  return None
53
59
 
54
60
  async def _publish_diagnostics(self, params: dict[str, Any]) -> None:
@@ -122,6 +128,7 @@ def _build_file_state(text: str) -> tuple[_FileState | None, str]:
122
128
 
123
129
  def main() -> None:
124
130
  from fragments.lsp import completion, definition, hover, lifecycle, rename, semantic_tokens # noqa: F401
131
+
125
132
  server.start_io()
126
133
 
127
134
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-fragments
3
- Version: 0.2
3
+ Version: 0.4
4
4
  Summary: Modern HTML template rendering in Python
5
5
  Author-email: The Running Algorithm <services@therunningalgorithm.info>
6
6
  License: Proprietary
@@ -12,13 +12,13 @@ fragments/lsp/completion.py,sha256=BdEu36WN-IwyxbzrvcfLOJ-YiCQn0tzbsIaGUJJuSsk,3
12
12
  fragments/lsp/definition.py,sha256=eXTziJn-lHUERCTwdHTNWFXyoKfmAZGmmBlqEsxuGiQ,1905
13
13
  fragments/lsp/file_state.py,sha256=A5yt63PdfaPy-4RHkC7zHkW8BtzP937p9dNT22bDbeg,5896
14
14
  fragments/lsp/hover.py,sha256=StCBfewkXvf_nBTBVr7pS1r0eQfdwJ1fCFWG50qO_Yc,1622
15
- fragments/lsp/lifecycle.py,sha256=tRhGeT5NbJ4DYYhsjzWa9sRoPCougYmtAAspsP8iFK8,4622
15
+ fragments/lsp/lifecycle.py,sha256=dpZzcSjQ7Qe9T4APralXwknlH2bDDcHNupb6AqziVwk,4953
16
16
  fragments/lsp/pyright.py,sha256=nAxzvxKGqAj039ZZzopyd4MhaMSNjThO8Av-wQxGZM8,3652
17
17
  fragments/lsp/rename.py,sha256=k6h4uHTnXpLatPgIkTY7oQDEd6p17NqVq1OLd8mtsEA,4305
18
18
  fragments/lsp/semantic_tokens.py,sha256=BbfchVffOKG8jrjpddl69yuSWsXDwNClQrnZvcu53oI,1986
19
- fragments/lsp/server.py,sha256=gF77Yayo8VskvXyr2iXw5cL5P_pzxj2iGOl5ltorGnM,5289
20
- python_fragments-0.2.dist-info/METADATA,sha256=XAsEzJOnIpBFP18tXFOIXdrgI2YofuBJqZpb65oTtKM,1536
21
- python_fragments-0.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
22
- python_fragments-0.2.dist-info/entry_points.txt,sha256=SJa8O1NUgYJyW_kDbJCz7bbwijlTCneTqwj9UCnFS-A,91
23
- python_fragments-0.2.dist-info/top_level.txt,sha256=4r1SNnHOK3BVhAT_KgV8MRq9kiV23yK_rnuTAEl5oRg,10
24
- python_fragments-0.2.dist-info/RECORD,,
19
+ fragments/lsp/server.py,sha256=pmOuNZ7XTNJHs6GNaLAdNiK9EBzYFRZ6z6w0lUs3v7c,5708
20
+ python_fragments-0.4.dist-info/METADATA,sha256=j9eurg70yByyDDYPO4keYT3OQjsX3Dtrxuq123lOXZk,1536
21
+ python_fragments-0.4.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
22
+ python_fragments-0.4.dist-info/entry_points.txt,sha256=SJa8O1NUgYJyW_kDbJCz7bbwijlTCneTqwj9UCnFS-A,91
23
+ python_fragments-0.4.dist-info/top_level.txt,sha256=4r1SNnHOK3BVhAT_KgV8MRq9kiV23yK_rnuTAEl5oRg,10
24
+ python_fragments-0.4.dist-info/RECORD,,