jaclang 0.7.13__py3-none-any.whl → 0.7.14__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.
Potentially problematic release.
This version of jaclang might be problematic. Click here for more details.
- jaclang/compiler/absyntree.py +9 -4
- jaclang/compiler/parser.py +4 -0
- jaclang/compiler/passes/main/import_pass.py +1 -0
- jaclang/compiler/passes/main/pyast_gen_pass.py +1 -8
- jaclang/compiler/passes/main/pyast_load_pass.py +1 -0
- jaclang/compiler/passes/main/tests/test_import_pass.py +5 -1
- jaclang/compiler/passes/tool/fuse_comments_pass.py +14 -2
- jaclang/compiler/passes/tool/jac_formatter_pass.py +22 -10
- jaclang/langserve/engine.py +17 -25
- jaclang/langserve/tests/test_server.py +24 -0
- jaclang/plugin/default.py +2 -0
- jaclang/tests/fixtures/blankwithentry.jac +3 -0
- jaclang/tests/test_language.py +9 -0
- jaclang/tests/test_man_code.py +17 -0
- {jaclang-0.7.13.dist-info → jaclang-0.7.14.dist-info}/METADATA +1 -1
- {jaclang-0.7.13.dist-info → jaclang-0.7.14.dist-info}/RECORD +18 -17
- {jaclang-0.7.13.dist-info → jaclang-0.7.14.dist-info}/WHEEL +0 -0
- {jaclang-0.7.13.dist-info → jaclang-0.7.14.dist-info}/entry_points.txt +0 -0
jaclang/compiler/absyntree.py
CHANGED
|
@@ -621,6 +621,7 @@ class Module(AstDocNode):
|
|
|
621
621
|
doc: Optional[String],
|
|
622
622
|
body: Sequence[ElementStmt | String | EmptyToken],
|
|
623
623
|
is_imported: bool,
|
|
624
|
+
terminals: list[Token],
|
|
624
625
|
kid: Sequence[AstNode],
|
|
625
626
|
stub_only: bool = False,
|
|
626
627
|
registry: Optional[SemRegistry] = None,
|
|
@@ -635,6 +636,7 @@ class Module(AstDocNode):
|
|
|
635
636
|
self.test_mod: list[Module] = []
|
|
636
637
|
self.mod_deps: dict[str, Module] = {}
|
|
637
638
|
self.registry = registry
|
|
639
|
+
self.terminals: list[Token] = terminals
|
|
638
640
|
AstNode.__init__(self, kid=kid)
|
|
639
641
|
AstDocNode.__init__(self, doc=doc)
|
|
640
642
|
|
|
@@ -642,15 +644,15 @@ class Module(AstDocNode):
|
|
|
642
644
|
def annexable_by(self) -> Optional[str]:
|
|
643
645
|
"""Get annexable by."""
|
|
644
646
|
if not self.stub_only and (
|
|
645
|
-
self.loc.mod_path.endswith("impl.jac")
|
|
646
|
-
or self.loc.mod_path.endswith("test.jac")
|
|
647
|
+
self.loc.mod_path.endswith(".impl.jac")
|
|
648
|
+
or self.loc.mod_path.endswith(".test.jac")
|
|
647
649
|
):
|
|
648
650
|
head_mod_name = self.name.split(".")[0]
|
|
649
651
|
potential_path = os.path.join(
|
|
650
652
|
os.path.dirname(self.loc.mod_path),
|
|
651
653
|
f"{head_mod_name}.jac",
|
|
652
654
|
)
|
|
653
|
-
if os.path.exists(potential_path):
|
|
655
|
+
if os.path.exists(potential_path) and potential_path != self.loc.mod_path:
|
|
654
656
|
return potential_path
|
|
655
657
|
annex_dir = os.path.split(os.path.dirname(self.loc.mod_path))[-1]
|
|
656
658
|
if annex_dir.endswith(".impl") or annex_dir.endswith(".test"):
|
|
@@ -661,7 +663,10 @@ class Module(AstDocNode):
|
|
|
661
663
|
os.path.dirname(os.path.dirname(self.loc.mod_path)),
|
|
662
664
|
f"{head_mod_name}.jac",
|
|
663
665
|
)
|
|
664
|
-
if
|
|
666
|
+
if (
|
|
667
|
+
os.path.exists(potential_path)
|
|
668
|
+
and potential_path != self.loc.mod_path
|
|
669
|
+
):
|
|
665
670
|
return potential_path
|
|
666
671
|
return None
|
|
667
672
|
|
jaclang/compiler/parser.py
CHANGED
|
@@ -56,6 +56,7 @@ class JacParser(Pass):
|
|
|
56
56
|
source=self.source,
|
|
57
57
|
doc=None,
|
|
58
58
|
body=[],
|
|
59
|
+
terminals=[],
|
|
59
60
|
is_imported=False,
|
|
60
61
|
kid=[ast.EmptyToken()],
|
|
61
62
|
)
|
|
@@ -120,6 +121,7 @@ class JacParser(Pass):
|
|
|
120
121
|
"""Initialize transformer."""
|
|
121
122
|
super().__init__(*args, **kwargs)
|
|
122
123
|
self.parse_ref = parser
|
|
124
|
+
self.terminals: list[ast.Token] = []
|
|
123
125
|
|
|
124
126
|
def ice(self) -> Exception:
|
|
125
127
|
"""Raise internal compiler error."""
|
|
@@ -160,6 +162,7 @@ class JacParser(Pass):
|
|
|
160
162
|
doc=doc,
|
|
161
163
|
body=body,
|
|
162
164
|
is_imported=False,
|
|
165
|
+
terminals=self.terminals,
|
|
163
166
|
kid=kid if len(kid) else [ast.EmptyToken()],
|
|
164
167
|
)
|
|
165
168
|
return self.nu(mod)
|
|
@@ -3983,4 +3986,5 @@ class JacParser(Pass):
|
|
|
3983
3986
|
err.line = ret.loc.first_line
|
|
3984
3987
|
err.column = ret.loc.col_start
|
|
3985
3988
|
raise err
|
|
3989
|
+
self.terminals.append(ret)
|
|
3986
3990
|
return self.nu(ret)
|
|
@@ -434,14 +434,7 @@ class PyastGenPass(Pass):
|
|
|
434
434
|
body: SubNodeList[CodeBlockStmt],
|
|
435
435
|
doc: Optional[String],
|
|
436
436
|
"""
|
|
437
|
-
|
|
438
|
-
doc = self.sync(ast3.Expr(value=node.doc.gen.py_ast[0]), jac_node=node.doc)
|
|
439
|
-
if isinstance(node.body.gen.py_ast, list):
|
|
440
|
-
node.gen.py_ast = [doc] + node.body.gen.py_ast
|
|
441
|
-
else:
|
|
442
|
-
raise self.ice()
|
|
443
|
-
else:
|
|
444
|
-
node.gen.py_ast = node.body.gen.py_ast
|
|
437
|
+
node.gen.py_ast = self.resolve_stmt_block(node.body, doc=node.doc)
|
|
445
438
|
if node.name:
|
|
446
439
|
node.gen.py_ast = [
|
|
447
440
|
self.sync(
|
|
@@ -124,6 +124,7 @@ class PyastBuildPass(Pass[ast.PythonModuleAst]):
|
|
|
124
124
|
source=ast.JacSource("", mod_path=self.mod_path),
|
|
125
125
|
doc=doc_str,
|
|
126
126
|
body=valid[1:] if valid and isinstance(valid[0], ast.String) else valid,
|
|
127
|
+
terminals=[],
|
|
127
128
|
is_imported=False,
|
|
128
129
|
kid=valid,
|
|
129
130
|
)
|
|
@@ -47,8 +47,12 @@ class ImportPassPassTests(TestCase):
|
|
|
47
47
|
state = jac_file_to_pass(
|
|
48
48
|
self.fixture_abs_path("incautoimpl.jac"), JacImportPass
|
|
49
49
|
)
|
|
50
|
+
count = 0
|
|
50
51
|
for i in state.ir.get_all_sub_nodes(ast.Module):
|
|
51
|
-
|
|
52
|
+
if i.name != "autoimpl":
|
|
53
|
+
count += 1
|
|
54
|
+
self.assertEqual(i.annexable_by, self.fixture_abs_path("autoimpl.jac"))
|
|
55
|
+
self.assertEqual(count, 3)
|
|
52
56
|
|
|
53
57
|
def test_py_resolve_list(self) -> None:
|
|
54
58
|
"""Basic test for pass."""
|
|
@@ -27,7 +27,12 @@ class FuseCommentsPass(Pass):
|
|
|
27
27
|
"""Insert comment tokens into all_tokens."""
|
|
28
28
|
comment_stream = iter(self.comments) # Iterator for comments
|
|
29
29
|
code_stream = iter(self.all_tokens) # Iterator for code tokens
|
|
30
|
-
new_stream: list[ast.
|
|
30
|
+
new_stream: list[ast.Token] = [] # New stream to hold ordered tokens
|
|
31
|
+
|
|
32
|
+
if not isinstance(self.ir, ast.Module):
|
|
33
|
+
raise self.ice(
|
|
34
|
+
f"FuseCommentsPass can only be run on a Module, not a {type(self.ir)}"
|
|
35
|
+
)
|
|
31
36
|
|
|
32
37
|
try:
|
|
33
38
|
next_comment = next(comment_stream) # Get the first comment
|
|
@@ -39,12 +44,20 @@ class FuseCommentsPass(Pass):
|
|
|
39
44
|
except StopIteration:
|
|
40
45
|
next_code = None
|
|
41
46
|
|
|
47
|
+
if next_comment and (not next_code or is_comment_next(next_comment, next_code)):
|
|
48
|
+
self.ir.terminals.insert(0, next_comment)
|
|
49
|
+
|
|
42
50
|
while next_comment or next_code:
|
|
43
51
|
if next_comment and (
|
|
44
52
|
not next_code or is_comment_next(next_comment, next_code)
|
|
45
53
|
):
|
|
46
54
|
# Add the comment to the new stream
|
|
55
|
+
last_tok = new_stream[-1] if len(new_stream) else None
|
|
47
56
|
new_stream.append(next_comment)
|
|
57
|
+
if last_tok:
|
|
58
|
+
self.ir.terminals.insert(
|
|
59
|
+
self.ir.terminals.index(last_tok) + 1, next_comment
|
|
60
|
+
)
|
|
48
61
|
try:
|
|
49
62
|
next_comment = next(comment_stream)
|
|
50
63
|
except StopIteration:
|
|
@@ -70,7 +83,6 @@ class FuseCommentsPass(Pass):
|
|
|
70
83
|
parent_kids.insert(insert_index, token)
|
|
71
84
|
prev_token.parent.set_kids(parent_kids)
|
|
72
85
|
else:
|
|
73
|
-
prev_token.pp()
|
|
74
86
|
raise self.ice(
|
|
75
87
|
"Token without parent in AST should be impossible"
|
|
76
88
|
)
|
|
@@ -27,6 +27,22 @@ class JacFormatPass(Pass):
|
|
|
27
27
|
node.gen.jac = ""
|
|
28
28
|
super().enter_node(node)
|
|
29
29
|
|
|
30
|
+
def token_before(self, node: ast.Token) -> Optional[ast.Token]:
|
|
31
|
+
"""Token before."""
|
|
32
|
+
if not isinstance(self.ir, ast.Module):
|
|
33
|
+
raise self.ice("IR must be module. Impossible")
|
|
34
|
+
if self.ir.terminals.index(node) == 0:
|
|
35
|
+
return None
|
|
36
|
+
return self.ir.terminals[self.ir.terminals.index(node) - 1]
|
|
37
|
+
|
|
38
|
+
def token_after(self, node: ast.Token) -> Optional[ast.Token]:
|
|
39
|
+
"""Token after."""
|
|
40
|
+
if not isinstance(self.ir, ast.Module):
|
|
41
|
+
raise self.ice("IR must be module. Impossible")
|
|
42
|
+
if self.ir.terminals.index(node) == len(self.ir.terminals) - 1:
|
|
43
|
+
return None
|
|
44
|
+
return self.ir.terminals[self.ir.terminals.index(node) + 1]
|
|
45
|
+
|
|
30
46
|
def indent_str(self) -> str:
|
|
31
47
|
"""Return string for indent."""
|
|
32
48
|
return " " * self.indent_size * self.indent_level
|
|
@@ -220,17 +236,11 @@ class JacFormatPass(Pass):
|
|
|
220
236
|
self.emit_ln(node, "")
|
|
221
237
|
self.indent_level += 1
|
|
222
238
|
if stmt.name == Tok.LBRACE:
|
|
223
|
-
|
|
224
|
-
if isinstance(next_kid, ast.CommentToken) and next_kid.is_inline:
|
|
225
|
-
self.emit(node, f" {stmt.value}")
|
|
226
|
-
else:
|
|
227
|
-
self.emit(node, f" {stmt.value}")
|
|
239
|
+
self.emit(node, f" {stmt.value}")
|
|
228
240
|
elif stmt.name == Tok.RBRACE:
|
|
229
241
|
if self.indent_level > 0:
|
|
230
242
|
self.indent_level -= 1
|
|
231
|
-
if stmt.parent and stmt.parent.gen.jac.strip() == "{"
|
|
232
|
-
self.emit_ln(node, stmt.gen.jac.strip())
|
|
233
|
-
elif (
|
|
243
|
+
if (stmt.parent and stmt.parent.gen.jac.strip() == "{") or (
|
|
234
244
|
stmt.parent
|
|
235
245
|
and stmt.parent.parent
|
|
236
246
|
and isinstance(
|
|
@@ -251,9 +261,7 @@ class JacFormatPass(Pass):
|
|
|
251
261
|
):
|
|
252
262
|
self.emit(node, f" {stmt.value}")
|
|
253
263
|
elif not (node.gen.jac).endswith("\n"):
|
|
254
|
-
self.indent_level -= 1
|
|
255
264
|
self.emit_ln(node, "")
|
|
256
|
-
self.indent_level += 1
|
|
257
265
|
self.emit(node, f"{stmt.value}")
|
|
258
266
|
else:
|
|
259
267
|
self.emit(node, f"{stmt.value}")
|
|
@@ -1392,8 +1400,12 @@ class JacFormatPass(Pass):
|
|
|
1392
1400
|
self.emit(node, i.gen.jac)
|
|
1393
1401
|
if isinstance(prev_token, ast.Semi):
|
|
1394
1402
|
self.emit_ln(node, "")
|
|
1403
|
+
elif (tok := self.token_before(i)) and (i.line_no - tok.line_no > 1):
|
|
1404
|
+
self.emit_ln(node, "")
|
|
1405
|
+
self.emit_ln(node, i.gen.jac)
|
|
1395
1406
|
else:
|
|
1396
1407
|
self.emit_ln(node, i.gen.jac)
|
|
1408
|
+
self.emit_ln(node, "")
|
|
1397
1409
|
elif isinstance(i, ast.Semi):
|
|
1398
1410
|
self.emit(node, f"{i.gen.jac} ")
|
|
1399
1411
|
elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
|
jaclang/langserve/engine.py
CHANGED
|
@@ -14,7 +14,6 @@ from jaclang.compiler.parser import JacParser
|
|
|
14
14
|
from jaclang.compiler.passes import Pass
|
|
15
15
|
from jaclang.compiler.passes.main.schedules import py_code_gen_typed
|
|
16
16
|
from jaclang.compiler.passes.tool import FuseCommentsPass, JacFormatPass
|
|
17
|
-
from jaclang.compiler.passes.transform import Alert
|
|
18
17
|
from jaclang.langserve.utils import (
|
|
19
18
|
collect_all_symbols_in_scope,
|
|
20
19
|
collect_symbols,
|
|
@@ -39,13 +38,11 @@ class ModuleInfo:
|
|
|
39
38
|
def __init__(
|
|
40
39
|
self,
|
|
41
40
|
ir: ast.Module,
|
|
42
|
-
|
|
43
|
-
warnings: list[Alert],
|
|
44
|
-
parent: Optional[ModuleInfo] = None,
|
|
41
|
+
impl_parent: Optional[ModuleInfo] = None,
|
|
45
42
|
) -> None:
|
|
46
43
|
"""Initialize module info."""
|
|
47
44
|
self.ir = ir
|
|
48
|
-
self.
|
|
45
|
+
self.impl_parent: Optional[ModuleInfo] = impl_parent
|
|
49
46
|
self.sem_tokens: list[int] = self.gen_sem_tokens()
|
|
50
47
|
|
|
51
48
|
@property
|
|
@@ -162,29 +159,17 @@ class JacLangServer(LanguageServer):
|
|
|
162
159
|
if not isinstance(build.ir, ast.Module):
|
|
163
160
|
self.log_error("Error with module build.")
|
|
164
161
|
return
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
errors=[
|
|
168
|
-
i
|
|
169
|
-
for i in build.errors_had
|
|
170
|
-
if i.loc.mod_path == uris.to_fs_path(file_path)
|
|
171
|
-
],
|
|
172
|
-
warnings=[
|
|
173
|
-
i
|
|
174
|
-
for i in build.warnings_had
|
|
175
|
-
if i.loc.mod_path == uris.to_fs_path(file_path)
|
|
176
|
-
],
|
|
162
|
+
keep_parent = (
|
|
163
|
+
self.modules[file_path].impl_parent if file_path in self.modules else None
|
|
177
164
|
)
|
|
165
|
+
self.modules[file_path] = ModuleInfo(ir=build.ir, impl_parent=keep_parent)
|
|
178
166
|
for p in build.ir.mod_deps.keys():
|
|
179
167
|
uri = uris.from_fs_path(p)
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
self.modules[uri].parent = (
|
|
186
|
-
self.modules[file_path] if file_path != uri else None
|
|
187
|
-
)
|
|
168
|
+
if file_path != uri:
|
|
169
|
+
self.modules[uri] = ModuleInfo(
|
|
170
|
+
ir=build.ir.mod_deps[p],
|
|
171
|
+
impl_parent=self.modules[file_path],
|
|
172
|
+
)
|
|
188
173
|
|
|
189
174
|
def quick_check(self, file_path: str) -> bool:
|
|
190
175
|
"""Rebuild a file."""
|
|
@@ -206,6 +191,12 @@ class JacLangServer(LanguageServer):
|
|
|
206
191
|
"""Rebuild a file and its dependencies."""
|
|
207
192
|
try:
|
|
208
193
|
document = self.workspace.get_text_document(file_path)
|
|
194
|
+
if file_path in self.modules and (
|
|
195
|
+
parent := self.modules[file_path].impl_parent
|
|
196
|
+
):
|
|
197
|
+
return self.deep_check(
|
|
198
|
+
uris.from_fs_path(parent.ir.loc.mod_path), annex_view=file_path
|
|
199
|
+
)
|
|
209
200
|
build = jac_str_to_pass(
|
|
210
201
|
jac_str=document.source,
|
|
211
202
|
file_path=document.path,
|
|
@@ -216,6 +207,7 @@ class JacLangServer(LanguageServer):
|
|
|
216
207
|
return self.deep_check(
|
|
217
208
|
uris.from_fs_path(discover), annex_view=file_path
|
|
218
209
|
)
|
|
210
|
+
|
|
219
211
|
self.publish_diagnostics(
|
|
220
212
|
file_path,
|
|
221
213
|
gen_diagnostics(
|
|
@@ -137,6 +137,30 @@ class TestJacLangServer(TestCase):
|
|
|
137
137
|
str(lsp.get_definition(guess_game_file, lspt.Position(46, 45))),
|
|
138
138
|
)
|
|
139
139
|
|
|
140
|
+
def test_go_to_definition_method_manual_impl(self) -> None:
|
|
141
|
+
"""Test that the go to definition is correct."""
|
|
142
|
+
lsp = JacLangServer()
|
|
143
|
+
workspace_path = self.fixture_abs_path("")
|
|
144
|
+
workspace = Workspace(workspace_path, lsp)
|
|
145
|
+
lsp.lsp._workspace = workspace
|
|
146
|
+
decldef_file = uris.from_fs_path(
|
|
147
|
+
self.examples_abs_path("micro/decl_defs_impl.jac")
|
|
148
|
+
)
|
|
149
|
+
lsp.deep_check(decldef_file)
|
|
150
|
+
self.assertNotIn(
|
|
151
|
+
"decl_defs_main.jac:8:8-8:17",
|
|
152
|
+
str(lsp.get_definition(decldef_file, lspt.Position(2, 24))),
|
|
153
|
+
)
|
|
154
|
+
decldef_main_file = uris.from_fs_path(
|
|
155
|
+
self.examples_abs_path("micro/decl_defs_main.jac")
|
|
156
|
+
)
|
|
157
|
+
lsp.deep_check(decldef_main_file)
|
|
158
|
+
lsp.deep_check(decldef_file)
|
|
159
|
+
self.assertIn(
|
|
160
|
+
"decl_defs_main.jac:8:8-8:17",
|
|
161
|
+
str(lsp.get_definition(decldef_file, lspt.Position(2, 24))),
|
|
162
|
+
)
|
|
163
|
+
|
|
140
164
|
def test_test_annex(self) -> None:
|
|
141
165
|
"""Test that the server doesn't run if there is a syntax error."""
|
|
142
166
|
lsp = JacLangServer()
|
jaclang/plugin/default.py
CHANGED
|
@@ -260,6 +260,8 @@ class JacFeatureDefaults:
|
|
|
260
260
|
base, mod_name = os.path.split(filepath)
|
|
261
261
|
base = base if base else "./"
|
|
262
262
|
mod_name = mod_name[:-4]
|
|
263
|
+
if mod_name.endswith(".test"):
|
|
264
|
+
mod_name = mod_name[:-5]
|
|
263
265
|
JacTestCheck.reset()
|
|
264
266
|
Jac.jac_import(target=mod_name, base_path=base)
|
|
265
267
|
JacTestCheck.run_test(xit, maxfail, verbose)
|
jaclang/tests/test_language.py
CHANGED
|
@@ -840,3 +840,12 @@ class JacLanguageTests(TestCase):
|
|
|
840
840
|
sys.stdout = sys.__stdout__
|
|
841
841
|
stdout_value = captured_output.getvalue()
|
|
842
842
|
self.assertIn("[x()]", stdout_value)
|
|
843
|
+
|
|
844
|
+
def test_blank_with_entry(self) -> None:
|
|
845
|
+
"""Test importing python."""
|
|
846
|
+
captured_output = io.StringIO()
|
|
847
|
+
sys.stdout = captured_output
|
|
848
|
+
jac_import("blankwithentry", base_path=self.fixture_abs_path("./"))
|
|
849
|
+
sys.stdout = sys.__stdout__
|
|
850
|
+
stdout_value = captured_output.getvalue()
|
|
851
|
+
self.assertIn("i work", stdout_value)
|
jaclang/tests/test_man_code.py
CHANGED
|
@@ -124,6 +124,23 @@ class JacCliTests(TestCase):
|
|
|
124
124
|
# Assertions or verifications
|
|
125
125
|
self.assertIn("Ran 3 tests", stderr_value)
|
|
126
126
|
|
|
127
|
+
def test_pure_circle_jac_test(self) -> None:
|
|
128
|
+
"""Basic test for pass."""
|
|
129
|
+
captured_output = io.StringIO()
|
|
130
|
+
stdio_block = io.StringIO()
|
|
131
|
+
sys.stderr = captured_output
|
|
132
|
+
sys.stdout = stdio_block
|
|
133
|
+
|
|
134
|
+
# Execute the function
|
|
135
|
+
with suppress(SystemExit):
|
|
136
|
+
cli.test(self.examples_abs_path("manual_code/circle_pure.test.jac"))
|
|
137
|
+
|
|
138
|
+
sys.stderr = sys.__stderr__
|
|
139
|
+
sys.stdout = sys.__stdout__
|
|
140
|
+
stderr_value = captured_output.getvalue()
|
|
141
|
+
# Assertions or verifications
|
|
142
|
+
self.assertIn("Ran 3 tests", stderr_value)
|
|
143
|
+
|
|
127
144
|
def test_jac_name_in_sys_mods(self) -> None:
|
|
128
145
|
"""Basic test for pass."""
|
|
129
146
|
captured_output = io.StringIO()
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: jaclang
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.14
|
|
4
4
|
Summary: Jac is a unique and powerful programming language that runs on top of Python, offering an unprecedented level of intelligence and intuitive understanding.
|
|
5
5
|
Home-page: https://jaseci.org
|
|
6
6
|
License: MIT
|
|
@@ -6,12 +6,12 @@ jaclang/cli/cli.py,sha256=tBAUZkY5x8rPCWGbTHDlu4mnAXEThrjCk_K7pFYfWzg,13911
|
|
|
6
6
|
jaclang/cli/cmdreg.py,sha256=u0jAd6A8czt7tBgPBBKBhYAG4By1FrjEGaTU2XFKeYs,8372
|
|
7
7
|
jaclang/compiler/.gitignore,sha256=n1k2_xXTorp9PY8hhYM4psHircn-NMaFx95bSgDKopo,10
|
|
8
8
|
jaclang/compiler/__init__.py,sha256=P8h-q53h-MTK8Wmvpb7sP5R6Ojz94Y2F9nqMwIUt0d4,3064
|
|
9
|
-
jaclang/compiler/absyntree.py,sha256=
|
|
9
|
+
jaclang/compiler/absyntree.py,sha256=9fFGMNZNwUiwOSxyR8v7I5IX4gHvpyBWC0shvOE585w,135093
|
|
10
10
|
jaclang/compiler/codeloc.py,sha256=YhJcHjhMCOT6mV1qLehwriuFgW0H2-ntq68k_r8yBs4,2800
|
|
11
11
|
jaclang/compiler/compile.py,sha256=0d8p4i2LXg2RCu1XfWx_Jq_dx7pK2Zn2VIj-apvX_nI,3389
|
|
12
12
|
jaclang/compiler/constant.py,sha256=n4KaEkvnb9-KVJJVvxiWimhjbrOiknBvLHAVDBFbF7Y,8991
|
|
13
13
|
jaclang/compiler/jac.lark,sha256=Vu14pEa9HObGQCHCGFhIdq__yA3W0-cKAX53NZc--xM,17204
|
|
14
|
-
jaclang/compiler/parser.py,sha256=
|
|
14
|
+
jaclang/compiler/parser.py,sha256=T7ntURGUAEtOi7nTRSBER5Nkh7SxeNxoerYmnFFsAFc,140448
|
|
15
15
|
jaclang/compiler/passes/__init__.py,sha256=0Tw0d130ZjzA05jVcny9cf5NfLjlaM70PKqFnY4zqn4,69
|
|
16
16
|
jaclang/compiler/passes/ir_pass.py,sha256=rNB3aHffPkX6HOeVAZgXwabNY1t9dWFr1xp6XgfNSok,5823
|
|
17
17
|
jaclang/compiler/passes/main/__init__.py,sha256=YSWVNkgnJKF32LpJwX__FwvYrpTSoxFqvnw410WrhkA,947
|
|
@@ -19,9 +19,9 @@ jaclang/compiler/passes/main/access_modifier_pass.py,sha256=fvmvU_V72Zby8fiBnVES
|
|
|
19
19
|
jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=yAkwLQm2NBJycJVSmG88Shq0r2GSxTH8goINDfGIHek,4583
|
|
20
20
|
jaclang/compiler/passes/main/def_use_pass.py,sha256=68Uts_v-R-9mzBXC9EfXpcBEQwqnVcpL2JD0sri88AY,9674
|
|
21
21
|
jaclang/compiler/passes/main/fuse_typeinfo_pass.py,sha256=-Ubaxk_5Tm4e09pDiTk0U-vZqUIZRzffLBw4yT2pOVo,18187
|
|
22
|
-
jaclang/compiler/passes/main/import_pass.py,sha256=
|
|
23
|
-
jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=
|
|
24
|
-
jaclang/compiler/passes/main/pyast_load_pass.py,sha256=
|
|
22
|
+
jaclang/compiler/passes/main/import_pass.py,sha256=TEiysRX_86tqSx4Ot-SPMTYYDik3pnWxHh6wwCvz5Cg,10974
|
|
23
|
+
jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=xvcbAtng5SqXt5Aru_CFBkRkatGQzPIDr-uWbTgZcA0,151725
|
|
24
|
+
jaclang/compiler/passes/main/pyast_load_pass.py,sha256=NzMwqYLbKLQha8McmTM3HT5ytk_e8xQVMHgIPbzYQd4,93266
|
|
25
25
|
jaclang/compiler/passes/main/pybc_gen_pass.py,sha256=CjA9AqyMO3Pv_b5Hh0YI6JmCqIru2ASonO6rhrkau-M,1336
|
|
26
26
|
jaclang/compiler/passes/main/pyjac_ast_link_pass.py,sha256=dnx_MvrVIks9hpUbiF2m3ao_xrfCwPajPJec7Bis_bA,8338
|
|
27
27
|
jaclang/compiler/passes/main/pyout_pass.py,sha256=QWVB-AyVBha3OespP89LMuslRsdG2niZErwtnRPiURM,3191
|
|
@@ -53,7 +53,7 @@ jaclang/compiler/passes/main/tests/fixtures/registry.jac,sha256=1G6amtU1zIFCgq09
|
|
|
53
53
|
jaclang/compiler/passes/main/tests/fixtures/type_info.jac,sha256=64Im2L-R3YF8DEuTt29QE6mJI5PnFe3PiwcDLKa8gOE,661
|
|
54
54
|
jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py,sha256=zWF2l93RjyG0AWyDXdXsMlPWYOhX46d699YqvIETRGY,1836
|
|
55
55
|
jaclang/compiler/passes/main/tests/test_def_use_pass.py,sha256=0ieyoeiDSK2m3dmVN00oJK2TdJhxWwxA1lnxT95wz0A,843
|
|
56
|
-
jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=
|
|
56
|
+
jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=jLdes0wofyz79mESsGuj1ingjOv-nBsI1YqEezxqYC8,2838
|
|
57
57
|
jaclang/compiler/passes/main/tests/test_pyast_build_pass.py,sha256=LIT4TP-nhtftRtY5rNySRQlim-dWMSlkfUvkhZTk4pc,1383
|
|
58
58
|
jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py,sha256=6ZpLNYxblzBg6bmWSA0fikNM7nEAR9b9F18LJaO5buM,4679
|
|
59
59
|
jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py,sha256=If8PE4exN5g9o1NRElNC0XdfIwJAp7M7f69rzmYRYUQ,655
|
|
@@ -64,8 +64,8 @@ jaclang/compiler/passes/main/tests/test_type_check_pass.py,sha256=v2_KmcyX1_fOpR
|
|
|
64
64
|
jaclang/compiler/passes/main/tests/test_typeinfo_pass.py,sha256=ehC0_giLg7NwB7fR10nW5Te8mZ76qmUFxkK1bEjtmrw,129
|
|
65
65
|
jaclang/compiler/passes/main/type_check_pass.py,sha256=oPXSlTkxPge8H5fvKpFt80V_5ft5It56wLftG7HjS2Y,3458
|
|
66
66
|
jaclang/compiler/passes/tool/__init__.py,sha256=xekCOXysHIcthWm8NRmQoA1Ah1XV8vFbkfeHphJtUdc,223
|
|
67
|
-
jaclang/compiler/passes/tool/fuse_comments_pass.py,sha256=
|
|
68
|
-
jaclang/compiler/passes/tool/jac_formatter_pass.py,sha256=
|
|
67
|
+
jaclang/compiler/passes/tool/fuse_comments_pass.py,sha256=CSnuWy4gZfTcWKe0Q7LBikBgWe1zJr0QmNUkgrZ7B38,3657
|
|
68
|
+
jaclang/compiler/passes/tool/jac_formatter_pass.py,sha256=yHqHjjCj08BN8kBqpA2rTcNL33Nl3SqqRyJpEIDw83o,87880
|
|
69
69
|
jaclang/compiler/passes/tool/schedules.py,sha256=kmbsCazAMizGAdQuZpFky5BPlYlMXqNw7wOUzdi_wBo,432
|
|
70
70
|
jaclang/compiler/passes/tool/tests/__init__.py,sha256=AeOaZjA1rf6VAr0JqIit6jlcmOzW7pxGr4U1fOwgK_Y,24
|
|
71
71
|
jaclang/compiler/passes/tool/tests/fixtures/corelib.jac,sha256=fNJJWnT_MiyYuN0exec1JTAkh4VKkAcEPFtFYLw3JKk,12712
|
|
@@ -126,7 +126,7 @@ jaclang/core/memory.py,sha256=7QukfL6wDBXrdpRn01yu4RMNkmIMNqFiKrI0zfpGSy4,2947
|
|
|
126
126
|
jaclang/core/test.py,sha256=HRCl3cf0uPTe58Kcx_sBUb6ow8J53rnmpFOhA7g9oAA,2851
|
|
127
127
|
jaclang/core/utils.py,sha256=uzEsRSuNSMMo7dlvCozGv0TnpUmHEjGNzUTZt1Df2gQ,7741
|
|
128
128
|
jaclang/langserve/__init__.py,sha256=3qbnivBBcLZCfmDYRMIeKkG08Lx7XQsJJg-qG8TU8yc,51
|
|
129
|
-
jaclang/langserve/engine.py,sha256=
|
|
129
|
+
jaclang/langserve/engine.py,sha256=4hyu5etdKqLtC8DphxozspYlEZ6GcDcQMmR2_d2l4M4,18766
|
|
130
130
|
jaclang/langserve/server.py,sha256=CyvVmj4G0Y6mJZNxpUDd7dKUm6pvBXZ2mh_DfQ0kI_Y,4968
|
|
131
131
|
jaclang/langserve/tests/__init__.py,sha256=iDM47k6c3vahaWhwxpbkdEOshbmX-Zl5x669VONjS2I,23
|
|
132
132
|
jaclang/langserve/tests/defaults.py,sha256=8UWHuCHY-WatPcWFhyX9-4KLuJgODTlLNj0wNnKomIM,7608
|
|
@@ -147,11 +147,11 @@ jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py,sha256=TxDpWUd-8AGJwdRQN_iiCXY
|
|
|
147
147
|
jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py,sha256=NGHeFQawZcjoLUcgDmY3bF7BqZR83g7TmdKyzCmRaKM,2836
|
|
148
148
|
jaclang/langserve/tests/pylsp_jsonrpc/streams.py,sha256=R80_FvICIkrbdGmNtlemWYaxrr7-XldPgLaASnyv0W8,3332
|
|
149
149
|
jaclang/langserve/tests/session.py,sha256=3pIRoQjZnsnUWIYnO2SpK7c1PAiHMCFrrStNK2tawRM,9572
|
|
150
|
-
jaclang/langserve/tests/test_server.py,sha256=
|
|
150
|
+
jaclang/langserve/tests/test_server.py,sha256=zKxPkEdjowpfyCepzBzI7fkVUJCjEJIgBI4l1QVv1vw,12156
|
|
151
151
|
jaclang/langserve/utils.py,sha256=gmN_2tdtavccNxNMjbCLdbde0pF_GDMB1aGUK27JqfE,19133
|
|
152
152
|
jaclang/plugin/__init__.py,sha256=5t2krHKt_44PrCTGojzxEimxpNHYVQcn89jAiCSXE_k,165
|
|
153
153
|
jaclang/plugin/builtin.py,sha256=MEMPUnj_rlwcCNmUkfH5S8iazMnQ6fpp6tls4fh5z7k,1188
|
|
154
|
-
jaclang/plugin/default.py,sha256=
|
|
154
|
+
jaclang/plugin/default.py,sha256=1jrpQ-irbFrh38WX9_q2jHtgdFruIzryCfmD6mwkgV4,23761
|
|
155
155
|
jaclang/plugin/feature.py,sha256=HJQjdUKPy0v1ypga4dj3KfIQDoc_TWo9qCwqHykgxbU,9802
|
|
156
156
|
jaclang/plugin/spec.py,sha256=ov7iTMHL93VqM_m_n1LLwrQQFCmTbqDbocE_emk8-fI,8903
|
|
157
157
|
jaclang/plugin/tests/__init__.py,sha256=rn_tNG8jCHWwBc_rx4yFkGc4N1GISb7aPuTFVRTvrTk,38
|
|
@@ -170,6 +170,7 @@ jaclang/tests/fixtures/aott_raise.jac,sha256=ufKMVC21NJw3zSSJ_8uCoG_IR9pJf8WfGp8
|
|
|
170
170
|
jaclang/tests/fixtures/arithmetic_bug.jac,sha256=iiO3ZwTi7R1U6-flV4tGbxDHXsw8GnaLEzVNGTPdMUA,135
|
|
171
171
|
jaclang/tests/fixtures/assign_compr.jac,sha256=rnoujdtpjNbem4IdtBfxPahSUXl-gxNv4JFNEuUs5iM,286
|
|
172
172
|
jaclang/tests/fixtures/assign_compr_dup.jac,sha256=rnoujdtpjNbem4IdtBfxPahSUXl-gxNv4JFNEuUs5iM,286
|
|
173
|
+
jaclang/tests/fixtures/blankwithentry.jac,sha256=lnMDDKyKnldsUIx1AVCIHt47KY3gR2CZYhox8663sLM,53
|
|
173
174
|
jaclang/tests/fixtures/builtin_dotgen.jac,sha256=HsAHVyN7HxhbICqe4GXV51cJlMe68WMleMmx9KeR8fU,1759
|
|
174
175
|
jaclang/tests/fixtures/byllmissue.jac,sha256=A7V7nk0oqt0uR246sJ8DKBxMERn1cvHvE98pxJRVoRU,152
|
|
175
176
|
jaclang/tests/fixtures/chandra_bugs.jac,sha256=vcBjZ4P7S1PPUs-_0Stt779pus95RJTMs1x_-m0w7yY,282
|
|
@@ -244,8 +245,8 @@ jaclang/tests/fixtures/walker_override.jac,sha256=Ok58ZAgxuV6aECNxYrjbbyAWSiqIbn
|
|
|
244
245
|
jaclang/tests/fixtures/with_context.jac,sha256=cDA_4YWe5UVmQRgcpktzkZ_zsswQpV_T2Otf_rFnPy8,466
|
|
245
246
|
jaclang/tests/test_bugs.py,sha256=tBPsIlSPqZDIz4QaScNRT-WdGIdJ0uU-aRBWq1XUZ6o,555
|
|
246
247
|
jaclang/tests/test_cli.py,sha256=ytSFNsKu_9FillP7AUMLBT5A6Ms9TGcPWrGrQFq7IV0,8656
|
|
247
|
-
jaclang/tests/test_language.py,sha256=
|
|
248
|
-
jaclang/tests/test_man_code.py,sha256=
|
|
248
|
+
jaclang/tests/test_language.py,sha256=jBvfhpfapUB1OoY9mth8GXvxJVVei3P-jN8bvLfFtFA,34826
|
|
249
|
+
jaclang/tests/test_man_code.py,sha256=ZdNarlZVfT_-8Jv3FjLplHw76tsvkCuISyfX3M4qxPg,5027
|
|
249
250
|
jaclang/tests/test_reference.py,sha256=FoZQS-U9teiag8mAmX5X6ak4fuCOv00mvOyqJ44Zkc8,3379
|
|
250
251
|
jaclang/tests/test_settings.py,sha256=TIX5uiu8H9IpZN2__uFiclcdCpBpPpcAwtlEHyFC4kk,1999
|
|
251
252
|
jaclang/utils/__init__.py,sha256=86LQ_LDyWV-JFkYBpeVHpLaVxkqwFDP60XpWXOFZIQk,46
|
|
@@ -1478,7 +1479,7 @@ jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA,sha256=BeUQIa8cnYbrjW
|
|
|
1478
1479
|
jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD,sha256=XS4fBVrPI7kaNZ56Ggl2RGa76jySWLqTzcrUpZIQTVM,418
|
|
1479
1480
|
jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
1480
1481
|
jaclang/vendor/typing_extensions.py,sha256=gwekpyG9DVG3lxWKX4ni8u7nk3We5slG98mA9F3DJQw,134451
|
|
1481
|
-
jaclang-0.7.
|
|
1482
|
-
jaclang-0.7.
|
|
1483
|
-
jaclang-0.7.
|
|
1484
|
-
jaclang-0.7.
|
|
1482
|
+
jaclang-0.7.14.dist-info/METADATA,sha256=A77FFse_yDJYy5F_V7yNQIH5bs94ztGxToiPpg-4Eac,4822
|
|
1483
|
+
jaclang-0.7.14.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
1484
|
+
jaclang-0.7.14.dist-info/entry_points.txt,sha256=8sMi4Tvi9f8tQDN2QAXsSA2icO27zQ4GgEdph6bNEZM,49
|
|
1485
|
+
jaclang-0.7.14.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|