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.

@@ -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 os.path.exists(potential_path):
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
 
@@ -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)
@@ -182,6 +182,7 @@ class JacImportPass(Pass):
182
182
  source=ast.JacSource("", mod_path=target),
183
183
  doc=None,
184
184
  body=[],
185
+ terminals=[],
185
186
  is_imported=False,
186
187
  stub_only=True,
187
188
  kid=[ast.EmptyToken()],
@@ -434,14 +434,7 @@ class PyastGenPass(Pass):
434
434
  body: SubNodeList[CodeBlockStmt],
435
435
  doc: Optional[String],
436
436
  """
437
- if node.doc:
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
- self.assertEqual(i.annexable_by, self.fixture_abs_path("autoimpl.jac"))
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.AstNode] = [] # New stream to hold ordered tokens
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
- next_kid = node.kid[i + 1]
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("@"):
@@ -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
- errors: list[Alert],
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.parent: Optional[ModuleInfo] = parent
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
- self.modules[file_path] = ModuleInfo(
166
- ir=build.ir,
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
- self.modules[uri] = ModuleInfo(
181
- ir=build.ir.mod_deps[p],
182
- errors=[i for i in build.errors_had if i.loc.mod_path == p],
183
- warnings=[i for i in build.warnings_had if i.loc.mod_path == p],
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)
@@ -0,0 +1,3 @@
1
+ with entry:__main__ {}
2
+
3
+ with entry {print("i work");}
@@ -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)
@@ -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.13
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=M725Yu7bpuaJUUC45lm1Z43hOCCL1iaROwNLAfUMIZk,134871
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=oGNhrPq0Xr0Uq6gXdBVVl7rdSSlwQGmiPicmD-n62xQ,140292
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=r7y-G3hyf1Cu8nuV5tkre6_kZfSNTzs3VZ84wlokjMs,10944
23
- jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=BvoqmodIszOmZ75pdhR32g_Y8IYcJHqOT3K4TkJRX0c,151993
24
- jaclang/compiler/passes/main/pyast_load_pass.py,sha256=Zc8om2xfn5tLUcVFcFLjJsd3XhhCuBFY0eksZlghpxQ,93240
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=I7Y1p6PPqnXjpd9UpSILxAiWRdURis3qR-Y5LFzzG9o,2717
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=N9a84qArNuTXX1iaXsBzqcufx6A3zYq2p-1ieH6FmHc,3133
68
- jaclang/compiler/passes/tool/jac_formatter_pass.py,sha256=yqq2OOSs2tlDKUnPe0GS3NAZh8F5fquA5ZTYw44QX08,87356
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=w0rvDBj3QAdheygVksyu9piGLZwLpPChR2q6T0vbuMk,18978
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=dgmyGLv7eF23SWKHhyTXI9szJpZqaOeWKUD-ulbyh60,11211
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=z4eEU0wb_o312wJo1bfeCuz26lIQegrqvGgHIGGrJOI,23669
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=T2NawObRbnOMUHp-JofNB-QSp1O5hpVOlNlMdE0qfdM,34458
248
- jaclang/tests/test_man_code.py,sha256=cKSgTTDl1_Ojhz71X9n2gh0hP4jIa0uQeQeG29LuX9I,4436
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.13.dist-info/METADATA,sha256=fsJM45XYGUB8knIcVYLytSIQyPdv9gYhcDKCdZT0wNQ,4822
1482
- jaclang-0.7.13.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1483
- jaclang-0.7.13.dist-info/entry_points.txt,sha256=8sMi4Tvi9f8tQDN2QAXsSA2icO27zQ4GgEdph6bNEZM,49
1484
- jaclang-0.7.13.dist-info/RECORD,,
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,,