jaseci 1.4.2.6__py3-none-any.whl → 2.0.0__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 jaseci might be problematic. Click here for more details.

Files changed (187) hide show
  1. jaseci/__init__.py +3 -37
  2. jaseci-2.0.0.dist-info/METADATA +65 -0
  3. jaseci-2.0.0.dist-info/RECORD +4 -0
  4. {jaseci-1.4.2.6.dist-info → jaseci-2.0.0.dist-info}/WHEEL +1 -2
  5. jaseci/VERSION +0 -1
  6. jaseci/cli_tools/__init__.py +0 -0
  7. jaseci/cli_tools/book_tools.py +0 -457
  8. jaseci/cli_tools/jsctl.py +0 -500
  9. jaseci/cli_tools/tests/__init__.py +0 -0
  10. jaseci/cli_tools/tests/test_jsctl.py +0 -556
  11. jaseci/extens/__init__.py +0 -0
  12. jaseci/extens/act_lib/__init__.py +0 -0
  13. jaseci/extens/act_lib/date.py +0 -118
  14. jaseci/extens/act_lib/elastic.py +0 -87
  15. jaseci/extens/act_lib/file.py +0 -77
  16. jaseci/extens/act_lib/file_handler.py +0 -190
  17. jaseci/extens/act_lib/internal.py +0 -19
  18. jaseci/extens/act_lib/jaseci.py +0 -62
  19. jaseci/extens/act_lib/mail.py +0 -10
  20. jaseci/extens/act_lib/maths.py +0 -168
  21. jaseci/extens/act_lib/net.py +0 -192
  22. jaseci/extens/act_lib/rand.py +0 -83
  23. jaseci/extens/act_lib/regex.py +0 -85
  24. jaseci/extens/act_lib/request.py +0 -170
  25. jaseci/extens/act_lib/std.py +0 -236
  26. jaseci/extens/act_lib/storage.py +0 -53
  27. jaseci/extens/act_lib/stripe.py +0 -338
  28. jaseci/extens/act_lib/task.py +0 -14
  29. jaseci/extens/act_lib/tests/__init__.py +0 -0
  30. jaseci/extens/act_lib/tests/std_test_code.py +0 -37
  31. jaseci/extens/act_lib/tests/test_date.py +0 -26
  32. jaseci/extens/act_lib/tests/test_elastic.py +0 -159
  33. jaseci/extens/act_lib/tests/test_file.py +0 -116
  34. jaseci/extens/act_lib/tests/test_file_lib.py +0 -40
  35. jaseci/extens/act_lib/tests/test_mail_lib.py +0 -33
  36. jaseci/extens/act_lib/tests/test_maths.py +0 -147
  37. jaseci/extens/act_lib/tests/test_net_lib.py +0 -62
  38. jaseci/extens/act_lib/tests/test_regex.py +0 -61
  39. jaseci/extens/act_lib/tests/test_std.py +0 -51
  40. jaseci/extens/act_lib/tests/test_std_lib.py +0 -36
  41. jaseci/extens/act_lib/tests/test_url.py +0 -32
  42. jaseci/extens/act_lib/tests/test_vector.py +0 -36
  43. jaseci/extens/act_lib/tests/test_webtool.py +0 -44
  44. jaseci/extens/act_lib/tests/test_zlib.py +0 -24
  45. jaseci/extens/act_lib/url.py +0 -80
  46. jaseci/extens/act_lib/vector.py +0 -158
  47. jaseci/extens/act_lib/webtool.py +0 -29
  48. jaseci/extens/act_lib/zip.py +0 -34
  49. jaseci/extens/api/__init__.py +0 -0
  50. jaseci/extens/api/actions_api.py +0 -171
  51. jaseci/extens/api/alias_api.py +0 -140
  52. jaseci/extens/api/architype_api.py +0 -197
  53. jaseci/extens/api/config_api.py +0 -129
  54. jaseci/extens/api/global_api.py +0 -85
  55. jaseci/extens/api/graph_api.py +0 -168
  56. jaseci/extens/api/health_api.py +0 -21
  57. jaseci/extens/api/interface.py +0 -269
  58. jaseci/extens/api/jac_api.py +0 -172
  59. jaseci/extens/api/jsorc_api.py +0 -317
  60. jaseci/extens/api/logger_api.py +0 -90
  61. jaseci/extens/api/master_api.py +0 -134
  62. jaseci/extens/api/object_api.py +0 -102
  63. jaseci/extens/api/prometheus_api.py +0 -75
  64. jaseci/extens/api/queue_api.py +0 -141
  65. jaseci/extens/api/sentinel_api.py +0 -271
  66. jaseci/extens/api/share_api.py +0 -64
  67. jaseci/extens/api/super_api.py +0 -65
  68. jaseci/extens/api/tests/__init__.py +0 -0
  69. jaseci/extens/api/tests/test_architype_api.py +0 -66
  70. jaseci/extens/api/tests/test_global_api.py +0 -179
  71. jaseci/extens/api/tests/test_graph_api.py +0 -64
  72. jaseci/extens/api/tests/test_logger_api.py +0 -43
  73. jaseci/extens/api/tests/test_object_api.py +0 -20
  74. jaseci/extens/api/tests/test_sentinel_api.py +0 -66
  75. jaseci/extens/api/tests/test_uncommon.py +0 -107
  76. jaseci/extens/api/tests/test_user_api.py +0 -32
  77. jaseci/extens/api/tests/test_walker_api.py +0 -316
  78. jaseci/extens/api/user_api.py +0 -166
  79. jaseci/extens/api/walker_api.py +0 -299
  80. jaseci/extens/api/webhook_api.py +0 -77
  81. jaseci/extens/svc/__init__.py +0 -0
  82. jaseci/extens/svc/elastic_svc.py +0 -366
  83. jaseci/extens/svc/kube_svc.py +0 -432
  84. jaseci/extens/svc/mail_svc.py +0 -156
  85. jaseci/extens/svc/prome_svc.py +0 -378
  86. jaseci/extens/svc/redis_svc.py +0 -63
  87. jaseci/extens/svc/storage_svc.py +0 -193
  88. jaseci/extens/svc/stripe_svc.py +0 -51
  89. jaseci/extens/svc/task_svc.py +0 -155
  90. jaseci/extens/svc/tasks.py +0 -302
  91. jaseci/jac/__init__.py +0 -0
  92. jaseci/jac/interpreter/__init__.py +0 -0
  93. jaseci/jac/interpreter/architype_interp.py +0 -219
  94. jaseci/jac/interpreter/interp.py +0 -1784
  95. jaseci/jac/interpreter/sentinel_interp.py +0 -260
  96. jaseci/jac/interpreter/tests/__init__.py +0 -0
  97. jaseci/jac/interpreter/tests/test_interp.py +0 -42
  98. jaseci/jac/interpreter/walker_interp.py +0 -249
  99. jaseci/jac/ir/__init__.py +0 -0
  100. jaseci/jac/ir/ast.py +0 -73
  101. jaseci/jac/ir/ast_builder.py +0 -249
  102. jaseci/jac/ir/jac_code.py +0 -151
  103. jaseci/jac/ir/passes/__init__.py +0 -6
  104. jaseci/jac/ir/passes/ast_prune_pass.py +0 -9
  105. jaseci/jac/ir/passes/codegen_pass.py +0 -244
  106. jaseci/jac/ir/passes/ir_pass.py +0 -29
  107. jaseci/jac/ir/passes/printer_pass.py +0 -23
  108. jaseci/jac/ir/passes/pt_prune_pass.py +0 -29
  109. jaseci/jac/ir/passes/schedule.py +0 -23
  110. jaseci/jac/ir/passes/stats_pass.py +0 -16
  111. jaseci/jac/jac.g4 +0 -450
  112. jaseci/jac/jac_parse/__init__.py +0 -0
  113. jaseci/jac/jac_parse/jacLexer.py +0 -809
  114. jaseci/jac/jac_parse/jacListener.py +0 -853
  115. jaseci/jac/jac_parse/jacParser.py +0 -9192
  116. jaseci/jac/jac_set.py +0 -120
  117. jaseci/jac/jsci_vm/__init__.py +0 -0
  118. jaseci/jac/jsci_vm/disasm.py +0 -94
  119. jaseci/jac/jsci_vm/inst_ptr.py +0 -31
  120. jaseci/jac/jsci_vm/machine.py +0 -188
  121. jaseci/jac/jsci_vm/op_codes.py +0 -82
  122. jaseci/jac/jsci_vm/tests/__init__.py +0 -0
  123. jaseci/jac/jsci_vm/tests/test_codegen.py +0 -31
  124. jaseci/jac/machine/__init__.py +0 -0
  125. jaseci/jac/machine/jac_scope.py +0 -86
  126. jaseci/jac/machine/jac_value.py +0 -227
  127. jaseci/jac/machine/machine_state.py +0 -386
  128. jaseci/jac/tests/__init__.py +0 -0
  129. jaseci/jac/tests/book_code.py +0 -624
  130. jaseci/jac/tests/test_book.py +0 -380
  131. jaseci/jac/tests/test_lang_14.py +0 -49
  132. jaseci/jsorc/__init__.py +0 -7
  133. jaseci/jsorc/jsorc.py +0 -642
  134. jaseci/jsorc/jsorc_settings.py +0 -211
  135. jaseci/jsorc/jsorc_utils.py +0 -298
  136. jaseci/jsorc/live_actions.py +0 -365
  137. jaseci/jsorc/manifests/__init__.py +0 -0
  138. jaseci/jsorc/manifests/database.yaml +0 -109
  139. jaseci/jsorc/manifests/elastic.yaml +0 -6029
  140. jaseci/jsorc/manifests/prometheus.yaml +0 -1383
  141. jaseci/jsorc/manifests/redis.yaml +0 -64
  142. jaseci/jsorc/memory.py +0 -258
  143. jaseci/jsorc/redis.py +0 -140
  144. jaseci/jsorc/remote_actions.py +0 -158
  145. jaseci/jsorc/tests/__init__.py +0 -0
  146. jaseci/jsorc/tests/test_actions.py +0 -542
  147. jaseci/jsorc/tests/test_jsorc.py +0 -112
  148. jaseci/prim/__init__.py +0 -0
  149. jaseci/prim/ability.py +0 -94
  150. jaseci/prim/architype.py +0 -90
  151. jaseci/prim/edge.py +0 -173
  152. jaseci/prim/element.py +0 -233
  153. jaseci/prim/graph.py +0 -27
  154. jaseci/prim/master.py +0 -67
  155. jaseci/prim/node.py +0 -533
  156. jaseci/prim/obj_mixins.py +0 -238
  157. jaseci/prim/sentinel.py +0 -282
  158. jaseci/prim/super_master.py +0 -31
  159. jaseci/prim/walker.py +0 -261
  160. jaseci/svc/__init__.py +0 -0
  161. jaseci/tests/__init__.py +0 -0
  162. jaseci/tests/infer.py +0 -39
  163. jaseci/tests/jac_test_code.py +0 -1293
  164. jaseci/tests/jac_test_progs.py +0 -774
  165. jaseci/tests/test_core.py +0 -153
  166. jaseci/tests/test_jac.py +0 -824
  167. jaseci/tests/test_node.py +0 -89
  168. jaseci/tests/test_progs.py +0 -702
  169. jaseci/tests/test_stack.py +0 -220
  170. jaseci/tests/test_stripe.py +0 -225
  171. jaseci/utils/__init__.py +0 -0
  172. jaseci/utils/actions/__init__.py +0 -0
  173. jaseci/utils/actions/actions_manager.py +0 -254
  174. jaseci/utils/actions/actions_optimizer.py +0 -517
  175. jaseci/utils/actions/actions_state.py +0 -95
  176. jaseci/utils/file_handler.py +0 -171
  177. jaseci/utils/gprof2dot.py +0 -3786
  178. jaseci/utils/id_list.py +0 -169
  179. jaseci/utils/json_handler.py +0 -70
  180. jaseci/utils/log_utils.py +0 -57
  181. jaseci/utils/test_core.py +0 -62
  182. jaseci/utils/utils.py +0 -387
  183. jaseci-1.4.2.6.dist-info/LICENSE +0 -21
  184. jaseci-1.4.2.6.dist-info/METADATA +0 -39
  185. jaseci-1.4.2.6.dist-info/RECORD +0 -185
  186. jaseci-1.4.2.6.dist-info/entry_points.txt +0 -3
  187. jaseci-1.4.2.6.dist-info/top_level.txt +0 -1
