jaclang 0.7.34__py3-none-any.whl → 0.8.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of jaclang might be problematic. Click here for more details.

Files changed (1503) hide show
  1. jaclang/__init__.py +7 -414
  2. jaclang/cli/cli.md +5 -5
  3. jaclang/cli/cli.py +316 -217
  4. jaclang/cli/cmdreg.py +188 -31
  5. jaclang/compiler/__init__.py +10 -15
  6. jaclang/compiler/{codeloc.py → codeinfo.py} +11 -30
  7. jaclang/compiler/constant.py +10 -33
  8. jaclang/compiler/jac.lark +65 -106
  9. jaclang/compiler/larkparse/jac_parser.py +3444 -0
  10. jaclang/compiler/parser.py +1137 -1517
  11. jaclang/compiler/passes/__init__.py +2 -2
  12. jaclang/compiler/passes/main/__init__.py +33 -14
  13. jaclang/compiler/passes/main/annex_pass.py +85 -0
  14. jaclang/compiler/passes/main/cfg_build_pass.py +275 -0
  15. jaclang/compiler/passes/main/def_impl_match_pass.py +159 -114
  16. jaclang/compiler/passes/main/def_use_pass.py +66 -274
  17. jaclang/compiler/passes/main/import_pass.py +178 -363
  18. jaclang/compiler/passes/main/inheritance_pass.py +109 -107
  19. jaclang/compiler/passes/main/pyast_gen_pass.py +1242 -1735
  20. jaclang/compiler/passes/main/pyast_load_pass.py +579 -819
  21. jaclang/compiler/passes/main/pybc_gen_pass.py +38 -35
  22. jaclang/compiler/passes/main/pyjac_ast_link_pass.py +50 -163
  23. jaclang/compiler/passes/main/sym_tab_build_pass.py +114 -1203
  24. jaclang/compiler/passes/main/sym_tab_link_pass.py +141 -0
  25. jaclang/{tests → compiler/passes/main/tests}/fixtures/access_modifier.jac +10 -9
  26. jaclang/compiler/passes/main/tests/fixtures/atest.impl.jac +3 -0
  27. jaclang/compiler/passes/main/tests/fixtures/atest.jac +11 -0
  28. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +1 -1
  29. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +1 -1
  30. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +3 -3
  31. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +1 -1
  32. jaclang/compiler/passes/main/tests/fixtures/base.impl.jac +8 -0
  33. jaclang/compiler/passes/main/tests/fixtures/base.jac +4 -4
  34. jaclang/compiler/passes/main/tests/fixtures/base2.impl.jac +8 -0
  35. jaclang/compiler/passes/main/tests/fixtures/base2.jac +4 -4
  36. jaclang/compiler/passes/main/tests/fixtures/blip.jac +1 -1
  37. jaclang/compiler/passes/main/tests/fixtures/cfg_ability_test.jac +23 -0
  38. jaclang/compiler/passes/main/tests/fixtures/cfg_gen.jac +19 -0
  39. jaclang/compiler/passes/main/tests/fixtures/circular_import.jac +7 -0
  40. jaclang/compiler/passes/main/tests/fixtures/data_spatial_types.jac +12 -12
  41. jaclang/compiler/passes/main/tests/fixtures/decls.jac +4 -4
  42. jaclang/compiler/passes/main/tests/fixtures/defn_decl_mismatch.jac +4 -4
  43. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +6 -6
  44. jaclang/compiler/passes/main/tests/fixtures/enumerations.jac +13 -0
  45. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +1 -1
  46. jaclang/compiler/passes/main/tests/fixtures/func.jac +2 -2
  47. jaclang/compiler/passes/main/tests/fixtures/func2.jac +1 -1
  48. jaclang/compiler/passes/main/tests/fixtures/game1.jac +4 -4
  49. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +2 -2
  50. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +2 -2
  51. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +0 -8
  52. jaclang/compiler/passes/main/tests/fixtures/impl_grab.impl.jac +5 -0
  53. jaclang/{tests → compiler/passes/main/tests}/fixtures/impl_grab.jac +1 -1
  54. jaclang/compiler/passes/main/tests/fixtures/incautoimpl.jac +1 -1
  55. jaclang/compiler/passes/main/tests/fixtures/main_err.impl.jac +6 -0
  56. jaclang/compiler/passes/main/tests/fixtures/main_err.jac +6 -0
  57. jaclang/compiler/passes/main/tests/fixtures/mod_type_assign.jac +1 -1
  58. jaclang/compiler/passes/main/tests/fixtures/mtest.impl.jac +6 -0
  59. jaclang/{tests → compiler/passes/main/tests}/fixtures/mtest.jac +1 -1
  60. jaclang/{tests → compiler/passes/main/tests}/fixtures/nested_impls.jac +14 -15
  61. jaclang/compiler/passes/main/tests/fixtures/py_imp_test.jac +7 -7
  62. jaclang/compiler/passes/main/tests/fixtures/second_err.jac +4 -0
  63. jaclang/compiler/passes/main/tests/fixtures/str2doc.py +3 -0
  64. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/__init__.py +5 -0
  65. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/actions.jac +19 -0
  66. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/main.jac +7 -0
  67. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/no_dupls.jac +35 -0
  68. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/one.jac +8 -0
  69. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +4 -4
  70. jaclang/compiler/passes/main/tests/test_cfg_build_pass.py +101 -0
  71. jaclang/compiler/passes/main/tests/test_decl_impl_match_pass.py +157 -0
  72. jaclang/compiler/passes/main/tests/test_def_use_pass.py +4 -6
  73. jaclang/compiler/passes/main/tests/test_import_pass.py +59 -46
  74. jaclang/compiler/passes/main/tests/test_pyast_build_pass.py +15 -0
  75. jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py +25 -34
  76. jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py +3 -3
  77. jaclang/compiler/passes/main/tests/test_sub_node_pass.py +8 -7
  78. jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py +4 -4
  79. jaclang/compiler/passes/main/tests/test_sym_tab_link_pass.py +62 -0
  80. jaclang/compiler/passes/tool/__init__.py +2 -0
  81. jaclang/compiler/passes/tool/doc_ir.py +179 -0
  82. jaclang/compiler/passes/tool/doc_ir_gen_pass.py +1287 -0
  83. jaclang/compiler/passes/tool/fuse_comments_pass.py +90 -70
  84. jaclang/compiler/passes/tool/jac_formatter_pass.py +122 -2554
  85. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +249 -97
  86. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +94 -97
  87. jaclang/compiler/passes/tool/tests/fixtures/doc_string.jac +2 -2
  88. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/access_mod_check.jac +5 -5
  89. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/archetype_test.jac +13 -0
  90. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/decorator_stack.jac +7 -7
  91. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/line_spacing.jac +8 -8
  92. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +3 -3
  93. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +3 -3
  94. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +1 -1
  95. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +2 -2
  96. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +3 -3
  97. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +1 -1
  98. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +1 -1
  99. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +1 -1
  100. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +10 -4
  101. jaclang/compiler/passes/tool/tests/test_doc_ir_gen_pass.py +29 -0
  102. jaclang/compiler/passes/tool/tests/test_jac_format_pass.py +63 -88
  103. jaclang/compiler/passes/tool/tests/test_unparse_validate.py +27 -28
  104. jaclang/compiler/passes/transform.py +56 -16
  105. jaclang/compiler/passes/{ir_pass.py → uni_pass.py} +35 -52
  106. jaclang/compiler/program.py +200 -0
  107. jaclang/compiler/tests/fixtures/codegentext.jac +31 -0
  108. jaclang/compiler/tests/fixtures/fam.jac +12 -12
  109. jaclang/compiler/tests/fixtures/hello_world.jac +1 -1
  110. jaclang/compiler/tests/fixtures/pkg_import_lib/__init__.jac +1 -0
  111. jaclang/compiler/tests/fixtures/pkg_import_lib/sub/__init__.jac +1 -0
  112. jaclang/compiler/tests/fixtures/pkg_import_lib/sub/helper.jac +3 -0
  113. jaclang/compiler/tests/fixtures/pkg_import_lib/tools.jac +3 -0
  114. jaclang/compiler/tests/fixtures/pkg_import_lib_py/__init__.py +11 -0
  115. jaclang/compiler/tests/fixtures/pkg_import_lib_py/sub/__init__.py +7 -0
  116. jaclang/compiler/tests/fixtures/pkg_import_lib_py/sub/helper.jac +3 -0
  117. jaclang/compiler/tests/fixtures/pkg_import_lib_py/tools.jac +3 -0
  118. jaclang/compiler/tests/fixtures/pkg_import_main.jac +10 -0
  119. jaclang/compiler/tests/fixtures/pkg_import_main_py.jac +11 -0
  120. jaclang/compiler/tests/fixtures/staticcheck.jac +2 -2
  121. jaclang/compiler/tests/test_importer.py +41 -16
  122. jaclang/compiler/tests/test_parser.py +39 -17
  123. jaclang/compiler/{absyntree.py → unitree.py} +1521 -1261
  124. jaclang/langserve/engine.jac +498 -0
  125. jaclang/langserve/sem_manager.jac +309 -0
  126. jaclang/langserve/server.jac +186 -0
  127. jaclang/langserve/tests/fixtures/base_module_structure.jac +7 -7
  128. jaclang/langserve/tests/fixtures/circle.jac +6 -6
  129. jaclang/langserve/tests/fixtures/circle_err.jac +6 -6
  130. jaclang/langserve/tests/fixtures/circle_pure.impl.jac +5 -5
  131. jaclang/langserve/tests/fixtures/circle_pure.jac +7 -7
  132. jaclang/langserve/tests/fixtures/circle_pure_err.impl.jac +2 -2
  133. jaclang/langserve/tests/fixtures/circle_pure_err.jac +7 -7
  134. jaclang/langserve/tests/fixtures/import_include_statements.jac +6 -6
  135. jaclang/langserve/tests/fixtures/rename.jac +6 -6
  136. jaclang/langserve/tests/server_test/test_lang_serve.py +261 -0
  137. jaclang/langserve/tests/server_test/utils.py +118 -0
  138. jaclang/langserve/tests/session.jac +294 -0
  139. jaclang/langserve/tests/test_sem_tokens.py +4 -4
  140. jaclang/langserve/tests/test_server.py +53 -30
  141. jaclang/langserve/utils.jac +459 -0
  142. jaclang/runtimelib/{architype.py → archetype.py} +86 -62
  143. jaclang/runtimelib/builtin.py +95 -0
  144. jaclang/runtimelib/constructs.py +11 -13
  145. jaclang/runtimelib/importer.py +83 -53
  146. jaclang/runtimelib/machine.py +1592 -144
  147. jaclang/runtimelib/memory.py +6 -6
  148. jaclang/{plugin → runtimelib}/tests/fixtures/graph_purger.jac +1 -1
  149. jaclang/{plugin → runtimelib}/tests/fixtures/impl_match.jac +2 -2
  150. jaclang/runtimelib/tests/fixtures/impl_match_impl.jac +3 -0
  151. jaclang/{plugin → runtimelib}/tests/fixtures/other_root_access.jac +7 -7
  152. jaclang/{plugin → runtimelib}/tests/fixtures/savable_object.jac +3 -5
  153. jaclang/{plugin → runtimelib}/tests/fixtures/simple_node_connection.jac +6 -6
  154. jaclang/{plugin → runtimelib}/tests/fixtures/simple_persistent.jac +1 -1
  155. jaclang/{plugin → runtimelib}/tests/fixtures/traversing_save.jac +7 -5
  156. jaclang/runtimelib/tests/test_features.py +72 -0
  157. jaclang/{plugin → runtimelib}/tests/test_jaseci.py +6 -5
  158. jaclang/runtimelib/utils.py +34 -66
  159. jaclang/settings.py +1 -6
  160. jaclang/tests/fixtures/{abc.jac → abc_check.jac} +6 -6
  161. jaclang/tests/fixtures/arch_rel_import_creation.jac +4 -4
  162. jaclang/tests/fixtures/async_ability.jac +18 -0
  163. jaclang/tests/fixtures/async_walker.jac +23 -0
  164. jaclang/tests/fixtures/backward_edge_visit.jac +31 -0
  165. jaclang/tests/fixtures/baddy.jac +1 -1
  166. jaclang/tests/fixtures/base_class1.jac +2 -2
  167. jaclang/tests/fixtures/base_class2.jac +2 -2
  168. jaclang/tests/fixtures/base_class_complex_expr.jac +3 -3
  169. jaclang/tests/fixtures/builtin_printgraph.jac +85 -0
  170. jaclang/tests/fixtures/builtin_printgraph_json.jac +21 -0
  171. jaclang/tests/fixtures/builtin_printgraph_mermaid.jac +16 -0
  172. jaclang/tests/fixtures/byllmissue.jac +1 -1
  173. jaclang/tests/fixtures/chandra_bugs.jac +1 -1
  174. jaclang/tests/fixtures/chandra_bugs2.jac +21 -14
  175. jaclang/tests/fixtures/cls_method.jac +6 -6
  176. jaclang/tests/fixtures/concurrency.jac +39 -0
  177. jaclang/tests/fixtures/connect_traverse_syntax.jac +18 -0
  178. jaclang/tests/fixtures/create_dynamic_archetype.jac +35 -0
  179. jaclang/tests/fixtures/decl_defn_param_name.jac +4 -4
  180. jaclang/tests/fixtures/deep/deeper/__init__.jac +1 -0
  181. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +2 -3
  182. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +3 -3
  183. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +2 -2
  184. jaclang/tests/fixtures/deep/mycode.jac +1 -1
  185. jaclang/tests/fixtures/deep/one_lev.jac +3 -4
  186. jaclang/tests/fixtures/deep/one_lev_dup.jac +2 -2
  187. jaclang/tests/fixtures/deep_convert.jac +1 -1
  188. jaclang/tests/fixtures/deep_import.jac +2 -2
  189. jaclang/tests/fixtures/deep_import_interp.jac +8 -0
  190. jaclang/tests/fixtures/deep_import_mods.jac +3 -3
  191. jaclang/tests/fixtures/deferred_field.jac +1 -1
  192. jaclang/tests/fixtures/del_clean.jac +7 -0
  193. jaclang/tests/fixtures/disconn.jac +2 -2
  194. jaclang/tests/fixtures/dynamic_archetype.jac +34 -0
  195. jaclang/tests/fixtures/edge_ability.jac +49 -0
  196. jaclang/tests/fixtures/edge_node_walk.jac +12 -12
  197. jaclang/tests/fixtures/edge_ops.jac +7 -7
  198. jaclang/tests/fixtures/edges_walk.jac +10 -10
  199. jaclang/tests/fixtures/edgetypeissue.jac +1 -1
  200. jaclang/tests/fixtures/enum_inside_archtype.jac +4 -4
  201. jaclang/tests/fixtures/err.impl.jac +1 -1
  202. jaclang/tests/fixtures/err.jac +2 -2
  203. jaclang/tests/fixtures/err_runtime.jac +2 -2
  204. jaclang/tests/fixtures/foo.jac +7 -7
  205. jaclang/tests/fixtures/game1.jac +4 -4
  206. jaclang/tests/fixtures/gendot_bubble_sort.jac +4 -4
  207. jaclang/tests/fixtures/glob_multivar_statement.jac +1 -1
  208. jaclang/tests/fixtures/guess_game.jac +6 -6
  209. jaclang/tests/fixtures/has_goodness.jac +1 -1
  210. jaclang/tests/fixtures/hash_init_check.jac +3 -3
  211. jaclang/tests/fixtures/hello.jac +1 -1
  212. jaclang/tests/fixtures/here_usage_error.jac +21 -0
  213. jaclang/tests/fixtures/here_visitor_usage.jac +21 -0
  214. jaclang/tests/fixtures/ignore.jac +3 -3
  215. jaclang/tests/fixtures/ignore_dup.jac +3 -3
  216. jaclang/tests/fixtures/impl_match_confused.impl.jac +1 -1
  217. jaclang/tests/fixtures/import.jac +9 -9
  218. jaclang/tests/fixtures/import_all.jac +1 -1
  219. jaclang/tests/fixtures/index_slice.jac +1 -1
  220. jaclang/tests/fixtures/inherit_check.jac +3 -3
  221. jaclang/tests/fixtures/jac_from_py.py +4 -0
  222. jaclang/tests/fixtures/jacsamp.jac +1 -1
  223. jaclang/tests/fixtures/jactest_main.jac +1 -1
  224. jaclang/tests/fixtures/jp_importer.jac +7 -8
  225. jaclang/tests/fixtures/jp_importer_auto.jac +3 -3
  226. jaclang/tests/fixtures/lambda.jac +2 -2
  227. jaclang/tests/fixtures/needs_import.jac +6 -6
  228. jaclang/tests/fixtures/needs_import_1.jac +1 -1
  229. jaclang/tests/fixtures/needs_import_2.jac +1 -1
  230. jaclang/tests/fixtures/needs_import_3.jac +1 -1
  231. jaclang/tests/fixtures/needs_import_dup.jac +6 -6
  232. jaclang/tests/fixtures/node_del.jac +54 -0
  233. jaclang/tests/fixtures/nosigself.jac +3 -3
  234. jaclang/tests/fixtures/py2jac.py +30 -0
  235. jaclang/tests/fixtures/py_bool_expr.py +7 -0
  236. jaclang/tests/fixtures/py_namedexpr.py +7 -0
  237. jaclang/tests/fixtures/pyfunc_3.py +0 -2
  238. jaclang/tests/fixtures/random_check.jac +5 -5
  239. jaclang/tests/fixtures/simple_archs.jac +2 -2
  240. jaclang/tests/fixtures/simple_walk.jac +52 -0
  241. jaclang/tests/fixtures/slice_vals.jac +3 -3
  242. jaclang/tests/fixtures/sub_abil_sep.jac +3 -3
  243. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +3 -3
  244. jaclang/tests/fixtures/trailing_comma.jac +4 -4
  245. jaclang/tests/fixtures/type_info.jac +5 -5
  246. jaclang/{compiler/passes/main/tests → tests}/fixtures/uninitialized_hasvars.jac +1 -1
  247. jaclang/tests/fixtures/visit_order.jac +4 -4
  248. jaclang/tests/fixtures/visit_traversal.jac +47 -0
  249. jaclang/tests/fixtures/walker_override.jac +2 -2
  250. jaclang/tests/fixtures/walker_update.jac +5 -5
  251. jaclang/tests/fixtures/with_context.jac +4 -4
  252. jaclang/tests/test_bugs.py +2 -2
  253. jaclang/tests/test_cli.py +127 -227
  254. jaclang/tests/test_language.py +542 -474
  255. jaclang/tests/test_man_code.py +2 -2
  256. jaclang/tests/test_reference.py +4 -4
  257. jaclang/tests/test_settings.py +16 -16
  258. jaclang/tests/test_typecheck.py +555 -0
  259. jaclang/utils/__init__.py +4 -0
  260. jaclang/utils/helpers.py +24 -31
  261. jaclang/utils/lang_tools.py +84 -75
  262. jaclang/utils/module_resolver.py +69 -0
  263. jaclang/utils/test.py +8 -5
  264. jaclang/utils/tests/test_lang_tools.py +40 -14
  265. jaclang/utils/treeprinter.py +178 -42
  266. jaclang/vendor/__init__.py +1 -2
  267. jaclang/vendor/attr/__init__.py +14 -44
  268. jaclang/vendor/attr/__init__.pyi +155 -321
  269. jaclang/vendor/attr/_cmp.py +25 -15
  270. jaclang/vendor/attr/_cmp.pyi +7 -7
  271. jaclang/vendor/attr/_compat.py +15 -8
  272. jaclang/vendor/attr/_config.py +1 -1
  273. jaclang/vendor/attr/_funcs.py +148 -163
  274. jaclang/vendor/attr/_make.py +859 -855
  275. jaclang/vendor/attr/_next_gen.py +426 -32
  276. jaclang/vendor/attr/converters.py +67 -49
  277. jaclang/vendor/attr/converters.pyi +13 -7
  278. jaclang/vendor/attr/filters.py +17 -11
  279. jaclang/vendor/attr/filters.pyi +3 -3
  280. jaclang/vendor/attr/setters.py +11 -5
  281. jaclang/vendor/attr/setters.pyi +2 -1
  282. jaclang/vendor/attr/validators.py +191 -162
  283. jaclang/vendor/attr/validators.pyi +25 -27
  284. jaclang/vendor/attrs/__init__.py +9 -5
  285. jaclang/vendor/attrs/__init__.pyi +225 -29
  286. jaclang/vendor/attrs-25.3.0.dist-info/INSTALLER +1 -0
  287. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/METADATA +83 -53
  288. jaclang/vendor/attrs-25.3.0.dist-info/RECORD +56 -0
  289. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/WHEEL +1 -1
  290. jaclang/vendor/bin/dmypy +8 -0
  291. jaclang/vendor/bin/mypy +8 -0
  292. jaclang/vendor/bin/mypyc +8 -0
  293. jaclang/vendor/bin/stubgen +8 -0
  294. jaclang/vendor/bin/stubtest +8 -0
  295. jaclang/vendor/cattr/gen.py +2 -2
  296. jaclang/vendor/cattr/preconf/bson.py +1 -0
  297. jaclang/vendor/cattr/preconf/json.py +1 -0
  298. jaclang/vendor/cattr/preconf/msgpack.py +1 -0
  299. jaclang/vendor/cattr/preconf/orjson.py +1 -0
  300. jaclang/vendor/cattr/preconf/pyyaml.py +1 -0
  301. jaclang/vendor/cattr/preconf/tomlkit.py +1 -0
  302. jaclang/vendor/cattr/preconf/ujson.py +1 -0
  303. jaclang/vendor/cattrs/__init__.py +21 -21
  304. jaclang/vendor/cattrs/_compat.py +176 -62
  305. jaclang/vendor/cattrs/_generics.py +5 -3
  306. jaclang/vendor/cattrs/cols.py +289 -0
  307. jaclang/vendor/cattrs/converters.py +505 -187
  308. jaclang/vendor/cattrs/disambiguators.py +118 -45
  309. jaclang/vendor/cattrs/dispatch.py +66 -36
  310. jaclang/vendor/cattrs/fns.py +6 -1
  311. jaclang/vendor/cattrs/gen/__init__.py +365 -202
  312. jaclang/vendor/cattrs/gen/_generics.py +41 -5
  313. jaclang/vendor/cattrs/gen/_lc.py +3 -2
  314. jaclang/vendor/cattrs/gen/_shared.py +39 -32
  315. jaclang/vendor/cattrs/gen/typeddicts.py +75 -88
  316. jaclang/vendor/cattrs/preconf/__init__.py +20 -0
  317. jaclang/vendor/cattrs/preconf/bson.py +7 -8
  318. jaclang/vendor/cattrs/preconf/cbor2.py +3 -0
  319. jaclang/vendor/cattrs/preconf/json.py +8 -4
  320. jaclang/vendor/cattrs/preconf/msgpack.py +3 -0
  321. jaclang/vendor/cattrs/preconf/msgspec.py +185 -0
  322. jaclang/vendor/cattrs/preconf/orjson.py +20 -7
  323. jaclang/vendor/cattrs/preconf/pyyaml.py +15 -3
  324. jaclang/vendor/cattrs/preconf/tomlkit.py +3 -1
  325. jaclang/vendor/cattrs/preconf/ujson.py +3 -0
  326. jaclang/vendor/cattrs/strategies/__init__.py +1 -0
  327. jaclang/vendor/cattrs/strategies/_class_methods.py +1 -1
  328. jaclang/vendor/cattrs/strategies/_subclasses.py +43 -29
  329. jaclang/vendor/cattrs/strategies/_unions.py +47 -24
  330. jaclang/vendor/cattrs/v.py +1 -0
  331. jaclang/vendor/cattrs-24.1.3.dist-info/INSTALLER +1 -0
  332. jaclang/vendor/cattrs-24.1.3.dist-info/METADATA +161 -0
  333. jaclang/vendor/cattrs-24.1.3.dist-info/RECORD +96 -0
  334. jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/WHEEL +1 -1
  335. jaclang/vendor/lark/__init__.py +38 -38
  336. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -6
  337. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  338. jaclang/vendor/lark/ast_utils.py +59 -59
  339. jaclang/vendor/lark/common.py +86 -89
  340. jaclang/vendor/lark/exceptions.py +292 -292
  341. jaclang/vendor/lark/grammar.py +130 -130
  342. jaclang/vendor/lark/grammars/common.lark +59 -59
  343. jaclang/vendor/lark/grammars/lark.lark +62 -62
  344. jaclang/vendor/lark/grammars/python.lark +302 -302
  345. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  346. jaclang/vendor/lark/indenter.py +143 -112
  347. jaclang/vendor/lark/lark.py +658 -661
  348. jaclang/vendor/lark/lexer.py +678 -678
  349. jaclang/vendor/lark/load_grammar.py +1428 -1428
  350. jaclang/vendor/lark/parse_tree_builder.py +391 -391
  351. jaclang/vendor/lark/parser_frontends.py +257 -257
  352. jaclang/vendor/lark/parsers/cyk.py +340 -340
  353. jaclang/vendor/lark/parsers/earley.py +317 -308
  354. jaclang/vendor/lark/parsers/earley_common.py +42 -42
  355. jaclang/vendor/lark/parsers/earley_forest.py +802 -810
  356. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -203
  357. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -332
  358. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +158 -157
  359. jaclang/vendor/lark/parsers/lalr_parser.py +122 -122
  360. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -110
  361. jaclang/vendor/lark/parsers/xearley.py +165 -165
  362. jaclang/vendor/lark/reconstruct.py +107 -107
  363. jaclang/vendor/lark/tools/__init__.py +70 -71
  364. jaclang/vendor/lark/tools/nearley.py +202 -202
  365. jaclang/vendor/lark/tools/serialize.py +32 -32
  366. jaclang/vendor/lark/tools/standalone.py +196 -196
  367. jaclang/vendor/lark/tree.py +267 -272
  368. jaclang/vendor/lark/tree_matcher.py +186 -186
  369. jaclang/vendor/lark/utils.py +346 -361
  370. jaclang/vendor/lark/visitors.py +596 -593
  371. jaclang/vendor/lark-1.2.2.dist-info/INSTALLER +1 -0
  372. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/METADATA +48 -47
  373. jaclang/vendor/lark-1.2.2.dist-info/RECORD +83 -0
  374. jaclang/vendor/{mypy_extensions-1.0.0.dist-info → lark-1.2.2.dist-info}/WHEEL +1 -1
  375. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info/licenses}/LICENSE +18 -18
  376. jaclang/vendor/lsprotocol-2023.0.1.dist-info/INSTALLER +1 -0
  377. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +2 -1
  378. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +17 -10
  379. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +1 -1
  380. jaclang/vendor/pluggy/_version.py +7 -2
  381. jaclang/vendor/pluggy-1.5.0.dist-info/INSTALLER +1 -0
  382. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +6 -5
  383. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +24 -14
  384. jaclang/vendor/pluggy-1.5.0.dist-info/WHEEL +1 -1
  385. jaclang/vendor/pygls-1.3.1.dist-info/INSTALLER +1 -0
  386. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +2 -2
  387. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +45 -24
  388. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +1 -1
  389. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/METADATA +2 -1
  390. jaclang-0.8.1.dist-info/RECORD +568 -0
  391. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/WHEEL +1 -1
  392. jaclang/compiler/.gitignore +0 -1
  393. jaclang/compiler/compile.py +0 -119
  394. jaclang/compiler/passes/main/access_modifier_pass.py +0 -130
  395. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +0 -656
  396. jaclang/compiler/passes/main/py_collect_dep_pass.py +0 -78
  397. jaclang/compiler/passes/main/pyout_pass.py +0 -86
  398. jaclang/compiler/passes/main/registry_pass.py +0 -156
  399. jaclang/compiler/passes/main/schedules.py +0 -47
  400. jaclang/compiler/passes/main/sub_node_tab_pass.py +0 -36
  401. jaclang/compiler/passes/main/tests/fixtures/registry.jac +0 -36
  402. jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py +0 -114
  403. jaclang/compiler/passes/main/tests/test_registry_pass.py +0 -31
  404. jaclang/compiler/passes/main/tests/test_type_check_pass.py +0 -91
  405. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +0 -29
  406. jaclang/compiler/passes/main/type_check_pass.py +0 -128
  407. jaclang/compiler/passes/tool/schedules.py +0 -18
  408. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +0 -36
  409. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +0 -17
  410. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +0 -32
  411. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +0 -27
  412. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +0 -35
  413. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +0 -25
  414. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +0 -13
  415. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +0 -63
  416. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/architype_test.jac +0 -13
  417. jaclang/compiler/passes/utils/mypy_ast_build.py +0 -940
  418. jaclang/compiler/py_info.py +0 -22
  419. jaclang/compiler/semtable.py +0 -159
  420. jaclang/compiler/symtable.py +0 -297
  421. jaclang/langserve/engine.py +0 -541
  422. jaclang/langserve/sem_manager.py +0 -379
  423. jaclang/langserve/server.py +0 -176
  424. jaclang/langserve/tests/session.py +0 -255
  425. jaclang/langserve/utils.py +0 -458
  426. jaclang/plugin/__init__.py +0 -7
  427. jaclang/plugin/builtin.py +0 -57
  428. jaclang/plugin/default.py +0 -1443
  429. jaclang/plugin/feature.py +0 -574
  430. jaclang/plugin/plugin.md +0 -471
  431. jaclang/plugin/spec.py +0 -536
  432. jaclang/plugin/tests/fixtures/impl_match_impl.jac +0 -3
  433. jaclang/plugin/tests/test_features.py +0 -56
  434. jaclang/runtimelib/context.py +0 -191
  435. jaclang/tests/fixtures/builtin_dotgen.jac +0 -42
  436. jaclang/tests/fixtures/create_dynamic_architype.jac +0 -35
  437. jaclang/tests/fixtures/dynamic_architype.jac +0 -34
  438. jaclang/tests/fixtures/impl_grab.impl.jac +0 -5
  439. jaclang/tests/fixtures/mtest.impl.jac +0 -6
  440. jaclang/tests/fixtures/registry.jac +0 -58
  441. jaclang/tests/fixtures/semstr.jac +0 -30
  442. jaclang/tests/main.jac +0 -2
  443. jaclang/utils/profiler.py +0 -62
  444. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +0 -35
  445. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +0 -221
  446. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +0 -48
  447. jaclang/vendor/lark-1.1.9.dist-info/RECORD +0 -46
  448. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +0 -5
  449. jaclang/vendor/mypy/__init__.py +0 -1
  450. jaclang/vendor/mypy/__main__.py +0 -37
  451. jaclang/vendor/mypy/api.py +0 -94
  452. jaclang/vendor/mypy/applytype.py +0 -172
  453. jaclang/vendor/mypy/argmap.py +0 -268
  454. jaclang/vendor/mypy/binder.py +0 -538
  455. jaclang/vendor/mypy/bogus_type.py +0 -27
  456. jaclang/vendor/mypy/build.py +0 -3562
  457. jaclang/vendor/mypy/checker.py +0 -8445
  458. jaclang/vendor/mypy/checkexpr.py +0 -6623
  459. jaclang/vendor/mypy/checkmember.py +0 -1363
  460. jaclang/vendor/mypy/checkpattern.py +0 -801
  461. jaclang/vendor/mypy/checkstrformat.py +0 -1109
  462. jaclang/vendor/mypy/config_parser.py +0 -670
  463. jaclang/vendor/mypy/constant_fold.py +0 -187
  464. jaclang/vendor/mypy/constraints.py +0 -1636
  465. jaclang/vendor/mypy/copytype.py +0 -133
  466. jaclang/vendor/mypy/defaults.py +0 -46
  467. jaclang/vendor/mypy/dmypy/__main__.py +0 -6
  468. jaclang/vendor/mypy/dmypy/client.py +0 -749
  469. jaclang/vendor/mypy/dmypy_os.py +0 -42
  470. jaclang/vendor/mypy/dmypy_server.py +0 -1107
  471. jaclang/vendor/mypy/dmypy_util.py +0 -117
  472. jaclang/vendor/mypy/erasetype.py +0 -278
  473. jaclang/vendor/mypy/errorcodes.py +0 -291
  474. jaclang/vendor/mypy/errors.py +0 -1280
  475. jaclang/vendor/mypy/evalexpr.py +0 -205
  476. jaclang/vendor/mypy/expandtype.py +0 -524
  477. jaclang/vendor/mypy/exprtotype.py +0 -209
  478. jaclang/vendor/mypy/fastparse.py +0 -2147
  479. jaclang/vendor/mypy/find_sources.py +0 -243
  480. jaclang/vendor/mypy/fixup.py +0 -428
  481. jaclang/vendor/mypy/freetree.py +0 -23
  482. jaclang/vendor/mypy/fscache.py +0 -309
  483. jaclang/vendor/mypy/fswatcher.py +0 -106
  484. jaclang/vendor/mypy/gclogger.py +0 -47
  485. jaclang/vendor/mypy/git.py +0 -34
  486. jaclang/vendor/mypy/graph_utils.py +0 -112
  487. jaclang/vendor/mypy/indirection.py +0 -121
  488. jaclang/vendor/mypy/infer.py +0 -75
  489. jaclang/vendor/mypy/inspections.py +0 -627
  490. jaclang/vendor/mypy/ipc.py +0 -310
  491. jaclang/vendor/mypy/join.py +0 -871
  492. jaclang/vendor/mypy/literals.py +0 -306
  493. jaclang/vendor/mypy/lookup.py +0 -61
  494. jaclang/vendor/mypy/main.py +0 -1574
  495. jaclang/vendor/mypy/maptype.py +0 -106
  496. jaclang/vendor/mypy/meet.py +0 -1140
  497. jaclang/vendor/mypy/memprofile.py +0 -121
  498. jaclang/vendor/mypy/message_registry.py +0 -329
  499. jaclang/vendor/mypy/messages.py +0 -3186
  500. jaclang/vendor/mypy/metastore.py +0 -225
  501. jaclang/vendor/mypy/mixedtraverser.py +0 -112
  502. jaclang/vendor/mypy/modulefinder.py +0 -875
  503. jaclang/vendor/mypy/moduleinspect.py +0 -184
  504. jaclang/vendor/mypy/mro.py +0 -62
  505. jaclang/vendor/mypy/nodes.py +0 -4115
  506. jaclang/vendor/mypy/operators.py +0 -126
  507. jaclang/vendor/mypy/options.py +0 -556
  508. jaclang/vendor/mypy/parse.py +0 -30
  509. jaclang/vendor/mypy/partially_defined.py +0 -675
  510. jaclang/vendor/mypy/patterns.py +0 -150
  511. jaclang/vendor/mypy/plugin.py +0 -901
  512. jaclang/vendor/mypy/plugins/attrs.py +0 -1166
  513. jaclang/vendor/mypy/plugins/common.py +0 -440
  514. jaclang/vendor/mypy/plugins/ctypes.py +0 -245
  515. jaclang/vendor/mypy/plugins/dataclasses.py +0 -1108
  516. jaclang/vendor/mypy/plugins/default.py +0 -531
  517. jaclang/vendor/mypy/plugins/enums.py +0 -259
  518. jaclang/vendor/mypy/plugins/functools.py +0 -104
  519. jaclang/vendor/mypy/plugins/proper_plugin.py +0 -175
  520. jaclang/vendor/mypy/plugins/singledispatch.py +0 -224
  521. jaclang/vendor/mypy/py.typed +0 -1
  522. jaclang/vendor/mypy/pyinfo.py +0 -78
  523. jaclang/vendor/mypy/reachability.py +0 -362
  524. jaclang/vendor/mypy/refinfo.py +0 -92
  525. jaclang/vendor/mypy/renaming.py +0 -568
  526. jaclang/vendor/mypy/report.py +0 -924
  527. jaclang/vendor/mypy/scope.py +0 -125
  528. jaclang/vendor/mypy/semanal.py +0 -7187
  529. jaclang/vendor/mypy/semanal_classprop.py +0 -187
  530. jaclang/vendor/mypy/semanal_enum.py +0 -253
  531. jaclang/vendor/mypy/semanal_infer.py +0 -128
  532. jaclang/vendor/mypy/semanal_main.py +0 -511
  533. jaclang/vendor/mypy/semanal_namedtuple.py +0 -670
  534. jaclang/vendor/mypy/semanal_newtype.py +0 -273
  535. jaclang/vendor/mypy/semanal_pass1.py +0 -156
  536. jaclang/vendor/mypy/semanal_shared.py +0 -490
  537. jaclang/vendor/mypy/semanal_typeargs.py +0 -265
  538. jaclang/vendor/mypy/semanal_typeddict.py +0 -575
  539. jaclang/vendor/mypy/server/astdiff.py +0 -518
  540. jaclang/vendor/mypy/server/astmerge.py +0 -562
  541. jaclang/vendor/mypy/server/aststrip.py +0 -281
  542. jaclang/vendor/mypy/server/deps.py +0 -1137
  543. jaclang/vendor/mypy/server/mergecheck.py +0 -83
  544. jaclang/vendor/mypy/server/objgraph.py +0 -101
  545. jaclang/vendor/mypy/server/subexpr.py +0 -198
  546. jaclang/vendor/mypy/server/target.py +0 -11
  547. jaclang/vendor/mypy/server/trigger.py +0 -26
  548. jaclang/vendor/mypy/server/update.py +0 -1339
  549. jaclang/vendor/mypy/sharedparse.py +0 -112
  550. jaclang/vendor/mypy/solve.py +0 -562
  551. jaclang/vendor/mypy/split_namespace.py +0 -35
  552. jaclang/vendor/mypy/state.py +0 -28
  553. jaclang/vendor/mypy/stats.py +0 -489
  554. jaclang/vendor/mypy/strconv.py +0 -641
  555. jaclang/vendor/mypy/stubdoc.py +0 -491
  556. jaclang/vendor/mypy/stubgen.py +0 -1886
  557. jaclang/vendor/mypy/stubgenc.py +0 -993
  558. jaclang/vendor/mypy/stubinfo.py +0 -173
  559. jaclang/vendor/mypy/stubtest.py +0 -2079
  560. jaclang/vendor/mypy/stubutil.py +0 -834
  561. jaclang/vendor/mypy/subtypes.py +0 -1980
  562. jaclang/vendor/mypy/suggestions.py +0 -1046
  563. jaclang/vendor/mypy/test/config.py +0 -28
  564. jaclang/vendor/mypy/test/data.py +0 -821
  565. jaclang/vendor/mypy/test/helpers.py +0 -476
  566. jaclang/vendor/mypy/test/meta/_pytest.py +0 -72
  567. jaclang/vendor/mypy/test/meta/test_diff_helper.py +0 -47
  568. jaclang/vendor/mypy/test/meta/test_parse_data.py +0 -73
  569. jaclang/vendor/mypy/test/meta/test_update_data.py +0 -135
  570. jaclang/vendor/mypy/test/test_find_sources.py +0 -376
  571. jaclang/vendor/mypy/test/test_ref_info.py +0 -45
  572. jaclang/vendor/mypy/test/testapi.py +0 -45
  573. jaclang/vendor/mypy/test/testargs.py +0 -77
  574. jaclang/vendor/mypy/test/testcheck.py +0 -322
  575. jaclang/vendor/mypy/test/testcmdline.py +0 -152
  576. jaclang/vendor/mypy/test/testconstraints.py +0 -134
  577. jaclang/vendor/mypy/test/testdaemon.py +0 -132
  578. jaclang/vendor/mypy/test/testdeps.py +0 -77
  579. jaclang/vendor/mypy/test/testdiff.py +0 -67
  580. jaclang/vendor/mypy/test/testerrorstream.py +0 -46
  581. jaclang/vendor/mypy/test/testfinegrained.py +0 -438
  582. jaclang/vendor/mypy/test/testfinegrainedcache.py +0 -18
  583. jaclang/vendor/mypy/test/testformatter.py +0 -85
  584. jaclang/vendor/mypy/test/testfscache.py +0 -101
  585. jaclang/vendor/mypy/test/testgraph.py +0 -83
  586. jaclang/vendor/mypy/test/testinfer.py +0 -373
  587. jaclang/vendor/mypy/test/testipc.py +0 -119
  588. jaclang/vendor/mypy/test/testmerge.py +0 -238
  589. jaclang/vendor/mypy/test/testmodulefinder.py +0 -278
  590. jaclang/vendor/mypy/test/testmypyc.py +0 -14
  591. jaclang/vendor/mypy/test/testparse.py +0 -107
  592. jaclang/vendor/mypy/test/testpep561.py +0 -211
  593. jaclang/vendor/mypy/test/testpythoneval.py +0 -117
  594. jaclang/vendor/mypy/test/testreports.py +0 -55
  595. jaclang/vendor/mypy/test/testsemanal.py +0 -209
  596. jaclang/vendor/mypy/test/testsolve.py +0 -285
  597. jaclang/vendor/mypy/test/teststubgen.py +0 -1412
  598. jaclang/vendor/mypy/test/teststubinfo.py +0 -12
  599. jaclang/vendor/mypy/test/teststubtest.py +0 -2492
  600. jaclang/vendor/mypy/test/testsubtypes.py +0 -303
  601. jaclang/vendor/mypy/test/testtransform.py +0 -64
  602. jaclang/vendor/mypy/test/testtypegen.py +0 -83
  603. jaclang/vendor/mypy/test/testtypes.py +0 -1551
  604. jaclang/vendor/mypy/test/testutil.py +0 -111
  605. jaclang/vendor/mypy/test/typefixture.py +0 -415
  606. jaclang/vendor/mypy/test/update_data.py +0 -87
  607. jaclang/vendor/mypy/test/visitors.py +0 -63
  608. jaclang/vendor/mypy/traverser.py +0 -961
  609. jaclang/vendor/mypy/treetransform.py +0 -800
  610. jaclang/vendor/mypy/tvar_scope.py +0 -169
  611. jaclang/vendor/mypy/type_visitor.py +0 -564
  612. jaclang/vendor/mypy/typeanal.py +0 -2596
  613. jaclang/vendor/mypy/typeops.py +0 -1082
  614. jaclang/vendor/mypy/types.py +0 -3708
  615. jaclang/vendor/mypy/types_utils.py +0 -166
  616. jaclang/vendor/mypy/typeshed/LICENSE +0 -237
  617. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +0 -309
  618. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +0 -36
  619. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +0 -3
  620. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +0 -591
  621. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +0 -84
  622. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +0 -1
  623. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +0 -133
  624. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +0 -94
  625. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +0 -8
  626. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +0 -25
  627. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +0 -90
  628. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +0 -207
  629. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +0 -566
  630. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +0 -281
  631. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +0 -33
  632. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +0 -164
  633. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +0 -11
  634. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +0 -28
  635. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +0 -49
  636. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +0 -100
  637. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +0 -35
  638. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +0 -16
  639. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +0 -92
  640. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +0 -147
  641. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +0 -34
  642. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +0 -33
  643. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +0 -14
  644. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +0 -43
  645. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +0 -12
  646. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +0 -16
  647. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +0 -803
  648. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +0 -103
  649. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +0 -59
  650. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +0 -17
  651. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +0 -121
  652. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +0 -17
  653. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +0 -347
  654. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +0 -37
  655. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +0 -44
  656. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +0 -9
  657. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +0 -55
  658. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +0 -41
  659. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +0 -51
  660. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +0 -255
  661. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +0 -51
  662. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +0 -91
  663. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +0 -3
  664. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +0 -595
  665. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +0 -92
  666. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +0 -277
  667. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +0 -21
  668. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +0 -41
  669. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +0 -440
  670. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +0 -19
  671. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +0 -63
  672. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +0 -9
  673. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +0 -20
  674. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +0 -26
  675. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +0 -580
  676. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +0 -43
  677. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +0 -20
  678. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +0 -57
  679. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +0 -121
  680. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +0 -3
  681. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +0 -9
  682. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +0 -64
  683. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +0 -34
  684. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +0 -47
  685. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +0 -32
  686. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +0 -8
  687. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +0 -165
  688. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +0 -10
  689. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +0 -153
  690. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +0 -229
  691. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +0 -25
  692. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +0 -497
  693. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +0 -9
  694. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +0 -19
  695. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +0 -47
  696. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +0 -94
  697. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +0 -196
  698. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +0 -85
  699. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +0 -49
  700. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +0 -90
  701. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +0 -12
  702. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +0 -43
  703. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +0 -59
  704. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +0 -102
  705. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +0 -36
  706. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +0 -45
  707. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +0 -4
  708. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +0 -1936
  709. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +0 -146
  710. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +0 -31
  711. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +0 -208
  712. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +0 -118
  713. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +0 -32
  714. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +0 -20
  715. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +0 -36
  716. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +0 -45
  717. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +0 -33
  718. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +0 -285
  719. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +0 -13
  720. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +0 -485
  721. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +0 -2
  722. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +0 -13
  723. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +0 -111
  724. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +0 -32
  725. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +0 -126
  726. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +0 -233
  727. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +0 -80
  728. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +0 -313
  729. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +0 -208
  730. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +0 -63
  731. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +0 -16
  732. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +0 -21
  733. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +0 -12
  734. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +0 -147
  735. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +0 -187
  736. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +0 -19
  737. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +0 -6
  738. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +0 -298
  739. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +0 -22
  740. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +0 -62
  741. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +0 -1
  742. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +0 -22
  743. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +0 -11
  744. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +0 -315
  745. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +0 -295
  746. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +0 -95
  747. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +0 -31
  748. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +0 -41
  749. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +0 -37
  750. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +0 -2
  751. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +0 -140
  752. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +0 -144
  753. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +0 -5
  754. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +0 -20
  755. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +0 -3
  756. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +0 -152
  757. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +0 -66
  758. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +0 -25
  759. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +0 -21
  760. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +0 -45
  761. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +0 -52
  762. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +0 -16
  763. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +0 -31
  764. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +0 -27
  765. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +0 -50
  766. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +0 -44
  767. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +0 -24
  768. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +0 -39
  769. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +0 -17
  770. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +0 -83
  771. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +0 -63
  772. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +0 -19
  773. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +0 -18
  774. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +0 -16
  775. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +0 -25
  776. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +0 -18
  777. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +0 -18
  778. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +0 -42
  779. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +0 -17
  780. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +0 -17
  781. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +0 -57
  782. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +0 -20
  783. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +0 -1
  784. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +0 -3
  785. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +0 -13
  786. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +0 -146
  787. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +0 -19
  788. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +0 -36
  789. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +0 -34
  790. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +0 -14
  791. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +0 -50
  792. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +0 -25
  793. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +0 -3
  794. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +0 -2
  795. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +0 -31
  796. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +0 -21
  797. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +0 -3
  798. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +0 -46
  799. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +0 -36
  800. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +0 -248
  801. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +0 -2
  802. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +0 -29
  803. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +0 -392
  804. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +0 -51
  805. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +0 -13
  806. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +0 -34
  807. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +0 -11
  808. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +0 -8
  809. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +0 -39
  810. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +0 -23
  811. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +0 -40
  812. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +0 -31
  813. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +0 -178
  814. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +0 -12
  815. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +0 -165
  816. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +0 -17
  817. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +0 -17
  818. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +0 -8
  819. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +0 -17
  820. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +0 -8
  821. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +0 -18
  822. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +0 -5
  823. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +0 -9
  824. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +0 -26
  825. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +0 -38
  826. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +0 -28
  827. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +0 -70
  828. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +0 -10
  829. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +0 -21
  830. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +0 -22
  831. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +0 -12
  832. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +0 -320
  833. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +0 -222
  834. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +0 -13
  835. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +0 -127
  836. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +0 -57
  837. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +0 -213
  838. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +0 -9
  839. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +0 -88
  840. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +0 -150
  841. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +0 -178
  842. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +0 -213
  843. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +0 -37
  844. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +0 -52
  845. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +0 -11
  846. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +0 -8
  847. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +0 -169
  848. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +0 -42
  849. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +0 -28
  850. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +0 -22
  851. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +0 -160
  852. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +0 -167
  853. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +0 -17
  854. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +0 -38
  855. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +0 -6
  856. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +0 -6
  857. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +0 -34
  858. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +0 -105
  859. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +0 -259
  860. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +0 -159
  861. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +0 -60
  862. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +0 -83
  863. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +0 -168
  864. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +0 -17
  865. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +0 -62
  866. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +0 -24
  867. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +0 -15
  868. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +0 -172
  869. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +0 -179
  870. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +0 -285
  871. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +0 -49
  872. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +0 -68
  873. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +0 -46
  874. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +0 -12
  875. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +0 -14
  876. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +0 -56
  877. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +0 -11
  878. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +0 -43
  879. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +0 -632
  880. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +0 -238
  881. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +0 -208
  882. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +0 -273
  883. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +0 -61
  884. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +0 -32
  885. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +0 -40
  886. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +0 -1
  887. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +0 -21
  888. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +0 -28
  889. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +0 -42
  890. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +0 -8
  891. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +0 -10
  892. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +0 -8
  893. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +0 -8
  894. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +0 -16
  895. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +0 -14
  896. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +0 -8
  897. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +0 -8
  898. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +0 -13
  899. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +0 -9
  900. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +0 -8
  901. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +0 -8
  902. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +0 -8
  903. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +0 -8
  904. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +0 -15
  905. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +0 -16
  906. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +0 -21
  907. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +0 -6
  908. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +0 -11
  909. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +0 -9
  910. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +0 -8
  911. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +0 -9
  912. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +0 -7
  913. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +0 -7
  914. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +0 -9
  915. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +0 -17
  916. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +0 -10
  917. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +0 -8
  918. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +0 -19
  919. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +0 -8
  920. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +0 -8
  921. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +0 -12
  922. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +0 -8
  923. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +0 -12
  924. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +0 -8
  925. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +0 -8
  926. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +0 -8
  927. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +0 -9
  928. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +0 -17
  929. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +0 -8
  930. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +0 -7
  931. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +0 -8
  932. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +0 -9
  933. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +0 -8
  934. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +0 -17
  935. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +0 -8
  936. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +0 -12
  937. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +0 -15
  938. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +0 -12
  939. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +0 -20
  940. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +0 -8
  941. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +0 -9
  942. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +0 -42
  943. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +0 -9
  944. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +0 -27
  945. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +0 -24
  946. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +0 -7
  947. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +0 -30
  948. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +0 -50
  949. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +0 -67
  950. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +0 -96
  951. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +0 -114
  952. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +0 -117
  953. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +0 -82
  954. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +0 -23
  955. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +0 -152
  956. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +0 -658
  957. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +0 -134
  958. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +0 -275
  959. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +0 -197
  960. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +0 -256
  961. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +0 -11
  962. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +0 -33
  963. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +0 -125
  964. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +0 -46
  965. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +0 -113
  966. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +0 -66
  967. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +0 -177
  968. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +0 -94
  969. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +0 -13
  970. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +0 -7
  971. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +0 -32
  972. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +0 -90
  973. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +0 -75
  974. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +0 -189
  975. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +0 -77
  976. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +0 -39
  977. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +0 -31
  978. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +0 -36
  979. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +0 -212
  980. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +0 -103
  981. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +0 -23
  982. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +0 -16
  983. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +0 -20
  984. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +0 -30
  985. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +0 -39
  986. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +0 -41
  987. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +0 -90
  988. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +0 -20
  989. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +0 -18
  990. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +0 -40
  991. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +0 -107
  992. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +0 -32
  993. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +0 -54
  994. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +0 -98
  995. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +0 -23
  996. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +0 -9
  997. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +0 -125
  998. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +0 -111
  999. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +0 -119
  1000. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +0 -2
  1001. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +0 -209
  1002. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +0 -59
  1003. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +0 -110
  1004. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +0 -255
  1005. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +0 -1157
  1006. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +0 -8
  1007. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +0 -131
  1008. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +0 -24
  1009. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +0 -232
  1010. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +0 -181
  1011. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +0 -271
  1012. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +0 -167
  1013. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +0 -16
  1014. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +0 -53
  1015. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +0 -42
  1016. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +0 -113
  1017. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +0 -71
  1018. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +0 -361
  1019. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +0 -161
  1020. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +0 -112
  1021. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +0 -31
  1022. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +0 -80
  1023. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +0 -19
  1024. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +0 -28
  1025. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +0 -34
  1026. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +0 -74
  1027. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +0 -261
  1028. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  1029. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +0 -1
  1030. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +0 -85
  1031. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +0 -49
  1032. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +0 -11
  1033. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +0 -66
  1034. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +0 -11
  1035. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +0 -138
  1036. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +0 -290
  1037. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +0 -36
  1038. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +0 -65
  1039. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +0 -94
  1040. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +0 -9
  1041. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +0 -24
  1042. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +0 -42
  1043. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +0 -15
  1044. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +0 -155
  1045. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +0 -67
  1046. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +0 -46
  1047. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +0 -63
  1048. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +0 -185
  1049. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +0 -188
  1050. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +0 -27
  1051. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +0 -91
  1052. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +0 -204
  1053. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +0 -14
  1054. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +0 -825
  1055. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +0 -168
  1056. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +0 -41
  1057. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +0 -1
  1058. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +0 -551
  1059. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +0 -11
  1060. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +0 -130
  1061. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +0 -104
  1062. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +0 -537
  1063. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +0 -1
  1064. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +0 -132
  1065. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +0 -83
  1066. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +0 -27
  1067. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +0 -26
  1068. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +0 -2615
  1069. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +0 -86
  1070. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +0 -93
  1071. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +0 -58
  1072. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +0 -373
  1073. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +0 -52
  1074. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +0 -48
  1075. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +0 -46
  1076. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +0 -16
  1077. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +0 -441
  1078. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +0 -122
  1079. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +0 -477
  1080. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +0 -267
  1081. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +0 -103
  1082. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +0 -2
  1083. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +0 -187
  1084. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +0 -108
  1085. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +0 -32
  1086. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +0 -3654
  1087. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +0 -20
  1088. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +0 -14
  1089. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +0 -80
  1090. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +0 -16
  1091. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +0 -20
  1092. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +0 -151
  1093. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +0 -116
  1094. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +0 -44
  1095. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +0 -9
  1096. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +0 -54
  1097. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +0 -299
  1098. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +0 -1204
  1099. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +0 -159
  1100. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +0 -177
  1101. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +0 -10
  1102. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +0 -79
  1103. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +0 -262
  1104. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +0 -124
  1105. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +0 -30
  1106. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +0 -713
  1107. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +0 -614
  1108. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +0 -976
  1109. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +0 -509
  1110. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +0 -73
  1111. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +0 -67
  1112. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +0 -27
  1113. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +0 -21
  1114. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +0 -342
  1115. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +0 -51
  1116. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +0 -69
  1117. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +0 -430
  1118. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +0 -47
  1119. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +0 -72
  1120. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +0 -15
  1121. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +0 -22
  1122. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +0 -23
  1123. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  1124. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +0 -23
  1125. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +0 -210
  1126. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +0 -400
  1127. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +0 -43
  1128. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +0 -20
  1129. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +0 -13
  1130. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +0 -100
  1131. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +0 -112
  1132. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +0 -85
  1133. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +0 -149
  1134. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +0 -74
  1135. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +0 -132
  1136. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +0 -28
  1137. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  1138. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +0 -91
  1139. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +0 -26
  1140. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +0 -37
  1141. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +0 -32
  1142. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +0 -24
  1143. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +0 -50
  1144. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +0 -57
  1145. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +0 -1
  1146. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +0 -19
  1147. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +0 -69
  1148. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +0 -8
  1149. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +0 -100
  1150. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +0 -22
  1151. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +0 -404
  1152. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +0 -94
  1153. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +0 -108
  1154. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +0 -28
  1155. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +0 -34
  1156. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +0 -327
  1157. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  1158. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +0 -1
  1159. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +0 -1
  1160. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +0 -1
  1161. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +0 -1
  1162. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +0 -1
  1163. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +0 -25
  1164. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +0 -19
  1165. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +0 -55
  1166. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +0 -60
  1167. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +0 -87
  1168. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1169. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +0 -296
  1170. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +0 -143
  1171. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +0 -22
  1172. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +0 -20
  1173. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +0 -306
  1174. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +0 -95
  1175. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +0 -32
  1176. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +0 -56
  1177. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +0 -38
  1178. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +0 -218
  1179. jaclang/vendor/mypy/typestate.py +0 -323
  1180. jaclang/vendor/mypy/typetraverser.py +0 -148
  1181. jaclang/vendor/mypy/typevars.py +0 -93
  1182. jaclang/vendor/mypy/typevartuples.py +0 -32
  1183. jaclang/vendor/mypy/util.py +0 -869
  1184. jaclang/vendor/mypy/version.py +0 -1
  1185. jaclang/vendor/mypy/visitor.py +0 -621
  1186. jaclang/vendor/mypy/xml/mypy-html.css +0 -104
  1187. jaclang/vendor/mypy/xml/mypy-html.xslt +0 -81
  1188. jaclang/vendor/mypy/xml/mypy-txt.xslt +0 -100
  1189. jaclang/vendor/mypy/xml/mypy.xsd +0 -50
  1190. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +0 -229
  1191. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +0 -48
  1192. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +0 -1241
  1193. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +0 -6
  1194. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +0 -6
  1195. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +0 -3
  1196. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +0 -27
  1197. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +0 -29
  1198. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +0 -6
  1199. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +0 -1
  1200. jaclang/vendor/mypy_extensions.py +0 -213
  1201. jaclang/vendor/mypyc/README.md +0 -133
  1202. jaclang/vendor/mypyc/__init__.py +0 -0
  1203. jaclang/vendor/mypyc/__main__.py +0 -57
  1204. jaclang/vendor/mypyc/analysis/__init__.py +0 -0
  1205. jaclang/vendor/mypyc/analysis/attrdefined.py +0 -436
  1206. jaclang/vendor/mypyc/analysis/blockfreq.py +0 -32
  1207. jaclang/vendor/mypyc/analysis/dataflow.py +0 -628
  1208. jaclang/vendor/mypyc/analysis/ircheck.py +0 -433
  1209. jaclang/vendor/mypyc/analysis/selfleaks.py +0 -211
  1210. jaclang/vendor/mypyc/build.py +0 -616
  1211. jaclang/vendor/mypyc/codegen/__init__.py +0 -0
  1212. jaclang/vendor/mypyc/codegen/cstring.py +0 -54
  1213. jaclang/vendor/mypyc/codegen/emit.py +0 -1193
  1214. jaclang/vendor/mypyc/codegen/emitclass.py +0 -1060
  1215. jaclang/vendor/mypyc/codegen/emitfunc.py +0 -852
  1216. jaclang/vendor/mypyc/codegen/emitmodule.py +0 -1136
  1217. jaclang/vendor/mypyc/codegen/emitwrapper.py +0 -979
  1218. jaclang/vendor/mypyc/codegen/literals.py +0 -302
  1219. jaclang/vendor/mypyc/common.py +0 -136
  1220. jaclang/vendor/mypyc/crash.py +0 -31
  1221. jaclang/vendor/mypyc/doc/Makefile +0 -20
  1222. jaclang/vendor/mypyc/doc/bool_operations.rst +0 -27
  1223. jaclang/vendor/mypyc/doc/compilation_units.rst +0 -20
  1224. jaclang/vendor/mypyc/doc/conf.py +0 -59
  1225. jaclang/vendor/mypyc/doc/cpython-timings.md +0 -25
  1226. jaclang/vendor/mypyc/doc/dev-intro.md +0 -548
  1227. jaclang/vendor/mypyc/doc/dict_operations.rst +0 -59
  1228. jaclang/vendor/mypyc/doc/differences_from_python.rst +0 -332
  1229. jaclang/vendor/mypyc/doc/float_operations.rst +0 -50
  1230. jaclang/vendor/mypyc/doc/future.md +0 -42
  1231. jaclang/vendor/mypyc/doc/getting_started.rst +0 -240
  1232. jaclang/vendor/mypyc/doc/index.rst +0 -61
  1233. jaclang/vendor/mypyc/doc/int_operations.rst +0 -162
  1234. jaclang/vendor/mypyc/doc/introduction.rst +0 -150
  1235. jaclang/vendor/mypyc/doc/list_operations.rst +0 -65
  1236. jaclang/vendor/mypyc/doc/make.bat +0 -35
  1237. jaclang/vendor/mypyc/doc/native_classes.rst +0 -206
  1238. jaclang/vendor/mypyc/doc/native_operations.rst +0 -55
  1239. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +0 -244
  1240. jaclang/vendor/mypyc/doc/set_operations.rst +0 -47
  1241. jaclang/vendor/mypyc/doc/str_operations.rst +0 -35
  1242. jaclang/vendor/mypyc/doc/tuple_operations.rst +0 -33
  1243. jaclang/vendor/mypyc/doc/using_type_annotations.rst +0 -398
  1244. jaclang/vendor/mypyc/errors.py +0 -29
  1245. jaclang/vendor/mypyc/external/googletest/LICENSE +0 -28
  1246. jaclang/vendor/mypyc/external/googletest/README.md +0 -280
  1247. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +0 -294
  1248. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +0 -250
  1249. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +0 -1444
  1250. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  1251. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +0 -993
  1252. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +0 -232
  1253. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +0 -179
  1254. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +0 -263
  1255. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +0 -2236
  1256. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +0 -358
  1257. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +0 -58
  1258. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +0 -69
  1259. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  1260. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +0 -41
  1261. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -319
  1262. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +0 -206
  1263. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +0 -1238
  1264. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  1265. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  1266. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  1267. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +0 -731
  1268. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +0 -93
  1269. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +0 -2560
  1270. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +0 -167
  1271. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  1272. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  1273. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +0 -3331
  1274. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -297
  1275. jaclang/vendor/mypyc/external/googletest/make/Makefile +0 -61
  1276. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +0 -48
  1277. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +0 -1342
  1278. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +0 -387
  1279. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +0 -1183
  1280. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +0 -1259
  1281. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +0 -373
  1282. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +0 -110
  1283. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +0 -118
  1284. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +0 -5388
  1285. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +0 -38
  1286. jaclang/vendor/mypyc/ir/__init__.py +0 -0
  1287. jaclang/vendor/mypyc/ir/class_ir.py +0 -499
  1288. jaclang/vendor/mypyc/ir/func_ir.py +0 -370
  1289. jaclang/vendor/mypyc/ir/module_ir.py +0 -88
  1290. jaclang/vendor/mypyc/ir/ops.py +0 -1727
  1291. jaclang/vendor/mypyc/ir/pprint.py +0 -516
  1292. jaclang/vendor/mypyc/ir/rtypes.py +0 -1038
  1293. jaclang/vendor/mypyc/irbuild/__init__.py +0 -0
  1294. jaclang/vendor/mypyc/irbuild/ast_helpers.py +0 -123
  1295. jaclang/vendor/mypyc/irbuild/builder.py +0 -1394
  1296. jaclang/vendor/mypyc/irbuild/callable_class.py +0 -173
  1297. jaclang/vendor/mypyc/irbuild/classdef.py +0 -850
  1298. jaclang/vendor/mypyc/irbuild/constant_fold.py +0 -95
  1299. jaclang/vendor/mypyc/irbuild/context.py +0 -186
  1300. jaclang/vendor/mypyc/irbuild/env_class.py +0 -223
  1301. jaclang/vendor/mypyc/irbuild/expression.py +0 -1070
  1302. jaclang/vendor/mypyc/irbuild/for_helpers.py +0 -1075
  1303. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +0 -250
  1304. jaclang/vendor/mypyc/irbuild/function.py +0 -1088
  1305. jaclang/vendor/mypyc/irbuild/generator.py +0 -346
  1306. jaclang/vendor/mypyc/irbuild/ll_builder.py +0 -2389
  1307. jaclang/vendor/mypyc/irbuild/main.py +0 -153
  1308. jaclang/vendor/mypyc/irbuild/mapper.py +0 -221
  1309. jaclang/vendor/mypyc/irbuild/match.py +0 -355
  1310. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +0 -197
  1311. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +0 -203
  1312. jaclang/vendor/mypyc/irbuild/prepare.py +0 -609
  1313. jaclang/vendor/mypyc/irbuild/specialize.py +0 -822
  1314. jaclang/vendor/mypyc/irbuild/statement.py +0 -1017
  1315. jaclang/vendor/mypyc/irbuild/targets.py +0 -57
  1316. jaclang/vendor/mypyc/irbuild/util.py +0 -189
  1317. jaclang/vendor/mypyc/irbuild/visitor.py +0 -401
  1318. jaclang/vendor/mypyc/irbuild/vtable.py +0 -82
  1319. jaclang/vendor/mypyc/lib-rt/CPy.h +0 -638
  1320. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +0 -143
  1321. jaclang/vendor/mypyc/lib-rt/dict_ops.c +0 -446
  1322. jaclang/vendor/mypyc/lib-rt/exc_ops.c +0 -259
  1323. jaclang/vendor/mypyc/lib-rt/float_ops.c +0 -192
  1324. jaclang/vendor/mypyc/lib-rt/generic_ops.c +0 -64
  1325. jaclang/vendor/mypyc/lib-rt/getargs.c +0 -450
  1326. jaclang/vendor/mypyc/lib-rt/getargsfast.c +0 -569
  1327. jaclang/vendor/mypyc/lib-rt/init.c +0 -13
  1328. jaclang/vendor/mypyc/lib-rt/int_ops.c +0 -803
  1329. jaclang/vendor/mypyc/lib-rt/list_ops.c +0 -335
  1330. jaclang/vendor/mypyc/lib-rt/misc_ops.c +0 -942
  1331. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +0 -18
  1332. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +0 -118
  1333. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +0 -497
  1334. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +0 -533
  1335. jaclang/vendor/mypyc/lib-rt/set_ops.c +0 -17
  1336. jaclang/vendor/mypyc/lib-rt/setup.py +0 -70
  1337. jaclang/vendor/mypyc/lib-rt/str_ops.c +0 -241
  1338. jaclang/vendor/mypyc/lib-rt/test_capi.cc +0 -585
  1339. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +0 -61
  1340. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1341. jaclang/vendor/mypyc/lower/int_ops.py +0 -113
  1342. jaclang/vendor/mypyc/lower/list_ops.py +0 -45
  1343. jaclang/vendor/mypyc/lower/misc_ops.py +0 -12
  1344. jaclang/vendor/mypyc/lower/registry.py +0 -26
  1345. jaclang/vendor/mypyc/namegen.py +0 -115
  1346. jaclang/vendor/mypyc/options.py +0 -32
  1347. jaclang/vendor/mypyc/primitives/__init__.py +0 -0
  1348. jaclang/vendor/mypyc/primitives/bytes_ops.py +0 -101
  1349. jaclang/vendor/mypyc/primitives/dict_ops.py +0 -325
  1350. jaclang/vendor/mypyc/primitives/exc_ops.py +0 -101
  1351. jaclang/vendor/mypyc/primitives/float_ops.py +0 -168
  1352. jaclang/vendor/mypyc/primitives/generic_ops.py +0 -384
  1353. jaclang/vendor/mypyc/primitives/int_ops.py +0 -303
  1354. jaclang/vendor/mypyc/primitives/list_ops.py +0 -310
  1355. jaclang/vendor/mypyc/primitives/misc_ops.py +0 -267
  1356. jaclang/vendor/mypyc/primitives/registry.py +0 -360
  1357. jaclang/vendor/mypyc/primitives/set_ops.py +0 -121
  1358. jaclang/vendor/mypyc/primitives/str_ops.py +0 -229
  1359. jaclang/vendor/mypyc/primitives/tuple_ops.py +0 -83
  1360. jaclang/vendor/mypyc/rt_subtype.py +0 -77
  1361. jaclang/vendor/mypyc/sametype.py +0 -83
  1362. jaclang/vendor/mypyc/subtype.py +0 -88
  1363. jaclang/vendor/mypyc/test/__init__.py +0 -0
  1364. jaclang/vendor/mypyc/test/config.py +0 -13
  1365. jaclang/vendor/mypyc/test/test_alwaysdefined.py +0 -46
  1366. jaclang/vendor/mypyc/test/test_analysis.py +0 -77
  1367. jaclang/vendor/mypyc/test/test_cheader.py +0 -53
  1368. jaclang/vendor/mypyc/test/test_commandline.py +0 -82
  1369. jaclang/vendor/mypyc/test/test_emit.py +0 -69
  1370. jaclang/vendor/mypyc/test/test_emitclass.py +0 -35
  1371. jaclang/vendor/mypyc/test/test_emitfunc.py +0 -928
  1372. jaclang/vendor/mypyc/test/test_emitwrapper.py +0 -60
  1373. jaclang/vendor/mypyc/test/test_exceptions.py +0 -56
  1374. jaclang/vendor/mypyc/test/test_external.py +0 -49
  1375. jaclang/vendor/mypyc/test/test_irbuild.py +0 -87
  1376. jaclang/vendor/mypyc/test/test_ircheck.py +0 -199
  1377. jaclang/vendor/mypyc/test/test_literals.py +0 -90
  1378. jaclang/vendor/mypyc/test/test_lowering.py +0 -56
  1379. jaclang/vendor/mypyc/test/test_namegen.py +0 -48
  1380. jaclang/vendor/mypyc/test/test_optimizations.py +0 -68
  1381. jaclang/vendor/mypyc/test/test_pprint.py +0 -42
  1382. jaclang/vendor/mypyc/test/test_rarray.py +0 -48
  1383. jaclang/vendor/mypyc/test/test_refcount.py +0 -59
  1384. jaclang/vendor/mypyc/test/test_run.py +0 -426
  1385. jaclang/vendor/mypyc/test/test_serialization.py +0 -108
  1386. jaclang/vendor/mypyc/test/test_struct.py +0 -112
  1387. jaclang/vendor/mypyc/test/test_tuplename.py +0 -33
  1388. jaclang/vendor/mypyc/test/test_typeops.py +0 -97
  1389. jaclang/vendor/mypyc/test/testutil.py +0 -283
  1390. jaclang/vendor/mypyc/test-data/alwaysdefined.test +0 -732
  1391. jaclang/vendor/mypyc/test-data/analysis.test +0 -470
  1392. jaclang/vendor/mypyc/test-data/commandline.test +0 -245
  1393. jaclang/vendor/mypyc/test-data/driver/driver.py +0 -48
  1394. jaclang/vendor/mypyc/test-data/exceptions-freq.test +0 -125
  1395. jaclang/vendor/mypyc/test-data/exceptions.test +0 -699
  1396. jaclang/vendor/mypyc/test-data/fixtures/ir.py +0 -373
  1397. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +0 -103
  1398. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +0 -169
  1399. jaclang/vendor/mypyc/test-data/irbuild-any.test +0 -236
  1400. jaclang/vendor/mypyc/test-data/irbuild-basic.test +0 -3399
  1401. jaclang/vendor/mypyc/test-data/irbuild-bool.test +0 -424
  1402. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +0 -181
  1403. jaclang/vendor/mypyc/test-data/irbuild-classes.test +0 -1302
  1404. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +0 -480
  1405. jaclang/vendor/mypyc/test-data/irbuild-dict.test +0 -584
  1406. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +0 -215
  1407. jaclang/vendor/mypyc/test-data/irbuild-float.test +0 -497
  1408. jaclang/vendor/mypyc/test-data/irbuild-generics.test +0 -150
  1409. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +0 -437
  1410. jaclang/vendor/mypyc/test-data/irbuild-i16.test +0 -526
  1411. jaclang/vendor/mypyc/test-data/irbuild-i32.test +0 -598
  1412. jaclang/vendor/mypyc/test-data/irbuild-i64.test +0 -2144
  1413. jaclang/vendor/mypyc/test-data/irbuild-int.test +0 -194
  1414. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +0 -109
  1415. jaclang/vendor/mypyc/test-data/irbuild-lists.test +0 -513
  1416. jaclang/vendor/mypyc/test-data/irbuild-match.test +0 -1717
  1417. jaclang/vendor/mypyc/test-data/irbuild-math.test +0 -64
  1418. jaclang/vendor/mypyc/test-data/irbuild-nested.test +0 -807
  1419. jaclang/vendor/mypyc/test-data/irbuild-optional.test +0 -536
  1420. jaclang/vendor/mypyc/test-data/irbuild-set.test +0 -806
  1421. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +0 -257
  1422. jaclang/vendor/mypyc/test-data/irbuild-statements.test +0 -1060
  1423. jaclang/vendor/mypyc/test-data/irbuild-str.test +0 -312
  1424. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +0 -12
  1425. jaclang/vendor/mypyc/test-data/irbuild-try.test +0 -523
  1426. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +0 -386
  1427. jaclang/vendor/mypyc/test-data/irbuild-u8.test +0 -543
  1428. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +0 -241
  1429. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +0 -153
  1430. jaclang/vendor/mypyc/test-data/lowering-int.test +0 -377
  1431. jaclang/vendor/mypyc/test-data/lowering-list.test +0 -33
  1432. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +0 -400
  1433. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +0 -296
  1434. jaclang/vendor/mypyc/test-data/refcount.test +0 -1482
  1435. jaclang/vendor/mypyc/test-data/run-async.test +0 -173
  1436. jaclang/vendor/mypyc/test-data/run-attrs.test +0 -318
  1437. jaclang/vendor/mypyc/test-data/run-bench.test +0 -196
  1438. jaclang/vendor/mypyc/test-data/run-bools.test +0 -229
  1439. jaclang/vendor/mypyc/test-data/run-bytes.test +0 -302
  1440. jaclang/vendor/mypyc/test-data/run-classes.test +0 -2505
  1441. jaclang/vendor/mypyc/test-data/run-dicts.test +0 -334
  1442. jaclang/vendor/mypyc/test-data/run-dunders.test +0 -945
  1443. jaclang/vendor/mypyc/test-data/run-exceptions.test +0 -448
  1444. jaclang/vendor/mypyc/test-data/run-floats.test +0 -516
  1445. jaclang/vendor/mypyc/test-data/run-functions.test +0 -1310
  1446. jaclang/vendor/mypyc/test-data/run-generators.test +0 -682
  1447. jaclang/vendor/mypyc/test-data/run-i16.test +0 -338
  1448. jaclang/vendor/mypyc/test-data/run-i32.test +0 -336
  1449. jaclang/vendor/mypyc/test-data/run-i64.test +0 -1519
  1450. jaclang/vendor/mypyc/test-data/run-imports.test +0 -265
  1451. jaclang/vendor/mypyc/test-data/run-integers.test +0 -540
  1452. jaclang/vendor/mypyc/test-data/run-lists.test +0 -411
  1453. jaclang/vendor/mypyc/test-data/run-loops.test +0 -485
  1454. jaclang/vendor/mypyc/test-data/run-match.test +0 -283
  1455. jaclang/vendor/mypyc/test-data/run-math.test +0 -106
  1456. jaclang/vendor/mypyc/test-data/run-misc.test +0 -1170
  1457. jaclang/vendor/mypyc/test-data/run-multimodule.test +0 -887
  1458. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +0 -138
  1459. jaclang/vendor/mypyc/test-data/run-primitives.test +0 -375
  1460. jaclang/vendor/mypyc/test-data/run-python37.test +0 -159
  1461. jaclang/vendor/mypyc/test-data/run-python38.test +0 -88
  1462. jaclang/vendor/mypyc/test-data/run-sets.test +0 -150
  1463. jaclang/vendor/mypyc/test-data/run-singledispatch.test +0 -698
  1464. jaclang/vendor/mypyc/test-data/run-strings.test +0 -641
  1465. jaclang/vendor/mypyc/test-data/run-traits.test +0 -411
  1466. jaclang/vendor/mypyc/test-data/run-tuples.test +0 -258
  1467. jaclang/vendor/mypyc/test-data/run-u8.test +0 -303
  1468. jaclang/vendor/mypyc/transform/__init__.py +0 -0
  1469. jaclang/vendor/mypyc/transform/copy_propagation.py +0 -94
  1470. jaclang/vendor/mypyc/transform/exceptions.py +0 -182
  1471. jaclang/vendor/mypyc/transform/flag_elimination.py +0 -108
  1472. jaclang/vendor/mypyc/transform/ir_transform.py +0 -368
  1473. jaclang/vendor/mypyc/transform/lower.py +0 -33
  1474. jaclang/vendor/mypyc/transform/refcount.py +0 -294
  1475. jaclang/vendor/mypyc/transform/uninit.py +0 -190
  1476. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +0 -279
  1477. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +0 -67
  1478. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +0 -5
  1479. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +0 -4
  1480. jaclang/vendor/typing_extensions.py +0 -3641
  1481. jaclang-0.7.34.dist-info/RECORD +0 -1563
  1482. /jaclang/{vendor/mypy/dmypy → compiler/larkparse}/__init__.py +0 -0
  1483. /jaclang/{tests → compiler/passes/main/tests}/fixtures/access_checker.jac +0 -0
  1484. /jaclang/langserve/{__init__.py → __init__.jac} +0 -0
  1485. /jaclang/{vendor/mypy/plugins/__init__.py → langserve/tests/fixtures/deep_check_crash.jac} +0 -0
  1486. /jaclang/{vendor/mypy/server/__init__.py → langserve/tests/server_test/code_test.py} +0 -0
  1487. /jaclang/{plugin → runtimelib}/tests/__init__.py +0 -0
  1488. /jaclang/{vendor/mypy/test → tests}/__init__.py +0 -0
  1489. /jaclang/{vendor/mypy/test/meta → tests/fixtures}/__init__.py +0 -0
  1490. /jaclang/tests/fixtures/{architype_def_bug.jac → archetype_def_bug.jac} +0 -0
  1491. /jaclang/vendor/{mypy/typeshed/stdlib/concurrent/__init__.pyi → attrs-25.3.0.dist-info/REQUESTED} +0 -0
  1492. /jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/licenses/LICENSE +0 -0
  1493. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/__init__.pyi → cattrs-24.1.3.dist-info/REQUESTED} +0 -0
  1494. /jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/licenses/LICENSE +0 -0
  1495. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi → lark-1.2.2.dist-info/REQUESTED} +0 -0
  1496. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/entry_points.txt +0 -0
  1497. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/top_level.txt +0 -0
  1498. /jaclang/vendor/{mypy/typeshed/stdlib/email/mime/__init__.pyi → lsprotocol-2023.0.1.dist-info/REQUESTED} +0 -0
  1499. /jaclang/vendor/lsprotocol-2023.0.1.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1500. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/__init__.pyi → pluggy-1.5.0.dist-info/REQUESTED} +0 -0
  1501. /jaclang/vendor/pluggy-1.5.0.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1502. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi → pygls-1.3.1.dist-info/REQUESTED} +0 -0
  1503. {jaclang-0.7.34.dist-info → jaclang-0.8.1.dist-info}/entry_points.txt +0 -0
