jaclang 0.8.6__py3-none-any.whl → 0.8.7__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/cli/cli.md +3 -3
- jaclang/cli/cli.py +25 -11
- jaclang/cli/cmdreg.py +1 -140
- jaclang/compiler/passes/main/pyast_gen_pass.py +13 -3
- jaclang/compiler/passes/main/pyast_load_pass.py +14 -20
- jaclang/compiler/passes/main/tests/fixtures/checker_binary_op.jac +21 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_call_expr_class.jac +12 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_cyclic_symbol.jac +4 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_expr_call.jac +9 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_import_missing_module.jac +13 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_magic_call.jac +17 -0
- jaclang/compiler/passes/main/tests/fixtures/checker_mod_path.jac +8 -0
- jaclang/compiler/passes/main/tests/test_checker_pass.py +74 -0
- jaclang/compiler/passes/main/type_checker_pass.py +24 -5
- jaclang/compiler/type_system/operations.py +104 -0
- jaclang/compiler/type_system/type_evaluator.py +141 -2
- jaclang/langserve/engine.jac +135 -91
- jaclang/langserve/server.jac +21 -14
- jaclang/langserve/tests/server_test/test_lang_serve.py +2 -5
- jaclang/langserve/tests/test_dev_server.py +1 -1
- jaclang/langserve/tests/test_server.py +9 -2
- jaclang/langserve/utils.jac +44 -48
- jaclang/tests/fixtures/jac_run_py_bugs.py +18 -0
- jaclang/tests/fixtures/jac_run_py_import.py +13 -0
- jaclang/tests/fixtures/lambda_arg_annotation.jac +15 -0
- jaclang/tests/fixtures/lambda_self.jac +18 -0
- jaclang/tests/test_cli.py +66 -17
- jaclang/utils/module_resolver.py +1 -1
- {jaclang-0.8.6.dist-info → jaclang-0.8.7.dist-info}/METADATA +3 -2
- {jaclang-0.8.6.dist-info → jaclang-0.8.7.dist-info}/RECORD +32 -20
- {jaclang-0.8.6.dist-info → jaclang-0.8.7.dist-info}/WHEEL +1 -1
- {jaclang-0.8.6.dist-info → jaclang-0.8.7.dist-info}/entry_points.txt +0 -0
jaclang/langserve/utils.jac
CHANGED
|
@@ -31,18 +31,18 @@ glob T = TypeVar('T', bound=Callable[(P, Coroutine[(Any, Any, Any)])]);
|
|
|
31
31
|
"""Return diagnostics."""
|
|
32
32
|
def gen_diagnostics(
|
|
33
33
|
from_path: str,
|
|
34
|
-
errors:
|
|
35
|
-
warnings:
|
|
36
|
-
) ->
|
|
34
|
+
errors: list[Alert],
|
|
35
|
+
warnings: list[Alert]
|
|
36
|
+
) -> list[lspt.Diagnostic] {
|
|
37
37
|
return [ lspt.Diagnostic(
|
|
38
38
|
range=create_range(error.loc),
|
|
39
39
|
message=error.msg,
|
|
40
40
|
severity=lspt.DiagnosticSeverity.Error
|
|
41
|
-
) for error in errors if error.loc.mod_path ==
|
|
41
|
+
) for error in errors if error.loc.mod_path == from_path ] + [ lspt.Diagnostic(
|
|
42
42
|
range=create_range(warning.loc),
|
|
43
43
|
message=warning.msg,
|
|
44
44
|
severity=lspt.DiagnosticSeverity.Warning
|
|
45
|
-
) for warning in warnings if warning.loc.mod_path ==
|
|
45
|
+
) for warning in warnings if warning.loc.mod_path == from_path ];
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
|
|
@@ -75,7 +75,7 @@ def debounce(<>wait: float) -> Callable[[T], Callable[(..., Awaitable[None])]] {
|
|
|
75
75
|
|
|
76
76
|
|
|
77
77
|
"""Iterate through symbol table."""
|
|
78
|
-
def sym_tab_list(sym_tab: UniScopeNode, file_path: str) ->
|
|
78
|
+
def sym_tab_list(sym_tab: UniScopeNode, file_path: str) -> list[UniScopeNode] {
|
|
79
79
|
sym_tabs = [sym_tab]
|
|
80
80
|
if not (isinstance(sym_tab, uni.Module) and sym_tab.loc.mod_path != file_path )
|
|
81
81
|
else []
|
|
@@ -135,7 +135,7 @@ def position_within_node(<>node: uni.UniNode, line: int, character: int) -> bool
|
|
|
135
135
|
|
|
136
136
|
|
|
137
137
|
"""Find index."""
|
|
138
|
-
def find_index(sem_tokens:
|
|
138
|
+
def find_index(sem_tokens: list[int], line: int, char: int) -> Optional[int] {
|
|
139
139
|
index = None;
|
|
140
140
|
token_start_list = [ get_token_start(i, sem_tokens) for i in range(0, len(sem_tokens), 5) ];
|
|
141
141
|
for (i, j) in enumerate(token_start_list) {
|
|
@@ -148,7 +148,7 @@ def find_index(sem_tokens: <>list[int], line: int, char: int) -> Optional[int] {
|
|
|
148
148
|
|
|
149
149
|
|
|
150
150
|
"""Recursively collect symbols from the AST."""
|
|
151
|
-
def get_symbols_for_outline(<>node: UniScopeNode) ->
|
|
151
|
+
def get_symbols_for_outline(<>node: UniScopeNode) -> list[lspt.DocumentSymbol] {
|
|
152
152
|
symbols = [];
|
|
153
153
|
for (key, item) in <>node.names_in_scope.items() {
|
|
154
154
|
if key in dir(builtins)
|
|
@@ -234,34 +234,30 @@ def kind_map(sub_tab: uni.UniNode) -> lspt.SymbolKind {
|
|
|
234
234
|
|
|
235
235
|
"""Map the symbol node to an lspt.CompletionItemKind."""
|
|
236
236
|
def label_map(sub_tab: SymbolType) -> lspt.CompletionItemKind {
|
|
237
|
-
return
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
;
|
|
237
|
+
return (
|
|
238
|
+
lspt.CompletionItemKind.Function
|
|
239
|
+
if sub_tab in [SymbolType.ABILITY, SymbolType.TEST]
|
|
240
|
+
else lspt.CompletionItemKind.Class
|
|
241
|
+
if sub_tab in [
|
|
242
|
+
SymbolType.OBJECT_ARCH,
|
|
243
|
+
SymbolType.NODE_ARCH,
|
|
244
|
+
SymbolType.EDGE_ARCH,
|
|
245
|
+
SymbolType.WALKER_ARCH
|
|
246
|
+
]
|
|
247
|
+
else lspt.CompletionItemKind.Module
|
|
248
|
+
if sub_tab == SymbolType.MODULE
|
|
249
|
+
else lspt.CompletionItemKind.Enum
|
|
250
|
+
if sub_tab == SymbolType.ENUM_ARCH
|
|
251
|
+
else lspt.CompletionItemKind.Field
|
|
252
|
+
if sub_tab == SymbolType.HAS_VAR
|
|
253
|
+
else lspt.CompletionItemKind.Method
|
|
254
|
+
if sub_tab == SymbolType.METHOD
|
|
255
|
+
else lspt.CompletionItemKind.EnumMember
|
|
256
|
+
if sub_tab == SymbolType.ENUM_MEMBER
|
|
257
|
+
else lspt.CompletionItemKind.Interface
|
|
258
|
+
if sub_tab == SymbolType.IMPL
|
|
259
|
+
else lspt.CompletionItemKind.Variable
|
|
260
|
+
);
|
|
265
261
|
}
|
|
266
262
|
|
|
267
263
|
|
|
@@ -269,9 +265,9 @@ def label_map(sub_tab: SymbolType) -> lspt.CompletionItemKind {
|
|
|
269
265
|
def collect_all_symbols_in_scope(
|
|
270
266
|
sym_tab: UniScopeNode,
|
|
271
267
|
up_tree: bool = True
|
|
272
|
-
) ->
|
|
268
|
+
) -> list[lspt.CompletionItem] {
|
|
273
269
|
symbols = [];
|
|
274
|
-
visited =
|
|
270
|
+
visited = set();
|
|
275
271
|
current_tab : Optional[UniScopeNode] = sym_tab;
|
|
276
272
|
while current_tab is not None and current_tab not in visited {
|
|
277
273
|
visited.add(current_tab);
|
|
@@ -295,8 +291,8 @@ def collect_all_symbols_in_scope(
|
|
|
295
291
|
|
|
296
292
|
|
|
297
293
|
"""Return all child tab's as completion items."""
|
|
298
|
-
def collect_child_tabs(sym_tab: UniScopeNode) ->
|
|
299
|
-
symbols :
|
|
294
|
+
def collect_child_tabs(sym_tab: UniScopeNode) -> list[lspt.CompletionItem] {
|
|
295
|
+
symbols : list[lspt.CompletionItem] = [];
|
|
300
296
|
for tab in sym_tab.kid_scope {
|
|
301
297
|
if tab.scope_name not in [ i.label for i in symbols ] {
|
|
302
298
|
symbols.append(
|
|
@@ -312,7 +308,7 @@ def collect_child_tabs(sym_tab: UniScopeNode) -> <>list[lspt.CompletionItem] {
|
|
|
312
308
|
|
|
313
309
|
|
|
314
310
|
"""Parse text and return a list of symbols."""
|
|
315
|
-
def parse_symbol_path(text: str, dot_position: int) ->
|
|
311
|
+
def parse_symbol_path(text: str, dot_position: int) -> list[str] {
|
|
316
312
|
text = text[ : dot_position ][ : -1 ].strip();
|
|
317
313
|
valid_character_pattern = re.compile('[a-zA-Z0-9_]');
|
|
318
314
|
reversed_text = text[ : : -1 ];
|
|
@@ -342,8 +338,8 @@ def parse_symbol_path(text: str, dot_position: int) -> <>list[str] {
|
|
|
342
338
|
"""Return the starting position of a token."""
|
|
343
339
|
def get_token_start(
|
|
344
340
|
token_index: (int | None),
|
|
345
|
-
sem_tokens:
|
|
346
|
-
) ->
|
|
341
|
+
sem_tokens: list[int]
|
|
342
|
+
) -> tuple[int, int, int] {
|
|
347
343
|
if token_index is None or token_index >= len(sem_tokens) {
|
|
348
344
|
return (0, 0, 0);
|
|
349
345
|
}
|
|
@@ -382,8 +378,8 @@ def find_surrounding_tokens(
|
|
|
382
378
|
change_start_char: int,
|
|
383
379
|
change_end_line: int,
|
|
384
380
|
change_end_char: int,
|
|
385
|
-
sem_tokens:
|
|
386
|
-
) ->
|
|
381
|
+
sem_tokens: list[int]
|
|
382
|
+
) -> tuple[(int | None), (int | None), bool] {
|
|
387
383
|
prev_token_index = None;
|
|
388
384
|
next_token_index = None;
|
|
389
385
|
inside_tok = False;
|
|
@@ -422,8 +418,8 @@ def find_surrounding_tokens(
|
|
|
422
418
|
"""Get the line of code, and the first non-space character index."""
|
|
423
419
|
def get_line_of_code(
|
|
424
420
|
line_number: int,
|
|
425
|
-
lines:
|
|
426
|
-
) -> Optional[
|
|
421
|
+
lines: list[str]
|
|
422
|
+
) -> Optional[tuple[(str, int)]] {
|
|
427
423
|
if 0 <= line_number < len(lines) {
|
|
428
424
|
line = lines[line_number].rstrip('\n');
|
|
429
425
|
first_non_space = (len(line) - len(line.lstrip()));
|
|
@@ -439,7 +435,7 @@ def get_line_of_code(
|
|
|
439
435
|
|
|
440
436
|
"""Add a new text edit to the changes dictionary if it is unique."""
|
|
441
437
|
def add_unique_text_edit(
|
|
442
|
-
changes:
|
|
438
|
+
changes: dict[(str, list[lspt.TextEdit])],
|
|
443
439
|
key: str,
|
|
444
440
|
new_edit: lspt.TextEdit
|
|
445
441
|
) -> None {
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from jaclang.tests.fixtures.jac_run_py_import import MyModule
|
|
2
|
+
|
|
3
|
+
class SimpleClass:
|
|
4
|
+
def __init__(self, name: str, age: int) -> None:
|
|
5
|
+
self.name = name
|
|
6
|
+
self.age = age
|
|
7
|
+
|
|
8
|
+
def greet(self):
|
|
9
|
+
return f"Hello, my name is {self.name} and I am {self.age} years old."
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
# Create an object of the class
|
|
13
|
+
person = SimpleClass("Alice", 30)
|
|
14
|
+
|
|
15
|
+
# Run the greet method
|
|
16
|
+
print(person.greet())
|
|
17
|
+
|
|
18
|
+
MyModule.init()
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
walker Tourist {
|
|
4
|
+
can travel with City entry {
|
|
5
|
+
|
|
6
|
+
def foo(a:int){}
|
|
7
|
+
x = lambda a: int, b: int : b + a;
|
|
8
|
+
y = lambda : 567;
|
|
9
|
+
sorted_users = sorted(
|
|
10
|
+
users,
|
|
11
|
+
key=lambda x: dict: x["email"], reverse=True
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
def visit_city(c:City){
|
|
16
|
+
print("Visiting", c.name);
|
|
17
|
+
}
|
|
18
|
+
}
|
jaclang/tests/test_cli.py
CHANGED
|
@@ -65,7 +65,9 @@ class JacCliTests(TestCase):
|
|
|
65
65
|
self.assertIn("Hello Peter Peter", stdout_value)
|
|
66
66
|
self.assertIn("Peter squared is Peter Peter", stdout_value)
|
|
67
67
|
self.assertIn("PETER! wrong poem", stdout_value)
|
|
68
|
-
self.assertIn(
|
|
68
|
+
self.assertIn(
|
|
69
|
+
"Hello Peter , yoo mother is Mary. Myself, I am Peter.", stdout_value
|
|
70
|
+
)
|
|
69
71
|
self.assertIn("Left aligned: Apple | Price: 1.23", stdout_value)
|
|
70
72
|
self.assertIn("name = Peter 🤔", stdout_value)
|
|
71
73
|
|
|
@@ -205,19 +207,6 @@ class JacCliTests(TestCase):
|
|
|
205
207
|
self.assertIn("Sub objects.", stdout_value)
|
|
206
208
|
self.assertGreater(stdout_value.count("def exit_"), 10)
|
|
207
209
|
|
|
208
|
-
def test_jac_cmd_line(self) -> None:
|
|
209
|
-
"""Basic test for pass."""
|
|
210
|
-
process = subprocess.Popen(
|
|
211
|
-
["jac"],
|
|
212
|
-
stdin=subprocess.PIPE,
|
|
213
|
-
stdout=subprocess.PIPE,
|
|
214
|
-
stderr=subprocess.PIPE,
|
|
215
|
-
text=True,
|
|
216
|
-
)
|
|
217
|
-
stdout_value, _ = process.communicate(input="exit\n")
|
|
218
|
-
self.assertEqual(process.returncode, 0, "Process did not exit successfully")
|
|
219
|
-
self.assertIn("Welcome to the Jac CLI!", stdout_value)
|
|
220
|
-
|
|
221
210
|
def test_ast_print(self) -> None:
|
|
222
211
|
"""Testing for print AstTool."""
|
|
223
212
|
captured_output = io.StringIO()
|
|
@@ -270,7 +259,7 @@ class JacCliTests(TestCase):
|
|
|
270
259
|
'[label="MultiString" shape="oval" style="filled" fillcolor="#fccca4"]',
|
|
271
260
|
stdout_value,
|
|
272
261
|
)
|
|
273
|
-
|
|
262
|
+
|
|
274
263
|
def test_cfg_printgraph(self) -> None:
|
|
275
264
|
"""Testing for print CFG."""
|
|
276
265
|
captured_output = io.StringIO()
|
|
@@ -282,8 +271,8 @@ class JacCliTests(TestCase):
|
|
|
282
271
|
stdout_value = captured_output.getvalue()
|
|
283
272
|
correct_graph = (
|
|
284
273
|
"digraph G {\n"
|
|
285
|
-
' 0 [label="BB0\\n\\nprint ( \\"im still here\\" )
|
|
286
|
-
' 1 [label="BB1\\n\\"Hello World!\\" |> print
|
|
274
|
+
' 0 [label="BB0\\n\\nprint ( \\"im still here\\" ) ;", shape=box];\n'
|
|
275
|
+
' 1 [label="BB1\\n\\"Hello World!\\" |> print ;", shape=box];\n'
|
|
287
276
|
"}\n\n"
|
|
288
277
|
)
|
|
289
278
|
|
|
@@ -415,6 +404,34 @@ class JacCliTests(TestCase):
|
|
|
415
404
|
self.assertIn("class MyClass {", stdout_value)
|
|
416
405
|
self.assertIn('"""Print function."""', stdout_value)
|
|
417
406
|
|
|
407
|
+
def test_lambda_arg_annotation(self) -> None:
|
|
408
|
+
"""Test for lambda argument annotation."""
|
|
409
|
+
captured_output = io.StringIO()
|
|
410
|
+
sys.stdout = captured_output
|
|
411
|
+
cli.jac2py(
|
|
412
|
+
f"{self.fixture_abs_path('../../tests/fixtures/lambda_arg_annotation.jac')}"
|
|
413
|
+
)
|
|
414
|
+
sys.stdout = sys.__stdout__
|
|
415
|
+
stdout_value = captured_output.getvalue()
|
|
416
|
+
self.assertIn("x = lambda a, b: b + a", stdout_value)
|
|
417
|
+
self.assertIn("y = lambda: 567", stdout_value)
|
|
418
|
+
self.assertIn("f = lambda x: 'even' if x % 2 == 0 else 'odd'", stdout_value)
|
|
419
|
+
|
|
420
|
+
def test_lambda_self(self) -> None:
|
|
421
|
+
"""Test for lambda argument annotation."""
|
|
422
|
+
captured_output = io.StringIO()
|
|
423
|
+
sys.stdout = captured_output
|
|
424
|
+
cli.jac2py(f"{self.fixture_abs_path('../../tests/fixtures/lambda_self.jac')}")
|
|
425
|
+
sys.stdout = sys.__stdout__
|
|
426
|
+
stdout_value = captured_output.getvalue()
|
|
427
|
+
self.assertIn("def travel(self, here: City) -> None:", stdout_value)
|
|
428
|
+
self.assertIn("def foo(a: int) -> None:", stdout_value)
|
|
429
|
+
self.assertIn("x = lambda a, b: b + a", stdout_value)
|
|
430
|
+
self.assertIn("def visit_city(self, c: City) -> None:", stdout_value)
|
|
431
|
+
self.assertIn(
|
|
432
|
+
"sorted(users, key=lambda x: x['email'], reverse=True)", stdout_value
|
|
433
|
+
)
|
|
434
|
+
|
|
418
435
|
def test_caching_issue(self) -> None:
|
|
419
436
|
"""Test for Caching Issue."""
|
|
420
437
|
test_file = self.fixture_abs_path("test_caching_issue.jac")
|
|
@@ -560,3 +577,35 @@ class JacCliTests(TestCase):
|
|
|
560
577
|
stdout, stderr = process.communicate()
|
|
561
578
|
self.assertIn("Hello, World!", stdout)
|
|
562
579
|
self.assertIn("Sum: 8", stdout)
|
|
580
|
+
|
|
581
|
+
def test_jac_run_py_bugs(self) -> None:
|
|
582
|
+
"""Test jac run python files."""
|
|
583
|
+
process = subprocess.Popen(
|
|
584
|
+
[
|
|
585
|
+
"jac",
|
|
586
|
+
"run",
|
|
587
|
+
self.fixture_abs_path("jac_run_py_bugs.py"),
|
|
588
|
+
],
|
|
589
|
+
stdin=subprocess.PIPE,
|
|
590
|
+
stdout=subprocess.PIPE,
|
|
591
|
+
stderr=subprocess.PIPE,
|
|
592
|
+
text=True,
|
|
593
|
+
)
|
|
594
|
+
stdout, stderr = process.communicate()
|
|
595
|
+
self.assertIn("Hello, my name is Alice and I am 30 years old.", stdout)
|
|
596
|
+
self.assertIn("MyModule initialized!", stdout)
|
|
597
|
+
|
|
598
|
+
def test_cli_defaults_to_run_with_file(self) -> None:
|
|
599
|
+
"""jac myfile.jac should behave like jac run myfile.jac."""
|
|
600
|
+
process = subprocess.Popen(
|
|
601
|
+
[
|
|
602
|
+
"jac",
|
|
603
|
+
self.fixture_abs_path("hello.jac"),
|
|
604
|
+
],
|
|
605
|
+
stdin=subprocess.PIPE,
|
|
606
|
+
stdout=subprocess.PIPE,
|
|
607
|
+
stderr=subprocess.PIPE,
|
|
608
|
+
text=True,
|
|
609
|
+
)
|
|
610
|
+
stdout, stderr = process.communicate()
|
|
611
|
+
self.assertIn("Hello World!", stdout)
|
jaclang/utils/module_resolver.py
CHANGED
|
@@ -52,7 +52,7 @@ def resolve_module(target: str, base_path: str) -> Tuple[str, str]:
|
|
|
52
52
|
level += 1
|
|
53
53
|
actual_parts = parts[level:]
|
|
54
54
|
|
|
55
|
-
for sp in
|
|
55
|
+
for sp in get_jac_search_paths(base_path):
|
|
56
56
|
res = _candidate_from(sp, actual_parts)
|
|
57
57
|
if res:
|
|
58
58
|
return res
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: jaclang
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.7
|
|
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
|
License: MIT
|
|
6
6
|
Keywords: jac,jaclang,jaseci,python,programming-language,machine-learning,artificial-intelligence
|
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
18
|
Provides-Extra: all
|
|
18
19
|
Provides-Extra: cloud
|
|
19
20
|
Provides-Extra: llm
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
jaclang/__init__.py,sha256=Na5dttNt9pd93nNzi7xej7S_FAZ3_CTDZUv7tWEGw_c,490
|
|
2
2
|
jaclang/cli/.gitignore,sha256=NYuons2lzuCpCdefMnztZxeSMgtPVJF6R6zSgVDOV20,27
|
|
3
3
|
jaclang/cli/__init__.py,sha256=7aaPgYddIAHBvkdv36ngbfwsimMnfGaTDcaHYMg_vf4,23
|
|
4
|
-
jaclang/cli/cli.md,sha256=
|
|
5
|
-
jaclang/cli/cli.py,sha256=
|
|
6
|
-
jaclang/cli/cmdreg.py,sha256=
|
|
4
|
+
jaclang/cli/cli.md,sha256=l12Ev7jr29DFimpGAAoS9NLCLQlMQmM38-ogGFEdVSw,6072
|
|
5
|
+
jaclang/cli/cli.py,sha256=rDZ6cGqvfgEAcSPWGHng7D8Bo11X0taiObQUMg_jRnQ,22920
|
|
6
|
+
jaclang/cli/cmdreg.py,sha256=cRvtESjnwstjYRVD9u5PuTzxO9AZVsa3zSc6Qr1dSMs,8883
|
|
7
7
|
jaclang/compiler/__init__.py,sha256=6huVTxA1YAjWViq_7vrbKNYi_Q9DMTMkmURlaetyooA,2526
|
|
8
8
|
jaclang/compiler/codeinfo.py,sha256=ZOSAp1m3dBA8UF-YUz6H6l3wDs1EcuY4xWp13XmgHCo,2332
|
|
9
9
|
jaclang/compiler/constant.py,sha256=tE92AuqJkP6pwHD0zyL3N1gzmz4K-Xtl74Gad719jMk,8192
|
|
@@ -20,8 +20,8 @@ jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=AYhqi5ZFzUQyrJVFAPa9H
|
|
|
20
20
|
jaclang/compiler/passes/main/def_use_pass.py,sha256=y35cYo0bmVUUNZNnabvCZ9OqGwZTBPpRjlWV3GTH7VY,4888
|
|
21
21
|
jaclang/compiler/passes/main/import_pass.py,sha256=nMoFbNIFzZ2sThnvapVvw6IZtoxeycuK7XaDx5AB3Uk,4696
|
|
22
22
|
jaclang/compiler/passes/main/inheritance_pass.py,sha256=-qD8NeqUqmdskBBkOEm4L81UPucbP_BL9sEqOp7vYd4,5530
|
|
23
|
-
jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=
|
|
24
|
-
jaclang/compiler/passes/main/pyast_load_pass.py,sha256=
|
|
23
|
+
jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=dH3KSChFXavjd_rG-ndniaRYyQb7iWcJNR-mNMwB0qo,110958
|
|
24
|
+
jaclang/compiler/passes/main/pyast_load_pass.py,sha256=gwESgmfd9SYafjQrz6U042pagq9QY46dIN0yCzRGhZw,85386
|
|
25
25
|
jaclang/compiler/passes/main/pybc_gen_pass.py,sha256=KUQ31396CBb_ib85rYL_QhvHY75ZxyJm8qSps8KYSyE,1876
|
|
26
26
|
jaclang/compiler/passes/main/pyjac_ast_link_pass.py,sha256=_4l6CLZ_UHDSD0aJyyGesAvY0BSgWtc4F7Deikqgbko,5584
|
|
27
27
|
jaclang/compiler/passes/main/sem_def_match_pass.py,sha256=txRK3RAtleQsR9sEVIxaWLqy_pTPJEhW3eE2wYKRBSc,2755
|
|
@@ -48,8 +48,15 @@ jaclang/compiler/passes/main/tests/fixtures/cfg_gen.jac,sha256=7dAM-0Lm60dnJXnpx
|
|
|
48
48
|
jaclang/compiler/passes/main/tests/fixtures/cfg_has_var.jac,sha256=WzaGKic1i66xxanDWHTLVb16WVyddv39VpgbtwrQdFg,233
|
|
49
49
|
jaclang/compiler/passes/main/tests/fixtures/cfg_if_no_else.jac,sha256=f0nIfUHs2adV_GL17IjcGTkm-WIIJFZHDCnzksXbS1U,180
|
|
50
50
|
jaclang/compiler/passes/main/tests/fixtures/cfg_return.jac,sha256=gGG8RgpR3qoRzS2RwoFndajN1lLQMqavpYPovS5QEBs,137
|
|
51
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_binary_op.jac,sha256=4hS8q6UlavBdgl1Ut81yd25Z7jxKCZMhRRh7q3Qg3AQ,285
|
|
52
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_call_expr_class.jac,sha256=L9SOnDYfV4B8tleSWLV3aSHS2VGGySTe0JZDhEfK8HI,189
|
|
53
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_cyclic_symbol.jac,sha256=GF5Ezug1A5-tr5emjJTojIW5d8_A6peNb2q9hWs-bXE,27
|
|
54
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_expr_call.jac,sha256=FDFptRXbzgOYv9q-mDNmFXnetAbknUJi-zEAiPzKZpk,114
|
|
55
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_import_missing_module.jac,sha256=agWXZZ3ZidLeVkcWkv_TA0ktHiSS13rDLFo3HZnbJXk,348
|
|
51
56
|
jaclang/compiler/passes/main/tests/fixtures/checker_imported.jac,sha256=6wjD1NQMbsm0vKf_qCpsr1csqY5a52P8I2je0rk0Qaw,26
|
|
52
57
|
jaclang/compiler/passes/main/tests/fixtures/checker_importer.jac,sha256=Z6DjHVQDnyAkUDOtZiU-GpHO2eUjXY9_aor5ySLG-3U,121
|
|
58
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_magic_call.jac,sha256=wrR9zviHd8tyIFjPZo51vv9xOcq8Xvzcpy11DXKL1Yo,199
|
|
59
|
+
jaclang/compiler/passes/main/tests/fixtures/checker_mod_path.jac,sha256=Mp-tTqOX6YHSXIE2YiR2gVMWGiB2oYNxi_wL8zK-4FY,93
|
|
53
60
|
jaclang/compiler/passes/main/tests/fixtures/circular_import.jac,sha256=e6zoQIrSRyToU_rr9be_OK-TGAQzuupKDYfwaS4LrJA,125
|
|
54
61
|
jaclang/compiler/passes/main/tests/fixtures/codegen_sem.jac,sha256=2K-sPnnuKWvUPvutYhQ6I2voxEgI4xVvl0xf3nZvIRA,1451
|
|
55
62
|
jaclang/compiler/passes/main/tests/fixtures/codegentext.jac,sha256=U9xyk8hDlWM3jUaozQXOD61f5p9SI-_QfDxA68DUYds,562
|
|
@@ -97,7 +104,7 @@ jaclang/compiler/passes/main/tests/fixtures/type_annotation_assignment.jac,sha25
|
|
|
97
104
|
jaclang/compiler/passes/main/tests/fixtures/type_info.jac,sha256=Gbatf5_V_2uFVF0l8ICbW8t7N7FKCL-1sE9CbEogT4A,660
|
|
98
105
|
jaclang/compiler/passes/main/tests/test_binder_pass.py,sha256=0IQPqIW_bwXgMBTIlnBG16wB3W6ExPYC5Z7kU7VzhZ8,3661
|
|
99
106
|
jaclang/compiler/passes/main/tests/test_cfg_build_pass.py,sha256=BFHuvKbh6mTjemzRRMIAlATar-UDWT8uj8iVro1qsVE,5068
|
|
100
|
-
jaclang/compiler/passes/main/tests/test_checker_pass.py,sha256=
|
|
107
|
+
jaclang/compiler/passes/main/tests/test_checker_pass.py,sha256=5EKPVMcU_bLKFtl4arRKm_uu01iSAGkDFgcQ4PmMh-E,6510
|
|
101
108
|
jaclang/compiler/passes/main/tests/test_decl_impl_match_pass.py,sha256=HCu5KO1N7kVonIM2N1A9BGRpfnJ4VDwR8TXJGTuKn3M,6039
|
|
102
109
|
jaclang/compiler/passes/main/tests/test_def_use_pass.py,sha256=CzIcSoUe_wk8gNW6NwF0w_MW9y-13VBLjHZKGYQ4aaE,771
|
|
103
110
|
jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=2FNsF6Z4zRUsxWOOcbH4fFyvc48FCAP_Yq8qpne04-U,4985
|
|
@@ -108,7 +115,7 @@ jaclang/compiler/passes/main/tests/test_sem_def_match_pass.py,sha256=WorjEiU9GdE
|
|
|
108
115
|
jaclang/compiler/passes/main/tests/test_sub_node_pass.py,sha256=zO2PNo5DgtD1Qud8rTEdr-gLUVcMUXpQCBY-8-nj684,771
|
|
109
116
|
jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py,sha256=7gtUU9vV3q5x2vFt_oHyrq9Q4q538rWcO8911NFtmK4,701
|
|
110
117
|
jaclang/compiler/passes/main/tests/test_sym_tab_link_pass.py,sha256=N7eNPyIEwiM_1yECaErncmRXTidp89fFRFGFTd_AgIo,1894
|
|
111
|
-
jaclang/compiler/passes/main/type_checker_pass.py,sha256=
|
|
118
|
+
jaclang/compiler/passes/main/type_checker_pass.py,sha256=oZs5u9lV3UGIDC3-Xx0OwDtRGRRJqmiDJXUlXHFOtOg,6076
|
|
112
119
|
jaclang/compiler/passes/tool/__init__.py,sha256=8M5dq_jq2TC4FCx4Aqr0-Djzf2i_w_1HtYSMLZ0CXNY,299
|
|
113
120
|
jaclang/compiler/passes/tool/doc_ir.py,sha256=okuoESF1qLbd3OHQxcfzHs35c6eilcIBp2sWNGg1m5w,5978
|
|
114
121
|
jaclang/compiler/passes/tool/doc_ir_gen_pass.py,sha256=6u8JnRfcnEp9s2_Rmt23IgGKwZsqiGvJsNrz0xGk-gw,60111
|
|
@@ -180,16 +187,17 @@ jaclang/compiler/tests/test_importer.py,sha256=BQOuHdrOL5dd0mWeXvX9Om07O9jN59KVG
|
|
|
180
187
|
jaclang/compiler/tests/test_parser.py,sha256=LeIVgyQGZmjH_dx8T6g4fOv3KWNzhtfwKn9C3WVdBCM,5888
|
|
181
188
|
jaclang/compiler/tests/test_sr_errors.py,sha256=iixRll6eP-sgBzR2Zl9Bb-Da5flb67lPaPDQb3IDn3k,1074
|
|
182
189
|
jaclang/compiler/type_system/__init__.py,sha256=6LO1vhnbQDxb-xPH_YdguQcwUOmtHgmasRNLOf5WV_o,29
|
|
183
|
-
jaclang/compiler/type_system/
|
|
190
|
+
jaclang/compiler/type_system/operations.py,sha256=W3Unvaikk-obYcahian0M9tJRBnW_AXU6lhrL4LZ3SA,4129
|
|
191
|
+
jaclang/compiler/type_system/type_evaluator.py,sha256=RJuS59wDEn0gNzBPV1LjfhdL71xrVJdF1UZq_GYUtko,24506
|
|
184
192
|
jaclang/compiler/type_system/type_utils.py,sha256=EPm3Kdan4cZJswhhjNH_ZjTzpo4fzeXGrWw79uSYa3M,1370
|
|
185
193
|
jaclang/compiler/type_system/types.py,sha256=H7mgdd2CNX9wOr9D_6R9sb96xVgr47IvLwA5aPzSKms,7536
|
|
186
194
|
jaclang/compiler/unitree.py,sha256=dzk14I52013ECF5FBjOKoezVKX5aQWZSBpMiMr5g7QM,154375
|
|
187
195
|
jaclang/langserve/__init__.jac,sha256=3IEtXWjsqOgLA-LPqCwARCw0Kd8B_NeLedALxGshfAE,33
|
|
188
196
|
jaclang/langserve/dev_engine.jac,sha256=hbuaNyhwNxER34OEQPPIdWS-5TQ-fih3nIjhrtnzJjg,24858
|
|
189
197
|
jaclang/langserve/dev_server.jac,sha256=GPbFqqx3nX9w63-AFLFrpRo6V_Gb3DDSi097AzygVAM,5800
|
|
190
|
-
jaclang/langserve/engine.jac,sha256=
|
|
198
|
+
jaclang/langserve/engine.jac,sha256=ZosFbYEZpTt_37eBOZOIzqOb1tDpxsSjwynNgvHhyrk,25999
|
|
191
199
|
jaclang/langserve/sem_manager.jac,sha256=Gg95nKvXz9RwUNPshgUPHlrdFI8EWzk7Hxxgvs0xwa4,13795
|
|
192
|
-
jaclang/langserve/server.jac,sha256=
|
|
200
|
+
jaclang/langserve/server.jac,sha256=OMp04cOsjf-7xAnSQ42Clb3CmPg8XpP2btZz-Snyrec,6192
|
|
193
201
|
jaclang/langserve/tests/__init__.py,sha256=iDM47k6c3vahaWhwxpbkdEOshbmX-Zl5x669VONjS2I,23
|
|
194
202
|
jaclang/langserve/tests/defaults.py,sha256=8UWHuCHY-WatPcWFhyX9-4KLuJgODTlLNj0wNnKomIM,7608
|
|
195
203
|
jaclang/langserve/tests/fixtures/base_module_structure.jac,sha256=bzt1F4kxAW2w0gWLA5PN30IxXN0_Cp7RssOVXxLIy8k,1440
|
|
@@ -211,13 +219,13 @@ jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py,sha256=TxDpWUd-8AGJwdRQN_iiCXY
|
|
|
211
219
|
jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py,sha256=NGHeFQawZcjoLUcgDmY3bF7BqZR83g7TmdKyzCmRaKM,2836
|
|
212
220
|
jaclang/langserve/tests/pylsp_jsonrpc/streams.py,sha256=R80_FvICIkrbdGmNtlemWYaxrr7-XldPgLaASnyv0W8,3332
|
|
213
221
|
jaclang/langserve/tests/server_test/code_test.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
214
|
-
jaclang/langserve/tests/server_test/test_lang_serve.py,sha256=
|
|
222
|
+
jaclang/langserve/tests/server_test/test_lang_serve.py,sha256=h_mCvwfmY8WJ43vOyGioCRR1gaGV8NuvAXR9umXm-Yw,11382
|
|
215
223
|
jaclang/langserve/tests/server_test/utils.py,sha256=ji0x497DmzrzxJEhMpVdnev1hMK9W9NnG4850ssNyEg,3707
|
|
216
224
|
jaclang/langserve/tests/session.jac,sha256=fS-aUHWb-r5ay3R4wJuSmoeoxgAufN4srvTjMP_OhII,10658
|
|
217
|
-
jaclang/langserve/tests/test_dev_server.py,sha256=
|
|
225
|
+
jaclang/langserve/tests/test_dev_server.py,sha256=zXjZy3BY40y5dQB2xJ2P3qPEP2B2BvrV4o1wqPm_Q38,2906
|
|
218
226
|
jaclang/langserve/tests/test_sem_tokens.py,sha256=3ew2yVQhA4PCTRC05sqcoZjb8JSB9hJQJC4TGgD8Ytk,9935
|
|
219
|
-
jaclang/langserve/tests/test_server.py,sha256=
|
|
220
|
-
jaclang/langserve/utils.jac,sha256=
|
|
227
|
+
jaclang/langserve/tests/test_server.py,sha256=U_jwWg07t_sRQr4XfzvjZ12AUhnFMe7k0UvOKtuNB_s,24839
|
|
228
|
+
jaclang/langserve/utils.jac,sha256=o4_O0mro1hwBZMrVbcuAzjSUqxWjh6_GGlmFxjHJiDY,13978
|
|
221
229
|
jaclang/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
222
230
|
jaclang/runtimelib/__init__.py,sha256=jDDYBCV82qPhmcDVk3NIvHbhng0ebSrXD3xrojg0-eo,34
|
|
223
231
|
jaclang/runtimelib/archetype.py,sha256=xZ_BRDSRags1p4v4wqm7GGDFraF2wXm4pLpFvHkjRG4,13029
|
|
@@ -328,12 +336,16 @@ jaclang/tests/fixtures/import_all_py.py,sha256=glXDPNxw7AJw4On_ltKoYLSnNz6xXHa1M
|
|
|
328
336
|
jaclang/tests/fixtures/index_slice.jac,sha256=cRc4_PuUo4g-nsP8Vg7sjqB1y5TVsj9ZMZCxs4Od7e8,628
|
|
329
337
|
jaclang/tests/fixtures/inherit_check.jac,sha256=1f5lTf1C8Jv8QmfV4tJPG0QjF8w64AhxDVZGABpYkAA,408
|
|
330
338
|
jaclang/tests/fixtures/jac_from_py.py,sha256=9dOpefwctMG8USPzjRHIGFRywVVUMsfr1xJfCqP1hp4,121
|
|
339
|
+
jaclang/tests/fixtures/jac_run_py_bugs.py,sha256=U28rsUuNqFUH_ONIXD9MM5iTNjNFq2R3Dw_R4mKEIjo,414
|
|
340
|
+
jaclang/tests/fixtures/jac_run_py_import.py,sha256=tSprxrYD4GCEcKoiLkqwSfXnSRZFDdjGj7V_FTv7nVg,173
|
|
331
341
|
jaclang/tests/fixtures/jacsamp.jac,sha256=EGykSqbVvlBA1UslWp4elMkDBJUevw4E3GLWLw03H6Y,96
|
|
332
342
|
jaclang/tests/fixtures/jactest_imported.jac,sha256=7mAJufFCrjY0UCz0KEwPEbOK-dHpWuvV3dT8lS3_Zi0,102
|
|
333
343
|
jaclang/tests/fixtures/jactest_main.jac,sha256=2-_WnbAzJo4yLRF7m9r-cCyB11PP_4j5UB445pdt8B8,408
|
|
334
344
|
jaclang/tests/fixtures/jp_importer.jac,sha256=72zS4caAoqWcOP2fFshEEb-NxUahL9aTkD-XabwncM8,409
|
|
335
345
|
jaclang/tests/fixtures/jp_importer_auto.jac,sha256=dZdq2ruCBs5POPC88vyhYzvnXfmhG3uyQtlFWBPMW9Q,410
|
|
336
346
|
jaclang/tests/fixtures/lambda.jac,sha256=VFF-bh-j4bLamY4RABDmTRY1_O_WPXfAD9swNaMz3rM,112
|
|
347
|
+
jaclang/tests/fixtures/lambda_arg_annotation.jac,sha256=01Cg7FWW2g8R_aqajqoUGhV8WjaWJ5Wq3RqMKv6LEyw,202
|
|
348
|
+
jaclang/tests/fixtures/lambda_self.jac,sha256=1Df_GAZHJAKYnnJymuL8nmo2riY9AMzsuZZveYPMj1o,344
|
|
337
349
|
jaclang/tests/fixtures/match_multi_ex.jac,sha256=05XB0B0yMWpA84pCvAnKnpXObpE5fcUedpQ8Rly9Qp0,205
|
|
338
350
|
jaclang/tests/fixtures/maxfail_run_test.jac,sha256=UMoJSwrmNL7mCI65P8XTKrsYgi7mFvwLS3Dd24BmR6k,160
|
|
339
351
|
jaclang/tests/fixtures/multi_dim_array_split.jac,sha256=xM34uJwKBbI1-Q8Z-dK2lNB7PWvQZUmdsNxMuDwUHKs,290
|
|
@@ -391,7 +403,7 @@ jaclang/tests/fixtures/while_else.jac,sha256=Ziej7zCqTc2K7Dy9uE9pzyMns4pWGAVzjRx
|
|
|
391
403
|
jaclang/tests/fixtures/with_context.jac,sha256=IitGo_vWRrJ--OU5I9n3LOf_oO8NH02G2D5qIDRkl04,466
|
|
392
404
|
jaclang/tests/foo/__init__.jac,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
393
405
|
jaclang/tests/test_bugs.py,sha256=w1_GJz1lMlsehriDtj1sq-gJlnvF5Kt0Dq1WKnl8By4,556
|
|
394
|
-
jaclang/tests/test_cli.py,sha256=
|
|
406
|
+
jaclang/tests/test_cli.py,sha256=wJQb_pO1sgNRjlWciqcuHjGplLHCAy5vD2tmmp9ZFqg,22761
|
|
395
407
|
jaclang/tests/test_language.py,sha256=iuCPno6OQaQ-PUGK7QhBuPRX6iameFWxL5aOOyZRHdM,61347
|
|
396
408
|
jaclang/tests/test_man_code.py,sha256=ouK8XUp2FaEPNu2P7AkZa6OGrow2rNNIcQMF2uhJOvg,5054
|
|
397
409
|
jaclang/tests/test_reference.py,sha256=p79l0O0PD4VHfKKKV2trlVSRRADlBbXKaOvEXi1X1Yk,3674
|
|
@@ -401,7 +413,7 @@ jaclang/utils/__init__.py,sha256=CB3oGfO8uIJsBig2PTQ89gtZB4zs1pIPZEYHa34oliY,203
|
|
|
401
413
|
jaclang/utils/helpers.py,sha256=fOObXxov5hgF-VDrsL-w_kE5NA3Cv6Sgdivvbh8xc1I,10132
|
|
402
414
|
jaclang/utils/lang_tools.py,sha256=n4oshYGy2Ras56A_Tc27dIyoomXJIhqQhd5oX2C9E0g,10819
|
|
403
415
|
jaclang/utils/log.py,sha256=G8Y_DnETgTh9xzvlW5gh9zqJ1ap4YY_MDTwIMu5Uc0Y,262
|
|
404
|
-
jaclang/utils/module_resolver.py,sha256=
|
|
416
|
+
jaclang/utils/module_resolver.py,sha256=55Xg9Est2RALcC3WE6M8svJ7eD3MnAjiPF8MyqSBFrE,6654
|
|
405
417
|
jaclang/utils/symtable_test_helpers.py,sha256=1T9qV8JALdjNjYqVmBY2HVCNI6OodP2D7Uy8qyLpxSA,4512
|
|
406
418
|
jaclang/utils/test.py,sha256=nLh2t9nbF59BA39UAWK2QUB5WLeb9Hsh006GVivdOVw,6182
|
|
407
419
|
jaclang/utils/tests/__init__.py,sha256=8uwVqMsc6cxBAM1DuHLuNuTnzLXqOqM-WRa4ixOMF6w,23
|
|
@@ -5215,7 +5227,7 @@ jaclang/vendor/typeshed/stubs/zxcvbn/zxcvbn/frequency_lists.pyi,sha256=Dtmz_lJ3F
|
|
|
5215
5227
|
jaclang/vendor/typeshed/stubs/zxcvbn/zxcvbn/matching.pyi,sha256=_qCtgbqOjvvqdQNe4VvwwEggQMtJ65FATWfesuxeukE,3554
|
|
5216
5228
|
jaclang/vendor/typeshed/stubs/zxcvbn/zxcvbn/scoring.pyi,sha256=8LMgKMusPGV0WxrcvzZXJbZQCBDKdIMRIdr2wnbXBiI,1454
|
|
5217
5229
|
jaclang/vendor/typeshed/stubs/zxcvbn/zxcvbn/time_estimates.pyi,sha256=OWLFOMJXtKyoErBCIL7ej-WGLO-blK-j_xhzT-sHiU0,898
|
|
5218
|
-
jaclang-0.8.
|
|
5219
|
-
jaclang-0.8.
|
|
5220
|
-
jaclang-0.8.
|
|
5221
|
-
jaclang-0.8.
|
|
5230
|
+
jaclang-0.8.7.dist-info/METADATA,sha256=zADeBs0WbQqj21IF6-G2x4oOHBICxgMntZvs4Rowi2s,5087
|
|
5231
|
+
jaclang-0.8.7.dist-info/WHEEL,sha256=M5asmiAlL6HEcOq52Yi5mmk9KmTVjY2RDPtO4p9DMrc,88
|
|
5232
|
+
jaclang-0.8.7.dist-info/entry_points.txt,sha256=8sMi4Tvi9f8tQDN2QAXsSA2icO27zQ4GgEdph6bNEZM,49
|
|
5233
|
+
jaclang-0.8.7.dist-info/RECORD,,
|
|
File without changes
|