python-fragments 0.3__tar.gz → 0.5__tar.gz

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.
Files changed (32) hide show
  1. {python_fragments-0.3 → python_fragments-0.5}/PKG-INFO +1 -1
  2. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/lifecycle.py +34 -36
  3. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/server.py +7 -0
  4. {python_fragments-0.3 → python_fragments-0.5}/pyproject.toml +1 -1
  5. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/PKG-INFO +1 -1
  6. {python_fragments-0.3 → python_fragments-0.5}/README.md +0 -0
  7. {python_fragments-0.3 → python_fragments-0.5}/fragments/__init__.py +0 -0
  8. {python_fragments-0.3 → python_fragments-0.5}/fragments/ast_nodes.py +0 -0
  9. {python_fragments-0.3 → python_fragments-0.5}/fragments/cli.py +0 -0
  10. {python_fragments-0.3 → python_fragments-0.5}/fragments/grammar.py +0 -0
  11. {python_fragments-0.3 → python_fragments-0.5}/fragments/html/__init__.py +0 -0
  12. {python_fragments-0.3 → python_fragments-0.5}/fragments/html/elements.py +0 -0
  13. {python_fragments-0.3 → python_fragments-0.5}/fragments/loader.py +0 -0
  14. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/__init__.py +0 -0
  15. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/completion.py +0 -0
  16. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/definition.py +0 -0
  17. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/file_state.py +0 -0
  18. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/hover.py +0 -0
  19. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/pyright.py +0 -0
  20. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/rename.py +0 -0
  21. {python_fragments-0.3 → python_fragments-0.5}/fragments/lsp/semantic_tokens.py +0 -0
  22. {python_fragments-0.3 → python_fragments-0.5}/fragments/source.py +0 -0
  23. {python_fragments-0.3 → python_fragments-0.5}/fragments/transpiler.py +0 -0
  24. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/SOURCES.txt +0 -0
  25. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/dependency_links.txt +0 -0
  26. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/entry_points.txt +0 -0
  27. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/requires.txt +0 -0
  28. {python_fragments-0.3 → python_fragments-0.5}/python_fragments.egg-info/top_level.txt +0 -0
  29. {python_fragments-0.3 → python_fragments-0.5}/setup.cfg +0 -0
  30. {python_fragments-0.3 → python_fragments-0.5}/tests/test_grammar.py +0 -0
  31. {python_fragments-0.3 → python_fragments-0.5}/tests/test_pyright.py +0 -0
  32. {python_fragments-0.3 → python_fragments-0.5}/tests/test_source_map.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-fragments
3
- Version: 0.3
3
+ Version: 0.5
4
4
  Summary: Modern HTML template rendering in Python
5
5
  Author-email: The Running Algorithm <services@therunningalgorithm.info>
6
6
  License: Proprietary
@@ -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, _build_file_state, _converter, _parse_error_to_diagnostic, server
10
10
 
11
11
  _DEBOUNCE_SECONDS = 0.15
12
12
 
@@ -25,19 +25,7 @@ async def initialized(language_server: FragmentsServer, _params: types.Initializ
25
25
  "processId": None,
26
26
  "rootUri": root_uri,
27
27
  "workspaceFolders": workspace_folders or None,
28
- "capabilities": {
29
- "workspace": {"configuration": True},
30
- "textDocument": {
31
- "hover": {"contentFormat": ["markdown", "plaintext"]},
32
- "rename": {"prepareSupport": True},
33
- "semanticTokens": {
34
- "requests": {"full": True},
35
- "tokenTypes": _TOKEN_TYPES,
36
- "tokenModifiers": _TOKEN_MODIFIERS,
37
- "formats": ["relative"],
38
- },
39
- },
40
- },
28
+ "capabilities": _converter.unstructure(language_server.client_capabilities),
41
29
  },
42
30
  )
43
31
  pyright.notify("initialized", {})
@@ -56,18 +44,19 @@ async def did_open(language_server: FragmentsServer, params: types.DidOpenTextDo
56
44
  language_server._republish_diagnostics(document.uri)
57
45
  language_server._files[document.uri] = state
58
46
 
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
- )
47
+ if not language_server._pyright:
48
+ return
49
+ language_server._pyright.notify(
50
+ "textDocument/didOpen",
51
+ {
52
+ "textDocument": {
53
+ "uri": document.uri,
54
+ "languageId": document.language_id,
55
+ "version": document.version,
56
+ "text": content_for_pyright,
57
+ }
58
+ },
59
+ )
71
60
 
72
61
 
73
62
  @server.feature(types.TEXT_DOCUMENT_DID_CHANGE)
@@ -86,14 +75,15 @@ def did_change(language_server: FragmentsServer, params: types.DidChangeTextDocu
86
75
  state, content_for_pyright = await asyncio.get_running_loop().run_in_executor(None, _build_file_state, text)
87
76
  language_server._parse_errors[uri] = None
88
77
  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
- )
78
+ if not language_server._pyright:
79
+ return
80
+ language_server._pyright.notify(
81
+ "textDocument/didChange",
82
+ {
83
+ "textDocument": {"uri": uri, "version": params.text_document.version},
84
+ "contentChanges": [{"text": content_for_pyright}],
85
+ },
86
+ )
97
87
  except grammar.ParsingError as error:
98
88
  language_server._parse_errors[uri] = _parse_error_to_diagnostic(text, error)
99
89
  language_server._republish_diagnostics(uri)
@@ -112,5 +102,13 @@ def did_close(language_server: FragmentsServer, params: types.DidCloseTextDocume
112
102
  if existing:
113
103
  existing.cancel()
114
104
 
115
- if language_server._pyright:
116
- language_server._pyright.notify("textDocument/didClose", {"textDocument": {"uri": uri}})
105
+ if not language_server._pyright:
106
+ return
107
+ language_server._pyright.notify("textDocument/didClose", {"textDocument": {"uri": uri}})
108
+
109
+
110
+ @server.feature(types.WORKSPACE_DID_CHANGE_WATCHED_FILES)
111
+ def did_change_watched_files(language_server: FragmentsServer, params: types.DidChangeWatchedFilesParams) -> None:
112
+ if not language_server._pyright:
113
+ return
114
+ language_server._pyright.notify("workspace/didChangeWatchedFiles", _converter.unstructure(params))
@@ -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
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "python-fragments"
7
- version = "0.3"
7
+ version = "0.5"
8
8
  description = "Modern HTML template rendering in Python"
9
9
  authors = [{ name = "The Running Algorithm", email = "services@therunningalgorithm.info" }]
10
10
  readme = "README.md"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: python-fragments
3
- Version: 0.3
3
+ Version: 0.5
4
4
  Summary: Modern HTML template rendering in Python
5
5
  Author-email: The Running Algorithm <services@therunningalgorithm.info>
6
6
  License: Proprietary
File without changes
File without changes