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
jaseci/prim/walker.py DELETED
@@ -1,261 +0,0 @@
1
- """
2
- Walker class for Jaseci
3
-
4
- Each walker has an id, name, timestamp and it's parent sentinel.
5
- TODO: Perhaps I should have walker state (context ids) in mem only with
6
- default hooks to save db read/writes
7
- """
8
-
9
- from jaseci.utils.utils import (
10
- logger,
11
- perf_test_start,
12
- perf_test_stop,
13
- exc_stack_as_str_list,
14
- )
15
- from jaseci.prim.element import Element
16
- from jaseci.prim.obj_mixins import Anchored
17
- from jaseci.utils.id_list import IdList
18
- from jaseci.jac.machine.machine_state import TryException
19
- from jaseci.jac.interpreter.walker_interp import WalkerInterp
20
- import uuid
21
- import hashlib
22
-
23
- from jaseci.jsorc.jsorc import JsOrc
24
- from jaseci.extens.svc.task_svc import TaskService
25
- from jaseci.utils.utils import format_jac_profile
26
-
27
-
28
- class Walker(Element, WalkerInterp, Anchored):
29
- """Walker class for Jaseci"""
30
-
31
- def __init__(self, is_async=False, **kwargs):
32
- self.yielded = False
33
- self.namespaces = []
34
- self.profile = {}
35
- # Process state
36
- self.current_node_id = None
37
- self.next_node_ids = IdList(self)
38
- self.destroy_node_ids = IdList(self)
39
- self.current_step = 0
40
- self.in_entry_exit = False
41
- self.step_limit = 10000
42
- self.is_async = is_async
43
- self._to_await = False
44
- if "persist" not in kwargs: # Default walker persistence to is_async
45
- kwargs["persist"] = is_async
46
- Element.__init__(self, **kwargs)
47
- WalkerInterp.__init__(self)
48
- Anchored.__init__(self)
49
-
50
- @property
51
- def current_node(self):
52
- if not self.current_node_id:
53
- return None
54
- elif not self._h.has_obj(self.current_node_id):
55
- self.current_node_id = None
56
- return None
57
- else:
58
- return self._h.get_obj(self._m_id, self.current_node_id)
59
-
60
- @current_node.setter
61
- def current_node(self, obj):
62
- if obj:
63
- self.current_node_id = obj.jid
64
- else:
65
- self.current_node_id = None
66
-
67
- def namespace_keys(self):
68
- """Return list of md5 keys for namespaces"""
69
- ret = {}
70
- for i in self.namespaces:
71
- ret[i] = hashlib.md5((self._m_id + i).encode()).hexdigest()
72
- return ret
73
-
74
- def for_queue(self):
75
- return self.is_async and not (self._to_await)
76
-
77
- def step(self):
78
- """
79
- Take single step through program
80
- if no ast provided, will be generated from code
81
- """
82
- if not self.next_node_ids:
83
- logger.debug(str(f"Walker {self.name} is disengaged"))
84
- return False
85
- if self.current_step > self.step_limit:
86
- logger.error(
87
- str(
88
- f"Walker {self.name} walked too many steps "
89
- + f"- {self.step_limit}"
90
- )
91
- )
92
- return False
93
-
94
- self.current_node = self.next_node_ids.pop_first_obj()
95
- self.run_walker(jac_ast=self.get_architype().get_jac_ast())
96
- if self.current_step < 200:
97
- self.log_history("visited", self.current_node.id)
98
- self.current_step += 1
99
- self.profile["steps"] = self.current_step
100
- if self._stopped == "skip":
101
- self._stopped = None
102
- if self.next_node_ids:
103
- logger.debug(
104
- str(
105
- f"Step complete, Walker {self.name} next node: "
106
- + f"- {self.next_node_ids.first_obj()}"
107
- )
108
- )
109
- return self.next_node_ids.first_obj()
110
- else:
111
- logger.debug(
112
- str(
113
- f"Final step of walker {self.name} complete"
114
- + f"- disengaging from {self.current_node}"
115
- )
116
- )
117
- for i in self.destroy_node_ids.obj_list():
118
- if i.jid == self.current_node_id:
119
- self.current_node_id = None
120
- i.destroy()
121
- self.destroy_node_ids.remove_obj(i)
122
- return True
123
-
124
- def prime(self, start_node, prime_ctx=None, request_ctx=None):
125
- """Place walker on node and get ready to step step"""
126
- if not self.yielded or not len(self.next_node_ids): # modus ponens
127
- self.next_node_ids.add_obj(start_node, push_front=True)
128
- if prime_ctx:
129
- for i in prime_ctx.keys():
130
- self.context[str(i)] = prime_ctx[i]
131
- self.request_context = request_ctx
132
- self.profile["steps"] = self.current_step
133
- logger.debug(str(f"Walker {self.name} primed - {start_node}"))
134
-
135
- def run(self, start_node=None, prime_ctx=None, request_ctx=None, profiling=False):
136
- """Executes Walker to completion"""
137
- if self.for_queue() and JsOrc.svc("task").is_running():
138
- start_node = (
139
- start_node
140
- if not (start_node is None)
141
- else (
142
- self.next_node_ids.pop_first_obj() if self.next_node_ids else None
143
- )
144
- )
145
-
146
- self._h.commit_all_cache_sync()
147
-
148
- return {
149
- "is_queued": True,
150
- "result": JsOrc.svc("task", TaskService).add_queue(
151
- self,
152
- start_node,
153
- prime_ctx or self.context,
154
- request_ctx or self.request_context,
155
- profiling,
156
- ),
157
- }
158
-
159
- if profiling:
160
- pr = perf_test_start()
161
-
162
- if start_node and (not self.yielded or not len(self.next_node_ids)):
163
- self.prime(start_node, prime_ctx, request_ctx)
164
- elif prime_ctx:
165
- for i in prime_ctx.keys():
166
- self.context[str(i)] = prime_ctx[i]
167
-
168
- report_ret = {"success": True}
169
- WalkerInterp.reset(self)
170
- self.yielded = False
171
-
172
- try:
173
- while self.step() and not self.yielded:
174
- pass
175
- except Exception:
176
- report_ret["success"] = False
177
- report_ret["stack_trace"] = exc_stack_as_str_list()
178
-
179
- self.save()
180
-
181
- if not self.report:
182
- logger.debug(str(f"Walker {self.name} did not have anything to report"))
183
- report_ret["report"] = self.report
184
- report_ret["final_node"] = self.current_node_id
185
- report_ret["yielded"] = self.yielded
186
-
187
- if self.report_status:
188
- report_ret["status_code"] = self.report_status
189
- if self.report_custom:
190
- report_ret["report_custom"] = self.report_custom
191
- if self.report_file:
192
- report_ret["report_file"] = self.report_file
193
-
194
- if len(self.runtime_errors):
195
- report_ret["errors"] = self.runtime_errors
196
- report_ret["success"] = False
197
- if len(self.runtime_stack_trace):
198
- report_ret["stack_trace"] = (
199
- report_ret.get("stack_trace", []) + self.runtime_stack_trace
200
- )
201
- if profiling:
202
- self.profile["jac"] = format_jac_profile(self.get_master()._jac_profile)
203
- calls, graph = perf_test_stop(pr)
204
- self.profile["perf"] = calls
205
- self.profile["graph"] = graph
206
- report_ret["profile"] = self.profile
207
-
208
- if self.for_queue():
209
- return {"is_queued": False, "result": report_ret}
210
-
211
- return report_ret
212
-
213
- def yield_walk(self):
214
- """Instructs walker to yield (stop walking and keep state)"""
215
- self.yielded = True
216
-
217
- def log_history(self, name, value):
218
- """Helper function for logging history of walker's activities"""
219
- if isinstance(value, Element):
220
- value = {"type": value.j_type, "id": value.jid}
221
- if isinstance(value, uuid.UUID):
222
- value = value.urn
223
- if name in self.profile.keys():
224
- self.profile[name].append(value)
225
- else:
226
- self.profile[name] = [value]
227
-
228
- def clear_state(self):
229
- """Clears walker state after report"""
230
- self.yielded = False
231
- self.profile = {}
232
- self.current_step = 0
233
- self.next_node_ids.remove_all()
234
- self.ignore_node_ids.remove_all()
235
- self.destroy_node_ids.remove_all()
236
- self.current_node = None
237
- self.context = {}
238
- WalkerInterp.reset(self)
239
-
240
- def destroy(self):
241
- """
242
- Destroys self from memory and persistent storage
243
- """
244
- if not self.for_queue() or not JsOrc.svc("task").is_running():
245
- WalkerInterp.destroy(self)
246
- super().destroy()
247
-
248
- def register_yield_or_destroy(self, yield_ids):
249
- """Helper for auto destroying walkers"""
250
- if not self.yielded:
251
- if self.jid in yield_ids:
252
- yield_ids.remove_obj(self)
253
- self.destroy()
254
- else:
255
- yield_ids.add_obj(self, silent=True)
256
-
257
- def save(self):
258
- """
259
- Write self through hook to persistent storage
260
- """
261
- self._h.save_obj(caller_id=self._m_id, item=self, all_caches=self.is_async)
jaseci/svc/__init__.py DELETED
File without changes
jaseci/tests/__init__.py DELETED
File without changes
jaseci/tests/infer.py DELETED
@@ -1,39 +0,0 @@
1
- from jaseci.utils.utils import logger
2
- import jaseci.extens.act_lib.date as jsdate
3
- from jaseci.jsorc.live_actions import jaseci_action
4
-
5
-
6
- @jaseci_action()
7
- def year_from_date(date: str):
8
- logger.warning("Deprecated! Use date.quantlize_...")
9
- return jsdate.quantize_to_year(date)
10
-
11
-
12
- @jaseci_action()
13
- def month_from_date(date: str):
14
- logger.warning("Deprecated! Use date.quantlize_...")
15
- return jsdate.quantize_to_month(date)
16
-
17
-
18
- @jaseci_action()
19
- def week_from_date(date: str):
20
- logger.warning("Deprecated! Use date.quantlize_...")
21
- return jsdate.quantize_to_week(date)
22
-
23
-
24
- @jaseci_action()
25
- def day_from_date(date: str):
26
- logger.warning("Deprecated! Use date.quantlize_...")
27
- return jsdate.quantize_to_day(date)
28
-
29
-
30
- @jaseci_action()
31
- def date_day_diff(start_date: str, end_date: str):
32
- logger.warning("Deprecated! Use date...")
33
- return jsdate.date_day_diff(start_date, end_date)
34
-
35
-
36
- @jaseci_action()
37
- def date_now():
38
- logger.warning("Deprecated! Use date...")
39
- return jsdate.date_now()