jaclang 0.5.7__py3-none-any.whl → 0.5.8__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.

Files changed (41) hide show
  1. jaclang/cli/cli.py +55 -7
  2. jaclang/cli/cmdreg.py +12 -0
  3. jaclang/compiler/__init__.py +6 -3
  4. jaclang/compiler/__jac_gen__/jac_parser.py +2 -2
  5. jaclang/compiler/absyntree.py +1725 -55
  6. jaclang/compiler/codeloc.py +7 -0
  7. jaclang/compiler/compile.py +1 -1
  8. jaclang/compiler/constant.py +17 -0
  9. jaclang/compiler/parser.py +131 -112
  10. jaclang/compiler/passes/main/def_impl_match_pass.py +19 -3
  11. jaclang/compiler/passes/main/def_use_pass.py +1 -1
  12. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +357 -0
  13. jaclang/compiler/passes/main/import_pass.py +7 -3
  14. jaclang/compiler/passes/main/pyast_gen_pass.py +112 -76
  15. jaclang/compiler/passes/main/pyast_load_pass.py +1779 -206
  16. jaclang/compiler/passes/main/schedules.py +2 -1
  17. jaclang/compiler/passes/main/sym_tab_build_pass.py +20 -28
  18. jaclang/compiler/passes/main/tests/test_pyast_build_pass.py +14 -5
  19. jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py +8 -8
  20. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +7 -0
  21. jaclang/compiler/passes/main/type_check_pass.py +0 -1
  22. jaclang/compiler/passes/tool/jac_formatter_pass.py +8 -17
  23. jaclang/compiler/passes/tool/tests/test_unparse_validate.py +43 -0
  24. jaclang/compiler/passes/utils/mypy_ast_build.py +28 -14
  25. jaclang/compiler/symtable.py +23 -2
  26. jaclang/compiler/tests/test_parser.py +53 -0
  27. jaclang/compiler/workspace.py +52 -26
  28. jaclang/core/construct.py +54 -2
  29. jaclang/plugin/default.py +51 -13
  30. jaclang/plugin/feature.py +16 -2
  31. jaclang/plugin/spec.py +9 -5
  32. jaclang/utils/helpers.py +25 -0
  33. jaclang/utils/lang_tools.py +4 -1
  34. jaclang/utils/test.py +1 -0
  35. jaclang/utils/tests/test_lang_tools.py +11 -14
  36. jaclang/utils/treeprinter.py +10 -2
  37. {jaclang-0.5.7.dist-info → jaclang-0.5.8.dist-info}/METADATA +1 -1
  38. {jaclang-0.5.7.dist-info → jaclang-0.5.8.dist-info}/RECORD +41 -38
  39. {jaclang-0.5.7.dist-info → jaclang-0.5.8.dist-info}/WHEEL +1 -1
  40. {jaclang-0.5.7.dist-info → jaclang-0.5.8.dist-info}/entry_points.txt +0 -0
  41. {jaclang-0.5.7.dist-info → jaclang-0.5.8.dist-info}/top_level.txt +0 -0
jaclang/core/construct.py CHANGED
@@ -328,11 +328,57 @@ class DSFunc:
328
328
  self.func = getattr(cls, self.name)
329
329
 
330
330
 
331
+ class JacTestResult(unittest.TextTestResult):
332
+ """Jac test result class."""
333
+
334
+ def __init__(
335
+ self,
336
+ stream, # noqa
337
+ descriptions, # noqa
338
+ verbosity: int,
339
+ max_failures: Optional[int] = None,
340
+ ) -> None:
341
+ """Initialize FailFastTestResult object."""
342
+ super().__init__(stream, descriptions, verbosity) # noqa
343
+ self.failures_count = 0
344
+ self.max_failures = max_failures
345
+
346
+ def addFailure(self, test, err) -> None: # noqa
347
+ """Count failures and stop."""
348
+ super().addFailure(test, err)
349
+ self.failures_count += 1
350
+ if self.max_failures is not None and self.failures_count >= self.max_failures:
351
+ self.stop()
352
+
353
+ def stop(self) -> None:
354
+ """Stop the test execution."""
355
+ self.shouldStop = True
356
+
357
+
358
+ class JacTextTestRunner(unittest.TextTestRunner):
359
+ """Jac test runner class."""
360
+
361
+ def __init__(self, max_failures: Optional[int] = None, **kwargs) -> None: # noqa
362
+ """Initialize JacTextTestRunner object."""
363
+ self.max_failures = max_failures
364
+ super().__init__(**kwargs)
365
+
366
+ def _makeResult(self) -> JacTestResult: # noqa
367
+ """Override the method to return an instance of JacTestResult."""
368
+ return JacTestResult(
369
+ self.stream,
370
+ self.descriptions,
371
+ self.verbosity,
372
+ max_failures=self.max_failures,
373
+ )
374
+
375
+
331
376
  class JacTestCheck:
332
377
  """Jac Testing and Checking."""
