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

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

Potentially problematic release.


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

Files changed (1481) hide show
  1. jaclang/__init__.py +7 -414
  2. jaclang/cli/cli.md +5 -5
  3. jaclang/cli/cli.py +311 -214
  4. jaclang/cli/cmdreg.py +188 -31
  5. jaclang/compiler/__init__.py +10 -15
  6. jaclang/compiler/{codeloc.py → codeinfo.py} +11 -30
  7. jaclang/compiler/constant.py +10 -33
  8. jaclang/compiler/jac.lark +61 -92
  9. jaclang/compiler/larkparse/jac_parser.py +3444 -0
  10. jaclang/compiler/parser.py +1054 -1341
  11. jaclang/compiler/passes/__init__.py +2 -2
  12. jaclang/compiler/passes/main/__init__.py +33 -14
  13. jaclang/compiler/passes/main/annex_pass.py +85 -0
  14. jaclang/compiler/passes/main/cfg_build_pass.py +275 -0
  15. jaclang/compiler/passes/main/def_impl_match_pass.py +146 -102
  16. jaclang/compiler/passes/main/def_use_pass.py +64 -269
  17. jaclang/compiler/passes/main/import_pass.py +175 -360
  18. jaclang/compiler/passes/main/inheritance_pass.py +107 -105
  19. jaclang/compiler/passes/main/pyast_gen_pass.py +1129 -1600
  20. jaclang/compiler/passes/main/pyast_load_pass.py +540 -584
  21. jaclang/compiler/passes/main/pybc_gen_pass.py +38 -35
  22. jaclang/compiler/passes/main/pyjac_ast_link_pass.py +46 -160
  23. jaclang/compiler/passes/main/sym_tab_build_pass.py +113 -1202
  24. jaclang/compiler/passes/main/sym_tab_link_pass.py +141 -0
  25. jaclang/{tests → compiler/passes/main/tests}/fixtures/access_modifier.jac +10 -9
  26. jaclang/compiler/passes/main/tests/fixtures/atest.impl.jac +3 -0
  27. jaclang/compiler/passes/main/tests/fixtures/atest.jac +11 -0
  28. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +1 -1
  29. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +1 -1
  30. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +3 -3
  31. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +1 -1
  32. jaclang/compiler/passes/main/tests/fixtures/base.impl.jac +8 -0
  33. jaclang/compiler/passes/main/tests/fixtures/base.jac +4 -4
  34. jaclang/compiler/passes/main/tests/fixtures/base2.impl.jac +8 -0
  35. jaclang/compiler/passes/main/tests/fixtures/base2.jac +4 -4
  36. jaclang/compiler/passes/main/tests/fixtures/blip.jac +1 -1
  37. jaclang/compiler/passes/main/tests/fixtures/cfg_ability_test.jac +23 -0
  38. jaclang/compiler/passes/main/tests/fixtures/cfg_gen.jac +19 -0
  39. jaclang/compiler/passes/main/tests/fixtures/circular_import.jac +7 -0
  40. jaclang/compiler/passes/main/tests/fixtures/data_spatial_types.jac +12 -12
  41. jaclang/compiler/passes/main/tests/fixtures/decls.jac +4 -4
  42. jaclang/compiler/passes/main/tests/fixtures/defn_decl_mismatch.jac +4 -4
  43. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +6 -6
  44. jaclang/compiler/passes/main/tests/fixtures/enumerations.jac +13 -0
  45. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +1 -1
  46. jaclang/compiler/passes/main/tests/fixtures/func.jac +2 -2
  47. jaclang/compiler/passes/main/tests/fixtures/func2.jac +1 -1
  48. jaclang/compiler/passes/main/tests/fixtures/game1.jac +4 -4
  49. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +2 -2
  50. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +2 -2
  51. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +0 -8
  52. jaclang/compiler/passes/main/tests/fixtures/impl_grab.impl.jac +5 -0
  53. jaclang/{tests → compiler/passes/main/tests}/fixtures/impl_grab.jac +1 -1
  54. jaclang/compiler/passes/main/tests/fixtures/incautoimpl.jac +1 -1
  55. jaclang/compiler/passes/main/tests/fixtures/main_err.impl.jac +6 -0
  56. jaclang/compiler/passes/main/tests/fixtures/main_err.jac +6 -0
  57. jaclang/compiler/passes/main/tests/fixtures/mod_type_assign.jac +1 -1
  58. jaclang/compiler/passes/main/tests/fixtures/mtest.impl.jac +6 -0
  59. jaclang/{tests → compiler/passes/main/tests}/fixtures/mtest.jac +1 -1
  60. jaclang/{tests → compiler/passes/main/tests}/fixtures/nested_impls.jac +14 -15
  61. jaclang/compiler/passes/main/tests/fixtures/py_imp_test.jac +7 -7
  62. jaclang/compiler/passes/main/tests/fixtures/second_err.jac +4 -0
  63. jaclang/compiler/passes/main/tests/fixtures/str2doc.py +3 -0
  64. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/__init__.py +5 -0
  65. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/action/actions.jac +23 -0
  66. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/main.jac +14 -0
  67. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/no_dupls.jac +35 -0
  68. jaclang/compiler/passes/main/tests/fixtures/symtab_link_tests/one.jac +8 -0
  69. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +4 -4
  70. jaclang/compiler/passes/main/tests/test_cfg_build_pass.py +99 -0
  71. jaclang/compiler/passes/main/tests/test_decl_impl_match_pass.py +157 -0
  72. jaclang/compiler/passes/main/tests/test_def_use_pass.py +4 -6
  73. jaclang/compiler/passes/main/tests/test_import_pass.py +59 -46
  74. jaclang/compiler/passes/main/tests/test_pyast_build_pass.py +15 -0
  75. jaclang/compiler/passes/main/tests/test_pyast_gen_pass.py +25 -34
  76. jaclang/compiler/passes/main/tests/test_pybc_gen_pass.py +3 -3
  77. jaclang/compiler/passes/main/tests/test_sub_node_pass.py +8 -7
  78. jaclang/compiler/passes/main/tests/test_sym_tab_build_pass.py +4 -4
  79. jaclang/compiler/passes/main/tests/test_sym_tab_link_pass.py +62 -0
  80. jaclang/compiler/passes/tool/__init__.py +2 -0
  81. jaclang/compiler/passes/tool/doc_ir.py +179 -0
  82. jaclang/compiler/passes/tool/doc_ir_gen_pass.py +1210 -0
  83. jaclang/compiler/passes/tool/fuse_comments_pass.py +90 -70
  84. jaclang/compiler/passes/tool/jac_formatter_pass.py +122 -2554
  85. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +249 -97
  86. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +94 -97
  87. jaclang/compiler/passes/tool/tests/fixtures/doc_string.jac +2 -2
  88. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/access_mod_check.jac +5 -5
  89. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/archetype_test.jac +13 -0
  90. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/decorator_stack.jac +7 -7
  91. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/line_spacing.jac +8 -8
  92. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +3 -3
  93. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +3 -3
  94. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +1 -1
  95. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +2 -2
  96. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +3 -3
  97. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +1 -1
  98. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +1 -1
  99. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +1 -1
  100. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +10 -4
  101. jaclang/compiler/passes/tool/tests/test_doc_ir_gen_pass.py +29 -0
  102. jaclang/compiler/passes/tool/tests/test_jac_format_pass.py +63 -88
  103. jaclang/compiler/passes/tool/tests/test_unparse_validate.py +27 -28
  104. jaclang/compiler/passes/transform.py +56 -16
  105. jaclang/compiler/passes/{ir_pass.py → uni_pass.py} +35 -52
  106. jaclang/compiler/program.py +205 -0
  107. jaclang/compiler/tests/fixtures/codegentext.jac +31 -0
  108. jaclang/compiler/tests/fixtures/fam.jac +10 -10
  109. jaclang/compiler/tests/fixtures/hello_world.jac +1 -1
  110. jaclang/compiler/tests/fixtures/staticcheck.jac +2 -2
  111. jaclang/compiler/tests/test_importer.py +21 -16
  112. jaclang/compiler/tests/test_parser.py +38 -17
  113. jaclang/compiler/{absyntree.py → unitree.py} +1120 -1012
  114. jaclang/langserve/engine.py +183 -171
  115. jaclang/langserve/sem_manager.py +26 -22
  116. jaclang/langserve/server.py +6 -15
  117. jaclang/langserve/tests/fixtures/base_module_structure.jac +7 -7
  118. jaclang/langserve/tests/fixtures/circle.jac +6 -6
  119. jaclang/langserve/tests/fixtures/circle_err.jac +6 -6
  120. jaclang/langserve/tests/fixtures/circle_pure.impl.jac +5 -5
  121. jaclang/langserve/tests/fixtures/circle_pure.jac +7 -7
  122. jaclang/langserve/tests/fixtures/circle_pure_err.impl.jac +2 -2
  123. jaclang/langserve/tests/fixtures/circle_pure_err.jac +7 -7
  124. jaclang/langserve/tests/fixtures/import_include_statements.jac +6 -6
  125. jaclang/langserve/tests/fixtures/rename.jac +6 -6
  126. jaclang/langserve/tests/server_test/test_lang_serve.py +262 -0
  127. jaclang/langserve/tests/server_test/utils.py +115 -0
  128. jaclang/langserve/tests/test_sem_tokens.py +2 -2
  129. jaclang/langserve/tests/test_server.py +41 -23
  130. jaclang/langserve/utils.jac +438 -0
  131. jaclang/runtimelib/{architype.py → archetype.py} +85 -61
  132. jaclang/runtimelib/builtin.py +92 -0
  133. jaclang/runtimelib/constructs.py +11 -13
  134. jaclang/runtimelib/importer.py +63 -51
  135. jaclang/runtimelib/machine.py +1551 -144
  136. jaclang/runtimelib/memory.py +6 -6
  137. jaclang/{plugin → runtimelib}/tests/fixtures/graph_purger.jac +1 -1
  138. jaclang/{plugin → runtimelib}/tests/fixtures/impl_match.jac +2 -2
  139. jaclang/runtimelib/tests/fixtures/impl_match_impl.jac +3 -0
  140. jaclang/{plugin → runtimelib}/tests/fixtures/other_root_access.jac +7 -7
  141. jaclang/{plugin → runtimelib}/tests/fixtures/savable_object.jac +3 -5
  142. jaclang/{plugin → runtimelib}/tests/fixtures/simple_node_connection.jac +6 -6
  143. jaclang/{plugin → runtimelib}/tests/fixtures/simple_persistent.jac +1 -1
  144. jaclang/runtimelib/tests/test_features.py +72 -0
  145. jaclang/{plugin → runtimelib}/tests/test_jaseci.py +6 -5
  146. jaclang/runtimelib/utils.py +31 -63
  147. jaclang/settings.py +1 -6
  148. jaclang/tests/fixtures/{abc.jac → abc_check.jac} +6 -6
  149. jaclang/tests/fixtures/arch_rel_import_creation.jac +4 -4
  150. jaclang/tests/fixtures/async_ability.jac +18 -0
  151. jaclang/tests/fixtures/async_walker.jac +23 -0
  152. jaclang/tests/fixtures/baddy.jac +1 -1
  153. jaclang/tests/fixtures/base_class1.jac +2 -2
  154. jaclang/tests/fixtures/base_class2.jac +2 -2
  155. jaclang/tests/fixtures/base_class_complex_expr.jac +3 -3
  156. jaclang/tests/fixtures/builtin_dotgen.jac +1 -1
  157. jaclang/tests/fixtures/builtin_dotgen_json.jac +21 -0
  158. jaclang/tests/fixtures/byllmissue.jac +1 -1
  159. jaclang/tests/fixtures/chandra_bugs.jac +1 -1
  160. jaclang/tests/fixtures/chandra_bugs2.jac +1 -1
  161. jaclang/tests/fixtures/cls_method.jac +6 -6
  162. jaclang/tests/fixtures/concurrency.jac +39 -0
  163. jaclang/tests/fixtures/connect_traverse_syntax.jac +18 -0
  164. jaclang/tests/fixtures/create_dynamic_archetype.jac +35 -0
  165. jaclang/tests/fixtures/decl_defn_param_name.jac +4 -4
  166. jaclang/tests/fixtures/deep/deeper/__init__.jac +1 -0
  167. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +2 -3
  168. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +3 -3
  169. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +2 -2
  170. jaclang/tests/fixtures/deep/mycode.jac +1 -1
  171. jaclang/tests/fixtures/deep/one_lev.jac +3 -4
  172. jaclang/tests/fixtures/deep/one_lev_dup.jac +2 -2
  173. jaclang/tests/fixtures/deep_convert.jac +1 -1
  174. jaclang/tests/fixtures/deep_import.jac +2 -2
  175. jaclang/tests/fixtures/deep_import_interp.jac +8 -0
  176. jaclang/tests/fixtures/deep_import_mods.jac +3 -3
  177. jaclang/tests/fixtures/deferred_field.jac +1 -1
  178. jaclang/tests/fixtures/del_clean.jac +7 -0
  179. jaclang/tests/fixtures/disconn.jac +3 -3
  180. jaclang/tests/fixtures/dynamic_archetype.jac +34 -0
  181. jaclang/tests/fixtures/edge_node_walk.jac +12 -12
  182. jaclang/tests/fixtures/edge_ops.jac +7 -7
  183. jaclang/tests/fixtures/edges_walk.jac +10 -10
  184. jaclang/tests/fixtures/edgetypeissue.jac +1 -1
  185. jaclang/tests/fixtures/enum_inside_archtype.jac +4 -4
  186. jaclang/tests/fixtures/err.impl.jac +1 -1
  187. jaclang/tests/fixtures/err.jac +2 -2
  188. jaclang/tests/fixtures/err_runtime.jac +2 -2
  189. jaclang/tests/fixtures/foo.jac +7 -7
  190. jaclang/tests/fixtures/game1.jac +4 -4
  191. jaclang/tests/fixtures/gendot_bubble_sort.jac +4 -4
  192. jaclang/tests/fixtures/glob_multivar_statement.jac +1 -1
  193. jaclang/tests/fixtures/guess_game.jac +5 -5
  194. jaclang/tests/fixtures/has_goodness.jac +1 -1
  195. jaclang/tests/fixtures/hash_init_check.jac +3 -3
  196. jaclang/tests/fixtures/hello.jac +1 -1
  197. jaclang/tests/fixtures/ignore.jac +3 -3
  198. jaclang/tests/fixtures/ignore_dup.jac +3 -3
  199. jaclang/tests/fixtures/impl_match_confused.impl.jac +1 -1
  200. jaclang/tests/fixtures/import.jac +9 -9
  201. jaclang/tests/fixtures/import_all.jac +1 -1
  202. jaclang/tests/fixtures/index_slice.jac +1 -1
  203. jaclang/tests/fixtures/inherit_check.jac +3 -3
  204. jaclang/tests/fixtures/jac_from_py.py +4 -0
  205. jaclang/tests/fixtures/jacsamp.jac +1 -1
  206. jaclang/tests/fixtures/jactest_main.jac +1 -1
  207. jaclang/tests/fixtures/jp_importer.jac +7 -8
  208. jaclang/tests/fixtures/jp_importer_auto.jac +3 -3
  209. jaclang/tests/fixtures/lambda.jac +2 -2
  210. jaclang/tests/fixtures/needs_import.jac +6 -6
  211. jaclang/tests/fixtures/needs_import_1.jac +1 -1
  212. jaclang/tests/fixtures/needs_import_2.jac +1 -1
  213. jaclang/tests/fixtures/needs_import_3.jac +1 -1
  214. jaclang/tests/fixtures/needs_import_dup.jac +6 -6
  215. jaclang/tests/fixtures/node_del.jac +60 -0
  216. jaclang/tests/fixtures/nosigself.jac +3 -3
  217. jaclang/tests/fixtures/py2jac.py +30 -0
  218. jaclang/tests/fixtures/py_bool_expr.py +7 -0
  219. jaclang/tests/fixtures/py_namedexpr.py +7 -0
  220. jaclang/tests/fixtures/pyfunc_3.py +0 -2
  221. jaclang/tests/fixtures/random_check.jac +5 -5
  222. jaclang/tests/fixtures/refs_target.jac +17 -0
  223. jaclang/tests/fixtures/simple_archs.jac +2 -2
  224. jaclang/tests/fixtures/simple_walk.jac +52 -0
  225. jaclang/tests/fixtures/slice_vals.jac +3 -3
  226. jaclang/tests/fixtures/sub_abil_sep.jac +3 -3
  227. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +3 -3
  228. jaclang/tests/fixtures/trailing_comma.jac +4 -4
  229. jaclang/tests/fixtures/type_info.jac +5 -5
  230. jaclang/{compiler/passes/main/tests → tests}/fixtures/uninitialized_hasvars.jac +1 -1
  231. jaclang/tests/fixtures/visit_order.jac +4 -4
  232. jaclang/tests/fixtures/walker_override.jac +2 -2
  233. jaclang/tests/fixtures/walker_update.jac +5 -5
  234. jaclang/tests/fixtures/with_context.jac +4 -4
  235. jaclang/tests/test_bugs.py +2 -2
  236. jaclang/tests/test_cli.py +118 -223
  237. jaclang/tests/test_language.py +474 -468
  238. jaclang/tests/test_man_code.py +2 -2
  239. jaclang/tests/test_reference.py +4 -4
  240. jaclang/tests/test_settings.py +16 -16
  241. jaclang/tests/test_typecheck.py +555 -0
  242. jaclang/utils/__init__.py +4 -0
  243. jaclang/utils/helpers.py +12 -27
  244. jaclang/utils/lang_tools.py +84 -74
  245. jaclang/utils/module_resolver.py +69 -0
  246. jaclang/utils/test.py +8 -5
  247. jaclang/utils/tests/test_lang_tools.py +38 -13
  248. jaclang/utils/treeprinter.py +177 -40
  249. jaclang/vendor/__init__.py +1 -2
  250. jaclang/vendor/attr/__init__.py +14 -44
  251. jaclang/vendor/attr/__init__.pyi +155 -321
  252. jaclang/vendor/attr/_cmp.py +25 -15
  253. jaclang/vendor/attr/_cmp.pyi +7 -7
  254. jaclang/vendor/attr/_compat.py +15 -8
  255. jaclang/vendor/attr/_config.py +1 -1
  256. jaclang/vendor/attr/_funcs.py +148 -163
  257. jaclang/vendor/attr/_make.py +859 -855
  258. jaclang/vendor/attr/_next_gen.py +426 -32
  259. jaclang/vendor/attr/converters.py +67 -49
  260. jaclang/vendor/attr/converters.pyi +13 -7
  261. jaclang/vendor/attr/filters.py +17 -11
  262. jaclang/vendor/attr/filters.pyi +3 -3
  263. jaclang/vendor/attr/setters.py +11 -5
  264. jaclang/vendor/attr/setters.pyi +2 -1
  265. jaclang/vendor/attr/validators.py +191 -162
  266. jaclang/vendor/attr/validators.pyi +25 -27
  267. jaclang/vendor/attrs/__init__.py +9 -5
  268. jaclang/vendor/attrs/__init__.pyi +225 -29
  269. jaclang/vendor/attrs-25.3.0.dist-info/INSTALLER +1 -0
  270. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/METADATA +83 -53
  271. jaclang/vendor/attrs-25.3.0.dist-info/RECORD +56 -0
  272. jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/WHEEL +1 -1
  273. jaclang/vendor/bin/dmypy +8 -0
  274. jaclang/vendor/bin/mypy +8 -0
  275. jaclang/vendor/bin/mypyc +8 -0
  276. jaclang/vendor/bin/stubgen +8 -0
  277. jaclang/vendor/bin/stubtest +8 -0
  278. jaclang/vendor/cattr/gen.py +2 -2
  279. jaclang/vendor/cattr/preconf/bson.py +1 -0
  280. jaclang/vendor/cattr/preconf/json.py +1 -0
  281. jaclang/vendor/cattr/preconf/msgpack.py +1 -0
  282. jaclang/vendor/cattr/preconf/orjson.py +1 -0
  283. jaclang/vendor/cattr/preconf/pyyaml.py +1 -0
  284. jaclang/vendor/cattr/preconf/tomlkit.py +1 -0
  285. jaclang/vendor/cattr/preconf/ujson.py +1 -0
  286. jaclang/vendor/cattrs/__init__.py +21 -21
  287. jaclang/vendor/cattrs/_compat.py +176 -62
  288. jaclang/vendor/cattrs/_generics.py +5 -3
  289. jaclang/vendor/cattrs/cols.py +289 -0
  290. jaclang/vendor/cattrs/converters.py +505 -187
  291. jaclang/vendor/cattrs/disambiguators.py +118 -45
  292. jaclang/vendor/cattrs/dispatch.py +66 -36
  293. jaclang/vendor/cattrs/fns.py +6 -1
  294. jaclang/vendor/cattrs/gen/__init__.py +365 -202
  295. jaclang/vendor/cattrs/gen/_generics.py +41 -5
  296. jaclang/vendor/cattrs/gen/_lc.py +3 -2
  297. jaclang/vendor/cattrs/gen/_shared.py +39 -32
  298. jaclang/vendor/cattrs/gen/typeddicts.py +75 -88
  299. jaclang/vendor/cattrs/preconf/__init__.py +20 -0
  300. jaclang/vendor/cattrs/preconf/bson.py +7 -8
  301. jaclang/vendor/cattrs/preconf/cbor2.py +3 -0
  302. jaclang/vendor/cattrs/preconf/json.py +8 -4
  303. jaclang/vendor/cattrs/preconf/msgpack.py +3 -0
  304. jaclang/vendor/cattrs/preconf/msgspec.py +185 -0
  305. jaclang/vendor/cattrs/preconf/orjson.py +20 -7
  306. jaclang/vendor/cattrs/preconf/pyyaml.py +15 -3
  307. jaclang/vendor/cattrs/preconf/tomlkit.py +3 -1
  308. jaclang/vendor/cattrs/preconf/ujson.py +3 -0
  309. jaclang/vendor/cattrs/strategies/__init__.py +1 -0
  310. jaclang/vendor/cattrs/strategies/_class_methods.py +1 -1
  311. jaclang/vendor/cattrs/strategies/_subclasses.py +43 -29
  312. jaclang/vendor/cattrs/strategies/_unions.py +47 -24
  313. jaclang/vendor/cattrs/v.py +1 -0
  314. jaclang/vendor/cattrs-24.1.3.dist-info/INSTALLER +1 -0
  315. jaclang/vendor/cattrs-24.1.3.dist-info/METADATA +161 -0
  316. jaclang/vendor/cattrs-24.1.3.dist-info/RECORD +96 -0
  317. jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/WHEEL +1 -1
  318. jaclang/vendor/lark/__init__.py +38 -38
  319. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -6
  320. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  321. jaclang/vendor/lark/ast_utils.py +59 -59
  322. jaclang/vendor/lark/common.py +86 -89
  323. jaclang/vendor/lark/exceptions.py +292 -292
  324. jaclang/vendor/lark/grammar.py +130 -130
  325. jaclang/vendor/lark/grammars/common.lark +59 -59
  326. jaclang/vendor/lark/grammars/lark.lark +62 -62
  327. jaclang/vendor/lark/grammars/python.lark +302 -302
  328. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  329. jaclang/vendor/lark/indenter.py +143 -112
  330. jaclang/vendor/lark/lark.py +658 -661
  331. jaclang/vendor/lark/lexer.py +678 -678
  332. jaclang/vendor/lark/load_grammar.py +1428 -1428
  333. jaclang/vendor/lark/parse_tree_builder.py +391 -391
  334. jaclang/vendor/lark/parser_frontends.py +257 -257
  335. jaclang/vendor/lark/parsers/cyk.py +340 -340
  336. jaclang/vendor/lark/parsers/earley.py +317 -308
  337. jaclang/vendor/lark/parsers/earley_common.py +42 -42
  338. jaclang/vendor/lark/parsers/earley_forest.py +802 -810
  339. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -203
  340. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -332
  341. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +158 -157
  342. jaclang/vendor/lark/parsers/lalr_parser.py +122 -122
  343. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -110
  344. jaclang/vendor/lark/parsers/xearley.py +165 -165
  345. jaclang/vendor/lark/reconstruct.py +107 -107
  346. jaclang/vendor/lark/tools/__init__.py +70 -71
  347. jaclang/vendor/lark/tools/nearley.py +202 -202
  348. jaclang/vendor/lark/tools/serialize.py +32 -32
  349. jaclang/vendor/lark/tools/standalone.py +196 -196
  350. jaclang/vendor/lark/tree.py +267 -272
  351. jaclang/vendor/lark/tree_matcher.py +186 -186
  352. jaclang/vendor/lark/utils.py +346 -361
  353. jaclang/vendor/lark/visitors.py +596 -593
  354. jaclang/vendor/lark-1.2.2.dist-info/INSTALLER +1 -0
  355. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/METADATA +48 -47
  356. jaclang/vendor/lark-1.2.2.dist-info/RECORD +83 -0
  357. jaclang/vendor/{mypy_extensions-1.0.0.dist-info → lark-1.2.2.dist-info}/WHEEL +1 -1
  358. jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info/licenses}/LICENSE +18 -18
  359. jaclang/vendor/lsprotocol-2023.0.1.dist-info/INSTALLER +1 -0
  360. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +2 -1
  361. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +17 -10
  362. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +1 -1
  363. jaclang/vendor/pluggy/_version.py +7 -2
  364. jaclang/vendor/pluggy-1.5.0.dist-info/INSTALLER +1 -0
  365. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +6 -5
  366. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +24 -14
  367. jaclang/vendor/pluggy-1.5.0.dist-info/WHEEL +1 -1
  368. jaclang/vendor/pygls-1.3.1.dist-info/INSTALLER +1 -0
  369. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +2 -2
  370. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +45 -24
  371. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +1 -1
  372. {jaclang-0.7.33.dist-info → jaclang-0.8.0.dist-info}/METADATA +4 -4
  373. jaclang-0.8.0.dist-info/RECORD +552 -0
  374. {jaclang-0.7.33.dist-info → jaclang-0.8.0.dist-info}/WHEEL +1 -1
  375. jaclang/compiler/.gitignore +0 -1
  376. jaclang/compiler/compile.py +0 -119
  377. jaclang/compiler/passes/main/access_modifier_pass.py +0 -130
  378. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +0 -656
  379. jaclang/compiler/passes/main/py_collect_dep_pass.py +0 -78
  380. jaclang/compiler/passes/main/pyout_pass.py +0 -86
  381. jaclang/compiler/passes/main/registry_pass.py +0 -156
  382. jaclang/compiler/passes/main/schedules.py +0 -47
  383. jaclang/compiler/passes/main/sub_node_tab_pass.py +0 -36
  384. jaclang/compiler/passes/main/tests/fixtures/registry.jac +0 -36
  385. jaclang/compiler/passes/main/tests/test_decl_def_match_pass.py +0 -114
  386. jaclang/compiler/passes/main/tests/test_registry_pass.py +0 -31
  387. jaclang/compiler/passes/main/tests/test_type_check_pass.py +0 -91
  388. jaclang/compiler/passes/main/tests/test_typeinfo_pass.py +0 -29
  389. jaclang/compiler/passes/main/type_check_pass.py +0 -128
  390. jaclang/compiler/passes/tool/schedules.py +0 -18
  391. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +0 -36
  392. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +0 -17
  393. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +0 -32
  394. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +0 -27
  395. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +0 -35
  396. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +0 -25
  397. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +0 -13
  398. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +0 -63
  399. jaclang/compiler/passes/tool/tests/fixtures/general_format_checks/architype_test.jac +0 -13
  400. jaclang/compiler/passes/utils/mypy_ast_build.py +0 -940
  401. jaclang/compiler/py_info.py +0 -22
  402. jaclang/compiler/semtable.py +0 -159
  403. jaclang/compiler/symtable.py +0 -297
  404. jaclang/langserve/utils.py +0 -458
  405. jaclang/plugin/__init__.py +0 -7
  406. jaclang/plugin/builtin.py +0 -57
  407. jaclang/plugin/default.py +0 -1443
  408. jaclang/plugin/feature.py +0 -574
  409. jaclang/plugin/plugin.md +0 -471
  410. jaclang/plugin/spec.py +0 -536
  411. jaclang/plugin/tests/fixtures/impl_match_impl.jac +0 -3
  412. jaclang/plugin/tests/test_features.py +0 -56
  413. jaclang/runtimelib/context.py +0 -191
  414. jaclang/tests/fixtures/create_dynamic_architype.jac +0 -35
  415. jaclang/tests/fixtures/dynamic_architype.jac +0 -34
  416. jaclang/tests/fixtures/impl_grab.impl.jac +0 -5
  417. jaclang/tests/fixtures/mtest.impl.jac +0 -6
  418. jaclang/tests/fixtures/registry.jac +0 -58
  419. jaclang/tests/fixtures/semstr.jac +0 -30
  420. jaclang/tests/main.jac +0 -2
  421. jaclang/utils/profiler.py +0 -62
  422. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +0 -35
  423. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +0 -221
  424. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +0 -48
  425. jaclang/vendor/lark-1.1.9.dist-info/RECORD +0 -46
  426. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +0 -5
  427. jaclang/vendor/mypy/__init__.py +0 -1
  428. jaclang/vendor/mypy/__main__.py +0 -37
  429. jaclang/vendor/mypy/api.py +0 -94
  430. jaclang/vendor/mypy/applytype.py +0 -172
  431. jaclang/vendor/mypy/argmap.py +0 -268
  432. jaclang/vendor/mypy/binder.py +0 -538
  433. jaclang/vendor/mypy/bogus_type.py +0 -27
  434. jaclang/vendor/mypy/build.py +0 -3562
  435. jaclang/vendor/mypy/checker.py +0 -8445
  436. jaclang/vendor/mypy/checkexpr.py +0 -6623
  437. jaclang/vendor/mypy/checkmember.py +0 -1363
  438. jaclang/vendor/mypy/checkpattern.py +0 -801
  439. jaclang/vendor/mypy/checkstrformat.py +0 -1109
  440. jaclang/vendor/mypy/config_parser.py +0 -670
  441. jaclang/vendor/mypy/constant_fold.py +0 -187
  442. jaclang/vendor/mypy/constraints.py +0 -1636
  443. jaclang/vendor/mypy/copytype.py +0 -133
  444. jaclang/vendor/mypy/defaults.py +0 -46
  445. jaclang/vendor/mypy/dmypy/__main__.py +0 -6
  446. jaclang/vendor/mypy/dmypy/client.py +0 -749
  447. jaclang/vendor/mypy/dmypy_os.py +0 -42
  448. jaclang/vendor/mypy/dmypy_server.py +0 -1107
  449. jaclang/vendor/mypy/dmypy_util.py +0 -117
  450. jaclang/vendor/mypy/erasetype.py +0 -278
  451. jaclang/vendor/mypy/errorcodes.py +0 -291
  452. jaclang/vendor/mypy/errors.py +0 -1280
  453. jaclang/vendor/mypy/evalexpr.py +0 -205
  454. jaclang/vendor/mypy/expandtype.py +0 -524
  455. jaclang/vendor/mypy/exprtotype.py +0 -209
  456. jaclang/vendor/mypy/fastparse.py +0 -2147
  457. jaclang/vendor/mypy/find_sources.py +0 -243
  458. jaclang/vendor/mypy/fixup.py +0 -428
  459. jaclang/vendor/mypy/freetree.py +0 -23
  460. jaclang/vendor/mypy/fscache.py +0 -309
  461. jaclang/vendor/mypy/fswatcher.py +0 -106
  462. jaclang/vendor/mypy/gclogger.py +0 -47
  463. jaclang/vendor/mypy/git.py +0 -34
  464. jaclang/vendor/mypy/graph_utils.py +0 -112
  465. jaclang/vendor/mypy/indirection.py +0 -121
  466. jaclang/vendor/mypy/infer.py +0 -75
  467. jaclang/vendor/mypy/inspections.py +0 -627
  468. jaclang/vendor/mypy/ipc.py +0 -310
  469. jaclang/vendor/mypy/join.py +0 -871
  470. jaclang/vendor/mypy/literals.py +0 -306
  471. jaclang/vendor/mypy/lookup.py +0 -61
  472. jaclang/vendor/mypy/main.py +0 -1574
  473. jaclang/vendor/mypy/maptype.py +0 -106
  474. jaclang/vendor/mypy/meet.py +0 -1140
  475. jaclang/vendor/mypy/memprofile.py +0 -121
  476. jaclang/vendor/mypy/message_registry.py +0 -329
  477. jaclang/vendor/mypy/messages.py +0 -3186
  478. jaclang/vendor/mypy/metastore.py +0 -225
  479. jaclang/vendor/mypy/mixedtraverser.py +0 -112
  480. jaclang/vendor/mypy/modulefinder.py +0 -875
  481. jaclang/vendor/mypy/moduleinspect.py +0 -184
  482. jaclang/vendor/mypy/mro.py +0 -62
  483. jaclang/vendor/mypy/nodes.py +0 -4115
  484. jaclang/vendor/mypy/operators.py +0 -126
  485. jaclang/vendor/mypy/options.py +0 -556
  486. jaclang/vendor/mypy/parse.py +0 -30
  487. jaclang/vendor/mypy/partially_defined.py +0 -675
  488. jaclang/vendor/mypy/patterns.py +0 -150
  489. jaclang/vendor/mypy/plugin.py +0 -901
  490. jaclang/vendor/mypy/plugins/attrs.py +0 -1166
  491. jaclang/vendor/mypy/plugins/common.py +0 -440
  492. jaclang/vendor/mypy/plugins/ctypes.py +0 -245
  493. jaclang/vendor/mypy/plugins/dataclasses.py +0 -1108
  494. jaclang/vendor/mypy/plugins/default.py +0 -531
  495. jaclang/vendor/mypy/plugins/enums.py +0 -259
  496. jaclang/vendor/mypy/plugins/functools.py +0 -104
  497. jaclang/vendor/mypy/plugins/proper_plugin.py +0 -175
  498. jaclang/vendor/mypy/plugins/singledispatch.py +0 -224
  499. jaclang/vendor/mypy/py.typed +0 -1
  500. jaclang/vendor/mypy/pyinfo.py +0 -78
  501. jaclang/vendor/mypy/reachability.py +0 -362
  502. jaclang/vendor/mypy/refinfo.py +0 -92
  503. jaclang/vendor/mypy/renaming.py +0 -568
  504. jaclang/vendor/mypy/report.py +0 -924
  505. jaclang/vendor/mypy/scope.py +0 -125
  506. jaclang/vendor/mypy/semanal.py +0 -7187
  507. jaclang/vendor/mypy/semanal_classprop.py +0 -187
  508. jaclang/vendor/mypy/semanal_enum.py +0 -253
  509. jaclang/vendor/mypy/semanal_infer.py +0 -128
  510. jaclang/vendor/mypy/semanal_main.py +0 -511
  511. jaclang/vendor/mypy/semanal_namedtuple.py +0 -670
  512. jaclang/vendor/mypy/semanal_newtype.py +0 -273
  513. jaclang/vendor/mypy/semanal_pass1.py +0 -156
  514. jaclang/vendor/mypy/semanal_shared.py +0 -490
  515. jaclang/vendor/mypy/semanal_typeargs.py +0 -265
  516. jaclang/vendor/mypy/semanal_typeddict.py +0 -575
  517. jaclang/vendor/mypy/server/astdiff.py +0 -518
  518. jaclang/vendor/mypy/server/astmerge.py +0 -562
  519. jaclang/vendor/mypy/server/aststrip.py +0 -281
  520. jaclang/vendor/mypy/server/deps.py +0 -1137
  521. jaclang/vendor/mypy/server/mergecheck.py +0 -83
  522. jaclang/vendor/mypy/server/objgraph.py +0 -101
  523. jaclang/vendor/mypy/server/subexpr.py +0 -198
  524. jaclang/vendor/mypy/server/target.py +0 -11
  525. jaclang/vendor/mypy/server/trigger.py +0 -26
  526. jaclang/vendor/mypy/server/update.py +0 -1339
  527. jaclang/vendor/mypy/sharedparse.py +0 -112
  528. jaclang/vendor/mypy/solve.py +0 -562
  529. jaclang/vendor/mypy/split_namespace.py +0 -35
  530. jaclang/vendor/mypy/state.py +0 -28
  531. jaclang/vendor/mypy/stats.py +0 -489
  532. jaclang/vendor/mypy/strconv.py +0 -641
  533. jaclang/vendor/mypy/stubdoc.py +0 -491
  534. jaclang/vendor/mypy/stubgen.py +0 -1886
  535. jaclang/vendor/mypy/stubgenc.py +0 -993
  536. jaclang/vendor/mypy/stubinfo.py +0 -173
  537. jaclang/vendor/mypy/stubtest.py +0 -2079
  538. jaclang/vendor/mypy/stubutil.py +0 -834
  539. jaclang/vendor/mypy/subtypes.py +0 -1980
  540. jaclang/vendor/mypy/suggestions.py +0 -1046
  541. jaclang/vendor/mypy/test/config.py +0 -28
  542. jaclang/vendor/mypy/test/data.py +0 -821
  543. jaclang/vendor/mypy/test/helpers.py +0 -476
  544. jaclang/vendor/mypy/test/meta/_pytest.py +0 -72
  545. jaclang/vendor/mypy/test/meta/test_diff_helper.py +0 -47
  546. jaclang/vendor/mypy/test/meta/test_parse_data.py +0 -73
  547. jaclang/vendor/mypy/test/meta/test_update_data.py +0 -135
  548. jaclang/vendor/mypy/test/test_find_sources.py +0 -376
  549. jaclang/vendor/mypy/test/test_ref_info.py +0 -45
  550. jaclang/vendor/mypy/test/testapi.py +0 -45
  551. jaclang/vendor/mypy/test/testargs.py +0 -77
  552. jaclang/vendor/mypy/test/testcheck.py +0 -322
  553. jaclang/vendor/mypy/test/testcmdline.py +0 -152
  554. jaclang/vendor/mypy/test/testconstraints.py +0 -134
  555. jaclang/vendor/mypy/test/testdaemon.py +0 -132
  556. jaclang/vendor/mypy/test/testdeps.py +0 -77
  557. jaclang/vendor/mypy/test/testdiff.py +0 -67
  558. jaclang/vendor/mypy/test/testerrorstream.py +0 -46
  559. jaclang/vendor/mypy/test/testfinegrained.py +0 -438
  560. jaclang/vendor/mypy/test/testfinegrainedcache.py +0 -18
  561. jaclang/vendor/mypy/test/testformatter.py +0 -85
  562. jaclang/vendor/mypy/test/testfscache.py +0 -101
  563. jaclang/vendor/mypy/test/testgraph.py +0 -83
  564. jaclang/vendor/mypy/test/testinfer.py +0 -373
  565. jaclang/vendor/mypy/test/testipc.py +0 -119
  566. jaclang/vendor/mypy/test/testmerge.py +0 -238
  567. jaclang/vendor/mypy/test/testmodulefinder.py +0 -278
  568. jaclang/vendor/mypy/test/testmypyc.py +0 -14
  569. jaclang/vendor/mypy/test/testparse.py +0 -107
  570. jaclang/vendor/mypy/test/testpep561.py +0 -211
  571. jaclang/vendor/mypy/test/testpythoneval.py +0 -117
  572. jaclang/vendor/mypy/test/testreports.py +0 -55
  573. jaclang/vendor/mypy/test/testsemanal.py +0 -209
  574. jaclang/vendor/mypy/test/testsolve.py +0 -285
  575. jaclang/vendor/mypy/test/teststubgen.py +0 -1412
  576. jaclang/vendor/mypy/test/teststubinfo.py +0 -12
  577. jaclang/vendor/mypy/test/teststubtest.py +0 -2492
  578. jaclang/vendor/mypy/test/testsubtypes.py +0 -303
  579. jaclang/vendor/mypy/test/testtransform.py +0 -64
  580. jaclang/vendor/mypy/test/testtypegen.py +0 -83
  581. jaclang/vendor/mypy/test/testtypes.py +0 -1551
  582. jaclang/vendor/mypy/test/testutil.py +0 -111
  583. jaclang/vendor/mypy/test/typefixture.py +0 -415
  584. jaclang/vendor/mypy/test/update_data.py +0 -87
  585. jaclang/vendor/mypy/test/visitors.py +0 -63
  586. jaclang/vendor/mypy/traverser.py +0 -961
  587. jaclang/vendor/mypy/treetransform.py +0 -800
  588. jaclang/vendor/mypy/tvar_scope.py +0 -169
  589. jaclang/vendor/mypy/type_visitor.py +0 -564
  590. jaclang/vendor/mypy/typeanal.py +0 -2596
  591. jaclang/vendor/mypy/typeops.py +0 -1082
  592. jaclang/vendor/mypy/types.py +0 -3708
  593. jaclang/vendor/mypy/types_utils.py +0 -166
  594. jaclang/vendor/mypy/typeshed/LICENSE +0 -237
  595. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +0 -309
  596. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +0 -36
  597. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +0 -3
  598. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +0 -591
  599. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +0 -84
  600. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +0 -1
  601. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +0 -133
  602. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +0 -94
  603. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +0 -8
  604. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +0 -25
  605. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +0 -90
  606. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +0 -207
  607. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +0 -566
  608. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +0 -281
  609. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +0 -33
  610. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +0 -164
  611. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +0 -11
  612. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +0 -28
  613. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +0 -49
  614. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +0 -100
  615. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +0 -35
  616. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +0 -16
  617. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +0 -92
  618. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +0 -147
  619. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +0 -34
  620. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +0 -33
  621. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +0 -14
  622. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +0 -43
  623. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +0 -12
  624. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +0 -16
  625. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +0 -803
  626. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +0 -103
  627. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +0 -59
  628. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +0 -17
  629. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +0 -121
  630. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +0 -17
  631. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +0 -347
  632. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +0 -37
  633. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +0 -44
  634. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +0 -9
  635. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +0 -55
  636. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +0 -41
  637. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +0 -51
  638. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +0 -255
  639. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +0 -51
  640. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +0 -91
  641. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +0 -3
  642. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +0 -595
  643. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +0 -92
  644. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +0 -277
  645. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +0 -21
  646. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +0 -41
  647. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +0 -440
  648. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +0 -19
  649. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +0 -63
  650. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +0 -9
  651. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +0 -20
  652. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +0 -26
  653. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +0 -580
  654. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +0 -43
  655. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +0 -20
  656. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +0 -57
  657. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +0 -121
  658. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +0 -3
  659. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +0 -9
  660. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +0 -64
  661. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +0 -34
  662. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +0 -47
  663. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +0 -32
  664. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +0 -8
  665. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +0 -165
  666. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +0 -10
  667. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +0 -153
  668. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +0 -229
  669. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +0 -25
  670. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +0 -497
  671. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +0 -9
  672. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +0 -19
  673. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +0 -47
  674. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +0 -94
  675. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +0 -196
  676. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +0 -85
  677. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +0 -49
  678. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +0 -90
  679. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +0 -12
  680. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +0 -43
  681. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +0 -59
  682. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +0 -102
  683. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +0 -36
  684. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +0 -45
  685. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +0 -4
  686. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +0 -1936
  687. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +0 -146
  688. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +0 -31
  689. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +0 -208
  690. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +0 -118
  691. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +0 -32
  692. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +0 -20
  693. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +0 -36
  694. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +0 -45
  695. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +0 -33
  696. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +0 -285
  697. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +0 -13
  698. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +0 -485
  699. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +0 -2
  700. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +0 -13
  701. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +0 -111
  702. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +0 -32
  703. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +0 -126
  704. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +0 -233
  705. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +0 -80
  706. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +0 -313
  707. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +0 -208
  708. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +0 -63
  709. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +0 -16
  710. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +0 -21
  711. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +0 -12
  712. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +0 -147
  713. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +0 -187
  714. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +0 -19
  715. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +0 -6
  716. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +0 -298
  717. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +0 -22
  718. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +0 -62
  719. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +0 -1
  720. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +0 -22
  721. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +0 -11
  722. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +0 -315
  723. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +0 -295
  724. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +0 -95
  725. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +0 -31
  726. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +0 -41
  727. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +0 -37
  728. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +0 -2
  729. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +0 -140
  730. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +0 -144
  731. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +0 -5
  732. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +0 -20
  733. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +0 -3
  734. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +0 -152
  735. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +0 -66
  736. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +0 -25
  737. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +0 -21
  738. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +0 -45
  739. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +0 -52
  740. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +0 -16
  741. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +0 -31
  742. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +0 -27
  743. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +0 -50
  744. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +0 -44
  745. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +0 -24
  746. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +0 -39
  747. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +0 -17
  748. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +0 -83
  749. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +0 -63
  750. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +0 -19
  751. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +0 -18
  752. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +0 -16
  753. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +0 -25
  754. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +0 -18
  755. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +0 -18
  756. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +0 -42
  757. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +0 -17
  758. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +0 -17
  759. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +0 -57
  760. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +0 -20
  761. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +0 -1
  762. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +0 -3
  763. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +0 -13
  764. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +0 -146
  765. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +0 -19
  766. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +0 -36
  767. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +0 -34
  768. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +0 -14
  769. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +0 -50
  770. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +0 -25
  771. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +0 -3
  772. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +0 -2
  773. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +0 -31
  774. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +0 -21
  775. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +0 -3
  776. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +0 -46
  777. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +0 -36
  778. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +0 -248
  779. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +0 -2
  780. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +0 -29
  781. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +0 -392
  782. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +0 -51
  783. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +0 -13
  784. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +0 -34
  785. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +0 -11
  786. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +0 -8
  787. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +0 -39
  788. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +0 -23
  789. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +0 -40
  790. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +0 -31
  791. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +0 -178
  792. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +0 -12
  793. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +0 -165
  794. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +0 -17
  795. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +0 -17
  796. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +0 -8
  797. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +0 -17
  798. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +0 -8
  799. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +0 -18
  800. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +0 -5
  801. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +0 -9
  802. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +0 -26
  803. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +0 -38
  804. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +0 -28
  805. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +0 -70
  806. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +0 -10
  807. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +0 -21
  808. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +0 -22
  809. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +0 -12
  810. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +0 -320
  811. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +0 -222
  812. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +0 -13
  813. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +0 -127
  814. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +0 -57
  815. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +0 -213
  816. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +0 -9
  817. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +0 -88
  818. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +0 -150
  819. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +0 -178
  820. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +0 -213
  821. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +0 -37
  822. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +0 -52
  823. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +0 -11
  824. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +0 -8
  825. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +0 -169
  826. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +0 -42
  827. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +0 -28
  828. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +0 -22
  829. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +0 -160
  830. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +0 -167
  831. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +0 -17
  832. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +0 -38
  833. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +0 -6
  834. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +0 -6
  835. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +0 -34
  836. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +0 -105
  837. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +0 -259
  838. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +0 -159
  839. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +0 -60
  840. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +0 -83
  841. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +0 -168
  842. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +0 -17
  843. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +0 -62
  844. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +0 -24
  845. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +0 -15
  846. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +0 -172
  847. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +0 -179
  848. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +0 -285
  849. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +0 -49
  850. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +0 -68
  851. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +0 -46
  852. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +0 -12
  853. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +0 -14
  854. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +0 -56
  855. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +0 -11
  856. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +0 -43
  857. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +0 -632
  858. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +0 -238
  859. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +0 -208
  860. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +0 -273
  861. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +0 -61
  862. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +0 -32
  863. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +0 -40
  864. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +0 -1
  865. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +0 -21
  866. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +0 -28
  867. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +0 -42
  868. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +0 -8
  869. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +0 -10
  870. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +0 -8
  871. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +0 -8
  872. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +0 -16
  873. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +0 -14
  874. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +0 -8
  875. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +0 -8
  876. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +0 -13
  877. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +0 -9
  878. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +0 -8
  879. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +0 -8
  880. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +0 -8
  881. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +0 -8
  882. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +0 -15
  883. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +0 -16
  884. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +0 -21
  885. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +0 -6
  886. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +0 -11
  887. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +0 -9
  888. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +0 -8
  889. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +0 -9
  890. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +0 -7
  891. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +0 -7
  892. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +0 -9
  893. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +0 -17
  894. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +0 -10
  895. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +0 -8
  896. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +0 -19
  897. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +0 -8
  898. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +0 -8
  899. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +0 -12
  900. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +0 -8
  901. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +0 -12
  902. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +0 -8
  903. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +0 -8
  904. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +0 -8
  905. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +0 -9
  906. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +0 -17
  907. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +0 -8
  908. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +0 -7
  909. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +0 -8
  910. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +0 -9
  911. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +0 -8
  912. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +0 -17
  913. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +0 -8
  914. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +0 -12
  915. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +0 -15
  916. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +0 -12
  917. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +0 -20
  918. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +0 -8
  919. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +0 -9
  920. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +0 -42
  921. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +0 -9
  922. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +0 -27
  923. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +0 -24
  924. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +0 -7
  925. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +0 -30
  926. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +0 -50
  927. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +0 -67
  928. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +0 -96
  929. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +0 -114
  930. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +0 -117
  931. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +0 -82
  932. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +0 -23
  933. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +0 -152
  934. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +0 -658
  935. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +0 -134
  936. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +0 -275
  937. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +0 -197
  938. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +0 -256
  939. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +0 -11
  940. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +0 -33
  941. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +0 -125
  942. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +0 -46
  943. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +0 -113
  944. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +0 -66
  945. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +0 -177
  946. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +0 -94
  947. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +0 -13
  948. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +0 -7
  949. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +0 -32
  950. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +0 -90
  951. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +0 -75
  952. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +0 -189
  953. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +0 -77
  954. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +0 -39
  955. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +0 -31
  956. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +0 -36
  957. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +0 -212
  958. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +0 -103
  959. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +0 -23
  960. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +0 -16
  961. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +0 -20
  962. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +0 -30
  963. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +0 -39
  964. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +0 -41
  965. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +0 -90
  966. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +0 -20
  967. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +0 -18
  968. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +0 -40
  969. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +0 -107
  970. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +0 -32
  971. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +0 -54
  972. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +0 -98
  973. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +0 -23
  974. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +0 -9
  975. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +0 -125
  976. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +0 -111
  977. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +0 -119
  978. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +0 -2
  979. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +0 -209
  980. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +0 -59
  981. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +0 -110
  982. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +0 -255
  983. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +0 -1157
  984. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +0 -8
  985. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +0 -131
  986. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +0 -24
  987. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +0 -232
  988. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +0 -181
  989. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +0 -271
  990. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +0 -167
  991. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +0 -16
  992. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +0 -53
  993. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +0 -42
  994. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +0 -113
  995. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +0 -71
  996. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +0 -361
  997. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +0 -161
  998. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +0 -112
  999. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +0 -31
  1000. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +0 -80
  1001. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +0 -19
  1002. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +0 -28
  1003. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +0 -34
  1004. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +0 -74
  1005. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +0 -261
  1006. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  1007. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +0 -1
  1008. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +0 -85
  1009. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +0 -49
  1010. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +0 -11
  1011. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +0 -66
  1012. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +0 -11
  1013. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +0 -138
  1014. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +0 -290
  1015. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +0 -36
  1016. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +0 -65
  1017. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +0 -94
  1018. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +0 -9
  1019. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +0 -24
  1020. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +0 -42
  1021. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +0 -15
  1022. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +0 -155
  1023. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +0 -67
  1024. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +0 -46
  1025. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +0 -63
  1026. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +0 -185
  1027. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +0 -188
  1028. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +0 -27
  1029. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +0 -91
  1030. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +0 -204
  1031. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +0 -14
  1032. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +0 -825
  1033. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +0 -168
  1034. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +0 -41
  1035. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +0 -1
  1036. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +0 -551
  1037. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +0 -11
  1038. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +0 -130
  1039. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +0 -104
  1040. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +0 -537
  1041. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +0 -1
  1042. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +0 -132
  1043. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +0 -83
  1044. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +0 -27
  1045. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +0 -26
  1046. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +0 -2615
  1047. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +0 -86
  1048. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +0 -93
  1049. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +0 -58
  1050. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +0 -373
  1051. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +0 -52
  1052. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +0 -48
  1053. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +0 -46
  1054. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +0 -16
  1055. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +0 -441
  1056. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +0 -122
  1057. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +0 -477
  1058. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +0 -267
  1059. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +0 -103
  1060. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +0 -2
  1061. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +0 -187
  1062. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +0 -108
  1063. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +0 -32
  1064. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +0 -3654
  1065. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +0 -20
  1066. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +0 -14
  1067. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +0 -80
  1068. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +0 -16
  1069. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +0 -20
  1070. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +0 -151
  1071. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +0 -116
  1072. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +0 -44
  1073. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +0 -9
  1074. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +0 -54
  1075. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +0 -299
  1076. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +0 -1204
  1077. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +0 -159
  1078. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +0 -177
  1079. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +0 -10
  1080. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +0 -79
  1081. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +0 -262
  1082. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +0 -124
  1083. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +0 -30
  1084. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +0 -713
  1085. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +0 -614
  1086. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +0 -976
  1087. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +0 -509
  1088. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +0 -73
  1089. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +0 -67
  1090. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +0 -27
  1091. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +0 -21
  1092. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +0 -342
  1093. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +0 -51
  1094. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +0 -69
  1095. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +0 -430
  1096. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +0 -47
  1097. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +0 -72
  1098. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +0 -15
  1099. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +0 -22
  1100. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +0 -23
  1101. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  1102. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +0 -23
  1103. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +0 -210
  1104. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +0 -400
  1105. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +0 -43
  1106. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +0 -20
  1107. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +0 -13
  1108. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +0 -100
  1109. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +0 -112
  1110. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +0 -85
  1111. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +0 -149
  1112. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +0 -74
  1113. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +0 -132
  1114. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +0 -28
  1115. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  1116. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +0 -91
  1117. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +0 -26
  1118. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +0 -37
  1119. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +0 -32
  1120. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +0 -24
  1121. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +0 -50
  1122. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +0 -57
  1123. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +0 -1
  1124. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +0 -19
  1125. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +0 -69
  1126. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +0 -8
  1127. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +0 -100
  1128. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +0 -22
  1129. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +0 -404
  1130. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +0 -94
  1131. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +0 -108
  1132. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +0 -28
  1133. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +0 -34
  1134. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +0 -327
  1135. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  1136. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +0 -1
  1137. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +0 -1
  1138. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +0 -1
  1139. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +0 -1
  1140. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +0 -1
  1141. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +0 -25
  1142. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +0 -19
  1143. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +0 -55
  1144. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +0 -60
  1145. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +0 -87
  1146. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1147. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +0 -296
  1148. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +0 -143
  1149. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +0 -22
  1150. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +0 -20
  1151. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +0 -306
  1152. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +0 -95
  1153. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +0 -32
  1154. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +0 -56
  1155. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +0 -38
  1156. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +0 -218
  1157. jaclang/vendor/mypy/typestate.py +0 -323
  1158. jaclang/vendor/mypy/typetraverser.py +0 -148
  1159. jaclang/vendor/mypy/typevars.py +0 -93
  1160. jaclang/vendor/mypy/typevartuples.py +0 -32
  1161. jaclang/vendor/mypy/util.py +0 -869
  1162. jaclang/vendor/mypy/version.py +0 -1
  1163. jaclang/vendor/mypy/visitor.py +0 -621
  1164. jaclang/vendor/mypy/xml/mypy-html.css +0 -104
  1165. jaclang/vendor/mypy/xml/mypy-html.xslt +0 -81
  1166. jaclang/vendor/mypy/xml/mypy-txt.xslt +0 -100
  1167. jaclang/vendor/mypy/xml/mypy.xsd +0 -50
  1168. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +0 -229
  1169. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +0 -48
  1170. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +0 -1241
  1171. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +0 -6
  1172. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +0 -6
  1173. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +0 -3
  1174. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +0 -27
  1175. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +0 -29
  1176. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +0 -6
  1177. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +0 -1
  1178. jaclang/vendor/mypy_extensions.py +0 -213
  1179. jaclang/vendor/mypyc/README.md +0 -133
  1180. jaclang/vendor/mypyc/__init__.py +0 -0
  1181. jaclang/vendor/mypyc/__main__.py +0 -57
  1182. jaclang/vendor/mypyc/analysis/__init__.py +0 -0
  1183. jaclang/vendor/mypyc/analysis/attrdefined.py +0 -436
  1184. jaclang/vendor/mypyc/analysis/blockfreq.py +0 -32
  1185. jaclang/vendor/mypyc/analysis/dataflow.py +0 -628
  1186. jaclang/vendor/mypyc/analysis/ircheck.py +0 -433
  1187. jaclang/vendor/mypyc/analysis/selfleaks.py +0 -211
  1188. jaclang/vendor/mypyc/build.py +0 -616
  1189. jaclang/vendor/mypyc/codegen/__init__.py +0 -0
  1190. jaclang/vendor/mypyc/codegen/cstring.py +0 -54
  1191. jaclang/vendor/mypyc/codegen/emit.py +0 -1193
  1192. jaclang/vendor/mypyc/codegen/emitclass.py +0 -1060
  1193. jaclang/vendor/mypyc/codegen/emitfunc.py +0 -852
  1194. jaclang/vendor/mypyc/codegen/emitmodule.py +0 -1136
  1195. jaclang/vendor/mypyc/codegen/emitwrapper.py +0 -979
  1196. jaclang/vendor/mypyc/codegen/literals.py +0 -302
  1197. jaclang/vendor/mypyc/common.py +0 -136
  1198. jaclang/vendor/mypyc/crash.py +0 -31
  1199. jaclang/vendor/mypyc/doc/Makefile +0 -20
  1200. jaclang/vendor/mypyc/doc/bool_operations.rst +0 -27
  1201. jaclang/vendor/mypyc/doc/compilation_units.rst +0 -20
  1202. jaclang/vendor/mypyc/doc/conf.py +0 -59
  1203. jaclang/vendor/mypyc/doc/cpython-timings.md +0 -25
  1204. jaclang/vendor/mypyc/doc/dev-intro.md +0 -548
  1205. jaclang/vendor/mypyc/doc/dict_operations.rst +0 -59
  1206. jaclang/vendor/mypyc/doc/differences_from_python.rst +0 -332
  1207. jaclang/vendor/mypyc/doc/float_operations.rst +0 -50
  1208. jaclang/vendor/mypyc/doc/future.md +0 -42
  1209. jaclang/vendor/mypyc/doc/getting_started.rst +0 -240
  1210. jaclang/vendor/mypyc/doc/index.rst +0 -61
  1211. jaclang/vendor/mypyc/doc/int_operations.rst +0 -162
  1212. jaclang/vendor/mypyc/doc/introduction.rst +0 -150
  1213. jaclang/vendor/mypyc/doc/list_operations.rst +0 -65
  1214. jaclang/vendor/mypyc/doc/make.bat +0 -35
  1215. jaclang/vendor/mypyc/doc/native_classes.rst +0 -206
  1216. jaclang/vendor/mypyc/doc/native_operations.rst +0 -55
  1217. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +0 -244
  1218. jaclang/vendor/mypyc/doc/set_operations.rst +0 -47
  1219. jaclang/vendor/mypyc/doc/str_operations.rst +0 -35
  1220. jaclang/vendor/mypyc/doc/tuple_operations.rst +0 -33
  1221. jaclang/vendor/mypyc/doc/using_type_annotations.rst +0 -398
  1222. jaclang/vendor/mypyc/errors.py +0 -29
  1223. jaclang/vendor/mypyc/external/googletest/LICENSE +0 -28
  1224. jaclang/vendor/mypyc/external/googletest/README.md +0 -280
  1225. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +0 -294
  1226. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +0 -250
  1227. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +0 -1444
  1228. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +0 -510
  1229. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +0 -993
  1230. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +0 -232
  1231. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +0 -179
  1232. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +0 -263
  1233. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +0 -2236
  1234. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +0 -358
  1235. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +0 -58
  1236. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +0 -69
  1237. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +0 -42
  1238. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +0 -41
  1239. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +0 -319
  1240. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +0 -206
  1241. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +0 -1238
  1242. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +0 -243
  1243. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +0 -5146
  1244. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +0 -286
  1245. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +0 -731
  1246. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +0 -93
  1247. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +0 -2560
  1248. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +0 -167
  1249. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +0 -1020
  1250. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +0 -347
  1251. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +0 -3331
  1252. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +0 -297
  1253. jaclang/vendor/mypyc/external/googletest/make/Makefile +0 -61
  1254. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +0 -48
  1255. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +0 -1342
  1256. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +0 -387
  1257. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +0 -1183
  1258. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +0 -1259
  1259. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +0 -373
  1260. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +0 -110
  1261. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +0 -118
  1262. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +0 -5388
  1263. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +0 -38
  1264. jaclang/vendor/mypyc/ir/__init__.py +0 -0
  1265. jaclang/vendor/mypyc/ir/class_ir.py +0 -499
  1266. jaclang/vendor/mypyc/ir/func_ir.py +0 -370
  1267. jaclang/vendor/mypyc/ir/module_ir.py +0 -88
  1268. jaclang/vendor/mypyc/ir/ops.py +0 -1727
  1269. jaclang/vendor/mypyc/ir/pprint.py +0 -516
  1270. jaclang/vendor/mypyc/ir/rtypes.py +0 -1038
  1271. jaclang/vendor/mypyc/irbuild/__init__.py +0 -0
  1272. jaclang/vendor/mypyc/irbuild/ast_helpers.py +0 -123
  1273. jaclang/vendor/mypyc/irbuild/builder.py +0 -1394
  1274. jaclang/vendor/mypyc/irbuild/callable_class.py +0 -173
  1275. jaclang/vendor/mypyc/irbuild/classdef.py +0 -850
  1276. jaclang/vendor/mypyc/irbuild/constant_fold.py +0 -95
  1277. jaclang/vendor/mypyc/irbuild/context.py +0 -186
  1278. jaclang/vendor/mypyc/irbuild/env_class.py +0 -223
  1279. jaclang/vendor/mypyc/irbuild/expression.py +0 -1070
  1280. jaclang/vendor/mypyc/irbuild/for_helpers.py +0 -1075
  1281. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +0 -250
  1282. jaclang/vendor/mypyc/irbuild/function.py +0 -1088
  1283. jaclang/vendor/mypyc/irbuild/generator.py +0 -346
  1284. jaclang/vendor/mypyc/irbuild/ll_builder.py +0 -2389
  1285. jaclang/vendor/mypyc/irbuild/main.py +0 -153
  1286. jaclang/vendor/mypyc/irbuild/mapper.py +0 -221
  1287. jaclang/vendor/mypyc/irbuild/match.py +0 -355
  1288. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +0 -197
  1289. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +0 -203
  1290. jaclang/vendor/mypyc/irbuild/prepare.py +0 -609
  1291. jaclang/vendor/mypyc/irbuild/specialize.py +0 -822
  1292. jaclang/vendor/mypyc/irbuild/statement.py +0 -1017
  1293. jaclang/vendor/mypyc/irbuild/targets.py +0 -57
  1294. jaclang/vendor/mypyc/irbuild/util.py +0 -189
  1295. jaclang/vendor/mypyc/irbuild/visitor.py +0 -401
  1296. jaclang/vendor/mypyc/irbuild/vtable.py +0 -82
  1297. jaclang/vendor/mypyc/lib-rt/CPy.h +0 -638
  1298. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +0 -143
  1299. jaclang/vendor/mypyc/lib-rt/dict_ops.c +0 -446
  1300. jaclang/vendor/mypyc/lib-rt/exc_ops.c +0 -259
  1301. jaclang/vendor/mypyc/lib-rt/float_ops.c +0 -192
  1302. jaclang/vendor/mypyc/lib-rt/generic_ops.c +0 -64
  1303. jaclang/vendor/mypyc/lib-rt/getargs.c +0 -450
  1304. jaclang/vendor/mypyc/lib-rt/getargsfast.c +0 -569
  1305. jaclang/vendor/mypyc/lib-rt/init.c +0 -13
  1306. jaclang/vendor/mypyc/lib-rt/int_ops.c +0 -803
  1307. jaclang/vendor/mypyc/lib-rt/list_ops.c +0 -335
  1308. jaclang/vendor/mypyc/lib-rt/misc_ops.c +0 -942
  1309. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +0 -18
  1310. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +0 -118
  1311. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +0 -497
  1312. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +0 -533
  1313. jaclang/vendor/mypyc/lib-rt/set_ops.c +0 -17
  1314. jaclang/vendor/mypyc/lib-rt/setup.py +0 -70
  1315. jaclang/vendor/mypyc/lib-rt/str_ops.c +0 -241
  1316. jaclang/vendor/mypyc/lib-rt/test_capi.cc +0 -585
  1317. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +0 -61
  1318. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1319. jaclang/vendor/mypyc/lower/int_ops.py +0 -113
  1320. jaclang/vendor/mypyc/lower/list_ops.py +0 -45
  1321. jaclang/vendor/mypyc/lower/misc_ops.py +0 -12
  1322. jaclang/vendor/mypyc/lower/registry.py +0 -26
  1323. jaclang/vendor/mypyc/namegen.py +0 -115
  1324. jaclang/vendor/mypyc/options.py +0 -32
  1325. jaclang/vendor/mypyc/primitives/__init__.py +0 -0
  1326. jaclang/vendor/mypyc/primitives/bytes_ops.py +0 -101
  1327. jaclang/vendor/mypyc/primitives/dict_ops.py +0 -325
  1328. jaclang/vendor/mypyc/primitives/exc_ops.py +0 -101
  1329. jaclang/vendor/mypyc/primitives/float_ops.py +0 -168
  1330. jaclang/vendor/mypyc/primitives/generic_ops.py +0 -384
  1331. jaclang/vendor/mypyc/primitives/int_ops.py +0 -303
  1332. jaclang/vendor/mypyc/primitives/list_ops.py +0 -310
  1333. jaclang/vendor/mypyc/primitives/misc_ops.py +0 -267
  1334. jaclang/vendor/mypyc/primitives/registry.py +0 -360
  1335. jaclang/vendor/mypyc/primitives/set_ops.py +0 -121
  1336. jaclang/vendor/mypyc/primitives/str_ops.py +0 -229
  1337. jaclang/vendor/mypyc/primitives/tuple_ops.py +0 -83
  1338. jaclang/vendor/mypyc/rt_subtype.py +0 -77
  1339. jaclang/vendor/mypyc/sametype.py +0 -83
  1340. jaclang/vendor/mypyc/subtype.py +0 -88
  1341. jaclang/vendor/mypyc/test/__init__.py +0 -0
  1342. jaclang/vendor/mypyc/test/config.py +0 -13
  1343. jaclang/vendor/mypyc/test/test_alwaysdefined.py +0 -46
  1344. jaclang/vendor/mypyc/test/test_analysis.py +0 -77
  1345. jaclang/vendor/mypyc/test/test_cheader.py +0 -53
  1346. jaclang/vendor/mypyc/test/test_commandline.py +0 -82
  1347. jaclang/vendor/mypyc/test/test_emit.py +0 -69
  1348. jaclang/vendor/mypyc/test/test_emitclass.py +0 -35
  1349. jaclang/vendor/mypyc/test/test_emitfunc.py +0 -928
  1350. jaclang/vendor/mypyc/test/test_emitwrapper.py +0 -60
  1351. jaclang/vendor/mypyc/test/test_exceptions.py +0 -56
  1352. jaclang/vendor/mypyc/test/test_external.py +0 -49
  1353. jaclang/vendor/mypyc/test/test_irbuild.py +0 -87
  1354. jaclang/vendor/mypyc/test/test_ircheck.py +0 -199
  1355. jaclang/vendor/mypyc/test/test_literals.py +0 -90
  1356. jaclang/vendor/mypyc/test/test_lowering.py +0 -56
  1357. jaclang/vendor/mypyc/test/test_namegen.py +0 -48
  1358. jaclang/vendor/mypyc/test/test_optimizations.py +0 -68
  1359. jaclang/vendor/mypyc/test/test_pprint.py +0 -42
  1360. jaclang/vendor/mypyc/test/test_rarray.py +0 -48
  1361. jaclang/vendor/mypyc/test/test_refcount.py +0 -59
  1362. jaclang/vendor/mypyc/test/test_run.py +0 -426
  1363. jaclang/vendor/mypyc/test/test_serialization.py +0 -108
  1364. jaclang/vendor/mypyc/test/test_struct.py +0 -112
  1365. jaclang/vendor/mypyc/test/test_tuplename.py +0 -33
  1366. jaclang/vendor/mypyc/test/test_typeops.py +0 -97
  1367. jaclang/vendor/mypyc/test/testutil.py +0 -283
  1368. jaclang/vendor/mypyc/test-data/alwaysdefined.test +0 -732
  1369. jaclang/vendor/mypyc/test-data/analysis.test +0 -470
  1370. jaclang/vendor/mypyc/test-data/commandline.test +0 -245
  1371. jaclang/vendor/mypyc/test-data/driver/driver.py +0 -48
  1372. jaclang/vendor/mypyc/test-data/exceptions-freq.test +0 -125
  1373. jaclang/vendor/mypyc/test-data/exceptions.test +0 -699
  1374. jaclang/vendor/mypyc/test-data/fixtures/ir.py +0 -373
  1375. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +0 -103
  1376. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +0 -169
  1377. jaclang/vendor/mypyc/test-data/irbuild-any.test +0 -236
  1378. jaclang/vendor/mypyc/test-data/irbuild-basic.test +0 -3399
  1379. jaclang/vendor/mypyc/test-data/irbuild-bool.test +0 -424
  1380. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +0 -181
  1381. jaclang/vendor/mypyc/test-data/irbuild-classes.test +0 -1302
  1382. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +0 -480
  1383. jaclang/vendor/mypyc/test-data/irbuild-dict.test +0 -584
  1384. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +0 -215
  1385. jaclang/vendor/mypyc/test-data/irbuild-float.test +0 -497
  1386. jaclang/vendor/mypyc/test-data/irbuild-generics.test +0 -150
  1387. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +0 -437
  1388. jaclang/vendor/mypyc/test-data/irbuild-i16.test +0 -526
  1389. jaclang/vendor/mypyc/test-data/irbuild-i32.test +0 -598
  1390. jaclang/vendor/mypyc/test-data/irbuild-i64.test +0 -2144
  1391. jaclang/vendor/mypyc/test-data/irbuild-int.test +0 -194
  1392. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +0 -109
  1393. jaclang/vendor/mypyc/test-data/irbuild-lists.test +0 -513
  1394. jaclang/vendor/mypyc/test-data/irbuild-match.test +0 -1717
  1395. jaclang/vendor/mypyc/test-data/irbuild-math.test +0 -64
  1396. jaclang/vendor/mypyc/test-data/irbuild-nested.test +0 -807
  1397. jaclang/vendor/mypyc/test-data/irbuild-optional.test +0 -536
  1398. jaclang/vendor/mypyc/test-data/irbuild-set.test +0 -806
  1399. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +0 -257
  1400. jaclang/vendor/mypyc/test-data/irbuild-statements.test +0 -1060
  1401. jaclang/vendor/mypyc/test-data/irbuild-str.test +0 -312
  1402. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +0 -12
  1403. jaclang/vendor/mypyc/test-data/irbuild-try.test +0 -523
  1404. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +0 -386
  1405. jaclang/vendor/mypyc/test-data/irbuild-u8.test +0 -543
  1406. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +0 -241
  1407. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +0 -153
  1408. jaclang/vendor/mypyc/test-data/lowering-int.test +0 -377
  1409. jaclang/vendor/mypyc/test-data/lowering-list.test +0 -33
  1410. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +0 -400
  1411. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +0 -296
  1412. jaclang/vendor/mypyc/test-data/refcount.test +0 -1482
  1413. jaclang/vendor/mypyc/test-data/run-async.test +0 -173
  1414. jaclang/vendor/mypyc/test-data/run-attrs.test +0 -318
  1415. jaclang/vendor/mypyc/test-data/run-bench.test +0 -196
  1416. jaclang/vendor/mypyc/test-data/run-bools.test +0 -229
  1417. jaclang/vendor/mypyc/test-data/run-bytes.test +0 -302
  1418. jaclang/vendor/mypyc/test-data/run-classes.test +0 -2505
  1419. jaclang/vendor/mypyc/test-data/run-dicts.test +0 -334
  1420. jaclang/vendor/mypyc/test-data/run-dunders.test +0 -945
  1421. jaclang/vendor/mypyc/test-data/run-exceptions.test +0 -448
  1422. jaclang/vendor/mypyc/test-data/run-floats.test +0 -516
  1423. jaclang/vendor/mypyc/test-data/run-functions.test +0 -1310
  1424. jaclang/vendor/mypyc/test-data/run-generators.test +0 -682
  1425. jaclang/vendor/mypyc/test-data/run-i16.test +0 -338
  1426. jaclang/vendor/mypyc/test-data/run-i32.test +0 -336
  1427. jaclang/vendor/mypyc/test-data/run-i64.test +0 -1519
  1428. jaclang/vendor/mypyc/test-data/run-imports.test +0 -265
  1429. jaclang/vendor/mypyc/test-data/run-integers.test +0 -540
  1430. jaclang/vendor/mypyc/test-data/run-lists.test +0 -411
  1431. jaclang/vendor/mypyc/test-data/run-loops.test +0 -485
  1432. jaclang/vendor/mypyc/test-data/run-match.test +0 -283
  1433. jaclang/vendor/mypyc/test-data/run-math.test +0 -106
  1434. jaclang/vendor/mypyc/test-data/run-misc.test +0 -1170
  1435. jaclang/vendor/mypyc/test-data/run-multimodule.test +0 -887
  1436. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +0 -138
  1437. jaclang/vendor/mypyc/test-data/run-primitives.test +0 -375
  1438. jaclang/vendor/mypyc/test-data/run-python37.test +0 -159
  1439. jaclang/vendor/mypyc/test-data/run-python38.test +0 -88
  1440. jaclang/vendor/mypyc/test-data/run-sets.test +0 -150
  1441. jaclang/vendor/mypyc/test-data/run-singledispatch.test +0 -698
  1442. jaclang/vendor/mypyc/test-data/run-strings.test +0 -641
  1443. jaclang/vendor/mypyc/test-data/run-traits.test +0 -411
  1444. jaclang/vendor/mypyc/test-data/run-tuples.test +0 -258
  1445. jaclang/vendor/mypyc/test-data/run-u8.test +0 -303
  1446. jaclang/vendor/mypyc/transform/__init__.py +0 -0
  1447. jaclang/vendor/mypyc/transform/copy_propagation.py +0 -94
  1448. jaclang/vendor/mypyc/transform/exceptions.py +0 -182
  1449. jaclang/vendor/mypyc/transform/flag_elimination.py +0 -108
  1450. jaclang/vendor/mypyc/transform/ir_transform.py +0 -368
  1451. jaclang/vendor/mypyc/transform/lower.py +0 -33
  1452. jaclang/vendor/mypyc/transform/refcount.py +0 -294
  1453. jaclang/vendor/mypyc/transform/uninit.py +0 -190
  1454. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +0 -279
  1455. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +0 -67
  1456. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +0 -5
  1457. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +0 -4
  1458. jaclang/vendor/typing_extensions.py +0 -3641
  1459. jaclang-0.7.33.dist-info/RECORD +0 -1562
  1460. /jaclang/{vendor/mypy/dmypy → compiler/larkparse}/__init__.py +0 -0
  1461. /jaclang/{tests → compiler/passes/main/tests}/fixtures/access_checker.jac +0 -0
  1462. /jaclang/{vendor/mypy/plugins/__init__.py → langserve/tests/fixtures/deep_check_crash.jac} +0 -0
  1463. /jaclang/{vendor/mypy/server/__init__.py → langserve/tests/server_test/code_test.py} +0 -0
  1464. /jaclang/{plugin → runtimelib}/tests/__init__.py +0 -0
  1465. /jaclang/{plugin → runtimelib}/tests/fixtures/traversing_save.jac +0 -0
  1466. /jaclang/{vendor/mypy/test → tests}/__init__.py +0 -0
  1467. /jaclang/{vendor/mypy/test/meta → tests/fixtures}/__init__.py +0 -0
  1468. /jaclang/tests/fixtures/{architype_def_bug.jac → archetype_def_bug.jac} +0 -0
  1469. /jaclang/vendor/{mypy/typeshed/stdlib/concurrent/__init__.pyi → attrs-25.3.0.dist-info/REQUESTED} +0 -0
  1470. /jaclang/vendor/{attrs-23.2.0.dist-info → attrs-25.3.0.dist-info}/licenses/LICENSE +0 -0
  1471. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/__init__.pyi → cattrs-24.1.3.dist-info/REQUESTED} +0 -0
  1472. /jaclang/vendor/{cattrs-23.2.3.dist-info → cattrs-24.1.3.dist-info}/licenses/LICENSE +0 -0
  1473. /jaclang/vendor/{mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi → lark-1.2.2.dist-info/REQUESTED} +0 -0
  1474. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/entry_points.txt +0 -0
  1475. /jaclang/vendor/{lark-1.1.9.dist-info → lark-1.2.2.dist-info}/top_level.txt +0 -0
  1476. /jaclang/vendor/{mypy/typeshed/stdlib/email/mime/__init__.pyi → lsprotocol-2023.0.1.dist-info/REQUESTED} +0 -0
  1477. /jaclang/vendor/lsprotocol-2023.0.1.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1478. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/__init__.pyi → pluggy-1.5.0.dist-info/REQUESTED} +0 -0
  1479. /jaclang/vendor/pluggy-1.5.0.dist-info/{LICENSE → licenses/LICENSE} +0 -0
  1480. /jaclang/vendor/{mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi → pygls-1.3.1.dist-info/REQUESTED} +0 -0
  1481. {jaclang-0.7.33.dist-info → jaclang-0.8.0.dist-info}/entry_points.txt +0 -0