@@ -1,702 +0,0 @@
1
- import os
2
- import pytest
3
- from unittest import TestCase
4
-
5
- import jaseci.tests.jac_test_progs as jtp
6
- from jaseci.prim.sentinel import Sentinel
7
- from jaseci.prim.graph import Graph
8
- from jaseci.prim.node import Node
9
- from jaseci.utils.utils import TestCaseHelper
10
- from jaseci.jsorc.jsorc import JsOrc
11
- from jaseci.jsorc.jsorc_utils import State
12
-
13
-
14
- class ProgTests(TestCaseHelper, TestCase):
15
- """Unit tests for Jac language"""
16
-
17
- def setUp(self):
18
- super().setUp()
19
-
20
- def tearDown(self):
21
- super().tearDown()
22
-
23
- def test_bug_check1(self):
24
- self.logger_on()
25
- sent = Sentinel(m_id=0, h=JsOrc.hook())
26
- gph = Graph(m_id=0, h=sent._h)
27
- sent.register_code(jtp.bug_check1)
28
- test_walker = sent.run_architype("init")
29
- test_walker.prime(gph)
30
- test_walker.run()
31
- report = test_walker.report
32
- self.assertEqual(report[0][0], "THIS IS AN INTENT_LABEL")
33
-
34
- def test_action_load_std_lib(self):
35
- mast = JsOrc.super_master()
36
- mast.sentinel_register(name="test", code=jtp.action_load_std_lib)
37
- report = mast.general_interface_to_api(
38
- api_name="walker_run", params={"name": "aload"}
39
- )["report"]
40
- self.assertEqual(report[0], True)
41
-
42
- def test_action_load_std_lib_only_super(self):
43
- mast = JsOrc.master()
44
- mast.sentinel_register(name="test", code=jtp.action_load_std_lib)
45
- report = mast.general_interface_to_api(
46
- api_name="walker_run", params={"name": "aload"}
47
- )
48
- self.assertFalse(report["success"])
49
- self.assertEqual(
50
- [
51
- "test:aload - line 3, col 32 - rule ability_call - Only super master can load actions."
52
- ],
53
- report["errors"],
54
- )
55
-
56
- def test_globals(self):
57
- sent = Sentinel(m_id=0, h=JsOrc.hook())
58
- gph = Graph(m_id=0, h=sent._h)
59
- sent.register_code(jtp.globals)
60
- test_walker = sent.run_architype("init")
61
- test_walker.prime(gph)
62
- test_walker.run()
63
- report = test_walker.report
64
- self.assertEqual(report, ["testing", 56])
65
-
66
- def test_net_root_std_lib(self):
67
- mast = JsOrc.master()
68
- mast.sentinel_register(name="test", code=jtp.net_root_std_lib)
69
- report = mast.general_interface_to_api(
70
- api_name="walker_run", params={"name": "init"}
71
- )["report"]
72
- self.assertEqual(report[0][0], report[0][1])
73
- self.assertEqual(report[0][1], report[1][1])
74
- self.assertNotEqual(report[1][0], report[1][1])
75
-
76
- def test_or_stmt(self):
77
- mast = JsOrc.master()
78
- mast.sentinel_register(name="test", code=jtp.or_stmt)
79
- report = mast.general_interface_to_api(
80
- api_name="walker_run", params={"name": "init"}
81
- )["report"]
82
- self.assertEqual(report, [[3.4, "Hello"]])
83
-
84
- def test_nd_equals(self):
85
- mast = JsOrc.master()
86
- mast.sentinel_register(name="test", code=jtp.nd_equals_error_correct_line)
87
- report = mast.general_interface_to_api(
88
- api_name="walker_run", params={"name": "init"}
89
- )
90
- self.assertIn("line 3", report["errors"][0])
91
-
92
- def test_strange_ability_bug(self):
93
- import json
94
-
95
- mast = JsOrc.master()
96
- mast.sentinel_register(name="test", code=jtp.strange_ability_bug)
97
- report = mast.general_interface_to_api(
98
- api_name="walker_run", params={"name": "travel"}
99
- )["report"]
100
- mast.sentinel_register(name="test", code=jtp.strange_ability_bug, auto_run="")
101
- report += mast.general_interface_to_api(
102
- api_name="walker_run", params={"name": "travel"}
103
- )["report"]
104
- ir = mast.sentinel_get(mode="ir", snt=mast.active_snt())
105
- mast.sentinel_set(code=json.dumps(ir), snt=mast.active_snt(), mode="ir")
106
- report += mast.general_interface_to_api(
107
- api_name="walker_run", params={"name": "travel"}
108
- )["report"]
109
- report += mast.general_interface_to_api(
110
- api_name="walker_run", params={"name": "travel"}
111
- )["report"]
112
- self.assertEqual(report, ["Showing", "Showing", "Showing", "Showing"])
113
-
114
- def test_node_inheritance(self):
115
- mast = JsOrc.master()
116
- mast.sentinel_register(name="test", code=jtp.node_inheritance, auto_run="")
117
- report = mast.general_interface_to_api(
118
- api_name="walker_run", params={"name": "init"}
119
- )
120
- del report["final_node"]
121
- self.assertEqual(
122
- report,
123
- {
124
- "report": [
125
- "plain.x",
126
- {"a": 55, "b": 7, "c": 7, "d": 80},
127
- "super.x",
128
- "plain2.y",
129
- "super.y",
130
- ],
131
- "success": True,
132
- "yielded": False,
133
- },
134
- )
135
-
136
- def test_inherited_ref(self):
137
- mast = JsOrc.master()
138
- mast.sentinel_register(name="test", code=jtp.inherited_ref, auto_run="")
139
- report = mast.general_interface_to_api(
140
- api_name="walker_run", params={"name": "init"}
141
- )
142
- self.assertEqual(len(report["report"]), 12)
143
-
144
- def test_node_inheritance_chain_check(self):
145
- mast = JsOrc.master()
146
- mast.sentinel_register(
147
- name="test", code=jtp.node_inheritance_chain_check, auto_run=""
148
- )
149
- report = mast.general_interface_to_api(
150
- api_name="walker_run", params={"name": "init"}
151
- )
152
- self.assertEqual(report["success"], False)
153
-
154
- def test_global_reregistering(self):
155
- mast = JsOrc.master()
156
- mast.sentinel_register(name="test", code=jtp.global_reregistering)
157
- self.assertTrue(mast.active_snt().is_active)
158
- mast.sentinel_set(snt=mast.active_snt(), code=jtp.global_reregistering)
159
- self.assertTrue(mast.active_snt().is_active)
160
- mast.sentinel_register(name="test", code=jtp.global_reregistering)
161
- self.assertTrue(mast.active_snt().is_active)
162
-
163
- def test_vector_cos_sim_check(self):
164
- mast = JsOrc.master()
165
- mast.sentinel_register(name="test", code=jtp.vector_cos_sim_check, auto_run="")
166
- report = mast.general_interface_to_api(
167
- api_name="walker_run", params={"name": "init"}
168
- )["report"]
169
- self.assertEqual(len(report), 1)
170
- self.assertEqual(type(report[0]), float)
171
-
172
- def test_multi_breaks(self):
173
- mast = JsOrc.master()
174
- mast.sentinel_register(name="test", code=jtp.multi_breaks, auto_run="")
175
- report = mast.general_interface_to_api(
176
- api_name="walker_run", params={"name": "init"}
177
- )["report"]
178
- self.assertEqual(len(report), 15)
179
- self.assertEqual(report[14], 180)
180
-
181
- def test_reffy_deref_check(self):
182
- mast = JsOrc.master()
183
- mast.sentinel_register(name="test", code=jtp.reffy_deref_check, auto_run="")
184
- report = mast.general_interface_to_api(
185
- api_name="walker_run", params={"name": "init"}
186
- )["report"]
187
- self.assertFalse(report[0])
188
- self.assertTrue(report[1])
189
-
190
- def test_vanishing_can_check(self):
191
- mast = JsOrc.super_master()
192
- mast.actions_load_local("jaseci/tests/infer.py")
193
- mast.sentinel_register(name="test", code=jtp.vanishing_can_check, auto_run="")
194
- mast.general_interface_to_api(api_name="walker_run", params={"name": "init"})
195
- report = mast.general_interface_to_api(
196
- api_name="walker_run", params={"name": "init"}
197
- )["report"]
198
- self.assertEqual(report, ["2022-01-01T00:00:00"])
199
- mast.propagate_access("public")
200
- mast2 = JsOrc.super_master(h=mast._h)
201
- mast.active_snt().run_architype(name="plain", kind="node", caller=mast2)
202
- report = mast.general_interface_to_api(
203
- api_name="walker_run", params={"name": "init"}
204
- )["report"]
205
- self.assertEqual(report, ["2022-01-01T00:00:00"])
206
-
207
- def test_jasecilib_alias_list(self):
208
- mast = JsOrc.master()
209
- mast.sentinel_register(name="test", code=jtp.jasecilib_alias_list, auto_run="")
210
- report = mast.general_interface_to_api(
211
- api_name="walker_run", params={"name": "init"}
212
- )["report"]
213
- self.assertGreater(len(report[0].keys()), 3)
214
-
215
- def test_jasecilib_params(self):
216
- mast = JsOrc.master()
217
- mast.sentinel_register(name="test", code=jtp.jasecilib_params, auto_run="")
218
- report = mast.general_interface_to_api(
219
- api_name="walker_run", params={"name": "init"}
220
- )["report"]
221
- self.assertIn("j_r_acc_ids", report[0][0].keys())
222
-
223
- def test_jasecilib_create_user(self):
224
- mast = JsOrc.master()
225
- mast.sentinel_register(name="test", code=jtp.jasecilib_create_user, auto_run="")
226
- report = mast.general_interface_to_api(
227
- api_name="walker_run", params={"name": "init"}
228
- )["report"]
229
- self.assertEqual(report[0]["user"]["name"], "daman@gmail.com")
230
-
231
- def test_root_is_node_type(self):
232
- mast = JsOrc.master()
233
- mast.sentinel_register(name="test", code=jtp.root_is_node_type, auto_run="")
234
- report = mast.general_interface_to_api(
235
- api_name="walker_run", params={"name": "init"}
236
- )
237
- self.assertEqual(report["report"][0], "JAC_TYPE.NODE")
238
-
239
- def test_walker_with_exit_after_node(self):
240
- mast = JsOrc.master()
241
- mast.sentinel_register(
242
- name="test", code=jtp.walker_with_exit_after_node, auto_run=""
243
- )
244
- report = mast.general_interface_to_api(
245
- api_name="walker_run", params={"name": "init"}
246
- )
247
- self.assertEqual(report["report"], [1, 1, 3, 1, 3, 1, 3, 1, 3, 43])
248
-
249
- def test_depth_first_take(self):
250
- mast = JsOrc.master()
251
- mast.sentinel_register(name="test", code=jtp.depth_first_take, auto_run="")
252
- report = mast.general_interface_to_api(
253
- api_name="walker_run", params={"name": "init"}
254
- )
255
- self.assertEqual(report["report"], [1, 2, 3, 4, 5, 6, 7])
256
-
257
- def test_breadth_first_take(self):
258
- mast = JsOrc.master()
259
- mast.sentinel_register(name="test", code=jtp.breadth_first_take, auto_run="")
260
- report = mast.general_interface_to_api(
261
- api_name="walker_run", params={"name": "init"}
262
- )
263
- self.assertEqual(report["report"], [1, 2, 5, 3, 4, 6, 7])
264
-
265
- def test_inheritance_override_here_check(self):
266
- mast = JsOrc.master()
267
- mast.sentinel_register(
268
- name="test", code=jtp.inheritance_override_here_check, auto_run=""
269
- )
270
- report = mast.general_interface_to_api(
271
- api_name="walker_run", params={"name": "init"}
272
- )
273
- self.assertEqual(report["report"], [9, 9, 10])
274
-
275
- def test_dot_private_hidden(self):
276
- mast = JsOrc.master()
277
- mast.sentinel_register(name="test", code=jtp.dot_private_hidden, auto_run="")
278
- mast.general_interface_to_api(api_name="walker_run", params={"name": "init"})
279
- report = mast.general_interface_to_api(
280
- api_name="graph_get", params={"mode": "dot", "detailed": True}
281
- )
282
- self.assertNotIn("j=", report)
283
-
284
- def test_check_destroy_node_has_var(self):
285
- mast = JsOrc.master()
286
- mast.sentinel_register(
287
- name="test", code=jtp.check_destroy_node_has_var, auto_run=""
288
- )
289
- report = mast.general_interface_to_api(
290
- api_name="walker_run", params={"name": "create"}
291
- )
292
- self.assertEqual(mast._h.get_object_distribution()[Node], 2)
293
- self.assertEqual(report["report"][0], "JAC_TYPE.NODE")
294
- report = mast.general_interface_to_api(
295
- api_name="walker_run", params={"name": "remove"}
296
- )
297
- self.assertEqual(mast._h.get_object_distribution()[Node], 1)
298
- self.assertEqual(report["report"][0], "JAC_TYPE.NULL")
299
-
300
- def test_for_loop_dict(self):
301
- mast = JsOrc.master()
302
- mast.sentinel_register(
303
- name="test", code=jtp.check_dict_for_in_loop, auto_run=""
304
- )
305
- res = mast.general_interface_to_api(
306
- api_name="walker_run", params={"name": "for_loop_dict"}
307
- )
308
-
309
- self.assertEqual(
310
- res["report"],
311
- [
312
- "test1 : 1",
313
- "test2 : 2",
314
- "test3 : 3",
315
- "test1 : 1",
316
- "test2 : 2",
317
- "test3 : 3",
318
- 5,
319
- 6,
320
- 7,
321
- "0 : 5",
322
- "1 : 6",
323
- "2 : 7",
324
- ],
325
- )
326
-
327
- def test_var_as_key_for_dict(self):
328
- mast = JsOrc.master()
329
- mast.sentinel_register(
330
- name="test", code=jtp.check_dict_for_in_loop, auto_run=""
331
- )
332
- res = mast.general_interface_to_api(
333
- api_name="walker_run", params={"name": "var_as_key_for_dict"}
334
- )
335
-
336
- self.assertEqual(res["report"], [{"key1": "key1", "key2": 2}])
337
- self.assertEqual(
338
- "test:var_as_key_for_dict - line 42, col 16 - rule expression - Key is not str type : <class 'int'>!",
339
- res["errors"][0],
340
- )
341
-
342
- def test_list_pairwise(self):
343
- mast = JsOrc.master()
344
- mast.sentinel_register(name="test", code=jtp.list_pairwise, auto_run="")
345
-
346
- res = mast.general_interface_to_api(
347
- api_name="walker_run", params={"name": "init"}
348
- )
349
-
350
- self.assertEqual(
351
- res["report"],
352
- [[[1, 2], [2, 3], [3, 4]]],
353
- )
354
-
355
- def test_list_unique(self):
356
- mast = JsOrc.master()
357
- mast.sentinel_register(name="test", code=jtp.list_unique, auto_run="")
358
-
359
- res = mast.general_interface_to_api(
360
- api_name="walker_run", params={"name": "init"}
361
- )
362
-
363
- self.assertEqual(
364
- res["report"],
365
- [[1, 2, 3, 4, 5]],
366
- )
367
-
368
- def test_new_additional_builtin(self):
369
- mast = JsOrc.master()
370
- mast.sentinel_register(name="test", code=jtp.check_new_builtin, auto_run="")
371
-
372
- res = mast.general_interface_to_api(
373
- api_name="walker_run", params={"name": "init"}
374
- )
375
-
376
- self.assertEqual(
377
- res["report"],
378
- [{"test": "test"}, 1, "1 2 3 4", "1 2 3 4"],
379
- )
380
-
381
- def test_continue_issue(self):
382
- mast = JsOrc.master()
383
- mast.sentinel_register(name="test", code=jtp.continue_issue, auto_run="")
384
- res = mast.general_interface_to_api(
385
- api_name="walker_run", params={"name": "init"}
386
- )
387
- self.assertEqual(res["report"], [1, 2, 3, 4, 5, 6, 7, 8, "apple"])
388
-
389
- def test_registering_dict_as_ir(self):
390
- mast = JsOrc.master()
391
- mast.sentinel_register(name="test", code=jtp.continue_issue, auto_run="")
392
- code_dict = mast.sentinel_get(snt=mast.active_snt(), mode="ir")
393
- self.assertEqual(type(code_dict), dict)
394
- mast.sentinel_register(name="test", code=code_dict, mode="ir", auto_run="")
395
- res = mast.general_interface_to_api(
396
- api_name="walker_run", params={"name": "init"}
397
- )
398
- self.assertEqual(res["report"], [1, 2, 3, 4, 5, 6, 7, 8, "apple"])
399
-
400
- @pytest.mark.order(2)
401
- def test_async_syntax_with_celery(self):
402
- mast = JsOrc.master()
403
- if not JsOrc.svc("task").is_running():
404
- self.skip_test("Celery not running")
405
- mast.sentinel_register(name="test", code=jtp.async_syntax, auto_run="")
406
- res = mast.general_interface_to_api(
407
- api_name="walker_run",
408
- params={"name": "simple_async", "ctx": {"sample": "name"}},
409
- )
410
-
411
- self.assertTrue(res["is_queued"])
412
-
413
- res = mast.general_interface_to_api(
414
- api_name="walker_queue_wait",
415
- params={"task_id": res["result"], "timeout": 15},
416
- )
417
-
418
- self.assertEqual("test", res["result"]["anchor"])
419
-
420
- res = res["result"]["response"]
421
-
422
- # report from task1 (awaited)
423
- self.assertEqual(1, res["report"][0])
424
- self.assertEqual(2, res["report"][1])
425
-
426
- # task1 anchor
427
- self.assertEqual(1, res["report"][2])
428
- report4 = res["report"][4]
429
-
430
- res = res["report"][3]
431
-
432
- # no celery running
433
- self.assertTrue(res["is_queued"])
434
-
435
- res = mast.general_interface_to_api(
436
- api_name="walker_queue_check",
437
- params={"task_id": res["result"]},
438
- )
439
-
440
- self.assertEqual(report4, res)
441
- self.assertEqual(2, res["result"]["anchor"])
442
- self.assertEqual([2, 2], res["result"]["response"]["report"])
443
-
444
- @pytest.mark.order(3)
445
- def test_async_syntax_with_update_and_celery(self):
446
- mast = JsOrc.master()
447
- if not JsOrc.svc("task").is_running():
448
- self.skip_test("Celery not running")
449
- mast.sentinel_register(
450
- name="test", code=jtp.async_syntax_with_update, auto_run="init"
451
- )
452
- res = mast.general_interface_to_api(
453
- api_name="walker_run",
454
- params={"name": "update_value", "ctx": {}},
455
- )
456
-
457
- self.assertTrue(res["is_queued"])
458
-
459
- res = mast.general_interface_to_api(
460
- api_name="walker_queue_wait",
461
- params={"task_id": res["result"], "timeout": 15},
462
- )
463
-
464
- self.assertEqual("SUCCESS", res["status"])
465
- self.assertTrue(res["result"]["response"]["report"][0]["value"])
466
-
467
- # remove the node on current _h.mem and let the redis repopulate it
468
- mast._h.mem.pop(res["result"]["response"]["final_node"], None)
469
-
470
- res = mast.general_interface_to_api(
471
- api_name="walker_run",
472
- params={"name": "get_value", "ctx": {}},
473
- )
474
-
475
- self.assertTrue(res["report"][0]["value"])
476
-
477
- def test_async_syntax_without_celery(self):
478
- mast = JsOrc.master()
479
- JsOrc.svc("task").state = State.NOT_STARTED
480
- mast.sentinel_register(name="test", code=jtp.async_syntax, auto_run="")
481
- res = mast.general_interface_to_api(
482
- api_name="walker_run",
483
- params={"name": "simple_async", "ctx": {"sample": "name"}},
484
- )
485
-
486
- # no celery running
487
- self.assertFalse(res["is_queued"])
488
-
489
- # report from task1 (awaited)
490
- self.assertEqual(1, res["result"]["report"][0])
491
- self.assertEqual(2, res["result"]["report"][1])
492
-
493
- # report from task2 (async but no celery)
494
- self.assertEqual(2, res["result"]["report"][2])
495
- self.assertEqual(2, res["result"]["report"][3])
496
-
497
- # task1 anchor
498
- self.assertEqual(1, res["result"]["report"][4])
499
-
500
- res = res["result"]["report"][5]
501
-
502
- # no celery running
503
- self.assertFalse(res["is_queued"])
504
- self.assertEqual(2, res["result"])
505
-
506
- JsOrc.svc("task").state = State.RUNNING
507
-
508
- def test_async_sync_syntax_with_celery(self):
509
- mast = JsOrc.master()
510
- if not JsOrc.svc("task").is_running():
511
- self.skip_test("Celery not running")
512
- mast.sentinel_register(name="test", code=jtp.async_syntax, auto_run="")
513
- res = mast.general_interface_to_api(
514
- api_name="walker_run",
515
- params={"name": "simple_async_with_sync", "ctx": {"sample": "name"}},
516
- )
517
-
518
- self.assertTrue(res["is_queued"])
519
-
520
- res = mast.general_interface_to_api(
521
- api_name="walker_queue_wait",
522
- params={"task_id": res["result"], "timeout": 15},
523
- )
524
-
525
- self.assertEqual("test", res["result"]["anchor"])
526
-
527
- res = res["result"]["response"]
528
-
529
- # report from task1 (awaited)
530
- self.assertEqual(1, res["report"][0])
531
- self.assertEqual(2, res["report"][1])
532
-
533
- # task1 anchor
534
- self.assertEqual(1, res["report"][2])
535
- report4 = res["report"][4]
536
-
537
- res = res["report"][3]
538
-
539
- # no celery running
540
- self.assertTrue(res["is_queued"])
541
-
542
- res = mast.general_interface_to_api(
543
- api_name="walker_queue_check",
544
- params={"task_id": res["result"]},
545
- )
546
-
547
- self.assertEqual(report4, res)
548
- self.assertEqual(2, res["result"]["anchor"])
549
- self.assertEqual([2, 2], res["result"]["response"]["report"])
550
-
551
- def test_async_sync_syntax_without_celery(self):
552
- mast = JsOrc.master()
553
- JsOrc.svc("task").state = State.NOT_STARTED
554
- mast.sentinel_register(name="test", code=jtp.async_syntax, auto_run="")
555
- res = mast.general_interface_to_api(
556
- api_name="walker_run",
557
- params={"name": "simple_async_with_sync", "ctx": {"sample": "name"}},
558
- )
559
-
560
- # no celery running
561
- self.assertFalse(res["is_queued"])
562
-
563
- # report from task1 (awaited)
564
- self.assertEqual(1, res["result"]["report"][0])
565
- self.assertEqual(2, res["result"]["report"][1])
566
-
567
- # report from task2 (async but no celery)
568
- self.assertEqual(2, res["result"]["report"][2])
569
- self.assertEqual(2, res["result"]["report"][3])
570
-
571
- # task1 anchor
572
- self.assertEqual(1, res["result"]["report"][4])
573
-
574
- res = res["result"]["report"][5]
575
-
576
- # no celery running
577
- self.assertFalse(res["is_queued"])
578
- self.assertEqual(2, res["result"])
579
-
580
- JsOrc.svc("task").state = State.RUNNING
581
-
582
- def test_block_scope_check(self):
583
- mast = JsOrc.master()
584
- mast.sentinel_register(name="test", code=jtp.block_scope_check, auto_run="")
585
- res = mast.general_interface_to_api(
586
- api_name="walker_run", params={"name": "init"}
587
- )
588
- self.assertEqual(res["report"][-1], 10)
589
-
590
- def test_ignore_check(self):
591
- mast = JsOrc.master()
592
- res = mast.sentinel_register(name="test", code=jtp.ignore_check, auto_run="")
593
- res = mast.general_interface_to_api(
594
- api_name="walker_run", params={"name": "init"}
595
- )
596
- self.assertEqual(len(res["report"]), 9)
597
-
598
- @pytest.mark.order(1)
599
- def test_module_on_async(self):
600
- mast = JsOrc.super_master()
601
- if not JsOrc.svc("task").is_running():
602
- self.skip_test("Celery not running")
603
-
604
- with open("jaseci/tests/fixtures/non_existing_action.py", "w") as file:
605
- file.write(
606
- "from jaseci.jsorc.live_actions import jaseci_action\n@jaseci_action(act_group=['sim1'])\ndef tester():\n\treturn 1"
607
- )
608
-
609
- mast.sentinel_register(name="test", code=jtp.async_module, auto_run="")
610
-
611
- # sequence is relevant
612
- mast.actions_load_local("jaseci/tests/fixtures/non_existing_action.py")
613
- mast.actions_load_local("jaseci/tests/fixtures/existing_action.py")
614
-
615
- res = mast.general_interface_to_api(
616
- api_name="walker_run",
617
- params={"name": "a", "ctx": {}},
618
- )
619
-
620
- self.assertTrue(res["success"])
621
-
622
- # will return [1,2] since all local actions are loaded on MainProcess
623
- self.assertEqual([1, 2], res["report"])
624
-
625
- os.remove("jaseci/tests/fixtures/non_existing_action.py")
626
-
627
- res = mast.general_interface_to_api(
628
- api_name="walker_run",
629
- params={"name": "b", "ctx": {}},
630
- )
631
-
632
- self.assertTrue(res["is_queued"])
633
-
634
- res = mast.general_interface_to_api(
635
- api_name="walker_queue_wait",
636
- params={"task_id": res["result"], "timeout": 15},
637
- )
638
-
639
- self.assertEqual("SUCCESS", res["status"])
640
-
641
- # since sim1 file is already removed
642
- # upon running of task with sim1 it will try to rebuild
643
- # but file is already been deleted
644
- # without the fix it will throw error and will not continue on other action_sets
645
- # return would be [None, None] if not yet fixed
646
- self.assertEqual([None, 2], res["result"]["response"]["report"])
647
-
648
- self.assertIn(
649
- "Cannot execute sim1.tester - Not Found",
650
- res["result"]["response"]["errors"][0],
651
- )
652
-
653
- def test_walker_run_with_null_arguments(self):
654
- mast = JsOrc.master()
655
- res = mast.sentinel_register(
656
- name="test", code=jtp.walker_null_args, auto_run=""
657
- )
658
- res = mast.general_interface_to_api(
659
- api_name="walker_run",
660
- params={"name": "a", "ctx": {}},
661
- )
662
- self.assertTrue(res["success"])
663
- self.assertTrue(res["report"], [None, None])
664
- self.assertIsNone(res.get("errors"))
665
-
666
- def test_json_casting(self):
667
- mast = JsOrc.master()
668
- mast.sentinel_register(name="test", code=jtp.json_casting, auto_run="")
669
-
670
- res = mast.general_interface_to_api(
671
- api_name="walker_run",
672
- params={"name": "json_casting", "ctx": {}},
673
- )
674
-
675
- self.assertTrue(res["success"])
676
- self.assertEqual(
677
- res["report"],
678
- ['{"test": 1}', {"test2": 2}],
679
- )
680
-
681
- def test_edge_to_node_casting(self):
682
- mast = JsOrc.master()
683
- mast.sentinel_register(name="test", code=jtp.edge_to_node_casting, auto_run="")
684
-
685
- res = mast.general_interface_to_api(
686
- api_name="walker_run",
687
- params={"name": "edge_to_node_casting", "ctx": {}},
688
- )
689
-
690
- self.assertTrue(res["success"])
691
-
692
- edges = res["report"][0]
693
- self.assertEqual(1, len(edges))
694
- self.assertEqual("edge", edges[0]["kind"])
695
-
696
- nodes = res["report"][1]
697
- self.assertEqual(2, len(nodes))
698
-
699
- self.assertEqual(edges[0]["to_node_id"], nodes[0]["jid"])
700
- self.assertEqual("a", nodes[0]["name"])
701
- self.assertEqual(edges[0]["from_node_id"], nodes[1]["jid"])
702
- self.assertEqual("root", nodes[1]["name"])