@@ -1,147 +1,1428 @@
1
- """Jac Machine module."""
1
+ """Jac Language Features."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import ast as ast3
6
+ import asyncio
7
+ import fnmatch
8
+ import html
5
9
  import inspect
6
- import marshal
7
10
  import os
8
11
  import sys
9
12
  import tempfile
10
13
  import types
11
- from contextvars import ContextVar
12
- from typing import Optional, Union
13
-
14
- from jaclang.compiler.absyntree import Module
15
- from jaclang.compiler.compile import compile_jac
16
- from jaclang.compiler.constant import Constants as Con
17
- from jaclang.compiler.semtable import SemRegistry
18
- from jaclang.runtimelib.architype import (
19
- Architype,
20
- EdgeArchitype,
21
- NodeArchitype,
22
- WalkerArchitype,
14
+ from collections import OrderedDict
15
+ from concurrent.futures import Future, ThreadPoolExecutor
16
+ from dataclasses import MISSING, dataclass, field
17
+ from functools import partial, wraps
18
+ from inspect import getfile
19
+ from logging import getLogger
20
+ from typing import (
21
+ Any,
22
+ Callable,
23
+ Mapping,
24
+ Optional,
25
+ ParamSpec,
26
+ Sequence,
27
+ TYPE_CHECKING,
28
+ Type,
29
+ TypeAlias,
30
+ TypeVar,
31
+ Union,
32
+ cast,
23
33
  )
24
- from jaclang.utils.log import logging
34
+ from uuid import UUID
25
35
 
26
36
 
27
- logger = logging.getLogger(__name__)
37
+ from jaclang.compiler import unitree as ast
38
+ from jaclang.compiler.constant import Constants as Con, EdgeDir, colors
39
+ from jaclang.compiler.passes.main.pyast_gen_pass import PyastGenPass
40
+ from jaclang.compiler.program import JacProgram
41
+ from jaclang.runtimelib.archetype import (
42
+ DataSpatialFunction,
43
+ GenericEdge as _GenericEdge,
44
+ Root as _Root,
45
+ )
46
+ from jaclang.runtimelib.constructs import (
47
+ AccessLevel,
48
+ Anchor,
49
+ Archetype,
50
+ EdgeAnchor,
51
+ EdgeArchetype,
52
+ GenericEdge,
53
+ JacTestCheck,
54
+ NodeAnchor,
55
+ NodeArchetype,
56
+ Root,
57
+ WalkerAnchor,
58
+ WalkerArchetype,
59
+ )
60
+ from jaclang.runtimelib.memory import Memory, Shelf, ShelfStorage
61
+ from jaclang.runtimelib.utils import (
62
+ all_issubclass,
63
+ collect_node_connections,
64
+ traverse_graph,
65
+ )
66
+ from jaclang.utils import infer_language
28
67
 
68
+ import pluggy
29
69
 
30
- JACMACHINE_CONTEXT = ContextVar["JacMachine | None"]("JacMachine")
31
70
 
71
+ plugin_manager = pluggy.PluginManager("jac")
72
+ hookspec = pluggy.HookspecMarker("jac")
73
+ hookimpl = pluggy.HookimplMarker("jac")
74
+ logger = getLogger(__name__)
32
75
 
33
- class JacMachine:
34
- """JacMachine to handle the VM-related functionalities and loaded programs."""
76
+ T = TypeVar("T")
77
+ P = ParamSpec("P")
35
78
 
36
- def __init__(self, base_path: str = "") -> None:
37
- """Initialize the JacMachine object."""
38
- self.loaded_modules: dict[str, types.ModuleType] = {}
39
- if not base_path:
40
- base_path = os.getcwd()
41
- # Ensure the base_path is a list rather than a string
42
- self.base_path = base_path
43
- self.base_path_dir = (
44
- os.path.dirname(base_path)
45
- if not os.path.isdir(base_path)
46
- else os.path.abspath(base_path)
79
+
80
+ class JacAccessValidation:
81
+ """Jac Access Validation Specs."""
82
+
83
+ @staticmethod
84
+ def elevate_root() -> None:
85
+ """Elevate context root to system_root."""
86
+ jctx = JacMachineInterface.get_context()
87
+ jctx.root_state = jctx.system_root
88
+
89
+ @staticmethod
90
+ def allow_root(
91
+ archetype: Archetype,
92
+ root_id: UUID,
93
+ level: AccessLevel | int | str = AccessLevel.READ,
94
+ ) -> None:
95
+ """Allow all access from target root graph to current Archetype."""
96
+ level = AccessLevel.cast(level)
97
+ access = archetype.__jac__.access.roots
98
+
99
+ _root_id = str(root_id)
100
+ if level != access.anchors.get(_root_id, AccessLevel.NO_ACCESS):
101
+ access.anchors[_root_id] = level
102
+
103
+ @staticmethod
104
+ def disallow_root(
105
+ archetype: Archetype,
106
+ root_id: UUID,
107
+ level: AccessLevel | int | str = AccessLevel.READ,
108
+ ) -> None:
109
+ """Disallow all access from target root graph to current Archetype."""
110
+ level = AccessLevel.cast(level)
111
+ access = archetype.__jac__.access.roots
112
+
113
+ access.anchors.pop(str(root_id), None)
114
+
115
+ @staticmethod
116
+ def perm_grant(
117
+ archetype: Archetype, level: AccessLevel | int | str = AccessLevel.READ
118
+ ) -> None:
119
+ """Allow everyone to access current Archetype."""
120
+ anchor = archetype.__jac__
121
+ level = AccessLevel.cast(level)
122
+ if level != anchor.access.all:
123
+ anchor.access.all = level
124
+
125
+ @staticmethod
126
+ def perm_revoke(archetype: Archetype) -> None:
127
+ """Disallow others to access current Archetype."""
128
+ anchor = archetype.__jac__
129
+ if anchor.access.all > AccessLevel.NO_ACCESS:
130
+ anchor.access.all = AccessLevel.NO_ACCESS
131
+
132
+ @staticmethod
133
+ def check_read_access(to: Anchor) -> bool:
134
+ """Read Access Validation."""
135
+ if not (
136
+ access_level := JacMachineInterface.check_access_level(to)
137
+ > AccessLevel.NO_ACCESS
138
+ ):
139
+ logger.info(
140
+ f"Current root doesn't have read access to {to.__class__.__name__}[{to.id}]"
141
+ )
142
+ return access_level
143
+
144
+ @staticmethod
145
+ def check_connect_access(to: Anchor) -> bool:
146
+ """Write Access Validation."""
147
+ if not (
148
+ access_level := JacMachineInterface.check_access_level(to)
149
+ > AccessLevel.READ
150
+ ):
151
+ logger.info(
152
+ f"Current root doesn't have connect access to {to.__class__.__name__}[{to.id}]"
153
+ )
154
+ return access_level
155
+
156
+ @staticmethod
157
+ def check_write_access(to: Anchor) -> bool:
158
+ """Write Access Validation."""
159
+ if not (
160
+ access_level := JacMachineInterface.check_access_level(to)
161
+ > AccessLevel.CONNECT
162
+ ):
163
+ logger.info(
164
+ f"Current root doesn't have write access to {to.__class__.__name__}[{to.id}]"
165
+ )
166
+ return access_level
167
+
168
+ @staticmethod
169
+ def check_access_level(to: Anchor) -> AccessLevel:
170
+ """Access validation."""
171
+ if not to.persistent:
172
+ return AccessLevel.WRITE
173
+
174
+ jctx = JacMachineInterface.get_context()
175
+
176
+ jroot = jctx.root_state
177
+
178
+ # if current root is system_root
179
+ # if current root id is equal to target anchor's root id
180
+ # if current root is the target anchor
181
+ if jroot == jctx.system_root or jroot.id == to.root or jroot == to:
182
+ return AccessLevel.WRITE
183
+
184
+ access_level = AccessLevel.NO_ACCESS
185
+
186
+ # if target anchor have set access.all
187
+ if (to_access := to.access).all > AccessLevel.NO_ACCESS:
188
+ access_level = to_access.all
189
+
190
+ # if target anchor's root have set allowed roots
191
+ # if current root is allowed to the whole graph of target anchor's root
192
+ if to.root and isinstance(to_root := jctx.mem.find_one(to.root), Anchor):
193
+ if to_root.access.all > access_level:
194
+ access_level = to_root.access.all
195
+
196
+ if (level := to_root.access.roots.check(str(jroot.id))) is not None:
197
+ access_level = level
198
+
199
+ # if target anchor have set allowed roots
200
+ # if current root is allowed to target anchor
201
+ if (level := to_access.roots.check(str(jroot.id))) is not None:
202
+ access_level = level
203
+
204
+ return access_level
205
+
206
+
207
+ class JacNode:
208
+ """Jac Node Operations."""
209
+
210
+ @staticmethod
211
+ def node_dot(node: NodeArchetype, dot_file: Optional[str] = None) -> str:
212
+ """Generate Dot file for visualizing nodes and edges."""
213
+ visited_nodes: set[NodeAnchor] = set()
214
+ connections: set[tuple[NodeArchetype, NodeArchetype, str]] = set()
215
+ unique_node_id_dict = {}
216
+
217
+ collect_node_connections(node.__jac__, visited_nodes, connections)
218
+ dot_content = 'digraph {\nnode [style="filled", shape="ellipse", fillcolor="invis", fontcolor="black"];\n'
219
+ for idx, i in enumerate([nodes_.archetype for nodes_ in visited_nodes]):
220
+ unique_node_id_dict[i] = (i.__class__.__name__, str(idx))
221
+ dot_content += f'{idx} [label="{i}"];\n'
222
+ dot_content += 'edge [color="gray", style="solid"];\n'
223
+
224
+ for pair in list(set(connections)):
225
+ dot_content += (
226
+ f"{unique_node_id_dict[pair[0]][1]} -> {unique_node_id_dict[pair[1]][1]}"
227
+ f' [label="{pair[2]}"];\n'
228
+ )
229
+ if dot_file:
230
+ with open(dot_file, "w") as f:
231
+ f.write(dot_content + "}")
232
+ return dot_content + "}"
233
+
234
+ @staticmethod
235
+ def get_edges(
236
+ node: NodeAnchor,
237
+ dir: EdgeDir,
238
+ filter: Callable[[EdgeArchetype], bool] | None,
239
+ target_obj: list[NodeArchetype] | None,
240
+ ) -> list[EdgeArchetype]:
241
+ """Get edges connected to this node."""
242
+ ret_edges: list[EdgeArchetype] = []
243
+ for anchor in node.edges:
244
+ if (
245
+ (source := anchor.source)
246
+ and (target := anchor.target)
247
+ and (not filter or filter(anchor.archetype))
248
+ and source.archetype
249
+ and target.archetype
250
+ ):
251
+ if (
252
+ dir in [EdgeDir.OUT, EdgeDir.ANY]
253
+ and node == source
254
+ and (not target_obj or target.archetype in target_obj)
255
+ and JacMachineInterface.check_read_access(target)
256
+ ):
257
+ ret_edges.append(anchor.archetype)
258
+ if (
259
+ dir in [EdgeDir.IN, EdgeDir.ANY]
260
+ and node == target
261
+ and (not target_obj or source.archetype in target_obj)
262
+ and JacMachineInterface.check_read_access(source)
263
+ ):
264
+ ret_edges.append(anchor.archetype)
265
+ return ret_edges
266
+
267
+ @staticmethod
268
+ def edges_to_nodes(
269
+ node: NodeAnchor,
270
+ dir: EdgeDir,
271
+ filter: Callable[[EdgeArchetype], bool] | None,
272
+ target_obj: list[NodeArchetype] | None,
273
+ ) -> list[NodeArchetype]:
274
+ """Get set of nodes connected to this node."""
275
+ ret_edges: list[NodeArchetype] = []
276
+ for anchor in node.edges:
277
+ if (
278
+ (source := anchor.source)
279
+ and (target := anchor.target)
280
+ and (not filter or filter(anchor.archetype))
281
+ and source.archetype
282
+ and target.archetype
283
+ ):
284
+ if (
285
+ dir in [EdgeDir.OUT, EdgeDir.ANY]
286
+ and node == source
287
+ and (not target_obj or target.archetype in target_obj)
288
+ and JacMachineInterface.check_read_access(target)
289
+ ):
290
+ ret_edges.append(target.archetype)
291
+ if (
292
+ dir in [EdgeDir.IN, EdgeDir.ANY]
293
+ and node == target
294
+ and (not target_obj or source.archetype in target_obj)
295
+ and JacMachineInterface.check_read_access(source)
296
+ ):
297
+ ret_edges.append(source.archetype)
298
+ return ret_edges
299
+
300
+ @staticmethod
301
+ def remove_edge(node: NodeAnchor, edge: EdgeAnchor) -> None:
302
+ """Remove reference without checking sync status."""
303
+ for idx, ed in enumerate(node.edges):
304
+ if ed.id == edge.id:
305
+ node.edges.pop(idx)
306
+ break
307
+
308
+
309
+ class JacEdge:
310
+ """Jac Edge Operations."""
311
+
312
+ @staticmethod
313
+ def detach(edge: EdgeAnchor) -> None:
314
+ """Detach edge from nodes."""
315
+ JacMachineInterface.remove_edge(node=edge.source, edge=edge)
316
+ JacMachineInterface.remove_edge(node=edge.target, edge=edge)
317
+
318
+
319
+ class JacWalker:
320
+ """Jac Edge Operations."""
321
+
322
+ @staticmethod
323
+ def visit(
324
+ walker: WalkerArchetype,
325
+ expr: (
326
+ list[NodeArchetype | EdgeArchetype]
327
+ | list[NodeArchetype]
328
+ | list[EdgeArchetype]
329
+ | NodeArchetype
330
+ | EdgeArchetype
331
+ ),
332
+ insert_loc: int = -1,
333
+ ) -> bool: # noqa: ANN401
334
+ """Jac's visit stmt feature."""
335
+ if isinstance(walker, WalkerArchetype):
336
+ """Walker visits node."""
337
+ wanch = walker.__jac__
338
+ before_len = len(wanch.next)
339
+ next = []
340
+ for anchor in (
341
+ (i.__jac__ for i in expr) if isinstance(expr, list) else [expr.__jac__]
342
+ ):
343
+ if anchor not in wanch.ignores:
344
+ if isinstance(anchor, (NodeAnchor, EdgeAnchor)):
345
+ next.append(anchor)
346
+ else:
347
+ raise ValueError("Anchor should be NodeAnchor or EdgeAnchor.")
348
+ if insert_loc < -len(wanch.next): # for out of index selection
349
+ insert_loc = 0
350
+ elif insert_loc < 0:
351
+ insert_loc += len(wanch.next) + 1
352
+ wanch.next = wanch.next[:insert_loc] + next + wanch.next[insert_loc:]
353
+ return len(wanch.next) > before_len
354
+ else:
355
+ raise TypeError("Invalid walker object")
356
+
357
+ @staticmethod
358
+ def ignore(
359
+ walker: WalkerArchetype,
360
+ expr: (
361
+ list[NodeArchetype | EdgeArchetype]
362
+ | list[NodeArchetype]
363
+ | list[EdgeArchetype]
364
+ | NodeArchetype
365
+ | EdgeArchetype
366
+ ),
367
+ ) -> bool: # noqa: ANN401
368
+ """Jac's ignore stmt feature."""
369
+ if isinstance(walker, WalkerArchetype):
370
+ wanch = walker.__jac__
371
+ before_len = len(wanch.ignores)
372
+ for anchor in (
373
+ (i.__jac__ for i in expr) if isinstance(expr, list) else [expr.__jac__]
374
+ ):
375
+ if anchor not in wanch.ignores:
376
+ if isinstance(anchor, NodeAnchor):
377
+ wanch.ignores.append(anchor)
378
+ elif isinstance(anchor, EdgeAnchor):
379
+ if target := anchor.target:
380
+ wanch.ignores.append(target)
381
+ else:
382
+ raise ValueError("Edge has no target.")
383
+ return len(wanch.ignores) > before_len
384
+ else:
385
+ raise TypeError("Invalid walker object")
386
+
387
+ @staticmethod
388
+ def spawn_call(
389
+ walker: WalkerAnchor,
390
+ node: NodeAnchor | EdgeAnchor,
391
+ ) -> WalkerArchetype:
392
+ """Jac's spawn operator feature."""
393
+ warch = walker.archetype
394
+ walker.path = []
395
+ current_loc = node.archetype
396
+
397
+ # walker ability on any entry
398
+ for i in warch._jac_entry_funcs_:
399
+ if not i.trigger:
400
+ i.func(warch, current_loc)
401
+ if walker.disengaged:
402
+ return warch
403
+
404
+ while len(walker.next):
405
+ if current_loc := walker.next.pop(0).archetype:
406
+ # walker ability with loc entry
407
+ for i in warch._jac_entry_funcs_:
408
+ if (
409
+ i.trigger
410
+ and (
411
+ all_issubclass(i.trigger, NodeArchetype)
412
+ or all_issubclass(i.trigger, EdgeArchetype)
413
+ )
414
+ and isinstance(current_loc, i.trigger)
415
+ ):
416
+ i.func(warch, current_loc)
417
+ if walker.disengaged:
418
+ return warch
419
+
420
+ # loc ability with any entry
421
+ for i in current_loc._jac_entry_funcs_:
422
+ if not i.trigger:
423
+ i.func(current_loc, warch)
424
+ if walker.disengaged:
425
+ return warch
426
+
427
+ # loc ability with walker entry
428
+ for i in current_loc._jac_entry_funcs_:
429
+ if (
430
+ i.trigger
431
+ and all_issubclass(i.trigger, WalkerArchetype)
432
+ and isinstance(warch, i.trigger)
433
+ ):
434
+ i.func(current_loc, warch)
435
+ if walker.disengaged:
436
+ return warch
437
+
438
+ # loc ability with walker exit
439
+ for i in current_loc._jac_exit_funcs_:
440
+ if (
441
+ i.trigger
442
+ and all_issubclass(i.trigger, WalkerArchetype)
443
+ and isinstance(warch, i.trigger)
444
+ ):
445
+ i.func(current_loc, warch)
446
+ if walker.disengaged:
447
+ return warch
448
+
449
+ # loc ability with any exit
450
+ for i in current_loc._jac_exit_funcs_:
451
+ if not i.trigger:
452
+ i.func(current_loc, warch)
453
+ if walker.disengaged:
454
+ return warch
455
+
456
+ # walker ability with loc exit
457
+ for i in warch._jac_exit_funcs_:
458
+ if (
459
+ i.trigger
460
+ and (
461
+ all_issubclass(i.trigger, NodeArchetype)
462
+ or all_issubclass(i.trigger, EdgeArchetype)
463
+ )
464
+ and isinstance(current_loc, i.trigger)
465
+ ):
466
+ i.func(warch, current_loc)
467
+ if walker.disengaged:
468
+ return warch
469
+ # walker ability with any exit
470
+ for i in warch._jac_exit_funcs_:
471
+ if not i.trigger:
472
+ i.func(warch, current_loc)
473
+ if walker.disengaged:
474
+ return warch
475
+
476
+ walker.ignores = []
477
+ return warch
478
+
479
+ @staticmethod
480
+ def spawn(op1: Archetype, op2: Archetype) -> WalkerArchetype | asyncio.Future:
481
+ """Jac's spawn operator feature."""
482
+ edge: EdgeAnchor | None = None
483
+ if isinstance(op1, WalkerArchetype):
484
+ warch = op1
485
+ walker = op1.__jac__
486
+ if isinstance(op2, NodeArchetype):
487
+ node = op2.__jac__
488
+ elif isinstance(op2, EdgeArchetype):
489
+ edge = op2.__jac__
490
+ node = op2.__jac__.target
491
+ else:
492
+ raise TypeError("Invalid target object")
493
+ elif isinstance(op2, WalkerArchetype):
494
+ warch = op2
495
+ walker = op2.__jac__
496
+ if isinstance(op1, NodeArchetype):
497
+ node = op1.__jac__
498
+ elif isinstance(op1, EdgeArchetype):
499
+ edge = op1.__jac__
500
+ node = op1.__jac__.target
501
+ else:
502
+ raise TypeError("Invalid target object")
503
+ else:
504
+ raise TypeError("Invalid walker object")
505
+
506
+ if edge is not None:
507
+ loc: EdgeAnchor | NodeAnchor = edge
508
+ walker.next = [edge, node]
509
+ else:
510
+ loc = node
511
+ walker.next = [node]
512
+
513
+ if warch.__jac_async__:
514
+ machine = JacMachineInterface.py_get_jac_machine()
515
+ _event_loop = machine._event_loop
516
+ func = partial(JacMachineInterface.spawn_call, *(walker, loc))
517
+ return asyncio.ensure_future(
518
+ _event_loop.run_in_executor(None, func), loop=_event_loop
519
+ )
520
+ else:
521
+ return JacMachineInterface.spawn_call(walker=walker, node=loc)
522
+
523
+ @staticmethod
524
+ def disengage(walker: WalkerArchetype) -> bool:
525
+ """Jac's disengage stmt feature."""
526
+ walker.__jac__.disengaged = True
527
+ return True
528
+
529
+
530
+ class JacClassReferences:
531
+ """Default Classes References."""
532
+
533
+ TYPE_CHECKING: bool = TYPE_CHECKING
534
+ EdgeDir: TypeAlias = EdgeDir
535
+ DSFunc: TypeAlias = DataSpatialFunction
536
+
537
+ Obj: TypeAlias = Archetype
538
+ Node: TypeAlias = NodeArchetype
539
+ Edge: TypeAlias = EdgeArchetype
540
+ Walker: TypeAlias = WalkerArchetype
541
+
542
+ Root: TypeAlias = _Root
543
+ GenericEdge: TypeAlias = _GenericEdge
544
+
545
+
546
+ class JacBuiltin:
547
+ """Jac Builtins."""
548
+
549
+ @staticmethod
550
+ def printgraph(
551
+ node: NodeArchetype,
552
+ depth: int,
553
+ traverse: bool,
554
+ edge_type: Optional[list[str]],
555
+ bfs: bool,
556
+ edge_limit: int,
557
+ node_limit: int,
558
+ file: Optional[str],
559
+ format: str,
560
+ ) -> str:
561
+ """Generate graph for visualizing nodes and edges."""
562
+ edge_type = edge_type if edge_type else []
563
+ visited_nodes: list[NodeArchetype] = []
564
+ node_depths: dict[NodeArchetype, int] = {node: 0}
565
+ queue: list = [[node, 0]]
566
+ connections: list[tuple[NodeArchetype, NodeArchetype, EdgeArchetype]] = []
567
+
568
+ def dfs(node: NodeArchetype, cur_depth: int) -> None:
569
+ """Depth first search."""
570
+ if node not in visited_nodes:
571
+ visited_nodes.append(node)
572
+ traverse_graph(
573
+ node,
574
+ cur_depth,
575
+ depth,
576
+ edge_type,
577
+ traverse,
578
+ connections,
579
+ node_depths,
580
+ visited_nodes,
581
+ queue,
582
+ bfs,
583
+ dfs,
584
+ node_limit,
585
+ edge_limit,
586
+ )
587
+
588
+ if bfs:
589
+ cur_depth = 0
590
+ while queue:
591
+ current_node, cur_depth = queue.pop(0)
592
+ if current_node not in visited_nodes:
593
+ visited_nodes.append(current_node)
594
+ traverse_graph(
595
+ current_node,
596
+ cur_depth,
597
+ depth,
598
+ edge_type,
599
+ traverse,
600
+ connections,
601
+ node_depths,
602
+ visited_nodes,
603
+ queue,
604
+ bfs,
605
+ dfs,
606
+ node_limit,
607
+ edge_limit,
608
+ )
609
+ else:
610
+ dfs(node, cur_depth=0)
611
+ dot_content = (
612
+ 'digraph {\nnode [style="filled", shape="ellipse", '
613
+ 'fillcolor="invis", fontcolor="black"];\n'
47
614
  )