333
378
 
334
379
  test_case = unittest.TestCase()
335
380
  test_suite = unittest.TestSuite()
381
+ breaker = False
336
382
 
337
383
  @staticmethod
338
384
  def reset() -> None:
@@ -341,9 +387,15 @@ class JacTestCheck:
341
387
  JacTestCheck.test_suite = unittest.TestSuite()
342
388
 
343
389
  @staticmethod
344
- def run_test() -> None:
390
+ def run_test(xit: bool, maxfail: int | None, verbose: bool) -> None:
345
391
  """Run the test suite."""
346
- unittest.TextTestRunner().run(JacTestCheck.test_suite)
392
+ verb = 2 if verbose else 1
393
+ runner = JacTextTestRunner(max_failures=maxfail, failfast=xit, verbosity=verb)
394
+ result = runner.run(JacTestCheck.test_suite)
395
+ if result.wasSuccessful():
396
+ print("Passed successfully.")
397
+ else:
398
+ JacTestCheck.breaker = True
347
399
 
348
400
  @staticmethod
349
401
  def add_test(test_fun: Callable) -> None:
jaclang/plugin/default.py CHANGED
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import fnmatch
5
6
  import os
6
7
  import types
7
8
  from dataclasses import field
@@ -185,20 +186,57 @@ class JacFeatureDefaults:
185
186
 
186
187
  @staticmethod
187
188
  @hookimpl
188
- def run_test(filename: str) -> bool:
189
- """Run the test suite in the specified .jac file.
190
-
191
- :param filename: The path to the .jac file.
192
- """
193
- if filename.endswith(".jac"):
194
- base, mod_name = os.path.split(filename)
195
- base = base if base else "./"
196
- mod_name = mod_name[:-4]
197
- JacTestCheck.reset()
198
- Jac.jac_import(target=mod_name, base_path=base)
199
- JacTestCheck.run_test()
189
+ def run_test(
190
+ filepath: str,
191
+ filter: Optional[str],
192
+ xit: bool,
193
+ maxfail: Optional[int],
194
+ directory: Optional[str],
195
+ verbose: bool,
196
+ ) -> bool:
197
+ """Run the test suite in the specified .jac file."""
198
+ test_file = False
199
+ if filepath:
200
+ if filepath.endswith(".jac"):
201
+ base, mod_name = os.path.split(filepath)
202
+ base = base if base else "./"
203
+ mod_name = mod_name[:-4]
204
+ JacTestCheck.reset()
205
+ Jac.jac_import(target=mod_name, base_path=base)
206
+ JacTestCheck.run_test(xit, maxfail, verbose)
207
+ else:
208
+ print("Not a .jac file.")
200
209
  else:
201
- print("Not a .jac file.")
210
+ directory = directory if directory else os.getcwd()
211
+
212
+ if filter or directory:
213
+ current_dir = directory if directory else os.getcwd()
214
+ for root_dir, _, files in os.walk(current_dir, topdown=True):
215
+ files = (
216
+ [file for file in files if fnmatch.fnmatch(file, filter)]
217
+ if filter
218
+ else files
219
+ )
220
+ files = [
221
+ file
222
+ for file in files
223
+ if not file.endswith((".test.jac", ".impl.jac"))
224
+ ]
225
+ for file in files:
226
+ if file.endswith(".jac"):
227
+ test_file = True
228
+ print(f"\n\n\t\t* Inside {root_dir}" + "/" + f"{file} *")
229
+ JacTestCheck.reset()
230
+ Jac.jac_import(target=file[:-4], base_path=root_dir)
231
+ JacTestCheck.run_test(xit, maxfail, verbose)
232
+
233
+ if JacTestCheck.breaker and (xit or maxfail):
234
+ break
235
+ if JacTestCheck.breaker and (xit or maxfail):
236
+ break
237
+ JacTestCheck.breaker = False
238
+ print("No test files found.") if not test_file else None
239
+
202
240
  return True
203
241
 
204
242
  @staticmethod
jaclang/plugin/feature.py CHANGED
@@ -96,9 +96,23 @@ class JacFeature:
96
96
  return pm.hook.create_test(test_fun=test_fun)
97
97
 
98
98
  @staticmethod
99
- def run_test(filename: str) -> bool:
99
+ def run_test(
100
+ filepath: str,
101
+ filter: Optional[str] = None,
102
+ xit: bool = False,
103
+ maxfail: Optional[int] = None,
104
+ directory: Optional[str] = None,
105
+ verbose: bool = False,
106
+ ) -> bool:
100
107
  """Run the test suite in the specified .jac file."""
101
- return pm.hook.run_test(filename=filename)
108
+ return pm.hook.run_test(
109
+ filepath=filepath,
110
+ filter=filter,
111
+ xit=xit,
112
+ maxfail=maxfail,
113
+ directory=directory,
114
+ verbose=verbose,
115
+ )
102
116
 
103
117
  @staticmethod
104
118
  def elvis(op1: Optional[T], op2: T) -> T:
