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

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

Potentially problematic release.


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

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