jaclang 0.7.33__py3-none-any.whl → 0.8.0__py3-none-any.whl

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

Potentially problematic release.


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

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