48
- self.jac_program: Optional[JacProgram] = None
615
+ mermaid_content = "flowchart LR\n"
616
+ for source, target, edge in connections:
617
+ edge_label = html.escape(str(edge.__jac__.archetype))
618
+ dot_content += (
619
+ f"{visited_nodes.index(source)} -> {visited_nodes.index(target)} "
620
+ f' [label="{edge_label if "GenericEdge" not in edge_label else ""}"];\n'
621
+ )
622
+ mermaid_content += (
623
+ f"{visited_nodes.index(source)} -->"
624
+ f"|{edge_label if 'GenericEdge' not in edge_label else ''}| {visited_nodes.index(target)}\n"
625
+ )
626
+ for node_ in visited_nodes:
627
+ color = (
628
+ colors[node_depths[node_]] if node_depths[node_] < 25 else colors[24]
629
+ )
630
+ label = html.escape(str(node_.__jac__.archetype))
631
+ dot_content += (
632
+ f'{visited_nodes.index(node_)} [label="{label}"'
633
+ f'fillcolor="{color}"];\n'
634
+ )
635
+ mermaid_content += f'{visited_nodes.index(node_)}["{label}"]\n'
636
+ output = dot_content + "}" if format == "dot" else mermaid_content
637
+ if file:
638
+ with open(file, "w") as f:
639
+ f.write(output)
640
+ return output
49
641
 