@@ -3,2585 +3,153 @@
3
3
  This is a pass for formatting Jac code.
4
4
  """
5
5
 
6
- import re
7
6
  from typing import Optional
8
7
 
9
- import jaclang.compiler.absyntree as ast
10
- from jaclang.compiler.absyntree import AstNode
11
- from jaclang.compiler.constant import Tokens as Tok
12
- from jaclang.compiler.passes import Pass
8
+ import jaclang.compiler.passes.tool.doc_ir as doc
9
+ import jaclang.compiler.unitree as uni
10
+ from jaclang.compiler.passes import Transform
13
11
  from jaclang.settings import settings
14
12
 
15
13
 
16
- class JacFormatPass(Pass):
14
+ class JacFormatPass(Transform[uni.Module, uni.Module]):
17
15
  """JacFormat Pass format Jac code."""
18
16
 
19
- def before_pass(self) -> None:
17
+ def pre_transform(self) -> None:
20
18
  """Initialize pass."""
21
- self.comments: list[ast.CommentToken] = []
22
19
  self.indent_size = 4
23
- self.indent_level = 0
24
- self.MAX_LINE_LENGTH = int(float(settings.max_line_length) / 2)
25
-
26
- def enter_node(self, node: ast.AstNode) -> None:
27
- """Enter node."""
28
- node.gen.jac = ""
29
- super().enter_node(node)
30
-
31
- def token_before(self, node: ast.Token) -> Optional[ast.Token]:
32
- """Token before."""
33
- if not isinstance(self.ir, ast.Module):
34
- raise self.ice("IR must be module. Impossible")
35
- if self.ir.terminals.index(node) == 0:
36
- return None
37
- return self.ir.terminals[self.ir.terminals.index(node) - 1]
38
-
39
- def token_after(self, node: ast.Token) -> Optional[ast.Token]:
40
- """Token after."""
41
- if not isinstance(self.ir, ast.Module):
42
- raise self.ice("IR must be module. Impossible")
43
- if self.ir.terminals.index(node) == len(self.ir.terminals) - 1:
44
- return None
45
- return self.ir.terminals[self.ir.terminals.index(node) + 1]
46
-
47
- def indent_str(self) -> str:
48
- """Return string for indent."""
49
- return " " * self.indent_size * self.indent_level
50
-
51
- def emit(self, node: ast.AstNode, s: str, strip_mode: bool = True) -> None:
52
- """Emit code to node."""
53
- indented_str = re.sub(r"\n(?!\n)", f"\n{self.indent_str()}", s)
54
- node.gen.jac += self.indent_str() + indented_str
55
- if "\n" in node.gen.jac:
56
- if strip_mode:
57
- node.gen.jac = node.gen.jac.rstrip(" ")
58
- else:
59
- node.gen.jac = node.gen.jac
60
-
61
- def emit_ln(self, node: ast.AstNode, s: str) -> None:
62
- """Emit code to node."""
63
- self.emit(node, s.strip().strip("\n"))
64
- self.emit(node, "\n")
65
-
66
- def comma_sep_node_list(self, node: ast.SubNodeList) -> str:
67
- """Render comma separated node list."""
68
- node.gen.jac = ", ".join([i.gen.jac for i in node.items])
69
- return node.gen.jac
70
-
71
- def dot_sep_node_list(self, node: ast.SubNodeList) -> str:
72
- """Render dot separated node list."""
73
- node.gen.jac = ".".join([i.gen.jac for i in node.items])
74
- return node.gen.jac
75
-
76
- def nl_sep_node_list(self, node: ast.SubNodeList) -> str:
77
- """Render newline separated node list."""
78
- node.gen.jac = ""
79
- for i in node.items:
80
- node.gen.jac += f"{i.gen.jac}\n"
81
- return node.gen.jac
82
-
83
- def sep_node_list(self, node: ast.SubNodeList, delim: str = " ") -> str:
84
- """Render newline separated node list."""
85
- node.gen.jac = f"{delim}".join([i.gen.jac for i in node.items])
86
- return node.gen.jac
87
-
88
- def enter_module(self, node: ast.Module) -> None:
89
- """Sub objects.
90
-
91
- name: str,
92
- source: JacSource,
93
- doc: Optional[String],
94
- body: Sequence[ElementStmt],
95
- is_imported: bool,
96
- """
97
- self.comments = node.source.comments
98
-
99
- def exit_module(self, node: ast.Module) -> None:
100
- """Sub objects.
101
-
102
- name: str,
103
- source: JacSource,
104
- doc: Optional[String],
105
- body: Sequence[ElementStmt],
106
- is_imported: bool,
107
- """
108
- prev_token = None
109
- for i in node.kid:
110
- if isinstance(i, ast.String):
111
- self.emit_ln(node, f" {i.gen.jac}")
112
- self.emit_ln(node, "")
113
- elif isinstance(i, ast.CommentToken):
114
- if i.is_inline:
115
- self.emit(node, f" {i.gen.jac}")
116
- else:
117
- if prev_token is not None:
118
- self.emit_ln(node, "")
119
- self.emit_ln(node, i.gen.jac)
120
- elif isinstance(i, ast.Token):
121
- self.emit(node, i.value.strip("") + " ")
122
- elif isinstance(i, ast.SubTag):
123
- for j in i.kid:
124
- self.emit(node, j.gen.jac)
125
- prev_token = i
126
- last_element = None
127
- for counter, i in enumerate(node.body):
128
- counter += 1
129
- if last_element and (
130
- i.loc.first_line - last_element.loc.last_line > 1
131
- and not last_element.gen.jac.endswith("\n\n")
132
- ):
133
- self.emit_ln(node, "")
134
- if isinstance(i, ast.Import):
135
- self.emit_ln(node, i.gen.jac)
136
- else:
137
- if last_element and (
138
- isinstance(i, ast.Architype)
139
- and isinstance(last_element, ast.Architype)
140
- and i.loc.first_line - last_element.loc.last_line == 2
141
- and not node.gen.jac.endswith("\n\n")
142
- ):
143
- self.emit_ln(node, "")
144
- self.emit_ln(node, i.gen.jac)
145
-
146
- last_element = i
147
-
148
- def exit_global_vars(self, node: ast.GlobalVars) -> None:
149
- """Sub objects.
150
-
151
- access: Optional[SubTag[Token]],
152
- assignments: SubNodeList[Assignment],
153
- is_frozen: bool,
154
- doc: Optional[String] = None,
155
- """
156
- start = True
157
- prev_token = None
158
- for i in node.kid:
159
- if isinstance(i, ast.String):
160
- self.emit_ln(node, i.gen.jac)
161
- elif isinstance(i, ast.CommentToken):
162
- if i.is_inline:
163
- self.emit(node, f" {i.gen.jac}")
164
- else:
165
- if isinstance(prev_token, ast.Semi):
166
- self.emit_ln(node, "")
167
- self.emit_ln(node, "")
168
- self.emit_ln(node, i.gen.jac)
169
- elif isinstance(i, ast.Semi):
170
- self.emit(node, f"{i.gen.jac}")
171
- else:
172
- if start:
173
- self.emit(node, i.gen.jac)
174
- start = False
175
- else:
176
- self.emit(node, f" {i.gen.jac}")
177
- prev_token = i
178
- if isinstance(
179
- node.kid[-1], (ast.Semi, ast.CommentToken)
180
- ) and not node.gen.jac.endswith("\n"):
181
- self.emit_ln(node, "")
182
-
183
- def exit_module_code(self, node: ast.ModuleCode) -> None:
184
- """Sub objects.
185
-
186
- name: Optional[SubTag[Name]],
187
- body: SubNodeList[CodeBlockStmt],
188
- doc: Optional[Constant] = None,
189
- """
190
- start = True
191
- for i in node.kid:
192
- if isinstance(i, ast.String):
193
- self.emit_ln(node, i.gen.jac)
194
- elif isinstance(i, ast.Token):
195
- if start:
196
- self.emit(node, i.gen.jac)
197
- start = False
198
- else:
199
- self.emit(node, f" {i.gen.jac}")
200
- elif isinstance(i, ast.SubTag):
201
- for j in i.kid:
202
- self.emit(node, j.gen.jac)
203
- if node.body:
204
- self.emit(node, node.body.gen.jac)
205
-
206
- def exit_sub_node_list(self, node: ast.SubNodeList) -> None:
207
- """Sub objects.
208
-
209
- items: list[T],
210
- """
211
- prev_token = None
212
- for stmt in node.kid:
213
- line_emiited = False
214
- if prev_token and stmt.loc.first_line - prev_token.loc.last_line > 1:
215
- if (
216
- stmt.kid
217
- and isinstance(stmt.kid[-1], ast.SubNodeList)
218
- and not isinstance(stmt.kid[-1].kid[-1], ast.CommentToken)
219
- ):
220
- self.emit(node, "")
221
-
222
- else:
223
- line_emiited = True
224
- self.indent_level -= 1
225
- self.emit_ln(node, "")
226
- self.indent_level += 1
227
- if isinstance(node.parent, (ast.EnumDef, ast.Enum)) and stmt.gen.jac == ",":
228
- self.indent_level -= 1
229
- self.emit_ln(node, f"{stmt.gen.jac}")
230
- self.indent_level += 1
231
- prev_token = stmt
232
- continue
233
- if (
234
- prev_token
235
- and prev_token.gen.jac.endswith("}")
236
- and not isinstance(prev_token, (ast.DictVal, ast.SetVal))
237
- ):
238
- self.indent_level -= 1
239
- self.emit_ln(node, "")
240
- self.indent_level += 1
241
- if isinstance(stmt, ast.Token):
242
- if (
243
- isinstance(stmt, ast.Name)
244
- and prev_token
245
- and prev_token.gen.jac == "{"
246
- ):
247
- self.emit_ln(node, "")
248
- self.indent_level += 1
249
- if stmt.name == Tok.LBRACE:
250
- self.emit(node, f" {stmt.value}")
251
- elif stmt.name == Tok.RBRACE:
252
- self.indent_level = max(0, self.indent_level - 1)
253
- if stmt.parent and stmt.parent.gen.jac.strip() == "{":
254
- self.emit(node, f"{stmt.value}")
255
- else:
256
- if not node.gen.jac.endswith("\n"):
257
- self.emit_ln(node, "")
258
- self.emit(node, f"{stmt.value}")
259
- elif isinstance(stmt, ast.CommentToken):
260
- if stmt.is_inline:
261
- if isinstance(prev_token, ast.Semi) or (
262
- isinstance(prev_token, ast.Token)
263
- and prev_token.name in [Tok.LBRACE, Tok.RBRACE]
264
- ):
265
- self.indent_level -= 1
266
- self.emit(node, f" {stmt.gen.jac}")
267
- self.emit_ln(node, "")
268
- self.indent_level += 1
269
- else:
270
- self.emit(node, f" {stmt.gen.jac}")
271
- if not line_emiited:
272
- self.indent_level -= 1
273
- self.emit_ln(node, "")
274
- self.indent_level += 1
275
- else:
276
- if not node.gen.jac.endswith("\n"):
277
- self.indent_level -= 1
278
- self.emit_ln(node, "")
279
- self.indent_level += 1
280
- if prev_token and prev_token.gen.jac.strip() == "{":
281
- self.indent_level += 1
282
- if prev_token and isinstance(prev_token, ast.Ability):
283
- self.emit(node, f"{stmt.gen.jac}")
284
- else:
285
- token_before = self.token_before(stmt)
286
- if (
287
- token_before is not None
288
- and isinstance(token_before, ast.Token)
289
- and token_before.name == Tok.LBRACE
290
- and stmt.loc.first_line - token_before.loc.last_line > 1
291
- ):
292
- self.indent_level -= 1
293
- self.emit_ln(node, "")
294
- self.indent_level += 1
295
- self.emit(node, stmt.gen.jac)
296
- self.indent_level -= 1
297
- self.emit_ln(stmt, "")
298
- self.emit_ln(node, "")
299
- self.indent_level += 1
300
- elif stmt.gen.jac == ",":
301
- self.emit(node, f"{stmt.value} ")
302
- elif stmt.value == "=":
303
- self.emit(node, f" {stmt.value} ")
304
- elif prev_token and prev_token.gen.jac.strip() == "@":
305
- self.emit_ln(node, stmt.value)
306
- else:
307
- self.emit(node, f"{stmt.gen.jac}")
308
- prev_token = stmt
309
- continue
310
- elif isinstance(stmt, ast.Semi):
311
- self.emit(node, stmt.gen.jac)
312
- elif (
313
- isinstance(prev_token, (ast.HasVar, ast.ArchHas))
314
- and not isinstance(stmt, (ast.HasVar, ast.ArchHas))
315
- ) or (
316
- isinstance(prev_token, ast.Ability)
317
- and isinstance(stmt, (ast.Ability, ast.AbilityDef))
318
- ):
319
- if (
320
- not isinstance(prev_token.kid[-1], ast.CommentToken)
321
- and not line_emiited
322
- ):
323
- if (
324
- prev_token.kid
325
- and isinstance(prev_token.kid[-1], ast.SubNodeList)
326
- and isinstance(prev_token.kid[-1].kid[-1], ast.CommentToken)
327
- ):
328
- if (
329
- prev_token
330
- and stmt.loc.first_line - prev_token.kid[-1].kid[-1].line_no
331
- > 1
332
- ):
333
- self.indent_level -= 1
334
- self.emit_ln(node, "")
335
- self.indent_level += 1
336
- else:
337
- self.emit(node, "")
338
- else:
339
- self.indent_level -= 1
340
- self.emit_ln(node, "")
341
- self.indent_level += 1
342
- self.emit(node, stmt.gen.jac)
343
- else:
344
- if prev_token and prev_token.gen.jac.strip() == "{":
345
- self.emit_ln(node, "")
346
- self.indent_level += 1
347
- self.emit(node, stmt.gen.jac)
348
- prev_token = stmt
349
-
350
- def exit_sub_tag(self, node: ast.SubTag) -> None:
351
- """Sub objects.
352
-
353
- tag: T,
354
- """
355
- start = True
356
- prev_token = None
357
- for i in node.kid:
358
- if isinstance(i, ast.CommentToken):
359
- if i.is_inline:
360
- self.emit(node, f" {i.gen.jac}")
361
- elif not node.gen.jac.endswith("\n"):
362
- self.emit_ln(node, "")
363
- self.emit_ln(node, i.gen.jac)
364
- else:
365
- self.emit_ln(node, i.gen.jac)
366
- elif isinstance(i, ast.Semi):
367
- self.emit(node, i.gen.jac)
368
- elif i.gen.jac == ",":
369
- self.emit(node, f"{i.gen.jac} ")
370
- else:
371
- if isinstance(i, ast.Token) and not isinstance(i, ast.BuiltinType):
372
- try:
373
- prev_token = self.token_before(i)
374
- except Exception:
375
- prev_token = None
376
- if start or (prev_token and prev_token.gen.jac.strip() == ":"):
377
- self.emit(node, i.gen.jac.strip())
378
- start = False
379
- else:
380
- self.emit(node, f" {i.gen.jac}")
381
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
382
- self.emit_ln(node, "")
383
-
384
- def exit_func_call(self, node: ast.FuncCall) -> None:
385
- """Sub objects.
386
-
387
- target: AtomType,
388
- params: Optional[ParamList],
389
- """
390
- prev_token: Optional[AstNode] = None
391
- line_break_needed = False
392
- indented = False
393
- test_str = ""
394
- for i in node.kid:
395
- if isinstance(i, ast.SubNodeList):
396
- if prev_token and prev_token.gen.jac.strip() == "(":
397
- for j in i.kid:
398
- test_str += f" {j.gen.jac}"
399
- test_str += ");"
400
- line_break_needed = self.is_line_break_needed(test_str, 60)
401
- if line_break_needed:
402
- self.emit_ln(node, "")
403
- self.indent_level += 1
404
- indented = True
405
- for count, j in enumerate(i.kid):
406
- if j.gen.jac == ",":
407
- if len(i.kid) > count + 1 and i.kid[
408
- count + 1
409
- ].gen.jac.startswith("#"):
410
- self.indent_level -= 1
411
- self.emit(node, f"{j.gen.jac} ")
412
- self.indent_level += 1
413
- else:
414
- if line_break_needed:
415
- self.indent_level -= 1
416
- self.emit_ln(node, f" {j.gen.jac}")
417
- self.indent_level += 1
418
- else:
419
- self.emit(node, f"{j.gen.jac} ")
420
- elif isinstance(j, ast.CommentToken):
421
- if line_break_needed:
422
- self.indent_level -= 1
423
- self.emit(node, " ")
424
- self.emit_ln(node, j.gen.jac)
425
- self.indent_level += 1
426
- else:
427
- self.emit(node, f"{j.gen.jac} ")
428
- else:
429
- self.emit(node, j.gen.jac)
430
- if indented:
431
- self.indent_level -= 1
432
- prev_token = i
433
- continue
434
- if isinstance(i, ast.CommentToken):
435
- if i.is_inline:
436
- self.emit(node, f" {i.gen.jac}")
437
- else:
438
- self.emit_ln(node, "")
439
- self.emit_ln(node, i.gen.jac)
440
- if isinstance(i, ast.Token) and i.name == Tok.KW_BY:
441
- if not node.params:
442
- self.emit(node, f"{i.gen.jac} ")
443
- else:
444
- self.emit(node, f" {i.gen.jac} ")
445
- else:
446
- if (
447
- line_break_needed
448
- and prev_token
449
- and isinstance(prev_token, ast.SubNodeList)
450
- ):
451
- self.indent_level -= 1
452
- self.emit_ln(node, "")
453
- self.indent_level += 1
454
- self.emit(node, i.gen.jac)
455
- prev_token = i
456
- test_str += i.gen.jac
457
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
458
- self.emit_ln(node, "")
459
-
460
- def exit_multi_string(self, node: ast.MultiString) -> None:
461
- """Sub objects.
462
-
463
- strings: list[Token],
464
- """
465
- if len(node.strings) > 1:
466
- self.emit_ln(node, node.strings[0].gen.jac)
467
- self.indent_level += 1
468
- for string in range(1, len(node.strings) - 1):
469
- self.emit(node, f"{node.strings[string].gen.jac}\n")
470
- self.emit(node, node.strings[-1].gen.jac)
471
- self.indent_level -= 1
472
- else:
473
- self.emit(node, node.strings[0].gen.jac)
474
-
475
- def exit_module_path(self, node: ast.ModulePath) -> None:
476
- """Sub objects.
477
-
478
- path: list[Token],
479
- alias: Optional[Name],
480
- """
481
- self.emit(node, node.dot_path_str)
482
- if node.alias:
483
- self.emit(node, " as " + node.alias.gen.jac)
484
-
485
- def exit_tuple_val(self, node: ast.TupleVal) -> None:
486
- """Sub objects.
487
-
488
- first_expr: Optional["ExprType"],
489
- exprs: Optional[ExprList],
490
- assigns: Optional[AssignmentList],
491
- """
492
- for i in node.kid:
493
- if (i.gen.jac).endswith(","):
494
- self.indent_level -= 1
495
- self.emit_ln(node, "")
496
- self.indent_level += 1
497
- self.emit(node, i.gen.jac)
498
-
499
- def exit_special_var_ref(self, node: ast.SpecialVarRef) -> None:
500
- """Sub objects.
501
-
502
- var: Token,
503
- """
504
- self.emit(node, node.orig.value)
505
-
506
- def exit_ability_def(self, node: ast.AbilityDef) -> None:
507
- """Sub objects.
508
-
509
- target: ArchRefChain,
510
- signature: FuncSignature | EventSignature,
511
- body: SubNodeList[CodeBlockStmt],
512
- kid: list[AstNode],
513
- doc: Optional[Constant] = None,
514
- decorators: Optional[SubNodeList[ExprType]] = None,
515
- """
516
- start = True
517
- prev_token = None
518
- for i in node.kid:
519
- if isinstance(i, ast.String):
520
- self.emit_ln(node, i.gen.jac)
521
- elif isinstance(i, ast.CommentToken):
522
- if i.is_inline:
523
- self.emit(node, i.gen.jac)
524
- if isinstance(prev_token, ast.Semi):
525
- self.emit_ln(node, "")
526
- elif not node.gen.jac.endswith("\n"):
527
- self.indent_level -= 1
528
- self.emit_ln(node, "")
529
- self.indent_level += 1
530
- self.emit_ln(node, i.gen.jac)
531
- else:
532
- self.emit_ln(node, i.gen.jac)
533
- elif isinstance(prev_token, ast.ArchRefChain) and isinstance(
534
- i, ast.FuncSignature
535
- ):
536
- m = next((True for j in i.kid if isinstance(j, ast.SubNodeList)), False)
537
- if m:
538
- self.indent_level -= 1
539
- self.emit_ln(node, "")
540
- self.indent_level += 1
541
- self.emit(node, f"{i.gen.jac}")
542
- elif isinstance(i, ast.Semi):
543
- self.emit(node, i.gen.jac)
544
- elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
545
- self.emit_ln(node, i.gen.jac)
546
- else:
547
- if start:
548
- self.emit(node, i.gen.jac)
549
- start = False
550
- elif i.gen.jac.startswith(" ") or i.gen.jac.startswith("("):
551
- self.emit(node, i.gen.jac)
552
- else:
553
- self.emit(node, f" {i.gen.jac}")
554
- prev_token = i
555
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
556
- self.emit_ln(node, "")
557
-
558
- def exit_event_signature(self, node: ast.EventSignature) -> None:
559
- """Sub objects.
560
-
561
- event: Token,
562
- arch_tag_info: Optional["TypeList | TypeSpec"],
563
- return_type: Optional["TypeSpec"],
564
- """
565
- start = True
566
- for i in node.kid:
567
- if isinstance(i, ast.CommentToken):
568
- if i.is_inline:
569
- self.emit(node, f" {i.gen.jac}")
570
- else:
571
- self.emit_ln(node, i.gen.jac)
572
- elif isinstance(i, ast.Semi):
573
- self.emit(node, i.gen.jac)
574
- else:
575
- if start:
576
- self.emit(node, i.gen.jac)
577
- start = False
578
- else:
579
- self.emit(node, f" {i.gen.jac}")
580
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
581
- self.emit_ln(node, "")
582
-
583
- def exit_import(self, node: ast.Import) -> None:
584
- """Sub objects.
585
-
586
- lang: SubTag[Name],
587
- path: ModulePath,
588
- alias: Optional[Name],
589
- items: Optional[SubNodeList[ModuleItem]],
590
- is_absorb: bool, # For includes
591
- doc: Optional[Constant] = None,
592
- sub_module: Optional[Module] = None,
593
- """
594
- start = True
595
- for i in node.kid:
596
- if isinstance(i, ast.CommentToken):
597
- if i.is_inline:
598
- self.emit(node, f" {i.gen.jac}")
599
- elif not node.gen.jac.endswith("\n"):
600
- self.emit_ln(node, "")
601
- self.emit_ln(node, i.gen.jac)
602
- else:
603
- self.emit_ln(node, i.gen.jac)
604
- elif isinstance(i, ast.Semi):
605
- self.emit(node, i.gen.jac)
606
- elif i.gen.jac.startswith(":"):
607
- self.emit(node, re.sub(r"\s+", "", i.gen.jac.strip()))
608
- else:
609
- if start or i.gen.jac == ",":
610
- self.emit(node, i.gen.jac)
611
- start = False
612
- else:
613
- self.emit(node, f" {i.gen.jac}")
614
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
615
- self.emit_ln(node, "")
616
-
617
- def exit_arch_def(self, node: ast.ArchDef) -> None:
618
- """Sub objects.
619
-
620
- target: ArchRefChain,
621
- body: SubNodeList[ArchBlockStmt],
622
- doc: Optional[Constant] = None,
623
- decorators: Optional[SubNodeList[ExprType]] = None,
624
- """
625
- start = True
626
- for i in node.kid:
627
- if isinstance(i, ast.CommentToken):
628
- if i.is_inline:
629
- self.emit(node, f" {i.gen.jac}")
630
- elif not node.gen.jac.endswith("\n"):
631
- self.indent_level -= 1
632
- self.emit_ln(node, "")
633
- self.indent_level += 1
634
- self.emit_ln(node, i.gen.jac)
635
- else:
636
- self.emit_ln(node, i.gen.jac)
637
- elif isinstance(i, ast.Semi):
638
- self.emit(node, i.gen.jac)
639
- else:
640
- if start or i.gen.jac == "," or i.gen.jac.startswith(":"):
641
- self.emit(node, i.gen.jac)
642
- start = False
643
- else:
644
- self.emit(node, f" {i.gen.jac}")
645
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
646
- self.emit_ln(node, "")
647
-
648
- def exit_ability(self, node: ast.Ability) -> None:
649
- """Sub objects.
650
-
651
- name_ref: NameType,
652
- is_func: bool,
653
- is_async: bool,
654
- is_static: bool,
655
- is_abstract: bool,
656
- access: Optional[SubTag[Token]],
657
- signature: Optional[FuncSignature | SubNodeList[TypeSpec] | EventSignature],
658
- body: Optional[SubNodeList[CodeBlockStmt]],
659
- arch_attached: Optional[Architype] = None,
660
- doc: Optional[Constant] = None,
661
- decorators: Optional[SubNodeList[ExprType]] = None,
662
- """
663
- start = True
664
- prev_token = None
665
-
666
- for i in node.kid:
667
- if i.gen.jac == "can" and node.is_static:
668
- i.gen.jac = "static can"
669
- if not i.gen.jac or i.gen.jac == "static":
670
- continue
671
- if isinstance(i, ast.String):
672
- if prev_token and prev_token.gen.jac.strip() == "can":
673
- self.emit(node, " ")
674
- self.emit_ln(node, i.gen.jac)
675
- elif isinstance(i, ast.CommentToken):
676
- if i.is_inline:
677
- self.emit(node, i.gen.jac)
678
- if isinstance(prev_token, ast.Semi):
679
- self.indent_level -= 1
680
- self.emit_ln(node, "")
681
- self.indent_level += 1
682
- elif not node.gen.jac.endswith("\n"):
683
- self.indent_level -= 1
684
- self.emit_ln(node, "")
685
- self.indent_level += 1
686
- self.emit_ln(node, i.gen.jac)
687
- else:
688
- self.emit_ln(node, i.gen.jac)
689
- elif isinstance(i, ast.Semi):
690
- self.emit(node, i.gen.jac)
691
- elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
692
- self.emit_ln(node, i.gen.jac)
693
- elif isinstance(i, ast.SubTag):
694
- self.emit(node, i.gen.jac)
695
- else:
696
- if start:
697
- self.emit(node, i.gen.jac)
698
- start = False
699
- elif i.gen.jac[0] in [" ", "("]:
700
- self.emit(node, i.gen.jac)
701
- else:
702
- if prev_token and isinstance(prev_token, ast.String):
703
- self.emit(node, i.gen.jac)
704
- else:
705
- self.emit(node, f" {i.gen.jac}")
706
- prev_token = i
707
-
708
- def exit_func_signature(self, node: ast.FuncSignature) -> None:
709
- """Sub objects.
710
-
711
- params: Optional[SubNodeList[ParamVar]],
712
- return_type: Optional[SubNodeList[TypeSpec]],
713
- """
714
- prev_token = None
715
- for i in node.kid:
716
- if isinstance(i, ast.SubTag):
717
- for j in i.kid:
718
- if (
719
- prev_token
720
- and isinstance(prev_token, ast.Token)
721
- and prev_token.gen.jac == "("
722
- ):
723
- self.emit(node, f"{j.gen.jac}")
724
- else:
725
- self.emit(node, f" {j.gen.jac}")
726
- elif isinstance(i, ast.SubNodeList):
727
- for j in i.kid:
728
- if j.gen.jac == ",":
729
- self.emit(node, f"{j.gen.jac.strip()} ")
730
- else:
731
- self.emit(node, f"{j.gen.jac.strip()}")
732
- elif isinstance(i, ast.Token) and i.gen.jac == ":":
733
- self.emit(node, f"{i.gen.jac} ")
734
- else:
735
- if i.gen.jac == "->":
736
- self.emit(node, f" {i.gen.jac} ")
737
- else:
738
- self.emit(node, i.gen.jac)
739
- prev_token = i
740
-
741
- def exit_arch_has(self, node: ast.ArchHas) -> None:
742
- """Sub objects.
743
-
744
- doc: Optional[Token],
745
- is_static: bool,
746
- access: Optional[Token],
747
- vars: "HasVarList",
748
- is_frozen: bool,
749
- """
750
- indented = False
751
- indent_val = 1
752
- for i in node.kid:
753
- if isinstance(i, ast.CommentToken):
754
- if i.is_inline:
755
- self.emit(node, f" {i.gen.jac}")
756
- self.emit_ln(node, "")
757
- elif not node.gen.jac.endswith("\n"):
758
- self.emit(node, "\n")
759
- self.emit_ln(node, i.gen.jac)
760
- else:
761
- self.emit_ln(node, i.gen.jac)
762
- elif isinstance(i, ast.Semi):
763
- self.emit(node, i.gen.jac.strip())
764
- elif isinstance(i, ast.SubNodeList):
765
- for j in i.kid:
766
- if j.gen.jac == ",":
767
- if not indented:
768
- self.emit_ln(node, j.gen.jac.strip())
769
- self.indent_level += indent_val
770
- indented = True
771
- else:
772
- self.indent_level -= indent_val
773
- self.emit_ln(node, j.gen.jac.strip())
774
- self.indent_level += indent_val
775
- indented = True
776
- else:
777
- self.emit(node, j.gen.jac.lstrip())
778
- if indented:
779
- self.indent_level -= indent_val
780
- else:
781
- self.emit(node, f"{i.gen.jac} ")
782
- if i.gen.jac == "static":
783
- indent_val = indent_val * 3
784
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
785
- self.emit_ln(node, "")
786
-
787
- def exit_arch_ref(self, node: ast.ArchRef) -> None:
788
- """Sub objects.
789
-
790
- archs: list[ArchRef],
791
- """
792
- for i in node.kid:
793
- if isinstance(i, ast.CommentToken):
794
- if i.is_inline:
795
- self.emit(node, f" {i.gen.jac}")
796
- elif not node.gen.jac.endswith("\n"):
797
- self.indent_level -= 1
798
- self.emit_ln(node, "")
799
- self.indent_level += 1
800
- self.emit_ln(node, i.gen.jac)
801
- else:
802
- self.emit_ln(node, i.gen.jac)
803
- elif isinstance(i, ast.Semi):
804
- self.emit(node, i.gen.jac.strip())
805
- elif i.gen.jac == ",":
806
- self.emit(node, f"{i.gen.jac} ")
807
- else:
808
- self.emit(node, i.gen.jac)
809
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
810
- self.emit_ln(node, "")
811
-
812
- def exit_param_var(self, node: ast.ParamVar) -> None:
813
- """Sub objects.
814
-
815
- name: Name,
816
- unpack: Optional[Token],
817
- type_tag: SubTag[Expr],
818
- value: Optional[Expr],
819
- """
820
- for i in node.kid:
821
- if isinstance(i, ast.SubTag):
822
- for j in i.kid:
823
- (
824
- self.emit(node, j.gen.jac)
825
- if not j.gen.jac.startswith(":")
826
- else self.emit(node, f"{j.gen.jac} ")
827
- )
828
- elif isinstance(i, ast.Token) and i.gen.jac.startswith(":"):
829
- self.emit(node, f"{i.gen.jac} ")
830
- else:
831
- self.emit(node, i.gen.jac)
832
-
833
- def exit_enum(self, node: ast.Enum) -> None:
834
- """Sub objects.
835
-
836
- name: Name,
837
- doc: Optional[Token],
838
- decorators: Optional[Decorators],
839
- access: Optional[Token],
840
- base_classes: BaseClasses,
841
- body: Optional[EnumBlock],
842
- """
843
- start = True
844
- prev_token = None
845
- for i in node.kid:
846
- if isinstance(i, ast.String):
847
- if prev_token and prev_token.gen.jac.strip() == "enum":
848
- self.emit(node, " ")
849
- self.emit_ln(node, i.gen.jac)
850
- elif isinstance(i, ast.CommentToken):
851
- if i.is_inline:
852
- self.emit(node, f" {i.gen.jac}")
853
- else:
854
- self.emit_ln(node, i.gen.jac)
855
- elif isinstance(i, ast.Semi):
856
- self.emit(node, i.gen.jac)
857
- elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
858
- self.emit_ln(node, i.gen.jac)
859
- elif isinstance(i, ast.Token) and i.gen.jac == ":":
860
- self.emit(node, f"{i.gen.jac} ")
861
- else:
862
- if start or (
863
- prev_token and isinstance(prev_token, (ast.String, ast.Name))
864
- ):
865
- self.emit(node, i.gen.jac)
866
- start = False
867
- else:
868
- self.emit(node, f" {i.gen.jac}")
869
- prev_token = i
870
- if isinstance(
871
- node.kid[-1], (ast.Semi, ast.CommentToken)
872
- ) and not node.gen.jac.endswith("\n"):
873
- self.emit_ln(node, "")
874
-
875
- def exit_enum_def(self, node: ast.EnumDef) -> None:
876
- """Sub objects.
877
-
878
- doc: Optional[Token],
879
- mod: Optional[DottedNameList],
880
- body: EnumBlock,
881
- """
882
- start = True
883
- for i in node.kid:
884
- if isinstance(i, ast.String):
885
- self.emit_ln(node, i.gen.jac)
886
- elif isinstance(i, ast.CommentToken):
887
- if i.is_inline:
888
- self.emit(node, f" {i.gen.jac}")
889
- else:
890
- self.emit_ln(node, i.gen.jac)
891
- elif isinstance(i, (ast.Semi, ast.ArchRefChain)):
892
- self.emit(node, i.gen.jac)
893
- elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
894
- self.emit_ln(node, i.gen.jac)
895
- else:
896
- if start:
897
- self.emit(node, i.gen.jac)
898
- start = False
899
- else:
900
- self.emit(node, f" {i.gen.jac}")
901
- if isinstance(
902
- node.kid[-1], (ast.Semi, ast.CommentToken)
903
- ) and not node.gen.jac.endswith("\n"):
904
- self.emit_ln(node, "")
905
-
906
- def exit_atom_trailer(self, node: ast.AtomTrailer) -> None:
907
- """Sub objects.
908
-
909
- target: AtomType,
910
- right: IndexSlice | ArchRefType | Token,
911
- null_ok: bool,
912
- """
913
- for i in node.kid:
914
- self.emit(node, i.gen.jac)
915
-
916
- def exit_atom_unit(self, node: ast.AtomUnit) -> None:
917
- """Sub objects.
918
-
919
- value: AtomType | ExprType,
920
- is_paren: bool,
921
- is_null_ok: bool,
922
- """
923
- self.emit(node, f"({node.value.gen.jac})")
924
-
925
- def exit_yield_expr(self, node: ast.YieldExpr) -> None:
926
- """Sub objects.
927
-
928
- expr: Optional[ExprType],
929
- """
930
- if not node.with_from and node.expr:
931
- self.emit(node, f"yield {node.expr.gen.jac}")
932
- elif node.expr:
933
- self.emit(node, f"yield from {node.expr.gen.jac}")
934
- else:
935
- self.emit(node, "yield")
936
- if isinstance(node.kid[-1], ast.Token) and node.kid[-1].name == "SEMI":
937
- self.emit_ln(node, node.kid[-1].value + " ")
938
-
939
- def is_line_break_needed(self, content: str, max_line_length: int = 0) -> bool:
940
- """Check if the length of the current generated code exceeds the max line length."""
941
- if max_line_length == 0:
942
- max_line_length = self.MAX_LINE_LENGTH
943
- return len(content) > max_line_length
944
-
945
- def exit_binary_expr(self, node: ast.BinaryExpr) -> None:
946
- """Sub objects.
947
-
948
- left: ExprType,
949
- right: ExprType,
950
- op: Token | DisconnectOp | ConnectOp,
951
- """
952
- if isinstance(node.op, (ast.DisconnectOp, ast.ConnectOp)):
953
- self.emit(
954
- node,
955
- f"{node.left.gen.jac} {node.op.gen.jac} {node.right.gen.jac}", # noqa
20
+ self.MAX_LINE_LENGTH = settings.max_line_length
21
+
22
+ def transform(self, ir_in: uni.Module) -> uni.Module:
23
+ """After pass."""
24
+ ir_in.gen.jac = self.format_doc_ir()
25
+ return ir_in
26
+
27
+ def format_doc_ir(
28
+ self,
29
+ doc_node: Optional[doc.DocType] = None,
30
+ indent_level: int = 0,
31
+ width_remaining: Optional[int] = None,
32
+ is_broken: bool = False,
33
+ ) -> str:
34
+ """Recursively print a Doc node or a list of Doc nodes."""
35
+ if doc_node is None:
36
+ doc_node = self.ir_in.gen.doc_ir
37
+
38
+ if width_remaining is None:
39
+ width_remaining = self.MAX_LINE_LENGTH
40
+
41
+ if isinstance(doc_node, doc.Text):
42
+ return doc_node.text
43
+
44
+ elif isinstance(doc_node, doc.Line):
45
+ if is_broken or doc_node.hard:
46
+ return "\n" + " " * (indent_level * self.indent_size)
47
+ elif doc_node.literal: # literal soft line
48
+ return "\n"
49
+ elif doc_node.tight:
50
+ return ""
51
+ else: # soft line, not broken
52
+ return " "
53
+
54
+ elif isinstance(doc_node, doc.Group):
55
+ # Try to print flat first. For this attempt, the group itself isn't forced to break.
56
+ flat_contents_str = self.format_doc_ir(
57
+ doc_node.contents, indent_level, width_remaining, is_broken=False
956
58
  )
957
- elif isinstance(node.op, ast.Token):
958
59
  if (
959
- node.op.value
960
- in [
961
- *["+", "-", "*", "/", "%", "**"],
962
- *["+=", "-=", "*=", "/=", "%=", "**="],
963
- *[">>", "<<", ">>=", "<<="],
964
- *["//=", "&=", "|=", "^=", "~="],
965
- *["//", "&", "|", "^"],
966
- *[">", "<", ">=", "<=", "==", "!=", ":="],
967
- *["and", "or", "in", "not in", "is", "is not"],
968
- ]
969
- or node.op.name
970
- in [
971
- Tok.PIPE_BKWD,
972
- Tok.A_PIPE_BKWD,
973
- Tok.PIPE_FWD,
974
- Tok.KW_SPAWN,
975
- Tok.A_PIPE_FWD,
976
- ]
977
- or (
978
- node.op.name == Tok.PIPE_FWD
979
- and isinstance(node.right, ast.TupleVal)
980
- )
60
+ "\n" not in flat_contents_str
61
+ and len(flat_contents_str) <= width_remaining
981
62
  ):
982
-
983
- self.emit(
984
- node,
985
- f"{node.left.gen.jac} {node.op.value} {node.right.gen.jac}",
986
- )
63
+ return flat_contents_str
987
64
  else:
988
- self.error(
989
- f"Binary operator {node.op.value} not supported in bootstrap Jac"
65
+ full_width_for_broken_content = self.MAX_LINE_LENGTH - (
66
+ indent_level * self.indent_size
990
67
  )
991
- if isinstance(
992
- node.kid[-1], (ast.Semi, ast.CommentToken)
993
- ) and not node.gen.jac.endswith("\n"):
994
- self.emit_ln(node, node.kid[-1].value)
995
-
996
- def exit_compare_expr(self, node: ast.CompareExpr) -> None:
997
- """Sub objects.
998
-
999
- left: Expr,
1000
- rights: list[Expr],
1001
- ops: list[Token],
1002
- """
1003
- self.emit(node, f"{node.left.gen.jac} ")
1004
- for i in range(len(node.rights)):
1005
- self.emit(node, f"{node.ops[i].value} {node.rights[i].gen.jac}")
1006
- if isinstance(
1007
- node.kid[-1], (ast.Semi, ast.CommentToken)
1008
- ) and not node.gen.jac.endswith("\n"):
1009
- self.emit_ln(node, node.kid[-1].value)
1010
-
1011
- def exit_has_var(self, node: ast.HasVar) -> None:
1012
- """Sub objects.
1013
-
1014
- name: Token,
1015
- type_tag: TypeSpec,
1016
- value: Optional["ExprType"],
1017
- """
1018
- for i in node.kid:
1019
- if isinstance(i, ast.SubTag):
1020
- for j in i.kid:
1021
- (
1022
- self.emit(node, j.gen.jac)
1023
- if not j.gen.jac.startswith(":")
1024
- else self.emit(node, f"{j.gen.jac} ")
1025
- )
1026
- elif isinstance(i, ast.Token) and i.gen.jac == ":":
1027
- self.emit(node, i.gen.jac)
1028
- else:
1029
- self.emit(node, f" {i.gen.jac}")
1030
- if isinstance(node.kid[-1], ast.CommentToken) and not node.gen.jac.endswith(
1031
- "\n"
1032
- ):
1033
- self.emit_ln(node, "")
1034
-
1035
- def exit_if_stmt(self, node: ast.IfStmt) -> None:
1036
- """Sub objects.
1037
-
1038
- condition: ExprType,
1039
- body: CodeBlock,
1040
- elseifs: Optional[ElseIfs],
1041
- else_body: Optional[ElseStmt],
1042
- """
1043
- start = True
1044
- for i in node.kid:
1045
- if isinstance(i, ast.CommentToken):
1046
- if i.is_inline:
1047
- self.emit(node, f" {i.gen.jac}")
1048
- else:
1049
- self.emit_ln(node, i.gen.jac)
1050
- elif isinstance(i, (ast.Semi, ast.SubNodeList)):
1051
- self.emit(node, i.gen.jac)
1052
- else:
1053
- if start:
1054
- self.emit(node, i.gen.jac)
1055
- start = False
1056
- else:
1057
- self.emit(node, f" {i.gen.jac}")
1058
- if isinstance(
1059
- node.kid[-1], (ast.Semi, ast.CommentToken)
1060
- ) and not node.gen.jac.endswith("\n"):
1061
- self.emit_ln(node, "")
1062
-
1063
- def exit_else_if(self, node: ast.ElseIf) -> None:
1064
- """Sub objects.
1065
-
1066
- elseifs: list[IfStmt],
1067
- """
1068
- start = True
1069
- for i in node.kid:
1070
- if isinstance(i, ast.CommentToken):
1071
- if i.is_inline:
1072
- self.emit(node, f" {i.gen.jac}")
1073
- else:
1074
- self.emit_ln(node, i.gen.jac)
1075
- elif isinstance(i, (ast.Semi, ast.SubNodeList)):
1076
- self.emit(node, i.gen.jac)
1077
- else:
1078
- if start:
1079
- self.emit(node, i.gen.jac)
1080
- start = False
1081
- else:
1082
- self.emit(node, f" {i.gen.jac}")
1083
-
1084
- def exit_disengage_stmt(self, node: ast.DisengageStmt) -> None:
1085
- """Sub objects."""
1086
- for i in node.kid:
1087
- self.emit(node, i.gen.jac)
1088
- self.indent_level -= 1
1089
- self.emit_ln(node, "")
1090
- self.indent_level += 1
1091
-
1092
- def exit_else_stmt(self, node: ast.ElseStmt) -> None:
1093
- """Sub objects.
1094
-
1095
- body: CodeBlock,
1096
- """
1097
- start = True
1098
- for i in node.kid:
1099
- if isinstance(i, ast.CommentToken):
1100
- if i.is_inline:
1101
- self.emit(node, f" {i.gen.jac}")
1102
- else:
1103
- self.emit_ln(node, i.gen.jac)
1104
- elif isinstance(i, (ast.Semi, ast.SubNodeList)):
1105
- self.emit(node, i.gen.jac)
1106
- else:
1107
- if start:
1108
- self.emit(node, i.gen.jac)
1109
- start = False
1110
- else:
1111
- self.emit(node, f" {i.gen.jac}")
1112
-
1113
- def exit_expr_stmt(self, node: ast.ExprStmt) -> None:
1114
- """Sub objects.
1115
-
1116
- expr: ExprType,
1117
- """
1118
- start = True
1119
- for i in node.kid:
1120
- if isinstance(i, ast.CommentToken):
1121
- if i.is_inline:
1122
- self.emit(node, f" {i.gen.jac}")
1123
- elif (tok := self.token_before(i)) and (i.line_no - tok.line_no == 1):
1124
- self.emit_ln(node, "")
1125
- self.emit(node, i.gen.jac)
1126
- else:
1127
- self.emit_ln(node, "")
1128
- self.emit_ln(node, "")
1129
- self.emit(node, i.gen.jac)
1130
- elif isinstance(i, ast.Semi):
1131
- self.emit(node, i.gen.jac)
1132
- else:
1133
- if start:
1134
- self.emit(node, i.gen.jac)
1135
- start = False
1136
- else:
1137
- self.emit(node, f" {i.gen.jac}")
1138
- if isinstance(
1139
- node.kid[-1], (ast.Semi, ast.CommentToken)
1140
- ): # and not node.gen.jac.endswith("\n"):
1141
- self.emit_ln(node, "")
1142
-
1143
- def exit_iter_for_stmt(self, node: ast.IterForStmt) -> None:
1144
- """Sub objects.
1145
-
1146
- iter: Assignment,
1147
- condition: ExprType,
1148
- count_by: ExprType,
1149
- body: CodeBlock,
1150
- """
1151
- if (
1152
- node.parent
1153
- and node.parent.parent
1154
- and isinstance(node.parent.parent, (ast.Ability))
1155
- ):
1156
- self.emit_ln(node, "")
1157
-
1158
- start = True
1159
- for i in node.kid:
1160
- if i in [node.iter, node.condition, node.count_by]:
1161
- i.gen.jac = i.gen.jac.replace(" ", "")
1162
- if isinstance(i, ast.CommentToken):
1163
- if i.is_inline:
1164
- self.emit(node, f" {i.gen.jac}")
1165
- else:
1166
- self.emit_ln(node, i.gen.jac)
1167
- elif isinstance(i, ast.Semi):
1168
- self.emit(node, i.gen.jac)
1169
- else:
1170
- if start:
1171
- self.emit(node, i.gen.jac)
1172
- start = False
1173
- else:
1174
- self.emit(node, f" {i.gen.jac}")
1175
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1176
- self.emit_ln(node, "")
1177
-
1178
- def exit_try_stmt(self, node: ast.TryStmt) -> None:
1179
- """Sub objects.
1180
-
1181
- body: CodeBlock,
1182
- excepts: Optional[ExceptList],
1183
- finally_body: Optional[FinallyStmt],
1184
- """
1185
- if (
1186
- node.parent
1187
- and node.parent.parent
1188
- and not isinstance(node.parent.parent, (ast.Ability, ast.ModuleCode))
1189
- and node.parent.kid[1].gen.jac != "self.jaseci_sdk = {};\n"
1190
- ):
1191
- self.emit_ln(node, "")
1192
- start = True
1193
- for i in node.kid:
1194
- if isinstance(i, ast.CommentToken):
1195
- if i.is_inline:
1196
- self.emit(node, f" {i.gen.jac}")
1197
- else:
1198
- if not node.gen.jac.endswith("\n"):
1199
- self.emit_ln(node, "")
1200
- self.emit_ln(node, "")
1201
- self.emit(node, i.gen.jac)
1202
- elif isinstance(i, ast.Semi):
1203
- self.emit(node, i.gen.jac)
1204
- else:
1205
- if isinstance(i, (ast.ElseStmt, ast.FinallyStmt)) or start:
1206
- self.emit(node, i.gen.jac)
1207
- start = False
1208
- else:
1209
- self.emit(node, f" {i.gen.jac}")
1210
- if isinstance(
1211
- node.kid[-1], (ast.Semi, ast.CommentToken)
1212
- ) and not node.gen.jac.endswith("\n"):
1213
- self.emit_ln(node, "")
1214
-
1215
- def exit_except(self, node: ast.Except) -> None:
1216
- """Sub objects.
1217
-
1218
- typ: ExprType,
1219
- name: Optional[Token],
1220
- body: CodeBlock,
1221
- """
1222
- if (
1223
- node.parent
1224
- and node.parent.parent
1225
- and isinstance(node.parent.parent, (ast.Ability))
1226
- ):
1227
- self.emit_ln(node, "")
1228
- start = True
1229
- for i in node.kid:
1230
- if isinstance(i, ast.CommentToken):
1231
- if i.is_inline:
1232
- self.emit(node, f" {i.gen.jac}")
1233
- else:
1234
- if not node.gen.jac.endswith("\n"):
1235
- self.emit_ln(node, "")
1236
- self.emit_ln(node, "")
1237
- self.emit(node, i.gen.jac)
1238
- elif isinstance(i, ast.Semi):
1239
- self.emit(node, i.gen.jac)
1240
- else:
1241
- if start or isinstance(i, ast.SubNodeList):
1242
- self.emit(node, i.gen.jac)
1243
- start = False
1244
- else:
1245
- self.emit(node, f" {i.gen.jac}")
1246
- if isinstance(
1247
- node.kid[-1], (ast.Semi, ast.CommentToken)
1248
- ) and not node.gen.jac.endswith("\n"):
1249
- self.emit_ln(node, "")
1250
-
1251
- def exit_finally_stmt(self, node: ast.FinallyStmt) -> None:
1252
- """Sub objects.
1253
-
1254
- body: CodeBlock,
1255
- """
1256
- self.emit(node, " finally")
1257
-
1258
- self.emit(node, node.body.gen.jac)
1259
-
1260
- def exit_while_stmt(self, node: ast.WhileStmt) -> None:
1261
- """Sub objects.
1262
-
1263
- condition: ExprType,
1264
- body: CodeBlock,
1265
- """
1266
- if (
1267
- node.parent
1268
- and node.parent.parent
1269
- and isinstance(node.parent.parent, (ast.Ability))
1270
- and (node.parent.kid[1].gen.jac != "prev_info = [];\n")
1271
- ):
1272
- self.emit_ln(node, "")
1273
- start = True
1274
- for i in node.kid:
1275
- if isinstance(i, ast.CommentToken):
1276
- if i.is_inline:
1277
- self.emit(node, f" {i.gen.jac}")
1278
- else:
1279
- if not node.gen.jac.endswith("\n"):
1280
- self.emit_ln(node, "")
1281
- self.emit_ln(node, "")
1282
- self.emit(node, i.gen.jac)
1283
- elif isinstance(i, (ast.Semi, ast.SubNodeList)):
1284
- self.emit(node, i.gen.jac)
1285
- else:
1286
- if start:
1287
- self.emit(node, i.gen.jac)
1288
- start = False
1289
- else:
1290
- self.emit(node, f" {i.gen.jac}")
1291
- if isinstance(
1292
- node.kid[-1], (ast.Semi, ast.CommentToken)
1293
- ) and not node.gen.jac.endswith("\n"):
1294
- self.emit_ln(node, "")
1295
-
1296
- def exit_with_stmt(self, node: ast.WithStmt) -> None:
1297
- """Sub objects.
1298
-
1299
- exprs: "ExprAsItemList",
1300
- body: "CodeBlock",
1301
- """
1302
- self.comma_sep_node_list(node.exprs)
1303
- self.emit(node, f"with {node.exprs.gen.jac}")
1304
- if node.body.gen.jac:
1305
- self.emit(node, node.body.gen.jac)
1306
-
1307
- def exit_module_item(self, node: ast.ModuleItem) -> None:
1308
- """Sub objects.
1309
-
1310
- name: Token,
1311
- alias: Optional[Token],
1312
- """
1313
- if node.alias:
1314
- self.emit(node, node.name.value + " as " + node.alias.value)
1315
- else:
1316
- self.emit(node, node.name.value)
1317
-
1318
- def exit_global_stmt(self, node: ast.GlobalStmt) -> None:
1319
- """Sub objects.
1320
-
1321
- target: SubNodeList[NameType],
1322
- """
1323
- for i in node.kid:
1324
- if isinstance(i, ast.CommentToken):
1325
- if i.is_inline:
1326
- self.emit(node, f" {i.gen.jac}")
1327
- else:
1328
- self.emit_ln(node, i.gen.jac)
1329
- self.emit_ln(node, "")
1330
- elif isinstance(i, ast.Semi):
1331
- self.emit_ln(node, i.gen.jac)
1332
- else:
1333
- self.emit(node, f"{i.gen.jac} ")
1334
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1335
- self.emit_ln(node, "")
1336
-
1337
- def exit_non_local_stmt(self, node: ast.GlobalStmt) -> None:
1338
- """Sub objects.
1339
-
1340
- target: SubNodeList[NameType],
1341
- """
1342
- for i in node.kid:
1343
- if isinstance(i, ast.CommentToken):
1344
- if i.is_inline:
1345
- self.emit(node, f" {i.gen.jac}")
1346
- else:
1347
- self.emit_ln(node, i.gen.jac)
1348
- self.emit_ln(node, "")
1349
- elif isinstance(i, ast.Semi):
1350
- self.emit_ln(node, i.gen.jac)
1351
- else:
1352
- self.emit(node, f"{i.gen.jac} ")
1353
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1354
- self.emit_ln(node, "")
1355
-
1356
- def handle_long_assignment(self, node: ast.Assignment, kid: ast.AstNode) -> None:
1357
- """Handle long assignment lines."""
1358
- parts = re.split(r"(=)", kid.gen.jac)
1359
- first_part = parts.pop(0).strip()
1360
- self.emit_ln(
1361
- node, f"{first_part} {parts.pop(0).strip()} {parts.pop(0).strip()}"
1362
- )
1363
- for j in range(0, len(parts) - 1, 2):
1364
- op = parts[j]
1365
- var = parts[j + 1].strip() if j + 1 < len(parts) else ""
1366
- if var:
1367
- self.indent_level += 1
1368
- self.emit(node, f"{op} {var}")
1369
- self.indent_level -= 1
1370
- self.emit_ln(node, "")
1371
- else:
1372
- self.indent_level += 1
1373
- self.emit(node, op)
1374
- self.indent_level -= 1
1375
-
1376
- def handle_long_expression(self, node: ast.AstNode, kid: ast.AstNode) -> None:
1377
- """Handle long expressions with multiple operators."""
1378
- parts = re.split(r"(\+|\-|\*|\/)", kid.gen.jac)
1379
- self.emit_ln(node, f"{parts.pop(0).strip()}")
1380
- for j in range(0, len(parts) - 1, 2):
1381
- op = parts[j]
1382
- var = parts[j + 1].strip() if j + 1 < len(parts) else ""
1383
- if j < len(parts) - 2:
1384
- self.indent_level += 1
1385
- self.emit(node, f"{op} {var}")
1386
- self.indent_level -= 1
1387
- self.emit_ln(node, "")
1388
- else:
1389
- self.indent_level += 1
1390
- self.emit(node, f"{op} {var}")
1391
- self.indent_level -= 1
1392
-
1393
- def exit_assignment(self, node: ast.Assignment) -> None:
1394
- """Sub objects.
1395
-
1396
- target: SubNodeList[Expr],
1397
- value: Optional[Expr | YieldExpr],
1398
- type_tag: Optional[SubTag[Expr]],
1399
- mutable: bool = True,
1400
- aug_op: Optional[Token] = None,
1401
- semstr: Optional[String] = None,
1402
- is_enum_stmt: bool = False,
1403
- """
1404
- prev_token = None
1405
- for kid in node.kid:
1406
- if isinstance(kid, ast.CommentToken):
1407
- if kid.is_inline:
1408
- self.emit(node, kid.gen.jac)
1409
- else:
1410
- if kid.gen.jac not in [
1411
- "# Update any new user level buddy schedule",
1412
- "# Construct prompt here",
1413
- ]:
1414
- self.emit_ln(node, "")
1415
- self.emit_ln(node, "")
1416
- self.emit_ln(node, kid.gen.jac)
1417
- else:
1418
- self.emit_ln(node, "")
1419
- self.emit(node, kid.gen.jac)
1420
- elif isinstance(kid, ast.Token) and (
1421
- kid.name == Tok.KW_LET or kid.gen.jac == ":"
1422
- ):
1423
- self.emit(node, f"{kid.gen.jac} ")
1424
- elif isinstance(kid, ast.Token) and "=" in kid.gen.jac:
1425
- self.emit(node, f" {kid.gen.jac} ")
1426
- elif (
1427
- "=" in kid.gen.jac
1428
- and self.is_line_break_needed(
1429
- kid.gen.jac, max_line_length=self.MAX_LINE_LENGTH * 2
68
+ return self.format_doc_ir(
69
+ doc_node.contents,
70
+ indent_level,
71
+ full_width_for_broken_content,
72
+ is_broken=True,
1430
73
  )
1431
- and "\n" not in kid.gen.jac
1432
- ):
1433
- self.handle_long_assignment(node, kid)
1434
- elif (
1435
- prev_token
1436
- and "=" in prev_token.gen.jac
1437
- and self.is_line_break_needed(
1438
- kid.gen.jac, max_line_length=self.MAX_LINE_LENGTH * 2
1439
- )
1440
- and "\n" not in kid.gen.jac
1441
- ):
1442
- self.handle_long_expression(node, kid)
1443
- else:
1444
- self.emit(node, kid.gen.jac)
1445
- prev_token = kid
1446
- if isinstance(
1447
- node.kid[-1], (ast.Semi, ast.CommentToken)
1448
- ) and not node.gen.jac.endswith("\n"):
1449
- self.emit_ln(node, "")
1450
-
1451
- def exit_architype(self, node: ast.Architype) -> None:
1452
- """Sub objects.
1453
-
1454
- name: Name,
1455
- arch_type: Token,
1456
- access: Optional[SubTag[Token]],
1457
- base_classes: Optional[SubNodeList[AtomType]],
1458
- body: Optional[SubNodeList[ArchBlockStmt] | ArchDef],
1459
- doc: Optional[Constant] = None,
1460
- decorators: Optional[SubNodeList[ExprType]] = None,
1461
- """
1462
- start = True
1463
- prev_token = None
1464
- for i in node.kid:
1465
- if isinstance(i, ast.String):
1466
- if prev_token and prev_token.gen.jac.strip() == "obj":
1467
- self.emit(node, " ")
1468
- self.emit_ln(node, i.gen.jac)
1469
- elif isinstance(i, ast.CommentToken):
1470
- if i.is_inline:
1471
- self.emit(node, i.gen.jac)
1472
- if isinstance(prev_token, ast.Semi):
1473
- self.emit_ln(node, "")
1474
- elif (tok := self.token_before(i)) and (i.line_no - tok.line_no > 1):
1475
- self.emit_ln(node, "")
1476
- self.emit_ln(node, i.gen.jac)
1477
- else:
1478
- self.emit_ln(node, i.gen.jac)
1479
- self.emit_ln(node, "")
1480
- elif isinstance(i, ast.Semi):
1481
- self.emit(node, f"{i.gen.jac} ")
1482
- elif isinstance(i, ast.SubNodeList) and i.gen.jac.startswith("@"):
1483
- self.emit_ln(node, i.gen.jac)
1484
- else:
1485
- if start or (prev_token and isinstance(prev_token, ast.String)):
1486
- self.emit(node, i.gen.jac)
1487
- start = False
1488
- elif i.gen.jac.startswith(" "):
1489
- self.emit(node, i.gen.jac)
1490
- else:
1491
- self.emit(node, f" {i.gen.jac}")
1492
- prev_token = i
1493
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
1494
- self.emit_ln(node, "")
1495
-
1496
- def exit_f_string(self, node: ast.FString) -> None:
1497
- """Sub objects.
1498
-
1499
- parts: list["Token | ExprType"],
1500
- """
1501
- self.emit(
1502
- node, node.kid[0].value if isinstance(node.kid[0], ast.Token) else 'f"'
1503
- )
1504
- if node.parts:
1505
- for part in node.parts.items:
1506
- if isinstance(part, ast.String) and part.name in [
1507
- Tok.FSTR_PIECE,
1508
- Tok.FSTR_SQ_PIECE,
1509
- Tok.FSTR_BESC,
1510
- ]:
1511
- self.emit(node, f"{part.gen.jac}")
1512
- else:
1513
- self.emit(node, "{" + part.gen.jac + "}")
1514
- self.emit(
1515
- node, node.kid[-1].value if isinstance(node.kid[-1], ast.Token) else '"'
1516
- )
1517
-
1518
- def exit_if_else_expr(self, node: ast.IfElseExpr) -> None:
1519
- """Sub objects.
1520
74
 
