jaclang 0.7.31__py3-none-any.whl → 0.7.32__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/compiler/parser.py +591 -758
- jaclang/compiler/passes/main/inheritance_pass.py +20 -1
- jaclang/plugin/default.py +13 -2
- jaclang/plugin/tests/fixtures/traversing_save.jac +17 -0
- jaclang/plugin/tests/test_jaseci.py +33 -0
- jaclang/tests/fixtures/base_class_complex_expr.jac +38 -0
- jaclang/tests/test_cli.py +21 -0
- jaclang/utils/profiler.py +62 -0
- {jaclang-0.7.31.dist-info → jaclang-0.7.32.dist-info}/METADATA +1 -1
- {jaclang-0.7.31.dist-info → jaclang-0.7.32.dist-info}/RECORD +12 -9
- {jaclang-0.7.31.dist-info → jaclang-0.7.32.dist-info}/WHEEL +0 -0
- {jaclang-0.7.31.dist-info → jaclang-0.7.32.dist-info}/entry_points.txt +0 -0
|
@@ -34,7 +34,7 @@ class InheritancePass(Pass):
|
|
|
34
34
|
for item in node.base_classes.items:
|
|
35
35
|
# The assumption is that the base class can only be a name node
|
|
36
36
|
# or an atom trailer only.
|
|
37
|
-
assert isinstance(item, (ast.Name, ast.AtomTrailer))
|
|
37
|
+
assert isinstance(item, (ast.Name, ast.AtomTrailer, ast.FuncCall))
|
|
38
38
|
|
|
39
39
|
# In case of name node, then get the symbol table that contains
|
|
40
40
|
# the current class and lookup for that name after that use the
|
|
@@ -63,6 +63,11 @@ class InheritancePass(Pass):
|
|
|
63
63
|
assert base_class_symbol_table is not None
|
|
64
64
|
node.sym_tab.inherit_sym_tab(base_class_symbol_table)
|
|
65
65
|
|
|
66
|
+
elif isinstance(item, ast.FuncCall):
|
|
67
|
+
self.__debug_print(
|
|
68
|
+
"Base class depends on the type of a function call expression, this is not supported yet"
|
|
69
|
+
)
|
|
70
|
+
|
|
66
71
|
# In case of atom trailer, unwind it and use each name node to
|
|
67
72
|
# as the code above to lookup for the base class
|
|
68
73
|
elif isinstance(item, ast.AtomTrailer):
|
|
@@ -94,6 +99,20 @@ class InheritancePass(Pass):
|
|
|
94
99
|
not_found = True
|
|
95
100
|
break
|
|
96
101
|
|
|
102
|
+
if (
|
|
103
|
+
current_sym_table is None
|
|
104
|
+
and item.as_attr_list.index(name) < len(item.as_attr_list) - 1
|
|
105
|
+
and isinstance(
|
|
106
|
+
item.as_attr_list[item.as_attr_list.index(name) + 1],
|
|
107
|
+
ast.IndexSlice,
|
|
108
|
+
)
|
|
109
|
+
):
|
|
110
|
+
msg = "Base class depends on the type of an "
|
|
111
|
+
msg += "Index slice expression, this is not supported yet"
|
|
112
|
+
self.__debug_print(msg)
|
|
113
|
+
not_found = True
|
|
114
|
+
break
|
|
115
|
+
|
|
97
116
|
assert current_sym_table is not None
|
|
98
117
|
|
|
99
118
|
if not_found:
|
jaclang/plugin/default.py
CHANGED
|
@@ -1136,8 +1136,6 @@ class JacFeatureImpl(
|
|
|
1136
1136
|
raise ValueError(f"Invalid attribute: {fld}")
|
|
1137
1137
|
if source.persistent or target.persistent:
|
|
1138
1138
|
Jac.save(eanch)
|
|
1139
|
-
Jac.save(target)
|
|
1140
|
-
Jac.save(source)
|
|
1141
1139
|
return edge
|
|
1142
1140
|
|
|
1143
1141
|
return builder
|
|
@@ -1155,6 +1153,19 @@ class JacFeatureImpl(
|
|
|
1155
1153
|
|
|
1156
1154
|
jctx.mem.set(anchor.id, anchor)
|
|
1157
1155
|
|
|
1156
|
+
match anchor:
|
|
1157
|
+
case NodeAnchor():
|
|
1158
|
+
for ed in anchor.edges:
|
|
1159
|
+
if ed.is_populated() and not ed.persistent:
|
|
1160
|
+
Jac.save(ed)
|
|
1161
|
+
case EdgeAnchor():
|
|
1162
|
+
if (src := anchor.source) and src.is_populated() and not src.persistent:
|
|
1163
|
+
Jac.save(src)
|
|
1164
|
+
if (trg := anchor.target) and trg.is_populated() and not trg.persistent:
|
|
1165
|
+
Jac.save(trg)
|
|
1166
|
+
case _:
|
|
1167
|
+
pass
|
|
1168
|
+
|
|
1158
1169
|
@staticmethod
|
|
1159
1170
|
@hookimpl
|
|
1160
1171
|
def destroy(obj: Architype | Anchor) -> None:
|
|
@@ -816,3 +816,36 @@ class TestJaseciPlugin(TestCase):
|
|
|
816
816
|
session=session,
|
|
817
817
|
)
|
|
818
818
|
self.assertEqual("None", self.capturedOutput.getvalue().strip())
|
|
819
|
+
|
|
820
|
+
def test_traversing_save(self) -> None:
|
|
821
|
+
"""Test traversing save."""
|
|
822
|
+
global session
|
|
823
|
+
session = self.fixture_abs_path("traversing_save.session")
|
|
824
|
+
|
|
825
|
+
self._output2buffer()
|
|
826
|
+
cli.enter(
|
|
827
|
+
filename=self.fixture_abs_path("traversing_save.jac"),
|
|
828
|
+
entrypoint="build",
|
|
829
|
+
args=[],
|
|
830
|
+
session=session,
|
|
831
|
+
)
|
|
832
|
+
|
|
833
|
+
cli.enter(
|
|
834
|
+
filename=self.fixture_abs_path("traversing_save.jac"),
|
|
835
|
+
entrypoint="view",
|
|
836
|
+
args=[],
|
|
837
|
+
session=session,
|
|
838
|
+
)
|
|
839
|
+
|
|
840
|
+
self.assertEqual(
|
|
841
|
+
"digraph {\n"
|
|
842
|
+
'node [style="filled", shape="ellipse", fillcolor="invis", fontcolor="black"];\n'
|
|
843
|
+
'0 -> 1 [label=""];\n'
|
|
844
|
+
'1 -> 2 [label=""];\n'
|
|
845
|
+
'0 [label="Root()"fillcolor="#FFE9E9"];\n'
|
|
846
|
+
'1 [label="A()"fillcolor="#F0FFF0"];\n'
|
|
847
|
+
'2 [label="B()"fillcolor="#F5E5FF"];\n}',
|
|
848
|
+
self.capturedOutput.getvalue().strip(),
|
|
849
|
+
)
|
|
850
|
+
|
|
851
|
+
self._del_session(session)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
class Apple {
|
|
2
|
+
with entry {
|
|
3
|
+
a = 1;
|
|
4
|
+
}
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
class Orange {
|
|
8
|
+
with entry {
|
|
9
|
+
b = 2;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
with entry {
|
|
14
|
+
mm = [Apple, Orange];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
class Banana :mm[1]: {
|
|
18
|
+
with entry {
|
|
19
|
+
c = 3;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
can return_class() -> `Type[Apple] {
|
|
24
|
+
print('Returning Apple');
|
|
25
|
+
return Apple;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class Kiwi :return_class(): {
|
|
29
|
+
with entry {
|
|
30
|
+
d = 4;
|
|
31
|
+
;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
with entry {
|
|
36
|
+
a = Kiwi();
|
|
37
|
+
print(Kiwi.d);
|
|
38
|
+
}
|
jaclang/tests/test_cli.py
CHANGED
|
@@ -294,6 +294,27 @@ class JacCliTests(TestCase):
|
|
|
294
294
|
r"10:7 - 10:12.*Name - start - Type.*SymbolPath: base_class2.B.start",
|
|
295
295
|
)
|
|
296
296
|
|
|
297
|
+
def test_base_class_complex_expr(self) -> None:
|
|
298
|
+
"""Testing for print AstTool."""
|
|
299
|
+
from jaclang.settings import settings
|
|
300
|
+
|
|
301
|
+
# settings.ast_symbol_info_detailed = True
|
|
302
|
+
captured_output = io.StringIO()
|
|
303
|
+
sys.stdout = captured_output
|
|
304
|
+
|
|
305
|
+
cli.tool(
|
|
306
|
+
"ir", ["ast", f"{self.fixture_abs_path('base_class_complex_expr.jac')}"]
|
|
307
|
+
)
|
|
308
|
+
|
|
309
|
+
sys.stdout = sys.__stdout__
|
|
310
|
+
stdout_value = captured_output.getvalue()
|
|
311
|
+
settings.ast_symbol_info_detailed = False
|
|
312
|
+
|
|
313
|
+
self.assertRegex(
|
|
314
|
+
stdout_value,
|
|
315
|
+
r"36\:9 \- 36\:13.*Name \- Kiwi \- Type\: base_class_complex_expr.Kiwi, SymbolTable\: Kiwi",
|
|
316
|
+
)
|
|
317
|
+
|
|
297
318
|
def test_expr_types(self) -> None:
|
|
298
319
|
"""Testing for print AstTool."""
|
|
299
320
|
captured_output = io.StringIO()
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import time
|
|
2
|
+
from contextlib import contextmanager
|
|
3
|
+
from functools import wraps
|
|
4
|
+
from typing import Callable, Dict, Generator, ParamSpec, TypeVar
|
|
5
|
+
|
|
6
|
+
P = ParamSpec("P")
|
|
7
|
+
R = TypeVar("R")
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class CodeProfiler:
|
|
11
|
+
|
|
12
|
+
markers: Dict[str, float] = {}
|
|
13
|
+
|
|
14
|
+
@staticmethod
|
|
15
|
+
def time_function(func: Callable[P, R]) -> Callable[P, R]:
|
|
16
|
+
"""Measure and print the execution time of a function."""
|
|
17
|
+
|
|
18
|
+
@wraps(func)
|
|
19
|
+
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R:
|
|
20
|
+
start_time = time.perf_counter()
|
|
21
|
+
result = func(*args, **kwargs)
|
|
22
|
+
end_time = time.perf_counter()
|
|
23
|
+
print(
|
|
24
|
+
f"Function '{func.__name__}' took {end_time - start_time:.6f} seconds"
|
|
25
|
+
)
|
|
26
|
+
return result
|
|
27
|
+
|
|
28
|
+
return wrapper
|
|
29
|
+
|
|
30
|
+
@staticmethod
|
|
31
|
+
def start_marker(marker_name: str) -> None:
|
|
32
|
+
"""Start a named marker to measure a specific section of code."""
|
|
33
|
+
if marker_name in CodeProfiler.markers:
|
|
34
|
+
print(f"Warning: Marker '{marker_name}' is already running.")
|
|
35
|
+
CodeProfiler.markers[marker_name] = time.perf_counter()
|
|
36
|
+
|
|
37
|
+
@staticmethod
|
|
38
|
+
def end_marker(marker_name: str) -> None:
|
|
39
|
+
"""End the named marker and print the time taken since it started."""
|
|
40
|
+
if marker_name not in CodeProfiler.markers:
|
|
41
|
+
print(f"Error: Marker '{marker_name}' does not exist.")
|
|
42
|
+
return
|
|
43
|
+
start_time = CodeProfiler.markers.pop(marker_name)
|
|
44
|
+
end_time = time.perf_counter()
|
|
45
|
+
print(f"Marker '{marker_name}' took {end_time - start_time:.6f} seconds")
|
|
46
|
+
|
|
47
|
+
@staticmethod
|
|
48
|
+
@contextmanager
|
|
49
|
+
def profile_section(section_name: str) -> Generator[None, None, None]:
|
|
50
|
+
"""
|
|
51
|
+
A context manager for profiling a block of code.
|
|
52
|
+
|
|
53
|
+
Usage:
|
|
54
|
+
with CodeProfiler.profile_section("My Block"):
|
|
55
|
+
# code to profile
|
|
56
|
+
"""
|
|
57
|
+
start_time = time.perf_counter()
|
|
58
|
+
try:
|
|
59
|
+
yield
|
|
60
|
+
finally:
|
|
61
|
+
end_time = time.perf_counter()
|
|
62
|
+
print(f"Section '{section_name}' took {end_time - start_time:.6f} seconds")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: jaclang
|
|
3
|
-
Version: 0.7.
|
|
3
|
+
Version: 0.7.32
|
|
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
|
|
@@ -11,7 +11,7 @@ jaclang/compiler/codeloc.py,sha256=clz7ofOE0Rgf7eqco3zEO31mCbG3Skj9-rLooliBeik,2
|
|
|
11
11
|
jaclang/compiler/compile.py,sha256=FD3jxK8zoxdpQrYRJvwO3CoPWjYL3bbW2WhPRzj3hz8,3796
|
|
12
12
|
jaclang/compiler/constant.py,sha256=4aS0haM9X7WI0mJmzsWuEecF1yWHadC1lOLGOOUyNY0,8994
|
|
13
13
|
jaclang/compiler/jac.lark,sha256=SzEc1Ae6Q8QUtBzW1R3OnPTQMpiQGrN-PE25TL_psAs,19848
|
|
14
|
-
jaclang/compiler/parser.py,sha256=
|
|
14
|
+
jaclang/compiler/parser.py,sha256=3OG4H43kMCSufKoy4EBoIKiuEj5fFk7QOwqJb-lMJFU,121426
|
|
15
15
|
jaclang/compiler/passes/__init__.py,sha256=0Tw0d130ZjzA05jVcny9cf5NfLjlaM70PKqFnY4zqn4,69
|
|
16
16
|
jaclang/compiler/passes/ir_pass.py,sha256=CgtuBrVjfG7PgTCLNSjxgFffYR5naTC3tIjOjsXx5gk,5597
|
|
17
17
|
jaclang/compiler/passes/main/__init__.py,sha256=m5ukLwMcdoi85Ee80-A-zDLbg81z0ztT2IKhOCegNpE,973
|
|
@@ -20,7 +20,7 @@ jaclang/compiler/passes/main/def_impl_match_pass.py,sha256=cCOXyL-yyLxIvSyrlhOtV
|
|
|
20
20
|
jaclang/compiler/passes/main/def_use_pass.py,sha256=3rfLaQw4mScSedqPCY8vVkvZH77TTOKEbBYYGC0SZnA,9634
|
|
21
21
|
jaclang/compiler/passes/main/fuse_typeinfo_pass.py,sha256=bjxeE_90AFy9jN9VomOsoyVFIqO2Kp3UHAjPNF-APGA,26928
|
|
22
22
|
jaclang/compiler/passes/main/import_pass.py,sha256=ouOuVzA_wloNG_t3Ec9gTEu6JuPZtwXiL6Kgtoan6gc,23090
|
|
23
|
-
jaclang/compiler/passes/main/inheritance_pass.py,sha256=
|
|
23
|
+
jaclang/compiler/passes/main/inheritance_pass.py,sha256=IDzfMSezJmNdBwN_dwguu1qYL8YzwBuNPFrk6HEkTco,5586
|
|
24
24
|
jaclang/compiler/passes/main/py_collect_dep_pass.py,sha256=TE4h6HLYRE5YdHZK9gtbPPaBJBLOg0g0xSlT_oPzwzY,2874
|
|
25
25
|
jaclang/compiler/passes/main/pyast_gen_pass.py,sha256=jeBpx-vxo0_OODMm82iCF6Fl1xNgQKFa1gt63AWw8zY,133057
|
|
26
26
|
jaclang/compiler/passes/main/pyast_load_pass.py,sha256=VmlR1j0iY60nFF9DrWVwWrvpUDZpXamkfoyF7miqysA,94697
|
|
@@ -169,7 +169,7 @@ jaclang/langserve/tests/test_server.py,sha256=Z-RXNuCXFPi67uXkW1hmoJmrb37VFRpRdH
|
|
|
169
169
|
jaclang/langserve/utils.py,sha256=edZCrq8ZFolao-rvv5RGPxtnEh6NmhrxOgPh8VxmEPs,15019
|
|
170
170
|
jaclang/plugin/__init__.py,sha256=5t2krHKt_44PrCTGojzxEimxpNHYVQcn89jAiCSXE_k,165
|
|
171
171
|
jaclang/plugin/builtin.py,sha256=pYw5Ox-bYi_c-lF6FLA7cBLRIKX8dBrIrEutnhmXisU,1468
|
|
172
|
-
jaclang/plugin/default.py,sha256=
|
|
172
|
+
jaclang/plugin/default.py,sha256=6rwqlXITRbjbERvMMbKtJnk_yhS9M1koHQrfoecunC8,48829
|
|
173
173
|
jaclang/plugin/feature.py,sha256=gYpb0MHPwwLMqWPgmn2BdQcwknGoHR5MFIm0L0--6Yc,17521
|
|
174
174
|
jaclang/plugin/plugin.md,sha256=B252QTH3c8uZyvXTbGmZBafZtdXstFC5vT5jIN_gS4U,9994
|
|
175
175
|
jaclang/plugin/spec.py,sha256=xylKtCYzImXv0-FgZfJ5xEb1QoVHkEivWQ0FvwoUnVQ,15054
|
|
@@ -181,8 +181,9 @@ jaclang/plugin/tests/fixtures/other_root_access.jac,sha256=32uTTbN-VVNHOwpF8AXNS
|
|
|
181
181
|
jaclang/plugin/tests/fixtures/savable_object.jac,sha256=SPMmuXkC2QjNNmJ_CEbid86fd0ncanPTs6hLKDe7T04,2032
|
|
182
182
|
jaclang/plugin/tests/fixtures/simple_node_connection.jac,sha256=KdbpACWtnj92TqQqEunwoI4VKhlnhcJCKMkbgh0Xqxg,1067
|
|
183
183
|
jaclang/plugin/tests/fixtures/simple_persistent.jac,sha256=o0TZTOJEZjFW8A2IGY8ICBZEBZzHhqha0xQFFBK_DSI,624
|
|
184
|
+
jaclang/plugin/tests/fixtures/traversing_save.jac,sha256=Y7ki1eVUzY9O5nhbrjb_JATk6ySsD1GyBfjj-YdImgs,252
|
|
184
185
|
jaclang/plugin/tests/test_features.py,sha256=sK9d2UazofGl9qYZO_ODKmOHZY8E4fnXNoyw-_KQI9A,2344
|
|
185
|
-
jaclang/plugin/tests/test_jaseci.py,sha256=
|
|
186
|
+
jaclang/plugin/tests/test_jaseci.py,sha256=owGt7_IM_aW8uP3nBjRrGaAaouno2uxDyy_zB-QHAKY,28431
|
|
186
187
|
jaclang/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
187
188
|
jaclang/runtimelib/__init__.py,sha256=jDDYBCV82qPhmcDVk3NIvHbhng0ebSrXD3xrojg0-eo,34
|
|
188
189
|
jaclang/runtimelib/architype.py,sha256=rcxXe34Vtoz-tNQPqPHmmnh2-G_iJJCjfdXDO5k9kQc,8474
|
|
@@ -208,6 +209,7 @@ jaclang/tests/fixtures/baddy.test.jac,sha256=Uq-Nlf44QUAtbOfDCbc9_ceLxmo31PILDTS
|
|
|
208
209
|
jaclang/tests/fixtures/bar.jac,sha256=XZWOrzgMQed2R611DLfzCvWUT4a4gTYZXWRYvizMb18,782
|
|
209
210
|
jaclang/tests/fixtures/base_class1.jac,sha256=OlQSzWdas7AKrvZb-gfq8DdwwearzOke3stE6TFXVQA,124
|
|
210
211
|
jaclang/tests/fixtures/base_class2.jac,sha256=B-MD5LYDVJMTxEC9-B7tJyW900ymYU7p_hcmZm5eNRg,118
|
|
212
|
+
jaclang/tests/fixtures/base_class_complex_expr.jac,sha256=TW-uqrFInAVs3xCiWvMJkntYJZmb8jpSWFJetpu45Xk,436
|
|
211
213
|
jaclang/tests/fixtures/blankwithentry.jac,sha256=lnMDDKyKnldsUIx1AVCIHt47KY3gR2CZYhox8663sLM,53
|
|
212
214
|
jaclang/tests/fixtures/builtin_dotgen.jac,sha256=U2r_bmSsMDuJWuo9vYoRCgRIo9NA9-VkaaiacvAMeS8,1814
|
|
213
215
|
jaclang/tests/fixtures/builtins_test.jac,sha256=1eJXipIFpa8IDjKv20TjAW_k4hTtJzNT1cKnQOAVt28,244
|
|
@@ -318,7 +320,7 @@ jaclang/tests/fixtures/with_context.jac,sha256=cDA_4YWe5UVmQRgcpktzkZ_zsswQpV_T2
|
|
|
318
320
|
jaclang/tests/foo/__init__.jac,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
319
321
|
jaclang/tests/main.jac,sha256=UJ4dASLCMA3wW78Rq3AHcq5GfXVY5QBm2S16OCrR1hQ,13
|
|
320
322
|
jaclang/tests/test_bugs.py,sha256=tBPsIlSPqZDIz4QaScNRT-WdGIdJ0uU-aRBWq1XUZ6o,555
|
|
321
|
-
jaclang/tests/test_cli.py,sha256=
|
|
323
|
+
jaclang/tests/test_cli.py,sha256=j79-e3lVk_oBuy6pAwfjE8D-q5UsUQxEF5yoexWj8Jg,20040
|
|
322
324
|
jaclang/tests/test_language.py,sha256=znQDqixddJMGS5MYr7FZIbdQ4uO41yqermdVbcmAdFI,51745
|
|
323
325
|
jaclang/tests/test_man_code.py,sha256=ZdNarlZVfT_-8Jv3FjLplHw76tsvkCuISyfX3M4qxPg,5027
|
|
324
326
|
jaclang/tests/test_reference.py,sha256=vZC0P1zptbxzc9CwgbhqA2tGVML_ptL8tON9Czh_dJg,3359
|
|
@@ -327,6 +329,7 @@ jaclang/utils/__init__.py,sha256=86LQ_LDyWV-JFkYBpeVHpLaVxkqwFDP60XpWXOFZIQk,46
|
|
|
327
329
|
jaclang/utils/helpers.py,sha256=oL5yvcSalOdzsZ5yUDaMu70MnvBjvGRFJD94kGhLqT0,10410
|
|
328
330
|
jaclang/utils/lang_tools.py,sha256=HECF9zXH8si6Q_oBhSSoOMmv-k8ppKPb6RAlX_wZPWE,10177
|
|
329
331
|
jaclang/utils/log.py,sha256=G8Y_DnETgTh9xzvlW5gh9zqJ1ap4YY_MDTwIMu5Uc0Y,262
|
|
332
|
+
jaclang/utils/profiler.py,sha256=0lPKlMiMlUw2AdZI9MjP4ktOZz4yAzFsl5NgOJIW2yU,2083
|
|
330
333
|
jaclang/utils/test.py,sha256=c12ZyRvG2IQtuRaU9XEGBrdM26fH82tWP9u64HH2Mz4,6089
|
|
331
334
|
jaclang/utils/tests/__init__.py,sha256=8uwVqMsc6cxBAM1DuHLuNuTnzLXqOqM-WRa4ixOMF6w,23
|
|
332
335
|
jaclang/utils/tests/test_lang_tools.py,sha256=wIMWdoKF24gVTlG_dGLAxetZhGmBF8cftUY-bugNOOQ,4879
|
|
@@ -1553,7 +1556,7 @@ jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA,sha256=BeUQIa8cnYbrjW
|
|
|
1553
1556
|
jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD,sha256=XS4fBVrPI7kaNZ56Ggl2RGa76jySWLqTzcrUpZIQTVM,418
|
|
1554
1557
|
jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81
|
|
1555
1558
|
jaclang/vendor/typing_extensions.py,sha256=gwekpyG9DVG3lxWKX4ni8u7nk3We5slG98mA9F3DJQw,134451
|
|
1556
|
-
jaclang-0.7.
|
|
1557
|
-
jaclang-0.7.
|
|
1558
|
-
jaclang-0.7.
|
|
1559
|
-
jaclang-0.7.
|
|
1559
|
+
jaclang-0.7.32.dist-info/METADATA,sha256=ceJwm1Seys2lWaURbPqWVexHsrF0sZT6fZBczWy97ro,4977
|
|
1560
|
+
jaclang-0.7.32.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
|
|
1561
|
+
jaclang-0.7.32.dist-info/entry_points.txt,sha256=8sMi4Tvi9f8tQDN2QAXsSA2icO27zQ4GgEdph6bNEZM,49
|
|
1562
|
+
jaclang-0.7.32.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|