jaclang 0.5.16__py3-none-any.whl → 0.5.18__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/__init__.py CHANGED
@@ -17,13 +17,9 @@ from jaclang.vendor import pluggy # noqa: E402
17
17
 
18
18
  jac_import = JacFeature.jac_import
19
19
 
20
- __all__ = [
21
- "jac_import",
22
- "lark",
23
- "mypy",
24
- "pluggy",
25
- ]
26
20
  pm.register(JacFeatureDefaults)
27
21
  pm.register(JacBuiltin)
28
22
  pm.register(JacCmdDefaults)
29
23
  pm.load_setuptools_entrypoints("jac")
24
+
25
+ __all__ = ["jac_import", "lark", "mypy", "pluggy"]
jaclang/cli/cli.py CHANGED
@@ -238,7 +238,7 @@ def debug(filename: str, main: bool = True, cache: bool = False) -> None:
238
238
 
239
239
 
240
240
  @cmd_registry.register
241
- def graph(
241
+ def dot(
242
242
  filename: str,
243
243
  initial: str = "",
244
244
  depth: int = -1,
@@ -110,11 +110,15 @@ class AstNode:
110
110
 
111
111
  return Pass.get_all_sub_nodes(node=self, typ=typ, brute_force=brute_force)
112
112
 
113
- def has_parent_of_type(self, typ: Type[T]) -> Optional[T]:
113
+ def parent_of_type(self, typ: Type[T]) -> T:
114
114
  """Get parent of type."""
115
115
  from jaclang.compiler.passes import Pass
116
116
 
117
- return Pass.has_parent_of_type(node=self, typ=typ)
117
+ ret = Pass.has_parent_of_type(node=self, typ=typ)
118
+ if isinstance(ret, typ):
119
+ return ret
120
+ else:
121
+ raise ValueError(f"Parent of type {typ} not found.")
118
122
 
119
123
  def format(self) -> str:
120
124
  """Get all sub nodes of type."""
@@ -591,16 +595,16 @@ class Import(ElementStmt, CodeBlockStmt):
591
595
 
592
596
  def __init__(
593
597
  self,
594
- lang: SubTag[Name],
595
- paths: list[ModulePath],
596
- items: Optional[SubNodeList[ModuleItem]],
598
+ hint: SubTag[Name],
599
+ from_loc: Optional[ModulePath],
600
+ items: SubNodeList[ModuleItem] | SubNodeList[ModulePath],
597
601
  is_absorb: bool, # For includes
598
602
  kid: Sequence[AstNode],
599
603
  doc: Optional[String] = None,
600
604
  ) -> None:
601
605
  """Initialize import node."""
602
- self.lang = lang
603
- self.paths = paths
606
+ self.hint = hint
607
+ self.from_loc = from_loc
604
608
  self.items = items
605
609
  self.is_absorb = is_absorb
606
610
  AstNode.__init__(self, kid=kid)
@@ -610,10 +614,9 @@ class Import(ElementStmt, CodeBlockStmt):
610
614
  """Normalize import node."""
611
615
  res = True
612
616
  if deep:
613
- res = self.lang.normalize(deep)
614
- for p in self.paths:
615
- res = res and p.normalize(deep)
616
- res = res and self.items.normalize(deep) if self.items else res
617
+ res = self.hint.normalize(deep)
618
+ res = res and self.from_loc.normalize(deep) if self.from_loc else res
619
+ res = res and self.items.normalize(deep)
617
620
  res = res and self.doc.normalize(deep) if self.doc else res
618
621
  new_kid: list[AstNode] = []
619
622
  if self.doc:
@@ -622,16 +625,12 @@ class Import(ElementStmt, CodeBlockStmt):
622
625
  new_kid.append(self.gen_token(Tok.KW_INCLUDE))
623
626
  else:
624
627
  new_kid.append(self.gen_token(Tok.KW_IMPORT))
625
- new_kid.append(self.lang)
626
- if self.items:
628
+ new_kid.append(self.hint)
629
+ if self.from_loc:
627
630
  new_kid.append(self.gen_token(Tok.KW_FROM))
628
- for p in self.paths:
629
- new_kid.append(p)
630
- new_kid.append(self.gen_token(Tok.COMMA))
631
- new_kid.pop()
632
- if self.items:
631
+ new_kid.append(self.from_loc)
633
632
  new_kid.append(self.gen_token(Tok.COMMA))
634
- new_kid.append(self.items)
633
+ new_kid.append(self.items)
635
634
  new_kid.append(self.gen_token(Tok.SEMI))
636
635
  self.set_kids(nodes=new_kid)
637
636
  return res
@@ -2389,9 +2388,9 @@ class LambdaExpr(Expr):
2389
2388
 
2390
2389
  def __init__(
2391
2390
  self,
2392
- signature: FuncSignature,
2393
2391
  body: Expr,
2394
2392
  kid: Sequence[AstNode],
2393
+ signature: Optional[FuncSignature] = None,
2395
2394
  ) -> None:
2396
2395
  """Initialize lambda expression node."""
2397
2396
  self.signature = signature
@@ -2402,11 +2401,12 @@ class LambdaExpr(Expr):
2402
2401
  """Normalize ast node."""
2403
2402
  res = True
2404
2403
  if deep:
2405
- res = self.signature.normalize(deep)
2404
+ res = self.signature.normalize(deep) if self.signature else res
2406
2405
  res = res and self.body.normalize(deep)
2407
- new_kid: list[AstNode] = [
2408
- self.gen_token(Tok.KW_WITH),
2409
- self.signature,
2406
+ new_kid: list[AstNode] = [self.gen_token(Tok.KW_WITH)]
2407
+ if self.signature:
2408
+ new_kid.append(self.signature)
2409
+ new_kid += [
2410
2410
  self.gen_token(Tok.KW_CAN),
2411
2411
  self.body,
2412
2412
  self.gen_token(Tok.SEMI),