1521
- condition: BinaryExpr | IfElseExpr,
1522
- value: ExprType,
1523
- else_value: ExprType,
1524
- """
1525
- self.emit(
1526
- node,
1527
- f"{node.value.gen.jac} if {node.condition.gen.jac} "
1528
- f"else {node.else_value.gen.jac}",
1529
- )
75
+ elif isinstance(doc_node, doc.Indent):
76
+ new_indent_level = indent_level + 1
1530
77
 
1531
- def decl_def_missing(self, decl: str = "this") -> None:
1532
- """Warn about declaration."""
1533
- self.error(
1534
- f"Unable to find definition for {decl} declaration. Perhaps there's an `include` missing?" # noqa
1535
- )
78
+ width_for_indented_content = self.MAX_LINE_LENGTH - (
79
+ new_indent_level * self.indent_size
80
+ )
81
+ return self.format_doc_ir(
82
+ doc_node.contents,
83
+ new_indent_level,
84
+ width_for_indented_content, # Budget for lines within indent
85
+ is_broken, # is_broken state propagates
86
+ )
1536
87
 
1537
- def exit_bool_expr(self, node: ast.BoolExpr) -> None:
1538
- """Sub objects.
88
+ elif isinstance(doc_node, doc.Concat):
89
+ result = ""
90
+ # current_line_budget is the space left on the current line for the current part.
91
+ current_line_budget = width_remaining
1539
92
 
