jaclang 0.6.0__py3-none-any.whl → 0.6.1__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/plugin/spec.py CHANGED
@@ -3,18 +3,21 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import types
6
- from typing import Any, Callable, Optional, Type, TypeVar, Union
6
+ from dataclasses import dataclass
7
+ from typing import Any, Callable, Optional, TYPE_CHECKING, Type, TypeVar, Union
7
8
 
8
9
  from jaclang.compiler.absyntree import Module
9
- from jaclang.plugin.default import (
10
- Architype,
11
- DSFunc,
12
- EdgeArchitype,
13
- EdgeDir,
14
- NodeArchitype,
15
- Root,
16
- WalkerArchitype,
17
- )
10
+
11
+ if TYPE_CHECKING:
12
+ from jaclang.core.construct import EdgeArchitype, NodeArchitype
13
+ from jaclang.plugin.default import (
14
+ Architype,
15
+ EdgeDir,
16
+ ExecutionContext,
17
+ WalkerArchitype,
18
+ Root,
19
+ )
20
+ from jaclang.core.memory import Memory
18
21
 
19
22
  import pluggy
20
23
 
@@ -23,9 +26,41 @@ hookspec = pluggy.HookspecMarker("jac")
23
26
  T = TypeVar("T")
24
27
 
25
28
 
29
+ # TODO: DSFunc should be moved into jaclang/core
30
+ @dataclass(eq=False)
31
+ class DSFunc:
32
+ """Data Spatial Function."""
33
+
34
+ name: str
35
+ trigger: type | types.UnionType | tuple[type | types.UnionType, ...] | None
36
+ func: Callable[[Any, Any], Any] | None = None
37
+
38
+ def resolve(self, cls: type) -> None:
39
+ """Resolve the function."""
40
+ self.func = getattr(cls, self.name)
41
+
42
+
26
43
  class JacFeatureSpec:
27
44
  """Jac Feature."""
28
45
 
46
+ @staticmethod
47
+ @hookspec(firstresult=True)
48
+ def context(session: str = "") -> ExecutionContext:
49
+ """Get the execution context."""
50
+ raise NotImplementedError
51
+
52
+ @staticmethod
53
+ @hookspec(firstresult=True)
54
+ def reset_context() -> None:
55
+ """Reset the execution context."""
56
+ raise NotImplementedError
57
+
58
+ @staticmethod
59
+ @hookspec(firstresult=True)
60
+ def memory_hook() -> Memory | None:
61
+ """Create memory abstraction."""
62
+ raise NotImplementedError
63
+
29
64
  @staticmethod
30
65
  @hookspec(firstresult=True)
