jaclang 0.7.34__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 (1480) 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 +1004 -1223
  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 +2 -2
  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/simple_archs.jac +2 -2
  223. jaclang/tests/fixtures/simple_walk.jac +52 -0
  224. jaclang/tests/fixtures/slice_vals.jac +3 -3
  225. jaclang/tests/fixtures/sub_abil_sep.jac +3 -3
  226. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +3 -3
  227. jaclang/tests/fixtures/trailing_comma.jac +4 -4
  228. jaclang/tests/fixtures/type_info.jac +5 -5
  229. jaclang/{compiler/passes/main/tests → tests}/fixtures/uninitialized_hasvars.jac +1 -1
  230. jaclang/tests/fixtures/visit_order.jac +4 -4
  231. jaclang/tests/fixtures/walker_override.jac +2 -2
  232. jaclang/tests/fixtures/walker_update.jac +5 -5
  233. jaclang/tests/fixtures/with_context.jac +4 -4
  234. jaclang/tests/test_bugs.py +2 -2
  235. jaclang/tests/test_cli.py +118 -223
  236. jaclang/tests/test_language.py +466 -473
  237. jaclang/tests/test_man_code.py +2 -2
  238. jaclang/tests/test_reference.py +4 -4
  239. jaclang/tests/test_settings.py +16 -16
  240. jaclang/tests/test_typecheck.py +555 -0
  241. jaclang/utils/__init__.py +4 -0
  242. jaclang/utils/helpers.py +12 -27
  243. jaclang/utils/lang_tools.py +84 -74
  244. jaclang/utils/module_resolver.py +69 -0
  245. jaclang/utils/test.py +8 -5
  246. jaclang/utils/tests/test_lang_tools.py +38 -13
  247. jaclang/utils/treeprinter.py +177 -40
  248. jaclang/vendor/__init__.py +1 -2
  249. jaclang/vendor/attr/__init__.py +14 -44
  250. jaclang/vendor/attr/__init__.pyi +155 -321
  251. jaclang/vendor/attr/_cmp.py +25 -15
  252. jaclang/vendor/attr/_cmp.pyi +7 -7
  253. jaclang/vendor/attr/_compat.py +15 -8
  254. jaclang/vendor/attr/_config.py +1 -1
  255. jaclang/vendor/attr/_funcs.py +148 -163
  256. jaclang/vendor/attr/_make.py +859 -855
  257. jaclang/vendor/attr/_next_gen.py +426 -32
  258. jaclang/vendor/attr/converters.py +67 -49
  259. jaclang/vendor/attr/converters.pyi +13 -7
  260. jaclang/vendor/attr/filters.py +17 -11
  261. jaclang/vendor/attr/filters.pyi +3 -3
  262. jaclang/vendor/attr/setters.py +11 -5
  263. jaclang/vendor/attr/setters.pyi +2 -1
  264. jaclang/vendor/attr/validators.py +191 -162
  265. jaclang/vendor/attr/validators.pyi +25 -27
  266. jaclang/vendor/attrs/__init__.py +9 -5
  267. jaclang/vendor/attrs/__init__.pyi +225 -29
  268. jaclang/vendor/attrs-25.3.0.dist-info/INSTALLER +1 -0
  269. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/METADATA +83 -53
  270. jaclang/vendor/attrs-25.3.0.dist-info/RECORD +56 -0
  271. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/WHEEL +1 -1
  272. jaclang/vendor/bin/dmypy +8 -0
  273. jaclang/vendor/bin/mypy +8 -0
  274. jaclang/vendor/bin/mypyc +8 -0
  275. jaclang/vendor/bin/stubgen +8 -0
  276. jaclang/vendor/bin/stubtest +8 -0
  277. jaclang/vendor/cattr/gen.py +2 -2
  278. jaclang/vendor/cattr/preconf/bson.py +1 -0
  279. jaclang/vendor/cattr/preconf/json.py +1 -0
  280. jaclang/vendor/cattr/preconf/msgpack.py +1 -0
  281. jaclang/vendor/cattr/preconf/orjson.py +1 -0
  282. jaclang/vendor/cattr/preconf/pyyaml.py +1 -0
  283. jaclang/vendor/cattr/preconf/tomlkit.py +1 -0
  284. jaclang/vendor/cattr/preconf/ujson.py +1 -0
  285. jaclang/vendor/cattrs/__init__.py +21 -21
  286. jaclang/vendor/cattrs/_compat.py +176 -62
  287. jaclang/vendor/cattrs/_generics.py +5 -3
  288. jaclang/vendor/cattrs/cols.py +289 -0
  289. jaclang/vendor/cattrs/converters.py +505 -187
  290. jaclang/vendor/cattrs/disambiguators.py +118 -45
  291. jaclang/vendor/cattrs/dispatch.py +66 -36
  292. jaclang/vendor/cattrs/fns.py +6 -1
  293. jaclang/vendor/cattrs/gen/__init__.py +365 -202
  294. jaclang/vendor/cattrs/gen/_generics.py +41 -5
  295. jaclang/vendor/cattrs/gen/_lc.py +3 -2
  296. jaclang/vendor/cattrs/gen/_shared.py +39 -32
  297. jaclang/vendor/cattrs/gen/typeddicts.py +75 -88
  298. jaclang/vendor/cattrs/preconf/__init__.py +20 -0
  299. jaclang/vendor/cattrs/preconf/bson.py +7 -8
  300. jaclang/vendor/cattrs/preconf/cbor2.py +3 -0
  301. jaclang/vendor/cattrs/preconf/json.py +8 -4
  302. jaclang/vendor/cattrs/preconf/msgpack.py +3 -0
  303. jaclang/vendor/cattrs/preconf/msgspec.py +185 -0
  304. jaclang/vendor/cattrs/preconf/orjson.py +20 -7
  305. jaclang/vendor/cattrs/preconf/pyyaml.py +15 -3
  306. jaclang/vendor/cattrs/preconf/tomlkit.py +3 -1
  307. jaclang/vendor/cattrs/preconf/ujson.py +3 -0
  308. jaclang/vendor/cattrs/strategies/__init__.py +1 -0
  309. jaclang/vendor/cattrs/strategies/_class_methods.py +1 -1
  310. jaclang/vendor/cattrs/strategies/_subclasses.py +43 -29
  311. jaclang/vendor/cattrs/strategies/_unions.py +47 -24
  312. jaclang/vendor/cattrs/v.py +1 -0
  313. jaclang/vendor/cattrs-24.1.3.dist-info/INSTALLER +1 -0
  314. jaclang/vendor/cattrs-24.1.3.dist-info/METADATA +161 -0
  315. jaclang/vendor/cattrs-24.1.3.dist-info/RECORD +96 -0
  316. jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/WHEEL +1 -1
  317. jaclang/vendor/lark/__init__.py +38 -38
  318. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -6
  319. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  320. jaclang/vendor/lark/ast_utils.py +59 -59
  321. jaclang/vendor/lark/common.py +86 -89
  322. jaclang/vendor/lark/exceptions.py +292 -292
  323. jaclang/vendor/lark/grammar.py +130 -130
  324. jaclang/vendor/lark/grammars/common.lark +59 -59
  325. jaclang/vendor/lark/grammars/lark.lark +62 -62
  326. jaclang/vendor/lark/grammars/python.lark +302 -302
  327. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  328. jaclang/vendor/lark/indenter.py +143 -112
  329. jaclang/vendor/lark/lark.py +658 -661
  330. jaclang/vendor/lark/lexer.py +678 -678
  331. jaclang/vendor/lark/load_grammar.py +1428 -1428
  332. jaclang/vendor/lark/parse_tree_builder.py +391 -391
  333. jaclang/vendor/lark/parser_frontends.py +257 -257
  334. jaclang/vendor/lark/parsers/cyk.py +340 -340
  335. jaclang/vendor/lark/parsers/earley.py +317 -308
  336. jaclang/vendor/lark/parsers/earley_common.py +42 -42
  337. jaclang/vendor/lark/parsers/earley_forest.py +802 -810
  338. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -203
  339. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -332
  340. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +158 -157
  341. jaclang/vendor/lark/parsers/lalr_parser.py +122 -122
  342. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -110
  343. jaclang/vendor/lark/parsers/xearley.py +165 -165
  344. jaclang/vendor/lark/reconstruct.py +107 -107
  345. jaclang/vendor/lark/tools/__init__.py +70 -71
  346. jaclang/vendor/lark/tools/nearley.py +202 -202
  347. jaclang/vendor/lark/tools/serialize.py +32 -32
  348. jaclang/vendor/lark/tools/standalone.py +196 -196
  349. jaclang/vendor/lark/tree.py +267 -272
  350. jaclang/vendor/lark/tree_matcher.py +186 -186
  351. jaclang/vendor/lark/utils.py +346 -361
  352. jaclang/vendor/lark/visitors.py +596 -593
  353. jaclang/vendor/lark-1.2.2.dist-info/INSTALLER +1 -0
  354. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/METADATA +48 -47
  355. jaclang/vendor/lark-1.2.2.dist-info/RECORD +83 -0
  356. jaclang/vendor/{mypy_extensions-1.0.0.dist-info → lark-1.2.2.dist-info}/WHEEL +1 -1
  357. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info/licenses}/LICENSE +18 -18
  358. jaclang/vendor/lsprotocol-2023.0.1.dist-info/INSTALLER +1 -0
  359. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +2 -1
  360. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +17 -10
  361. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +1 -1
  362. jaclang/vendor/pluggy/_version.py +7 -2
  363. jaclang/vendor/pluggy-1.5.0.dist-info/INSTALLER +1 -0
  364. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +6 -5
  365. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +24 -14
  366. jaclang/vendor/pluggy-1.5.0.dist-info/WHEEL +1 -1
  367. jaclang/vendor/pygls-1.3.1.dist-info/INSTALLER +1 -0
  368. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +2 -2
  369. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +45 -24
  370. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +1 -1
  371. {jaclang-0.7.34.dist-info → jaclang-0.8.0.dist-info}/METADATA +4 -4
  372. jaclang-0.8.0.dist-info/RECORD +552 -0
  373. {jaclang-0.7.34.dist-info → jaclang-0.8.0.dist-info}/WHEEL +1 -1
  374. jaclang/compiler/.gitignore +0 -1
  375. jaclang/compiler/compile.py +0 -119
  376. jaclang/compiler/passes/main/access_modifier_pass.py +0 -130
  377. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +0 -656
  378. jaclang/compiler/passes/main/py_collect_dep_pass.py +0 -78
  379. jaclang/compiler/passes/main/pyout_pass.py +0 -86
  380. jaclang/compiler/passes/main/registry_pass.py +0 -156
  381. jaclang/compiler/passes/main/schedules.py +0 -47
  382. jaclang/compiler/passes/main/sub_node_tab_pass.py +0 -36
  383. jaclang/compiler/passes/main/tests/fixtures/registry.jac +0 -36
  384. jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py +0 -114
  385. jaclang/compiler/passes/main/tests/test_registry_pass.py +0 -31
  386. jaclang/compiler/passes/main/tests/test_type_check_pass.py +0 -91
  387. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +0 -29
  388. jaclang/compiler/passes/main/type_check_pass.py +0 -128
  389. jaclang/compiler/passes/tool/schedules.py +0 -18
  390. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +0 -36
  391. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +0 -17
  392. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +0 -32
  393. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +0 -27
  394. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +0 -35
  395. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +0 -25
  396. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +0 -13
  397. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +0 -63
  398. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/architype_test.jac +0 -13
  399. jaclang/compiler/passes/utils/mypy_ast_build.py +0 -940
  400. jaclang/compiler/py_info.py +0 -22
  401. jaclang/compiler/semtable.py +0 -159
  402. jaclang/compiler/symtable.py +0 -297
  403. jaclang/langserve/utils.py +0 -458
  404. jaclang/plugin/__init__.py +0 -7
  405. jaclang/plugin/builtin.py +0 -57
  406. jaclang/plugin/default.py +0 -1443
  407. jaclang/plugin/feature.py +0 -574
  408. jaclang/plugin/plugin.md +0 -471
  409. jaclang/plugin/spec.py +0 -536
  410. jaclang/plugin/tests/fixtures/impl_match_impl.jac +0 -3
  411. jaclang/plugin/tests/test_features.py +0 -56
  412. jaclang/runtimelib/context.py +0 -191
  413. jaclang/tests/fixtures/create_dynamic_architype.jac +0 -35
  414. jaclang/tests/fixtures/dynamic_architype.jac +0 -34
  415. jaclang/tests/fixtures/impl_grab.impl.jac +0 -5
  416. jaclang/tests/fixtures/mtest.impl.jac +0 -6
  417. jaclang/tests/fixtures/registry.jac +0 -58
  418. jaclang/tests/fixtures/semstr.jac +0 -30
  419. jaclang/tests/main.jac +0 -2
  420. jaclang/utils/profiler.py +0 -62
  421. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +0 -35
  422. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +0 -221
  423. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +0 -48
  424. jaclang/vendor/lark-1.1.9.dist-info/RECORD +0 -46
  425. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +0 -5
  426. jaclang/vendor/mypy/__init__.py +0 -1
  427. jaclang/vendor/mypy/__main__.py +0 -37
  428. jaclang/vendor/mypy/api.py +0 -94
  429. jaclang/vendor/mypy/applytype.py +0 -172
  430. jaclang/vendor/mypy/argmap.py +0 -268
  431. jaclang/vendor/mypy/binder.py +0 -538
  432. jaclang/vendor/mypy/bogus_type.py +0 -27
  433. jaclang/vendor/mypy/build.py +0 -3562
  434. jaclang/vendor/mypy/checker.py +0 -8445
  435. jaclang/vendor/mypy/checkexpr.py +0 -6623
  436. jaclang/vendor/mypy/checkmember.py +0 -1363
  437. jaclang/vendor/mypy/checkpattern.py +0 -801
  438. jaclang/vendor/mypy/checkstrformat.py +0 -1109
  439. jaclang/vendor/mypy/config_parser.py +0 -670
  440. jaclang/vendor/mypy/constant_fold.py +0 -187
  441. jaclang/vendor/mypy/constraints.py +0 -1636
  442. jaclang/vendor/mypy/copytype.py +0 -133
  443. jaclang/vendor/mypy/defaults.py +0 -46
  444. jaclang/vendor/mypy/dmypy/__main__.py +0 -6
  445. jaclang/vendor/mypy/dmypy/client.py +0 -749
  446. jaclang/vendor/mypy/dmypy_os.py +0 -42
  447. jaclang/vendor/mypy/dmypy_server.py +0 -1107
  448. jaclang/vendor/mypy/dmypy_util.py +0 -117
  449. jaclang/vendor/mypy/erasetype.py +0 -278
  450. jaclang/vendor/mypy/errorcodes.py +0 -291
  451. jaclang/vendor/mypy/errors.py +0 -1280
  452. jaclang/vendor/mypy/evalexpr.py +0 -205
  453. jaclang/vendor/mypy/expandtype.py +0 -524
  454. jaclang/vendor/mypy/exprtotype.py +0 -209
  455. jaclang/vendor/mypy/fastparse.py +0 -2147
  456. jaclang/vendor/mypy/find_sources.py +0 -243
  457. jaclang/vendor/mypy/fixup.py +0 -428
  458. jaclang/vendor/mypy/freetree.py +0 -23
  459. jaclang/vendor/mypy/fscache.py +0 -309
  460. jaclang/vendor/mypy/fswatcher.py +0 -106
  461. jaclang/vendor/mypy/gclogger.py +0 -47
  462. jaclang/vendor/mypy/git.py +0 -34
  463. jaclang/vendor/mypy/graph_utils.py +0 -112
  464. jaclang/vendor/mypy/indirection.py +0 -121
  465. jaclang/vendor/mypy/infer.py +0 -75
  466. jaclang/vendor/mypy/inspections.py +0 -627
  467. jaclang/vendor/mypy/ipc.py +0 -310
  468. jaclang/vendor/mypy/join.py +0 -871
  469. jaclang/vendor/mypy/literals.py +0 -306
  470. jaclang/vendor/mypy/lookup.py +0 -61
  471. jaclang/vendor/mypy/main.py +0 -1574
  472. jaclang/vendor/mypy/maptype.py +0 -106
  473. jaclang/vendor/mypy/meet.py +0 -1140
  474. jaclang/vendor/mypy/memprofile.py +0 -121
  475. jaclang/vendor/mypy/message_registry.py +0 -329
  476. jaclang/vendor/mypy/messages.py +0 -3186
  477. jaclang/vendor/mypy/metastore.py +0 -225
  478. jaclang/vendor/mypy/mixedtraverser.py +0 -112
  479. jaclang/vendor/mypy/modulefinder.py +0 -875
  480. jaclang/vendor/mypy/moduleinspect.py +0 -184
  481. jaclang/vendor/mypy/mro.py +0 -62
  482. jaclang/vendor/mypy/nodes.py +0 -4115
  483. jaclang/vendor/mypy/operators.py +0 -126
  484. jaclang/vendor/mypy/options.py +0 -556
  485. jaclang/vendor/mypy/parse.py +0 -30
  486. jaclang/vendor/mypy/partially_defined.py +0 -675
  487. jaclang/vendor/mypy/patterns.py +0 -150
  488. jaclang/vendor/mypy/plugin.py +0 -901
  489. jaclang/vendor/mypy/plugins/attrs.py +0 -1166
  490. jaclang/vendor/mypy/plugins/common.py +0 -440
  491. jaclang/vendor/mypy/plugins/ctypes.py +0 -245
  492. jaclang/vendor/mypy/plugins/dataclasses.py +0 -1108
  493. jaclang/vendor/mypy/plugins/default.py +0 -531
  494. jaclang/vendor/mypy/plugins/enums.py +0 -259
  495. jaclang/vendor/mypy/plugins/functools.py +0 -104
  496. jaclang/vendor/mypy/plugins/proper_plugin.py +0 -175
  497. jaclang/vendor/mypy/plugins/singledispatch.py +0 -224
  498. jaclang/vendor/mypy/py.typed +0 -1
  499. jaclang/vendor/mypy/pyinfo.py +0 -78
  500. jaclang/vendor/mypy/reachability.py +0 -362
  501. jaclang/vendor/mypy/refinfo.py +0 -92
  502. jaclang/vendor/mypy/renaming.py +0 -568
  503. jaclang/vendor/mypy/report.py +0 -924
  504. jaclang/vendor/mypy/scope.py +0 -125
  505. jaclang/vendor/mypy/semanal.py +0 -7187
  506. jaclang/vendor/mypy/semanal_classprop.py +0 -187
  507. jaclang/vendor/mypy/semanal_enum.py +0 -253
  508. jaclang/vendor/mypy/semanal_infer.py +0 -128
  509. jaclang/vendor/mypy/semanal_main.py +0 -511
  510. jaclang/vendor/mypy/semanal_namedtuple.py +0 -670
  511. jaclang/vendor/mypy/semanal_newtype.py +0 -273
  512. jaclang/vendor/mypy/semanal_pass1.py +0 -156
  513. jaclang/vendor/mypy/semanal_shared.py +0 -490
  514. jaclang/vendor/mypy/semanal_typeargs.py +0 -265
  515. jaclang/vendor/mypy/semanal_typeddict.py +0 -575
  516. jaclang/vendor/mypy/server/astdiff.py +0 -518
  517. jaclang/vendor/mypy/server/astmerge.py +0 -562
  518. jaclang/vendor/mypy/server/aststrip.py +0 -281
  519. jaclang/vendor/mypy/server/deps.py +0 -1137
  520. jaclang/vendor/mypy/server/mergecheck.py +0 -83
  521. jaclang/vendor/mypy/server/objgraph.py +0 -101
  522. jaclang/vendor/mypy/server/subexpr.py +0 -198
  523. jaclang/vendor/mypy/server/target.py +0 -11
  524. jaclang/vendor/mypy/server/trigger.py +0 -26
  525. jaclang/vendor/mypy/server/update.py +0 -1339
  526. jaclang/vendor/mypy/sharedparse.py +0 -112
  527. jaclang/vendor/mypy/solve.py +0 -562
  528. jaclang/vendor/mypy/split_namespace.py +0 -35
  529. jaclang/vendor/mypy/state.py +0 -28
  530. jaclang/vendor/mypy/stats.py +0 -489
  531. jaclang/vendor/mypy/strconv.py +0 -641
  532. jaclang/vendor/mypy/stubdoc.py +0 -491
  533. jaclang/vendor/mypy/stubgen.py +0 -1886
  534. jaclang/vendor/mypy/stubgenc.py +0 -993
  535. jaclang/vendor/mypy/stubinfo.py +0 -173
  536. jaclang/vendor/mypy/stubtest.py +0 -2079
  537. jaclang/vendor/mypy/stubutil.py +0 -834
  538. jaclang/vendor/mypy/subtypes.py +0 -1980
  539. jaclang/vendor/mypy/suggestions.py +0 -1046
  540. jaclang/vendor/mypy/test/config.py +0 -28
  541. jaclang/vendor/mypy/test/data.py +0 -821
  542. jaclang/vendor/mypy/test/helpers.py +0 -476
  543. jaclang/vendor/mypy/test/meta/_pytest.py +0 -72
  544. jaclang/vendor/mypy/test/meta/test_diff_helper.py +0 -47
  545. jaclang/vendor/mypy/test/meta/test_parse_data.py +0 -73
  546. jaclang/vendor/mypy/test/meta/test_update_data.py +0 -135
  547. jaclang/vendor/mypy/test/test_find_sources.py +0 -376
  548. jaclang/vendor/mypy/test/test_ref_info.py +0 -45
  549. jaclang/vendor/mypy/test/testapi.py +0 -45
  550. jaclang/vendor/mypy/test/testargs.py +0 -77
  551. jaclang/vendor/mypy/test/testcheck.py +0 -322
  552. jaclang/vendor/mypy/test/testcmdline.py +0 -152
  553. jaclang/vendor/mypy/test/testconstraints.py +0 -134
  554. jaclang/vendor/mypy/test/testdaemon.py +0 -132
  555. jaclang/vendor/mypy/test/testdeps.py +0 -77
  556. jaclang/vendor/mypy/test/testdiff.py +0 -67
  557. jaclang/vendor/mypy/test/testerrorstream.py +0 -46
  558. jaclang/vendor/mypy/test/testfinegrained.py +0 -438
  559. jaclang/vendor/mypy/test/testfinegrainedcache.py +0 -18
  560. jaclang/vendor/mypy/test/testformatter.py +0 -85
  561. jaclang/vendor/mypy/test/testfscache.py +0 -101
  562. jaclang/vendor/mypy/test/testgraph.py +0 -83
  563. jaclang/vendor/mypy/test/testinfer.py +0 -373
  564. jaclang/vendor/mypy/test/testipc.py +0 -119
  565. jaclang/vendor/mypy/test/testmerge.py +0 -238
  566. jaclang/vendor/mypy/test/testmodulefinder.py +0 -278
  567. jaclang/vendor/mypy/test/testmypyc.py +0 -14
  568. jaclang/vendor/mypy/test/testparse.py +0 -107
  569. jaclang/vendor/mypy/test/testpep561.py +0 -211
  570. jaclang/vendor/mypy/test/testpythoneval.py +0 -117
  571. jaclang/vendor/mypy/test/testreports.py +0 -55
  572. jaclang/vendor/mypy/test/testsemanal.py +0 -209
  573. jaclang/vendor/mypy/test/testsolve.py +0 -285
  574. jaclang/vendor/mypy/test/teststubgen.py +0 -1412
  575. jaclang/vendor/mypy/test/teststubinfo.py +0 -12
  576. jaclang/vendor/mypy/test/teststubtest.py +0 -2492
  577. jaclang/vendor/mypy/test/testsubtypes.py +0 -303
  578. jaclang/vendor/mypy/test/testtransform.py +0 -64
  579. jaclang/vendor/mypy/test/testtypegen.py +0 -83
  580. jaclang/vendor/mypy/test/testtypes.py +0 -1551
  581. jaclang/vendor/mypy/test/testutil.py +0 -111
  582. jaclang/vendor/mypy/test/typefixture.py +0 -415
  583. jaclang/vendor/mypy/test/update_data.py +0 -87
  584. jaclang/vendor/mypy/test/visitors.py +0 -63
  585. jaclang/vendor/mypy/traverser.py +0 -961
  586. jaclang/vendor/mypy/treetransform.py +0 -800
  587. jaclang/vendor/mypy/tvar_scope.py +0 -169
  588. jaclang/vendor/mypy/type_visitor.py +0 -564
  589. jaclang/vendor/mypy/typeanal.py +0 -2596
  590. jaclang/vendor/mypy/typeops.py +0 -1082
  591. jaclang/vendor/mypy/types.py +0 -3708
  592. jaclang/vendor/mypy/types_utils.py +0 -166
  593. jaclang/vendor/mypy/typeshed/LICENSE +0 -237
  594. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +0 -309
  595. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +0 -36
  596. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +0 -3
  597. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +0 -591
  598. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +0 -84
  599. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +0 -1
  600. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +0 -133
  601. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +0 -94
  602. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +0 -8
  603. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +0 -25
  604. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +0 -90
  605. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +0 -207
  606. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +0 -566
  607. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +0 -281
  608. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +0 -33
  609. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +0 -164
  610. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +0 -11
  611. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +0 -28
  612. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +0 -49
  613. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +0 -100
  614. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +0 -35
  615. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +0 -16
  616. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +0 -92
  617. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +0 -147
  618. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +0 -34
  619. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +0 -33
  620. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +0 -14
  621. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +0 -43
  622. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +0 -12
  623. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +0 -16
  624. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +0 -803
  625. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +0 -103
  626. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +0 -59
  627. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +0 -17
  628. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +0 -121
  629. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +0 -17
  630. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +0 -347
  631. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +0 -37
  632. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +0 -44
  633. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +0 -9
  634. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +0 -55
  635. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +0 -41
  636. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +0 -51
  637. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +0 -255
  638. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +0 -51
  639. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +0 -91
  640. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +0 -3
  641. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +0 -595
  642. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +0 -92
  643. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +0 -277
  644. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +0 -21
  645. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +0 -41
  646. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +0 -440
  647. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +0 -19
  648. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +0 -63
  649. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +0 -9
  650. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +0 -20
  651. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +0 -26
  652. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +0 -580
  653. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +0 -43
  654. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +0 -20
  655. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +0 -57
  656. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +0 -121
  657. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +0 -3
  658. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +0 -9
  659. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +0 -64
  660. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +0 -34
  661. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +0 -47
  662. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +0 -32
  663. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +0 -8
  664. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +0 -165
  665. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +0 -10
  666. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +0 -153
  667. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +0 -229
  668. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +0 -25
  669. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +0 -497
  670. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +0 -9
  671. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +0 -19
  672. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +0 -47
  673. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +0 -94
  674. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +0 -196
  675. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +0 -85
  676. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +0 -49
  677. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +0 -90
  678. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +0 -12
  679. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +0 -43
  680. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +0 -59
  681. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +0 -102
  682. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +0 -36
  683. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +0 -45
  684. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +0 -4
  685. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +0 -1936
  686. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +0 -146
  687. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +0 -31
  688. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +0 -208
  689. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +0 -118
  690. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +0 -32
  691. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +0 -20
  692. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +0 -36
  693. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +0 -45
  694. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +0 -33
  695. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +0 -285
  696. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +0 -13
  697. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +0 -485
  698. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +0 -2
  699. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +0 -13
  700. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +0 -111
  701. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +0 -32
  702. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +0 -126
  703. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +0 -233
  704. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +0 -80
  705. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +0 -313
  706. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +0 -208
  707. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +0 -63
  708. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +0 -16
  709. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +0 -21
  710. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +0 -12
  711. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +0 -147
  712. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +0 -187
  713. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +0 -19
  714. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +0 -6
  715. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +0 -298
  716. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +0 -22
  717. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +0 -62
  718. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +0 -1
  719. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +0 -22
  720. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +0 -11
  721. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +0 -315
  722. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +0 -295
  723. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +0 -95
  724. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +0 -31
  725. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +0 -41
  726. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +0 -37
  727. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +0 -2
  728. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +0 -140
  729. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +0 -144
  730. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +0 -5
  731. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +0 -20
  732. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +0 -3
  733. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +0 -152
  734. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +0 -66
  735. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +0 -25
  736. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +0 -21
  737. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +0 -45
  738. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +0 -52
  739. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +0 -16
  740. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +0 -31
  741. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +0 -27
  742. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +0 -50
  743. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +0 -44
  744. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +0 -24
  745. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +0 -39
  746. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +0 -17
  747. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +0 -83
  748. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +0 -63
  749. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +0 -19
  750. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +0 -18
  751. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +0 -16
  752. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +0 -25
  753. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +0 -18
  754. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +0 -18
  755. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +0 -42
  756. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +0 -17
  757. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +0 -17
  758. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +0 -57
  759. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +0 -20
  760. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +0 -1
  761. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +0 -3
  762. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +0 -13
  763. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +0 -146
  764. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +0 -19
  765. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +0 -36
  766. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +0 -34
  767. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +0 -14
  768. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +0 -50
  769. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +0 -25
  770. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +0 -3
  771. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +0 -2
  772. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +0 -31
  773. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +0 -21
  774. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +0 -3
  775. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +0 -46
  776. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +0 -36
  777. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +0 -248
  778. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +0 -2
  779. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +0 -29
  780. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +0 -392
  781. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +0 -51
  782. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +0 -13
  783. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +0 -34
  784. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +0 -11
  785. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +0 -8
  786. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +0 -39
  787. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +0 -23
  788. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +0 -40
  789. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +0 -31
  790. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +0 -178
  791. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +0 -12
  792. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +0 -165
  793. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +0 -17
  794. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +0 -17
  795. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +0 -8
  796. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +0 -17
  797. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +0 -8
  798. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +0 -18
  799. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +0 -5
  800. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +0 -9
  801. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +0 -26
  802. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +0 -38
  803. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +0 -28
  804. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +0 -70
  805. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +0 -10
  806. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +0 -21
  807. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +0 -22
  808. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +0 -12
  809. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +0 -320
  810. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +0 -222
  811. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +0 -13
  812. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +0 -127
  813. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +0 -57
  814. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +0 -213
  815. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +0 -9
  816. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +0 -88
  817. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +0 -150
  818. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +0 -178
  819. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +0 -213
  820. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +0 -37
  821. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +0 -52
  822. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +0 -11
  823. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +0 -8
  824. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +0 -169
  825. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +0 -42
  826. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +0 -28
  827. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +0 -22
  828. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +0 -160
  829. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +0 -167
  830. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +0 -17
  831. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +0 -38
  832. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +0 -6
  833. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +0 -6
  834. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +0 -34
  835. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +0 -105
  836. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +0 -259
  837. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +0 -159
  838. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +0 -60
  839. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +0 -83
  840. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +0 -168
  841. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +0 -17
  842. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +0 -62
  843. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +0 -24
  844. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +0 -15
  845. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +0 -172
  846. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +0 -179
  847. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +0 -285
  848. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +0 -49
  849. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +0 -68
  850. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +0 -46
  851. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +0 -12
  852. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +0 -14
  853. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +0 -56
  854. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +0 -11
  855. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +0 -43
  856. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +0 -632
  857. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +0 -238
  858. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +0 -208
  859. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +0 -273
  860. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +0 -61
  861. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +0 -32
  862. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +0 -40
  863. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +0 -1
  864. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +0 -21
  865. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +0 -28
  866. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +0 -42
  867. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +0 -8
  868. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +0 -10
  869. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +0 -8
  870. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +0 -8
  871. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +0 -16
  872. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +0 -14
  873. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +0 -8
  874. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +0 -8
  875. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +0 -13
  876. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +0 -9
  877. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +0 -8
  878. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +0 -8
  879. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +0 -8
  880. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +0 -8
  881. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +0 -15
  882. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +0 -16
  883. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +0 -21
  884. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +0 -6
  885. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +0 -11
  886. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +0 -9
  887. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +0 -8
  888. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +0 -9
  889. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +0 -7
  890. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +0 -7
  891. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +0 -9
  892. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +0 -17
  893. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +0 -10
  894. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +0 -8
  895. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +0 -19
  896. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +0 -8
  897. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +0 -8
  898. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +0 -12
  899. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +0 -8
  900. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +0 -12
  901. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +0 -8
  902. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +0 -8
  903. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +0 -8
  904. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +0 -9
  905. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +0 -17
  906. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +0 -8
  907. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +0 -7
  908. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +0 -8
  909. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +0 -9
  910. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +0 -8
  911. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +0 -17
  912. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +0 -8
  913. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +0 -12
  914. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +0 -15
  915. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +0 -12
  916. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +0 -20
  917. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +0 -8
  918. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +0 -9
  919. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +0 -42
  920. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +0 -9
  921. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +0 -27
  922. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +0 -24
  923. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +0 -7
  924. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +0 -30
  925. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +0 -50
  926. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +0 -67
  927. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +0 -96
  928. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +0 -114
  929. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +0 -117
  930. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +0 -82
  931. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +0 -23
  932. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +0 -152
  933. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +0 -658
  934. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +0 -134
  935. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +0 -275
  936. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +0 -197
  937. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +0 -256
  938. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +0 -11
  939. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +0 -33
  940. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +0 -125
  941. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +0 -46
  942. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +0 -113
  943. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +0 -66
  944. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +0 -177
  945. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +0 -94
  946. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +0 -13
  947. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +0 -7
  948. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +0 -32
  949. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +0 -90
  950. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +0 -75
  951. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +0 -189
  952. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +0 -77
  953. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +0 -39
  954. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +0 -31
  955. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +0 -36
  956. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +0 -212
  957. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +0 -103
  958. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +0 -23
  959. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +0 -16
  960. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +0 -20
  961. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +0 -30
  962. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +0 -39
  963. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +0 -41
  964. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +0 -90
  965. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +0 -20
  966. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +0 -18
  967. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +0 -40
  968. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +0 -107
  969. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +0 -32
  970. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +0 -54
  971. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +0 -98
  972. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +0 -23
  973. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +0 -9
  974. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +0 -125
  975. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +0 -111
  976. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +0 -119
  977. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +0 -2
  978. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +0 -209
  979. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +0 -59
  980. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +0 -110
  981. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +0 -255
  982. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +0 -1157
  983. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +0 -8
  984. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +0 -131
  985. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +0 -24
  986. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +0 -232
  987. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +0 -181
  988. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +0 -271
  989. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +0 -167
  990. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +0 -16
  991. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +0 -53
  992. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +0 -42
  993. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +0 -113
  994. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +0 -71
  995. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +0 -361
  996. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +0 -161
  997. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +0 -112
  998. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +0 -31
  999. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +0 -80
  1000. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +0 -19
  1001. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +0 -28
  1002. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +0 -34
  1003. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +0 -74
  1004. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +0 -261
  1005. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  1006. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +0 -1
  1007. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +0 -85
  1008. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +0 -49
  1009. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +0 -11
  1010. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +0 -66
  1011. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +0 -11
  1012. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +0 -138
  1013. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +0 -290
  1014. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +0 -36
  1015. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +0 -65
  1016. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +0 -94
  1017. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +0 -9
  1018. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +0 -24
  1019. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +0 -42
  1020. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +0 -15
  1021. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +0 -155
  1022. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +0 -67
  1023. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +0 -46
  1024. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +0 -63
  1025. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +0 -185
  1026. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +0 -188
  1027. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +0 -27
  1028. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +0 -91
  1029. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +0 -204
  1030. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +0 -14
  1031. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +0 -825
  1032. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +0 -168
  1033. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +0 -41
  1034. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +0 -1
  1035. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +0 -551
  1036. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +0 -11
  1037. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +0 -130
  1038. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +0 -104
  1039. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +0 -537
  1040. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +0 -1
  1041. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +0 -132
  1042. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +0 -83
  1043. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +0 -27
  1044. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +0 -26
  1045. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +0 -2615
  1046. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +0 -86
  1047. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +0 -93
  1048. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +0 -58
  1049. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +0 -373
  1050. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +0 -52
  1051. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +0 -48
  1052. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +0 -46
  1053. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +0 -16
  1054. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +0 -441
  1055. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +0 -122
  1056. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +0 -477
  1057. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +0 -267
  1058. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +0 -103
  1059. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +0 -2
  1060. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +0 -187
  1061. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +0 -108
  1062. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +0 -32
  1063. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +0 -3654
  1064. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +0 -20
  1065. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +0 -14
  1066. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +0 -80
  1067. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +0 -16
  1068. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +0 -20
  1069. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +0 -151
  1070. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +0 -116
  1071. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +0 -44
  1072. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +0 -9
  1073. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +0 -54
  1074. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +0 -299
  1075. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +0 -1204
  1076. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +0 -159
  1077. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +0 -177
  1078. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +0 -10
  1079. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +0 -79
  1080. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +0 -262
  1081. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +0 -124
  1082. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +0 -30
  1083. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +0 -713
  1084. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +0 -614
  1085. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +0 -976
  1086. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +0 -509
  1087. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +0 -73
  1088. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +0 -67
  1089. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +0 -27
  1090. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +0 -21
  1091. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +0 -342
  1092. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +0 -51
  1093. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +0 -69
  1094. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +0 -430
  1095. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +0 -47
  1096. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +0 -72
  1097. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +0 -15
  1098. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +0 -22
  1099. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +0 -23
  1100. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  1101. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +0 -23
  1102. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +0 -210
  1103. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +0 -400
  1104. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +0 -43
  1105. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +0 -20
  1106. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +0 -13
  1107. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +0 -100
  1108. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +0 -112
  1109. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +0 -85
  1110. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +0 -149
  1111. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +0 -74
  1112. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +0 -132
  1113. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +0 -28
  1114. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  1115. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +0 -91
  1116. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +0 -26
  1117. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +0 -37
  1118. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +0 -32
  1119. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +0 -24
  1120. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +0 -50
  1121. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +0 -57
  1122. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +0 -1
  1123. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +0 -19
  1124. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +0 -69
  1125. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +0 -8
  1126. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +0 -100
  1127. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +0 -22
  1128. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +0 -404
  1129. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +0 -94
  1130. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +0 -108
  1131. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +0 -28
  1132. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +0 -34
  1133. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +0 -327
  1134. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  1135. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +0 -1
  1136. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +0 -1
  1137. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +0 -1
  1138. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +0 -1
  1139. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +0 -1
  1140. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +0 -25
  1141. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +0 -19
  1142. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +0 -55
  1143. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +0 -60
  1144. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +0 -87
  1145. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1146. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +0 -296
  1147. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +0 -143
  1148. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +0 -22
  1149. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +0 -20
  1150. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +0 -306
  1151. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +0 -95
  1152. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +0 -32
  1153. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +0 -56
  1154. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +0 -38
  1155. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +0 -218
  1156. jaclang/vendor/mypy/typestate.py +0 -323
  1157. jaclang/vendor/mypy/typetraverser.py +0 -148
  1158. jaclang/vendor/mypy/typevars.py +0 -93
  1159. jaclang/vendor/mypy/typevartuples.py +0 -32
  1160. jaclang/vendor/mypy/util.py +0 -869
  1161. jaclang/vendor/mypy/version.py +0 -1
  1162. jaclang/vendor/mypy/visitor.py +0 -621
  1163. jaclang/vendor/mypy/xml/mypy-html.css +0 -104
  1164. jaclang/vendor/mypy/xml/mypy-html.xslt +0 -81
  1165. jaclang/vendor/mypy/xml/mypy-txt.xslt +0 -100
  1166. jaclang/vendor/mypy/xml/mypy.xsd +0 -50
  1167. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +0 -229
  1168. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +0 -48
  1169. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +0 -1241
  1170. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +0 -6
  1171. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +0 -6
  1172. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +0 -3
  1173. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +0 -27
  1174. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +0 -29
  1175. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +0 -6
  1176. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +0 -1
  1177. jaclang/vendor/mypy_extensions.py +0 -213
  1178. jaclang/vendor/mypyc/README.md +0 -133
  1179. jaclang/vendor/mypyc/__init__.py +0 -0
  1180. jaclang/vendor/mypyc/__main__.py +0 -57
  1181. jaclang/vendor/mypyc/analysis/__init__.py +0 -0
  1182. jaclang/vendor/mypyc/analysis/attrdefined.py +0 -436
  1183. jaclang/vendor/mypyc/analysis/blockfreq.py +0 -32
  1184. jaclang/vendor/mypyc/analysis/dataflow.py +0 -628
  1185. jaclang/vendor/mypyc/analysis/ircheck.py +0 -433
  1186. jaclang/vendor/mypyc/analysis/selfleaks.py +0 -211
  1187. jaclang/vendor/mypyc/build.py +0 -616
  1188. jaclang/vendor/mypyc/codegen/__init__.py +0 -0
  1189. jaclang/vendor/mypyc/codegen/cstring.py +0 -54
  1190. jaclang/vendor/mypyc/codegen/emit.py +0 -1193
  1191. jaclang/vendor/mypyc/codegen/emitclass.py +0 -1060
  1192. jaclang/vendor/mypyc/codegen/emitfunc.py +0 -852
  1193. jaclang/vendor/mypyc/codegen/emitmodule.py +0 -1136
  1194. jaclang/vendor/mypyc/codegen/emitwrapper.py +0 -979
  1195. jaclang/vendor/mypyc/codegen/literals.py +0 -302
  1196. jaclang/vendor/mypyc/common.py +0 -136
  1197. jaclang/vendor/mypyc/crash.py +0 -31
  1198. jaclang/vendor/mypyc/doc/Makefile +0 -20
  1199. jaclang/vendor/mypyc/doc/bool_operations.rst +0 -27
  1200. jaclang/vendor/mypyc/doc/compilation_units.rst +0 -20
  1201. jaclang/vendor/mypyc/doc/conf.py +0 -59
  1202. jaclang/vendor/mypyc/doc/cpython-timings.md +0 -25
  1203. jaclang/vendor/mypyc/doc/dev-intro.md +0 -548
  1204. jaclang/vendor/mypyc/doc/dict_operations.rst +0 -59
  1205. jaclang/vendor/mypyc/doc/differences_from_python.rst +0 -332
  1206. jaclang/vendor/mypyc/doc/float_operations.rst +0 -50
  1207. jaclang/vendor/mypyc/doc/future.md +0 -42
  1208. jaclang/vendor/mypyc/doc/getting_started.rst +0 -240
  1209. jaclang/vendor/mypyc/doc/index.rst +0 -61
  1210. jaclang/vendor/mypyc/doc/int_operations.rst +0 -162
  1211. jaclang/vendor/mypyc/doc/introduction.rst +0 -150
  1212. jaclang/vendor/mypyc/doc/list_operations.rst +0 -65
  1213. jaclang/vendor/mypyc/doc/make.bat +0 -35
  1214. jaclang/vendor/mypyc/doc/native_classes.rst +0 -206
  1215. jaclang/vendor/mypyc/doc/native_operations.rst +0 -55
  1216. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +0 -244
  1217. jaclang/vendor/mypyc/doc/set_operations.rst +0 -47
  1218. jaclang/vendor/mypyc/doc/str_operations.rst +0 -35
  1219. jaclang/vendor/mypyc/doc/tuple_operations.rst +0 -33
  1220. jaclang/vendor/mypyc/doc/using_type_annotations.rst +0 -398
  1221. jaclang/vendor/mypyc/errors.py +0 -29
  1222. jaclang/vendor/mypyc/external/googletest/LICENSE +0 -28
  1223. jaclang/vendor/mypyc/external/googletest/README.md +0 -280
  1224. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +0 -294
  1225. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +0 -250
  1226. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +0 -1444
  1227. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  1228. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +0 -993
  1229. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +0 -232
  1230. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +0 -179
  1231. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +0 -263
  1232. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +0 -2236
  1233. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +0 -358
  1234. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +0 -58
  1235. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +0 -69
  1236. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  1237. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +0 -41
  1238. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -319
  1239. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +0 -206
  1240. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +0 -1238
  1241. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  1242. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  1243. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  1244. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +0 -731
  1245. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +0 -93
  1246. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +0 -2560
  1247. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +0 -167
  1248. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  1249. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  1250. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +0 -3331
  1251. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -297
  1252. jaclang/vendor/mypyc/external/googletest/make/Makefile +0 -61
  1253. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +0 -48
  1254. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +0 -1342
  1255. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +0 -387
  1256. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +0 -1183
  1257. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +0 -1259
  1258. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +0 -373
  1259. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +0 -110
  1260. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +0 -118
  1261. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +0 -5388
  1262. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +0 -38
  1263. jaclang/vendor/mypyc/ir/__init__.py +0 -0
  1264. jaclang/vendor/mypyc/ir/class_ir.py +0 -499
  1265. jaclang/vendor/mypyc/ir/func_ir.py +0 -370
  1266. jaclang/vendor/mypyc/ir/module_ir.py +0 -88
  1267. jaclang/vendor/mypyc/ir/ops.py +0 -1727
  1268. jaclang/vendor/mypyc/ir/pprint.py +0 -516
  1269. jaclang/vendor/mypyc/ir/rtypes.py +0 -1038
  1270. jaclang/vendor/mypyc/irbuild/__init__.py +0 -0
  1271. jaclang/vendor/mypyc/irbuild/ast_helpers.py +0 -123
  1272. jaclang/vendor/mypyc/irbuild/builder.py +0 -1394
  1273. jaclang/vendor/mypyc/irbuild/callable_class.py +0 -173
  1274. jaclang/vendor/mypyc/irbuild/classdef.py +0 -850
  1275. jaclang/vendor/mypyc/irbuild/constant_fold.py +0 -95
  1276. jaclang/vendor/mypyc/irbuild/context.py +0 -186
  1277. jaclang/vendor/mypyc/irbuild/env_class.py +0 -223
  1278. jaclang/vendor/mypyc/irbuild/expression.py +0 -1070
  1279. jaclang/vendor/mypyc/irbuild/for_helpers.py +0 -1075
  1280. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +0 -250
  1281. jaclang/vendor/mypyc/irbuild/function.py +0 -1088
  1282. jaclang/vendor/mypyc/irbuild/generator.py +0 -346
  1283. jaclang/vendor/mypyc/irbuild/ll_builder.py +0 -2389
  1284. jaclang/vendor/mypyc/irbuild/main.py +0 -153
  1285. jaclang/vendor/mypyc/irbuild/mapper.py +0 -221
  1286. jaclang/vendor/mypyc/irbuild/match.py +0 -355
  1287. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +0 -197
  1288. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +0 -203
  1289. jaclang/vendor/mypyc/irbuild/prepare.py +0 -609
  1290. jaclang/vendor/mypyc/irbuild/specialize.py +0 -822
  1291. jaclang/vendor/mypyc/irbuild/statement.py +0 -1017
  1292. jaclang/vendor/mypyc/irbuild/targets.py +0 -57
  1293. jaclang/vendor/mypyc/irbuild/util.py +0 -189
  1294. jaclang/vendor/mypyc/irbuild/visitor.py +0 -401
  1295. jaclang/vendor/mypyc/irbuild/vtable.py +0 -82
  1296. jaclang/vendor/mypyc/lib-rt/CPy.h +0 -638
  1297. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +0 -143
  1298. jaclang/vendor/mypyc/lib-rt/dict_ops.c +0 -446
  1299. jaclang/vendor/mypyc/lib-rt/exc_ops.c +0 -259
  1300. jaclang/vendor/mypyc/lib-rt/float_ops.c +0 -192
  1301. jaclang/vendor/mypyc/lib-rt/generic_ops.c +0 -64
  1302. jaclang/vendor/mypyc/lib-rt/getargs.c +0 -450
  1303. jaclang/vendor/mypyc/lib-rt/getargsfast.c +0 -569
  1304. jaclang/vendor/mypyc/lib-rt/init.c +0 -13
  1305. jaclang/vendor/mypyc/lib-rt/int_ops.c +0 -803
  1306. jaclang/vendor/mypyc/lib-rt/list_ops.c +0 -335
  1307. jaclang/vendor/mypyc/lib-rt/misc_ops.c +0 -942
  1308. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +0 -18
  1309. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +0 -118
  1310. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +0 -497
  1311. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +0 -533
  1312. jaclang/vendor/mypyc/lib-rt/set_ops.c +0 -17
  1313. jaclang/vendor/mypyc/lib-rt/setup.py +0 -70
  1314. jaclang/vendor/mypyc/lib-rt/str_ops.c +0 -241
  1315. jaclang/vendor/mypyc/lib-rt/test_capi.cc +0 -585
  1316. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +0 -61
  1317. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1318. jaclang/vendor/mypyc/lower/int_ops.py +0 -113
  1319. jaclang/vendor/mypyc/lower/list_ops.py +0 -45
  1320. jaclang/vendor/mypyc/lower/misc_ops.py +0 -12
  1321. jaclang/vendor/mypyc/lower/registry.py +0 -26
  1322. jaclang/vendor/mypyc/namegen.py +0 -115
  1323. jaclang/vendor/mypyc/options.py +0 -32
  1324. jaclang/vendor/mypyc/primitives/__init__.py +0 -0
  1325. jaclang/vendor/mypyc/primitives/bytes_ops.py +0 -101
  1326. jaclang/vendor/mypyc/primitives/dict_ops.py +0 -325
  1327. jaclang/vendor/mypyc/primitives/exc_ops.py +0 -101
  1328. jaclang/vendor/mypyc/primitives/float_ops.py +0 -168
  1329. jaclang/vendor/mypyc/primitives/generic_ops.py +0 -384
  1330. jaclang/vendor/mypyc/primitives/int_ops.py +0 -303
  1331. jaclang/vendor/mypyc/primitives/list_ops.py +0 -310
  1332. jaclang/vendor/mypyc/primitives/misc_ops.py +0 -267
  1333. jaclang/vendor/mypyc/primitives/registry.py +0 -360
  1334. jaclang/vendor/mypyc/primitives/set_ops.py +0 -121
  1335. jaclang/vendor/mypyc/primitives/str_ops.py +0 -229
  1336. jaclang/vendor/mypyc/primitives/tuple_ops.py +0 -83
  1337. jaclang/vendor/mypyc/rt_subtype.py +0 -77
  1338. jaclang/vendor/mypyc/sametype.py +0 -83
  1339. jaclang/vendor/mypyc/subtype.py +0 -88
  1340. jaclang/vendor/mypyc/test/__init__.py +0 -0
  1341. jaclang/vendor/mypyc/test/config.py +0 -13
  1342. jaclang/vendor/mypyc/test/test_alwaysdefined.py +0 -46
  1343. jaclang/vendor/mypyc/test/test_analysis.py +0 -77
  1344. jaclang/vendor/mypyc/test/test_cheader.py +0 -53
  1345. jaclang/vendor/mypyc/test/test_commandline.py +0 -82
  1346. jaclang/vendor/mypyc/test/test_emit.py +0 -69
  1347. jaclang/vendor/mypyc/test/test_emitclass.py +0 -35
  1348. jaclang/vendor/mypyc/test/test_emitfunc.py +0 -928
  1349. jaclang/vendor/mypyc/test/test_emitwrapper.py +0 -60
  1350. jaclang/vendor/mypyc/test/test_exceptions.py +0 -56
  1351. jaclang/vendor/mypyc/test/test_external.py +0 -49
  1352. jaclang/vendor/mypyc/test/test_irbuild.py +0 -87
  1353. jaclang/vendor/mypyc/test/test_ircheck.py +0 -199
  1354. jaclang/vendor/mypyc/test/test_literals.py +0 -90
  1355. jaclang/vendor/mypyc/test/test_lowering.py +0 -56
  1356. jaclang/vendor/mypyc/test/test_namegen.py +0 -48
  1357. jaclang/vendor/mypyc/test/test_optimizations.py +0 -68
  1358. jaclang/vendor/mypyc/test/test_pprint.py +0 -42
  1359. jaclang/vendor/mypyc/test/test_rarray.py +0 -48
  1360. jaclang/vendor/mypyc/test/test_refcount.py +0 -59
  1361. jaclang/vendor/mypyc/test/test_run.py +0 -426
  1362. jaclang/vendor/mypyc/test/test_serialization.py +0 -108
  1363. jaclang/vendor/mypyc/test/test_struct.py +0 -112
  1364. jaclang/vendor/mypyc/test/test_tuplename.py +0 -33
  1365. jaclang/vendor/mypyc/test/test_typeops.py +0 -97
  1366. jaclang/vendor/mypyc/test/testutil.py +0 -283
  1367. jaclang/vendor/mypyc/test-data/alwaysdefined.test +0 -732
  1368. jaclang/vendor/mypyc/test-data/analysis.test +0 -470
  1369. jaclang/vendor/mypyc/test-data/commandline.test +0 -245
  1370. jaclang/vendor/mypyc/test-data/driver/driver.py +0 -48
  1371. jaclang/vendor/mypyc/test-data/exceptions-freq.test +0 -125
  1372. jaclang/vendor/mypyc/test-data/exceptions.test +0 -699
  1373. jaclang/vendor/mypyc/test-data/fixtures/ir.py +0 -373
  1374. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +0 -103
  1375. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +0 -169
  1376. jaclang/vendor/mypyc/test-data/irbuild-any.test +0 -236
  1377. jaclang/vendor/mypyc/test-data/irbuild-basic.test +0 -3399
  1378. jaclang/vendor/mypyc/test-data/irbuild-bool.test +0 -424
  1379. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +0 -181
  1380. jaclang/vendor/mypyc/test-data/irbuild-classes.test +0 -1302
  1381. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +0 -480
  1382. jaclang/vendor/mypyc/test-data/irbuild-dict.test +0 -584
  1383. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +0 -215
  1384. jaclang/vendor/mypyc/test-data/irbuild-float.test +0 -497
  1385. jaclang/vendor/mypyc/test-data/irbuild-generics.test +0 -150
  1386. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +0 -437
  1387. jaclang/vendor/mypyc/test-data/irbuild-i16.test +0 -526
  1388. jaclang/vendor/mypyc/test-data/irbuild-i32.test +0 -598
  1389. jaclang/vendor/mypyc/test-data/irbuild-i64.test +0 -2144
  1390. jaclang/vendor/mypyc/test-data/irbuild-int.test +0 -194
  1391. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +0 -109
  1392. jaclang/vendor/mypyc/test-data/irbuild-lists.test +0 -513
  1393. jaclang/vendor/mypyc/test-data/irbuild-match.test +0 -1717
  1394. jaclang/vendor/mypyc/test-data/irbuild-math.test +0 -64
  1395. jaclang/vendor/mypyc/test-data/irbuild-nested.test +0 -807
  1396. jaclang/vendor/mypyc/test-data/irbuild-optional.test +0 -536
  1397. jaclang/vendor/mypyc/test-data/irbuild-set.test +0 -806
  1398. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +0 -257
  1399. jaclang/vendor/mypyc/test-data/irbuild-statements.test +0 -1060
  1400. jaclang/vendor/mypyc/test-data/irbuild-str.test +0 -312
  1401. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +0 -12
  1402. jaclang/vendor/mypyc/test-data/irbuild-try.test +0 -523
  1403. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +0 -386
  1404. jaclang/vendor/mypyc/test-data/irbuild-u8.test +0 -543
  1405. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +0 -241
  1406. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +0 -153
  1407. jaclang/vendor/mypyc/test-data/lowering-int.test +0 -377
  1408. jaclang/vendor/mypyc/test-data/lowering-list.test +0 -33
  1409. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +0 -400
  1410. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +0 -296
  1411. jaclang/vendor/mypyc/test-data/refcount.test +0 -1482
  1412. jaclang/vendor/mypyc/test-data/run-async.test +0 -173
  1413. jaclang/vendor/mypyc/test-data/run-attrs.test +0 -318
  1414. jaclang/vendor/mypyc/test-data/run-bench.test +0 -196
  1415. jaclang/vendor/mypyc/test-data/run-bools.test +0 -229
  1416. jaclang/vendor/mypyc/test-data/run-bytes.test +0 -302
  1417. jaclang/vendor/mypyc/test-data/run-classes.test +0 -2505
  1418. jaclang/vendor/mypyc/test-data/run-dicts.test +0 -334
  1419. jaclang/vendor/mypyc/test-data/run-dunders.test +0 -945
  1420. jaclang/vendor/mypyc/test-data/run-exceptions.test +0 -448
  1421. jaclang/vendor/mypyc/test-data/run-floats.test +0 -516
  1422. jaclang/vendor/mypyc/test-data/run-functions.test +0 -1310
  1423. jaclang/vendor/mypyc/test-data/run-generators.test +0 -682
  1424. jaclang/vendor/mypyc/test-data/run-i16.test +0 -338
  1425. jaclang/vendor/mypyc/test-data/run-i32.test +0 -336
  1426. jaclang/vendor/mypyc/test-data/run-i64.test +0 -1519
  1427. jaclang/vendor/mypyc/test-data/run-imports.test +0 -265
  1428. jaclang/vendor/mypyc/test-data/run-integers.test +0 -540
  1429. jaclang/vendor/mypyc/test-data/run-lists.test +0 -411
  1430. jaclang/vendor/mypyc/test-data/run-loops.test +0 -485
  1431. jaclang/vendor/mypyc/test-data/run-match.test +0 -283
  1432. jaclang/vendor/mypyc/test-data/run-math.test +0 -106
  1433. jaclang/vendor/mypyc/test-data/run-misc.test +0 -1170
  1434. jaclang/vendor/mypyc/test-data/run-multimodule.test +0 -887
  1435. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +0 -138
  1436. jaclang/vendor/mypyc/test-data/run-primitives.test +0 -375
  1437. jaclang/vendor/mypyc/test-data/run-python37.test +0 -159
  1438. jaclang/vendor/mypyc/test-data/run-python38.test +0 -88
  1439. jaclang/vendor/mypyc/test-data/run-sets.test +0 -150
  1440. jaclang/vendor/mypyc/test-data/run-singledispatch.test +0 -698
  1441. jaclang/vendor/mypyc/test-data/run-strings.test +0 -641
  1442. jaclang/vendor/mypyc/test-data/run-traits.test +0 -411
  1443. jaclang/vendor/mypyc/test-data/run-tuples.test +0 -258
  1444. jaclang/vendor/mypyc/test-data/run-u8.test +0 -303
  1445. jaclang/vendor/mypyc/transform/__init__.py +0 -0
  1446. jaclang/vendor/mypyc/transform/copy_propagation.py +0 -94
  1447. jaclang/vendor/mypyc/transform/exceptions.py +0 -182
  1448. jaclang/vendor/mypyc/transform/flag_elimination.py +0 -108
  1449. jaclang/vendor/mypyc/transform/ir_transform.py +0 -368
  1450. jaclang/vendor/mypyc/transform/lower.py +0 -33
  1451. jaclang/vendor/mypyc/transform/refcount.py +0 -294
  1452. jaclang/vendor/mypyc/transform/uninit.py +0 -190
  1453. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +0 -279
  1454. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +0 -67
  1455. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +0 -5
  1456. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +0 -4
  1457. jaclang/vendor/typing_extensions.py +0 -3641
  1458. jaclang-0.7.34.dist-info/RECORD +0 -1563
  1459. /jaclang/{vendor/mypy/dmypy → compiler/larkparse}/__init__.py +0 -0
  1460. /jaclang/{tests → compiler/passes/main/tests}/fixtures/access_checker.jac +0 -0
  1461. /jaclang/{vendor/mypy/plugins/__init__.py → langserve/tests/fixtures/deep_check_crash.jac} +0 -0
  1462. /jaclang/{vendor/mypy/server/__init__.py → langserve/tests/server_test/code_test.py} +0 -0
  1463. /jaclang/{plugin → runtimelib}/tests/__init__.py +0 -0
  1464. /jaclang/{plugin → runtimelib}/tests/fixtures/traversing_save.jac +0 -0
  1465. /jaclang/{vendor/mypy/test → tests}/__init__.py +0 -0
  1466. /jaclang/{vendor/mypy/test/meta → tests/fixtures}/__init__.py +0 -0
  1467. /jaclang/tests/fixtures/{architype_def_bug.jac → archetype_def_bug.jac} +0 -0
  1468. /jaclang/vendor/{mypy/typeshed/stdlib/concurrent/__init__.pyi → attrs-25.3.0.dist-info/REQUESTED} +0 -0
  1469. /jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/licenses/LICENSE +0 -0
  1470. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/__init__.pyi → cattrs-24.1.3.dist-info/REQUESTED} +0 -0
  1471. /jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/licenses/LICENSE +0 -0
  1472. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi → lark-1.2.2.dist-info/REQUESTED} +0 -0
  1473. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/entry_points.txt +0 -0
  1474. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/top_level.txt +0 -0
  1475. /jaclang/vendor/{mypy/typeshed/stdlib/email/mime/__init__.pyi → lsprotocol-2023.0.1.dist-info/REQUESTED} +0 -0
  1476. /jaclang/vendor/lsprotocol-2023.0.1.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1477. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/__init__.pyi → pluggy-1.5.0.dist-info/REQUESTED} +0 -0
  1478. /jaclang/vendor/pluggy-1.5.0.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1479. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi → pygls-1.3.1.dist-info/REQUESTED} +0 -0
  1480. {jaclang-0.7.34.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)