jaclang/plugin/spec.py CHANGED
@@ -88,11 +88,15 @@ class JacFeatureSpec:
88
88
 
89
89
  @staticmethod
90
90
  @hookspec(firstresult=True)
91
- def run_test(filename: str) -> bool:
92
- """Run the test suite in the specified .jac file.
93
-
94
- :param filename: The path to the .jac file.
95
- """
91
+ def run_test(
92
+ filepath: str,
93
+ filter: Optional[str],
94
+ xit: bool,
95
+ maxfail: Optional[int],
96
+ directory: Optional[str],
97
+ verbose: bool,
98
+ ) -> bool:
99
+ """Run the test suite in the specified .jac file."""
96
100
  raise NotImplementedError
97
101
 
98
102
  @staticmethod
jaclang/utils/helpers.py CHANGED
@@ -1,6 +1,9 @@
1
1
  """Utility functions and classes for Jac compilation toolchain."""
2
2
 
3
+ import dis
4
+ import marshal
3
5
  import os
6
+ import pdb
4
7
  import re
5
8
 
6
9
 
@@ -104,3 +107,25 @@ def import_target_to_relative_path(
104
107
  base_path = os.path.dirname(base_path)
105
108
  relative_path = os.path.join(base_path, *actual_parts) + file_extension
106
109
  return relative_path
110
+
111
+
112
+ class Jdb(pdb.Pdb):
113
+ """Jac debugger."""
114
+
115
+ def __init__(self, *args, **kwargs) -> None: # noqa
116
+ """Initialize the Jac debugger."""
117
+ super().__init__(*args, **kwargs)
118
+ self.prompt = "Jdb > "
119
+
120
+ def has_breakpoint(self, bytecode: bytes) -> bool:
121
+ """Check for breakpoint."""
122
+ code = marshal.loads(bytecode)
123
+ instructions = dis.get_instructions(code)
124
+ return any(
125
+ instruction.opname in ("LOAD_GLOBAL", "LOAD_NAME", "LOAD_FAST")
126
+ and instruction.argval == "breakpoint"
127
+ for instruction in instructions
128
+ )
129
+
130
+
131
+ debugger = Jdb()
@@ -8,6 +8,7 @@ from typing import List, Optional, Type
8
8
 
9
9
  import jaclang.compiler.absyntree as ast
10
10
  from jaclang.compiler.compile import jac_file_to_pass
11
+ from jaclang.compiler.passes.main.schedules import py_code_gen_typed
11
12
  from jaclang.compiler.symtable import SymbolTable
12
13
  from jaclang.utils.helpers import extract_headings, heading_to_snake, pascal_to_snake
13
14
 
@@ -209,7 +210,7 @@ class AstTool:
209
210
  [base, mod] = os.path.split(file_name)
210
211
  base = base if base else "./"
211
212
  ir = jac_file_to_pass(
212
- file_name
213
+ file_name, schedule=py_code_gen_typed
213
214
  ).ir # Assuming jac_file_to_pass is defined elsewhere
214
215
 
215
216
  match output:
@@ -229,6 +230,8 @@ class AstTool:
229
230
  return ir.pp()
230
231
  case "ast.":
231
232
  return ir.dotgen()
233
+ case "unparse":
234
+ return ir.unparse()
232
235
  case "pyast":
233
236
  return (
234
237
  f"\n{py_ast.dump(ir.gen.py_ast[0], indent=2)}"
jaclang/utils/test.py CHANGED
@@ -109,6 +109,7 @@ class AstSyncTestMixin:
109
109
  "jac_source",
110
110
  "empty_token",
111
111
  "ast_symbol_node",
112
+ "ast_impl_needing_node",
112
113
  "ast_access_node",
113
114
  "token_symbol",
114
115
  "literal",
@@ -37,20 +37,14 @@ class JacFormatPassTests(TestCase):
37
37
 
38
38
  def test_print(self) -> None:
39
39
  """Testing for print AstTool."""
40
- jac_directory = os.path.join(
41
- os.path.dirname(jaclang.__file__), "../examples/reference/"
40
+ jac_file = os.path.join(
41
+ os.path.dirname(jaclang.__file__),
42
+ "../examples/reference/names_and_references.jac",
42
43
  )
43
- jac_files = [f for f in os.listdir(jac_directory) if f.endswith(".jac")]
44
- passed = 0
45
- for jac_file in jac_files:
46
- msg = "error in " + jac_file
47
- out = AstTool().ir(["ast", jac_directory + jac_file])
48
- if out == "0:0 - 0:0\tModule\n0:0 - 0:0\t+-- EmptyToken - \n":
49
- continue
50
- self.assertIn("+-- Token", out, msg)
51
- self.assertIsNotNone(out, msg=msg)
52
- passed += 1
53
- self.assertGreater(passed, 10)
44
+ msg = "error in " + jac_file
45
+ out = AstTool().ir(["ast", jac_file])
46
+ self.assertIn("+-- Token", out, msg)
47
+ self.assertIsNotNone(out, msg=msg)
54
48
 
55
49
  def test_print_py(self) -> None:
56
50
  """Testing for print_py AstTool."""
@@ -58,8 +52,11 @@ class JacFormatPassTests(TestCase):
58
52
  os.path.dirname(jaclang.__file__), "../examples/reference/"
59
53
  )
60
54
  jac_py_files = [
61
- f for f in os.listdir(jac_py_directory) if f.endswith((".jac", ".py"))
55
+ f
56
+ for f in os.listdir(jac_py_directory)
57
+ if f.endswith(("names_and_references.jac", "names_and_references.py"))
62
58
  ]
59
+
63
60
  for file in jac_py_files:
64
61
  msg = "error in " + file
65
62
  out = AstTool().ir(["pyast", jac_py_directory + file])
@@ -88,10 +88,14 @@ def print_ast_tree(
88
88
  from jaclang.compiler.absyntree import AstSymbolNode, Token
89
89
 
90
90
  def __node_repr_in_tree(node: AstNode) -> str:
91
- if isinstance(node, Token):
91
+ if isinstance(node, Token) and isinstance(node, AstSymbolNode):
92
+ return (
93
+ f"{node.__class__.__name__} - {node.value} - Type: {node.sym_info.typ}"
94
+ )
95
+ elif isinstance(node, Token):
92
96
  return f"{node.__class__.__name__} - {node.value}"
93
97
  elif isinstance(node, AstSymbolNode):
94
- return f"{node.__class__.__name__} - {node.sym_name}"
98
+ return f"{node.__class__.__name__} - {node.sym_name} - Type: {node.sym_info.typ}"
95
99
  else:
96
100
  return f"{node.__class__.__name__}"
97
101
 
@@ -211,6 +215,10 @@ def _build_symbol_tree_common(
211
215
  symbol_node = SymbolTree(node_name=f"{sym.sym_name}", parent=symbols)
212
216
  SymbolTree(node_name=f"{sym.access} {sym.sym_type}", parent=symbol_node)
213
217
 
218
+ # if isinstance(node.owner, ast.AstSymbolNode) and node.owner.sym_info:
219
+ # print("From tree printer", id(node.owner))
220
+ # SymbolTree(node_name=f"Datatype: {node.owner.sym_info.typ}", parent=symbol_node)
221
+
214
222
  if sym.decl and sym.decl.loc.first_line > 0:
215
223
  SymbolTree(
216
224
  node_name=f"decl: line {sym.decl.loc.first_line}, col {sym.decl.loc.col_start}",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaclang
3
- Version: 0.5.7
3
+ Version: 0.5.8
4
4
  Home-page: https://github.com/Jaseci-Labs/jaclang
5
5
  Author: Jason Mars
6
6
  Author-email: jason@jaseci.org
@@ -1,77 +1,80 @@
1
1
  jaclang/__init__.py,sha256=8y03wUXOs-_OI-SQfXzmQBUPHkwKyEM2zGDQvnWMS_k,693
2
2
  jaclang/cli/__init__.py,sha256=7aaPgYddIAHBvkdv36ngbfwsimMnfGaTDcaHYMg_vf4,23
3
- jaclang/cli/cli.py,sha256=QxeCtVhNdT6LN_4DI3IXXmpgLp6Ld19s2Wj8IPrpfRo,6311
4
- jaclang/cli/cmdreg.py,sha256=xebGvkhngKXTkGMazCWOOkKQPS6liCv-pwG0JqtrsIg,7424
5
- jaclang/compiler/__init__.py,sha256=B07SnAx4emUUZoosOsqNwt9JnHnpEvOtjh5z6jz4hII,845
6
- jaclang/compiler/absyntree.py,sha256=pD6hppYMu_7PK5r3ZLFQTqlgVl1nH0D5qF06zQStFmE,64356
7
- jaclang/compiler/codeloc.py,sha256=M5kMZ0diqifcH3P0PE3yIvtZaUw8dbgaF_Hrl393ca8,2659
8
- jaclang/compiler/compile.py,sha256=4btOfr4nhZjhIOzX6MqAQZScDBEiXN8r6pTHDcrEnr4,2706
9
- jaclang/compiler/constant.py,sha256=0nJ8gn9n2ZX7mrSj-ZxpPLXSCd_0UIZH9Q1POPvL0i4,6185
10
- jaclang/compiler/parser.py,sha256=j9FSXm6xiYnI2mg9kgC9ETiV5LcEc6Zs9n9uo8Ywd2Q,133928
11
- jaclang/compiler/symtable.py,sha256=mFSKBiTQIJyWAFknokPHSz-tPy19YLu7XW4kP6Hv9ZQ,5171
12
- jaclang/compiler/workspace.py,sha256=5f_8ShPPT3yY8_vVQhiBRPgyiP_crQhOLy8uEsj-D8k,6741
3
+ jaclang/cli/cli.py,sha256=kE7ZR0ZgKuhlFGfszMcNu239uhSO6rt7PIP6UtsHyko,7822
4
+ jaclang/cli/cmdreg.py,sha256=bn2UdOkNbE-4zfbomO2j8rTtkXhsltH4jE5rKqA5HbY,7862
5
+ jaclang/compiler/__init__.py,sha256=Ulx-OBWcdr6Uh9m7vmDUNjA2zy-rx9uKJ59kb63tFGY,955
6
+ jaclang/compiler/absyntree.py,sha256=K58UU0VO3oAjmza6gbyYnm4J1U_YFQ7Nh4J9p4XW_rk,124652
7
+ jaclang/compiler/codeloc.py,sha256=KMwf5OMQu3_uDjIdH7ta2piacUtXNPgUV1t8OuLjpzE,2828
8
+ jaclang/compiler/compile.py,sha256=fS6Uvor93EavESKrwadqp7bstcpMRRACvBkqbr4En04,2682
9
+ jaclang/compiler/constant.py,sha256=C8nOgWLAg-fRg8Qax_jRcYp6jGyWSSA1gwzk9Zdy7HE,6534
10
+ jaclang/compiler/parser.py,sha256=nARBmZhrtBNN140pY1e8z0773GGtK7C95dShjOXJ484,135292
11
+ jaclang/compiler/symtable.py,sha256=SRYSwZtLHXLIOkE9CfdWDkkwx0vDLXvMeYiFfh6-wP4,5769
12
+ jaclang/compiler/workspace.py,sha256=auTT5VDJzwz1w8_WYlt65U6wAYxGtTl1u1v0lofOfo4,7521
13
13
  jaclang/compiler/__jac_gen__/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- jaclang/compiler/__jac_gen__/jac_parser.py,sha256=JGCmN5JI-ahZ0Cz1zBP6AAE6xPYOuO4omoQ6idZtJ6E,327762
14
+ jaclang/compiler/__jac_gen__/jac_parser.py,sha256=jP8ZLmt-q4X-MTzDGX4IDKmVsDCfnY7KTIcFByhuwmU,334046
15
15
  jaclang/compiler/passes/__init__.py,sha256=0Tw0d130ZjzA05jVcny9cf5NfLjlaM70PKqFnY4zqn4,69
16
16
  jaclang/compiler/passes/ir_pass.py,sha256=ZCcERZZfcOxRurJjOlW5UFj-C1mlp44qpDMsUCH2dUQ,4893
17
17
  jaclang/compiler/passes/transform.py,sha256=6t-bbX_s615i7_naOIBjT4wvAkvLFM4niRHYyF4my8A,2086
18
18
  jaclang/compiler/passes/main/__init__.py,sha256=93aNqSyI2GyRBrzIkxVc7N8JENKPdwtVWpR3XmZ6wG8,831
19
- jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=nFKwhbDkyeKldA1A9teON7zW1zJ9lMblGQ3oNF_nzBM,2579
20
- jaclang/compiler/passes/main/def_use_pass.py,sha256=1NGEfVLy1IsF0iYl6bda6CcrEuiFHTSZHj9pvZcMIFI,8575
21
- jaclang/compiler/passes/main/import_pass.py,sha256=zZ6E1awZLbOfhWRsHVZCPrS7XpjVmSy7rL4Bdo481rg,5983
22
- jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=X6OXqWQ-XypSaGimbRSnCr7BaKp_UEzccFATgWdX-G8,121960
23
- jaclang/compiler/passes/main/pyast_load_pass.py,sha256=vHgIYC5YOlv9TT8tXAZ5c7rsFzSBm8kw0AJEeEdY2C4,25332
19
+ jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=_KgAVVzMAatigKDp1vAnhyY2GcWf0rRoD8MkfYg-POU,3297
20
+ jaclang/compiler/passes/main/def_use_pass.py,sha256=d2REmfme2HjUj8avDcXUuPbv3yKfvYHqpL49sxniLhQ,8576
21
+ jaclang/compiler/passes/main/fuse_typeinfo_pass.py,sha256=QY-0Cxpb3rYDU4JlO4_WILo9ppsv9GJLlR65YqG32sw,13809
22
+ jaclang/compiler/passes/main/import_pass.py,sha256=d2vguYz7z-aNtVnJUfBoSmbYVdGeKmZbnSnrRnE4cg4,6198
23
+ jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=MqDl2QrO3ECjKSjM-l6nNerm2qo9oweEG87p7mcL9Zo,124064
24
+ jaclang/compiler/passes/main/pyast_load_pass.py,sha256=S2U2rjHGbVIP6oYezW1YCUBvxNGC0c_5OdTpfUpuXZ0,79234
24
25
  jaclang/compiler/passes/main/pybc_gen_pass.py,sha256=CjA9AqyMO3Pv_b5Hh0YI6JmCqIru2ASonO6rhrkau-M,1336
25
26
  jaclang/compiler/passes/main/pyout_pass.py,sha256=jw-ApCvVyAqynBFCArPQ20wq2ou0s7lTCGqcUyxrJWI,3018
26
- jaclang/compiler/passes/main/schedules.py,sha256=ODyLVItL-cXxw0lzwan5RJlWlki2a-mhlkrDUngGTZc,895
27
+ jaclang/compiler/passes/main/schedules.py,sha256=H8KIzdTq1Iwj7vkk3J2ek6Sd5fgLzmwPwNu0BJkM-l0,976
27
28
  jaclang/compiler/passes/main/sub_node_tab_pass.py,sha256=fGgK0CBWsuD6BS4BsLwXPl1b5UC2N2YEOGa6jNMu8N8,1332
28
- jaclang/compiler/passes/main/sym_tab_build_pass.py,sha256=g9UyCM1ZPsQ0Rzix3a2asdmstLTn3nZ0Zsp6gSJ363I,41194
29
- jaclang/compiler/passes/main/type_check_pass.py,sha256=Ithw0PTsEtf2OropKM4YP7XBRfe_bUk6kfn8XHX3NJc,3311
29
+ jaclang/compiler/passes/main/sym_tab_build_pass.py,sha256=_NPfmSnDioQb80rVmOJWO_38KCtE238jnImFNlhuYsA,40986
30
+ jaclang/compiler/passes/main/type_check_pass.py,sha256=BT5gUxlBEPYACLyZyoMNPjh4WJY8-wDKRmOIxMRRoMo,3231
30
31
  jaclang/compiler/passes/main/tests/__init__.py,sha256=UBAATLUEH3yuBN4LYKnXXV79kokRc4XB-rX12qfu0ds,28
31
32
  jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py,sha256=QDsvTEpJt3AuS3GRwfq-1mezRCpx7rwEEyg1AbusaBs,1374
32
33
  jaclang/compiler/passes/main/tests/test_def_use_pass.py,sha256=dmyZgXugOCN-_YY7dxkNHgt8vqey8qzNJf8sWyLLZ5w,1013
33
34
  jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=KDTIhUnAVyp0iQ64lC6RQvOkdS7CNVtVbfPbG1aX1L8,580
34
- jaclang/compiler/passes/main/tests/test_pyast_build_pass.py,sha256=SrXHbWrMMC1obJamGsFzBgXs6InXfgIsJmv05GWDPH4,1131
35
+ jaclang/compiler/passes/main/tests/test_pyast_build_pass.py,sha256=LIT4TP-nhtftRtY5rNySRQlim-dWMSlkfUvkhZTk4pc,1383
35
36
  jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py,sha256=QAw3kPE58pQYjVmuqwsd-G-fzlksbiiqvFWrhbaXkdM,4607
36
37
  jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py,sha256=If8PE4exN5g9o1NRElNC0XdfIwJAp7M7f69rzmYRYUQ,655
37
38
  jaclang/compiler/passes/main/tests/test_sub_node_pass.py,sha256=I8m2SM2Z-OJkRG3CfpzhZkxh4lrKNtFmcu6UuYzZpY0,877
38
- jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py,sha256=XprSqlWlkq2hGDqdNRDvdFV5HtZdKiAFt9G-H2KVIuA,714
39
+ jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py,sha256=85mUM6mYYLCrQ9AivBIbreG7CgdsJH2zrNOqdcpnwBo,730
39
40
  jaclang/compiler/passes/main/tests/test_type_check_pass.py,sha256=bzrVcsBZra2HkQH2_qLdX0CY9wbx9gVxs-mSIeWGvqc,1553
41
+ jaclang/compiler/passes/main/tests/test_typeinfo_pass.py,sha256=ehC0_giLg7NwB7fR10nW5Te8mZ76qmUFxkK1bEjtmrw,129
40
42
  jaclang/compiler/passes/tool/__init__.py,sha256=xekCOXysHIcthWm8NRmQoA1Ah1XV8vFbkfeHphJtUdc,223
41
43
  jaclang/compiler/passes/tool/fuse_comments_pass.py,sha256=N9a84qArNuTXX1iaXsBzqcufx6A3zYq2p-1ieH6FmHc,3133
42
- jaclang/compiler/passes/tool/jac_formatter_pass.py,sha256=f9VfWZ7SyL2Tz9r-lQYltzsZDTiw_NuxUjQWejsyGkE,77769
44
+ jaclang/compiler/passes/tool/jac_formatter_pass.py,sha256=8VXwe7Ffh89tMGGmmdK28FRUyC5vKOyXiVm38EItxjI,77537
43
45
  jaclang/compiler/passes/tool/schedules.py,sha256=kmbsCazAMizGAdQuZpFky5BPlYlMXqNw7wOUzdi_wBo,432
44
46
  jaclang/compiler/passes/tool/tests/__init__.py,sha256=AeOaZjA1rf6VAr0JqIit6jlcmOzW7pxGr4U1fOwgK_Y,24
45
47
  jaclang/compiler/passes/tool/tests/test_fuse_comments_pass.py,sha256=ZeWHsm7VIyyS8KKpoB2SdlHM4jF22fMfSrfTfxt2MQw,398
46
48
  jaclang/compiler/passes/tool/tests/test_jac_format_pass.py,sha256=5RrRgd8WFB_5qk9mBlEgWD0GdoQu8DsG2rgRCsfoObw,4829
49
+ jaclang/compiler/passes/tool/tests/test_unparse_validate.py,sha256=vKcI3jMSDphBt9Arr8THe7CdDVNZZ6hsHl6XwCIR_Rk,1546
47
50
  jaclang/compiler/passes/utils/__init__.py,sha256=UsI5rUopTUiStAzup4kbPwIwrnC5ofCrqWBCBbM2-k4,35
48
- jaclang/compiler/passes/utils/mypy_ast_build.py,sha256=hjVtkhhIJOipDj42nCIvn7-GZGpnLiU-XG7I79_Wuac,22313
51
+ jaclang/compiler/passes/utils/mypy_ast_build.py,sha256=qY_QO7rxMOCoPppph0OrCXJD-RJlPQekkDYYfGgfox0,22659
49
52
  jaclang/compiler/tests/__init__.py,sha256=qiXa5UNRBanGOcplFKTT9a_9GEyiv7goq1OzuCjDCFE,27
50
53
  jaclang/compiler/tests/test_importer.py,sha256=uaiUZVTf_zP5mRZhYZKrRS-vq9RZ7qLrWVhgnqjCd5s,769
51
- jaclang/compiler/tests/test_parser.py,sha256=1FEm2bE8zfwuXbBidF2yOaGJm5StmHLFASGNm1scxHc,3216
54
+ jaclang/compiler/tests/test_parser.py,sha256=C81mUo8EGwypPTTLRVS9BglP0Dyye9xaPSQtw7cwnnI,4814
52
55
  jaclang/compiler/tests/test_workspace.py,sha256=SEBcvz_daTbonrLHK9FbjiH86TUbOtVGH-iZ3xkJSMk,3184
53
56
  jaclang/compiler/tests/fixtures/__init__.py,sha256=udQ0T6rajpW_nMiYKJNckqP8izZ-pH3P4PNTJEln2NU,36
54
57
  jaclang/compiler/tests/fixtures/activity.py,sha256=fSvxYDKufsPeQIrbuh031zHw_hdbRv5iK9mS7dD8E54,263
55
58
  jaclang/core/__init__.py,sha256=jDDYBCV82qPhmcDVk3NIvHbhng0ebSrXD3xrojg0-eo,34
56
59
  jaclang/core/aott.py,sha256=DYk_jFdcTY5AMXpHePeHONquaPcq9UgIGk_sUrtwsbQ,1741
57
- jaclang/core/construct.py,sha256=G8JSAs05tMCvlGK6DMCMj0y3JYdrP6p1XQ_ws7uANx8,11718
60
+ jaclang/core/construct.py,sha256=jZLere0irH-z2hjfc3Enuq9FmvWSiMjmDpDc5x4WkV0,13436
58
61
  jaclang/core/importer.py,sha256=_ahfUAg8egcLkBxkh-2xzOPEa4gz1a0-6zrxeQDxkRg,3370
59
62
  jaclang/core/utils.py,sha256=n400FVGmps2mLvXXoyhN5Ovr78YMD7a8f5yrSwSO4cY,3173
60
63
  jaclang/plugin/__init__.py,sha256=qLbQ2KjwyTvlV50Q7JTIznyIzuGDPjuwM_ZJjdk-avo,182
61
64
  jaclang/plugin/builtin.py,sha256=D1R4GGNHX96P-wZnGm9OI4dMeCJvuXuHkCw2Cl5vaAU,1201
62
- jaclang/plugin/default.py,sha256=67E1xjsm0QveLZ3P6vyw4GUNkHJ6iayCdof6TTw0rqA,16061
63
- jaclang/plugin/feature.py,sha256=lqaKQ9roAqEVa7XgQwJckWAbHQiMOUsDjlLBfjibNFY,7290
64
- jaclang/plugin/spec.py,sha256=qkFPA4x6phpuh9urfdH_A_GhmAp2AI3GMIn-IamuPl4,6857
65
+ jaclang/plugin/default.py,sha256=Nl_yxjr7g5jZ1atblCfDs6oWZBFF99dZCzzsdTBXvAk,17573
66
+ jaclang/plugin/feature.py,sha256=p7kVaoX7JZvxde5Ms9tSiRWCZ8nOBANPZ_NwwN5uWas,7643
67
+ jaclang/plugin/spec.py,sha256=0oL0eJP-gWHyvGI4zpRz5OhK-wMq9kWyYAsV-okgJxk,6949
65
68
  jaclang/plugin/tests/__init__.py,sha256=rn_tNG8jCHWwBc_rx4yFkGc4N1GISb7aPuTFVRTvrTk,38
66
69
  jaclang/plugin/tests/test_features.py,sha256=uNQ52HHc0GiOGg5xUZk-ddafdtud0IHN4H_EUAs4er4,3547
67
70
  jaclang/utils/__init__.py,sha256=86LQ_LDyWV-JFkYBpeVHpLaVxkqwFDP60XpWXOFZIQk,46
68
- jaclang/utils/helpers.py,sha256=XQG4Mm49-peGJPy7p8UG0gqRcZ65jW1QiXMKqcFQSGs,3435
69
- jaclang/utils/lang_tools.py,sha256=0lV9VK_MzFB2gj6GGW6bMSbSYFRmLaFZCf4T5Gk1jkw,10736
71
+ jaclang/utils/helpers.py,sha256=V4mMBGP6cVp5lN9Dq99HQTZLMLyg8EVxuMR1I0ABV5I,4093
72
+ jaclang/utils/lang_tools.py,sha256=4GAeTTITQhzR2nUzSt16WXRjctMM0BEpW93JBvGXOaU,10905
70
73
  jaclang/utils/log.py,sha256=G8Y_DnETgTh9xzvlW5gh9zqJ1ap4YY_MDTwIMu5Uc0Y,262
71
- jaclang/utils/test.py,sha256=8zD1zA8N3S6DCR4sYnTqJDRcAA9uOhiS6GGNIXooio8,5403
72
- jaclang/utils/treeprinter.py,sha256=Y6RnLaBVZ5fvUvOYLPNFRv087Ame45gDJXVDoa75vvY,10476
74
+ jaclang/utils/test.py,sha256=LQKtY_DnWXUBbGVnpp05oMeGn24bTxawqrz5ZqZK0dQ,5444
75
+ jaclang/utils/treeprinter.py,sha256=RV7mmnlUdla_dYxIrwxsV2F32ncgEnB9PdA3ZnKLxPE,10934
73
76
  jaclang/utils/tests/__init__.py,sha256=8uwVqMsc6cxBAM1DuHLuNuTnzLXqOqM-WRa4ixOMF6w,23
74
- jaclang/utils/tests/test_lang_tools.py,sha256=6tW30ioHjZGYq4GZmOiFHrrCZpvRb3YLQ9_gPlNpOcY,4107
77
+ jaclang/utils/tests/test_lang_tools.py,sha256=F95RBtFlk04z4me90yq-1p-p8QZzadjJ8mOLm7CblMc,3874
75
78
  jaclang/vendor/__init__.py,sha256=pbflH5hBfDiKfTJEjIXId44Eof8CVmXQlZwFYDG6_4E,35
76
79
  jaclang/vendor/mypy_extensions.py,sha256=iOL3eH2aQfacxQHcut7VgXt69Fh0BUTVW6D0TYjeV7U,6903
77
80
  jaclang/vendor/typing_extensions.py,sha256=46svwxMQkcZjZuJyb-kYHy_FgpXPZQY4vjGJmUcVLJ0,104792
@@ -397,8 +400,8 @@ jaclang/vendor/pluggy/_manager.py,sha256=fcYU7VER0CplRym4jAJ7RCFYl6cfDSeVM589YHH
397
400
  jaclang/vendor/pluggy/_result.py,sha256=wXDoVy68bOaOrBzQ0bWFb3HTbpqhvdQMgYwaZvfzxfA,3239
398
401
  jaclang/vendor/pluggy/_tracing.py,sha256=kSBr25F_rNklV2QhLD6h1jx6Z1kcKDRbuYvF5jv35pU,2089
399
402
  jaclang/vendor/pluggy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
400
- jaclang-0.5.7.dist-info/METADATA,sha256=sj8GHcmbAURWLiOi4ae_S4gHIjT0GduG_HVK3jK09kA,152
401
- jaclang-0.5.7.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
402
- jaclang-0.5.7.dist-info/entry_points.txt,sha256=Z-snS3MDBdV1Z4znXDZTenyyndovaNjqRkDW1t2kYSs,50
403
- jaclang-0.5.7.dist-info/top_level.txt,sha256=ZOAoLpE67ozkUJd-v3C59wBNXiteRD8IWPbsYB3M08g,8
404
- jaclang-0.5.7.dist-info/RECORD,,
403
+ jaclang-0.5.8.dist-info/METADATA,sha256=UTKjkxxbfs09CnrqWJw5acY-YqYIzV8YnhVgTgthcwQ,152
404
+ jaclang-0.5.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
405
+ jaclang-0.5.8.dist-info/entry_points.txt,sha256=Z-snS3MDBdV1Z4znXDZTenyyndovaNjqRkDW1t2kYSs,50
406
+ jaclang-0.5.8.dist-info/top_level.txt,sha256=ZOAoLpE67ozkUJd-v3C59wBNXiteRD8IWPbsYB3M08g,8
407
+ jaclang-0.5.8.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5