31
66
  def make_architype(
@@ -0,0 +1,219 @@
1
+ """Test for jaseci plugin."""
2
+
3
+ import io
4
+ import os
5
+ import sys
6
+
7
+ from jaclang.cli import cli
8
+ from jaclang.utils.test import TestCase
9
+
10
+
11
+ class TestJaseciPlugin(TestCase):
12
+ """Test jaseci plugin."""
13
+
14
+ def setUp(self) -> None:
15
+ """Set up test."""
16
+ super().setUp()
17
+
18
+ def tearDown(self) -> None:
19
+ """Tear down test."""
20
+ super().tearDown()
21
+ sys.stdout = sys.__stdout__
22
+
23
+ def _output2buffer(self) -> None:
24
+ """Start capturing output."""
25
+ self.capturedOutput = io.StringIO()
26
+ sys.stdout = self.capturedOutput
27
+
28
+ def _output2std(self) -> None:
29
+ """Redirect output back to stdout."""
30
+ sys.stdout = sys.__stdout__
31
+
32
+ def _del_session(self, session: str) -> None:
33
+ if os.path.exists(session):
34
+ os.remove(session)
35
+
36
+ def test_walker_simple_persistent(self) -> None:
37
+ """Test simple persistent object."""
38
+ session = self.fixture_abs_path("test_walker_simple_persistent.session")
39
+ self._output2buffer()
40
+ cli.run(
41
+ filename=self.fixture_abs_path("simple_persistent.jac"),
42
+ session=session,
43
+ walker="create",
44
+ )
45
+ cli.run(
46
+ filename=self.fixture_abs_path("simple_persistent.jac"),
47
+ session=session,
48
+ walker="traverse",
49
+ )
50
+ output = self.capturedOutput.getvalue().strip()
51
+ self.assertEqual(output, "node a\nnode b")
52
+ self._del_session(session)
53
+
54
+ def test_entrypoint_root(self) -> None:
55
+ """Test entrypoint being root."""
56
+ session = self.fixture_abs_path("test_entrypoint_root.session")
57
+ cli.run(
58
+ filename=self.fixture_abs_path("simple_persistent.jac"),
59
+ session=session,
60
+ walker="create",
61
+ )
62
+ obj = cli.get_object(session=session, id="root")
63
+ self._output2buffer()
64
+ cli.run(
65
+ filename=self.fixture_abs_path("simple_persistent.jac"),
66
+ session=session,
67
+ node=str(obj["_jac_"]["id"]),
68
+ walker="traverse",
69
+ )
70
+ output = self.capturedOutput.getvalue().strip()
71
+ self.assertEqual(output, "node a\nnode b")
72
+ self._del_session(session)
73
+
74
+ def test_entrypoint_non_root(self) -> None:
75
+ """Test entrypoint being non root node."""
76
+ session = self.fixture_abs_path("test_entrypoint_non_root.session")
77
+ cli.run(
78
+ filename=self.fixture_abs_path("simple_persistent.jac"),
79
+ session=session,
80
+ walker="create",
81
+ )
82
+ obj = cli.get_object(session=session, id="root")
83
+ edge_obj = cli.get_object(session=session, id=str(obj["_jac_"]["edge_ids"][0]))
84
+ a_obj = cli.get_object(session=session, id=str(edge_obj["_jac_"]["target_id"]))
85
+ self._output2buffer()
86
+ cli.run(
87
+ filename=self.fixture_abs_path("simple_persistent.jac"),
88
+ session=session,
89
+ node=str(a_obj["_jac_"]["id"]),
90
+ walker="traverse",
91
+ )
92
+ output = self.capturedOutput.getvalue().strip()
93
+ self.assertEqual(output, "node a\nnode b")
94
+ self._del_session(session)
95
+
96
+ def test_get_edge(self) -> None:
97
+ """Test get an edge object."""
98
+ session = self.fixture_abs_path("test_get_edge.session")
99
+ cli.run(
100
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
101
+ session=session,
102
+ )
103
+ obj = cli.get_object(session=session, id="root")
104
+ self.assertEqual(len(obj["_jac_"]["edge_ids"]), 2)
105
+ edge_objs = [
106
+ cli.get_object(session=session, id=str(e_id))
107
+ for e_id in obj["_jac_"]["edge_ids"]
108
+ ]
109
+ node_ids = [obj["_jac_"]["target_id"] for obj in edge_objs]
110
+ node_objs = [cli.get_object(session=session, id=str(n_id)) for n_id in node_ids]
111
+ self.assertEqual(len(node_objs), 2)
112
+ self.assertEqual({obj["tag"] for obj in node_objs}, {"first", "second"})
113
+ self._del_session(session)
114
+
115
+ def test_filter_on_edge_get_edge(self) -> None:
116
+ """Test filtering on edge."""
117
+ session = self.fixture_abs_path("test_filter_on_edge_get_edge.session")
118
+ cli.run(
119
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
120
+ session=session,
121
+ )
122
+ self._output2buffer()
123
+ cli.run(
124
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
125
+ session=session,
126
+ walker="filter_on_edge_get_edge",
127
+ )
128
+ self.assertEqual(
129
+ self.capturedOutput.getvalue().strip(), "[simple_edge(index=1)]"
130
+ )
131
+ self._del_session(session)
132
+
133
+ def test_filter_on_edge_get_node(self) -> None:
134
+ """Test filtering on edge, then get node."""
135
+ session = self.fixture_abs_path("test_filter_on_edge_get_node.session")
136
+ cli.run(
137
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
138
+ session=session,
139
+ )
140
+ self._output2buffer()
141
+ cli.run(
142
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
143
+ session=session,
144
+ walker="filter_on_edge_get_node",
145
+ )
146
+ self.assertEqual(
147
+ self.capturedOutput.getvalue().strip(), "[simple(tag='second')]"
148
+ )
149
+ self._del_session(session)
150
+
151
+ def test_filter_on_node_get_node(self) -> None:
152
+ """Test filtering on node, then get edge."""
153
+ session = self.fixture_abs_path("test_filter_on_node_get_node.session")
154
+ cli.run(
155
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
156
+ session=session,
157
+ )
158
+ self._output2buffer()
159
+ cli.run(
160
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
161
+ session=session,
162
+ walker="filter_on_node_get_node",
163
+ )
164
+ self.assertEqual(
165
+ self.capturedOutput.getvalue().strip(), "[simple(tag='second')]"
166
+ )
167
+ self._del_session(session)
168
+
169
+ def test_filter_on_edge_visit(self) -> None:
170
+ """Test filtering on edge, then visit."""
171
+ session = self.fixture_abs_path("test_filter_on_edge_visit.session")
172
+ cli.run(
173
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
174
+ session=session,
175
+ )
176
+ self._output2buffer()
177
+ cli.run(
178
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
179
+ session=session,
180
+ walker="filter_on_edge_visit",
181
+ )
182
+ self.assertEqual(self.capturedOutput.getvalue().strip(), "simple(tag='first')")
183
+ self._del_session(session)
184
+
185
+ def test_filter_on_node_visit(self) -> None:
186
+ """Test filtering on node, then visit."""
187
+ session = self.fixture_abs_path("test_filter_on_node_visit.session")
188
+ cli.run(
189
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
190
+ session=session,
191
+ )
192
+ self._output2buffer()
193
+ cli.run(
194
+ filename=self.fixture_abs_path("simple_node_connection.jac"),
195
+ session=session,
196
+ walker="filter_on_node_visit",
197
+ )
198
+ self.assertEqual(self.capturedOutput.getvalue().strip(), "simple(tag='first')")
199
+ self._del_session(session)
200
+
201
+ def test_indirect_reference_node(self) -> None:
202
+ """Test reference node indirectly without visiting."""
203
+ session = self.fixture_abs_path("test_indirect_reference_node.session")
204
+ cli.run(
205
+ filename=self.fixture_abs_path("simple_persistent.jac"),
206
+ session=session,
207
+ walker="create",
208
+ )
209
+ self._output2buffer()
210
+ cli.run(
211
+ filename=self.fixture_abs_path("simple_persistent.jac"),
212
+ session=session,
213
+ walker="indirect_ref",
214
+ )
215
+ self.assertEqual(
216
+ self.capturedOutput.getvalue().strip(),
217
+ "[b(name='node b')]\n[GenericEdge]",
218
+ )
219
+ self._del_session(session)
@@ -93,12 +93,17 @@ def print_ast_tree(
93
93
  if isinstance(node, ast.AstAccessNode) and node.access is not None
94
94
  else ""
95
95
  )
96
+ sym_table_link = (
97
+ f", SymbolTable: {node.sym_info.typ_sym_table.name}"
98
+ if isinstance(node, AstSymbolNode) and node.sym_info.typ_sym_table
99
+ else ", SymbolTable: None" if isinstance(node, AstSymbolNode) else ""
100
+ )
96
101
  if isinstance(node, Token) and isinstance(node, AstSymbolNode):
97
- return f"{node.__class__.__name__} - {node.value} - Type: {node.sym_info.typ}, {access}"
102
+ return f"{node.__class__.__name__} - {node.value} - Type: {node.sym_info.typ}, {access} {sym_table_link}"
98
103
  elif isinstance(node, Token):
99
104
  return f"{node.__class__.__name__} - {node.value}, {access}"
100
105
  elif isinstance(node, AstSymbolNode):
101
- return f"{node.__class__.__name__} - {node.sym_name} - Type: {node.sym_info.typ}, {access}"
106
+ return f"{node.__class__.__name__} - {node.sym_name} - Type: {node.sym_info.typ}, {access} {sym_table_link}"
102
107
  else:
103
108
  return f"{node.__class__.__name__}, {access}"
104
109
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jaclang
3
- Version: 0.6.0
3
+ Version: 0.6.1
4
4
  Home-page: https://github.com/Jaseci-Labs/jaclang
5
5
  Author: Jason Mars
6
6
  Author-email: jason@jaseci.org
@@ -1,41 +1,42 @@
1
1
  jaclang/__init__.py,sha256=vTvt9LIz5RNKrLRueH3gUM3KTAjsqoanHQ_Pn9m4i9g,675
2
2
  jaclang/settings.py,sha256=2bLDsF1xiFI9VL8vEIPZ5A5Q-XQ9hfK9lIszH99nKkc,3156
3
3
  jaclang/cli/__init__.py,sha256=7aaPgYddIAHBvkdv36ngbfwsimMnfGaTDcaHYMg_vf4,23
4
- jaclang/cli/cli.py,sha256=O4obezeiQKGsYqt4_ZN3pGBL7xjA2d_wcxgEVqZ959g,10806
5
- jaclang/cli/cmdreg.py,sha256=bn2UdOkNbE-4zfbomO2j8rTtkXhsltH4jE5rKqA5HbY,7862
4
+ jaclang/cli/cli.py,sha256=ebyAI2if_uNOOnmr0fFWZfi0yDHrcHLs_64t_a7vccI,13114
5
+ jaclang/cli/cmdreg.py,sha256=u0jAd6A8czt7tBgPBBKBhYAG4By1FrjEGaTU2XFKeYs,8372
6
6
  jaclang/compiler/__init__.py,sha256=Fq2rBjvbFxTbolEC872X5CicOjyJmKo0yZlnUcChg6k,3119
7
- jaclang/compiler/absyntree.py,sha256=VBqAZZQ9zRS73M55nZaATBoHzlDtRv86ogwyM4fjPZ0,126939
7
+ jaclang/compiler/absyntree.py,sha256=FdXLGp2FR5PqqEeDhZ-yidoA1xxontQrqTDZcmQmuvc,126904
8
8
  jaclang/compiler/codeloc.py,sha256=KMwf5OMQu3_uDjIdH7ta2piacUtXNPgUV1t8OuLjpzE,2828
9
9
  jaclang/compiler/compile.py,sha256=fS6Uvor93EavESKrwadqp7bstcpMRRACvBkqbr4En04,2682
10
10
  jaclang/compiler/constant.py,sha256=C8nOgWLAg-fRg8Qax_jRcYp6jGyWSSA1gwzk9Zdy7HE,6534
11
11
  jaclang/compiler/jac.lark,sha256=Kvq5zZbQMJ-1bdXLVuCafRVS9w91UfN-0nLnEq0gOSw,17019
12
- jaclang/compiler/parser.py,sha256=EtASMImnMyrKXixKpHYStBlhdDxVwtsIX306EWC8AHg,138177
12
+ jaclang/compiler/parser.py,sha256=7MCxaVZ_yyAR7YZ8zsFa4G_JkIUANh-HgB6v0MPjEfM,138178
13
13
  jaclang/compiler/symtable.py,sha256=f-9c3eQJTDhEG22kYC3Vd4i5gRWf77_CsqFm7t8Wsng,6031
14
14
  jaclang/compiler/workspace.py,sha256=I1MF2jaSylDOcQQV4Ez3svi4FdOyfmbNupuZT7q9aFQ,7797
15
15
  jaclang/compiler/generated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- jaclang/compiler/generated/jac_parser.py,sha256=Dn9D__4gJTGRYcfXgbkcwICHXe1qwMs2x0MkSuN3U_U,338234
16
+ jaclang/compiler/generated/jac_parser.py,sha256=UQAJYoyhoTtWbpZSyz5otTI7G30DaZWrtnj8RELvqDw,338438
17
17
  jaclang/compiler/passes/__init__.py,sha256=0Tw0d130ZjzA05jVcny9cf5NfLjlaM70PKqFnY4zqn4,69
18
18
  jaclang/compiler/passes/ir_pass.py,sha256=gh1Zd8ouu79FoxerW1sMxktmfeC9gHyp4H_MoAviYP8,5504
19
19
  jaclang/compiler/passes/transform.py,sha256=Z3TuHMJ7TyyBHt0XmRWEjMk8-t6logKs7XG_OTDJIvo,2162
20
20
  jaclang/compiler/passes/main/__init__.py,sha256=m8vZ0F6EiwOm0e0DWKRYgc8JcgiT2ayBrY6GojZkTfY,945
21
21
  jaclang/compiler/passes/main/access_modifier_pass.py,sha256=1tQJ9bNlOVX3sgL0DK4jv643Pu5xl68oL8LNsaHf-MY,4864
22
- jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=_KgAVVzMAatigKDp1vAnhyY2GcWf0rRoD8MkfYg-POU,3297
22
+ jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=L78FrCoUsflxGueKITda_idfwZOo4dbr68bzmwXyKUQ,3442
23
23
  jaclang/compiler/passes/main/def_use_pass.py,sha256=d2REmfme2HjUj8avDcXUuPbv3yKfvYHqpL49sxniLhQ,8576
24
- jaclang/compiler/passes/main/fuse_typeinfo_pass.py,sha256=9WrF78r4cNWnDqofx225b9cUZafTi3HwCffXINmgoZ0,15968
25
- jaclang/compiler/passes/main/import_pass.py,sha256=JdDcAI2MmdJbisSSsgWHcKnuEmE_PmywSV7G9OzPras,6740
26
- jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=L24aRhoXIGoXu1FwwW2X3HoGWwjLmOAtbLCGqOrix0g,138795
24
+ jaclang/compiler/passes/main/fuse_typeinfo_pass.py,sha256=Y7pQSmeCxGcn3X912A_u-JqKV6pxn-7bwXsOhVmgYko,15944
25
+ jaclang/compiler/passes/main/import_pass.py,sha256=Ac_vpWDmGqg9Tv5OfOFjRrT43QHu2BdzVaLCmFnHxRc,7482
26
+ jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=sL5VIR2cT_NQYlyFopZz5XSXjQcisltVwdmLL8pXf3w,136197
27
27
  jaclang/compiler/passes/main/pyast_load_pass.py,sha256=UDbosNQ88CcfSW1wKBYgLRz3ZBxpJ8cGwpn_KZaYvvk,89725
28
28
  jaclang/compiler/passes/main/pybc_gen_pass.py,sha256=CjA9AqyMO3Pv_b5Hh0YI6JmCqIru2ASonO6rhrkau-M,1336
29
+ jaclang/compiler/passes/main/pyjac_ast_link_pass.py,sha256=K5jNHRPrFcC_-RbgY7lngSNSDQLQr27N31_aUrGUACo,7864
29
30
  jaclang/compiler/passes/main/pyout_pass.py,sha256=clJkASFiBiki5w0MQXYIwcdvahYETgqAjKlYOYVYKNQ,3137
30
31
  jaclang/compiler/passes/main/registry_pass.py,sha256=Lp_EqlflXkSgQuJe_EVBtzC16YAJx70bDO6X0nJIX5U,4579
31
- jaclang/compiler/passes/main/schedules.py,sha256=Mvwt3aphVh4rhs8Mf5itK4GCIPM00rQ2a4tDzjmAzUk,1167
32
+ jaclang/compiler/passes/main/schedules.py,sha256=oTH2EvvopLdmrtPl8b-CENWAPviIZe7qNLOuODJ5Iuw,1253
32
33
  jaclang/compiler/passes/main/sub_node_tab_pass.py,sha256=fGgK0CBWsuD6BS4BsLwXPl1b5UC2N2YEOGa6jNMu8N8,1332
33
- jaclang/compiler/passes/main/sym_tab_build_pass.py,sha256=TXM_oxTYIyKEXm2NDh6UgKw5KGPgYC1ONEqS4nN5PMQ,41769
34
+ jaclang/compiler/passes/main/sym_tab_build_pass.py,sha256=1bUU-p0zCoLoF7_HgLr2FKxUuc_4y2O7-5FSJD8mfWc,42020
34
35
  jaclang/compiler/passes/main/type_check_pass.py,sha256=-f41Ukr3B1w4rkQdZ2xJy6nozymgnVKjJ8E1fn7qJmI,3339
35
36
  jaclang/compiler/passes/main/tests/__init__.py,sha256=UBAATLUEH3yuBN4LYKnXXV79kokRc4XB-rX12qfu0ds,28
36
37
  jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py,sha256=QDsvTEpJt3AuS3GRwfq-1mezRCpx7rwEEyg1AbusaBs,1374
37
38
  jaclang/compiler/passes/main/tests/test_def_use_pass.py,sha256=dmyZgXugOCN-_YY7dxkNHgt8vqey8qzNJf8sWyLLZ5w,1013
38
- jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=iFyrdmNuoi1C25qkL7kyUXd55Exl3Cb0iP8vRZQKsC0,586
39
+ jaclang/compiler/passes/main/tests/test_import_pass.py,sha256=2oRz8lO1ORiTn36NkkshpXeT_K0L_jM8KZuvxgVzbbE,1141
39
40
  jaclang/compiler/passes/main/tests/test_pyast_build_pass.py,sha256=LIT4TP-nhtftRtY5rNySRQlim-dWMSlkfUvkhZTk4pc,1383
40
41
  jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py,sha256=fNL_FS26AQGlRCvwWfl-Qyt7iW2_A99GIHOAnnkpw9A,4731
41
42
  jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py,sha256=If8PE4exN5g9o1NRElNC0XdfIwJAp7M7f69rzmYRYUQ,655
@@ -61,10 +62,12 @@ jaclang/compiler/tests/test_workspace.py,sha256=SEBcvz_daTbonrLHK9FbjiH86TUbOtVG
61
62
  jaclang/compiler/tests/fixtures/__init__.py,sha256=udQ0T6rajpW_nMiYKJNckqP8izZ-pH3P4PNTJEln2NU,36
62
63
  jaclang/compiler/tests/fixtures/activity.py,sha256=fSvxYDKufsPeQIrbuh031zHw_hdbRv5iK9mS7dD8E54,263
63
64
  jaclang/core/__init__.py,sha256=jDDYBCV82qPhmcDVk3NIvHbhng0ebSrXD3xrojg0-eo,34
64
- jaclang/core/aott.py,sha256=vqnoEwmAaLlasUDVI6k3d67OtqMquJ1YtgFELvLnKqk,7068
65
- jaclang/core/construct.py,sha256=_mYHEbUPY3Dn0rcl21eJXLqAGYH_0_C-x1K9HDa2RKk,13633
66
- jaclang/core/importer.py,sha256=gVJhQz7nKlIAzx7FF19cgmFQd_iRQuZ19Yz2SShLCPU,6020
65
+ jaclang/core/aott.py,sha256=MMFmel9cf1KrREjLUY9vV0b38pdb_4N3pxe5jMedBYA,7582
66
+ jaclang/core/construct.py,sha256=ZwgOO-P2OTv8d7mnxBkRg-AitrzYxsbFNqJZjRE9YqM,18649
67
+ jaclang/core/importer.py,sha256=JW_bxxEASklIBjezBiDaor95X6JLRUFspnN-zImtY8E,6100
68
+ jaclang/core/memory.py,sha256=QDOtAlxARQ_pg6NkmZ_QYKWhnIHzd2Mm1jzZUck7pRY,1415
67
69
  jaclang/core/registry.py,sha256=4uuXahPN4SMVEWwJ6Gjm5LM14rePMGoyjQtSbDQmQZs,4178
70
+ jaclang/core/shelve_storage.py,sha256=UsZRHM8KPGUlZTX_bfcxzabInNrTaQVNMatQifycMYg,1692
68
71
  jaclang/core/utils.py,sha256=5e4DyjtSweFxKeIuEyeYGV2MsuTtfnncfIwRdoyFdys,7736
69
72
  jaclang/core/llms/__init__.py,sha256=hxuxduH6ahhkXgJ9eUkhfn8LCS1KTz1ESuYgtspu_c0,371
70
73
  jaclang/core/llms/anthropic.py,sha256=JmgKLUTk27Hg221rt4QBLRjonxE_qLkkSgZuLFZUrCg,1979
@@ -75,19 +78,20 @@ jaclang/core/llms/ollama.py,sha256=mlNf844qgiBizVRRBfQt-pM8sN6dX7ESqdo2SXu8aE0,2
75
78
  jaclang/core/llms/openai.py,sha256=uG4BIW8x9NhWMhy9taqb4esIa3POO_cezsZ7ZclLan8,1975
76
79
  jaclang/core/llms/togetherai.py,sha256=MTPz7QasO2MjDn8hVCjOVU3SO6H6pF9Qoh7ZHmx46yw,2005
77
80
  jaclang/core/llms/utils.py,sha256=mTpROnh4qS8fE26TkcotSt-mAqWoSeEeRBOu0SgoPmA,219
78
- jaclang/plugin/__init__.py,sha256=qLbQ2KjwyTvlV50Q7JTIznyIzuGDPjuwM_ZJjdk-avo,182
79
- jaclang/plugin/builtin.py,sha256=D1R4GGNHX96P-wZnGm9OI4dMeCJvuXuHkCw2Cl5vaAU,1201
80
- jaclang/plugin/default.py,sha256=QuhAIMZ3Flhn4UVFm8vWVmAfAbqEFx_ekhqb84VO8og,24458
81
- jaclang/plugin/feature.py,sha256=u4UCLIaZ8DKhtpfKclfC3TUmx-SHfRttUdtgLrHo3Io,8853
82
- jaclang/plugin/spec.py,sha256=tPeekVbwxyBE2xlkff3FXxfQkAaFsyPKPX_5FjUwfPs,7968
81
+ jaclang/plugin/__init__.py,sha256=5t2krHKt_44PrCTGojzxEimxpNHYVQcn89jAiCSXE_k,165
82
+ jaclang/plugin/builtin.py,sha256=PP2Vs4p_oDbGYEx0iBFDYH49I4uSRnNVWgx2aOzorVA,1187
83
+ jaclang/plugin/default.py,sha256=EegsveW7I41Pvkh261LVr3smC08rcbUXLBkrhLTh9mY,27142
84
+ jaclang/plugin/feature.py,sha256=Qi30JWJvt51s9nx3eJ0_BSTYIeTYLHe-e26y0IjJLz8,9444
85
+ jaclang/plugin/spec.py,sha256=mJRUMGaIhlHbZIvO2J-A1q3eNhnIWJ0iBCPmxhHiHx4,9043
83
86
  jaclang/plugin/tests/__init__.py,sha256=rn_tNG8jCHWwBc_rx4yFkGc4N1GISb7aPuTFVRTvrTk,38
84
87
  jaclang/plugin/tests/test_features.py,sha256=uNQ52HHc0GiOGg5xUZk-ddafdtud0IHN4H_EUAs4er4,3547
88
+ jaclang/plugin/tests/test_jaseci.py,sha256=XcVL-FOZMTsjJEZqCa-rcYyEPl1dxdFFu9vhvm8kUaI,7956
85
89
  jaclang/utils/__init__.py,sha256=86LQ_LDyWV-JFkYBpeVHpLaVxkqwFDP60XpWXOFZIQk,46
86
90
  jaclang/utils/helpers.py,sha256=6tfu2paCSSAUzJMZlMVl4ftbf9HOWN4TaJz7U-S0G1g,5831
87
91
  jaclang/utils/lang_tools.py,sha256=odv66Os8bJvw9JIUUkccGWvEPL98c-60veAiOiNyTy4,9956
88
92
  jaclang/utils/log.py,sha256=G8Y_DnETgTh9xzvlW5gh9zqJ1ap4YY_MDTwIMu5Uc0Y,262
89
93
  jaclang/utils/test.py,sha256=7-2Te0GQcKY3RJfNKa3cEJjG-RMC1r-0fHuOcFXrmE8,5383
90
- jaclang/utils/treeprinter.py,sha256=wRWUaEVxnNdcbTYyQ5PJiSJ2PI4UoNTZzHadwSZ_eUE,11117
94
+ jaclang/utils/treeprinter.py,sha256=v9VSvo23fgyqwImpI07BbTMcIT9hIhP3qpKrUorQqMw,11414
91
95
  jaclang/utils/tests/__init__.py,sha256=8uwVqMsc6cxBAM1DuHLuNuTnzLXqOqM-WRa4ixOMF6w,23
92
96
  jaclang/utils/tests/test_lang_tools.py,sha256=YmV1AWieSoqcxWJYnxX1Lz3dZAR0rRvz6billsGJdHY,4144
93
97
  jaclang/vendor/__init__.py,sha256=pbflH5hBfDiKfTJEjIXId44Eof8CVmXQlZwFYDG6_4E,35
@@ -419,8 +423,8 @@ jaclang/vendor/pluggy/_manager.py,sha256=fcYU7VER0CplRym4jAJ7RCFYl6cfDSeVM589YHH
419
423
  jaclang/vendor/pluggy/_result.py,sha256=wXDoVy68bOaOrBzQ0bWFb3HTbpqhvdQMgYwaZvfzxfA,3239
420
424
  jaclang/vendor/pluggy/_tracing.py,sha256=kSBr25F_rNklV2QhLD6h1jx6Z1kcKDRbuYvF5jv35pU,2089
421
425
  jaclang/vendor/pluggy/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
422
- jaclang-0.6.0.dist-info/METADATA,sha256=oFL9x1Tyx0ZnVcb1BKmakhCSneRit3Qtabu7QOGiQXk,546
423
- jaclang-0.6.0.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
424
- jaclang-0.6.0.dist-info/entry_points.txt,sha256=Z-snS3MDBdV1Z4znXDZTenyyndovaNjqRkDW1t2kYSs,50
425
- jaclang-0.6.0.dist-info/top_level.txt,sha256=ZOAoLpE67ozkUJd-v3C59wBNXiteRD8IWPbsYB3M08g,8
426
- jaclang-0.6.0.dist-info/RECORD,,
426
+ jaclang-0.6.1.dist-info/METADATA,sha256=S-qS3kFV3qS56zFcgi913MsaleTwimf3H-rfNgW-J6Y,546
427
+ jaclang-0.6.1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
428
+ jaclang-0.6.1.dist-info/entry_points.txt,sha256=Z-snS3MDBdV1Z4znXDZTenyyndovaNjqRkDW1t2kYSs,50
429
+ jaclang-0.6.1.dist-info/top_level.txt,sha256=ZOAoLpE67ozkUJd-v3C59wBNXiteRD8IWPbsYB3M08g,8
430
+ jaclang-0.6.1.dist-info/RECORD,,