50
- JACMACHINE_CONTEXT.set(self)
51
642
 
52
- def attach_program(self, jac_program: "JacProgram") -> None:
53
- """Attach a JacProgram to the machine."""
54
- self.jac_program = jac_program
643
+ class JacCmd:
644
+ """Jac CLI command."""
645
+
646
+ @staticmethod
647
+ def create_cmd() -> None:
648
+ """Create Jac CLI cmds."""
649
+
650
+
651
+ class JacBasics:
652
+ """Jac Feature."""
653
+
654
+ @staticmethod
655
+ def setup() -> None:
656
+ """Set Class References."""
657
+
658
+ @staticmethod
659
+ def get_context() -> JacMachine:
660
+ """Get current execution context."""
661
+ return JacMachineInterface.py_get_jac_machine()
662
+
663
+ @staticmethod
664
+ def reset_graph(root: Optional[Root] = None) -> int:
665
+ """Purge current or target graph."""
666
+ ctx = JacMachineInterface.get_context()
667
+ mem = cast(ShelfStorage, ctx.mem)
668
+ ranchor = root.__jac__ if root else ctx.root_state
669
+
670
+ deleted_count = 0
671
+ for anchor in (
672
+ anchors.values()
673
+ if isinstance(anchors := mem.__shelf__, Shelf)
674
+ else mem.__mem__.values()
675
+ ):
676
+ if anchor == ranchor or anchor.root != ranchor.id:
677
+ continue
678
+
679
+ if loaded_anchor := mem.find_by_id(anchor.id):
680
+ deleted_count += 1
681
+ JacMachineInterface.destroy([loaded_anchor])
682
+
683
+ return deleted_count
684
+
685
+ @staticmethod
686
+ def get_object(id: str) -> Archetype | None:
687
+ """Get object given id."""
688
+ if id == "root":
689
+ return JacMachineInterface.get_context().root_state.archetype
690
+ elif obj := JacMachineInterface.get_context().mem.find_by_id(UUID(id)):
691
+ return obj.archetype
55
692
 