1540
- op: Token,
1541
- values: list[Expr],
1542
- """
1543
- end = node.values[-1]
1544
- test_str = ""
1545
- for i in node.values:
1546
- test_str += f"{i.gen.jac}"
1547
- if i != end:
1548
- test_str += f" {node.op.value} "
93
+ for part in doc_node.parts:
94
+ part_str = self.format_doc_ir(
95
+ part, indent_level, current_line_budget, is_broken
96
+ )
97
+ result += part_str
1549
98
 
1550
- # Check if line break is needed
1551
- if self.is_line_break_needed(test_str):
1552
- for i in node.values:
1553
- if i != end:
1554
- self.emit_ln(node, f"{i.gen.jac}")
1555
- else:
1556
- self.emit(node, f"{i.gen.jac}")
1557
- if i != end:
1558
- self.emit(
1559
- node,
1560
- " " * self.indent_size + f"{node.op.value} ",
1561
- strip_mode=False,
99
+ if "\n" in part_str:
100
+ # part_str created a newline. The next part starts on a new line.
101
+ # Its budget is the full width available at this indent level.
102
+ current_line_budget = self.MAX_LINE_LENGTH - (
103
+ indent_level * self.indent_size
1562
104
  )
1563
- else:
1564
- self.emit(node, test_str)
1565
-
1566
- def exit_lambda_expr(self, node: ast.LambdaExpr) -> None:
1567
- """Sub objects.
1568
-
1569
- signature: FuncSignature,
1570
- body: Expr,
1571
- """
1572
- out = ""
1573
- if node.signature and node.signature.params:
1574
- self.comma_sep_node_list(node.signature.params)
1575
- out += node.signature.params.gen.jac
1576
- if node.signature and node.signature.return_type:
1577
- out += f" -> {node.signature.return_type.gen.jac}"
1578
- self.emit(node, f"with {out} can {node.body.gen.jac}")
1579
-
1580
- def exit_unary_expr(self, node: ast.UnaryExpr) -> None:
1581
- """Sub objects.
1582
-
1583
- operand: ExprType,
1584
- op: Token,
1585
- """
1586
- if node.op.value in ["-", "~", "+", "*", "**"]:
1587
- self.emit(node, f"{node.op.value}{node.operand.gen.jac}")
1588
- elif node.op.value == "(":
1589
- self.emit(node, f"({node.operand.gen.jac})")
1590
- elif node.op.value == "not":
1591
- self.emit(node, f"not {node.operand.gen.jac}")
1592
- elif node.op.name in [Tok.PIPE_FWD, Tok.KW_SPAWN, Tok.A_PIPE_FWD]:
1593
- self.emit(node, f"{node.op.value} {node.operand.gen.jac}")
1594
- elif node.op.name in [Tok.BW_AND]:
1595
- self.emit(node, f"{node.op.value}{node.operand.gen.jac}")
1596
- else:
1597
- self.error(f"Unary operator {node.op.value} not supported in bootstrap Jac")
1598
-
1599
- def exit_raise_stmt(self, node: ast.RaiseStmt) -> None:
1600
- """Sub objects.
1601
-
1602
- cause: Optional[ExprType],
1603
- """
1604
- start = True
1605
- for i in node.kid:
1606
- if isinstance(i, ast.CommentToken):
1607
- if i.is_inline:
1608
- self.emit(node, f" {i.gen.jac}")
1609
- else:
1610
- self.emit_ln(node, i.gen.jac)
1611
- elif isinstance(i, ast.Semi):
1612
- self.emit(node, i.gen.jac)
1613
- else:
1614
- if start:
1615
- self.emit(node, i.gen.jac)
1616
- start = False
1617
- else:
1618
- self.emit(node, f" {i.gen.jac}")
1619
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1620
- self.emit_ln(node, "")
1621
-
1622
- def exit_edge_ref_trailer(self, node: ast.EdgeRefTrailer) -> None:
1623
- """Sub objects.
1624
-
1625
- edge_ref: EdgeRef,
1626
- """
1627
- for i in node.kid:
1628
- self.emit(node, i.gen.jac)
1629
-
1630
- def exit_edge_op_ref(self, node: ast.EdgeOpRef) -> None:
1631
- """Sub objects.
1632
-
1633
- filter_cond: Optional[ExprType],
1634
- edge_dir: EdgeDir,
1635
- """
1636
- for i in node.kid:
1637
- self.emit(node, i.gen.jac)
1638
-
1639
- def exit_index_slice(self, node: ast.IndexSlice) -> None:
1640
- """Sub objects.
1641
-
1642
- slices: list[Slice],
1643
- is_range: bool,
1644
- """
1645
- for i in node.kid:
1646
- self.emit(node, i.gen.jac)
1647
-
1648
- def exit_list_val(self, node: ast.ListVal) -> None:
1649
- """Sub objects.
1650
-
1651
- values: Optional[SubNodeList[ExprType]],
1652
- """
1653
- line_break_needed = False
1654
- indented = False
1655
- for i in node.kid:
1656
- if isinstance(i, ast.SubNodeList):
1657
- line_break_needed = self.is_line_break_needed(i.gen.jac, 88)
1658
- if line_break_needed:
1659
- self.emit_ln(node, "")
1660
- self.indent_level += 1
1661
- indented = True
1662
- for j in i.kid:
1663
- if j.gen.jac == (","):
1664
- self.indent_level -= 1
1665
- self.emit(node, f"{j.gen.jac}\n")
1666
- self.indent_level += 1
1667
- else:
1668
- self.emit(node, f"{j.gen.jac}")
1669
- else:
1670
- self.emit(node, f"{i.gen.jac}")
1671
- if indented:
1672
- self.indent_level -= 1
1673
- self.emit(node, "\n")
105
+ # Subtract what the *last line* of part_str consumed from this budget.
106
+ # The characters on the last line after the indent string.
107
+ indent_str_len = indent_level * self.indent_size
108
+ last_line_of_part = part_str.splitlines()[-1]
109
+
110
+ content_on_last_line = 0
111
+ if last_line_of_part.startswith(" " * indent_str_len):
112
+ content_on_last_line = len(last_line_of_part) - indent_str_len
113
+ else: # It was a line not starting with the full indent (e.g. literal \n)
114
+ content_on_last_line = len(last_line_of_part)
115
+
116
+ current_line_budget -= content_on_last_line
117
+ else:
118
+ # part_str stayed on the same line. Reduce budget for next part on this line.
119
+ current_line_budget -= len(part_str)
120
+
121
+ if current_line_budget < 0: # Ensure budget isn't negative
122
+ current_line_budget = 0
123
+ return result
124
+
125
+ elif isinstance(doc_node, doc.IfBreak):
126
+ if is_broken:
127
+ return self.format_doc_ir(
128
+ doc_node.break_contents, indent_level, width_remaining, is_broken
129
+ )
1674
130
  else:
1675
- self.emit(node, i.gen.jac)
1676
-
1677
- def exit_set_val(self, node: ast.ListVal) -> None:
1678
- """Sub objects.
131
+ return self.format_doc_ir(
132
+ doc_node.flat_contents, indent_level, width_remaining, is_broken
133
+ )
1679
134
 
