jaseci 1.4.2.5__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 (186) 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.5.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 -117
  14. jaseci/extens/act_lib/elastic.py +0 -87
  15. jaseci/extens/act_lib/file.py +0 -76
  16. jaseci/extens/act_lib/file_handler.py +0 -189
  17. jaseci/extens/act_lib/internal.py +0 -18
  18. jaseci/extens/act_lib/jaseci.py +0 -61
  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 -191
  22. jaseci/extens/act_lib/rand.py +0 -82
  23. jaseci/extens/act_lib/regex.py +0 -85
  24. jaseci/extens/act_lib/request.py +0 -169
  25. jaseci/extens/act_lib/std.py +0 -235
  26. jaseci/extens/act_lib/storage.py +0 -53
  27. jaseci/extens/act_lib/stripe.py +0 -337
  28. jaseci/extens/act_lib/task.py +0 -13
  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 -79
  46. jaseci/extens/act_lib/vector.py +0 -157
  47. jaseci/extens/act_lib/webtool.py +0 -28
  48. jaseci/extens/act_lib/zip.py +0 -33
  49. jaseci/extens/api/__init__.py +0 -0
  50. jaseci/extens/api/actions_api.py +0 -170
  51. jaseci/extens/api/alias_api.py +0 -139
  52. jaseci/extens/api/architype_api.py +0 -196
  53. jaseci/extens/api/config_api.py +0 -129
  54. jaseci/extens/api/global_api.py +0 -84
  55. jaseci/extens/api/graph_api.py +0 -167
  56. jaseci/extens/api/health_api.py +0 -20
  57. jaseci/extens/api/interface.py +0 -268
  58. jaseci/extens/api/jac_api.py +0 -171
  59. jaseci/extens/api/jsorc_api.py +0 -316
  60. jaseci/extens/api/logger_api.py +0 -89
  61. jaseci/extens/api/master_api.py +0 -133
  62. jaseci/extens/api/object_api.py +0 -101
  63. jaseci/extens/api/prometheus_api.py +0 -74
  64. jaseci/extens/api/queue_api.py +0 -140
  65. jaseci/extens/api/sentinel_api.py +0 -270
  66. jaseci/extens/api/super_api.py +0 -64
  67. jaseci/extens/api/tests/__init__.py +0 -0
  68. jaseci/extens/api/tests/test_architype_api.py +0 -66
  69. jaseci/extens/api/tests/test_global_api.py +0 -179
  70. jaseci/extens/api/tests/test_graph_api.py +0 -64
  71. jaseci/extens/api/tests/test_logger_api.py +0 -43
  72. jaseci/extens/api/tests/test_object_api.py +0 -20
  73. jaseci/extens/api/tests/test_sentinel_api.py +0 -66
  74. jaseci/extens/api/tests/test_uncommon.py +0 -107
  75. jaseci/extens/api/tests/test_user_api.py +0 -32
  76. jaseci/extens/api/tests/test_walker_api.py +0 -316
  77. jaseci/extens/api/user_api.py +0 -144
  78. jaseci/extens/api/walker_api.py +0 -298
  79. jaseci/extens/api/webhook_api.py +0 -74
  80. jaseci/extens/svc/__init__.py +0 -0
  81. jaseci/extens/svc/elastic_svc.py +0 -366
  82. jaseci/extens/svc/kube_svc.py +0 -432
  83. jaseci/extens/svc/mail_svc.py +0 -156
  84. jaseci/extens/svc/prome_svc.py +0 -378
  85. jaseci/extens/svc/redis_svc.py +0 -63
  86. jaseci/extens/svc/storage_svc.py +0 -193
  87. jaseci/extens/svc/stripe_svc.py +0 -51
  88. jaseci/extens/svc/task_svc.py +0 -155
  89. jaseci/extens/svc/tasks.py +0 -302
  90. jaseci/jac/__init__.py +0 -0
  91. jaseci/jac/interpreter/__init__.py +0 -0
  92. jaseci/jac/interpreter/architype_interp.py +0 -214
  93. jaseci/jac/interpreter/interp.py +0 -1783
  94. jaseci/jac/interpreter/sentinel_interp.py +0 -257
  95. jaseci/jac/interpreter/tests/__init__.py +0 -0
  96. jaseci/jac/interpreter/tests/test_interp.py +0 -42
  97. jaseci/jac/interpreter/walker_interp.py +0 -248
  98. jaseci/jac/ir/__init__.py +0 -0
  99. jaseci/jac/ir/ast.py +0 -73
  100. jaseci/jac/ir/ast_builder.py +0 -249
  101. jaseci/jac/ir/jac_code.py +0 -152
  102. jaseci/jac/ir/passes/__init__.py +0 -6
  103. jaseci/jac/ir/passes/ast_prune_pass.py +0 -9
  104. jaseci/jac/ir/passes/codegen_pass.py +0 -244
  105. jaseci/jac/ir/passes/ir_pass.py +0 -29
  106. jaseci/jac/ir/passes/printer_pass.py +0 -23
  107. jaseci/jac/ir/passes/pt_prune_pass.py +0 -29
  108. jaseci/jac/ir/passes/schedule.py +0 -23
  109. jaseci/jac/ir/passes/stats_pass.py +0 -16
  110. jaseci/jac/jac.g4 +0 -450
  111. jaseci/jac/jac_parse/__init__.py +0 -0
  112. jaseci/jac/jac_parse/jacLexer.py +0 -809
  113. jaseci/jac/jac_parse/jacListener.py +0 -853
  114. jaseci/jac/jac_parse/jacParser.py +0 -9192
  115. jaseci/jac/jac_set.py +0 -119
  116. jaseci/jac/jsci_vm/__init__.py +0 -0
  117. jaseci/jac/jsci_vm/disasm.py +0 -94
  118. jaseci/jac/jsci_vm/inst_ptr.py +0 -31
  119. jaseci/jac/jsci_vm/machine.py +0 -188
  120. jaseci/jac/jsci_vm/op_codes.py +0 -82
  121. jaseci/jac/jsci_vm/tests/__init__.py +0 -0
  122. jaseci/jac/jsci_vm/tests/test_codegen.py +0 -31
  123. jaseci/jac/machine/__init__.py +0 -0
  124. jaseci/jac/machine/jac_scope.py +0 -85
  125. jaseci/jac/machine/jac_value.py +0 -226
  126. jaseci/jac/machine/machine_state.py +0 -383
  127. jaseci/jac/tests/__init__.py +0 -0
  128. jaseci/jac/tests/book_code.py +0 -624
  129. jaseci/jac/tests/test_book.py +0 -380
  130. jaseci/jac/tests/test_lang_14.py +0 -49
  131. jaseci/jsorc/__init__.py +0 -7
  132. jaseci/jsorc/jsorc.py +0 -642
  133. jaseci/jsorc/jsorc_settings.py +0 -211
  134. jaseci/jsorc/jsorc_utils.py +0 -298
  135. jaseci/jsorc/live_actions.py +0 -364
  136. jaseci/jsorc/manifests/__init__.py +0 -0
  137. jaseci/jsorc/manifests/database.yaml +0 -109
  138. jaseci/jsorc/manifests/elastic.yaml +0 -6024
  139. jaseci/jsorc/manifests/prometheus.yaml +0 -1383
  140. jaseci/jsorc/manifests/redis.yaml +0 -64
  141. jaseci/jsorc/memory.py +0 -258
  142. jaseci/jsorc/redis.py +0 -139
  143. jaseci/jsorc/remote_actions.py +0 -157
  144. jaseci/jsorc/tests/__init__.py +0 -0
  145. jaseci/jsorc/tests/test_actions.py +0 -542
  146. jaseci/jsorc/tests/test_jsorc.py +0 -112
  147. jaseci/prim/__init__.py +0 -0
  148. jaseci/prim/ability.py +0 -93
  149. jaseci/prim/architype.py +0 -89
  150. jaseci/prim/edge.py +0 -172
  151. jaseci/prim/element.py +0 -233
  152. jaseci/prim/graph.py +0 -26
  153. jaseci/prim/master.py +0 -64
  154. jaseci/prim/node.py +0 -532
  155. jaseci/prim/obj_mixins.py +0 -235
  156. jaseci/prim/sentinel.py +0 -281
  157. jaseci/prim/super_master.py +0 -31
  158. jaseci/prim/walker.py +0 -261
  159. jaseci/svc/__init__.py +0 -0
  160. jaseci/tests/__init__.py +0 -0
  161. jaseci/tests/infer.py +0 -39
  162. jaseci/tests/jac_test_code.py +0 -1293
  163. jaseci/tests/jac_test_progs.py +0 -774
  164. jaseci/tests/test_core.py +0 -153
  165. jaseci/tests/test_jac.py +0 -824
  166. jaseci/tests/test_node.py +0 -89
  167. jaseci/tests/test_progs.py +0 -702
  168. jaseci/tests/test_stack.py +0 -220
  169. jaseci/tests/test_stripe.py +0 -225
  170. jaseci/utils/__init__.py +0 -0
  171. jaseci/utils/actions/__init__.py +0 -0
  172. jaseci/utils/actions/actions_manager.py +0 -254
  173. jaseci/utils/actions/actions_optimizer.py +0 -516
  174. jaseci/utils/actions/actions_state.py +0 -95
  175. jaseci/utils/file_handler.py +0 -171
  176. jaseci/utils/gprof2dot.py +0 -3786
  177. jaseci/utils/id_list.py +0 -168
  178. jaseci/utils/json_handler.py +0 -70
  179. jaseci/utils/log_utils.py +0 -57
  180. jaseci/utils/test_core.py +0 -62
  181. jaseci/utils/utils.py +0 -387
  182. jaseci-1.4.2.5.dist-info/LICENSE +0 -21
  183. jaseci-1.4.2.5.dist-info/METADATA +0 -39
  184. jaseci-1.4.2.5.dist-info/RECORD +0 -184
  185. jaseci-1.4.2.5.dist-info/entry_points.txt +0 -3
  186. jaseci-1.4.2.5.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"])