56
- def get_mod_bundle(self) -> Optional[Module]:
57
- """Retrieve the mod_bundle from the attached JacProgram."""
58
- if self.jac_program:
59
- return self.jac_program.mod_bundle
60
693
  return None
61
694
 
62
- def get_bytecode(
63
- self,
64
- module_name: str,
65
- full_target: str,
66
- caller_dir: str,
67
- cachable: bool = True,
68
- reload: bool = False,
69
- ) -> Optional[types.CodeType]:
70
- """Retrieve bytecode from the attached JacProgram."""
71
- if self.jac_program:
72
- return self.jac_program.get_bytecode(
73
- module_name, full_target, caller_dir, cachable, reload=reload
695
+ @staticmethod
696
+ def object_ref(obj: Archetype) -> str:
697
+ """Get object reference id."""
698
+ return obj.__jac__.id.hex
699
+
700
+ @staticmethod
701
+ def make_archetype(cls: Type[Archetype]) -> Type[Archetype]:
702
+ """Create a obj archetype."""
703
+ entries: OrderedDict[str, JacMachineInterface.DSFunc] = OrderedDict(
704
+ (fn.name, fn) for fn in cls._jac_entry_funcs_
705
+ )
706
+ exits: OrderedDict[str, JacMachineInterface.DSFunc] = OrderedDict(
707
+ (fn.name, fn) for fn in cls._jac_exit_funcs_
708
+ )
709
+ for func in cls.__dict__.values():
710
+ if callable(func):
711
+ if hasattr(func, "__jac_entry"):
712
+ entries[func.__name__] = JacMachineInterface.DSFunc(
713
+ func.__name__, func
714
+ )
715
+ if hasattr(func, "__jac_exit"):
716
+ exits[func.__name__] = JacMachineInterface.DSFunc(
717
+ func.__name__, func
718
+ )
719
+
720
+ cls._jac_entry_funcs_ = [*entries.values()]
721
+ cls._jac_exit_funcs_ = [*exits.values()]
722
+
723
+ dataclass(eq=False)(cls)
724
+ return cls
725
+
726
+ @staticmethod
727
+ def impl_patch_filename(
728
+ file_loc: str,
729
+ ) -> Callable[[Callable[P, T]], Callable[P, T]]:
730
+ """Update impl file location."""
731
+
732
+ def decorator(func: Callable[P, T]) -> Callable[P, T]:
733
+ try:
734
+ code = func.__code__
735
+ new_code = types.CodeType(
736
+ code.co_argcount,
737
+ code.co_posonlyargcount,
738
+ code.co_kwonlyargcount,
739
+ code.co_nlocals,
740
+ code.co_stacksize,
741
+ code.co_flags,
742
+ code.co_code,
743
+ code.co_consts,
744
+ code.co_names,
745
+ code.co_varnames,
746
+ file_loc,
747
+ code.co_name,
748
+ code.co_qualname,
749
+ code.co_firstlineno,
750
+ code.co_linetable,
751
+ code.co_exceptiontable,
752
+ code.co_freevars,
753
+ code.co_cellvars,
754
+ )
755
+ func.__code__ = new_code
756
+ except AttributeError:
757
+ pass
758
+ return func
759
+
760
+ return decorator
761
+
762
+ @staticmethod
763
+ def py_get_jac_machine() -> JacMachine:
764
+ """Get jac machine from python context."""
765
+ machine = JacBasics.py_find_jac_machine()
766
+ if not machine:
767
+ raise RuntimeError("Jac machine not found in python context. ")
768
+ return machine
769
+
770
+ @staticmethod
771
+ def py_find_jac_machine() -> Optional[JacMachine]:
772
+ """Get jac machine from python context."""
773
+ machine = None
774
+ for i in inspect.stack():
775
+ machine = i.frame.f_globals.get("__jac_mach__") or i.frame.f_locals.get(
776
+ "__jac_mach__"
74
777
  )
75
- return None
778
+ if machine:
779
+ break
780
+ return machine
76
781
 
77
- def get_sem_ir(self, mod_sem_ir: SemRegistry | None) -> None:
78
- """Update semtable on the attached JacProgram."""
79
- if self.jac_program and mod_sem_ir:
80
- if self.jac_program.sem_ir:
81
- self.jac_program.sem_ir.registry.update(mod_sem_ir.registry)
782
+ @staticmethod
783
+ def py_jac_import(
784
+ target: str,
785
+ base_path: str,
786
+ absorb: bool = False,
787
+ mdl_alias: Optional[str] = None,
788
+ override_name: Optional[str] = None,
789
+ items: Optional[dict[str, Union[str, Optional[str]]]] = None,
790
+ reload_module: Optional[bool] = False,
791
+ ) -> tuple[types.ModuleType, ...]:
792
+ """Core Import Process."""
793
+ machine = JacBasics.py_find_jac_machine()
794
+ if not machine:
795
+ machine = JacMachine(base_path=base_path)
796
+ return JacMachineInterface.jac_import(
797
+ mach=machine,
798
+ target=target,
799
+ base_path=base_path,
800
+ absorb=absorb,
801
+ mdl_alias=mdl_alias,
802
+ override_name=override_name,
803
+ items=items,
804
+ reload_module=reload_module,
805
+ )
806
+
807
+ @staticmethod
808
+ def jac_import(
809
+ mach: JacMachine,
810
+ target: str,
811
+ base_path: str,
812
+ absorb: bool = False,
813
+ mdl_alias: Optional[str] = None,
814
+ override_name: Optional[str] = None,
815
+ items: Optional[dict[str, Union[str, Optional[str]]]] = None,
816
+ reload_module: Optional[bool] = False,
817
+ ) -> tuple[types.ModuleType, ...]:
818
+ """Core Import Process."""
819
+ from jaclang.runtimelib.importer import (
820
+ ImportPathSpec,
821
+ JacImporter,
822
+ PythonImporter,
823
+ )
824
+
825
+ lng = infer_language(target, base_path)
826
+
827
+ spec = ImportPathSpec(
828
+ target,
829
+ base_path,
830
+ absorb,
831
+ mdl_alias,
832
+ override_name,
833
+ lng,
834
+ items,
835
+ )
836
+
837
+ if not mach.program:
838
+ JacMachineInterface.attach_program(mach, JacProgram())
839
+
840
+ if lng == "py":
841
+ import_result = PythonImporter(mach).run_import(spec)
842
+ else:
843
+ import_result = JacImporter(mach).run_import(spec, reload_module)
844
+
845
+ return (
846
+ (import_result.ret_mod,)
847
+ if absorb or not items
848
+ else tuple(import_result.ret_items)
849
+ )
850
+
851
+ @staticmethod
852
+ def jac_test(test_fun: Callable) -> Callable:
853
+ """Create a test."""
854
+ file_path = getfile(test_fun)
855
+ func_name = test_fun.__name__
856
+
857
+ def test_deco() -> None:
858
+ test_fun(JacTestCheck())
859
+
860
+ test_deco.__name__ = test_fun.__name__
861
+ JacTestCheck.add_test(file_path, func_name, test_deco)
862
+
863
+ return test_deco
864
+
865
+ @staticmethod
866
+ def run_test(
867
+ mach: JacMachine,
868
+ filepath: str,
869
+ func_name: Optional[str] = None,
870
+ filter: Optional[str] = None,
871
+ xit: bool = False,
872
+ maxfail: Optional[int] = None,
873
+ directory: Optional[str] = None,
874
+ verbose: bool = False,
875
+ ) -> int:
876
+ """Run the test suite in the specified .jac file."""
877
+ test_file = False
878
+ ret_count = 0
879
+ if filepath:
880
+ if filepath.endswith(".jac"):
881
+ base, mod_name = os.path.split(filepath)
882
+ base = base if base else "./"
883
+ mod_name = mod_name[:-4]
884
+ if mod_name.endswith(".test"):
885
+ mod_name = mod_name[:-5]
886
+ JacTestCheck.reset()
887
+ JacMachineInterface.jac_import(
888
+ mach=mach, target=mod_name, base_path=base
889
+ )
890
+ JacTestCheck.run_test(
891
+ xit, maxfail, verbose, os.path.abspath(filepath), func_name
892
+ )
893
+ ret_count = JacTestCheck.failcount
82
894
  else:
83
- self.jac_program.sem_ir = mod_sem_ir
895
+ print("Not a .jac file.")
896
+ else:
897
+ directory = directory if directory else os.getcwd()
898
+
899
+ if filter or directory:
900
+ current_dir = directory if directory else os.getcwd()
901
+ for root_dir, _, files in os.walk(current_dir, topdown=True):
902
+ files = (
903
+ [file for file in files if fnmatch.fnmatch(file, filter)]
904
+ if filter
905
+ else files
906
+ )
907
+ files = [
908
+ file
909
+ for file in files
910
+ if not file.endswith((".test.jac", ".impl.jac"))
911
+ ]
912
+ for file in files:
913
+ if file.endswith(".jac"):
914
+ test_file = True
915
+ print(f"\n\n\t\t* Inside {root_dir}" + "/" + f"{file} *")
916
+ JacTestCheck.reset()
917
+ JacMachineInterface.jac_import(
918
+ mach=mach, target=file[:-4], base_path=root_dir
919
+ )
920
+ JacTestCheck.run_test(
921
+ xit, maxfail, verbose, os.path.abspath(file), func_name
922
+ )
923
+
924
+ if JacTestCheck.breaker and (xit or maxfail):
925
+ break
926
+ if JacTestCheck.breaker and (xit or maxfail):
927
+ break
928
+ JacTestCheck.breaker = False
929
+ ret_count += JacTestCheck.failcount
930
+ JacTestCheck.failcount = 0
931
+ print("No test files found.") if not test_file else None
932
+
933
+ return ret_count
934
+
935
+ @staticmethod
936
+ def field(factory: Callable[[], T] | None = None, init: bool = True) -> T:
937
+ """Jac's field handler."""
938
+ if factory:
939
+ return field(default_factory=factory)
940
+ return field(init=init)
941
+
942
+ @staticmethod
943
+ def report(expr: Any, custom: bool = False) -> None: # noqa: ANN401
944
+ """Jac's report stmt feature."""
945
+ ctx = JacMachineInterface.get_context()
946
+ if custom:
947
+ ctx.custom = expr
948
+ else:
949
+ ctx.reports.append(expr)
950
+
951
+ @staticmethod
952
+ def refs(
953
+ sources: NodeArchetype | list[NodeArchetype],
954
+ targets: NodeArchetype | list[NodeArchetype] | None = None,
955
+ dir: EdgeDir = EdgeDir.OUT,
956
+ filter: Callable[[EdgeArchetype], bool] | None = None,
957
+ edges_only: bool = False,
958
+ from_visit: bool = False,
959
+ ) -> (
960
+ list[NodeArchetype] | list[EdgeArchetype] | list[NodeArchetype | EdgeArchetype]
961
+ ):
962
+ """Jac's apply_dir stmt feature."""
963
+ if isinstance(sources, NodeArchetype):
964
+ sources = [sources]
965
+ targ_obj_set: Optional[list[NodeArchetype]] = (
966
+ [targets]
967
+ if isinstance(targets, NodeArchetype)
968
+ else targets if targets else None
969
+ )
970
+ if edges_only:
971
+ connected_edges: list[EdgeArchetype | NodeArchetype] = []
972
+ for node in sources:
973
+ edges = JacMachineInterface.get_edges(
974
+ node.__jac__, dir, filter, target_obj=targ_obj_set
975
+ )
976
+ for edge in edges:
977
+ assert isinstance(edge, EdgeArchetype)
978
+ if edge in connected_edges:
979
+ continue
980
+ if from_visit:
981
+ connected_edges.append(edge)
982
+ if dir == EdgeDir.IN:
983
+ connected_edges.append(edge.__jac__.source.archetype)
984
+ else:
985
+ connected_edges.append(edge.__jac__.target.archetype)
986
+ else:
987
+ connected_edges.append(edge)
988
+ return connected_edges
989
+ else:
990
+ connected_nodes: list[NodeArchetype] = []
991
+ for node in sources:
992
+ nodes = JacMachineInterface.edges_to_nodes(
993
+ node.__jac__, dir, filter, target_obj=targ_obj_set
994
+ )
995
+ connected_nodes.extend(
996
+ node for node in nodes if node not in connected_nodes
997
+ )
998
+ return connected_nodes
999
+
1000
+ @staticmethod
1001
+ def filter(
1002
+ items: list[Archetype],
1003
+ func: Callable[[Archetype], bool],
1004
+ ) -> list[Archetype]:
1005
+ """Jac's filter archetype list."""
1006
+ return [item for item in items if func(item)]
1007
+
1008
+ @staticmethod
1009
+ def connect(
1010
+ left: NodeArchetype | list[NodeArchetype],
1011
+ right: NodeArchetype | list[NodeArchetype],
1012
+ edge: Type[EdgeArchetype] | EdgeArchetype | None = None,
1013
+ undir: bool = False,
1014
+ conn_assign: tuple[tuple, tuple] | None = None,
1015
+ edges_only: bool = False,
1016
+ ) -> list[NodeArchetype] | list[EdgeArchetype]:
1017
+ """Jac's connect operator feature."""
1018
+ left = [left] if isinstance(left, NodeArchetype) else left
1019
+ right = [right] if isinstance(right, NodeArchetype) else right
1020
+ edges = []
84
1021
 
85
- def load_module(self, module_name: str, module: types.ModuleType) -> None:
1022
+ for i in left:
1023
+ _left = i.__jac__
1024
+ if JacMachineInterface.check_connect_access(_left):
1025
+ for j in right:
1026
+ _right = j.__jac__
1027
+ if JacMachineInterface.check_connect_access(_right):
1028
+ edges.append(
1029
+ JacMachineInterface.build_edge(
1030
+ is_undirected=undir,
1031
+ conn_type=edge,
1032
+ conn_assign=conn_assign,
1033
+ )(_left, _right)
1034
+ )
1035
+ return right if not edges_only else edges
1036
+
1037
+ @staticmethod
1038
+ def disconnect(
1039
+ left: NodeArchetype | list[NodeArchetype],
1040
+ right: NodeArchetype | list[NodeArchetype],
1041
+ dir: EdgeDir = EdgeDir.OUT,
1042
+ filter: Callable[[EdgeArchetype], bool] | None = None,
1043
+ ) -> bool:
1044
+ """Jac's disconnect operator feature."""
1045
+ disconnect_occurred = False
1046
+ left = [left] if isinstance(left, NodeArchetype) else left
1047
+ right = [right] if isinstance(right, NodeArchetype) else right
1048
+
1049
+ for i in left:
1050
+ node = i.__jac__
1051
+ for anchor in set(node.edges):
1052
+ if (
1053
+ (source := anchor.source)
1054
+ and (target := anchor.target)
1055
+ and (not filter or filter(anchor.archetype))
1056
+ and source.archetype
1057
+ and target.archetype
1058
+ ):
1059
+ if (
1060
+ dir in [EdgeDir.OUT, EdgeDir.ANY]
1061
+ and node == source
1062
+ and target.archetype in right
1063
+ and JacMachineInterface.check_connect_access(target)
1064
+ ):
1065
+ (
1066
+ JacMachineInterface.destroy([anchor])
1067
+ if anchor.persistent
1068
+ else JacMachineInterface.detach(anchor)
1069
+ )
1070
+ disconnect_occurred = True
1071
+ if (
1072
+ dir in [EdgeDir.IN, EdgeDir.ANY]
1073
+ and node == target
1074
+ and source.archetype in right
1075
+ and JacMachineInterface.check_connect_access(source)
1076
+ ):
1077
+ (
1078
+ JacMachineInterface.destroy([anchor])
1079
+ if anchor.persistent
1080
+ else JacMachineInterface.detach(anchor)
1081
+ )
1082
+ disconnect_occurred = True
1083
+
1084
+ return disconnect_occurred
1085
+
1086
+ @staticmethod
1087
+ def assign(target: list[T], attr_val: tuple[tuple[str], tuple[Any]]) -> list[T]:
1088
+ """Jac's assign comprehension feature."""
1089
+ for obj in target:
1090
+ attrs, values = attr_val
1091
+ for attr, value in zip(attrs, values):
1092
+ setattr(obj, attr, value)
1093
+ return target
1094
+
1095
+ @staticmethod
1096
+ def root() -> Root:
1097
+ """Jac's root getter."""
1098
+ return JacMachineInterface.py_get_jac_machine().get_root()
1099
+
1100
+ @staticmethod
1101
+ def build_edge(
1102
+ is_undirected: bool,
1103
+ conn_type: Optional[Type[EdgeArchetype] | EdgeArchetype],
1104
+ conn_assign: Optional[tuple[tuple, tuple]],
1105
+ ) -> Callable[[NodeAnchor, NodeAnchor], EdgeArchetype]:
1106
+ """Jac's root getter."""
1107
+ ct = conn_type if conn_type else GenericEdge
1108
+
1109
+ def builder(source: NodeAnchor, target: NodeAnchor) -> EdgeArchetype:
1110
+ edge = ct() if isinstance(ct, type) else ct
1111
+
1112
+ eanch = edge.__jac__ = EdgeAnchor(
1113
+ archetype=edge,
1114
+ source=source,
1115
+ target=target,
1116
+ is_undirected=is_undirected,
1117
+ )
1118
+ source.edges.append(eanch)
1119
+ target.edges.append(eanch)
1120
+
1121
+ if conn_assign:
1122
+ for fld, val in zip(conn_assign[0], conn_assign[1]):
1123
+ if hasattr(edge, fld):
1124
+ setattr(edge, fld, val)
1125
+ else:
1126
+ raise ValueError(f"Invalid attribute: {fld}")
1127
+ if source.persistent or target.persistent:
1128
+ JacMachineInterface.save(eanch)
1129
+ return edge
1130
+
1131
+ return builder
1132
+
1133
+ @staticmethod
1134
+ def save(
1135
+ obj: Archetype | Anchor,
1136
+ ) -> None:
1137
+ """Destroy object."""
1138
+ anchor = obj.__jac__ if isinstance(obj, Archetype) else obj
1139
+
1140
+ jctx = JacMachineInterface.get_context()
1141
+
1142
+ anchor.persistent = True
1143
+ anchor.root = jctx.root_state.id
1144
+
1145
+ jctx.mem.set(anchor.id, anchor)
1146
+
1147
+ match anchor:
1148
+ case NodeAnchor():
1149
+ for ed in anchor.edges:
1150
+ if ed.is_populated() and not ed.persistent:
1151
+ JacMachineInterface.save(ed)
1152
+ case EdgeAnchor():
1153
+ if (src := anchor.source) and src.is_populated() and not src.persistent:
1154
+ JacMachineInterface.save(src)
1155
+ if (trg := anchor.target) and trg.is_populated() and not trg.persistent:
1156
+ JacMachineInterface.save(trg)
1157
+ case _:
1158
+ pass
1159
+
1160
+ @staticmethod
1161
+ def destroy(objs: Archetype | Anchor | list[Archetype | Anchor]) -> None:
1162
+ """Destroy multiple objects passed in a tuple or list."""
1163
+ obj_list = objs if isinstance(objs, list) else [objs]
1164
+ for obj in obj_list:
1165
+ if not isinstance(obj, (Archetype, Anchor)):
1166
+ return
1167
+ anchor = obj.__jac__ if isinstance(obj, Archetype) else obj
1168
+
1169
+ if JacMachineInterface.check_write_access(anchor):
1170
+ match anchor:
1171
+ case NodeAnchor():
1172
+ for edge in anchor.edges[:]:
1173
+ JacMachineInterface.destroy([edge])
1174
+ case EdgeAnchor():
1175
+ JacMachineInterface.detach(anchor)
1176
+ case _:
1177
+ pass
1178
+
1179
+ JacMachineInterface.get_context().mem.remove(anchor.id)
1180
+
1181
+ @staticmethod
1182
+ def entry(func: Callable) -> Callable:
1183
+ """Mark a method as jac entry with this decorator."""
1184
+ setattr(func, "__jac_entry", None) # noqa:B010
1185
+ return func
1186
+
1187
+ @staticmethod
1188
+ def exit(func: Callable) -> Callable:
1189
+ """Mark a method as jac exit with this decorator."""
1190
+ setattr(func, "__jac_exit", None) # noqa:B010
1191
+ return func
1192
+
1193
+ @staticmethod
1194
+ def with_llm(
1195
+ file_loc: str,
1196
+ model: Any, # noqa: ANN401
1197
+ model_params: dict[str, Any],
1198
+ scope: str,
1199
+ incl_info: list[tuple[str, str]],
1200
+ excl_info: list[tuple[str, str]],
1201
+ inputs: list[tuple[str, str, str, Any]],
1202
+ outputs: tuple,
1203
+ action: str,
1204
+ _globals: dict,
1205
+ _locals: Mapping,
1206
+ ) -> Any: # noqa: ANN401
1207
+ """Jac's with_llm feature."""
1208
+ raise ImportError(
1209
+ "mtllm is not installed. Please install it with `pip install mtllm` and run `jac clean`."
1210
+ )
1211
+
1212
+ @staticmethod
1213
+ def gen_llm_body(_pass: PyastGenPass, node: ast.Ability) -> list[ast3.AST]:
1214
+ """Generate the by LLM body."""
1215
+ _pass.log_warning(
1216
+ "MT-LLM is not installed. Please install it with `pip install mtllm`."
1217
+ )
1218
+ return [
1219
+ _pass.sync(
1220
+ ast3.Raise(
1221
+ _pass.sync(
1222
+ ast3.Call(
1223
+ func=_pass.sync(
1224
+ ast3.Name(id="ImportError", ctx=ast3.Load())
1225
+ ),
1226
+ args=[
1227
+ _pass.sync(
1228
+ ast3.Constant(
1229
+ value="mtllm is not installed. Please install it with `pip install mtllm` and run `jac clean`." # noqa: E501
1230
+ )
1231
+ )
1232
+ ],
1233
+ keywords=[],
1234
+ )
1235
+ )
1236
+ )
1237
+ )
1238
+ ]
1239
+
1240
+ @staticmethod
1241
+ def by_llm_call(
1242
+ _pass: PyastGenPass,
1243
+ model: ast3.AST,
1244
+ model_params: dict[str, ast.Expr],
1245
+ scope: ast3.AST,
1246
+ inputs: Sequence[Optional[ast3.AST]],
1247
+ outputs: Sequence[Optional[ast3.AST]] | ast3.Call,
1248
+ action: Optional[ast3.AST],
1249
+ include_info: list[tuple[str, ast3.AST]],
1250
+ exclude_info: list[tuple[str, ast3.AST]],
1251
+ ) -> ast3.Call:
1252
+ """Return the LLM Call, e.g. _JacFeature.with_llm()."""
1253
+ _pass.log_warning(
1254
+ "MT-LLM is not installed. Please install it with `pip install mtllm`."
1255
+ )
1256
+ return ast3.Call(
1257
+ func=_pass.sync(
1258
+ ast3.Attribute(
1259
+ value=_pass.sync(ast3.Name(id="_Jac", ctx=ast3.Load())),
1260
+ attr="with_llm",
1261
+ ctx=ast3.Load(),
1262
+ )
1263
+ ),
1264
+ args=[],
1265
+ keywords=[
1266
+ _pass.sync(
1267
+ ast3.keyword(
1268
+ arg="file_loc",
1269
+ value=_pass.sync(ast3.Constant(value="None")),
1270
+ )
1271
+ ),
1272
+ _pass.sync(
1273
+ ast3.keyword(
1274
+ arg="model",
1275
+ value=_pass.sync(ast3.Constant(value="None")),
1276
+ )
1277
+ ),
1278
+ _pass.sync(
1279
+ ast3.keyword(
1280
+ arg="model_params",
1281
+ value=_pass.sync(ast3.Dict(keys=[], values=[])),
1282
+ )
1283
+ ),
1284
+ _pass.sync(
1285
+ ast3.keyword(
1286
+ arg="scope",
1287
+ value=_pass.sync(ast3.Constant(value="None")),
1288
+ )
1289
+ ),
1290
+ _pass.sync(
1291
+ ast3.keyword(
1292
+ arg="incl_info",
1293
+ value=_pass.sync(ast3.List(elts=[], ctx=ast3.Load())),
1294
+ )
1295
+ ),
1296
+ _pass.sync(
1297
+ ast3.keyword(
1298
+ arg="excl_info",
1299
+ value=_pass.sync(ast3.List(elts=[], ctx=ast3.Load())),
1300
+ )
1301
+ ),
1302
+ _pass.sync(
1303
+ ast3.keyword(
1304
+ arg="inputs",
1305
+ value=_pass.sync(ast3.List(elts=[], ctx=ast3.Load())),
1306
+ )
1307
+ ),
1308
+ _pass.sync(
1309
+ ast3.keyword(
1310
+ arg="outputs",
1311
+ value=_pass.sync(ast3.List(elts=[], ctx=ast3.Load())),
1312
+ )
1313
+ ),
1314
+ _pass.sync(
1315
+ ast3.keyword(
1316
+ arg="action",
1317
+ value=_pass.sync(ast3.Constant(value="None")),
1318
+ )
1319
+ ),
1320
+ _pass.sync(
1321
+ ast3.keyword(
1322
+ arg="_globals",
1323
+ value=_pass.sync(ast3.Constant(value="None")),
1324
+ )
1325
+ ),
1326
+ _pass.sync(
1327
+ ast3.keyword(
1328
+ arg="_locals",
1329
+ value=_pass.sync(ast3.Constant(value="None")),
1330
+ )
1331
+ ),
1332
+ ],
1333
+ )
1334
+
1335
+ @staticmethod
1336
+ def get_by_llm_call_args(_pass: PyastGenPass, node: ast.FuncCall) -> dict:
1337
+ """Get the by LLM call args."""
1338
+ return {
1339
+ "model": None,
1340
+ "model_params": {},
1341
+ "scope": None,
1342
+ "inputs": [],
1343
+ "outputs": [],
1344
+ "action": None,
1345
+ "include_info": [],
1346
+ "exclude_info": [],
1347
+ }
1348
+
1349
+
1350
+ class JacUtils:
1351
+ """Jac Machine Utilities."""
1352
+
1353
+ @staticmethod
1354
+ def attach_program(mach: JacMachine, jac_program: JacProgram) -> None:
1355
+ """Attach a JacProgram to the machine."""
1356
+ mach.program = jac_program
1357
+
1358
+ @staticmethod
1359
+ def load_module(
1360
+ mach: JacMachine, module_name: str, module: types.ModuleType
1361
+ ) -> None:
86
1362
  """Load a module into the machine."""
87
- self.loaded_modules[module_name] = module
88
- sys.modules[module_name] = module
1363
+ mach.loaded_modules[module_name] = module
1364
+ sys.modules[module_name] = module # TODO: May want to nuke this one day
89
1365
 
90
- def list_modules(self) -> list[str]:
1366
+ @staticmethod
1367
+ def list_modules(mach: JacMachine) -> list[str]:
91
1368
  """List all loaded modules."""
92
- return list(self.loaded_modules.keys())
1369
+ return list(mach.loaded_modules.keys())
93
1370
 
94
- def list_walkers(self, module_name: str) -> list[str]:
1371
+ @staticmethod
1372
+ def list_walkers(mach: JacMachine, module_name: str) -> list[str]:
95
1373
  """List all walkers in a specific module."""
96
- module = self.loaded_modules.get(module_name)
1374
+ module = mach.loaded_modules.get(module_name)
97
1375
  if module:
98
1376
  walkers = []
99
1377
  for name, obj in inspect.getmembers(module):
100
- if isinstance(obj, type) and issubclass(obj, WalkerArchitype):
1378
+ if isinstance(obj, type) and issubclass(obj, WalkerArchetype):
101
1379
  walkers.append(name)
102
1380
  return walkers
103
1381
  return []
104
1382
 
105
- def list_nodes(self, module_name: str) -> list[str]:
1383
+ @staticmethod
1384
+ def list_nodes(mach: JacMachine, module_name: str) -> list[str]:
106
1385
  """List all nodes in a specific module."""
107
- module = self.loaded_modules.get(module_name)
1386
+ module = mach.loaded_modules.get(module_name)
108
1387
  if module:
109
1388
  nodes = []
110
1389
  for name, obj in inspect.getmembers(module):
111
- if isinstance(obj, type) and issubclass(obj, NodeArchitype):
1390
+ if isinstance(obj, type) and issubclass(obj, NodeArchetype):
112
1391
  nodes.append(name)
113
1392
  return nodes
114
1393
  return []
115
1394
 
116
- def list_edges(self, module_name: str) -> list[str]:
1395
+ @staticmethod
1396
+ def list_edges(mach: JacMachine, module_name: str) -> list[str]:
117
1397
  """List all edges in a specific module."""
118
- module = self.loaded_modules.get(module_name)
1398
+ module = mach.loaded_modules.get(module_name)
119
1399
  if module:
120
1400
  nodes = []
121
1401
  for name, obj in inspect.getmembers(module):
122
- if isinstance(obj, type) and issubclass(obj, EdgeArchitype):
1402
+ if isinstance(obj, type) and issubclass(obj, EdgeArchetype):
123
1403
  nodes.append(name)
124
1404
  return nodes
125
1405
  return []
126
1406
 
127
- def create_architype_from_source(
128
- self,
1407
+ @staticmethod
1408
+ def create_archetype_from_source(
1409
+ mach: JacMachine,
129
1410
  source_code: str,
130
1411
  module_name: Optional[str] = None,
131
1412
  base_path: Optional[str] = None,
132
1413
  cachable: bool = False,
133
1414
  keep_temporary_files: bool = False,
134
1415
  ) -> Optional[types.ModuleType]:
135
- """Dynamically creates architypes (nodes, walkers, etc.) from Jac source code."""
1416
+ """Dynamically creates archetypes (nodes, walkers, etc.) from Jac source code."""
136
1417
  from jaclang.runtimelib.importer import JacImporter, ImportPathSpec
137
1418
 
138
1419
  if not base_path:
139
- base_path = self.base_path or os.getcwd()
1420
+ base_path = mach.base_path or os.getcwd()
140
1421
 
141
1422
  if base_path and not os.path.exists(base_path):
142
1423
  os.makedirs(base_path)
143
1424
  if not module_name:
144
- module_name = f"_dynamic_module_{len(self.loaded_modules)}"
1425
+ module_name = f"_dynamic_module_{len(mach.loaded_modules)}"
145
1426
  with tempfile.NamedTemporaryFile(
146
1427
  mode="w",
147
1428
  suffix=".jac",
@@ -153,7 +1434,7 @@ class JacMachine:
153
1434
  tmp_file.write(source_code)
154
1435
 
155
1436
  try:
156
- importer = JacImporter(self)
1437
+ importer = JacImporter(mach)
157
1438
  tmp_file_basename = os.path.basename(tmp_file_path)
158
1439
  tmp_module_name, _ = os.path.splitext(tmp_file_basename)
159
1440
 
@@ -161,7 +1442,6 @@ class JacMachine:
161
1442
  target=tmp_module_name,
162
1443
  base_path=base_path,
163
1444
  absorb=False,
164
- cachable=cachable,
165
1445
  mdl_alias=None,
166
1446
  override_name=module_name,
167
1447
  lng="jac",
@@ -171,7 +1451,7 @@ class JacMachine:
171
1451
  import_result = importer.run_import(spec, reload=False)
172
1452
  module = import_result.ret_mod
173
1453
 
174
- self.loaded_modules[module_name] = module
1454
+ mach.loaded_modules[module_name] = module
175
1455
  return module
176
1456
  except Exception as e:
177
1457
  logger.error(f"Error importing dynamic module '{module_name}': {e}")
@@ -180,21 +1460,23 @@ class JacMachine:
180
1460
  if not keep_temporary_files and os.path.exists(tmp_file_path):
181
1461
  os.remove(tmp_file_path)
182
1462
 
1463
+ @staticmethod
183
1464
  def update_walker(
184
- self, module_name: str, items: Optional[dict[str, Union[str, Optional[str]]]]
1465
+ mach: JacMachine,
1466
+ module_name: str,
1467
+ items: Optional[dict[str, Union[str, Optional[str]]]],
185
1468
  ) -> tuple[types.ModuleType, ...]:
186
1469
  """Reimport the module."""
187
1470
  from .importer import JacImporter, ImportPathSpec
188
1471
 
189
- if module_name in self.loaded_modules:
1472
+ if module_name in mach.loaded_modules:
190
1473
  try:
191
- old_module = self.loaded_modules[module_name]
192
- importer = JacImporter(self)
1474
+ old_module = mach.loaded_modules[module_name]
1475
+ importer = JacImporter(mach)
193
1476
  spec = ImportPathSpec(
194
1477
  target=module_name,
195
- base_path=self.base_path,
1478
+ base_path=mach.base_path,
196
1479
  absorb=False,
197
- cachable=True,
198
1480
  mdl_alias=None,
199
1481
  override_name=None,
200
1482
  lng="jac",
@@ -220,15 +1502,16 @@ class JacMachine:
220
1502
  logger.warning(f"Module {module_name} not found in loaded modules.")
221
1503
  return ()
222
1504
 
1505
+ @staticmethod
223
1506
  def spawn_node(
224
- self,
1507
+ mach: JacMachine,
225
1508
  node_name: str,
226
1509
  attributes: Optional[dict] = None,
227
1510
  module_name: str = "__main__",
228
- ) -> NodeArchitype:
1511
+ ) -> NodeArchetype:
229
1512
  """Spawn a node instance of the given node_name with attributes."""
230
- node_class = self.get_architype(module_name, node_name)
231
- if isinstance(node_class, type) and issubclass(node_class, NodeArchitype):
1513
+ node_class = JacMachineInterface.get_archetype(mach, module_name, node_name)
1514
+ if isinstance(node_class, type) and issubclass(node_class, NodeArchetype):
232
1515
  if attributes is None:
233
1516
  attributes = {}
234
1517
  node_instance = node_class(**attributes)
@@ -236,15 +1519,16 @@ class JacMachine:
236
1519
  else:
237
1520
  raise ValueError(f"Node {node_name} not found.")
238
1521
 
1522
+ @staticmethod
239
1523
  def spawn_walker(
240
- self,
1524
+ mach: JacMachine,
241
1525
  walker_name: str,
242
1526
  attributes: Optional[dict] = None,
243
1527
  module_name: str = "__main__",
244
- ) -> WalkerArchitype:
1528
+ ) -> WalkerArchetype:
245
1529
  """Spawn a walker instance of the given walker_name."""
246
- walker_class = self.get_architype(module_name, walker_name)
247
- if isinstance(walker_class, type) and issubclass(walker_class, WalkerArchitype):
1530
+ walker_class = JacMachineInterface.get_archetype(mach, module_name, walker_name)
1531
+ if isinstance(walker_class, type) and issubclass(walker_class, WalkerArchetype):
248
1532
  if attributes is None:
249
1533
  attributes = {}
250
1534
  walker_instance = walker_class(**attributes)
@@ -252,67 +1536,231 @@ class JacMachine:
252
1536
  else:
253
1537
  raise ValueError(f"Walker {walker_name} not found.")
254
1538
 
255
- def get_architype(
256
- self, module_name: str, architype_name: str
257
- ) -> Optional[Architype]:
258
- """Retrieve an architype class from a module."""
259
- module = self.loaded_modules.get(module_name)
1539
+ @staticmethod
1540
+ def get_archetype(
1541
+ mach: JacMachine, module_name: str, archetype_name: str
1542
+ ) -> Optional[Archetype]:
1543
+ """Retrieve an archetype class from a module."""
1544
+ module = mach.loaded_modules.get(module_name)
260
1545
  if module:
261
- return getattr(module, architype_name, None)
1546
+ return getattr(module, archetype_name, None)
262
1547
  return None
263
1548
 
264
1549
  @staticmethod
265
- def get(base_path: str = "") -> "JacMachine":
266
- """Get current jac machine."""
267
- if (jac_machine := JACMACHINE_CONTEXT.get(None)) is None:
268
- jac_machine = JacMachine(base_path)
269
- return jac_machine
1550
+ def await_obj(obj: Any) -> Any: # noqa: ANN401
1551
+ """Await an object if it is a coroutine or async or future function."""
1552
+ machine = JacMachineInterface.py_get_jac_machine()
1553
+ _event_loop = machine._event_loop
1554
+ return _event_loop.run_until_complete(obj)
270
1555
 
271
1556
  @staticmethod
272
- def detach() -> None:
273
- """Detach current jac machine."""
274
- JACMACHINE_CONTEXT.set(None)
1557
+ def thread_run(func: Callable, *args: object) -> Future: # noqa: ANN401
1558
+ """Run a function in a thread."""
1559
+ machine = JacMachine.py_get_jac_machine()
1560
+ _executor = machine.pool
1561
+ return _executor.submit(func, *args)
275
1562
 
1563
+ @staticmethod
1564
+ def thread_wait(future: Any) -> None: # noqa: ANN401
1565
+ """Wait for a thread to finish."""
1566
+ return future.result()
1567
+
1568
+
1569
+ class JacMachineInterface(
1570
+ JacClassReferences,
1571
+ JacAccessValidation,
1572
+ JacNode,
1573
+ JacEdge,
1574
+ JacWalker,
1575
+ JacBuiltin,
1576
+ JacCmd,
1577
+ JacBasics,
1578
+ JacUtils,
1579
+ ):
1580
+ """Jac Feature."""
276
1581
 
277
- class JacProgram:
278
- """Class to hold the mod_bundle bytecode and sem_ir for Jac modules."""
1582
+
1583
+ class JacMachine(JacMachineInterface):
1584
+ """Jac Machine State."""
279
1585
 
280
1586
  def __init__(
281
1587
  self,
282
- mod_bundle: Optional[Module],
283
- bytecode: Optional[dict[str, bytes]],
284
- sem_ir: Optional[SemRegistry],
1588
+ base_path: str = "",
1589
+ session: Optional[str] = None,
1590
+ root: Optional[str] = None,
285
1591
  ) -> None:
286
- """Initialize the JacProgram object."""
287
- self.mod_bundle = mod_bundle
288
- self.bytecode = bytecode or {}
289
- self.sem_ir = sem_ir if sem_ir else SemRegistry()
1592
+ """Initialize JacMachine."""
1593
+ self.loaded_modules: dict[str, types.ModuleType] = {}
1594
+ if not base_path:
1595
+ base_path = os.getcwd()
1596
+ # Ensure the base_path is a list rather than a string
1597
+ self.base_path = base_path
1598
+ self.base_path_dir = (
1599
+ os.path.dirname(base_path)
1600
+ if not os.path.isdir(base_path)
1601
+ else os.path.abspath(base_path)
1602
+ )
1603
+ self.program: JacProgram = JacProgram()
1604
+ self.pool = ThreadPoolExecutor()
1605
+ self._event_loop = asyncio.new_event_loop()
1606
+ self.mem: Memory = ShelfStorage(session)
1607
+ self.reports: list[Any] = []
1608
+ sr_arch = Root()
1609
+ sr_anch = sr_arch.__jac__
1610
+ sr_anch.id = UUID(Con.SUPER_ROOT_UUID)
1611
+ sr_anch.persistent = False
1612
+ self.system_root = sr_anch
1613
+ self.custom: Any = MISSING
1614
+ if not isinstance(
1615
+ system_root := self.mem.find_by_id(UUID(Con.SUPER_ROOT_UUID)), NodeAnchor
1616
+ ):
1617
+ system_root = cast(NodeAnchor, Root().__jac__) # type: ignore[attr-defined]
1618
+ system_root.id = UUID(Con.SUPER_ROOT_UUID)
1619
+ self.mem.set(system_root.id, system_root)
290
1620
 
291
- def get_bytecode(
1621
+ self.system_root = system_root
1622
+
1623
+ self.entry_node = self.root_state = self.init_anchor(root, self.system_root)
1624
+
1625
+ def init_anchor(
292
1626
  self,
293
- module_name: str,
294
- full_target: str,
295
- caller_dir: str,
296
- cachable: bool = True,
297
- reload: bool = False,
298
- ) -> Optional[types.CodeType]:
299
- """Get the bytecode for a specific module."""
300
- if self.mod_bundle and isinstance(self.mod_bundle, Module):
301
- codeobj = self.mod_bundle.mod_deps[full_target].gen.py_bytecode
302
- return marshal.loads(codeobj) if isinstance(codeobj, bytes) else None
303
- gen_dir = os.path.join(caller_dir, Con.JAC_GEN_DIR)
304
- pyc_file_path = os.path.join(gen_dir, module_name + ".jbc")
305
- if cachable and os.path.exists(pyc_file_path) and not reload:
306
- with open(pyc_file_path, "rb") as f:
307
- return marshal.load(f)
308
-
309
- result = compile_jac(full_target, cache_result=cachable)
310
- if result.errors_had:
311
- for alrt in result.errors_had:
312
- # We're not logging here, it already gets logged as the errors were added to the errors_had list.
313
- # Regardless of the logging, this needs to be sent to the end user, so we'll printing it to stderr.
314
- logger.error(alrt.pretty_print())
315
- if result.ir.gen.py_bytecode is not None:
316
- return marshal.loads(result.ir.gen.py_bytecode)
317
- else:
318
- return None
1627
+ anchor_id: str | None,
1628
+ default: NodeAnchor,
1629
+ ) -> NodeAnchor:
1630
+ """Load initial anchors."""
1631
+ if anchor_id:
1632
+ if isinstance(anchor := self.mem.find_by_id(UUID(anchor_id)), NodeAnchor):
1633
+ return anchor
1634
+ raise ValueError(f"Invalid anchor id {anchor_id} !")
1635
+ return default
1636
+
1637
+ def set_entry_node(self, entry_node: str | None) -> None:
1638
+ """Override entry."""
1639
+ self.entry_node = self.init_anchor(entry_node, self.root_state)
1640
+
1641
+ def close(self) -> None:
1642
+ """Close current ExecutionContext."""
1643
+ call_jac_func_with_machine(mach=self, func=self.mem.close)
1644
+
1645
+ def get_root(self) -> Root:
1646
+ """Get current root."""
1647
+ return cast(Root, self.root_state.archetype)
1648
+
1649
+ def global_system_root(self) -> NodeAnchor:
1650
+ """Get global system root."""
1651
+ return self.system_root
1652
+
1653
+
1654
+ def call_jac_func_with_machine( # TODO: remove this
1655
+ mach: JacMachine, func: Callable, *args: Any # noqa: ANN401
1656
+ ) -> Any: # noqa: ANN401
1657
+ """Call Jac function with machine context in local."""
1658
+ __jac_mach__ = mach # noqa: F841
1659
+ return func(*args)
1660
+
1661
+
1662
+ def generate_plugin_helpers(
1663
+ plugin_class: Type[Any],
1664
+ ) -> tuple[Type[Any], Type[Any], Type[Any]]:
1665
+ """Generate three helper classes based on a plugin class.
1666
+
1667
+ - Spec class: contains @hookspec placeholder methods.
1668
+ - Impl class: contains original plugin methods decorated with @hookimpl.
1669
+ - Proxy class: contains methods that call plugin_manager.hook.<method>.
1670
+
1671
+ Returns:
1672
+ Tuple of (SpecClass, ImplClass, ProxyClass).
1673
+ """
1674
+ # Markers for spec and impl
1675
+ spec_methods = {}
1676
+ impl_methods = {}
1677
+ proxy_methods = {}
1678
+
1679
+ for name, method in inspect.getmembers(plugin_class, predicate=inspect.isfunction):
1680
+ if name.startswith("_"):
1681
+ continue
1682
+
1683
+ sig = inspect.signature(method)
1684
+ sig_nodef = sig.replace(
1685
+ parameters=[
1686
+ p.replace(default=inspect.Parameter.empty)
1687
+ for p in sig.parameters.values()
1688
+ ]
1689
+ )
1690
+ doc = method.__doc__ or ""
1691
+
1692
+ # --- Spec placeholder ---
1693
+ def make_spec(
1694
+ name: str, sig_nodef: inspect.Signature, doc: str, method: Callable
1695
+ ) -> Callable:
1696
+ """Create a placeholder method for the spec class."""
1697
+
1698
+ @wraps(method)
1699
+ def placeholder(*args: object, **kwargs: object) -> None:
1700
+ pass
1701
+
1702
+ placeholder.__name__ = name
1703
+ placeholder.__doc__ = doc
1704
+ placeholder.__signature__ = sig_nodef # type: ignore
1705
+ return placeholder
1706
+
1707
+ spec_methods[name] = hookspec(firstresult=True)(
1708
+ make_spec(name, sig_nodef, doc, method)
1709
+ )
1710
+
1711
+ # --- Impl class: original methods with @hookimpl ---
1712
+ wrapped_impl = wraps(method)(method)
1713
+ wrapped_impl.__signature__ = sig_nodef # type: ignore
1714
+ impl_methods[name] = hookimpl(wrapped_impl)
1715
+
1716
+ # --- Proxy class: call through plugin_manager.hook ---
1717
+ # Gather class variables and annotations from entire MRO (excluding built-ins)
1718
+ class_vars: dict[str, Any] = {}
1719
+ annotations: dict[str, Any] = {}
1720
+ for base in reversed(plugin_class.__mro__):
1721
+ if base is object:
1722
+ continue
1723
+ # collect annotations first so bases are overridden by subclasses
1724
+ base_ann = getattr(base, "__annotations__", {})
1725
+ annotations.update(base_ann)
1726
+ for key, value in base.__dict__.items():
1727
+ # skip private/special, methods, and descriptors
1728
+ if key.startswith("__"):
1729
+ continue
1730
+ if callable(value) and not isinstance(value, type):
1731
+ continue
1732
+ class_vars[key] = value
1733
+
1734
+ def make_proxy(name: str, sig: inspect.Signature) -> Callable:
1735
+ """Create a proxy method for the proxy class."""
1736
+
1737
+ def proxy(*args: object, **kwargs: object) -> object:
1738
+ # bind positionals to parameter names
1739
+ bound = sig.bind_partial(*args, **kwargs) # noqa
1740
+ bound.apply_defaults()
1741
+ # grab the HookCaller
1742
+ hookcaller = getattr(plugin_manager.hook, name) # noqa
1743
+ # call with named args only
1744
+ return hookcaller(**bound.arguments)
1745
+
1746
+ proxy.__name__ = name
1747
+ proxy.__signature__ = sig # type: ignore
1748
+ return proxy
1749
+
1750
+ proxy_methods[name] = make_proxy(name, sig)
1751
+
1752
+ # Construct classes
1753
+ spec_cls = type(f"{plugin_class.__name__}Spec", (object,), spec_methods)
1754
+ impl_cls = type(f"{plugin_class.__name__}Impl", (object,), impl_methods)
1755
+ proxy_namespace = {}
1756
+ proxy_namespace.update(class_vars)
1757
+ if annotations:
1758
+ proxy_namespace["__annotations__"] = annotations
1759
+ proxy_namespace.update(proxy_methods)
1760
+ proxy_cls = type(f"{plugin_class.__name__}", (object,), proxy_namespace)
1761
+
1762
+ return spec_cls, impl_cls, proxy_cls
1763
+
1764
+
1765
+ JacMachineSpec, JacMachineImpl, JacMachineInterface = generate_plugin_helpers(JacMachineInterface) # type: ignore[misc]
1766
+ plugin_manager.add_hookspecs(JacMachineSpec)