1680
- values: list[ExprType],
1681
- """
1682
- if node.values is not None:
1683
- self.emit(
1684
- node,
1685
- f"{{{node.values.gen.jac}}}",
135
+ elif isinstance(doc_node, doc.Align):
136
+ align_spaces = doc_node.n if doc_node.n is not None else self.indent_size
137
+ # effective_total_indent_spaces_for_children = (
138
+ # indent_level * self.indent_size
139
+ # ) + align_spaces
140
+ child_indent_level_for_align = indent_level + (
141
+ align_spaces // self.indent_size
1686
142
  )
1687
143
 
1688
- def exit_dict_val(self, node: ast.DictVal) -> None:
1689
- """Sub objects.
1690
-
1691
- kv_pairs: list["KVPair"],
1692
- """
1693
- start = True
1694
- prev_token = None
1695
- line_break_needed = False
1696
- indented = False
1697
- test_str = ""
1698
- if node.kv_pairs:
1699
- test_str = "{"
1700
- for j in node.kv_pairs:
1701
- test_str += f"{j.gen.jac}"
1702
- test_str += "};"
1703
- for i in node.kid:
1704
- if isinstance(i, ast.CommentToken):
1705
- if i.is_inline:
1706
- self.emit(node, f" {i.gen.jac}")
1707
- else:
1708
- self.emit_ln(node, i.gen.jac)
1709
- elif self.is_line_break_needed(test_str, 60) and i.gen.jac == "{":
1710
- self.emit_ln(node, f"{i.gen.jac}")
1711
- line_break_needed = True
1712
- elif isinstance(prev_token, ast.Token) and prev_token.name == Tok.LBRACE:
1713
- if line_break_needed and not indented:
1714
- self.indent_level += 1
1715
- indented = True
1716
- self.emit(node, f"{i.gen.jac}")
1717
- elif isinstance(i, ast.Semi) or i.gen.jac == ",":
1718
- if line_break_needed and indented:
1719
- self.indent_level -= 1
1720
- self.emit_ln(node, f"{i.gen.jac}")
1721
- self.indent_level += 1
1722
- else:
1723
- self.emit(node, f"{i.gen.jac}")
1724
- else:
1725
- if start or i.gen.jac == "}":
1726
- if line_break_needed:
1727
- self.indent_level -= 1
1728
- self.emit(node, f"\n{i.gen.jac}")
1729
- line_break_needed = False
1730
- indented = False
1731
- else:
1732
- self.emit(node, i.gen.jac)
1733
- else:
1734
- if line_break_needed:
1735
- self.emit(node, f"{i.gen.jac}")
1736
- else:
1737
- self.emit(node, f" {i.gen.jac}")
1738
-
1739
- start = False
1740
- prev_token = i
1741
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1742
- self.emit_ln(node, "")
1743
-
1744
- def exit_inner_compr(self, node: ast.InnerCompr) -> None:
1745
- """Sub objects.
1746
-
1747
- is_async: bool,
1748
- target: ExprType,
1749
- collection: ExprType,
1750
- conditional: Optional[ExprType],
1751
- """
1752
- partial = (
1753
- f"{'async' if node.is_async else ''} for {node.target.gen.jac} in "
1754
- f"{node.collection.gen.jac}"
1755
- )
1756
- if node.conditional:
1757
- partial += " if " + " if ".join(i.gen.jac for i in node.conditional)
1758
- self.emit(node, f"{partial}")
1759
-
1760
- def exit_list_compr(self, node: ast.ListCompr) -> None:
1761
- """Sub objects.
1762
-
1763
- out_expr: ExprType,
1764
- compr: InnerCompr,
1765
- """
1766
- for i in node.kid:
1767
- self.emit(node, i.gen.jac)
1768
-
1769
- def exit_gen_compr(self, node: ast.GenCompr) -> None:
1770
- """Sub objects.
1771
-
1772
- out_expr: ExprType,
1773
- compr: InnerCompr,
1774
- """
1775
- self.emit(
1776
- node, f"({node.out_expr.gen.jac} {' '.join(i.gen.jac for i in node.compr)})"
1777
- )
1778
-
1779
- def exit_set_compr(self, node: ast.SetCompr) -> None:
1780
- """Sub objects.
1781
-
1782
- out_expr: ExprType,
1783
- compr: InnerCompr,
1784
- """
1785
- self.emit(
1786
- node,
1787
- f"{{{node.out_expr.gen.jac} {' '.join(i.gen.jac for i in node.compr)}}}",
1788
- )
1789
-
1790
- def exit_dict_compr(self, node: ast.DictCompr) -> None:
1791
- """Sub objects.
1792
-
1793
- kv_pair: KVPair,
1794
- compr: InnerCompr,
1795
- """
1796
- self.emit(
1797
- node,
1798
- f"{{{node.kv_pair.gen.jac} {' '.join(i.gen.jac for i in node.compr)}}}",
1799
- )
1800
-
1801
- def exit_k_v_pair(self, node: ast.KVPair) -> None:
1802
- """Sub objects.
1803
-
1804
- key: ExprType,
1805
- value: ExprType,
1806
- """
1807
- for i in node.kid:
1808
- if i.gen.jac == ":":
1809
- self.emit(node, f"{i.gen.jac} ")
1810
- else:
1811
- self.emit(node, i.gen.jac)
1812
-
1813
- def exit_k_w_pair(self, node: ast.KWPair) -> None:
1814
- """Sub objects.
1815
-
1816
- key: ExprType,
1817
- value: ExprType,
1818
- """
1819
- if node.key:
1820
- self.emit(node, f"{node.key.gen.jac}={node.value.gen.jac}")
1821
- else:
1822
- self.emit(node, f"**{node.value.gen.jac}")
1823
-
1824
- def exit_disconnect_op(self, node: ast.DisconnectOp) -> None:
1825
- """Sub objects.
1826
-
1827
- filter_cond: Optional[ExprType],
1828
- edge_dir: EdgeDir,
1829
- """
1830
- for i in node.kid:
1831
- self.emit(node, i.gen.jac)
1832
-
1833
- def exit_connect_op(self, node: ast.ConnectOp) -> None:
1834
- """Sub objects.
1835
-
1836
- spawn: Optional[ExprType],
1837
- edge_dir: EdgeDir,
1838
- """
1839
- for i in node.kid:
1840
- self.emit(node, i.gen.jac)
1841
-
1842
- def exit_filter_compr(self, node: ast.FilterCompr) -> None:
1843
- """Sub objects.
1844
-
1845
- compares: list[BinaryExpr],
1846
- """
1847
- for i in node.kid:
1848
- self.emit(node, i.gen.jac)
1849
-
1850
- def exit_assign_compr(self, node: ast.AssignCompr) -> None:
1851
- """Sub objects.
1852
-
1853
- compares: list[BinaryExpr],
1854
- """
1855
- for i in node.kid:
1856
- self.emit(node, i.gen.jac)
1857
-
1858
- def exit_await_expr(self, node: ast.AwaitExpr) -> None:
1859
- """Sub objects.
1860
-
1861
- target: ExprType,
1862
- """
1863
- for i in node.kid:
1864
- self.emit(node, i.gen.jac)
1865
-
1866
- def exit_revisit_stmt(self, node: ast.RevisitStmt) -> None:
1867
- """Sub objects.
1868
-
1869
- hops: Optional[ExprType],
1870
- else_body: Optional[ElseStmt],
1871
- """
1872
- for i in node.kid:
1873
- self.emit(node, i.gen.jac)
1874
-
1875
- def exit_visit_stmt(self, node: ast.VisitStmt) -> None:
1876
- """Sub objects.
1877
-
1878
- vis_type: Optional[SubTag[SubNodeList[Name]]],
1879
- target: ExprType,
1880
- else_body: Optional[ElseStmt],
1881
- from_walker: bool = False,
1882
- """
1883
- for i in node.kid:
1884
- if isinstance(
1885
- i,
1886
- (
1887
- ast.EdgeRefTrailer,
1888
- ast.AtomTrailer,
1889
- ast.ElseStmt,
1890
- ast.SpecialVarRef,
1891
- ast.ListCompr,
1892
- ast.Name,
1893
- ),
1894
- ):
1895
- self.emit(node, f" {i.gen.jac}")
1896
- else:
1897
- self.emit(node, i.gen.jac)
1898
- self.emit_ln(node, "")
1899
-
1900
- def exit_ignore_stmt(self, node: ast.IgnoreStmt) -> None:
1901
- """Sub objects.
1902
-
1903
- target: ExprType,
1904
- """
1905
- if node.target:
1906
- self.emit_ln(node, f"ignore {node.target.gen.jac};")
1907
- else:
1908
- self.emit_ln(node, "ignore;")
1909
-
1910
- def exit_return_stmt(self, node: ast.ReturnStmt) -> None:
1911
- """Sub objects.
1912
-
1913
- expr: Optional[ExprType],
1914
- """
1915
- start = True
1916
- for i in node.kid:
1917
- if isinstance(i, ast.CommentToken):
1918
- if i.is_inline:
1919
- self.emit(node, f" {i.gen.jac}")
1920
- else:
1921
- self.emit_ln(node, i.gen.jac)
1922
- elif isinstance(i, ast.Semi):
1923
- self.emit(node, i.gen.jac)
1924
- else:
1925
- if start:
1926
- self.emit(node, i.gen.jac)
1927
- start = False
1928
- else:
1929
- self.emit(node, f" {i.gen.jac}")
1930
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1931
- self.emit_ln(node, "")
1932
-
1933
- def exit_assert_stmt(self, node: ast.AssertStmt) -> None:
1934
- """Sub objects.
1935
-
1936
- condition: ExprType,
1937
- error_msg: Optional[ExprType],
1938
- """
1939
- start = True
1940
- for i in node.kid:
1941
- if isinstance(i, ast.CommentToken):
1942
- if i.is_inline:
1943
- self.emit(node, f" {i.gen.jac}")
1944
- else:
1945
- self.emit_ln(node, "")
1946
- self.emit_ln(node, "")
1947
- self.emit(node, i.gen.jac)
1948
- elif isinstance(i, ast.Semi):
1949
- self.emit(node, i.gen.jac)
1950
- else:
1951
- if start:
1952
- self.emit(node, i.gen.jac)
1953
- start = False
1954
- else:
1955
- self.emit(node, f" {i.gen.jac}")
1956
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1957
- self.emit_ln(node, "")
1958
-
1959
- def exit_check_stmt(self, node: ast.CheckStmt) -> None:
1960
- """Sub objects.
1961
-
1962
- target: ExprType,
1963
- """
1964
- start = True
1965
- for i in node.kid:
1966
- if isinstance(i, ast.CommentToken):
1967
- if i.is_inline:
1968
- self.emit(node, f" {i.gen.jac}")
1969
- else:
1970
- if not node.gen.jac.endswith("\n"):
1971
- self.emit_ln(node, "")
1972
- self.emit_ln(node, "")
1973
- self.emit(node, i.gen.jac)
1974
- elif isinstance(i, ast.Semi):
1975
- self.emit(node, i.gen.jac)
1976
- else:
1977
- if start:
1978
- self.emit(node, i.gen.jac)
1979
- start = False
1980
- else:
1981
- self.emit(node, f" {i.gen.jac}")
1982
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
1983
- self.emit_ln(node, "")
1984
-
1985
- def exit_ctrl_stmt(self, node: ast.CtrlStmt) -> None:
1986
- """Sub objects.
1987
-
1988
- ctrl: Token,
1989
- """
1990
- start = True
1991
- for i in node.kid:
1992
- if isinstance(i, ast.CommentToken):
1993
- if i.is_inline:
1994
- self.emit(node, f" {i.gen.jac}")
1995
- else:
1996
- self.emit_ln(node, "")
1997
- self.emit_ln(node, "")
1998
- self.emit(node, i.gen.jac)
1999
- elif isinstance(i, ast.Semi):
2000
- self.emit(node, i.gen.jac)
2001
- else:
2002
- if start:
2003
- self.emit(node, i.gen.jac)
2004
- start = False
2005
- else:
2006
- self.emit(node, f" {i.gen.jac}")
2007
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2008
- self.emit_ln(node, "")
2009
-
2010
- def exit_delete_stmt(self, node: ast.DeleteStmt) -> None:
2011
- """Sub objects.
2012
-
2013
- target: ExprType,
2014
- """
2015
- start = True
2016
- for i in node.kid:
2017
- if isinstance(i, ast.CommentToken):
2018
- if i.is_inline:
2019
- self.emit(node, f" {i.gen.jac}")
2020
- else:
2021
- if not node.gen.jac.endswith("\n"):
2022
- self.emit_ln(node, "")
2023
- self.emit_ln(node, "")
2024
- self.emit(node, i.gen.jac)
2025
- elif isinstance(i, ast.Semi):
2026
- self.emit(node, i.gen.jac)
2027
- else:
2028
- if start:
2029
- self.emit(node, i.gen.jac)
2030
- start = False
2031
- else:
2032
- self.emit(node, f" {i.gen.jac}")
2033
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2034
- self.emit_ln(node, "")
144
+ child_width_budget = width_remaining - align_spaces
145
+ if child_width_budget < 0:
146
+ child_width_budget = 0
2035
147
 
2036
- def exit_report_stmt(self, node: ast.ReportStmt) -> None:
2037
- """Sub objects.
2038
-
2039
- expr: ExprType,
2040
- """
2041
- start = True
2042
- for i in node.kid:
2043
- if isinstance(i, ast.CommentToken):
2044
- if i.is_inline:
2045
- self.emit(node, f" {i.gen.jac}")
2046
- else:
2047
- self.emit_ln(node, i.gen.jac)
2048
- elif isinstance(i, ast.Semi):
2049
- self.emit(node, i.gen.jac)
2050
- else:
2051
- if start:
2052
- self.emit(node, i.gen.jac)
2053
- start = False
2054
- else:
2055
- self.emit(node, f" {i.gen.jac}")
2056
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2057
- self.emit_ln(node, "")
2058
-
2059
- def exit_expr_as_item(self, node: ast.ExprAsItem) -> None:
2060
- """Sub objects.
2061
-
2062
- expr: "ExprType",
2063
- alias: Optional[Token],
2064
- """
2065
- if node.alias:
2066
- self.emit(node, node.expr.gen.jac + " as " + node.alias.gen.jac)
2067
- else:
2068
- self.emit(node, node.expr.gen.jac)
2069
-
2070
- def exit_in_for_stmt(self, node: ast.InForStmt) -> None:
2071
- """Sub objects.
2072
-
2073
- target: ExprType,
2074
- collection: ExprType,
2075
- body: SubNodeList[CodeBlockStmt],
2076
- """
2077
- if (
2078
- node.parent
2079
- and node.parent.parent
2080
- and isinstance(node.parent.parent, (ast.Ability))
2081
- and (
2082
- isinstance(node.parent.kid[1], ast.Assignment)
2083
- and node.parent.kid[1].kid[-1].gen.jac
2084
- != "# Update any new user level buddy schedule"
148
+ return self.format_doc_ir(
149
+ doc_node.contents,
150
+ child_indent_level_for_align, # Approximated level for Lines inside
151
+ child_width_budget, # Budget for content on first line
152
+ is_broken,
2085
153
  )
2086
- ):
2087
- self.indent_level -= 1
2088
- self.emit_ln(node, "")
2089
- self.indent_level += 1
2090
-
2091
- start = True
2092
- for i in node.kid:
2093
- if isinstance(i, ast.CommentToken):
2094
- if i.is_inline:
2095
- self.emit(node, f" {i.gen.jac}")
2096
- else:
2097
- self.emit_ln(node, i.gen.jac)
2098
- elif isinstance(i, (ast.Semi, ast.SubNodeList)):
2099
- self.emit(node, i.gen.jac)
2100
- else:
2101
- if start:
2102
- self.emit(node, i.gen.jac)
2103
- start = False
2104
- else:
2105
- self.emit(node, f" {i.gen.jac}")
2106
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2107
- self.emit_ln(node, "")
2108
-
2109
- def exit_test(self, node: ast.Test) -> None:
2110
- """Sub objects.
2111
-
2112
- name: Optional[Name],
2113
- doc: Optional[Token],
2114
- body: CodeBlock,
2115
- """
2116
- for i in node.kid:
2117
- if isinstance(i, ast.CommentToken):
2118
- if i.is_inline:
2119
- self.emit(node, f" {i.gen.jac}")
2120
- else:
2121
- self.emit_ln(node, "")
2122
- self.emit_ln(node, i.gen.jac)
2123
- elif isinstance(i, ast.Semi):
2124
- self.emit(node, i.gen.jac)
2125
- elif isinstance(i, ast.Name):
2126
- if not i.value.startswith("_jac_gen_"):
2127
- self.emit(node, f" {i.value}")
2128
- else:
2129
- self.emit(node, i.gen.jac)
2130
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2131
- self.emit_ln(node, "")
2132
-
2133
- def exit_py_inline_code(self, node: ast.PyInlineCode) -> None:
2134
- """Sub objects.
2135
-
2136
- code: Token,
2137
- """
2138
- self.emit_ln(node, "::py::")
2139
- self.emit_ln(node, node.code.value)
2140
- self.emit_ln(node, "::py::")
2141
-
2142
- def exit_arch_ref_chain(self, node: ast.ArchRefChain) -> None:
2143
- """Sub objects.
2144
-
2145
- archs: list[ArchRef],
2146
- """
2147
- for i in node.kid:
2148
- if isinstance(i, ast.CommentToken):
2149
- if i.is_inline:
2150
- self.emit(node, f" {i.gen.jac}")
2151
- elif not node.gen.jac.endswith("\n"):
2152
- self.emit_ln(node, "")
2153
- self.emit_ln(node, i.gen.jac)
2154
- else:
2155
- self.emit_ln(node, i.gen.jac)
2156
- elif isinstance(i, ast.Semi):
2157
- self.emit(node, i.gen.jac)
2158
- elif i.gen.jac == ",":
2159
- self.emit(node, f"{i.gen.jac} ")
2160
- else:
2161
- self.emit(node, i.gen.jac)
2162
- if isinstance(node.kid[-1], ast.Semi) and not node.gen.jac.endswith("\n"):
2163
- self.emit_ln(node, "")
2164
-
2165
- def exit_typed_ctx_block(self, node: ast.TypedCtxBlock) -> None:
2166
- """Sub objects.
2167
-
2168
- type_ctx: TypeList,
2169
- body: CodeBlock,
2170
- """
2171
-
2172
- def exit_match_stmt(self, node: ast.MatchStmt) -> None:
2173
- """Sub objects.
2174
-
2175
- target: ExprType
2176
- cases: list[MatchCase],
2177
- """
2178
- start = True
2179
- for i in node.kid:
2180
- if isinstance(i, ast.CommentToken):
2181
- if i.is_inline:
2182
- self.emit(node, f" {i.gen.jac}")
2183
- else:
2184
- self.emit_ln(node, "")
2185
- self.emit_ln(node, i.gen.jac)
2186
- elif isinstance(i, ast.Semi):
2187
- self.emit(node, i.gen.jac)
2188
- elif isinstance(i, ast.Token):
2189
- if i.name == Tok.LBRACE:
2190
- self.emit_ln(node, f" {i.value}")
2191
- self.indent_level += 1
2192
- elif i.name == Tok.RBRACE:
2193
- self.indent_level -= 1
2194
- self.emit(node, f"{i.value}")
2195
- else:
2196
- self.emit(node, f"{i.value} ")
2197
- else:
2198
- if start:
2199
- self.emit(node, i.gen.jac)
2200
- start = False
2201
- else:
2202
- self.emit(node, f"{i.gen.jac}")
2203
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2204
- self.emit_ln(node, "")
2205
-
2206
- def exit_match_case(self, node: ast.MatchCase) -> None:
2207
- """Sub objects.
2208
-
2209
- pattern: ExprType,
2210
- guard: Optional[ExprType],
2211
- body: list[CodeBlockStmt],
2212
- """
2213
- start = True
2214
- for i in node.kid:
2215
- if isinstance(i, ast.CommentToken):
2216
- if i.is_inline:
2217
- self.emit(node, f" {i.gen.jac}")
2218
- else:
2219
- self.emit_ln(node, "")
2220
- self.emit_ln(node, i.gen.jac)
2221
- elif isinstance(i, ast.Semi):
2222
- self.emit(node, i.gen.jac)
2223
- elif isinstance(i, ast.Token) and i.value == ":":
2224
- self.emit_ln(node, i.gen.jac)
2225
- elif isinstance(i, ast.CodeBlockStmt):
2226
- self.indent_level += 1
2227
- self.emit(node, i.gen.jac.strip())
2228
- self.indent_level -= 1
2229
- self.emit_ln(node, "")
2230
- else:
2231
- if start:
2232
- self.emit(node, i.gen.jac)
2233
- start = False
2234
- else:
2235
- self.emit(node, f" {i.gen.jac}")
2236
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2237
- self.emit_ln(node, "")
2238
-
2239
- def exit_match_or(self, node: ast.MatchOr) -> None:
2240
- """Sub objects.
2241
-
2242
- list[MatchPattern],
2243
- """
2244
- start = True
2245
- for i in node.kid:
2246
- if isinstance(i, ast.CommentToken):
2247
- if i.is_inline:
2248
- self.emit(node, f" {i.gen.jac}")
2249
- else:
2250
- self.emit_ln(node, i.gen.jac)
2251
- elif isinstance(i, ast.Semi):
2252
- self.emit(node, i.gen.jac)
2253
- else:
2254
- if start:
2255
- self.emit(node, i.gen.jac)
2256
- start = False
2257
- else:
2258
- self.emit(node, f" {i.gen.jac}")
2259
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2260
- self.emit_ln(node, "")
2261
-
2262
- def exit_match_as(self, node: ast.MatchAs) -> None:
2263
- """Sub objects.
2264
-
2265
- name: NameType,
2266
- pattern: MatchPattern,
2267
- """
2268
- start = True
2269
- for i in node.kid:
2270
- if isinstance(i, ast.CommentToken):
2271
- if i.is_inline:
2272
- self.emit(node, f" {i.gen.jac}")
2273
- else:
2274
- self.emit_ln(node, "")
2275
- self.emit_ln(node, i.gen.jac)
2276
- elif isinstance(i, ast.Semi):
2277
- self.emit(node, i.gen.jac)
2278
- else:
2279
- if start:
2280
- self.emit(node, i.gen.jac)
2281
- start = False
2282
- else:
2283
- self.emit(node, f" {i.gen.jac}")
2284
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2285
- self.emit_ln(node, "")
2286
-
2287
- def exit_match_wild(self, node: ast.MatchWild) -> None:
2288
- """Sub objects."""
2289
- start = True
2290
- for i in node.kid:
2291
- if isinstance(i, ast.CommentToken):
2292
- if i.is_inline:
2293
- self.emit(node, f" {i.gen.jac}")
2294
- else:
2295
- self.emit_ln(node, "")
2296
- self.emit_ln(node, i.gen.jac)
2297
- elif isinstance(i, ast.Semi):
2298
- self.emit(node, i.gen.jac)
2299
- else:
2300
- if start:
2301
- self.emit(node, i.gen.jac)
2302
- start = False
2303
- else:
2304
- self.emit(node, f" {i.gen.jac}")
2305
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2306
- self.emit_ln(node, "")
2307
-
2308
- def exit_match_value(self, node: ast.MatchValue) -> None:
2309
- """Sub objects.
2310
-
2311
- value: ExprType,
2312
- """
2313
- start = True
2314
- for i in node.kid:
2315
- if isinstance(i, ast.CommentToken):
2316
- if i.is_inline:
2317
- self.emit(node, f" {i.gen.jac}")
2318
- else:
2319
- self.emit_ln(node, "")
2320
- self.emit_ln(node, i.gen.jac)
2321
- elif isinstance(i, ast.Semi):
2322
- self.emit(node, i.gen.jac)
2323
- else:
2324
- if start:
2325
- self.emit(node, i.gen.jac)
2326
- start = False
2327
- else:
2328
- self.emit(node, f" {i.gen.jac}")
2329
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2330
- self.emit_ln(node, "")
2331
-
2332
- def exit_match_singleton(self, node: ast.MatchSingleton) -> None:
2333
- """Sub objects.
2334
-
2335
- value: Bool | Null,
2336
- """
2337
- self.emit(node, node.value.gen.jac)
2338
-
2339
- def exit_match_sequence(self, node: ast.MatchSequence) -> None:
2340
- """Sub objects.
2341
-
2342
- values: list[MatchPattern],
2343
- """
2344
- for i in node.kid:
2345
- if isinstance(i, ast.CommentToken):
2346
- if i.is_inline:
2347
- self.emit(node, f" {i.gen.jac}")
2348
- else:
2349
- self.emit_ln(node, "")
2350
- self.emit_ln(node, i.gen.jac)
2351
- elif isinstance(i, ast.Semi):
2352
- self.emit(node, i.gen.jac)
2353
- else:
2354
- if i.gen.jac == ",":
2355
- self.emit(node, f"{i.gen.jac} ")
2356
- else:
2357
- self.emit(node, i.gen.jac)
2358
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2359
- self.emit_ln(node, "")
2360
-
2361
- def exit_match_mapping(self, node: ast.MatchMapping) -> None:
2362
- """Sub objects.
2363
-
2364
- values: list[MatchKVPair | MatchStar],
2365
- """
2366
- for i in node.kid:
2367
- if isinstance(i, ast.CommentToken):
2368
- if i.is_inline:
2369
- self.emit(node, f" {i.gen.jac}")
2370
- else:
2371
- self.emit_ln(node, "")
2372
- self.emit_ln(node, i.gen.jac)
2373
- elif isinstance(i, ast.Semi):
2374
- self.emit(node, i.gen.jac)
2375
- else:
2376
- if i.gen.jac == ",":
2377
- self.emit(node, f"{i.gen.jac} ")
2378
- else:
2379
- self.emit(node, i.gen.jac)
2380
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2381
- self.emit_ln(node, "")
2382
-
2383
- def exit_match_k_v_pair(self, node: ast.MatchKVPair) -> None:
2384
- """Sub objects.
2385
-
2386
- key: MatchPattern | NameType,
2387
- value: MatchPattern,
2388
- """
2389
- start = True
2390
- for i in node.kid:
2391
- if isinstance(i, ast.CommentToken):
2392
- if i.is_inline:
2393
- self.emit(node, f" {i.gen.jac}")
2394
- else:
2395
- self.emit_ln(node, "")
2396
- self.emit_ln(node, i.gen.jac)
2397
- elif isinstance(i, ast.Semi):
2398
- self.emit(node, i.gen.jac)
2399
- else:
2400
- if start:
2401
- self.emit(node, i.gen.jac)
2402
- start = False
2403
- else:
2404
- self.emit(node, f" {i.gen.jac}")
2405
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2406
- self.emit_ln(node, "")
2407
-
2408
- def exit_match_star(self, node: ast.MatchStar) -> None:
2409
- """Sub objects.
2410
-
2411
- name: NameType,
2412
- is_list: bool,
2413
- """
2414
- self.emit(node, f"{'*' if node.is_list else '**'}{node.name.gen.jac}")
2415
-
2416
- def exit_match_arch(self, node: ast.MatchArch) -> None:
2417
- """Sub objects.
2418
-
2419
- name: NameType,
2420
- arg_patterns: Optional[SubNodeList[MatchPattern]],
2421
- kw_patterns: Optional[SubNodeList[MatchKVPair]],
2422
- """
2423
- for i in node.kid:
2424
- if isinstance(i, ast.CommentToken):
2425
- if i.is_inline:
2426
- self.emit(node, f" {i.gen.jac}")
2427
- else:
2428
- self.emit_ln(node, "")
2429
- self.emit_ln(node, i.gen.jac)
2430
- elif isinstance(i, ast.Semi):
2431
- self.emit(node, i.gen.jac)
2432
- else:
2433
- if i.gen.jac == ",":
2434
- self.emit(node, f"{i.gen.jac} ")
2435
- else:
2436
- self.emit(node, i.gen.jac)
2437
- if isinstance(node.kid[-1], (ast.Semi, ast.CommentToken)):
2438
- self.emit_ln(node, "")
2439
-
2440
- def exit_token(self, node: ast.Token) -> None:
2441
- """Sub objects.
2442
-
2443
- name: str,
2444
- value: str,
2445
- col_start: int,
2446
- col_end: int,
2447
- """
2448
- self.emit(node, node.value)
2449
-
2450
- def exit_name(self, node: ast.Name) -> None:
2451
- """Sub objects.
2452
-
2453
- name: str,
2454
- value: str,
2455
- col_start: int,
2456
- col_end: int,
2457
- already_declared: bool,
2458
- is_kwesc: bool,
2459
- """
2460
- self.emit(node, f"<>{node.value}" if node.is_kwesc else node.value)
2461
-
2462
- def exit_float(self, node: ast.Float) -> None:
2463
- """Sub objects.
2464
-
2465
- name: str,
2466
- value: str,
2467
- line: int,
2468
- col_start: int,
2469
- col_end: int,
2470
- pos_start: int,
2471
- pos_end: int,
2472
- """
2473
- self.emit(node, node.value)
2474
-
2475
- def exit_int(self, node: ast.Int) -> None:
2476
- """Sub objects.
2477
-
2478
- name: str,
2479
- value: str,
2480
- line: int,
2481
- col_start: int,
2482
- col_end: int,
2483
- pos_start: int,
2484
- pos_end: int,
2485
- """
2486
- self.emit(node, node.value)
2487
-
2488
- def exit_string(self, node: ast.String) -> None:
2489
- """Sub objects.
2490
-
2491
- name: str,
2492
- value: str,
2493
- line: int,
2494
- col_start: int,
2495
- col_end: int,
2496
- pos_start: int,
2497
- pos_end: int,
2498
- """
2499
- # if string is in docstring format and spans multiple lines turn into the multiple single quoted strings
2500
- if "\n" in node.value and (
2501
- node.parent
2502
- and isinstance(node.parent, ast.Expr)
2503
- and not isinstance(node.parent, ast.MultiString)
2504
- ):
2505
- string_type = node.value[0:3]
2506
- pure_string = node.value[3:-3]
2507
- lines = pure_string.split("\n")
2508
- for line in lines[:-1]:
2509
- self.emit_ln(node, f"{string_type}{line}\\n{string_type}")
2510
- self.emit(node, f"{string_type}{lines[-1]}{string_type}")
2511
- return
2512
- if (
2513
- node.value in ["{", "}"]
2514
- and isinstance(node.parent, ast.SubNodeList)
2515
- and isinstance(node.parent.parent, ast.FString)
2516
- ):
2517
- self.emit(node, node.value)
2518
- if "\n" in node.value:
2519
- string_type = node.value[0:3]
2520
- pure_string = node.value[3:-3]
2521
- lines = pure_string.split("\n")
2522
- self.emit_ln(node, f"{string_type}{lines[0].lstrip()}")
2523
- for line in lines[1:-1]:
2524
- self.emit_ln(node, line.lstrip())
2525
- self.emit(node, f"{lines[-1].lstrip()}{string_type}")
2526
154
  else:
2527
- self.emit(node, node.value)
2528
-
2529
- def exit_bool(self, node: ast.Bool) -> None:
2530
- """Sub objects.
2531
-
2532
- name: str,
2533
- value: str,
2534
- line: int,
2535
- col_start: int,
2536
- col_end: int,
2537
- pos_start: int,
2538
- pos_end: int,
2539
- """
2540
- self.emit(node, node.value)
2541
-
2542
- def exit_builtin_type(self, node: ast.BuiltinType) -> None:
2543
- """Sub objects.
2544
-
2545
- name: str,
2546
- value: str,
2547
- line: int,
2548
- col_start: int,
2549
- col_end: int,
2550
- pos_start: int,
2551
- pos_end: int,
2552
- """
2553
- self.emit(node, node.value)
2554
-
2555
- def exit_null(self, node: ast.Null) -> None:
2556
- """Sub objects.
2557
-
2558
- name: str,
2559
- value: str,
2560
- line: int,
2561
- col_start: int,
2562
- col_end: int,
2563
- pos_start: int,
2564
- pos_end: int,
2565
- """
2566
- self.emit(node, node.value)
2567
-
2568
- def exit_ellipsis(self, node: ast.Ellipsis) -> None:
2569
- """Sub objects.
2570
-
2571
- name: str,
2572
- value: str,
2573
- line: int,
2574
- col_start: int,
2575
- col_end: int,
2576
- pos_start: int,
2577
- pos_end: int,
2578
- """
2579
- self.emit(node, node.value)
2580
-
2581
- def exit_semi(self, node: ast.Semi) -> None:
2582
- """Sub objects."""
2583
- self.emit(node, node.value)
2584
-
2585
- def exit_comment_token(self, node: ast.CommentToken) -> None:
2586
- """Sub objects."""
2587
- self.emit(node, f"{node.value}")
155
+ raise ValueError(f"Unknown DocType: {type(doc_node)}")