jaclang 0.6.0__py3-none-any.whl → 0.6.5__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 (1348) hide show
  1. jaclang/__init__.py +1 -9
  2. jaclang/cli/.gitignore +3 -0
  3. jaclang/cli/cli.md +190 -0
  4. jaclang/cli/cli.py +115 -7
  5. jaclang/cli/cmdreg.py +18 -6
  6. jaclang/compiler/.gitignore +1 -0
  7. jaclang/compiler/__init__.py +1 -0
  8. jaclang/compiler/absyntree.py +8 -9
  9. jaclang/compiler/compile.py +4 -4
  10. jaclang/compiler/jac.lark +1 -0
  11. jaclang/compiler/parser.py +16 -3
  12. jaclang/compiler/passes/main/def_impl_match_pass.py +8 -1
  13. jaclang/compiler/passes/main/fuse_typeinfo_pass.py +20 -8
  14. jaclang/compiler/passes/main/import_pass.py +78 -47
  15. jaclang/compiler/passes/main/pyast_gen_pass.py +6 -57
  16. jaclang/compiler/passes/main/pyast_load_pass.py +33 -6
  17. jaclang/compiler/passes/main/pyjac_ast_link_pass.py +218 -0
  18. jaclang/compiler/passes/main/schedules.py +2 -0
  19. jaclang/compiler/passes/main/sym_tab_build_pass.py +9 -3
  20. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl/getme.impl.jac +3 -0
  21. jaclang/compiler/passes/main/tests/fixtures/autoimpl.impl.jac +3 -0
  22. jaclang/compiler/passes/main/tests/fixtures/autoimpl.jac +9 -0
  23. jaclang/compiler/passes/main/tests/fixtures/autoimpl.something.else.impl.jac +3 -0
  24. jaclang/compiler/passes/main/tests/fixtures/base.jac +13 -0
  25. jaclang/compiler/passes/main/tests/fixtures/base2.jac +14 -0
  26. jaclang/compiler/passes/main/tests/fixtures/blip.jac +2 -0
  27. jaclang/compiler/passes/main/tests/fixtures/codegentext.jac +31 -0
  28. jaclang/compiler/passes/main/tests/fixtures/decls.jac +10 -0
  29. jaclang/compiler/passes/main/tests/fixtures/defs_and_uses.jac +44 -0
  30. jaclang/compiler/passes/main/tests/fixtures/fstrings.jac +4 -0
  31. jaclang/compiler/passes/main/tests/fixtures/func.jac +18 -0
  32. jaclang/compiler/passes/main/tests/fixtures/func2.jac +8 -0
  33. jaclang/compiler/passes/main/tests/fixtures/game1.jac +15 -0
  34. jaclang/compiler/passes/main/tests/fixtures/impl/defs1.jac +8 -0
  35. jaclang/compiler/passes/main/tests/fixtures/impl/defs2.jac +8 -0
  36. jaclang/compiler/passes/main/tests/fixtures/impl/imps.jac +11 -0
  37. jaclang/compiler/passes/main/tests/fixtures/multi_def_err.jac +7 -0
  38. jaclang/compiler/passes/main/tests/fixtures/registry.jac +36 -0
  39. jaclang/compiler/passes/main/tests/fixtures/type_info.jac +31 -0
  40. jaclang/compiler/passes/main/tests/test_import_pass.py +11 -0
  41. jaclang/compiler/passes/main/tests/test_type_check_pass.py +15 -0
  42. jaclang/compiler/passes/tool/tests/fixtures/corelib.jac +480 -0
  43. jaclang/compiler/passes/tool/tests/fixtures/corelib_fmt.jac +480 -0
  44. jaclang/compiler/passes/tool/tests/fixtures/genai/essay_review.jac +36 -0
  45. jaclang/compiler/passes/tool/tests/fixtures/genai/expert_answer.jac +17 -0
  46. jaclang/compiler/passes/tool/tests/fixtures/genai/joke_gen.jac +32 -0
  47. jaclang/compiler/passes/tool/tests/fixtures/genai/odd_word_out.jac +27 -0
  48. jaclang/compiler/passes/tool/tests/fixtures/genai/personality_finder.jac +35 -0
  49. jaclang/compiler/passes/tool/tests/fixtures/genai/text_to_type.jac +25 -0
  50. jaclang/compiler/passes/tool/tests/fixtures/genai/translator.jac +13 -0
  51. jaclang/compiler/passes/tool/tests/fixtures/genai/wikipedia.jac +63 -0
  52. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.dot +39 -0
  53. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.jac +7 -0
  54. jaclang/compiler/passes/tool/tests/fixtures/multi_def_err.txt +20 -0
  55. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/ability_impl_long_comprehension.jac +15 -0
  56. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/call_with_many_parameters.jac +24 -0
  57. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/entry_main.jac +4 -0
  58. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/long_line_nested_dict_access.jac +10 -0
  59. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/multiline_fstrings.jac +16 -0
  60. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_dict.jac +15 -0
  61. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/nested_loop_and_incrementer.jac +13 -0
  62. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/simple_walker.jac +25 -0
  63. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/try_block_and_walker_spawn_and_fstrings.jac +26 -0
  64. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/tuple_iteration_and_not_negation.jac +20 -0
  65. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/type_annotation.jac +3 -0
  66. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_decl_only.jac +12 -0
  67. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_default_values_types_and_docstrings.jac +18 -0
  68. jaclang/compiler/passes/tool/tests/fixtures/myca_formatted_code/walker_with_inline_ability_impl.jac +8 -0
  69. jaclang/compiler/passes/tool/tests/fixtures/simple_walk.jac +47 -0
  70. jaclang/compiler/passes/tool/tests/fixtures/simple_walk_fmt.jac +47 -0
  71. jaclang/compiler/passes/utils/mypy_ast_build.py +8 -0
  72. jaclang/compiler/tests/fixtures/fam.jac +67 -0
  73. jaclang/compiler/tests/fixtures/hello_world.jac +5 -0
  74. jaclang/compiler/tests/fixtures/kwesc.jac +5 -0
  75. jaclang/compiler/tests/fixtures/mod_doc_test.jac +1 -0
  76. jaclang/compiler/tests/fixtures/staticcheck.jac +20 -0
  77. jaclang/compiler/tests/fixtures/stuff.jac +6 -0
  78. jaclang/core/aott.py +10 -1
  79. jaclang/core/construct.py +157 -21
  80. jaclang/core/importer.py +6 -2
  81. jaclang/core/memory.py +48 -0
  82. jaclang/core/shelve_storage.py +55 -0
  83. jaclang/langserve/__init__.py +1 -0
  84. jaclang/langserve/server.py +108 -0
  85. jaclang/langserve/tests/__init__.py +1 -0
  86. jaclang/langserve/tests/defaults.py +226 -0
  87. jaclang/langserve/tests/fixtures/hello.jac +1 -0
  88. jaclang/langserve/tests/pylsp_jsonrpc/__init__.py +2 -0
  89. jaclang/langserve/tests/pylsp_jsonrpc/dispatchers.py +37 -0
  90. jaclang/langserve/tests/pylsp_jsonrpc/endpoint.py +294 -0
  91. jaclang/langserve/tests/pylsp_jsonrpc/exceptions.py +114 -0
  92. jaclang/langserve/tests/pylsp_jsonrpc/streams.py +113 -0
  93. jaclang/langserve/tests/session.py +255 -0
  94. jaclang/langserve/tests/test_server.py +36 -0
  95. jaclang/langserve/utils.py +53 -0
  96. jaclang/plugin/__init__.py +1 -2
  97. jaclang/plugin/builtin.py +1 -1
  98. jaclang/plugin/default.py +97 -4
  99. jaclang/plugin/feature.py +28 -9
  100. jaclang/plugin/spec.py +45 -10
  101. jaclang/plugin/tests/fixtures/impl_match.jac +9 -0
  102. jaclang/plugin/tests/fixtures/impl_match_impl.jac +3 -0
  103. jaclang/plugin/tests/fixtures/simple_node_connection.jac +55 -0
  104. jaclang/plugin/tests/fixtures/simple_persistent.jac +41 -0
  105. jaclang/plugin/tests/test_jaseci.py +219 -0
  106. jaclang/settings.py +5 -0
  107. jaclang/tests/fixtures/abc.jac +73 -0
  108. jaclang/tests/fixtures/access_checker.jac +19 -0
  109. jaclang/tests/fixtures/access_modifier.jac +49 -0
  110. jaclang/tests/fixtures/aott_raise.jac +25 -0
  111. jaclang/tests/fixtures/arithmetic_bug.jac +13 -0
  112. jaclang/tests/fixtures/assign_compr.jac +15 -0
  113. jaclang/tests/fixtures/assign_compr_dup.jac +15 -0
  114. jaclang/tests/fixtures/builtin_dotgen.jac +41 -0
  115. jaclang/tests/fixtures/chandra_bugs.jac +11 -0
  116. jaclang/tests/fixtures/chandra_bugs2.jac +26 -0
  117. jaclang/tests/fixtures/circle_pysolo.py +91 -0
  118. jaclang/tests/fixtures/deep/deeper/deep_outer_import.jac +9 -0
  119. jaclang/tests/fixtures/deep/deeper/deep_outer_import2.jac +9 -0
  120. jaclang/tests/fixtures/deep/deeper/snd_lev.jac +6 -0
  121. jaclang/tests/fixtures/deep/mycode.jac +4 -0
  122. jaclang/tests/fixtures/deep/one_lev.jac +6 -0
  123. jaclang/tests/fixtures/deep/one_lev_dup.jac +6 -0
  124. jaclang/tests/fixtures/deep/one_lev_dup_py.py +6 -0
  125. jaclang/tests/fixtures/deep_convert.jac +5 -0
  126. jaclang/tests/fixtures/deep_convo.py +6 -0
  127. jaclang/tests/fixtures/deep_import.jac +7 -0
  128. jaclang/tests/fixtures/deferred_field.jac +13 -0
  129. jaclang/tests/fixtures/disconn.jac +29 -0
  130. jaclang/tests/fixtures/edge_node_walk.jac +46 -0
  131. jaclang/tests/fixtures/edge_ops.jac +45 -0
  132. jaclang/tests/fixtures/edges_walk.jac +38 -0
  133. jaclang/tests/fixtures/enum_inside_archtype.jac +20 -0
  134. jaclang/tests/fixtures/err.jac +5 -0
  135. jaclang/tests/fixtures/err2.jac +5 -0
  136. jaclang/tests/fixtures/game1.jac +15 -0
  137. jaclang/tests/fixtures/gendot_bubble_sort.jac +77 -0
  138. jaclang/tests/fixtures/guess_game.jac +47 -0
  139. jaclang/tests/fixtures/has_goodness.jac +15 -0
  140. jaclang/tests/fixtures/hashcheck.jac +12 -0
  141. jaclang/tests/fixtures/hashcheck_dup.jac +12 -0
  142. jaclang/tests/fixtures/hello.jac +5 -0
  143. jaclang/tests/fixtures/hello_nc.jac +5 -0
  144. jaclang/tests/fixtures/ignore.jac +43 -0
  145. jaclang/tests/fixtures/ignore_dup.jac +43 -0
  146. jaclang/tests/fixtures/impl_grab.impl.jac +4 -0
  147. jaclang/tests/fixtures/impl_grab.jac +2 -0
  148. jaclang/tests/fixtures/inherit_check.jac +33 -0
  149. jaclang/tests/fixtures/jacsamp.jac +6 -0
  150. jaclang/tests/fixtures/jp_importer.jac +17 -0
  151. jaclang/tests/fixtures/lambda.jac +6 -0
  152. jaclang/tests/fixtures/maxfail_run_test.jac +5 -0
  153. jaclang/tests/fixtures/mtest.impl.jac +6 -0
  154. jaclang/tests/fixtures/mtest.jac +6 -0
  155. jaclang/tests/fixtures/needs_import.jac +18 -0
  156. jaclang/tests/fixtures/needs_import_1.jac +6 -0
  157. jaclang/tests/fixtures/needs_import_2.jac +6 -0
  158. jaclang/tests/fixtures/needs_import_3.jac +6 -0
  159. jaclang/tests/fixtures/needs_import_dup.jac +18 -0
  160. jaclang/tests/fixtures/package_import.jac +6 -0
  161. jaclang/tests/fixtures/pyfunc.py +11 -0
  162. jaclang/tests/fixtures/pyfunc_1.py +311 -0
  163. jaclang/tests/fixtures/pyfunc_2.py +279 -0
  164. jaclang/tests/fixtures/pyfunc_3.py +310 -0
  165. jaclang/tests/fixtures/random_check.jac +62 -0
  166. jaclang/tests/fixtures/raw_byte_string.jac +18 -0
  167. jaclang/tests/fixtures/registry.jac +37 -0
  168. jaclang/tests/fixtures/run_test.jac +5 -0
  169. jaclang/tests/fixtures/semstr.jac +33 -0
  170. jaclang/tests/fixtures/simple_archs.jac +26 -0
  171. jaclang/tests/fixtures/slice_vals.jac +7 -0
  172. jaclang/tests/fixtures/sub_abil_sep.jac +15 -0
  173. jaclang/tests/fixtures/sub_abil_sep_multilev.jac +17 -0
  174. jaclang/tests/fixtures/try_finally.jac +34 -0
  175. jaclang/tests/fixtures/tupleunpack.jac +6 -0
  176. jaclang/tests/fixtures/tuplytuples.jac +8 -0
  177. jaclang/tests/fixtures/type_info.jac +15 -0
  178. jaclang/tests/fixtures/with_context.jac +30 -0
  179. jaclang/tests/fixtures/with_llm_function.jac +33 -0
  180. jaclang/tests/fixtures/with_llm_lower.jac +45 -0
  181. jaclang/tests/fixtures/with_llm_method.jac +51 -0
  182. jaclang/tests/fixtures/with_llm_type.jac +52 -0
  183. jaclang/tests/test_cli.py +239 -0
  184. jaclang/tests/test_language.py +831 -0
  185. jaclang/tests/test_man_code.py +148 -0
  186. jaclang/tests/test_reference.py +95 -0
  187. jaclang/tests/test_settings.py +46 -0
  188. jaclang/utils/helpers.py +11 -0
  189. jaclang/utils/tests/test_lang_tools.py +17 -0
  190. jaclang/utils/treeprinter.py +17 -4
  191. jaclang/vendor/__init__.py +12 -1
  192. jaclang/vendor/attr/__init__.py +134 -0
  193. jaclang/vendor/attr/__init__.pyi +555 -0
  194. jaclang/vendor/attr/_cmp.py +150 -0
  195. jaclang/vendor/attr/_cmp.pyi +13 -0
  196. jaclang/vendor/attr/_compat.py +87 -0
  197. jaclang/vendor/attr/_config.py +31 -0
  198. jaclang/vendor/attr/_funcs.py +483 -0
  199. jaclang/vendor/attr/_make.py +3119 -0
  200. jaclang/vendor/attr/_next_gen.py +229 -0
  201. jaclang/vendor/attr/_typing_compat.pyi +15 -0
  202. jaclang/vendor/attr/_version_info.py +86 -0
  203. jaclang/vendor/attr/_version_info.pyi +9 -0
  204. jaclang/vendor/attr/converters.py +144 -0
  205. jaclang/vendor/attr/converters.pyi +13 -0
  206. jaclang/vendor/attr/exceptions.py +95 -0
  207. jaclang/vendor/attr/exceptions.pyi +17 -0
  208. jaclang/vendor/attr/filters.py +66 -0
  209. jaclang/vendor/attr/filters.pyi +6 -0
  210. jaclang/vendor/attr/setters.py +73 -0
  211. jaclang/vendor/attr/setters.pyi +19 -0
  212. jaclang/vendor/attr/validators.py +681 -0
  213. jaclang/vendor/attr/validators.pyi +88 -0
  214. jaclang/vendor/attrs/__init__.py +65 -0
  215. jaclang/vendor/attrs/__init__.pyi +67 -0
  216. jaclang/vendor/attrs/converters.py +3 -0
  217. jaclang/vendor/attrs/exceptions.py +3 -0
  218. jaclang/vendor/attrs/filters.py +3 -0
  219. jaclang/vendor/attrs/py.typed +0 -0
  220. jaclang/vendor/attrs/setters.py +3 -0
  221. jaclang/vendor/attrs/validators.py +3 -0
  222. jaclang/vendor/attrs-23.2.0.dist-info/METADATA +202 -0
  223. jaclang/vendor/attrs-23.2.0.dist-info/RECORD +35 -0
  224. jaclang/vendor/attrs-23.2.0.dist-info/WHEEL +4 -0
  225. jaclang/vendor/attrs-23.2.0.dist-info/licenses/LICENSE +21 -0
  226. jaclang/vendor/cattr/__init__.py +25 -0
  227. jaclang/vendor/cattr/converters.py +8 -0
  228. jaclang/vendor/cattr/disambiguators.py +3 -0
  229. jaclang/vendor/cattr/dispatch.py +3 -0
  230. jaclang/vendor/cattr/errors.py +15 -0
  231. jaclang/vendor/cattr/gen.py +21 -0
  232. jaclang/vendor/cattr/preconf/__init__.py +3 -0
  233. jaclang/vendor/cattr/preconf/bson.py +4 -0
  234. jaclang/vendor/cattr/preconf/json.py +4 -0
  235. jaclang/vendor/cattr/preconf/msgpack.py +4 -0
  236. jaclang/vendor/cattr/preconf/orjson.py +4 -0
  237. jaclang/vendor/cattr/preconf/pyyaml.py +4 -0
  238. jaclang/vendor/cattr/preconf/tomlkit.py +4 -0
  239. jaclang/vendor/cattr/preconf/ujson.py +4 -0
  240. jaclang/vendor/cattr/py.typed +0 -0
  241. jaclang/vendor/cattrs/__init__.py +55 -0
  242. jaclang/vendor/cattrs/_compat.py +465 -0
  243. jaclang/vendor/cattrs/_generics.py +22 -0
  244. jaclang/vendor/cattrs/converters.py +1101 -0
  245. jaclang/vendor/cattrs/disambiguators.py +132 -0
  246. jaclang/vendor/cattrs/dispatch.py +164 -0
  247. jaclang/vendor/cattrs/errors.py +129 -0
  248. jaclang/vendor/cattrs/fns.py +17 -0
  249. jaclang/vendor/cattrs/gen/__init__.py +890 -0
  250. jaclang/vendor/cattrs/gen/_consts.py +19 -0
  251. jaclang/vendor/cattrs/gen/_generics.py +43 -0
  252. jaclang/vendor/cattrs/gen/_lc.py +28 -0
  253. jaclang/vendor/cattrs/gen/_shared.py +51 -0
  254. jaclang/vendor/cattrs/gen/typeddicts.py +624 -0
  255. jaclang/vendor/cattrs/preconf/__init__.py +7 -0
  256. jaclang/vendor/cattrs/preconf/bson.py +107 -0
  257. jaclang/vendor/cattrs/preconf/cbor2.py +47 -0
  258. jaclang/vendor/cattrs/preconf/json.py +52 -0
  259. jaclang/vendor/cattrs/preconf/msgpack.py +51 -0
  260. jaclang/vendor/cattrs/preconf/orjson.py +82 -0
  261. jaclang/vendor/cattrs/preconf/pyyaml.py +60 -0
  262. jaclang/vendor/cattrs/preconf/tomlkit.py +85 -0
  263. jaclang/vendor/cattrs/preconf/ujson.py +52 -0
  264. jaclang/vendor/cattrs/py.typed +0 -0
  265. jaclang/vendor/cattrs/strategies/__init__.py +11 -0
  266. jaclang/vendor/cattrs/strategies/_class_methods.py +64 -0
  267. jaclang/vendor/cattrs/strategies/_subclasses.py +224 -0
  268. jaclang/vendor/cattrs/strategies/_unions.py +235 -0
  269. jaclang/vendor/cattrs/v.py +111 -0
  270. jaclang/vendor/cattrs-23.2.3.dist-info/METADATA +221 -0
  271. jaclang/vendor/cattrs-23.2.3.dist-info/RECORD +48 -0
  272. jaclang/vendor/cattrs-23.2.3.dist-info/WHEEL +4 -0
  273. jaclang/vendor/cattrs-23.2.3.dist-info/licenses/LICENSE +11 -0
  274. jaclang/vendor/lark/__init__.py +38 -38
  275. jaclang/vendor/lark/__pyinstaller/__init__.py +6 -7
  276. jaclang/vendor/lark/__pyinstaller/hook-lark.py +14 -14
  277. jaclang/vendor/lark/ast_utils.py +59 -70
  278. jaclang/vendor/lark/common.py +89 -113
  279. jaclang/vendor/lark/exceptions.py +292 -352
  280. jaclang/vendor/lark/grammar.py +130 -158
  281. jaclang/vendor/lark/grammars/common.lark +59 -59
  282. jaclang/vendor/lark/grammars/lark.lark +62 -62
  283. jaclang/vendor/lark/grammars/python.lark +302 -302
  284. jaclang/vendor/lark/grammars/unicode.lark +7 -7
  285. jaclang/vendor/lark/indenter.py +112 -118
  286. jaclang/vendor/lark/lark.py +661 -800
  287. jaclang/vendor/lark/lexer.py +678 -829
  288. jaclang/vendor/lark/load_grammar.py +1428 -1673
  289. jaclang/vendor/lark/parse_tree_builder.py +391 -466
  290. jaclang/vendor/lark/parser_frontends.py +257 -305
  291. jaclang/vendor/lark/parsers/cyk.py +340 -391
  292. jaclang/vendor/lark/parsers/earley.py +308 -385
  293. jaclang/vendor/lark/parsers/earley_common.py +42 -59
  294. jaclang/vendor/lark/parsers/earley_forest.py +810 -923
  295. jaclang/vendor/lark/parsers/grammar_analysis.py +203 -239
  296. jaclang/vendor/lark/parsers/lalr_analysis.py +332 -378
  297. jaclang/vendor/lark/parsers/lalr_interactive_parser.py +157 -171
  298. jaclang/vendor/lark/parsers/lalr_parser.py +122 -145
  299. jaclang/vendor/lark/parsers/lalr_parser_state.py +110 -141
  300. jaclang/vendor/lark/parsers/xearley.py +165 -209
  301. jaclang/vendor/lark/reconstruct.py +107 -131
  302. jaclang/vendor/lark/tools/__init__.py +71 -93
  303. jaclang/vendor/lark/tools/nearley.py +202 -240
  304. jaclang/vendor/lark/tools/serialize.py +32 -35
  305. jaclang/vendor/lark/tools/standalone.py +196 -225
  306. jaclang/vendor/lark/tree.py +272 -302
  307. jaclang/vendor/lark/tree_matcher.py +186 -194
  308. jaclang/vendor/lark/tree_templates.py +18 -26
  309. jaclang/vendor/lark/utils.py +361 -393
  310. jaclang/vendor/lark/visitors.py +593 -645
  311. jaclang/vendor/lark-1.1.9.dist-info/LICENSE +18 -0
  312. jaclang/vendor/lark-1.1.9.dist-info/METADATA +47 -0
  313. jaclang/vendor/lark-1.1.9.dist-info/RECORD +46 -0
  314. jaclang/vendor/lark-1.1.9.dist-info/WHEEL +5 -0
  315. jaclang/vendor/lark-1.1.9.dist-info/entry_points.txt +2 -0
  316. jaclang/vendor/lark-1.1.9.dist-info/top_level.txt +1 -0
  317. jaclang/vendor/lsprotocol/__init__.py +2 -0
  318. jaclang/vendor/lsprotocol/_hooks.py +1237 -0
  319. jaclang/vendor/lsprotocol/converters.py +17 -0
  320. jaclang/vendor/lsprotocol/py.typed +0 -0
  321. jaclang/vendor/lsprotocol/types.py +12898 -0
  322. jaclang/vendor/lsprotocol/validators.py +47 -0
  323. jaclang/vendor/lsprotocol-2023.0.1.dist-info/LICENSE +21 -0
  324. jaclang/vendor/lsprotocol-2023.0.1.dist-info/METADATA +65 -0
  325. jaclang/vendor/lsprotocol-2023.0.1.dist-info/RECORD +10 -0
  326. jaclang/vendor/lsprotocol-2023.0.1.dist-info/WHEEL +4 -0
  327. jaclang/vendor/mypy/api.py +1 -3
  328. jaclang/vendor/mypy/applytype.py +24 -24
  329. jaclang/vendor/mypy/argmap.py +5 -9
  330. jaclang/vendor/mypy/binder.py +11 -42
  331. jaclang/vendor/mypy/build.py +78 -260
  332. jaclang/vendor/mypy/checker.py +394 -930
  333. jaclang/vendor/mypy/checkexpr.py +210 -640
  334. jaclang/vendor/mypy/checkmember.py +44 -94
  335. jaclang/vendor/mypy/checkpattern.py +32 -104
  336. jaclang/vendor/mypy/checkstrformat.py +38 -131
  337. jaclang/vendor/mypy/config_parser.py +8 -31
  338. jaclang/vendor/mypy/constant_fold.py +1 -3
  339. jaclang/vendor/mypy/constraints.py +94 -253
  340. jaclang/vendor/mypy/copytype.py +3 -13
  341. jaclang/vendor/mypy/defaults.py +2 -4
  342. jaclang/vendor/mypy/dmypy/client.py +30 -102
  343. jaclang/vendor/mypy/dmypy_server.py +31 -118
  344. jaclang/vendor/mypy/erasetype.py +6 -18
  345. jaclang/vendor/mypy/errorcodes.py +26 -64
  346. jaclang/vendor/mypy/errors.py +23 -117
  347. jaclang/vendor/mypy/evalexpr.py +1 -3
  348. jaclang/vendor/mypy/expandtype.py +37 -40
  349. jaclang/vendor/mypy/exprtotype.py +14 -27
  350. jaclang/vendor/mypy/fastparse.py +66 -215
  351. jaclang/vendor/mypy/find_sources.py +4 -14
  352. jaclang/vendor/mypy/fixup.py +5 -10
  353. jaclang/vendor/mypy/indirection.py +1 -3
  354. jaclang/vendor/mypy/infer.py +2 -6
  355. jaclang/vendor/mypy/inspections.py +3 -13
  356. jaclang/vendor/mypy/ipc.py +7 -28
  357. jaclang/vendor/mypy/join.py +20 -39
  358. jaclang/vendor/mypy/literals.py +2 -10
  359. jaclang/vendor/mypy/main.py +39 -138
  360. jaclang/vendor/mypy/maptype.py +2 -6
  361. jaclang/vendor/mypy/meet.py +23 -77
  362. jaclang/vendor/mypy/message_registry.py +33 -88
  363. jaclang/vendor/mypy/messages.py +146 -447
  364. jaclang/vendor/mypy/metastore.py +2 -6
  365. jaclang/vendor/mypy/modulefinder.py +29 -76
  366. jaclang/vendor/mypy/moduleinspect.py +5 -17
  367. jaclang/vendor/mypy/mro.py +1 -3
  368. jaclang/vendor/mypy/nodes.py +35 -119
  369. jaclang/vendor/mypy/operators.py +2 -11
  370. jaclang/vendor/mypy/options.py +3 -9
  371. jaclang/vendor/mypy/parse.py +1 -3
  372. jaclang/vendor/mypy/plugin.py +25 -75
  373. jaclang/vendor/mypy/plugins/attrs.py +53 -119
  374. jaclang/vendor/mypy/plugins/common.py +9 -29
  375. jaclang/vendor/mypy/plugins/ctypes.py +5 -15
  376. jaclang/vendor/mypy/plugins/dataclasses.py +42 -107
  377. jaclang/vendor/mypy/plugins/default.py +26 -45
  378. jaclang/vendor/mypy/plugins/enums.py +4 -17
  379. jaclang/vendor/mypy/plugins/functools.py +2 -11
  380. jaclang/vendor/mypy/plugins/proper_plugin.py +2 -6
  381. jaclang/vendor/mypy/plugins/singledispatch.py +7 -33
  382. jaclang/vendor/mypy/reachability.py +2 -8
  383. jaclang/vendor/mypy/refinfo.py +1 -3
  384. jaclang/vendor/mypy/report.py +23 -52
  385. jaclang/vendor/mypy/semanal.py +385 -693
  386. jaclang/vendor/mypy/semanal_classprop.py +9 -34
  387. jaclang/vendor/mypy/semanal_enum.py +7 -19
  388. jaclang/vendor/mypy/semanal_infer.py +1 -3
  389. jaclang/vendor/mypy/semanal_main.py +5 -25
  390. jaclang/vendor/mypy/semanal_namedtuple.py +17 -56
  391. jaclang/vendor/mypy/semanal_newtype.py +8 -27
  392. jaclang/vendor/mypy/semanal_pass1.py +2 -6
  393. jaclang/vendor/mypy/semanal_shared.py +9 -27
  394. jaclang/vendor/mypy/semanal_typeargs.py +12 -41
  395. jaclang/vendor/mypy/semanal_typeddict.py +18 -59
  396. jaclang/vendor/mypy/server/astdiff.py +9 -34
  397. jaclang/vendor/mypy/server/astmerge.py +2 -6
  398. jaclang/vendor/mypy/server/deps.py +22 -71
  399. jaclang/vendor/mypy/server/mergecheck.py +1 -3
  400. jaclang/vendor/mypy/server/objgraph.py +2 -8
  401. jaclang/vendor/mypy/server/update.py +18 -54
  402. jaclang/vendor/mypy/solve.py +4 -17
  403. jaclang/vendor/mypy/split_namespace.py +1 -3
  404. jaclang/vendor/mypy/stats.py +6 -24
  405. jaclang/vendor/mypy/strconv.py +8 -31
  406. jaclang/vendor/mypy/stubdoc.py +8 -38
  407. jaclang/vendor/mypy/stubgen.py +79 -144
  408. jaclang/vendor/mypy/stubgenc.py +22 -69
  409. jaclang/vendor/mypy/stubtest.py +62 -167
  410. jaclang/vendor/mypy/stubutil.py +45 -61
  411. jaclang/vendor/mypy/subtypes.py +57 -133
  412. jaclang/vendor/mypy/suggestions.py +19 -53
  413. jaclang/vendor/mypy/test/data.py +13 -40
  414. jaclang/vendor/mypy/test/helpers.py +18 -43
  415. jaclang/vendor/mypy/test/meta/_pytest.py +2 -13
  416. jaclang/vendor/mypy/test/meta/test_parse_data.py +5 -9
  417. jaclang/vendor/mypy/test/meta/test_update_data.py +1 -3
  418. jaclang/vendor/mypy/test/test_find_sources.py +14 -32
  419. jaclang/vendor/mypy/test/test_ref_info.py +3 -9
  420. jaclang/vendor/mypy/test/testargs.py +1 -4
  421. jaclang/vendor/mypy/test/testcheck.py +14 -47
  422. jaclang/vendor/mypy/test/testcmdline.py +3 -14
  423. jaclang/vendor/mypy/test/testconstraints.py +8 -26
  424. jaclang/vendor/mypy/test/testdaemon.py +2 -9
  425. jaclang/vendor/mypy/test/testdeps.py +4 -12
  426. jaclang/vendor/mypy/test/testdiff.py +2 -6
  427. jaclang/vendor/mypy/test/testerrorstream.py +1 -3
  428. jaclang/vendor/mypy/test/testfinegrained.py +18 -56
  429. jaclang/vendor/mypy/test/testgraph.py +3 -18
  430. jaclang/vendor/mypy/test/testinfer.py +13 -55
  431. jaclang/vendor/mypy/test/testipc.py +3 -9
  432. jaclang/vendor/mypy/test/testmerge.py +5 -17
  433. jaclang/vendor/mypy/test/testmodulefinder.py +8 -30
  434. jaclang/vendor/mypy/test/testmypyc.py +1 -3
  435. jaclang/vendor/mypy/test/testparse.py +1 -3
  436. jaclang/vendor/mypy/test/testpep561.py +4 -13
  437. jaclang/vendor/mypy/test/testpythoneval.py +2 -6
  438. jaclang/vendor/mypy/test/testreports.py +1 -2
  439. jaclang/vendor/mypy/test/testsemanal.py +3 -10
  440. jaclang/vendor/mypy/test/testsolve.py +5 -15
  441. jaclang/vendor/mypy/test/teststubgen.py +69 -210
  442. jaclang/vendor/mypy/test/teststubtest.py +123 -163
  443. jaclang/vendor/mypy/test/testsubtypes.py +14 -34
  444. jaclang/vendor/mypy/test/testtransform.py +2 -8
  445. jaclang/vendor/mypy/test/testtypegen.py +2 -8
  446. jaclang/vendor/mypy/test/testtypes.py +77 -253
  447. jaclang/vendor/mypy/test/testutil.py +1 -3
  448. jaclang/vendor/mypy/test/typefixture.py +11 -38
  449. jaclang/vendor/mypy/test/update_data.py +4 -15
  450. jaclang/vendor/mypy/test/visitors.py +1 -9
  451. jaclang/vendor/mypy/treetransform.py +8 -25
  452. jaclang/vendor/mypy/tvar_scope.py +23 -3
  453. jaclang/vendor/mypy/type_visitor.py +3 -10
  454. jaclang/vendor/mypy/typeanal.py +183 -309
  455. jaclang/vendor/mypy/typeops.py +27 -73
  456. jaclang/vendor/mypy/types.py +77 -185
  457. jaclang/vendor/mypy/types_utils.py +7 -20
  458. jaclang/vendor/mypy/typeshed/LICENSE +237 -0
  459. jaclang/vendor/mypy/typeshed/stdlib/VERSIONS +309 -0
  460. jaclang/vendor/mypy/typeshed/stdlib/__future__.pyi +36 -0
  461. jaclang/vendor/mypy/typeshed/stdlib/__main__.pyi +3 -0
  462. jaclang/vendor/mypy/typeshed/stdlib/_ast.pyi +591 -0
  463. jaclang/vendor/mypy/typeshed/stdlib/_bisect.pyi +84 -0
  464. jaclang/vendor/mypy/typeshed/stdlib/_bootlocale.pyi +1 -0
  465. jaclang/vendor/mypy/typeshed/stdlib/_codecs.pyi +133 -0
  466. jaclang/vendor/mypy/typeshed/stdlib/_collections_abc.pyi +94 -0
  467. jaclang/vendor/mypy/typeshed/stdlib/_compat_pickle.pyi +8 -0
  468. jaclang/vendor/mypy/typeshed/stdlib/_compression.pyi +25 -0
  469. jaclang/vendor/mypy/typeshed/stdlib/_csv.pyi +90 -0
  470. jaclang/vendor/mypy/typeshed/stdlib/_ctypes.pyi +207 -0
  471. jaclang/vendor/mypy/typeshed/stdlib/_curses.pyi +566 -0
  472. jaclang/vendor/mypy/typeshed/stdlib/_decimal.pyi +281 -0
  473. jaclang/vendor/mypy/typeshed/stdlib/_dummy_thread.pyi +33 -0
  474. jaclang/vendor/mypy/typeshed/stdlib/_dummy_threading.pyi +164 -0
  475. jaclang/vendor/mypy/typeshed/stdlib/_heapq.pyi +11 -0
  476. jaclang/vendor/mypy/typeshed/stdlib/_imp.pyi +28 -0
  477. jaclang/vendor/mypy/typeshed/stdlib/_json.pyi +49 -0
  478. jaclang/vendor/mypy/typeshed/stdlib/_locale.pyi +100 -0
  479. jaclang/vendor/mypy/typeshed/stdlib/_lsprof.pyi +35 -0
  480. jaclang/vendor/mypy/typeshed/stdlib/_markupbase.pyi +16 -0
  481. jaclang/vendor/mypy/typeshed/stdlib/_msi.pyi +92 -0
  482. jaclang/vendor/mypy/typeshed/stdlib/_operator.pyi +147 -0
  483. jaclang/vendor/mypy/typeshed/stdlib/_osx_support.pyi +34 -0
  484. jaclang/vendor/mypy/typeshed/stdlib/_posixsubprocess.pyi +33 -0
  485. jaclang/vendor/mypy/typeshed/stdlib/_py_abc.pyi +14 -0
  486. jaclang/vendor/mypy/typeshed/stdlib/_pydecimal.pyi +43 -0
  487. jaclang/vendor/mypy/typeshed/stdlib/_random.pyi +12 -0
  488. jaclang/vendor/mypy/typeshed/stdlib/_sitebuiltins.pyi +16 -0
  489. jaclang/vendor/mypy/typeshed/stdlib/_socket.pyi +803 -0
  490. jaclang/vendor/mypy/typeshed/stdlib/_stat.pyi +103 -0
  491. jaclang/vendor/mypy/typeshed/stdlib/_thread.pyi +59 -0
  492. jaclang/vendor/mypy/typeshed/stdlib/_threading_local.pyi +17 -0
  493. jaclang/vendor/mypy/typeshed/stdlib/_tkinter.pyi +121 -0
  494. jaclang/vendor/mypy/typeshed/stdlib/_tracemalloc.pyi +17 -0
  495. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/__init__.pyi +347 -0
  496. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/dbapi.pyi +37 -0
  497. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/wsgi.pyi +44 -0
  498. jaclang/vendor/mypy/typeshed/stdlib/_typeshed/xml.pyi +9 -0
  499. jaclang/vendor/mypy/typeshed/stdlib/_warnings.pyi +55 -0
  500. jaclang/vendor/mypy/typeshed/stdlib/_weakref.pyi +41 -0
  501. jaclang/vendor/mypy/typeshed/stdlib/_weakrefset.pyi +51 -0
  502. jaclang/vendor/mypy/typeshed/stdlib/_winapi.pyi +255 -0
  503. jaclang/vendor/mypy/typeshed/stdlib/abc.pyi +51 -0
  504. jaclang/vendor/mypy/typeshed/stdlib/aifc.pyi +91 -0
  505. jaclang/vendor/mypy/typeshed/stdlib/antigravity.pyi +3 -0
  506. jaclang/vendor/mypy/typeshed/stdlib/argparse.pyi +595 -0
  507. jaclang/vendor/mypy/typeshed/stdlib/array.pyi +92 -0
  508. jaclang/vendor/mypy/typeshed/stdlib/ast.pyi +277 -0
  509. jaclang/vendor/mypy/typeshed/stdlib/asynchat.pyi +21 -0
  510. jaclang/vendor/mypy/typeshed/stdlib/asyncio/__init__.pyi +41 -0
  511. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_events.pyi +440 -0
  512. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_futures.pyi +19 -0
  513. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_subprocess.pyi +63 -0
  514. jaclang/vendor/mypy/typeshed/stdlib/asyncio/base_tasks.pyi +9 -0
  515. jaclang/vendor/mypy/typeshed/stdlib/asyncio/constants.pyi +20 -0
  516. jaclang/vendor/mypy/typeshed/stdlib/asyncio/coroutines.pyi +26 -0
  517. jaclang/vendor/mypy/typeshed/stdlib/asyncio/events.pyi +580 -0
  518. jaclang/vendor/mypy/typeshed/stdlib/asyncio/exceptions.pyi +43 -0
  519. jaclang/vendor/mypy/typeshed/stdlib/asyncio/format_helpers.pyi +20 -0
  520. jaclang/vendor/mypy/typeshed/stdlib/asyncio/futures.pyi +57 -0
  521. jaclang/vendor/mypy/typeshed/stdlib/asyncio/locks.pyi +121 -0
  522. jaclang/vendor/mypy/typeshed/stdlib/asyncio/log.pyi +3 -0
  523. jaclang/vendor/mypy/typeshed/stdlib/asyncio/mixins.pyi +9 -0
  524. jaclang/vendor/mypy/typeshed/stdlib/asyncio/proactor_events.pyi +64 -0
  525. jaclang/vendor/mypy/typeshed/stdlib/asyncio/protocols.pyi +34 -0
  526. jaclang/vendor/mypy/typeshed/stdlib/asyncio/queues.pyi +47 -0
  527. jaclang/vendor/mypy/typeshed/stdlib/asyncio/runners.pyi +32 -0
  528. jaclang/vendor/mypy/typeshed/stdlib/asyncio/selector_events.pyi +8 -0
  529. jaclang/vendor/mypy/typeshed/stdlib/asyncio/sslproto.pyi +165 -0
  530. jaclang/vendor/mypy/typeshed/stdlib/asyncio/staggered.pyi +10 -0
  531. jaclang/vendor/mypy/typeshed/stdlib/asyncio/streams.pyi +153 -0
  532. jaclang/vendor/mypy/typeshed/stdlib/asyncio/subprocess.pyi +229 -0
  533. jaclang/vendor/mypy/typeshed/stdlib/asyncio/taskgroups.pyi +25 -0
  534. jaclang/vendor/mypy/typeshed/stdlib/asyncio/tasks.pyi +497 -0
  535. jaclang/vendor/mypy/typeshed/stdlib/asyncio/threads.pyi +9 -0
  536. jaclang/vendor/mypy/typeshed/stdlib/asyncio/timeouts.pyi +19 -0
  537. jaclang/vendor/mypy/typeshed/stdlib/asyncio/transports.pyi +47 -0
  538. jaclang/vendor/mypy/typeshed/stdlib/asyncio/trsock.pyi +94 -0
  539. jaclang/vendor/mypy/typeshed/stdlib/asyncio/unix_events.pyi +196 -0
  540. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_events.pyi +85 -0
  541. jaclang/vendor/mypy/typeshed/stdlib/asyncio/windows_utils.pyi +49 -0
  542. jaclang/vendor/mypy/typeshed/stdlib/asyncore.pyi +90 -0
  543. jaclang/vendor/mypy/typeshed/stdlib/atexit.pyi +12 -0
  544. jaclang/vendor/mypy/typeshed/stdlib/audioop.pyi +43 -0
  545. jaclang/vendor/mypy/typeshed/stdlib/base64.pyi +59 -0
  546. jaclang/vendor/mypy/typeshed/stdlib/bdb.pyi +102 -0
  547. jaclang/vendor/mypy/typeshed/stdlib/binascii.pyi +36 -0
  548. jaclang/vendor/mypy/typeshed/stdlib/binhex.pyi +45 -0
  549. jaclang/vendor/mypy/typeshed/stdlib/bisect.pyi +4 -0
  550. jaclang/vendor/mypy/typeshed/stdlib/builtins.pyi +1936 -0
  551. jaclang/vendor/mypy/typeshed/stdlib/bz2.pyi +146 -0
  552. jaclang/vendor/mypy/typeshed/stdlib/cProfile.pyi +31 -0
  553. jaclang/vendor/mypy/typeshed/stdlib/calendar.pyi +208 -0
  554. jaclang/vendor/mypy/typeshed/stdlib/cgi.pyi +118 -0
  555. jaclang/vendor/mypy/typeshed/stdlib/cgitb.pyi +32 -0
  556. jaclang/vendor/mypy/typeshed/stdlib/chunk.pyi +20 -0
  557. jaclang/vendor/mypy/typeshed/stdlib/cmath.pyi +36 -0
  558. jaclang/vendor/mypy/typeshed/stdlib/cmd.pyi +45 -0
  559. jaclang/vendor/mypy/typeshed/stdlib/code.pyi +33 -0
  560. jaclang/vendor/mypy/typeshed/stdlib/codecs.pyi +285 -0
  561. jaclang/vendor/mypy/typeshed/stdlib/codeop.pyi +13 -0
  562. jaclang/vendor/mypy/typeshed/stdlib/collections/__init__.pyi +485 -0
  563. jaclang/vendor/mypy/typeshed/stdlib/collections/abc.pyi +2 -0
  564. jaclang/vendor/mypy/typeshed/stdlib/colorsys.pyi +13 -0
  565. jaclang/vendor/mypy/typeshed/stdlib/compileall.pyi +111 -0
  566. jaclang/vendor/mypy/typeshed/stdlib/concurrent/__init__.pyi +0 -0
  567. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/__init__.pyi +32 -0
  568. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/_base.pyi +126 -0
  569. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/process.pyi +233 -0
  570. jaclang/vendor/mypy/typeshed/stdlib/concurrent/futures/thread.pyi +80 -0
  571. jaclang/vendor/mypy/typeshed/stdlib/configparser.pyi +313 -0
  572. jaclang/vendor/mypy/typeshed/stdlib/contextlib.pyi +208 -0
  573. jaclang/vendor/mypy/typeshed/stdlib/contextvars.pyi +63 -0
  574. jaclang/vendor/mypy/typeshed/stdlib/copy.pyi +16 -0
  575. jaclang/vendor/mypy/typeshed/stdlib/copyreg.pyi +21 -0
  576. jaclang/vendor/mypy/typeshed/stdlib/crypt.pyi +12 -0
  577. jaclang/vendor/mypy/typeshed/stdlib/csv.pyi +147 -0
  578. jaclang/vendor/mypy/typeshed/stdlib/ctypes/__init__.pyi +187 -0
  579. jaclang/vendor/mypy/typeshed/stdlib/ctypes/_endian.pyi +19 -0
  580. jaclang/vendor/mypy/typeshed/stdlib/ctypes/util.pyi +6 -0
  581. jaclang/vendor/mypy/typeshed/stdlib/ctypes/wintypes.pyi +298 -0
  582. jaclang/vendor/mypy/typeshed/stdlib/curses/__init__.pyi +22 -0
  583. jaclang/vendor/mypy/typeshed/stdlib/curses/ascii.pyi +62 -0
  584. jaclang/vendor/mypy/typeshed/stdlib/curses/has_key.pyi +1 -0
  585. jaclang/vendor/mypy/typeshed/stdlib/curses/panel.pyi +22 -0
  586. jaclang/vendor/mypy/typeshed/stdlib/curses/textpad.pyi +11 -0
  587. jaclang/vendor/mypy/typeshed/stdlib/dataclasses.pyi +315 -0
  588. jaclang/vendor/mypy/typeshed/stdlib/datetime.pyi +295 -0
  589. jaclang/vendor/mypy/typeshed/stdlib/dbm/__init__.pyi +95 -0
  590. jaclang/vendor/mypy/typeshed/stdlib/dbm/dumb.pyi +31 -0
  591. jaclang/vendor/mypy/typeshed/stdlib/dbm/gnu.pyi +41 -0
  592. jaclang/vendor/mypy/typeshed/stdlib/dbm/ndbm.pyi +37 -0
  593. jaclang/vendor/mypy/typeshed/stdlib/decimal.pyi +2 -0
  594. jaclang/vendor/mypy/typeshed/stdlib/difflib.pyi +140 -0
  595. jaclang/vendor/mypy/typeshed/stdlib/dis.pyi +144 -0
  596. jaclang/vendor/mypy/typeshed/stdlib/distutils/__init__.pyi +5 -0
  597. jaclang/vendor/mypy/typeshed/stdlib/distutils/archive_util.pyi +20 -0
  598. jaclang/vendor/mypy/typeshed/stdlib/distutils/bcppcompiler.pyi +3 -0
  599. jaclang/vendor/mypy/typeshed/stdlib/distutils/ccompiler.pyi +152 -0
  600. jaclang/vendor/mypy/typeshed/stdlib/distutils/cmd.pyi +66 -0
  601. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/__init__.pyi +0 -0
  602. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist.pyi +25 -0
  603. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_dumb.pyi +21 -0
  604. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_msi.pyi +45 -0
  605. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_packager.pyi +0 -0
  606. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_rpm.pyi +52 -0
  607. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/bdist_wininst.pyi +16 -0
  608. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build.pyi +31 -0
  609. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_clib.pyi +27 -0
  610. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_ext.pyi +50 -0
  611. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_py.pyi +44 -0
  612. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/build_scripts.pyi +24 -0
  613. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/check.pyi +39 -0
  614. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/clean.pyi +17 -0
  615. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/config.pyi +83 -0
  616. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install.pyi +63 -0
  617. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_data.pyi +19 -0
  618. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_egg_info.pyi +18 -0
  619. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_headers.pyi +16 -0
  620. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_lib.pyi +25 -0
  621. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/install_scripts.pyi +18 -0
  622. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/register.pyi +18 -0
  623. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/sdist.pyi +42 -0
  624. jaclang/vendor/mypy/typeshed/stdlib/distutils/command/upload.pyi +17 -0
  625. jaclang/vendor/mypy/typeshed/stdlib/distutils/config.pyi +17 -0
  626. jaclang/vendor/mypy/typeshed/stdlib/distutils/core.pyi +57 -0
  627. jaclang/vendor/mypy/typeshed/stdlib/distutils/cygwinccompiler.pyi +20 -0
  628. jaclang/vendor/mypy/typeshed/stdlib/distutils/debug.pyi +1 -0
  629. jaclang/vendor/mypy/typeshed/stdlib/distutils/dep_util.pyi +3 -0
  630. jaclang/vendor/mypy/typeshed/stdlib/distutils/dir_util.pyi +13 -0
  631. jaclang/vendor/mypy/typeshed/stdlib/distutils/dist.pyi +146 -0
  632. jaclang/vendor/mypy/typeshed/stdlib/distutils/errors.pyi +19 -0
  633. jaclang/vendor/mypy/typeshed/stdlib/distutils/extension.pyi +36 -0
  634. jaclang/vendor/mypy/typeshed/stdlib/distutils/fancy_getopt.pyi +34 -0
  635. jaclang/vendor/mypy/typeshed/stdlib/distutils/file_util.pyi +14 -0
  636. jaclang/vendor/mypy/typeshed/stdlib/distutils/filelist.pyi +50 -0
  637. jaclang/vendor/mypy/typeshed/stdlib/distutils/log.pyi +25 -0
  638. jaclang/vendor/mypy/typeshed/stdlib/distutils/msvccompiler.pyi +3 -0
  639. jaclang/vendor/mypy/typeshed/stdlib/distutils/spawn.pyi +2 -0
  640. jaclang/vendor/mypy/typeshed/stdlib/distutils/sysconfig.pyi +31 -0
  641. jaclang/vendor/mypy/typeshed/stdlib/distutils/text_file.pyi +21 -0
  642. jaclang/vendor/mypy/typeshed/stdlib/distutils/unixccompiler.pyi +3 -0
  643. jaclang/vendor/mypy/typeshed/stdlib/distutils/util.pyi +46 -0
  644. jaclang/vendor/mypy/typeshed/stdlib/distutils/version.pyi +36 -0
  645. jaclang/vendor/mypy/typeshed/stdlib/doctest.pyi +248 -0
  646. jaclang/vendor/mypy/typeshed/stdlib/dummy_threading.pyi +2 -0
  647. jaclang/vendor/mypy/typeshed/stdlib/email/__init__.pyi +29 -0
  648. jaclang/vendor/mypy/typeshed/stdlib/email/_header_value_parser.pyi +392 -0
  649. jaclang/vendor/mypy/typeshed/stdlib/email/_policybase.pyi +51 -0
  650. jaclang/vendor/mypy/typeshed/stdlib/email/base64mime.pyi +13 -0
  651. jaclang/vendor/mypy/typeshed/stdlib/email/charset.pyi +34 -0
  652. jaclang/vendor/mypy/typeshed/stdlib/email/contentmanager.pyi +11 -0
  653. jaclang/vendor/mypy/typeshed/stdlib/email/encoders.pyi +8 -0
  654. jaclang/vendor/mypy/typeshed/stdlib/email/errors.pyi +39 -0
  655. jaclang/vendor/mypy/typeshed/stdlib/email/feedparser.pyi +23 -0
  656. jaclang/vendor/mypy/typeshed/stdlib/email/generator.pyi +40 -0
  657. jaclang/vendor/mypy/typeshed/stdlib/email/header.pyi +31 -0
  658. jaclang/vendor/mypy/typeshed/stdlib/email/headerregistry.pyi +178 -0
  659. jaclang/vendor/mypy/typeshed/stdlib/email/iterators.pyi +12 -0
  660. jaclang/vendor/mypy/typeshed/stdlib/email/message.pyi +165 -0
  661. jaclang/vendor/mypy/typeshed/stdlib/email/mime/__init__.pyi +0 -0
  662. jaclang/vendor/mypy/typeshed/stdlib/email/mime/application.pyi +17 -0
  663. jaclang/vendor/mypy/typeshed/stdlib/email/mime/audio.pyi +17 -0
  664. jaclang/vendor/mypy/typeshed/stdlib/email/mime/base.pyi +8 -0
  665. jaclang/vendor/mypy/typeshed/stdlib/email/mime/image.pyi +17 -0
  666. jaclang/vendor/mypy/typeshed/stdlib/email/mime/message.pyi +8 -0
  667. jaclang/vendor/mypy/typeshed/stdlib/email/mime/multipart.pyi +18 -0
  668. jaclang/vendor/mypy/typeshed/stdlib/email/mime/nonmultipart.pyi +5 -0
  669. jaclang/vendor/mypy/typeshed/stdlib/email/mime/text.pyi +9 -0
  670. jaclang/vendor/mypy/typeshed/stdlib/email/parser.pyi +26 -0
  671. jaclang/vendor/mypy/typeshed/stdlib/email/policy.pyi +38 -0
  672. jaclang/vendor/mypy/typeshed/stdlib/email/quoprimime.pyi +28 -0
  673. jaclang/vendor/mypy/typeshed/stdlib/email/utils.pyi +70 -0
  674. jaclang/vendor/mypy/typeshed/stdlib/encodings/__init__.pyi +10 -0
  675. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8.pyi +21 -0
  676. jaclang/vendor/mypy/typeshed/stdlib/encodings/utf_8_sig.pyi +22 -0
  677. jaclang/vendor/mypy/typeshed/stdlib/ensurepip/__init__.pyi +12 -0
  678. jaclang/vendor/mypy/typeshed/stdlib/enum.pyi +320 -0
  679. jaclang/vendor/mypy/typeshed/stdlib/errno.pyi +222 -0
  680. jaclang/vendor/mypy/typeshed/stdlib/faulthandler.pyi +13 -0
  681. jaclang/vendor/mypy/typeshed/stdlib/fcntl.pyi +127 -0
  682. jaclang/vendor/mypy/typeshed/stdlib/filecmp.pyi +57 -0
  683. jaclang/vendor/mypy/typeshed/stdlib/fileinput.pyi +213 -0
  684. jaclang/vendor/mypy/typeshed/stdlib/fnmatch.pyi +9 -0
  685. jaclang/vendor/mypy/typeshed/stdlib/formatter.pyi +88 -0
  686. jaclang/vendor/mypy/typeshed/stdlib/fractions.pyi +150 -0
  687. jaclang/vendor/mypy/typeshed/stdlib/ftplib.pyi +178 -0
  688. jaclang/vendor/mypy/typeshed/stdlib/functools.pyi +213 -0
  689. jaclang/vendor/mypy/typeshed/stdlib/gc.pyi +37 -0
  690. jaclang/vendor/mypy/typeshed/stdlib/genericpath.pyi +52 -0
  691. jaclang/vendor/mypy/typeshed/stdlib/getopt.pyi +11 -0
  692. jaclang/vendor/mypy/typeshed/stdlib/getpass.pyi +8 -0
  693. jaclang/vendor/mypy/typeshed/stdlib/gettext.pyi +169 -0
  694. jaclang/vendor/mypy/typeshed/stdlib/glob.pyi +42 -0
  695. jaclang/vendor/mypy/typeshed/stdlib/graphlib.pyi +28 -0
  696. jaclang/vendor/mypy/typeshed/stdlib/grp.pyi +22 -0
  697. jaclang/vendor/mypy/typeshed/stdlib/gzip.pyi +160 -0
  698. jaclang/vendor/mypy/typeshed/stdlib/hashlib.pyi +167 -0
  699. jaclang/vendor/mypy/typeshed/stdlib/heapq.pyi +17 -0
  700. jaclang/vendor/mypy/typeshed/stdlib/hmac.pyi +38 -0
  701. jaclang/vendor/mypy/typeshed/stdlib/html/__init__.pyi +6 -0
  702. jaclang/vendor/mypy/typeshed/stdlib/html/entities.pyi +6 -0
  703. jaclang/vendor/mypy/typeshed/stdlib/html/parser.pyi +34 -0
  704. jaclang/vendor/mypy/typeshed/stdlib/http/__init__.pyi +105 -0
  705. jaclang/vendor/mypy/typeshed/stdlib/http/client.pyi +259 -0
  706. jaclang/vendor/mypy/typeshed/stdlib/http/cookiejar.pyi +159 -0
  707. jaclang/vendor/mypy/typeshed/stdlib/http/cookies.pyi +60 -0
  708. jaclang/vendor/mypy/typeshed/stdlib/http/server.pyi +83 -0
  709. jaclang/vendor/mypy/typeshed/stdlib/imaplib.pyi +168 -0
  710. jaclang/vendor/mypy/typeshed/stdlib/imghdr.pyi +17 -0
  711. jaclang/vendor/mypy/typeshed/stdlib/imp.pyi +62 -0
  712. jaclang/vendor/mypy/typeshed/stdlib/importlib/__init__.pyi +24 -0
  713. jaclang/vendor/mypy/typeshed/stdlib/importlib/_abc.pyi +15 -0
  714. jaclang/vendor/mypy/typeshed/stdlib/importlib/abc.pyi +172 -0
  715. jaclang/vendor/mypy/typeshed/stdlib/importlib/machinery.pyi +179 -0
  716. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/__init__.pyi +285 -0
  717. jaclang/vendor/mypy/typeshed/stdlib/importlib/metadata/_meta.pyi +49 -0
  718. jaclang/vendor/mypy/typeshed/stdlib/importlib/readers.pyi +68 -0
  719. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/__init__.pyi +46 -0
  720. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/abc.pyi +12 -0
  721. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/readers.pyi +14 -0
  722. jaclang/vendor/mypy/typeshed/stdlib/importlib/resources/simple.pyi +56 -0
  723. jaclang/vendor/mypy/typeshed/stdlib/importlib/simple.pyi +11 -0
  724. jaclang/vendor/mypy/typeshed/stdlib/importlib/util.pyi +43 -0
  725. jaclang/vendor/mypy/typeshed/stdlib/inspect.pyi +632 -0
  726. jaclang/vendor/mypy/typeshed/stdlib/io.pyi +238 -0
  727. jaclang/vendor/mypy/typeshed/stdlib/ipaddress.pyi +208 -0
  728. jaclang/vendor/mypy/typeshed/stdlib/itertools.pyi +273 -0
  729. jaclang/vendor/mypy/typeshed/stdlib/json/__init__.pyi +61 -0
  730. jaclang/vendor/mypy/typeshed/stdlib/json/decoder.pyi +32 -0
  731. jaclang/vendor/mypy/typeshed/stdlib/json/encoder.pyi +40 -0
  732. jaclang/vendor/mypy/typeshed/stdlib/json/tool.pyi +1 -0
  733. jaclang/vendor/mypy/typeshed/stdlib/keyword.pyi +21 -0
  734. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/__init__.pyi +0 -0
  735. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/btm_matcher.pyi +28 -0
  736. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixer_base.pyi +42 -0
  737. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/__init__.pyi +0 -0
  738. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_apply.pyi +8 -0
  739. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_asserts.pyi +10 -0
  740. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_basestring.pyi +8 -0
  741. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_buffer.pyi +8 -0
  742. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_dict.pyi +16 -0
  743. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_except.pyi +14 -0
  744. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exec.pyi +8 -0
  745. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_execfile.pyi +8 -0
  746. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_exitfunc.pyi +13 -0
  747. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_filter.pyi +9 -0
  748. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_funcattrs.pyi +8 -0
  749. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_future.pyi +8 -0
  750. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_getcwdu.pyi +8 -0
  751. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_has_key.pyi +8 -0
  752. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_idioms.pyi +15 -0
  753. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_import.pyi +16 -0
  754. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports.pyi +21 -0
  755. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_imports2.pyi +6 -0
  756. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_input.pyi +11 -0
  757. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_intern.pyi +9 -0
  758. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_isinstance.pyi +8 -0
  759. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools.pyi +9 -0
  760. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_itertools_imports.pyi +7 -0
  761. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_long.pyi +7 -0
  762. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_map.pyi +9 -0
  763. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_metaclass.pyi +17 -0
  764. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_methodattrs.pyi +10 -0
  765. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ne.pyi +8 -0
  766. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_next.pyi +19 -0
  767. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_nonzero.pyi +8 -0
  768. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_numliterals.pyi +8 -0
  769. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_operator.pyi +12 -0
  770. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_paren.pyi +8 -0
  771. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_print.pyi +12 -0
  772. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raise.pyi +8 -0
  773. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_raw_input.pyi +8 -0
  774. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reduce.pyi +8 -0
  775. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_reload.pyi +9 -0
  776. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_renames.pyi +17 -0
  777. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_repr.pyi +8 -0
  778. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_set_literal.pyi +7 -0
  779. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_standarderror.pyi +8 -0
  780. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_sys_exc.pyi +9 -0
  781. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_throw.pyi +8 -0
  782. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_tuple_params.pyi +17 -0
  783. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_types.pyi +8 -0
  784. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_unicode.pyi +12 -0
  785. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_urllib.pyi +15 -0
  786. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_ws_comma.pyi +12 -0
  787. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xrange.pyi +20 -0
  788. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_xreadlines.pyi +8 -0
  789. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/fixes/fix_zip.pyi +9 -0
  790. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/main.pyi +42 -0
  791. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/__init__.pyi +9 -0
  792. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/driver.pyi +27 -0
  793. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/grammar.pyi +24 -0
  794. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/literals.pyi +7 -0
  795. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/parse.pyi +30 -0
  796. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/pgen.pyi +50 -0
  797. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/token.pyi +67 -0
  798. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pgen2/tokenize.pyi +96 -0
  799. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pygram.pyi +114 -0
  800. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/pytree.pyi +117 -0
  801. jaclang/vendor/mypy/typeshed/stdlib/lib2to3/refactor.pyi +82 -0
  802. jaclang/vendor/mypy/typeshed/stdlib/linecache.pyi +23 -0
  803. jaclang/vendor/mypy/typeshed/stdlib/locale.pyi +152 -0
  804. jaclang/vendor/mypy/typeshed/stdlib/logging/__init__.pyi +658 -0
  805. jaclang/vendor/mypy/typeshed/stdlib/logging/config.pyi +134 -0
  806. jaclang/vendor/mypy/typeshed/stdlib/logging/handlers.pyi +275 -0
  807. jaclang/vendor/mypy/typeshed/stdlib/lzma.pyi +197 -0
  808. jaclang/vendor/mypy/typeshed/stdlib/mailbox.pyi +256 -0
  809. jaclang/vendor/mypy/typeshed/stdlib/mailcap.pyi +11 -0
  810. jaclang/vendor/mypy/typeshed/stdlib/marshal.pyi +33 -0
  811. jaclang/vendor/mypy/typeshed/stdlib/math.pyi +125 -0
  812. jaclang/vendor/mypy/typeshed/stdlib/mimetypes.pyi +46 -0
  813. jaclang/vendor/mypy/typeshed/stdlib/mmap.pyi +113 -0
  814. jaclang/vendor/mypy/typeshed/stdlib/modulefinder.pyi +66 -0
  815. jaclang/vendor/mypy/typeshed/stdlib/msilib/__init__.pyi +177 -0
  816. jaclang/vendor/mypy/typeshed/stdlib/msilib/schema.pyi +94 -0
  817. jaclang/vendor/mypy/typeshed/stdlib/msilib/sequence.pyi +13 -0
  818. jaclang/vendor/mypy/typeshed/stdlib/msilib/text.pyi +7 -0
  819. jaclang/vendor/mypy/typeshed/stdlib/msvcrt.pyi +32 -0
  820. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/__init__.pyi +90 -0
  821. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/connection.pyi +75 -0
  822. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/context.pyi +189 -0
  823. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/__init__.pyi +77 -0
  824. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/dummy/connection.pyi +39 -0
  825. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/forkserver.pyi +31 -0
  826. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/heap.pyi +36 -0
  827. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/managers.pyi +212 -0
  828. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/pool.pyi +103 -0
  829. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_fork.pyi +23 -0
  830. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_forkserver.pyi +16 -0
  831. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_posix.pyi +20 -0
  832. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/popen_spawn_win32.pyi +30 -0
  833. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/process.pyi +39 -0
  834. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/queues.pyi +41 -0
  835. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/reduction.pyi +90 -0
  836. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_sharer.pyi +20 -0
  837. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/resource_tracker.pyi +18 -0
  838. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/shared_memory.pyi +40 -0
  839. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/sharedctypes.pyi +107 -0
  840. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/spawn.pyi +32 -0
  841. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/synchronize.pyi +54 -0
  842. jaclang/vendor/mypy/typeshed/stdlib/multiprocessing/util.pyi +98 -0
  843. jaclang/vendor/mypy/typeshed/stdlib/netrc.pyi +23 -0
  844. jaclang/vendor/mypy/typeshed/stdlib/nis.pyi +9 -0
  845. jaclang/vendor/mypy/typeshed/stdlib/nntplib.pyi +125 -0
  846. jaclang/vendor/mypy/typeshed/stdlib/nt.pyi +111 -0
  847. jaclang/vendor/mypy/typeshed/stdlib/ntpath.pyi +119 -0
  848. jaclang/vendor/mypy/typeshed/stdlib/nturl2path.pyi +2 -0
  849. jaclang/vendor/mypy/typeshed/stdlib/numbers.pyi +209 -0
  850. jaclang/vendor/mypy/typeshed/stdlib/opcode.pyi +59 -0
  851. jaclang/vendor/mypy/typeshed/stdlib/operator.pyi +110 -0
  852. jaclang/vendor/mypy/typeshed/stdlib/optparse.pyi +255 -0
  853. jaclang/vendor/mypy/typeshed/stdlib/os/__init__.pyi +1157 -0
  854. jaclang/vendor/mypy/typeshed/stdlib/os/path.pyi +8 -0
  855. jaclang/vendor/mypy/typeshed/stdlib/ossaudiodev.pyi +131 -0
  856. jaclang/vendor/mypy/typeshed/stdlib/parser.pyi +24 -0
  857. jaclang/vendor/mypy/typeshed/stdlib/pathlib.pyi +232 -0
  858. jaclang/vendor/mypy/typeshed/stdlib/pdb.pyi +181 -0
  859. jaclang/vendor/mypy/typeshed/stdlib/pickle.pyi +271 -0
  860. jaclang/vendor/mypy/typeshed/stdlib/pickletools.pyi +167 -0
  861. jaclang/vendor/mypy/typeshed/stdlib/pipes.pyi +16 -0
  862. jaclang/vendor/mypy/typeshed/stdlib/pkgutil.pyi +53 -0
  863. jaclang/vendor/mypy/typeshed/stdlib/platform.pyi +42 -0
  864. jaclang/vendor/mypy/typeshed/stdlib/plistlib.pyi +113 -0
  865. jaclang/vendor/mypy/typeshed/stdlib/poplib.pyi +71 -0
  866. jaclang/vendor/mypy/typeshed/stdlib/posix.pyi +361 -0
  867. jaclang/vendor/mypy/typeshed/stdlib/posixpath.pyi +161 -0
  868. jaclang/vendor/mypy/typeshed/stdlib/pprint.pyi +112 -0
  869. jaclang/vendor/mypy/typeshed/stdlib/profile.pyi +31 -0
  870. jaclang/vendor/mypy/typeshed/stdlib/pstats.pyi +80 -0
  871. jaclang/vendor/mypy/typeshed/stdlib/pty.pyi +19 -0
  872. jaclang/vendor/mypy/typeshed/stdlib/pwd.pyi +28 -0
  873. jaclang/vendor/mypy/typeshed/stdlib/py_compile.pyi +34 -0
  874. jaclang/vendor/mypy/typeshed/stdlib/pyclbr.pyi +74 -0
  875. jaclang/vendor/mypy/typeshed/stdlib/pydoc.pyi +261 -0
  876. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/__init__.pyi +0 -0
  877. jaclang/vendor/mypy/typeshed/stdlib/pydoc_data/topics.pyi +1 -0
  878. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/__init__.pyi +85 -0
  879. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/errors.pyi +49 -0
  880. jaclang/vendor/mypy/typeshed/stdlib/pyexpat/model.pyi +11 -0
  881. jaclang/vendor/mypy/typeshed/stdlib/queue.pyi +66 -0
  882. jaclang/vendor/mypy/typeshed/stdlib/quopri.pyi +11 -0
  883. jaclang/vendor/mypy/typeshed/stdlib/random.pyi +138 -0
  884. jaclang/vendor/mypy/typeshed/stdlib/re.pyi +290 -0
  885. jaclang/vendor/mypy/typeshed/stdlib/readline.pyi +36 -0
  886. jaclang/vendor/mypy/typeshed/stdlib/reprlib.pyi +65 -0
  887. jaclang/vendor/mypy/typeshed/stdlib/resource.pyi +94 -0
  888. jaclang/vendor/mypy/typeshed/stdlib/rlcompleter.pyi +9 -0
  889. jaclang/vendor/mypy/typeshed/stdlib/runpy.pyi +24 -0
  890. jaclang/vendor/mypy/typeshed/stdlib/sched.pyi +42 -0
  891. jaclang/vendor/mypy/typeshed/stdlib/secrets.pyi +15 -0
  892. jaclang/vendor/mypy/typeshed/stdlib/select.pyi +155 -0
  893. jaclang/vendor/mypy/typeshed/stdlib/selectors.pyi +67 -0
  894. jaclang/vendor/mypy/typeshed/stdlib/shelve.pyi +46 -0
  895. jaclang/vendor/mypy/typeshed/stdlib/shlex.pyi +63 -0
  896. jaclang/vendor/mypy/typeshed/stdlib/shutil.pyi +185 -0
  897. jaclang/vendor/mypy/typeshed/stdlib/signal.pyi +188 -0
  898. jaclang/vendor/mypy/typeshed/stdlib/site.pyi +27 -0
  899. jaclang/vendor/mypy/typeshed/stdlib/smtpd.pyi +91 -0
  900. jaclang/vendor/mypy/typeshed/stdlib/smtplib.pyi +204 -0
  901. jaclang/vendor/mypy/typeshed/stdlib/sndhdr.pyi +14 -0
  902. jaclang/vendor/mypy/typeshed/stdlib/socket.pyi +825 -0
  903. jaclang/vendor/mypy/typeshed/stdlib/socketserver.pyi +168 -0
  904. jaclang/vendor/mypy/typeshed/stdlib/spwd.pyi +41 -0
  905. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/__init__.pyi +1 -0
  906. jaclang/vendor/mypy/typeshed/stdlib/sqlite3/dbapi2.pyi +551 -0
  907. jaclang/vendor/mypy/typeshed/stdlib/sre_compile.pyi +11 -0
  908. jaclang/vendor/mypy/typeshed/stdlib/sre_constants.pyi +130 -0
  909. jaclang/vendor/mypy/typeshed/stdlib/sre_parse.pyi +104 -0
  910. jaclang/vendor/mypy/typeshed/stdlib/ssl.pyi +537 -0
  911. jaclang/vendor/mypy/typeshed/stdlib/stat.pyi +1 -0
  912. jaclang/vendor/mypy/typeshed/stdlib/statistics.pyi +132 -0
  913. jaclang/vendor/mypy/typeshed/stdlib/string.pyi +83 -0
  914. jaclang/vendor/mypy/typeshed/stdlib/stringprep.pyi +27 -0
  915. jaclang/vendor/mypy/typeshed/stdlib/struct.pyi +26 -0
  916. jaclang/vendor/mypy/typeshed/stdlib/subprocess.pyi +2615 -0
  917. jaclang/vendor/mypy/typeshed/stdlib/sunau.pyi +86 -0
  918. jaclang/vendor/mypy/typeshed/stdlib/symbol.pyi +93 -0
  919. jaclang/vendor/mypy/typeshed/stdlib/symtable.pyi +58 -0
  920. jaclang/vendor/mypy/typeshed/stdlib/sys/__init__.pyi +373 -0
  921. jaclang/vendor/mypy/typeshed/stdlib/sys/_monitoring.pyi +52 -0
  922. jaclang/vendor/mypy/typeshed/stdlib/sysconfig.pyi +48 -0
  923. jaclang/vendor/mypy/typeshed/stdlib/syslog.pyi +46 -0
  924. jaclang/vendor/mypy/typeshed/stdlib/tabnanny.pyi +16 -0
  925. jaclang/vendor/mypy/typeshed/stdlib/tarfile.pyi +441 -0
  926. jaclang/vendor/mypy/typeshed/stdlib/telnetlib.pyi +122 -0
  927. jaclang/vendor/mypy/typeshed/stdlib/tempfile.pyi +477 -0
  928. jaclang/vendor/mypy/typeshed/stdlib/termios.pyi +267 -0
  929. jaclang/vendor/mypy/typeshed/stdlib/textwrap.pyi +103 -0
  930. jaclang/vendor/mypy/typeshed/stdlib/this.pyi +2 -0
  931. jaclang/vendor/mypy/typeshed/stdlib/threading.pyi +187 -0
  932. jaclang/vendor/mypy/typeshed/stdlib/time.pyi +108 -0
  933. jaclang/vendor/mypy/typeshed/stdlib/timeit.pyi +32 -0
  934. jaclang/vendor/mypy/typeshed/stdlib/tkinter/__init__.pyi +3654 -0
  935. jaclang/vendor/mypy/typeshed/stdlib/tkinter/colorchooser.pyi +20 -0
  936. jaclang/vendor/mypy/typeshed/stdlib/tkinter/commondialog.pyi +14 -0
  937. jaclang/vendor/mypy/typeshed/stdlib/tkinter/constants.pyi +80 -0
  938. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dialog.pyi +16 -0
  939. jaclang/vendor/mypy/typeshed/stdlib/tkinter/dnd.pyi +20 -0
  940. jaclang/vendor/mypy/typeshed/stdlib/tkinter/filedialog.pyi +151 -0
  941. jaclang/vendor/mypy/typeshed/stdlib/tkinter/font.pyi +116 -0
  942. jaclang/vendor/mypy/typeshed/stdlib/tkinter/messagebox.pyi +44 -0
  943. jaclang/vendor/mypy/typeshed/stdlib/tkinter/scrolledtext.pyi +9 -0
  944. jaclang/vendor/mypy/typeshed/stdlib/tkinter/simpledialog.pyi +54 -0
  945. jaclang/vendor/mypy/typeshed/stdlib/tkinter/tix.pyi +299 -0
  946. jaclang/vendor/mypy/typeshed/stdlib/tkinter/ttk.pyi +1204 -0
  947. jaclang/vendor/mypy/typeshed/stdlib/token.pyi +159 -0
  948. jaclang/vendor/mypy/typeshed/stdlib/tokenize.pyi +177 -0
  949. jaclang/vendor/mypy/typeshed/stdlib/tomllib.pyi +10 -0
  950. jaclang/vendor/mypy/typeshed/stdlib/trace.pyi +79 -0
  951. jaclang/vendor/mypy/typeshed/stdlib/traceback.pyi +262 -0
  952. jaclang/vendor/mypy/typeshed/stdlib/tracemalloc.pyi +124 -0
  953. jaclang/vendor/mypy/typeshed/stdlib/tty.pyi +30 -0
  954. jaclang/vendor/mypy/typeshed/stdlib/turtle.pyi +713 -0
  955. jaclang/vendor/mypy/typeshed/stdlib/types.pyi +614 -0
  956. jaclang/vendor/mypy/typeshed/stdlib/typing.pyi +976 -0
  957. jaclang/vendor/mypy/typeshed/stdlib/typing_extensions.pyi +509 -0
  958. jaclang/vendor/mypy/typeshed/stdlib/unicodedata.pyi +73 -0
  959. jaclang/vendor/mypy/typeshed/stdlib/unittest/__init__.pyi +67 -0
  960. jaclang/vendor/mypy/typeshed/stdlib/unittest/_log.pyi +27 -0
  961. jaclang/vendor/mypy/typeshed/stdlib/unittest/async_case.pyi +21 -0
  962. jaclang/vendor/mypy/typeshed/stdlib/unittest/case.pyi +342 -0
  963. jaclang/vendor/mypy/typeshed/stdlib/unittest/loader.pyi +51 -0
  964. jaclang/vendor/mypy/typeshed/stdlib/unittest/main.pyi +69 -0
  965. jaclang/vendor/mypy/typeshed/stdlib/unittest/mock.pyi +430 -0
  966. jaclang/vendor/mypy/typeshed/stdlib/unittest/result.pyi +47 -0
  967. jaclang/vendor/mypy/typeshed/stdlib/unittest/runner.pyi +72 -0
  968. jaclang/vendor/mypy/typeshed/stdlib/unittest/signals.pyi +15 -0
  969. jaclang/vendor/mypy/typeshed/stdlib/unittest/suite.pyi +22 -0
  970. jaclang/vendor/mypy/typeshed/stdlib/unittest/util.pyi +23 -0
  971. jaclang/vendor/mypy/typeshed/stdlib/urllib/__init__.pyi +0 -0
  972. jaclang/vendor/mypy/typeshed/stdlib/urllib/error.pyi +23 -0
  973. jaclang/vendor/mypy/typeshed/stdlib/urllib/parse.pyi +210 -0
  974. jaclang/vendor/mypy/typeshed/stdlib/urllib/request.pyi +400 -0
  975. jaclang/vendor/mypy/typeshed/stdlib/urllib/response.pyi +43 -0
  976. jaclang/vendor/mypy/typeshed/stdlib/urllib/robotparser.pyi +20 -0
  977. jaclang/vendor/mypy/typeshed/stdlib/uu.pyi +13 -0
  978. jaclang/vendor/mypy/typeshed/stdlib/uuid.pyi +100 -0
  979. jaclang/vendor/mypy/typeshed/stdlib/warnings.pyi +112 -0
  980. jaclang/vendor/mypy/typeshed/stdlib/wave.pyi +85 -0
  981. jaclang/vendor/mypy/typeshed/stdlib/weakref.pyi +149 -0
  982. jaclang/vendor/mypy/typeshed/stdlib/webbrowser.pyi +74 -0
  983. jaclang/vendor/mypy/typeshed/stdlib/winreg.pyi +132 -0
  984. jaclang/vendor/mypy/typeshed/stdlib/winsound.pyi +28 -0
  985. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/__init__.pyi +0 -0
  986. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/handlers.pyi +91 -0
  987. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/headers.pyi +26 -0
  988. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/simple_server.pyi +37 -0
  989. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/types.pyi +32 -0
  990. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/util.pyi +24 -0
  991. jaclang/vendor/mypy/typeshed/stdlib/wsgiref/validate.pyi +50 -0
  992. jaclang/vendor/mypy/typeshed/stdlib/xdrlib.pyi +57 -0
  993. jaclang/vendor/mypy/typeshed/stdlib/xml/__init__.pyi +1 -0
  994. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/NodeFilter.pyi +19 -0
  995. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/__init__.pyi +69 -0
  996. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/domreg.pyi +8 -0
  997. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/expatbuilder.pyi +100 -0
  998. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minicompat.pyi +22 -0
  999. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/minidom.pyi +404 -0
  1000. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/pulldom.pyi +94 -0
  1001. jaclang/vendor/mypy/typeshed/stdlib/xml/dom/xmlbuilder.pyi +108 -0
  1002. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementInclude.pyi +28 -0
  1003. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementPath.pyi +34 -0
  1004. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/ElementTree.pyi +327 -0
  1005. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/__init__.pyi +0 -0
  1006. jaclang/vendor/mypy/typeshed/stdlib/xml/etree/cElementTree.pyi +1 -0
  1007. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/__init__.pyi +1 -0
  1008. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/__init__.pyi +1 -0
  1009. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/errors.pyi +1 -0
  1010. jaclang/vendor/mypy/typeshed/stdlib/xml/parsers/expat/model.pyi +1 -0
  1011. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/__init__.pyi +25 -0
  1012. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/_exceptions.pyi +19 -0
  1013. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/handler.pyi +55 -0
  1014. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/saxutils.pyi +60 -0
  1015. jaclang/vendor/mypy/typeshed/stdlib/xml/sax/xmlreader.pyi +87 -0
  1016. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/__init__.pyi +0 -0
  1017. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/client.pyi +296 -0
  1018. jaclang/vendor/mypy/typeshed/stdlib/xmlrpc/server.pyi +143 -0
  1019. jaclang/vendor/mypy/typeshed/stdlib/xxlimited.pyi +22 -0
  1020. jaclang/vendor/mypy/typeshed/stdlib/zipapp.pyi +20 -0
  1021. jaclang/vendor/mypy/typeshed/stdlib/zipfile/__init__.pyi +306 -0
  1022. jaclang/vendor/mypy/typeshed/stdlib/zipfile/_path.pyi +95 -0
  1023. jaclang/vendor/mypy/typeshed/stdlib/zipimport.pyi +32 -0
  1024. jaclang/vendor/mypy/typeshed/stdlib/zlib.pyi +56 -0
  1025. jaclang/vendor/mypy/typeshed/stdlib/zoneinfo/__init__.pyi +38 -0
  1026. jaclang/vendor/mypy/typeshed/stubs/mypy-extensions/mypy_extensions.pyi +218 -0
  1027. jaclang/vendor/mypy/typestate.py +5 -15
  1028. jaclang/vendor/mypy/typetraverser.py +9 -3
  1029. jaclang/vendor/mypy/typevars.py +2 -8
  1030. jaclang/vendor/mypy/util.py +14 -45
  1031. jaclang/vendor/mypy/version.py +1 -19
  1032. jaclang/vendor/mypy/visitor.py +3 -9
  1033. jaclang/vendor/mypy/xml/mypy-html.css +104 -0
  1034. jaclang/vendor/mypy/xml/mypy-html.xslt +81 -0
  1035. jaclang/vendor/mypy/xml/mypy-txt.xslt +100 -0
  1036. jaclang/vendor/mypy/xml/mypy.xsd +50 -0
  1037. jaclang/vendor/mypy-1.10.0.dist-info/LICENSE +229 -0
  1038. jaclang/vendor/mypy-1.10.0.dist-info/METADATA +48 -0
  1039. jaclang/vendor/mypy-1.10.0.dist-info/RECORD +1241 -0
  1040. jaclang/vendor/mypy-1.10.0.dist-info/WHEEL +6 -0
  1041. jaclang/vendor/mypy-1.10.0.dist-info/entry_points.txt +6 -0
  1042. jaclang/vendor/mypy-1.10.0.dist-info/top_level.txt +3 -0
  1043. jaclang/vendor/mypy_extensions-1.0.0.dist-info/LICENSE +27 -0
  1044. jaclang/vendor/mypy_extensions-1.0.0.dist-info/METADATA +29 -0
  1045. jaclang/vendor/mypy_extensions-1.0.0.dist-info/RECORD +6 -0
  1046. jaclang/vendor/mypy_extensions-1.0.0.dist-info/WHEEL +5 -0
  1047. jaclang/vendor/mypy_extensions-1.0.0.dist-info/top_level.txt +1 -0
  1048. jaclang/vendor/mypy_extensions.py +21 -40
  1049. jaclang/vendor/mypyc/README.md +133 -0
  1050. jaclang/vendor/mypyc/__main__.py +1 -3
  1051. jaclang/vendor/mypyc/analysis/attrdefined.py +6 -22
  1052. jaclang/vendor/mypyc/analysis/dataflow.py +5 -3
  1053. jaclang/vendor/mypyc/analysis/ircheck.py +13 -26
  1054. jaclang/vendor/mypyc/analysis/selfleaks.py +4 -0
  1055. jaclang/vendor/mypyc/build.py +6 -19
  1056. jaclang/vendor/mypyc/codegen/emit.py +20 -73
  1057. jaclang/vendor/mypyc/codegen/emitclass.py +22 -72
  1058. jaclang/vendor/mypyc/codegen/emitfunc.py +20 -62
  1059. jaclang/vendor/mypyc/codegen/emitmodule.py +50 -117
  1060. jaclang/vendor/mypyc/codegen/emitwrapper.py +22 -78
  1061. jaclang/vendor/mypyc/codegen/literals.py +1 -3
  1062. jaclang/vendor/mypyc/common.py +1 -3
  1063. jaclang/vendor/mypyc/doc/Makefile +20 -0
  1064. jaclang/vendor/mypyc/doc/bool_operations.rst +27 -0
  1065. jaclang/vendor/mypyc/doc/compilation_units.rst +20 -0
  1066. jaclang/vendor/mypyc/doc/conf.py +59 -0
  1067. jaclang/vendor/mypyc/doc/cpython-timings.md +25 -0
  1068. jaclang/vendor/mypyc/doc/dev-intro.md +548 -0
  1069. jaclang/vendor/mypyc/doc/dict_operations.rst +59 -0
  1070. jaclang/vendor/mypyc/doc/differences_from_python.rst +332 -0
  1071. jaclang/vendor/mypyc/doc/float_operations.rst +50 -0
  1072. jaclang/vendor/mypyc/doc/future.md +42 -0
  1073. jaclang/vendor/mypyc/doc/getting_started.rst +240 -0
  1074. jaclang/vendor/mypyc/doc/index.rst +61 -0
  1075. jaclang/vendor/mypyc/doc/int_operations.rst +162 -0
  1076. jaclang/vendor/mypyc/doc/introduction.rst +150 -0
  1077. jaclang/vendor/mypyc/doc/list_operations.rst +65 -0
  1078. jaclang/vendor/mypyc/doc/make.bat +35 -0
  1079. jaclang/vendor/mypyc/doc/native_classes.rst +206 -0
  1080. jaclang/vendor/mypyc/doc/native_operations.rst +55 -0
  1081. jaclang/vendor/mypyc/doc/performance_tips_and_tricks.rst +244 -0
  1082. jaclang/vendor/mypyc/doc/set_operations.rst +47 -0
  1083. jaclang/vendor/mypyc/doc/str_operations.rst +35 -0
  1084. jaclang/vendor/mypyc/doc/tuple_operations.rst +33 -0
  1085. jaclang/vendor/mypyc/doc/using_type_annotations.rst +398 -0
  1086. jaclang/vendor/mypyc/external/googletest/LICENSE +28 -0
  1087. jaclang/vendor/mypyc/external/googletest/README.md +280 -0
  1088. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-death-test.h +294 -0
  1089. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-message.h +250 -0
  1090. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h +1444 -0
  1091. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-param-test.h.pump +510 -0
  1092. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-printers.h +993 -0
  1093. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-spi.h +232 -0
  1094. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-test-part.h +179 -0
  1095. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest-typed-test.h +263 -0
  1096. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest.h +2236 -0
  1097. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_pred_impl.h +358 -0
  1098. jaclang/vendor/mypyc/external/googletest/include/gtest/gtest_prod.h +58 -0
  1099. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-port.h +69 -0
  1100. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
  1101. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/custom/gtest.h +41 -0
  1102. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-death-test-internal.h +319 -0
  1103. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-filepath.h +206 -0
  1104. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-internal.h +1238 -0
  1105. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-linked_ptr.h +243 -0
  1106. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h +5146 -0
  1107. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util-generated.h.pump +286 -0
  1108. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-param-util.h +731 -0
  1109. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port-arch.h +93 -0
  1110. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-port.h +2560 -0
  1111. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-string.h +167 -0
  1112. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h +1020 -0
  1113. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-tuple.h.pump +347 -0
  1114. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h +3331 -0
  1115. jaclang/vendor/mypyc/external/googletest/include/gtest/internal/gtest-type-util.h.pump +297 -0
  1116. jaclang/vendor/mypyc/external/googletest/make/Makefile +61 -0
  1117. jaclang/vendor/mypyc/external/googletest/src/gtest-all.cc +48 -0
  1118. jaclang/vendor/mypyc/external/googletest/src/gtest-death-test.cc +1342 -0
  1119. jaclang/vendor/mypyc/external/googletest/src/gtest-filepath.cc +387 -0
  1120. jaclang/vendor/mypyc/external/googletest/src/gtest-internal-inl.h +1183 -0
  1121. jaclang/vendor/mypyc/external/googletest/src/gtest-port.cc +1259 -0
  1122. jaclang/vendor/mypyc/external/googletest/src/gtest-printers.cc +373 -0
  1123. jaclang/vendor/mypyc/external/googletest/src/gtest-test-part.cc +110 -0
  1124. jaclang/vendor/mypyc/external/googletest/src/gtest-typed-test.cc +118 -0
  1125. jaclang/vendor/mypyc/external/googletest/src/gtest.cc +5388 -0
  1126. jaclang/vendor/mypyc/external/googletest/src/gtest_main.cc +38 -0
  1127. jaclang/vendor/mypyc/ir/class_ir.py +8 -24
  1128. jaclang/vendor/mypyc/ir/func_ir.py +3 -16
  1129. jaclang/vendor/mypyc/ir/module_ir.py +2 -6
  1130. jaclang/vendor/mypyc/ir/ops.py +103 -66
  1131. jaclang/vendor/mypyc/ir/pprint.py +35 -55
  1132. jaclang/vendor/mypyc/ir/rtypes.py +16 -48
  1133. jaclang/vendor/mypyc/irbuild/ast_helpers.py +4 -1
  1134. jaclang/vendor/mypyc/irbuild/builder.py +46 -148
  1135. jaclang/vendor/mypyc/irbuild/callable_class.py +5 -19
  1136. jaclang/vendor/mypyc/irbuild/classdef.py +27 -83
  1137. jaclang/vendor/mypyc/irbuild/env_class.py +3 -9
  1138. jaclang/vendor/mypyc/irbuild/expression.py +42 -100
  1139. jaclang/vendor/mypyc/irbuild/for_helpers.py +56 -105
  1140. jaclang/vendor/mypyc/irbuild/format_str_tokenizer.py +1 -4
  1141. jaclang/vendor/mypyc/irbuild/function.py +40 -132
  1142. jaclang/vendor/mypyc/irbuild/generator.py +14 -49
  1143. jaclang/vendor/mypyc/irbuild/ll_builder.py +197 -426
  1144. jaclang/vendor/mypyc/irbuild/mapper.py +2 -13
  1145. jaclang/vendor/mypyc/irbuild/match.py +11 -36
  1146. jaclang/vendor/mypyc/irbuild/nonlocalcontrol.py +2 -7
  1147. jaclang/vendor/mypyc/irbuild/prebuildvisitor.py +1 -4
  1148. jaclang/vendor/mypyc/irbuild/prepare.py +25 -83
  1149. jaclang/vendor/mypyc/irbuild/specialize.py +22 -72
  1150. jaclang/vendor/mypyc/irbuild/statement.py +30 -96
  1151. jaclang/vendor/mypyc/irbuild/targets.py +1 -3
  1152. jaclang/vendor/mypyc/irbuild/util.py +2 -8
  1153. jaclang/vendor/mypyc/irbuild/vtable.py +1 -3
  1154. jaclang/vendor/mypyc/lib-rt/CPy.h +638 -0
  1155. jaclang/vendor/mypyc/lib-rt/bytes_ops.c +143 -0
  1156. jaclang/vendor/mypyc/lib-rt/dict_ops.c +446 -0
  1157. jaclang/vendor/mypyc/lib-rt/exc_ops.c +259 -0
  1158. jaclang/vendor/mypyc/lib-rt/float_ops.c +192 -0
  1159. jaclang/vendor/mypyc/lib-rt/generic_ops.c +64 -0
  1160. jaclang/vendor/mypyc/lib-rt/getargs.c +450 -0
  1161. jaclang/vendor/mypyc/lib-rt/getargsfast.c +569 -0
  1162. jaclang/vendor/mypyc/lib-rt/init.c +13 -0
  1163. jaclang/vendor/mypyc/lib-rt/int_ops.c +803 -0
  1164. jaclang/vendor/mypyc/lib-rt/list_ops.c +335 -0
  1165. jaclang/vendor/mypyc/lib-rt/misc_ops.c +942 -0
  1166. jaclang/vendor/mypyc/lib-rt/module_shim.tmpl +18 -0
  1167. jaclang/vendor/mypyc/lib-rt/mypyc_util.h +118 -0
  1168. jaclang/vendor/mypyc/lib-rt/pythoncapi_compat.h +497 -0
  1169. jaclang/vendor/mypyc/lib-rt/pythonsupport.h +533 -0
  1170. jaclang/vendor/mypyc/lib-rt/set_ops.c +17 -0
  1171. jaclang/vendor/mypyc/lib-rt/setup.py +70 -0
  1172. jaclang/vendor/mypyc/lib-rt/str_ops.c +241 -0
  1173. jaclang/vendor/mypyc/lib-rt/test_capi.cc +585 -0
  1174. jaclang/vendor/mypyc/lib-rt/tuple_ops.c +61 -0
  1175. jaclang/vendor/mypyc/lower/__init__.py +0 -0
  1176. jaclang/vendor/mypyc/lower/int_ops.py +113 -0
  1177. jaclang/vendor/mypyc/lower/list_ops.py +45 -0
  1178. jaclang/vendor/mypyc/lower/misc_ops.py +12 -0
  1179. jaclang/vendor/mypyc/lower/registry.py +26 -0
  1180. jaclang/vendor/mypyc/options.py +1 -3
  1181. jaclang/vendor/mypyc/primitives/dict_ops.py +1 -4
  1182. jaclang/vendor/mypyc/primitives/exc_ops.py +3 -12
  1183. jaclang/vendor/mypyc/primitives/int_ops.py +22 -32
  1184. jaclang/vendor/mypyc/primitives/list_ops.py +10 -0
  1185. jaclang/vendor/mypyc/primitives/misc_ops.py +28 -22
  1186. jaclang/vendor/mypyc/primitives/registry.py +56 -19
  1187. jaclang/vendor/mypyc/primitives/set_ops.py +1 -3
  1188. jaclang/vendor/mypyc/rt_subtype.py +1 -2
  1189. jaclang/vendor/mypyc/sametype.py +2 -5
  1190. jaclang/vendor/mypyc/subtype.py +3 -12
  1191. jaclang/vendor/mypyc/test/test_alwaysdefined.py +2 -6
  1192. jaclang/vendor/mypyc/test/test_analysis.py +8 -24
  1193. jaclang/vendor/mypyc/test/test_cheader.py +12 -4
  1194. jaclang/vendor/mypyc/test/test_emit.py +4 -14
  1195. jaclang/vendor/mypyc/test/test_emitclass.py +1 -8
  1196. jaclang/vendor/mypyc/test/test_emitfunc.py +30 -77
  1197. jaclang/vendor/mypyc/test/test_emitwrapper.py +1 -3
  1198. jaclang/vendor/mypyc/test/test_exceptions.py +4 -12
  1199. jaclang/vendor/mypyc/test/test_external.py +1 -5
  1200. jaclang/vendor/mypyc/test/test_irbuild.py +2 -6
  1201. jaclang/vendor/mypyc/test/test_ircheck.py +6 -17
  1202. jaclang/vendor/mypyc/test/test_literals.py +1 -4
  1203. jaclang/vendor/mypyc/test/test_lowering.py +56 -0
  1204. jaclang/vendor/mypyc/test/test_namegen.py +1 -4
  1205. jaclang/vendor/mypyc/test/test_optimizations.py +68 -0
  1206. jaclang/vendor/mypyc/test/test_refcount.py +3 -9
  1207. jaclang/vendor/mypyc/test/test_run.py +12 -38
  1208. jaclang/vendor/mypyc/test/test_serialization.py +1 -3
  1209. jaclang/vendor/mypyc/test/test_struct.py +3 -11
  1210. jaclang/vendor/mypyc/test/test_tuplename.py +4 -13
  1211. jaclang/vendor/mypyc/test/test_typeops.py +1 -4
  1212. jaclang/vendor/mypyc/test/testutil.py +2 -6
  1213. jaclang/vendor/mypyc/test-data/alwaysdefined.test +732 -0
  1214. jaclang/vendor/mypyc/test-data/analysis.test +470 -0
  1215. jaclang/vendor/mypyc/test-data/commandline.test +245 -0
  1216. jaclang/vendor/mypyc/test-data/driver/driver.py +48 -0
  1217. jaclang/vendor/mypyc/test-data/exceptions-freq.test +125 -0
  1218. jaclang/vendor/mypyc/test-data/exceptions.test +699 -0
  1219. jaclang/vendor/mypyc/test-data/fixtures/ir.py +373 -0
  1220. jaclang/vendor/mypyc/test-data/fixtures/testutil.py +103 -0
  1221. jaclang/vendor/mypyc/test-data/fixtures/typing-full.pyi +169 -0
  1222. jaclang/vendor/mypyc/test-data/irbuild-any.test +236 -0
  1223. jaclang/vendor/mypyc/test-data/irbuild-basic.test +3399 -0
  1224. jaclang/vendor/mypyc/test-data/irbuild-bool.test +424 -0
  1225. jaclang/vendor/mypyc/test-data/irbuild-bytes.test +181 -0
  1226. jaclang/vendor/mypyc/test-data/irbuild-classes.test +1302 -0
  1227. jaclang/vendor/mypyc/test-data/irbuild-constant-fold.test +480 -0
  1228. jaclang/vendor/mypyc/test-data/irbuild-dict.test +584 -0
  1229. jaclang/vendor/mypyc/test-data/irbuild-dunders.test +215 -0
  1230. jaclang/vendor/mypyc/test-data/irbuild-float.test +497 -0
  1231. jaclang/vendor/mypyc/test-data/irbuild-generics.test +150 -0
  1232. jaclang/vendor/mypyc/test-data/irbuild-glue-methods.test +437 -0
  1233. jaclang/vendor/mypyc/test-data/irbuild-i16.test +526 -0
  1234. jaclang/vendor/mypyc/test-data/irbuild-i32.test +598 -0
  1235. jaclang/vendor/mypyc/test-data/irbuild-i64.test +2144 -0
  1236. jaclang/vendor/mypyc/test-data/irbuild-int.test +194 -0
  1237. jaclang/vendor/mypyc/test-data/irbuild-isinstance.test +109 -0
  1238. jaclang/vendor/mypyc/test-data/irbuild-lists.test +513 -0
  1239. jaclang/vendor/mypyc/test-data/irbuild-match.test +1717 -0
  1240. jaclang/vendor/mypyc/test-data/irbuild-math.test +64 -0
  1241. jaclang/vendor/mypyc/test-data/irbuild-nested.test +807 -0
  1242. jaclang/vendor/mypyc/test-data/irbuild-optional.test +536 -0
  1243. jaclang/vendor/mypyc/test-data/irbuild-set.test +806 -0
  1244. jaclang/vendor/mypyc/test-data/irbuild-singledispatch.test +257 -0
  1245. jaclang/vendor/mypyc/test-data/irbuild-statements.test +1060 -0
  1246. jaclang/vendor/mypyc/test-data/irbuild-str.test +312 -0
  1247. jaclang/vendor/mypyc/test-data/irbuild-strip-asserts.test +12 -0
  1248. jaclang/vendor/mypyc/test-data/irbuild-try.test +523 -0
  1249. jaclang/vendor/mypyc/test-data/irbuild-tuple.test +386 -0
  1250. jaclang/vendor/mypyc/test-data/irbuild-u8.test +543 -0
  1251. jaclang/vendor/mypyc/test-data/irbuild-unreachable.test +241 -0
  1252. jaclang/vendor/mypyc/test-data/irbuild-vectorcall.test +153 -0
  1253. jaclang/vendor/mypyc/test-data/lowering-int.test +377 -0
  1254. jaclang/vendor/mypyc/test-data/lowering-list.test +33 -0
  1255. jaclang/vendor/mypyc/test-data/opt-copy-propagation.test +400 -0
  1256. jaclang/vendor/mypyc/test-data/opt-flag-elimination.test +296 -0
  1257. jaclang/vendor/mypyc/test-data/refcount.test +1482 -0
  1258. jaclang/vendor/mypyc/test-data/run-async.test +173 -0
  1259. jaclang/vendor/mypyc/test-data/run-attrs.test +318 -0
  1260. jaclang/vendor/mypyc/test-data/run-bench.test +196 -0
  1261. jaclang/vendor/mypyc/test-data/run-bools.test +229 -0
  1262. jaclang/vendor/mypyc/test-data/run-bytes.test +302 -0
  1263. jaclang/vendor/mypyc/test-data/run-classes.test +2505 -0
  1264. jaclang/vendor/mypyc/test-data/run-dicts.test +334 -0
  1265. jaclang/vendor/mypyc/test-data/run-dunders.test +945 -0
  1266. jaclang/vendor/mypyc/test-data/run-exceptions.test +448 -0
  1267. jaclang/vendor/mypyc/test-data/run-floats.test +516 -0
  1268. jaclang/vendor/mypyc/test-data/run-functions.test +1310 -0
  1269. jaclang/vendor/mypyc/test-data/run-generators.test +682 -0
  1270. jaclang/vendor/mypyc/test-data/run-i16.test +338 -0
  1271. jaclang/vendor/mypyc/test-data/run-i32.test +336 -0
  1272. jaclang/vendor/mypyc/test-data/run-i64.test +1519 -0
  1273. jaclang/vendor/mypyc/test-data/run-imports.test +265 -0
  1274. jaclang/vendor/mypyc/test-data/run-integers.test +540 -0
  1275. jaclang/vendor/mypyc/test-data/run-lists.test +411 -0
  1276. jaclang/vendor/mypyc/test-data/run-loops.test +485 -0
  1277. jaclang/vendor/mypyc/test-data/run-match.test +283 -0
  1278. jaclang/vendor/mypyc/test-data/run-math.test +106 -0
  1279. jaclang/vendor/mypyc/test-data/run-misc.test +1170 -0
  1280. jaclang/vendor/mypyc/test-data/run-multimodule.test +887 -0
  1281. jaclang/vendor/mypyc/test-data/run-mypy-sim.test +138 -0
  1282. jaclang/vendor/mypyc/test-data/run-primitives.test +375 -0
  1283. jaclang/vendor/mypyc/test-data/run-python37.test +159 -0
  1284. jaclang/vendor/mypyc/test-data/run-python38.test +88 -0
  1285. jaclang/vendor/mypyc/test-data/run-sets.test +150 -0
  1286. jaclang/vendor/mypyc/test-data/run-singledispatch.test +698 -0
  1287. jaclang/vendor/mypyc/test-data/run-strings.test +641 -0
  1288. jaclang/vendor/mypyc/test-data/run-traits.test +411 -0
  1289. jaclang/vendor/mypyc/test-data/run-tuples.test +258 -0
  1290. jaclang/vendor/mypyc/test-data/run-u8.test +303 -0
  1291. jaclang/vendor/mypyc/transform/copy_propagation.py +94 -0
  1292. jaclang/vendor/mypyc/transform/exceptions.py +1 -5
  1293. jaclang/vendor/mypyc/transform/flag_elimination.py +108 -0
  1294. jaclang/vendor/mypyc/transform/ir_transform.py +368 -0
  1295. jaclang/vendor/mypyc/transform/lower.py +33 -0
  1296. jaclang/vendor/mypyc/transform/refcount.py +7 -30
  1297. jaclang/vendor/mypyc/transform/uninit.py +4 -15
  1298. jaclang/vendor/pluggy/__init__.py +15 -11
  1299. jaclang/vendor/pluggy/_callers.py +34 -5
  1300. jaclang/vendor/pluggy/_hooks.py +35 -7
  1301. jaclang/vendor/pluggy/_manager.py +26 -3
  1302. jaclang/vendor/pluggy/_result.py +0 -15
  1303. jaclang/vendor/pluggy/_version.py +16 -0
  1304. jaclang/vendor/pluggy/_warnings.py +27 -0
  1305. jaclang/vendor/pluggy-1.5.0.dist-info/LICENSE +21 -0
  1306. jaclang/vendor/pluggy-1.5.0.dist-info/METADATA +155 -0
  1307. jaclang/vendor/pluggy-1.5.0.dist-info/RECORD +14 -0
  1308. jaclang/vendor/pluggy-1.5.0.dist-info/top_level.txt +1 -0
  1309. jaclang/vendor/pygls/__init__.py +25 -0
  1310. jaclang/vendor/pygls/capabilities.py +460 -0
  1311. jaclang/vendor/pygls/client.py +176 -0
  1312. jaclang/vendor/pygls/constants.py +26 -0
  1313. jaclang/vendor/pygls/exceptions.py +215 -0
  1314. jaclang/vendor/pygls/feature_manager.py +244 -0
  1315. jaclang/vendor/pygls/lsp/__init__.py +139 -0
  1316. jaclang/vendor/pygls/lsp/client.py +1961 -0
  1317. jaclang/vendor/pygls/progress.py +79 -0
  1318. jaclang/vendor/pygls/protocol/__init__.py +78 -0
  1319. jaclang/vendor/pygls/protocol/json_rpc.py +560 -0
  1320. jaclang/vendor/pygls/protocol/language_server.py +569 -0
  1321. jaclang/vendor/pygls/protocol/lsp_meta.py +51 -0
  1322. jaclang/vendor/pygls/py.typed +2 -0
  1323. jaclang/vendor/pygls/server.py +616 -0
  1324. jaclang/vendor/pygls/uris.py +184 -0
  1325. jaclang/vendor/pygls/workspace/__init__.py +97 -0
  1326. jaclang/vendor/pygls/workspace/position_codec.py +206 -0
  1327. jaclang/vendor/pygls/workspace/text_document.py +238 -0
  1328. jaclang/vendor/pygls/workspace/workspace.py +323 -0
  1329. jaclang/vendor/pygls-1.3.1.dist-info/LICENSE.txt +201 -0
  1330. jaclang/vendor/pygls-1.3.1.dist-info/METADATA +105 -0
  1331. jaclang/vendor/pygls-1.3.1.dist-info/RECORD +24 -0
  1332. jaclang/vendor/pygls-1.3.1.dist-info/WHEEL +4 -0
  1333. jaclang/vendor/typing_extensions-4.12.2.dist-info/LICENSE +279 -0
  1334. jaclang/vendor/typing_extensions-4.12.2.dist-info/METADATA +67 -0
  1335. jaclang/vendor/typing_extensions-4.12.2.dist-info/RECORD +5 -0
  1336. jaclang/vendor/typing_extensions-4.12.2.dist-info/WHEEL +4 -0
  1337. jaclang/vendor/typing_extensions.py +1209 -641
  1338. jaclang-0.6.5.dist-info/METADATA +106 -0
  1339. jaclang-0.6.5.dist-info/RECORD +1476 -0
  1340. jaclang-0.6.5.dist-info/WHEEL +4 -0
  1341. jaclang-0.6.5.dist-info/entry_points.txt +3 -0
  1342. jaclang/compiler/generated/jac_parser.py +0 -4069
  1343. jaclang-0.6.0.dist-info/METADATA +0 -17
  1344. jaclang-0.6.0.dist-info/RECORD +0 -426
  1345. jaclang-0.6.0.dist-info/entry_points.txt +0 -2
  1346. jaclang-0.6.0.dist-info/top_level.txt +0 -1
  1347. /jaclang/{compiler/generated/__init__.py → vendor/attr/py.typed} +0 -0
  1348. {jaclang-0.6.0.dist-info → jaclang/vendor/pluggy-1.5.0.dist-info}/WHEEL +0 -0
@@ -1,4069 +0,0 @@
1
- # The file was automatically generated by Lark v1.1.9
2
- __version__ = "1.1.9"
3
-
4
- #
5
- #
6
- # Lark Stand-alone Generator Tool
7
- # ----------------------------------
8
- # Generates a stand-alone LALR(1) parser
9
- #
10
- # Git: https://github.com/erezsh/lark
11
- # Author: Erez Shinan (erezshin@gmail.com)
12
- #
13
- #
14
- # >>> LICENSE
15
- #
16
- # This tool and its generated code use a separate license from Lark,
17
- # and are subject to the terms of the Mozilla Public License, v. 2.0.
18
- # If a copy of the MPL was not distributed with this
19
- # file, You can obtain one at https://mozilla.org/MPL/2.0/.
20
- #
21
- # If you wish to purchase a commercial license for this tool and its
22
- # generated code, you may contact me via email or otherwise.
23
- #
24
- # If MPL2 is incompatible with your free or open-source project,
25
- # contact me and we'll work it out.
26
- #
27
- #
28
-
29
- from copy import deepcopy
30
- from abc import ABC, abstractmethod
31
- from types import ModuleType
32
- from typing import (
33
- TypeVar,
34
- Generic,
35
- Type,
36
- Tuple,
37
- List,
38
- Dict,
39
- Iterator,
40
- Collection,
41
- Callable,
42
- Optional,
43
- FrozenSet,
44
- Any,
45
- Union,
46
- Iterable,
47
- IO,
48
- TYPE_CHECKING,
49
- overload,
50
- Sequence,
51
- Pattern as REPattern,
52
- ClassVar,
53
- Set,
54
- Mapping,
55
- )
56
-
57
-
58
-
59
-
60
- class LarkError(Exception):
61
- pass
62
-
63
-
64
- class ConfigurationError(LarkError, ValueError):
65
- pass
66
-
67
-
68
- def assert_config(value, options: Collection, msg="Got %r, expected one of %s"):
69
- if value not in options:
70
- raise ConfigurationError(msg % (value, options))
71
-
72
-
73
- class GrammarError(LarkError):
74
- pass
75
-
76
-
77
- class ParseError(LarkError):
78
- pass
79
-
80
-
81
- class LexError(LarkError):
82
- pass
83
-
84
-
85
- T = TypeVar("T")
86
-
87
-
88
- class UnexpectedInput(LarkError):
89
- #--
90
-
91
- line: int
92
- column: int
93
- pos_in_stream = None
94
- state: Any
95
- _terminals_by_name = None
96
- interactive_parser: "InteractiveParser"
97
-
98
- def get_context(self, text: str, span: int = 40) -> str:
99
- #--
100
- assert self.pos_in_stream is not None, self
101
- pos = self.pos_in_stream
102
- start = max(pos - span, 0)
103
- end = pos + span
104
- if not isinstance(text, bytes):
105
- before = text[start:pos].rsplit("\n", 1)[-1]
106
- after = text[pos:end].split("\n", 1)[0]
107
- return before + after + "\n" + " " * len(before.expandtabs()) + "^\n"
108
- else:
109
- before = text[start:pos].rsplit(b"\n", 1)[-1]
110
- after = text[pos:end].split(b"\n", 1)[0]
111
- return (
112
- before + after + b"\n" + b" " * len(before.expandtabs()) + b"^\n"
113
- ).decode("ascii", "backslashreplace")
114
-
115
- def match_examples(
116
- self,
117
- parse_fn: "Callable[[str], Tree]",
118
- examples: Union[Mapping[T, Iterable[str]], Iterable[Tuple[T, Iterable[str]]]],
119
- token_type_match_fallback: bool = False,
120
- use_accepts: bool = True,
121
- ) -> Optional[T]:
122
- #--
123
- assert self.state is not None, "Not supported for this exception"
124
-
125
- if isinstance(examples, Mapping):
126
- examples = examples.items()
127
-
128
- candidate = (None, False)
129
- for i, (label, example) in enumerate(examples):
130
- assert not isinstance(example, str), "Expecting a list"
131
-
132
- for j, malformed in enumerate(example):
133
- try:
134
- parse_fn(malformed)
135
- except UnexpectedInput as ut:
136
- if ut.state == self.state:
137
- if (
138
- use_accepts
139
- and isinstance(self, UnexpectedToken)
140
- and isinstance(ut, UnexpectedToken)
141
- and ut.accepts != self.accepts
142
- ):
143
- logger.debug(
144
- "Different accepts with same state[%d]: %s != %s at example [%s][%s]"
145
- % (self.state, self.accepts, ut.accepts, i, j)
146
- )
147
- continue
148
- if isinstance(
149
- self, (UnexpectedToken, UnexpectedEOF)
150
- ) and isinstance(ut, (UnexpectedToken, UnexpectedEOF)):
151
- if ut.token == self.token: ##
152
-
153
- logger.debug("Exact Match at example [%s][%s]" % (i, j))
154
- return label
155
-
156
- if token_type_match_fallback:
157
- ##
158
-
159
- if (ut.token.type == self.token.type) and not candidate[
160
- -1
161
- ]:
162
- logger.debug(
163
- "Token Type Fallback at example [%s][%s]"
164
- % (i, j)
165
- )
166
- candidate = label, True
167
-
168
- if candidate[0] is None:
169
- logger.debug(
170
- "Same State match at example [%s][%s]" % (i, j)
171
- )
172
- candidate = label, False
173
-
174
- return candidate[0]
175
-
176
- def _format_expected(self, expected):
177
- if self._terminals_by_name:
178
- d = self._terminals_by_name
179
- expected = [
180
- d[t_name].user_repr() if t_name in d else t_name for t_name in expected
181
- ]
182
- return "Expected one of: \n\t* %s\n" % "\n\t* ".join(expected)
183
-
184
-
185
- class UnexpectedEOF(ParseError, UnexpectedInput):
186
- #--
187
-
188
- expected: "List[Token]"
189
-
190
- def __init__(self, expected, state=None, terminals_by_name=None):
191
- super(UnexpectedEOF, self).__init__()
192
-
193
- self.expected = expected
194
- self.state = state
195
- from .lexer import Token
196
-
197
- self.token = Token("<EOF>", "") ##
198
-
199
- self.pos_in_stream = -1
200
- self.line = -1
201
- self.column = -1
202
- self._terminals_by_name = terminals_by_name
203
-
204
- def __str__(self):
205
- message = "Unexpected end-of-input. "
206
- message += self._format_expected(self.expected)
207
- return message
208
-
209
-
210
- class UnexpectedCharacters(LexError, UnexpectedInput):
211
- #--
212
-
213
- allowed: Set[str]
214
- considered_tokens: Set[Any]
215
-
216
- def __init__(
217
- self,
218
- seq,
219
- lex_pos,
220
- line,
221
- column,
222
- allowed=None,
223
- considered_tokens=None,
224
- state=None,
225
- token_history=None,
226
- terminals_by_name=None,
227
- considered_rules=None,
228
- ):
229
- super(UnexpectedCharacters, self).__init__()
230
-
231
- ##
232
-
233
- self.line = line
234
- self.column = column
235
- self.pos_in_stream = lex_pos
236
- self.state = state
237
- self._terminals_by_name = terminals_by_name
238
-
239
- self.allowed = allowed
240
- self.considered_tokens = considered_tokens
241
- self.considered_rules = considered_rules
242
- self.token_history = token_history
243
-
244
- if isinstance(seq, bytes):
245
- self.char = seq[lex_pos : lex_pos + 1].decode("ascii", "backslashreplace")
246
- else:
247
- self.char = seq[lex_pos]
248
- self._context = self.get_context(seq)
249
-
250
- def __str__(self):
251
- message = (
252
- "No terminal matches '%s' in the current parser context, at line %d col %d"
253
- % (self.char, self.line, self.column)
254
- )
255
- message += "\n\n" + self._context
256
- if self.allowed:
257
- message += self._format_expected(self.allowed)
258
- if self.token_history:
259
- message += "\nPrevious tokens: %s\n" % ", ".join(
260
- repr(t) for t in self.token_history
261
- )
262
- return message
263
-
264
-
265
- class UnexpectedToken(ParseError, UnexpectedInput):
266
- #--
267
-
268
- expected: Set[str]
269
- considered_rules: Set[str]
270
-
271
- def __init__(
272
- self,
273
- token,
274
- expected,
275
- considered_rules=None,
276
- state=None,
277
- interactive_parser=None,
278
- terminals_by_name=None,
279
- token_history=None,
280
- ):
281
- super(UnexpectedToken, self).__init__()
282
-
283
- ##
284
-
285
- self.line = getattr(token, "line", "?")
286
- self.column = getattr(token, "column", "?")
287
- self.pos_in_stream = getattr(token, "start_pos", None)
288
- self.state = state
289
-
290
- self.token = token
291
- self.expected = expected ##
292
-
293
- self._accepts = NO_VALUE
294
- self.considered_rules = considered_rules
295
- self.interactive_parser = interactive_parser
296
- self._terminals_by_name = terminals_by_name
297
- self.token_history = token_history
298
-
299
- @property
300
- def accepts(self) -> Set[str]:
301
- if self._accepts is NO_VALUE:
302
- self._accepts = (
303
- self.interactive_parser and self.interactive_parser.accepts()
304
- )
305
- return self._accepts
306
-
307
- def __str__(self):
308
- message = "Unexpected token %r at line %s, column %s.\n%s" % (
309
- self.token,
310
- self.line,
311
- self.column,
312
- self._format_expected(self.accepts or self.expected),
313
- )
314
- if self.token_history:
315
- message += "Previous tokens: %r\n" % self.token_history
316
-
317
- return message
318
-
319
-
320
- class VisitError(LarkError):
321
- #--
322
-
323
- obj: "Union[Tree, Token]"
324
- orig_exc: Exception
325
-
326
- def __init__(self, rule, obj, orig_exc):
327
- message = 'Error trying to process rule "%s":\n\n%s' % (rule, orig_exc)
328
- super(VisitError, self).__init__(message)
329
-
330
- self.rule = rule
331
- self.obj = obj
332
- self.orig_exc = orig_exc
333
-
334
-
335
- class MissingVariableError(LarkError):
336
- pass
337
-
338
-
339
-
340
- import sys, re
341
- import logging
342
-
343
- logger: logging.Logger = logging.getLogger("lark")
344
- logger.addHandler(logging.StreamHandler())
345
- ##
346
-
347
- ##
348
-
349
- logger.setLevel(logging.CRITICAL)
350
-
351
-
352
- NO_VALUE = object()
353
-
354
- T = TypeVar("T")
355
-
356
-
357
- def classify(
358
- seq: Iterable, key: Optional[Callable] = None, value: Optional[Callable] = None
359
- ) -> Dict:
360
- d: Dict[Any, Any] = {}
361
- for item in seq:
362
- k = key(item) if (key is not None) else item
363
- v = value(item) if (value is not None) else item
364
- try:
365
- d[k].append(v)
366
- except KeyError:
367
- d[k] = [v]
368
- return d
369
-
370
-
371
- def _deserialize(data: Any, namespace: Dict[str, Any], memo: Dict) -> Any:
372
- if isinstance(data, dict):
373
- if "__type__" in data: ##
374
-
375
- class_ = namespace[data["__type__"]]
376
- return class_.deserialize(data, memo)
377
- elif "@" in data:
378
- return memo[data["@"]]
379
- return {
380
- key: _deserialize(value, namespace, memo) for key, value in data.items()
381
- }
382
- elif isinstance(data, list):
383
- return [_deserialize(value, namespace, memo) for value in data]
384
- return data
385
-
386
-
387
- _T = TypeVar("_T", bound="Serialize")
388
-
389
-
390
- class Serialize:
391
- #--
392
-
393
- def memo_serialize(self, types_to_memoize: List) -> Any:
394
- memo = SerializeMemoizer(types_to_memoize)
395
- return self.serialize(memo), memo.serialize()
396
-
397
- def serialize(self, memo=None) -> Dict[str, Any]:
398
- if memo and memo.in_types(self):
399
- return {"@": memo.memoized.get(self)}
400
-
401
- fields = getattr(self, "__serialize_fields__")
402
- res = {f: _serialize(getattr(self, f), memo) for f in fields}
403
- res["__type__"] = type(self).__name__
404
- if hasattr(self, "_serialize"):
405
- self._serialize(res, memo) ##
406
-
407
- return res
408
-
409
- @classmethod
410
- def deserialize(cls: Type[_T], data: Dict[str, Any], memo: Dict[int, Any]) -> _T:
411
- namespace = getattr(cls, "__serialize_namespace__", [])
412
- namespace = {c.__name__: c for c in namespace}
413
-
414
- fields = getattr(cls, "__serialize_fields__")
415
-
416
- if "@" in data:
417
- return memo[data["@"]]
418
-
419
- inst = cls.__new__(cls)
420
- for f in fields:
421
- try:
422
- setattr(inst, f, _deserialize(data[f], namespace, memo))
423
- except KeyError as e:
424
- raise KeyError("Cannot find key for class", cls, e)
425
-
426
- if hasattr(inst, "_deserialize"):
427
- inst._deserialize() ##
428
-
429
-
430
- return inst
431
-
432
-
433
- class SerializeMemoizer(Serialize):
434
- #--
435
-
436
- __serialize_fields__ = ("memoized",)
437
-
438
- def __init__(self, types_to_memoize: List) -> None:
439
- self.types_to_memoize = tuple(types_to_memoize)
440
- self.memoized = Enumerator()
441
-
442
- def in_types(self, value: Serialize) -> bool:
443
- return isinstance(value, self.types_to_memoize)
444
-
445
- def serialize(self) -> Dict[int, Any]: ##
446
-
447
- return _serialize(self.memoized.reversed(), None)
448
-
449
- @classmethod
450
- def deserialize(cls, data: Dict[int, Any], namespace: Dict[str, Any], memo: Dict[Any, Any]) -> Dict[int, Any]: ##
451
-
452
- return _deserialize(data, namespace, memo)
453
-
454
-
455
- try:
456
- import regex
457
-
458
- _has_regex = True
459
- except ImportError:
460
- _has_regex = False
461
-
462
- if sys.version_info >= (3, 11):
463
- import re._parser as sre_parse
464
- import re._constants as sre_constants
465
- else:
466
- import sre_parse
467
- import sre_constants
468
-
469
- categ_pattern = re.compile(r"\\p{[A-Za-z_]+}")
470
-
471
-
472
- def get_regexp_width(expr: str) -> Union[Tuple[int, int], List[int]]:
473
- if _has_regex:
474
- ##
475
-
476
- ##
477
-
478
- ##
479
-
480
- regexp_final = re.sub(categ_pattern, "A", expr)
481
- else:
482
- if re.search(categ_pattern, expr):
483
- raise ImportError(
484
- "`regex` module must be installed in order to use Unicode categories.",
485
- expr,
486
- )
487
- regexp_final = expr
488
- try:
489
- ##
490
-
491
- return [int(x) for x in sre_parse.parse(regexp_final).getwidth()] ##
492
-
493
- except sre_constants.error:
494
- if not _has_regex:
495
- raise ValueError(expr)
496
- else:
497
- ##
498
-
499
- ##
500
-
501
- c = regex.compile(regexp_final)
502
- ##
503
-
504
- ##
505
-
506
- MAXWIDTH = getattr(sre_parse, "MAXWIDTH", sre_constants.MAXREPEAT)
507
- if c.match("") is None:
508
- ##
509
-
510
- return 1, int(MAXWIDTH)
511
- else:
512
- return 0, int(MAXWIDTH)
513
-
514
-
515
-
516
- from collections import OrderedDict
517
-
518
-
519
- class Meta:
520
-
521
- empty: bool
522
- line: int
523
- column: int
524
- start_pos: int
525
- end_line: int
526
- end_column: int
527
- end_pos: int
528
- orig_expansion: "List[TerminalDef]"
529
- match_tree: bool
530
-
531
- def __init__(self):
532
- self.empty = True
533
-
534
-
535
- _Leaf_T = TypeVar("_Leaf_T")
536
- Branch = Union[_Leaf_T, "Tree[_Leaf_T]"]
537
-
538
-
539
- class Tree(Generic[_Leaf_T]):
540
- #--
541
-
542
- data: str
543
- children: "List[Branch[_Leaf_T]]"
544
-
545
- def __init__(
546
- self, data: str, children: "List[Branch[_Leaf_T]]", meta: Optional[Meta] = None
547
- ) -> None:
548
- self.data = data
549
- self.children = children
550
- self._meta = meta
551
-
552
- @property
553
- def meta(self) -> Meta:
554
- if self._meta is None:
555
- self._meta = Meta()
556
- return self._meta
557
-
558
- def __repr__(self):
559
- return "Tree(%r, %r)" % (self.data, self.children)
560
-
561
- def _pretty_label(self):
562
- return self.data
563
-
564
- def _pretty(self, level, indent_str):
565
- yield f"{indent_str*level}{self._pretty_label()}"
566
- if len(self.children) == 1 and not isinstance(self.children[0], Tree):
567
- yield f"\t{self.children[0]}\n"
568
- else:
569
- yield "\n"
570
- for n in self.children:
571
- if isinstance(n, Tree):
572
- yield from n._pretty(level + 1, indent_str)
573
- else:
574
- yield f"{indent_str*(level+1)}{n}\n"
575
-
576
- def pretty(self, indent_str: str = " ") -> str:
577
- #--
578
- return "".join(self._pretty(0, indent_str))
579
-
580
- def __rich__(self, parent: Optional["rich.tree.Tree"] = None) -> "rich.tree.Tree":
581
- #--
582
- return self._rich(parent)
583
-
584
- def _rich(self, parent):
585
- if parent:
586
- tree = parent.add(f"[bold]{self.data}[/bold]")
587
- else:
588
- import rich.tree
589
-
590
- tree = rich.tree.Tree(self.data)
591
-
592
- for c in self.children:
593
- if isinstance(c, Tree):
594
- c._rich(tree)
595
- else:
596
- tree.add(f"[green]{c}[/green]")
597
-
598
- return tree
599
-
600
- def __eq__(self, other):
601
- try:
602
- return self.data == other.data and self.children == other.children
603
- except AttributeError:
604
- return False
605
-
606
- def __ne__(self, other):
607
- return not (self == other)
608
-
609
- def __hash__(self) -> int:
610
- return hash((self.data, tuple(self.children)))
611
-
612
- def iter_subtrees(self) -> "Iterator[Tree[_Leaf_T]]":
613
- #--
614
- queue = [self]
615
- subtrees = OrderedDict()
616
- for subtree in queue:
617
- subtrees[id(subtree)] = subtree
618
- ##
619
-
620
- queue += [
621
- c
622
- for c in reversed(subtree.children) ##
623
-
624
- if isinstance(c, Tree) and id(c) not in subtrees
625
- ]
626
-
627
- del queue
628
- return reversed(list(subtrees.values()))
629
-
630
- def iter_subtrees_topdown(self):
631
- #--
632
- stack = [self]
633
- stack_append = stack.append
634
- stack_pop = stack.pop
635
- while stack:
636
- node = stack_pop()
637
- if not isinstance(node, Tree):
638
- continue
639
- yield node
640
- for child in reversed(node.children):
641
- stack_append(child)
642
-
643
- def find_pred(
644
- self, pred: "Callable[[Tree[_Leaf_T]], bool]"
645
- ) -> "Iterator[Tree[_Leaf_T]]":
646
- #--
647
- return filter(pred, self.iter_subtrees())
648
-
649
- def find_data(self, data: str) -> "Iterator[Tree[_Leaf_T]]":
650
- #--
651
- return self.find_pred(lambda t: t.data == data)
652
-
653
-
654
- from functools import wraps, update_wrapper
655
- from inspect import getmembers, getmro
656
-
657
- _Return_T = TypeVar("_Return_T")
658
- _Return_V = TypeVar("_Return_V")
659
- _Leaf_T = TypeVar("_Leaf_T")
660
- _Leaf_U = TypeVar("_Leaf_U")
661
- _R = TypeVar("_R")
662
- _FUNC = Callable[..., _Return_T]
663
- _DECORATED = Union[_FUNC, type]
664
-
665
-
666
- class _DiscardType:
667
- #--
668
-
669
- def __repr__(self):
670
- return "lark.visitors.Discard"
671
-
672
-
673
- Discard = _DiscardType()
674
-
675
- ##
676
-
677
-
678
-
679
- class _Decoratable:
680
- #--
681
-
682
- @classmethod
683
- def _apply_v_args(cls, visit_wrapper):
684
- mro = getmro(cls)
685
- assert mro[0] is cls
686
- libmembers = {name for _cls in mro[1:] for name, _ in getmembers(_cls)}
687
- for name, value in getmembers(cls):
688
-
689
- ##
690
-
691
- if name.startswith("_") or (
692
- name in libmembers and name not in cls.__dict__
693
- ):
694
- continue
695
- if not callable(value):
696
- continue
697
-
698
- ##
699
-
700
- if isinstance(cls.__dict__[name], _VArgsWrapper):
701
- continue
702
-
703
- setattr(cls, name, _VArgsWrapper(cls.__dict__[name], visit_wrapper))
704
- return cls
705
-
706
- def __class_getitem__(cls, _):
707
- return cls
708
-
709
-
710
- class Transformer(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
711
- #--
712
-
713
- __visit_tokens__ = True ##
714
-
715
-
716
- def __init__(self, visit_tokens: bool = True) -> None:
717
- self.__visit_tokens__ = visit_tokens
718
-
719
- def _call_userfunc(self, tree, new_children=None):
720
- ##
721
-
722
- children = new_children if new_children is not None else tree.children
723
- try:
724
- f = getattr(self, tree.data)
725
- except AttributeError:
726
- return self.__default__(tree.data, children, tree.meta)
727
- else:
728
- try:
729
- wrapper = getattr(f, "visit_wrapper", None)
730
- if wrapper is not None:
731
- return f.visit_wrapper(f, tree.data, children, tree.meta)
732
- else:
733
- return f(children)
734
- except GrammarError:
735
- raise
736
- except Exception as e:
737
- raise VisitError(tree.data, tree, e)
738
-
739
- def _call_userfunc_token(self, token):
740
- try:
741
- f = getattr(self, token.type)
742
- except AttributeError:
743
- return self.__default_token__(token)
744
- else:
745
- try:
746
- return f(token)
747
- except GrammarError:
748
- raise
749
- except Exception as e:
750
- raise VisitError(token.type, token, e)
751
-
752
- def _transform_children(self, children):
753
- for c in children:
754
- if isinstance(c, Tree):
755
- res = self._transform_tree(c)
756
- elif self.__visit_tokens__ and isinstance(c, Token):
757
- res = self._call_userfunc_token(c)
758
- else:
759
- res = c
760
-
761
- if res is not Discard:
762
- yield res
763
-
764
- def _transform_tree(self, tree):
765
- children = list(self._transform_children(tree.children))
766
- return self._call_userfunc(tree, children)
767
-
768
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
769
- #--
770
- return self._transform_tree(tree)
771
-
772
- def __mul__(
773
- self: "Transformer[_Leaf_T, Tree[_Leaf_U]]",
774
- other: "Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V,]]",
775
- ) -> "TransformerChain[_Leaf_T, _Return_V]":
776
- #--
777
- return TransformerChain(self, other)
778
-
779
- def __default__(self, data, children, meta):
780
- #--
781
- return Tree(data, children, meta)
782
-
783
- def __default_token__(self, token):
784
- #--
785
- return token
786
-
787
-
788
- def merge_transformers(base_transformer=None, **transformers_to_merge):
789
- #--
790
- if base_transformer is None:
791
- base_transformer = Transformer()
792
- for prefix, transformer in transformers_to_merge.items():
793
- for method_name in dir(transformer):
794
- method = getattr(transformer, method_name)
795
- if not callable(method):
796
- continue
797
- if method_name.startswith("_") or method_name == "transform":
798
- continue
799
- prefixed_method = prefix + "__" + method_name
800
- if hasattr(base_transformer, prefixed_method):
801
- raise AttributeError(
802
- "Cannot merge: method '%s' appears more than once" % prefixed_method
803
- )
804
-
805
- setattr(base_transformer, prefixed_method, method)
806
-
807
- return base_transformer
808
-
809
-
810
- class InlineTransformer(Transformer): ##
811
-
812
- def _call_userfunc(self, tree, new_children=None):
813
- ##
814
-
815
- children = new_children if new_children is not None else tree.children
816
- try:
817
- f = getattr(self, tree.data)
818
- except AttributeError:
819
- return self.__default__(tree.data, children, tree.meta)
820
- else:
821
- return f(*children)
822
-
823
-
824
- class TransformerChain(Generic[_Leaf_T, _Return_T]):
825
-
826
- transformers: "Tuple[Union[Transformer, TransformerChain], ...]"
827
-
828
- def __init__(self, *transformers: "Union[Transformer, TransformerChain]") -> None:
829
- self.transformers = transformers
830
-
831
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
832
- for t in self.transformers:
833
- tree = t.transform(tree)
834
- return cast(_Return_T, tree)
835
-
836
- def __mul__(
837
- self: "TransformerChain[_Leaf_T, Tree[_Leaf_U]]",
838
- other: "Union[Transformer[_Leaf_U, _Return_V], TransformerChain[_Leaf_U, _Return_V]]",
839
- ) -> "TransformerChain[_Leaf_T, _Return_V]":
840
- return TransformerChain(*self.transformers + (other,))
841
-
842
-
843
- class Transformer_InPlace(Transformer[_Leaf_T, _Return_T]):
844
- #--
845
-
846
- def _transform_tree(self, tree): ##
847
-
848
- return self._call_userfunc(tree)
849
-
850
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
851
- for subtree in tree.iter_subtrees():
852
- subtree.children = list(self._transform_children(subtree.children))
853
-
854
- return self._transform_tree(tree)
855
-
856
-
857
- class Transformer_NonRecursive(Transformer[_Leaf_T, _Return_T]):
858
- #--
859
-
860
- def transform(self, tree: Tree[_Leaf_T]) -> _Return_T:
861
- ##
862
-
863
- rev_postfix = []
864
- q: List[Branch[_Leaf_T]] = [tree]
865
- while q:
866
- t = q.pop()
867
- rev_postfix.append(t)
868
- if isinstance(t, Tree):
869
- q += t.children
870
-
871
- ##
872
-
873
- stack: List = []
874
- for x in reversed(rev_postfix):
875
- if isinstance(x, Tree):
876
- size = len(x.children)
877
- if size:
878
- args = stack[-size:]
879
- del stack[-size:]
880
- else:
881
- args = []
882
-
883
- res = self._call_userfunc(x, args)
884
- if res is not Discard:
885
- stack.append(res)
886
-
887
- elif self.__visit_tokens__ and isinstance(x, Token):
888
- res = self._call_userfunc_token(x)
889
- if res is not Discard:
890
- stack.append(res)
891
- else:
892
- stack.append(x)
893
-
894
- (result,) = stack ##
895
-
896
- ##
897
-
898
- ##
899
-
900
- ##
901
-
902
- return cast(_Return_T, result)
903
-
904
-
905
- class Transformer_InPlaceRecursive(Transformer):
906
- #--
907
-
908
- def _transform_tree(self, tree):
909
- tree.children = list(self._transform_children(tree.children))
910
- return self._call_userfunc(tree)
911
-
912
-
913
- ##
914
-
915
-
916
-
917
- class VisitorBase:
918
- def _call_userfunc(self, tree):
919
- return getattr(self, tree.data, self.__default__)(tree)
920
-
921
- def __default__(self, tree):
922
- #--
923
- return tree
924
-
925
- def __class_getitem__(cls, _):
926
- return cls
927
-
928
-
929
- class Visitor(VisitorBase, ABC, Generic[_Leaf_T]):
930
- #--
931
-
932
- def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
933
- #--
934
- for subtree in tree.iter_subtrees():
935
- self._call_userfunc(subtree)
936
- return tree
937
-
938
- def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
939
- #--
940
- for subtree in tree.iter_subtrees_topdown():
941
- self._call_userfunc(subtree)
942
- return tree
943
-
944
-
945
- class Visitor_Recursive(VisitorBase, Generic[_Leaf_T]):
946
- #--
947
-
948
- def visit(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
949
- #--
950
- for child in tree.children:
951
- if isinstance(child, Tree):
952
- self.visit(child)
953
-
954
- self._call_userfunc(tree)
955
- return tree
956
-
957
- def visit_topdown(self, tree: Tree[_Leaf_T]) -> Tree[_Leaf_T]:
958
- #--
959
- self._call_userfunc(tree)
960
-
961
- for child in tree.children:
962
- if isinstance(child, Tree):
963
- self.visit_topdown(child)
964
-
965
- return tree
966
-
967
-
968
- class Interpreter(_Decoratable, ABC, Generic[_Leaf_T, _Return_T]):
969
- #--
970
-
971
- def visit(self, tree: Tree[_Leaf_T]) -> _Return_T:
972
- ##
973
-
974
- ##
975
-
976
- ##
977
-
978
- return self._visit_tree(tree)
979
-
980
- def _visit_tree(self, tree: Tree[_Leaf_T]):
981
- f = getattr(self, tree.data)
982
- wrapper = getattr(f, "visit_wrapper", None)
983
- if wrapper is not None:
984
- return f.visit_wrapper(f, tree.data, tree.children, tree.meta)
985
- else:
986
- return f(tree)
987
-
988
- def visit_children(self, tree: Tree[_Leaf_T]) -> List:
989
- return [
990
- self._visit_tree(child) if isinstance(child, Tree) else child
991
- for child in tree.children
992
- ]
993
-
994
- def __getattr__(self, name):
995
- return self.__default__
996
-
997
- def __default__(self, tree):
998
- return self.visit_children(tree)
999
-
1000
-
1001
- _InterMethod = Callable[[Type[Interpreter], _Return_T], _R]
1002
-
1003
-
1004
- def visit_children_decor(func: _InterMethod) -> _InterMethod:
1005
- #--
1006
-
1007
- @wraps(func)
1008
- def inner(cls, tree):
1009
- values = cls.visit_children(tree)
1010
- return func(cls, values)
1011
-
1012
- return inner
1013
-
1014
-
1015
- ##
1016
-
1017
-
1018
-
1019
- def _apply_v_args(obj, visit_wrapper):
1020
- try:
1021
- _apply = obj._apply_v_args
1022
- except AttributeError:
1023
- return _VArgsWrapper(obj, visit_wrapper)
1024
- else:
1025
- return _apply(visit_wrapper)
1026
-
1027
-
1028
- class _VArgsWrapper:
1029
- #--
1030
-
1031
- base_func: Callable
1032
-
1033
- def __init__(
1034
- self, func: Callable, visit_wrapper: Callable[[Callable, str, list, Any], Any]
1035
- ):
1036
- if isinstance(func, _VArgsWrapper):
1037
- func = func.base_func
1038
- ##
1039
-
1040
- self.base_func = func ##
1041
-
1042
- self.visit_wrapper = visit_wrapper
1043
- update_wrapper(self, func)
1044
-
1045
- def __call__(self, *args, **kwargs):
1046
- return self.base_func(*args, **kwargs)
1047
-
1048
- def __get__(self, instance, owner=None):
1049
- try:
1050
- ##
1051
-
1052
- ##
1053
-
1054
- g = type(self.base_func).__get__
1055
- except AttributeError:
1056
- return self
1057
- else:
1058
- return _VArgsWrapper(g(self.base_func, instance, owner), self.visit_wrapper)
1059
-
1060
- def __set_name__(self, owner, name):
1061
- try:
1062
- f = type(self.base_func).__set_name__
1063
- except AttributeError:
1064
- return
1065
- else:
1066
- f(self.base_func, owner, name)
1067
-
1068
-
1069
- def _vargs_inline(f, _data, children, _meta):
1070
- return f(*children)
1071
-
1072
-
1073
- def _vargs_meta_inline(f, _data, children, meta):
1074
- return f(meta, *children)
1075
-
1076
-
1077
- def _vargs_meta(f, _data, children, meta):
1078
- return f(meta, children)
1079
-
1080
-
1081
- def _vargs_tree(f, data, children, meta):
1082
- return f(Tree(data, children, meta))
1083
-
1084
-
1085
- def v_args(
1086
- inline: bool = False,
1087
- meta: bool = False,
1088
- tree: bool = False,
1089
- wrapper: Optional[Callable] = None,
1090
- ) -> Callable[[_DECORATED], _DECORATED]:
1091
- #--
1092
- if tree and (meta or inline):
1093
- raise ValueError(
1094
- "Visitor functions cannot combine 'tree' with 'meta' or 'inline'."
1095
- )
1096
-
1097
- func = None
1098
- if meta:
1099
- if inline:
1100
- func = _vargs_meta_inline
1101
- else:
1102
- func = _vargs_meta
1103
- elif inline:
1104
- func = _vargs_inline
1105
- elif tree:
1106
- func = _vargs_tree
1107
-
1108
- if wrapper is not None:
1109
- if func is not None:
1110
- raise ValueError(
1111
- "Cannot use 'wrapper' along with 'tree', 'meta' or 'inline'."
1112
- )
1113
- func = wrapper
1114
-
1115
- def _visitor_args_dec(obj):
1116
- return _apply_v_args(obj, func)
1117
-
1118
- return _visitor_args_dec
1119
-
1120
-
1121
-
1122
- TOKEN_DEFAULT_PRIORITY = 0
1123
-
1124
-
1125
- class Symbol(Serialize):
1126
- __slots__ = ("name",)
1127
-
1128
- name: str
1129
- is_term: ClassVar[bool] = NotImplemented
1130
-
1131
- def __init__(self, name: str) -> None:
1132
- self.name = name
1133
-
1134
- def __eq__(self, other):
1135
- assert isinstance(other, Symbol), other
1136
- return self.is_term == other.is_term and self.name == other.name
1137
-
1138
- def __ne__(self, other):
1139
- return not (self == other)
1140
-
1141
- def __hash__(self):
1142
- return hash(self.name)
1143
-
1144
- def __repr__(self):
1145
- return "%s(%r)" % (type(self).__name__, self.name)
1146
-
1147
- fullrepr = property(__repr__)
1148
-
1149
- def renamed(self, f):
1150
- return type(self)(f(self.name))
1151
-
1152
-
1153
- class Terminal(Symbol):
1154
- __serialize_fields__ = "name", "filter_out"
1155
-
1156
- is_term: ClassVar[bool] = True
1157
-
1158
- def __init__(self, name, filter_out=False):
1159
- self.name = name
1160
- self.filter_out = filter_out
1161
-
1162
- @property
1163
- def fullrepr(self):
1164
- return "%s(%r, %r)" % (type(self).__name__, self.name, self.filter_out)
1165
-
1166
- def renamed(self, f):
1167
- return type(self)(f(self.name), self.filter_out)
1168
-
1169
-
1170
- class NonTerminal(Symbol):
1171
- __serialize_fields__ = ("name",)
1172
-
1173
- is_term: ClassVar[bool] = False
1174
-
1175
-
1176
- class RuleOptions(Serialize):
1177
- __serialize_fields__ = (
1178
- "keep_all_tokens",
1179
- "expand1",
1180
- "priority",
1181
- "template_source",
1182
- "empty_indices",
1183
- )
1184
-
1185
- keep_all_tokens: bool
1186
- expand1: bool
1187
- priority: Optional[int]
1188
- template_source: Optional[str]
1189
- empty_indices: Tuple[bool, ...]
1190
-
1191
- def __init__(
1192
- self,
1193
- keep_all_tokens: bool = False,
1194
- expand1: bool = False,
1195
- priority: Optional[int] = None,
1196
- template_source: Optional[str] = None,
1197
- empty_indices: Tuple[bool, ...] = (),
1198
- ) -> None:
1199
- self.keep_all_tokens = keep_all_tokens
1200
- self.expand1 = expand1
1201
- self.priority = priority
1202
- self.template_source = template_source
1203
- self.empty_indices = empty_indices
1204
-
1205
- def __repr__(self):
1206
- return "RuleOptions(%r, %r, %r, %r)" % (
1207
- self.keep_all_tokens,
1208
- self.expand1,
1209
- self.priority,
1210
- self.template_source,
1211
- )
1212
-
1213
-
1214
- class Rule(Serialize):
1215
- #--
1216
-
1217
- __slots__ = ("origin", "expansion", "alias", "options", "order", "_hash")
1218
-
1219
- __serialize_fields__ = "origin", "expansion", "order", "alias", "options"
1220
- __serialize_namespace__ = Terminal, NonTerminal, RuleOptions
1221
-
1222
- origin: NonTerminal
1223
- expansion: Sequence[Symbol]
1224
- order: int
1225
- alias: Optional[str]
1226
- options: RuleOptions
1227
- _hash: int
1228
-
1229
- def __init__(
1230
- self,
1231
- origin: NonTerminal,
1232
- expansion: Sequence[Symbol],
1233
- order: int = 0,
1234
- alias: Optional[str] = None,
1235
- options: Optional[RuleOptions] = None,
1236
- ):
1237
- self.origin = origin
1238
- self.expansion = expansion
1239
- self.alias = alias
1240
- self.order = order
1241
- self.options = options or RuleOptions()
1242
- self._hash = hash((self.origin, tuple(self.expansion)))
1243
-
1244
- def _deserialize(self):
1245
- self._hash = hash((self.origin, tuple(self.expansion)))
1246
-
1247
- def __str__(self):
1248
- return "<%s : %s>" % (
1249
- self.origin.name,
1250
- " ".join(x.name for x in self.expansion),
1251
- )
1252
-
1253
- def __repr__(self):
1254
- return "Rule(%r, %r, %r, %r)" % (
1255
- self.origin,
1256
- self.expansion,
1257
- self.alias,
1258
- self.options,
1259
- )
1260
-
1261
- def __hash__(self):
1262
- return self._hash
1263
-
1264
- def __eq__(self, other):
1265
- if not isinstance(other, Rule):
1266
- return False
1267
- return self.origin == other.origin and self.expansion == other.expansion
1268
-
1269
-
1270
-
1271
- from copy import copy
1272
-
1273
- try: ##
1274
-
1275
- has_interegular = bool(interegular)
1276
- except NameError:
1277
- has_interegular = False
1278
-
1279
-
1280
- class Pattern(Serialize, ABC):
1281
- #--
1282
-
1283
- value: str
1284
- flags: Collection[str]
1285
- raw: Optional[str]
1286
- type: ClassVar[str]
1287
-
1288
- def __init__(
1289
- self, value: str, flags: Collection[str] = (), raw: Optional[str] = None
1290
- ) -> None:
1291
- self.value = value
1292
- self.flags = frozenset(flags)
1293
- self.raw = raw
1294
-
1295
- def __repr__(self):
1296
- return repr(self.to_regexp())
1297
-
1298
- ##
1299
-
1300
- def __hash__(self):
1301
- return hash((type(self), self.value, self.flags))
1302
-
1303
- def __eq__(self, other):
1304
- return (
1305
- type(self) == type(other)
1306
- and self.value == other.value
1307
- and self.flags == other.flags
1308
- )
1309
-
1310
- @abstractmethod
1311
- def to_regexp(self) -> str:
1312
- raise NotImplementedError()
1313
-
1314
- @property
1315
- @abstractmethod
1316
- def min_width(self) -> int:
1317
- raise NotImplementedError()
1318
-
1319
- @property
1320
- @abstractmethod
1321
- def max_width(self) -> int:
1322
- raise NotImplementedError()
1323
-
1324
- def _get_flags(self, value):
1325
- for f in self.flags:
1326
- value = "(?%s:%s)" % (f, value)
1327
- return value
1328
-
1329
-
1330
- class PatternStr(Pattern):
1331
- __serialize_fields__ = "value", "flags", "raw"
1332
-
1333
- type: ClassVar[str] = "str"
1334
-
1335
- def to_regexp(self) -> str:
1336
- return self._get_flags(re.escape(self.value))
1337
-
1338
- @property
1339
- def min_width(self) -> int:
1340
- return len(self.value)
1341
-
1342
- @property
1343
- def max_width(self) -> int:
1344
- return len(self.value)
1345
-
1346
-
1347
- class PatternRE(Pattern):
1348
- __serialize_fields__ = "value", "flags", "raw", "_width"
1349
-
1350
- type: ClassVar[str] = "re"
1351
-
1352
- def to_regexp(self) -> str:
1353
- return self._get_flags(self.value)
1354
-
1355
- _width = None
1356
-
1357
- def _get_width(self):
1358
- if self._width is None:
1359
- self._width = get_regexp_width(self.to_regexp())
1360
- return self._width
1361
-
1362
- @property
1363
- def min_width(self) -> int:
1364
- return self._get_width()[0]
1365
-
1366
- @property
1367
- def max_width(self) -> int:
1368
- return self._get_width()[1]
1369
-
1370
-
1371
- class TerminalDef(Serialize):
1372
- #--
1373
- __serialize_fields__ = "name", "pattern", "priority"
1374
- __serialize_namespace__ = PatternStr, PatternRE
1375
-
1376
- name: str
1377
- pattern: Pattern
1378
- priority: int
1379
-
1380
- def __init__(
1381
- self, name: str, pattern: Pattern, priority: int = TOKEN_DEFAULT_PRIORITY
1382
- ) -> None:
1383
- assert isinstance(pattern, Pattern), pattern
1384
- self.name = name
1385
- self.pattern = pattern
1386
- self.priority = priority
1387
-
1388
- def __repr__(self):
1389
- return "%s(%r, %r)" % (type(self).__name__, self.name, self.pattern)
1390
-
1391
- def user_repr(self) -> str:
1392
- if self.name.startswith("__"): ##
1393
-
1394
- return self.pattern.raw or self.name
1395
- else:
1396
- return self.name
1397
-
1398
-
1399
- _T = TypeVar("_T", bound="Token")
1400
-
1401
-
1402
- class Token(str):
1403
- #--
1404
-
1405
- __slots__ = (
1406
- "type",
1407
- "start_pos",
1408
- "value",
1409
- "line",
1410
- "column",
1411
- "end_line",
1412
- "end_column",
1413
- "end_pos",
1414
- )
1415
-
1416
- __match_args__ = ("type", "value")
1417
-
1418
- type: str
1419
- start_pos: Optional[int]
1420
- value: Any
1421
- line: Optional[int]
1422
- column: Optional[int]
1423
- end_line: Optional[int]
1424
- end_column: Optional[int]
1425
- end_pos: Optional[int]
1426
-
1427
- @overload
1428
- def __new__(
1429
- cls,
1430
- type: str,
1431
- value: Any,
1432
- start_pos: Optional[int] = None,
1433
- line: Optional[int] = None,
1434
- column: Optional[int] = None,
1435
- end_line: Optional[int] = None,
1436
- end_column: Optional[int] = None,
1437
- end_pos: Optional[int] = None,
1438
- ) -> "Token": ...
1439
-
1440
- @overload
1441
- def __new__(
1442
- cls,
1443
- type_: str,
1444
- value: Any,
1445
- start_pos: Optional[int] = None,
1446
- line: Optional[int] = None,
1447
- column: Optional[int] = None,
1448
- end_line: Optional[int] = None,
1449
- end_column: Optional[int] = None,
1450
- end_pos: Optional[int] = None,
1451
- ) -> "Token": ...
1452
-
1453
- def __new__(cls, *args, **kwargs):
1454
- if "type_" in kwargs:
1455
- warnings.warn(
1456
- "`type_` is deprecated use `type` instead", DeprecationWarning
1457
- )
1458
-
1459
- if "type" in kwargs:
1460
- raise TypeError(
1461
- "Error: using both 'type' and the deprecated 'type_' as arguments."
1462
- )
1463
- kwargs["type"] = kwargs.pop("type_")
1464
-
1465
- return cls._future_new(*args, **kwargs)
1466
-
1467
- @classmethod
1468
- def _future_new(
1469
- cls,
1470
- type,
1471
- value,
1472
- start_pos=None,
1473
- line=None,
1474
- column=None,
1475
- end_line=None,
1476
- end_column=None,
1477
- end_pos=None,
1478
- ):
1479
- inst = super(Token, cls).__new__(cls, value)
1480
-
1481
- inst.type = type
1482
- inst.start_pos = start_pos
1483
- inst.value = value
1484
- inst.line = line
1485
- inst.column = column
1486
- inst.end_line = end_line
1487
- inst.end_column = end_column
1488
- inst.end_pos = end_pos
1489
- return inst
1490
-
1491
- @overload
1492
- def update(
1493
- self, type: Optional[str] = None, value: Optional[Any] = None
1494
- ) -> "Token": ...
1495
-
1496
- @overload
1497
- def update(
1498
- self, type_: Optional[str] = None, value: Optional[Any] = None
1499
- ) -> "Token": ...
1500
-
1501
- def update(self, *args, **kwargs):
1502
- if "type_" in kwargs:
1503
- warnings.warn(
1504
- "`type_` is deprecated use `type` instead", DeprecationWarning
1505
- )
1506
-
1507
- if "type" in kwargs:
1508
- raise TypeError(
1509
- "Error: using both 'type' and the deprecated 'type_' as arguments."
1510
- )
1511
- kwargs["type"] = kwargs.pop("type_")
1512
-
1513
- return self._future_update(*args, **kwargs)
1514
-
1515
- def _future_update(
1516
- self, type: Optional[str] = None, value: Optional[Any] = None
1517
- ) -> "Token":
1518
- return Token.new_borrow_pos(
1519
- type if type is not None else self.type,
1520
- value if value is not None else self.value,
1521
- self,
1522
- )
1523
-
1524
- @classmethod
1525
- def new_borrow_pos(cls: Type[_T], type_: str, value: Any, borrow_t: "Token") -> _T:
1526
- return cls(
1527
- type_,
1528
- value,
1529
- borrow_t.start_pos,
1530
- borrow_t.line,
1531
- borrow_t.column,
1532
- borrow_t.end_line,
1533
- borrow_t.end_column,
1534
- borrow_t.end_pos,
1535
- )
1536
-
1537
- def __reduce__(self):
1538
- return (
1539
- self.__class__,
1540
- (self.type, self.value, self.start_pos, self.line, self.column),
1541
- )
1542
-
1543
- def __repr__(self):
1544
- return "Token(%r, %r)" % (self.type, self.value)
1545
-
1546
- def __deepcopy__(self, memo):
1547
- return Token(self.type, self.value, self.start_pos, self.line, self.column)
1548
-
1549
- def __eq__(self, other):
1550
- if isinstance(other, Token) and self.type != other.type:
1551
- return False
1552
-
1553
- return str.__eq__(self, other)
1554
-
1555
- __hash__ = str.__hash__
1556
-
1557
-
1558
- class LineCounter:
1559
- #--
1560
-
1561
- __slots__ = "char_pos", "line", "column", "line_start_pos", "newline_char"
1562
-
1563
- def __init__(self, newline_char):
1564
- self.newline_char = newline_char
1565
- self.char_pos = 0
1566
- self.line = 1
1567
- self.column = 1
1568
- self.line_start_pos = 0
1569
-
1570
- def __eq__(self, other):
1571
- if not isinstance(other, LineCounter):
1572
- return NotImplemented
1573
-
1574
- return (
1575
- self.char_pos == other.char_pos and self.newline_char == other.newline_char
1576
- )
1577
-
1578
- def feed(self, token: Token, test_newline=True):
1579
- #--
1580
- if test_newline:
1581
- newlines = token.count(self.newline_char)
1582
- if newlines:
1583
- self.line += newlines
1584
- self.line_start_pos = (
1585
- self.char_pos + token.rindex(self.newline_char) + 1
1586
- )
1587
-
1588
- self.char_pos += len(token)
1589
- self.column = self.char_pos - self.line_start_pos + 1
1590
-
1591
-
1592
- class UnlessCallback:
1593
- def __init__(self, scanner):
1594
- self.scanner = scanner
1595
-
1596
- def __call__(self, t):
1597
- res = self.scanner.match(t.value, 0)
1598
- if res:
1599
- _value, t.type = res
1600
- return t
1601
-
1602
-
1603
- class CallChain:
1604
- def __init__(self, callback1, callback2, cond):
1605
- self.callback1 = callback1
1606
- self.callback2 = callback2
1607
- self.cond = cond
1608
-
1609
- def __call__(self, t):
1610
- t2 = self.callback1(t)
1611
- return self.callback2(t) if self.cond(t2) else t2
1612
-
1613
-
1614
- def _get_match(re_, regexp, s, flags):
1615
- m = re_.match(regexp, s, flags)
1616
- if m:
1617
- return m.group(0)
1618
-
1619
-
1620
- def _create_unless(terminals, g_regex_flags, re_, use_bytes):
1621
- tokens_by_type = classify(terminals, lambda t: type(t.pattern))
1622
- assert len(tokens_by_type) <= 2, tokens_by_type.keys()
1623
- embedded_strs = set()
1624
- callback = {}
1625
- for retok in tokens_by_type.get(PatternRE, []):
1626
- unless = []
1627
- for strtok in tokens_by_type.get(PatternStr, []):
1628
- if strtok.priority != retok.priority:
1629
- continue
1630
- s = strtok.pattern.value
1631
- if s == _get_match(re_, retok.pattern.to_regexp(), s, g_regex_flags):
1632
- unless.append(strtok)
1633
- if strtok.pattern.flags <= retok.pattern.flags:
1634
- embedded_strs.add(strtok)
1635
- if unless:
1636
- callback[retok.name] = UnlessCallback(
1637
- Scanner(
1638
- unless, g_regex_flags, re_, match_whole=True, use_bytes=use_bytes
1639
- )
1640
- )
1641
-
1642
- new_terminals = [t for t in terminals if t not in embedded_strs]
1643
- return new_terminals, callback
1644
-
1645
-
1646
- class Scanner:
1647
- def __init__(self, terminals, g_regex_flags, re_, use_bytes, match_whole=False):
1648
- self.terminals = terminals
1649
- self.g_regex_flags = g_regex_flags
1650
- self.re_ = re_
1651
- self.use_bytes = use_bytes
1652
- self.match_whole = match_whole
1653
-
1654
- self.allowed_types = {t.name for t in self.terminals}
1655
-
1656
- self._mres = self._build_mres(terminals, len(terminals))
1657
-
1658
- def _build_mres(self, terminals, max_size):
1659
- ##
1660
-
1661
- ##
1662
-
1663
- ##
1664
-
1665
- postfix = "$" if self.match_whole else ""
1666
- mres = []
1667
- while terminals:
1668
- pattern = "|".join(
1669
- "(?P<%s>%s)" % (t.name, t.pattern.to_regexp() + postfix)
1670
- for t in terminals[:max_size]
1671
- )
1672
- if self.use_bytes:
1673
- pattern = pattern.encode("latin-1")
1674
- try:
1675
- mre = self.re_.compile(pattern, self.g_regex_flags)
1676
- except AssertionError: ##
1677
-
1678
- return self._build_mres(terminals, max_size // 2)
1679
-
1680
- mres.append(mre)
1681
- terminals = terminals[max_size:]
1682
- return mres
1683
-
1684
- def match(self, text, pos):
1685
- for mre in self._mres:
1686
- m = mre.match(text, pos)
1687
- if m:
1688
- return m.group(0), m.lastgroup
1689
-
1690
-
1691
- def _regexp_has_newline(r: str):
1692
- #--
1693
- return (
1694
- "\n" in r or "\\n" in r or "\\s" in r or "[^" in r or ("(?s" in r and "." in r)
1695
- )
1696
-
1697
-
1698
- class LexerState:
1699
- #--
1700
-
1701
- __slots__ = "text", "line_ctr", "last_token"
1702
-
1703
- text: str
1704
- line_ctr: LineCounter
1705
- last_token: Optional[Token]
1706
-
1707
- def __init__(
1708
- self,
1709
- text: str,
1710
- line_ctr: Optional[LineCounter] = None,
1711
- last_token: Optional[Token] = None,
1712
- ):
1713
- self.text = text
1714
- self.line_ctr = line_ctr or LineCounter(
1715
- b"\n" if isinstance(text, bytes) else "\n"
1716
- )
1717
- self.last_token = last_token
1718
-
1719
- def __eq__(self, other):
1720
- if not isinstance(other, LexerState):
1721
- return NotImplemented
1722
-
1723
- return (
1724
- self.text is other.text
1725
- and self.line_ctr == other.line_ctr
1726
- and self.last_token == other.last_token
1727
- )
1728
-
1729
- def __copy__(self):
1730
- return type(self)(self.text, copy(self.line_ctr), self.last_token)
1731
-
1732
-
1733
- class LexerThread:
1734
- #--
1735
-
1736
- def __init__(self, lexer: "Lexer", lexer_state: LexerState):
1737
- self.lexer = lexer
1738
- self.state = lexer_state
1739
-
1740
- @classmethod
1741
- def from_text(cls, lexer: "Lexer", text: str) -> "LexerThread":
1742
- return cls(lexer, LexerState(text))
1743
-
1744
- def lex(self, parser_state):
1745
- return self.lexer.lex(self.state, parser_state)
1746
-
1747
- def __copy__(self):
1748
- return type(self)(self.lexer, copy(self.state))
1749
-
1750
- _Token = Token
1751
-
1752
-
1753
- _Callback = Callable[[Token], Token]
1754
-
1755
-
1756
- class Lexer(ABC):
1757
- #--
1758
-
1759
- @abstractmethod
1760
- def lex(self, lexer_state: LexerState, parser_state: Any) -> Iterator[Token]:
1761
- return NotImplemented
1762
-
1763
- def make_lexer_state(self, text):
1764
- #--
1765
- return LexerState(text)
1766
-
1767
-
1768
- def _check_regex_collisions(
1769
- terminal_to_regexp: Dict[TerminalDef, str],
1770
- comparator,
1771
- strict_mode,
1772
- max_collisions_to_show=8,
1773
- ):
1774
- if not comparator:
1775
- comparator = interegular.Comparator.from_regexes(terminal_to_regexp)
1776
-
1777
- ##
1778
-
1779
- ##
1780
-
1781
- max_time = 2 if strict_mode else 0.2
1782
-
1783
- ##
1784
-
1785
- if comparator.count_marked_pairs() >= max_collisions_to_show:
1786
- return
1787
- for group in classify(terminal_to_regexp, lambda t: t.priority).values():
1788
- for a, b in comparator.check(group, skip_marked=True):
1789
- assert a.priority == b.priority
1790
- ##
1791
-
1792
- comparator.mark(a, b)
1793
-
1794
- ##
1795
-
1796
- message = f"Collision between Terminals {a.name} and {b.name}. "
1797
- try:
1798
- example = comparator.get_example_overlap(
1799
- a, b, max_time
1800
- ).format_multiline()
1801
- except ValueError:
1802
- ##
1803
-
1804
- example = "No example could be found fast enough. However, the collision does still exists"
1805
- if strict_mode:
1806
- raise LexError(f"{message}\n{example}")
1807
- logger.warning(
1808
- "%s The lexer will choose between them arbitrarily.\n%s",
1809
- message,
1810
- example,
1811
- )
1812
- if comparator.count_marked_pairs() >= max_collisions_to_show:
1813
- logger.warning("Found 8 regex collisions, will not check for more.")
1814
- return
1815
-
1816
-
1817
- class AbstractBasicLexer(Lexer):
1818
- terminals_by_name: Dict[str, TerminalDef]
1819
-
1820
- @abstractmethod
1821
- def __init__(self, conf: "LexerConf", comparator=None) -> None: ...
1822
-
1823
- @abstractmethod
1824
- def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token: ...
1825
-
1826
- def lex(self, state: LexerState, parser_state: Any) -> Iterator[Token]:
1827
- with suppress(EOFError):
1828
- while True:
1829
- yield self.next_token(state, parser_state)
1830
-
1831
-
1832
- class BasicLexer(AbstractBasicLexer):
1833
- terminals: Collection[TerminalDef]
1834
- ignore_types: FrozenSet[str]
1835
- newline_types: FrozenSet[str]
1836
- user_callbacks: Dict[str, _Callback]
1837
- callback: Dict[str, _Callback]
1838
- re: ModuleType
1839
-
1840
- def __init__(self, conf: "LexerConf", comparator=None) -> None:
1841
- terminals = list(conf.terminals)
1842
- assert all(isinstance(t, TerminalDef) for t in terminals), terminals
1843
-
1844
- self.re = conf.re_module
1845
-
1846
- if not conf.skip_validation:
1847
- ##
1848
-
1849
- terminal_to_regexp = {}
1850
- for t in terminals:
1851
- regexp = t.pattern.to_regexp()
1852
- try:
1853
- self.re.compile(regexp, conf.g_regex_flags)
1854
- except self.re.error:
1855
- raise LexError("Cannot compile token %s: %s" % (t.name, t.pattern))
1856
-
1857
- if t.pattern.min_width == 0:
1858
- raise LexError(
1859
- "Lexer does not allow zero-width terminals. (%s: %s)"
1860
- % (t.name, t.pattern)
1861
- )
1862
- if t.pattern.type == "re":
1863
- terminal_to_regexp[t] = regexp
1864
-
1865
- if not (set(conf.ignore) <= {t.name for t in terminals}):
1866
- raise LexError(
1867
- "Ignore terminals are not defined: %s"
1868
- % (set(conf.ignore) - {t.name for t in terminals})
1869
- )
1870
-
1871
- if has_interegular:
1872
- _check_regex_collisions(terminal_to_regexp, comparator, conf.strict)
1873
- elif conf.strict:
1874
- raise LexError(
1875
- "interegular must be installed for strict mode. Use `pip install 'lark[interegular]'`."
1876
- )
1877
-
1878
- ##
1879
-
1880
- self.newline_types = frozenset(
1881
- t.name for t in terminals if _regexp_has_newline(t.pattern.to_regexp())
1882
- )
1883
- self.ignore_types = frozenset(conf.ignore)
1884
-
1885
- terminals.sort(
1886
- key=lambda x: (
1887
- -x.priority,
1888
- -x.pattern.max_width,
1889
- -len(x.pattern.value),
1890
- x.name,
1891
- )
1892
- )
1893
- self.terminals = terminals
1894
- self.user_callbacks = conf.callbacks
1895
- self.g_regex_flags = conf.g_regex_flags
1896
- self.use_bytes = conf.use_bytes
1897
- self.terminals_by_name = conf.terminals_by_name
1898
-
1899
- self._scanner = None
1900
-
1901
- def _build_scanner(self):
1902
- terminals, self.callback = _create_unless(
1903
- self.terminals, self.g_regex_flags, self.re, self.use_bytes
1904
- )
1905
- assert all(self.callback.values())
1906
-
1907
- for type_, f in self.user_callbacks.items():
1908
- if type_ in self.callback:
1909
- ##
1910
-
1911
- self.callback[type_] = CallChain(
1912
- self.callback[type_], f, lambda t: t.type == type_
1913
- )
1914
- else:
1915
- self.callback[type_] = f
1916
-
1917
- self._scanner = Scanner(terminals, self.g_regex_flags, self.re, self.use_bytes)
1918
-
1919
- @property
1920
- def scanner(self):
1921
- if self._scanner is None:
1922
- self._build_scanner()
1923
- return self._scanner
1924
-
1925
- def match(self, text, pos):
1926
- return self.scanner.match(text, pos)
1927
-
1928
- def next_token(self, lex_state: LexerState, parser_state: Any = None) -> Token:
1929
- line_ctr = lex_state.line_ctr
1930
- while line_ctr.char_pos < len(lex_state.text):
1931
- res = self.match(lex_state.text, line_ctr.char_pos)
1932
- if not res:
1933
- allowed = self.scanner.allowed_types - self.ignore_types
1934
- if not allowed:
1935
- allowed = {"<END-OF-FILE>"}
1936
- raise UnexpectedCharacters(
1937
- lex_state.text,
1938
- line_ctr.char_pos,
1939
- line_ctr.line,
1940
- line_ctr.column,
1941
- allowed=allowed,
1942
- token_history=lex_state.last_token and [lex_state.last_token],
1943
- state=parser_state,
1944
- terminals_by_name=self.terminals_by_name,
1945
- )
1946
-
1947
- value, type_ = res
1948
-
1949
- ignored = type_ in self.ignore_types
1950
- t = None
1951
- if not ignored or type_ in self.callback:
1952
- t = Token(
1953
- type_, value, line_ctr.char_pos, line_ctr.line, line_ctr.column
1954
- )
1955
- line_ctr.feed(value, type_ in self.newline_types)
1956
- if t is not None:
1957
- t.end_line = line_ctr.line
1958
- t.end_column = line_ctr.column
1959
- t.end_pos = line_ctr.char_pos
1960
- if t.type in self.callback:
1961
- t = self.callback[t.type](t)
1962
- if not ignored:
1963
- if not isinstance(t, Token):
1964
- raise LexError(
1965
- "Callbacks must return a token (returned %r)" % t
1966
- )
1967
- lex_state.last_token = t
1968
- return t
1969
-
1970
- ##
1971
-
1972
- raise EOFError(self)
1973
-
1974
-
1975
- class ContextualLexer(Lexer):
1976
- lexers: Dict[int, AbstractBasicLexer]
1977
- root_lexer: AbstractBasicLexer
1978
-
1979
- BasicLexer: Type[AbstractBasicLexer] = BasicLexer
1980
-
1981
- def __init__(
1982
- self,
1983
- conf: "LexerConf",
1984
- states: Dict[int, Collection[str]],
1985
- always_accept: Collection[str] = (),
1986
- ) -> None:
1987
- terminals = list(conf.terminals)
1988
- terminals_by_name = conf.terminals_by_name
1989
-
1990
- trad_conf = copy(conf)
1991
- trad_conf.terminals = terminals
1992
-
1993
- if has_interegular and not conf.skip_validation:
1994
- comparator = interegular.Comparator.from_regexes(
1995
- {t: t.pattern.to_regexp() for t in terminals}
1996
- )
1997
- else:
1998
- comparator = None
1999
- lexer_by_tokens: Dict[FrozenSet[str], AbstractBasicLexer] = {}
2000
- self.lexers = {}
2001
- for state, accepts in states.items():
2002
- key = frozenset(accepts)
2003
- try:
2004
- lexer = lexer_by_tokens[key]
2005
- except KeyError:
2006
- accepts = set(accepts) | set(conf.ignore) | set(always_accept)
2007
- lexer_conf = copy(trad_conf)
2008
- lexer_conf.terminals = [
2009
- terminals_by_name[n] for n in accepts if n in terminals_by_name
2010
- ]
2011
- lexer = self.BasicLexer(lexer_conf, comparator)
2012
- lexer_by_tokens[key] = lexer
2013
-
2014
- self.lexers[state] = lexer
2015
-
2016
- assert trad_conf.terminals is terminals
2017
- trad_conf.skip_validation = True ##
2018
-
2019
- self.root_lexer = self.BasicLexer(trad_conf, comparator)
2020
-
2021
- def lex(
2022
- self, lexer_state: LexerState, parser_state: "ParserState"
2023
- ) -> Iterator[Token]:
2024
- try:
2025
- while True:
2026
- lexer = self.lexers[parser_state.position]
2027
- yield lexer.next_token(lexer_state, parser_state)
2028
- except EOFError:
2029
- pass
2030
- except UnexpectedCharacters as e:
2031
- ##
2032
-
2033
- ##
2034
-
2035
- try:
2036
- last_token = (
2037
- lexer_state.last_token
2038
- ) ##
2039
-
2040
- token = self.root_lexer.next_token(lexer_state, parser_state)
2041
- raise UnexpectedToken(
2042
- token,
2043
- e.allowed,
2044
- state=parser_state,
2045
- token_history=[last_token],
2046
- terminals_by_name=self.root_lexer.terminals_by_name,
2047
- )
2048
- except UnexpectedCharacters:
2049
- raise e ##
2050
-
2051
-
2052
-
2053
-
2054
-
2055
- _ParserArgType: "TypeAlias" = 'Literal["earley", "lalr", "cyk", "auto"]'
2056
- _LexerArgType: "TypeAlias" = (
2057
- 'Union[Literal["auto", "basic", "contextual", "dynamic", "dynamic_complete"], Type[Lexer]]'
2058
- )
2059
- _LexerCallback = Callable[[Token], Token]
2060
- ParserCallbacks = Dict[str, Callable]
2061
-
2062
-
2063
- class LexerConf(Serialize):
2064
- __serialize_fields__ = (
2065
- "terminals",
2066
- "ignore",
2067
- "g_regex_flags",
2068
- "use_bytes",
2069
- "lexer_type",
2070
- )
2071
- __serialize_namespace__ = (TerminalDef,)
2072
-
2073
- terminals: Collection[TerminalDef]
2074
- re_module: ModuleType
2075
- ignore: Collection[str]
2076
- postlex: "Optional[PostLex]"
2077
- callbacks: Dict[str, _LexerCallback]
2078
- g_regex_flags: int
2079
- skip_validation: bool
2080
- use_bytes: bool
2081
- lexer_type: Optional[_LexerArgType]
2082
- strict: bool
2083
-
2084
- def __init__(
2085
- self,
2086
- terminals: Collection[TerminalDef],
2087
- re_module: ModuleType,
2088
- ignore: Collection[str] = (),
2089
- postlex: "Optional[PostLex]" = None,
2090
- callbacks: Optional[Dict[str, _LexerCallback]] = None,
2091
- g_regex_flags: int = 0,
2092
- skip_validation: bool = False,
2093
- use_bytes: bool = False,
2094
- strict: bool = False,
2095
- ):
2096
- self.terminals = terminals
2097
- self.terminals_by_name = {t.name: t for t in self.terminals}
2098
- assert len(self.terminals) == len(self.terminals_by_name)
2099
- self.ignore = ignore
2100
- self.postlex = postlex
2101
- self.callbacks = callbacks or {}
2102
- self.g_regex_flags = g_regex_flags
2103
- self.re_module = re_module
2104
- self.skip_validation = skip_validation
2105
- self.use_bytes = use_bytes
2106
- self.strict = strict
2107
- self.lexer_type = None
2108
-
2109
- def _deserialize(self):
2110
- self.terminals_by_name = {t.name: t for t in self.terminals}
2111
-
2112
- def __deepcopy__(self, memo=None):
2113
- return type(self)(
2114
- deepcopy(self.terminals, memo),
2115
- self.re_module,
2116
- deepcopy(self.ignore, memo),
2117
- deepcopy(self.postlex, memo),
2118
- deepcopy(self.callbacks, memo),
2119
- deepcopy(self.g_regex_flags, memo),
2120
- deepcopy(self.skip_validation, memo),
2121
- deepcopy(self.use_bytes, memo),
2122
- )
2123
-
2124
-
2125
- class ParserConf(Serialize):
2126
- __serialize_fields__ = "rules", "start", "parser_type"
2127
-
2128
- rules: List["Rule"]
2129
- callbacks: ParserCallbacks
2130
- start: List[str]
2131
- parser_type: _ParserArgType
2132
-
2133
- def __init__(
2134
- self, rules: List["Rule"], callbacks: ParserCallbacks, start: List[str]
2135
- ):
2136
- assert isinstance(start, list)
2137
- self.rules = rules
2138
- self.callbacks = callbacks
2139
- self.start = start
2140
-
2141
-
2142
-
2143
- from functools import partial, wraps
2144
- from itertools import product
2145
-
2146
-
2147
- class ExpandSingleChild:
2148
- def __init__(self, node_builder):
2149
- self.node_builder = node_builder
2150
-
2151
- def __call__(self, children):
2152
- if len(children) == 1:
2153
- return children[0]
2154
- else:
2155
- return self.node_builder(children)
2156
-
2157
-
2158
- class PropagatePositions:
2159
- def __init__(self, node_builder, node_filter=None):
2160
- self.node_builder = node_builder
2161
- self.node_filter = node_filter
2162
-
2163
- def __call__(self, children):
2164
- res = self.node_builder(children)
2165
-
2166
- if isinstance(res, Tree):
2167
- ##
2168
-
2169
- ##
2170
-
2171
- ##
2172
-
2173
- ##
2174
-
2175
-
2176
- res_meta = res.meta
2177
-
2178
- first_meta = self._pp_get_meta(children)
2179
- if first_meta is not None:
2180
- if not hasattr(res_meta, "line"):
2181
- ##
2182
-
2183
- res_meta.line = getattr(
2184
- first_meta, "container_line", first_meta.line
2185
- )
2186
- res_meta.column = getattr(
2187
- first_meta, "container_column", first_meta.column
2188
- )
2189
- res_meta.start_pos = getattr(
2190
- first_meta, "container_start_pos", first_meta.start_pos
2191
- )
2192
- res_meta.empty = False
2193
-
2194
- res_meta.container_line = getattr(
2195
- first_meta, "container_line", first_meta.line
2196
- )
2197
- res_meta.container_column = getattr(
2198
- first_meta, "container_column", first_meta.column
2199
- )
2200
- res_meta.container_start_pos = getattr(
2201
- first_meta, "container_start_pos", first_meta.start_pos
2202
- )
2203
-
2204
- last_meta = self._pp_get_meta(reversed(children))
2205
- if last_meta is not None:
2206
- if not hasattr(res_meta, "end_line"):
2207
- res_meta.end_line = getattr(
2208
- last_meta, "container_end_line", last_meta.end_line
2209
- )
2210
- res_meta.end_column = getattr(
2211
- last_meta, "container_end_column", last_meta.end_column
2212
- )
2213
- res_meta.end_pos = getattr(
2214
- last_meta, "container_end_pos", last_meta.end_pos
2215
- )
2216
- res_meta.empty = False
2217
-
2218
- res_meta.container_end_line = getattr(
2219
- last_meta, "container_end_line", last_meta.end_line
2220
- )
2221
- res_meta.container_end_column = getattr(
2222
- last_meta, "container_end_column", last_meta.end_column
2223
- )
2224
- res_meta.container_end_pos = getattr(
2225
- last_meta, "container_end_pos", last_meta.end_pos
2226
- )
2227
-
2228
- return res
2229
-
2230
- def _pp_get_meta(self, children):
2231
- for c in children:
2232
- if self.node_filter is not None and not self.node_filter(c):
2233
- continue
2234
- if isinstance(c, Tree):
2235
- if not c.meta.empty:
2236
- return c.meta
2237
- elif isinstance(c, Token):
2238
- return c
2239
- elif hasattr(c, "__lark_meta__"):
2240
- return c.__lark_meta__()
2241
-
2242
-
2243
- def make_propagate_positions(option):
2244
- if callable(option):
2245
- return partial(PropagatePositions, node_filter=option)
2246
- elif option is True:
2247
- return PropagatePositions
2248
- elif option is False:
2249
- return None
2250
-
2251
- raise ConfigurationError("Invalid option for propagate_positions: %r" % option)
2252
-
2253
-
2254
- class ChildFilter:
2255
- def __init__(self, to_include, append_none, node_builder):
2256
- self.node_builder = node_builder
2257
- self.to_include = to_include
2258
- self.append_none = append_none
2259
-
2260
- def __call__(self, children):
2261
- filtered = []
2262
-
2263
- for i, to_expand, add_none in self.to_include:
2264
- if add_none:
2265
- filtered += [None] * add_none
2266
- if to_expand:
2267
- filtered += children[i].children
2268
- else:
2269
- filtered.append(children[i])
2270
-
2271
- if self.append_none:
2272
- filtered += [None] * self.append_none
2273
-
2274
- return self.node_builder(filtered)
2275
-
2276
-
2277
- class ChildFilterLALR(ChildFilter):
2278
- #--
2279
-
2280
- def __call__(self, children):
2281
- filtered = []
2282
- for i, to_expand, add_none in self.to_include:
2283
- if add_none:
2284
- filtered += [None] * add_none
2285
- if to_expand:
2286
- if filtered:
2287
- filtered += children[i].children
2288
- else: ##
2289
-
2290
- filtered = children[i].children
2291
- else:
2292
- filtered.append(children[i])
2293
-
2294
- if self.append_none:
2295
- filtered += [None] * self.append_none
2296
-
2297
- return self.node_builder(filtered)
2298
-
2299
-
2300
- class ChildFilterLALR_NoPlaceholders(ChildFilter):
2301
- #--
2302
-
2303
- def __init__(self, to_include, node_builder):
2304
- self.node_builder = node_builder
2305
- self.to_include = to_include
2306
-
2307
- def __call__(self, children):
2308
- filtered = []
2309
- for i, to_expand in self.to_include:
2310
- if to_expand:
2311
- if filtered:
2312
- filtered += children[i].children
2313
- else: ##
2314
-
2315
- filtered = children[i].children
2316
- else:
2317
- filtered.append(children[i])
2318
- return self.node_builder(filtered)
2319
-
2320
-
2321
- def _should_expand(sym):
2322
- return not sym.is_term and sym.name.startswith("_")
2323
-
2324
-
2325
- def maybe_create_child_filter(
2326
- expansion, keep_all_tokens, ambiguous, _empty_indices: List[bool]
2327
- ):
2328
- ##
2329
-
2330
- if _empty_indices:
2331
- assert _empty_indices.count(False) == len(expansion)
2332
- s = "".join(str(int(b)) for b in _empty_indices)
2333
- empty_indices = [len(ones) for ones in s.split("0")]
2334
- assert len(empty_indices) == len(expansion) + 1, (empty_indices, len(expansion))
2335
- else:
2336
- empty_indices = [0] * (len(expansion) + 1)
2337
-
2338
- to_include = []
2339
- nones_to_add = 0
2340
- for i, sym in enumerate(expansion):
2341
- nones_to_add += empty_indices[i]
2342
- if keep_all_tokens or not (sym.is_term and sym.filter_out):
2343
- to_include.append((i, _should_expand(sym), nones_to_add))
2344
- nones_to_add = 0
2345
-
2346
- nones_to_add += empty_indices[len(expansion)]
2347
-
2348
- if (
2349
- _empty_indices
2350
- or len(to_include) < len(expansion)
2351
- or any(to_expand for i, to_expand, _ in to_include)
2352
- ):
2353
- if _empty_indices or ambiguous:
2354
- return partial(
2355
- ChildFilter if ambiguous else ChildFilterLALR, to_include, nones_to_add
2356
- )
2357
- else:
2358
- ##
2359
-
2360
- return partial(
2361
- ChildFilterLALR_NoPlaceholders, [(i, x) for i, x, _ in to_include]
2362
- )
2363
-
2364
-
2365
- class AmbiguousExpander:
2366
- #--
2367
-
2368
- def __init__(self, to_expand, tree_class, node_builder):
2369
- self.node_builder = node_builder
2370
- self.tree_class = tree_class
2371
- self.to_expand = to_expand
2372
-
2373
- def __call__(self, children):
2374
- def _is_ambig_tree(t):
2375
- return hasattr(t, "data") and t.data == "_ambig"
2376
-
2377
- ##
2378
-
2379
- ##
2380
-
2381
- ##
2382
-
2383
- ##
2384
-
2385
- ambiguous = []
2386
- for i, child in enumerate(children):
2387
- if _is_ambig_tree(child):
2388
- if i in self.to_expand:
2389
- ambiguous.append(i)
2390
-
2391
- child.expand_kids_by_data("_ambig")
2392
-
2393
- if not ambiguous:
2394
- return self.node_builder(children)
2395
-
2396
- expand = [
2397
- child.children if i in ambiguous else (child,)
2398
- for i, child in enumerate(children)
2399
- ]
2400
- return self.tree_class(
2401
- "_ambig", [self.node_builder(list(f)) for f in product(*expand)]
2402
- )
2403
-
2404
-
2405
- def maybe_create_ambiguous_expander(tree_class, expansion, keep_all_tokens):
2406
- to_expand = [
2407
- i
2408
- for i, sym in enumerate(expansion)
2409
- if keep_all_tokens
2410
- or ((not (sym.is_term and sym.filter_out)) and _should_expand(sym))
2411
- ]
2412
- if to_expand:
2413
- return partial(AmbiguousExpander, to_expand, tree_class)
2414
-
2415
-
2416
- class AmbiguousIntermediateExpander:
2417
- #--
2418
-
2419
- def __init__(self, tree_class, node_builder):
2420
- self.node_builder = node_builder
2421
- self.tree_class = tree_class
2422
-
2423
- def __call__(self, children):
2424
- def _is_iambig_tree(child):
2425
- return hasattr(child, "data") and child.data == "_iambig"
2426
-
2427
- def _collapse_iambig(children):
2428
- #--
2429
-
2430
- ##
2431
-
2432
- ##
2433
-
2434
- if children and _is_iambig_tree(children[0]):
2435
- iambig_node = children[0]
2436
- result = []
2437
- for grandchild in iambig_node.children:
2438
- collapsed = _collapse_iambig(grandchild.children)
2439
- if collapsed:
2440
- for child in collapsed:
2441
- child.children += children[1:]
2442
- result += collapsed
2443
- else:
2444
- new_tree = self.tree_class(
2445
- "_inter", grandchild.children + children[1:]
2446
- )
2447
- result.append(new_tree)
2448
- return result
2449
-
2450
- collapsed = _collapse_iambig(children)
2451
- if collapsed:
2452
- processed_nodes = [self.node_builder(c.children) for c in collapsed]
2453
- return self.tree_class("_ambig", processed_nodes)
2454
-
2455
- return self.node_builder(children)
2456
-
2457
-
2458
- def inplace_transformer(func):
2459
- @wraps(func)
2460
- def f(children):
2461
- ##
2462
-
2463
- tree = Tree(func.__name__, children)
2464
- return func(tree)
2465
-
2466
- return f
2467
-
2468
-
2469
- def apply_visit_wrapper(func, name, wrapper):
2470
- if wrapper is _vargs_meta or wrapper is _vargs_meta_inline:
2471
- raise NotImplementedError("Meta args not supported for internal transformer")
2472
-
2473
- @wraps(func)
2474
- def f(children):
2475
- return wrapper(func, name, children, None)
2476
-
2477
- return f
2478
-
2479
-
2480
- class ParseTreeBuilder:
2481
- def __init__(
2482
- self,
2483
- rules,
2484
- tree_class,
2485
- propagate_positions=False,
2486
- ambiguous=False,
2487
- maybe_placeholders=False,
2488
- ):
2489
- self.tree_class = tree_class
2490
- self.propagate_positions = propagate_positions
2491
- self.ambiguous = ambiguous
2492
- self.maybe_placeholders = maybe_placeholders
2493
-
2494
- self.rule_builders = list(self._init_builders(rules))
2495
-
2496
- def _init_builders(self, rules):
2497
- propagate_positions = make_propagate_positions(self.propagate_positions)
2498
-
2499
- for rule in rules:
2500
- options = rule.options
2501
- keep_all_tokens = options.keep_all_tokens
2502
- expand_single_child = options.expand1
2503
-
2504
- wrapper_chain = list(
2505
- filter(
2506
- None,
2507
- [
2508
- (expand_single_child and not rule.alias) and ExpandSingleChild,
2509
- maybe_create_child_filter(
2510
- rule.expansion,
2511
- keep_all_tokens,
2512
- self.ambiguous,
2513
- options.empty_indices if self.maybe_placeholders else None,
2514
- ),
2515
- propagate_positions,
2516
- self.ambiguous
2517
- and maybe_create_ambiguous_expander(
2518
- self.tree_class, rule.expansion, keep_all_tokens
2519
- ),
2520
- self.ambiguous
2521
- and partial(AmbiguousIntermediateExpander, self.tree_class),
2522
- ],
2523
- )
2524
- )
2525
-
2526
- yield rule, wrapper_chain
2527
-
2528
- def create_callback(self, transformer=None):
2529
- callbacks = {}
2530
-
2531
- default_handler = getattr(transformer, "__default__", None)
2532
- if default_handler:
2533
-
2534
- def default_callback(data, children):
2535
- return default_handler(data, children, None)
2536
-
2537
- else:
2538
- default_callback = self.tree_class
2539
-
2540
- for rule, wrapper_chain in self.rule_builders:
2541
-
2542
- user_callback_name = (
2543
- rule.alias or rule.options.template_source or rule.origin.name
2544
- )
2545
- try:
2546
- f = getattr(transformer, user_callback_name)
2547
- wrapper = getattr(f, "visit_wrapper", None)
2548
- if wrapper is not None:
2549
- f = apply_visit_wrapper(f, user_callback_name, wrapper)
2550
- elif isinstance(transformer, Transformer_InPlace):
2551
- f = inplace_transformer(f)
2552
- except AttributeError:
2553
- f = partial(default_callback, user_callback_name)
2554
-
2555
- for w in wrapper_chain:
2556
- f = w(f)
2557
-
2558
- if rule in callbacks:
2559
- raise GrammarError("Rule '%s' already exists" % (rule,))
2560
-
2561
- callbacks[rule] = f
2562
-
2563
- return callbacks
2564
-
2565
-
2566
-
2567
-
2568
-
2569
- class Action:
2570
- def __init__(self, name):
2571
- self.name = name
2572
-
2573
- def __str__(self):
2574
- return self.name
2575
-
2576
- def __repr__(self):
2577
- return str(self)
2578
-
2579
-
2580
- Shift = Action("Shift")
2581
- Reduce = Action("Reduce")
2582
-
2583
- StateT = TypeVar("StateT")
2584
-
2585
-
2586
- class ParseTableBase(Generic[StateT]):
2587
- states: Dict[StateT, Dict[str, Tuple]]
2588
- start_states: Dict[str, StateT]
2589
- end_states: Dict[str, StateT]
2590
-
2591
- def __init__(self, states, start_states, end_states):
2592
- self.states = states
2593
- self.start_states = start_states
2594
- self.end_states = end_states
2595
-
2596
- def serialize(self, memo):
2597
- tokens = Enumerator()
2598
-
2599
- states = {
2600
- state: {
2601
- tokens.get(token): (
2602
- (1, arg.serialize(memo)) if action is Reduce else (0, arg)
2603
- )
2604
- for token, (action, arg) in actions.items()
2605
- }
2606
- for state, actions in self.states.items()
2607
- }
2608
-
2609
- return {
2610
- "tokens": tokens.reversed(),
2611
- "states": states,
2612
- "start_states": self.start_states,
2613
- "end_states": self.end_states,
2614
- }
2615
-
2616
- @classmethod
2617
- def deserialize(cls, data, memo):
2618
- tokens = data["tokens"]
2619
- states = {
2620
- state: {
2621
- tokens[token]: (
2622
- (Reduce, Rule.deserialize(arg, memo))
2623
- if action == 1
2624
- else (Shift, arg)
2625
- )
2626
- for token, (action, arg) in actions.items()
2627
- }
2628
- for state, actions in data["states"].items()
2629
- }
2630
- return cls(states, data["start_states"], data["end_states"])
2631
-
2632
-
2633
- class ParseTable(ParseTableBase["State"]):
2634
- #--
2635
-
2636
- pass
2637
-
2638
-
2639
- class IntParseTable(ParseTableBase[int]):
2640
- #--
2641
-
2642
- @classmethod
2643
- def from_ParseTable(cls, parse_table: ParseTable):
2644
- enum = list(parse_table.states)
2645
- state_to_idx: Dict["State", int] = {s: i for i, s in enumerate(enum)}
2646
- int_states = {}
2647
-
2648
- for s, la in parse_table.states.items():
2649
- la = {
2650
- k: (v[0], state_to_idx[v[1]]) if v[0] is Shift else v
2651
- for k, v in la.items()
2652
- }
2653
- int_states[state_to_idx[s]] = la
2654
-
2655
- start_states = {
2656
- start: state_to_idx[s] for start, s in parse_table.start_states.items()
2657
- }
2658
- end_states = {
2659
- start: state_to_idx[s] for start, s in parse_table.end_states.items()
2660
- }
2661
- return cls(int_states, start_states, end_states)
2662
-
2663
-
2664
-
2665
-
2666
-
2667
- class ParseConf(Generic[StateT]):
2668
- __slots__ = (
2669
- "parse_table",
2670
- "callbacks",
2671
- "start",
2672
- "start_state",
2673
- "end_state",
2674
- "states",
2675
- )
2676
-
2677
- parse_table: ParseTableBase[StateT]
2678
- callbacks: ParserCallbacks
2679
- start: str
2680
-
2681
- start_state: StateT
2682
- end_state: StateT
2683
- states: Dict[StateT, Dict[str, tuple]]
2684
-
2685
- def __init__(
2686
- self,
2687
- parse_table: ParseTableBase[StateT],
2688
- callbacks: ParserCallbacks,
2689
- start: str,
2690
- ):
2691
- self.parse_table = parse_table
2692
-
2693
- self.start_state = self.parse_table.start_states[start]
2694
- self.end_state = self.parse_table.end_states[start]
2695
- self.states = self.parse_table.states
2696
-
2697
- self.callbacks = callbacks
2698
- self.start = start
2699
-
2700
-
2701
- class ParserState(Generic[StateT]):
2702
- __slots__ = "parse_conf", "lexer", "state_stack", "value_stack"
2703
-
2704
- parse_conf: ParseConf[StateT]
2705
- lexer: LexerThread
2706
- state_stack: List[StateT]
2707
- value_stack: list
2708
-
2709
- def __init__(
2710
- self,
2711
- parse_conf: ParseConf[StateT],
2712
- lexer: LexerThread,
2713
- state_stack=None,
2714
- value_stack=None,
2715
- ):
2716
- self.parse_conf = parse_conf
2717
- self.lexer = lexer
2718
- self.state_stack = state_stack or [self.parse_conf.start_state]
2719
- self.value_stack = value_stack or []
2720
-
2721
- @property
2722
- def position(self) -> StateT:
2723
- return self.state_stack[-1]
2724
-
2725
- ##
2726
-
2727
- def __eq__(self, other) -> bool:
2728
- if not isinstance(other, ParserState):
2729
- return NotImplemented
2730
- return (
2731
- len(self.state_stack) == len(other.state_stack)
2732
- and self.position == other.position
2733
- )
2734
-
2735
- def __copy__(self):
2736
- return type(self)(
2737
- self.parse_conf,
2738
- self.lexer, ##
2739
-
2740
- copy(self.state_stack),
2741
- deepcopy(self.value_stack),
2742
- )
2743
-
2744
- def copy(self) -> "ParserState[StateT]":
2745
- return copy(self)
2746
-
2747
- def feed_token(self, token: Token, is_end=False) -> Any:
2748
- state_stack = self.state_stack
2749
- value_stack = self.value_stack
2750
- states = self.parse_conf.states
2751
- end_state = self.parse_conf.end_state
2752
- callbacks = self.parse_conf.callbacks
2753
-
2754
- while True:
2755
- state = state_stack[-1]
2756
- try:
2757
- action, arg = states[state][token.type]
2758
- except KeyError:
2759
- expected = {s for s in states[state].keys() if s.isupper()}
2760
- raise UnexpectedToken(
2761
- token, expected, state=self, interactive_parser=None
2762
- )
2763
-
2764
- assert arg != end_state
2765
-
2766
- if action is Shift:
2767
- ##
2768
-
2769
- assert not is_end
2770
- state_stack.append(arg)
2771
- value_stack.append(
2772
- token
2773
- if token.type not in callbacks
2774
- else callbacks[token.type](token)
2775
- )
2776
- return
2777
- else:
2778
- ##
2779
-
2780
- rule = arg
2781
- size = len(rule.expansion)
2782
- if size:
2783
- s = value_stack[-size:]
2784
- del state_stack[-size:]
2785
- del value_stack[-size:]
2786
- else:
2787
- s = []
2788
-
2789
- value = callbacks[rule](s) if callbacks else s
2790
-
2791
- _action, new_state = states[state_stack[-1]][rule.origin.name]
2792
- assert _action is Shift
2793
- state_stack.append(new_state)
2794
- value_stack.append(value)
2795
-
2796
- if is_end and state_stack[-1] == end_state:
2797
- return value_stack[-1]
2798
-
2799
-
2800
-
2801
-
2802
-
2803
- class LALR_Parser(Serialize):
2804
- def __init__(
2805
- self, parser_conf: ParserConf, debug: bool = False, strict: bool = False
2806
- ):
2807
- analysis = LALR_Analyzer(parser_conf, debug=debug, strict=strict)
2808
- analysis.compute_lalr()
2809
- callbacks = parser_conf.callbacks
2810
-
2811
- self._parse_table = analysis.parse_table
2812
- self.parser_conf = parser_conf
2813
- self.parser = _Parser(analysis.parse_table, callbacks, debug)
2814
-
2815
- @classmethod
2816
- def deserialize(cls, data, memo, callbacks, debug=False):
2817
- inst = cls.__new__(cls)
2818
- inst._parse_table = IntParseTable.deserialize(data, memo)
2819
- inst.parser = _Parser(inst._parse_table, callbacks, debug)
2820
- return inst
2821
-
2822
- def serialize(self, memo: Any = None) -> Dict[str, Any]:
2823
- return self._parse_table.serialize(memo)
2824
-
2825
- def parse_interactive(self, lexer: LexerThread, start: str):
2826
- return self.parser.parse(lexer, start, start_interactive=True)
2827
-
2828
- def parse(self, lexer, start, on_error=None):
2829
- try:
2830
- return self.parser.parse(lexer, start)
2831
- except UnexpectedInput as e:
2832
- if on_error is None:
2833
- raise
2834
-
2835
- while True:
2836
- if isinstance(e, UnexpectedCharacters):
2837
- s = e.interactive_parser.lexer_thread.state
2838
- p = s.line_ctr.char_pos
2839
-
2840
- if not on_error(e):
2841
- raise e
2842
-
2843
- if isinstance(e, UnexpectedCharacters):
2844
- ##
2845
-
2846
- if p == s.line_ctr.char_pos:
2847
- s.line_ctr.feed(s.text[p : p + 1])
2848
-
2849
- try:
2850
- return e.interactive_parser.resume_parse()
2851
- except UnexpectedToken as e2:
2852
- if (
2853
- isinstance(e, UnexpectedToken)
2854
- and e.token.type == e2.token.type == "$END"
2855
- and e.interactive_parser == e2.interactive_parser
2856
- ):
2857
- ##
2858
-
2859
- raise e2
2860
- e = e2
2861
- except UnexpectedCharacters as e2:
2862
- e = e2
2863
-
2864
-
2865
- class _Parser:
2866
- parse_table: ParseTableBase
2867
- callbacks: ParserCallbacks
2868
- debug: bool
2869
-
2870
- def __init__(
2871
- self,
2872
- parse_table: ParseTableBase,
2873
- callbacks: ParserCallbacks,
2874
- debug: bool = False,
2875
- ):
2876
- self.parse_table = parse_table
2877
- self.callbacks = callbacks
2878
- self.debug = debug
2879
-
2880
- def parse(
2881
- self,
2882
- lexer: LexerThread,
2883
- start: str,
2884
- value_stack=None,
2885
- state_stack=None,
2886
- start_interactive=False,
2887
- ):
2888
- parse_conf = ParseConf(self.parse_table, self.callbacks, start)
2889
- parser_state = ParserState(parse_conf, lexer, state_stack, value_stack)
2890
- if start_interactive:
2891
- return InteractiveParser(self, parser_state, parser_state.lexer)
2892
- return self.parse_from_state(parser_state)
2893
-
2894
- def parse_from_state(self, state: ParserState, last_token: Optional[Token] = None):
2895
- #--
2896
- try:
2897
- token = last_token
2898
- for token in state.lexer.lex(state):
2899
- assert token is not None
2900
- state.feed_token(token)
2901
-
2902
- end_token = (
2903
- Token.new_borrow_pos("$END", "", token)
2904
- if token
2905
- else Token("$END", "", 0, 1, 1)
2906
- )
2907
- return state.feed_token(end_token, True)
2908
- except UnexpectedInput as e:
2909
- try:
2910
- e.interactive_parser = InteractiveParser(self, state, state.lexer)
2911
- except NameError:
2912
- pass
2913
- raise e
2914
- except Exception as e:
2915
- if self.debug:
2916
- print("")
2917
- print("STATE STACK DUMP")
2918
- print("----------------")
2919
- for i, s in enumerate(state.state_stack):
2920
- print("%d)" % i, s)
2921
- print("")
2922
-
2923
- raise
2924
-
2925
-
2926
-
2927
-
2928
-
2929
- class InteractiveParser:
2930
- #--
2931
-
2932
- def __init__(self, parser, parser_state, lexer_thread: LexerThread):
2933
- self.parser = parser
2934
- self.parser_state = parser_state
2935
- self.lexer_thread = lexer_thread
2936
- self.result = None
2937
-
2938
- @property
2939
- def lexer_state(self) -> LexerThread:
2940
- warnings.warn(
2941
- "lexer_state will be removed in subsequent releases. Use lexer_thread instead.",
2942
- DeprecationWarning,
2943
- )
2944
- return self.lexer_thread
2945
-
2946
- def feed_token(self, token: Token):
2947
- #--
2948
- return self.parser_state.feed_token(token, token.type == "$END")
2949
-
2950
- def iter_parse(self) -> Iterator[Token]:
2951
- #--
2952
- for token in self.lexer_thread.lex(self.parser_state):
2953
- yield token
2954
- self.result = self.feed_token(token)
2955
-
2956
- def exhaust_lexer(self) -> List[Token]:
2957
- #--
2958
- return list(self.iter_parse())
2959
-
2960
- def feed_eof(self, last_token=None):
2961
- #--
2962
- eof = (
2963
- Token.new_borrow_pos("$END", "", last_token)
2964
- if last_token is not None
2965
- else self.lexer_thread._Token("$END", "", 0, 1, 1)
2966
- )
2967
- return self.feed_token(eof)
2968
-
2969
- def __copy__(self):
2970
- #--
2971
- return type(self)(
2972
- self.parser,
2973
- copy(self.parser_state),
2974
- copy(self.lexer_thread),
2975
- )
2976
-
2977
- def copy(self):
2978
- return copy(self)
2979
-
2980
- def __eq__(self, other):
2981
- if not isinstance(other, InteractiveParser):
2982
- return False
2983
-
2984
- return (
2985
- self.parser_state == other.parser_state
2986
- and self.lexer_thread == other.lexer_thread
2987
- )
2988
-
2989
- def as_immutable(self):
2990
- #--
2991
- p = copy(self)
2992
- return ImmutableInteractiveParser(p.parser, p.parser_state, p.lexer_thread)
2993
-
2994
- def pretty(self):
2995
- #--
2996
- out = ["Parser choices:"]
2997
- for k, v in self.choices().items():
2998
- out.append("\t- %s -> %r" % (k, v))
2999
- out.append("stack size: %s" % len(self.parser_state.state_stack))
3000
- return "\n".join(out)
3001
-
3002
- def choices(self):
3003
- #--
3004
- return self.parser_state.parse_conf.parse_table.states[
3005
- self.parser_state.position
3006
- ]
3007
-
3008
- def accepts(self):
3009
- #--
3010
- accepts = set()
3011
- conf_no_callbacks = copy(self.parser_state.parse_conf)
3012
- ##
3013
-
3014
- ##
3015
-
3016
- conf_no_callbacks.callbacks = {}
3017
- for t in self.choices():
3018
- if t.isupper(): ##
3019
-
3020
- new_cursor = copy(self)
3021
- new_cursor.parser_state.parse_conf = conf_no_callbacks
3022
- try:
3023
- new_cursor.feed_token(self.lexer_thread._Token(t, ""))
3024
- except UnexpectedToken:
3025
- pass
3026
- else:
3027
- accepts.add(t)
3028
- return accepts
3029
-
3030
- def resume_parse(self):
3031
- #--
3032
- return self.parser.parse_from_state(
3033
- self.parser_state, last_token=self.lexer_thread.state.last_token
3034
- )
3035
-
3036
-
3037
- class ImmutableInteractiveParser(InteractiveParser):
3038
- #--
3039
-
3040
- result = None
3041
-
3042
- def __hash__(self):
3043
- return hash((self.parser_state, self.lexer_thread))
3044
-
3045
- def feed_token(self, token):
3046
- c = copy(self)
3047
- c.result = InteractiveParser.feed_token(c, token)
3048
- return c
3049
-
3050
- def exhaust_lexer(self):
3051
- #--
3052
- cursor = self.as_mutable()
3053
- cursor.exhaust_lexer()
3054
- return cursor.as_immutable()
3055
-
3056
- def as_mutable(self):
3057
- #--
3058
- p = copy(self)
3059
- return InteractiveParser(p.parser, p.parser_state, p.lexer_thread)
3060
-
3061
-
3062
-
3063
-
3064
-
3065
- def _wrap_lexer(lexer_class):
3066
- future_interface = getattr(lexer_class, "__future_interface__", False)
3067
- if future_interface:
3068
- return lexer_class
3069
- else:
3070
-
3071
- class CustomLexerWrapper(Lexer):
3072
- def __init__(self, lexer_conf):
3073
- self.lexer = lexer_class(lexer_conf)
3074
-
3075
- def lex(self, lexer_state, parser_state):
3076
- return self.lexer.lex(lexer_state.text)
3077
-
3078
- return CustomLexerWrapper
3079
-
3080
-
3081
- def _deserialize_parsing_frontend(data, memo, lexer_conf, callbacks, options):
3082
- parser_conf = ParserConf.deserialize(data["parser_conf"], memo)
3083
- cls = (options and options._plugins.get("LALR_Parser")) or LALR_Parser
3084
- parser = cls.deserialize(data["parser"], memo, callbacks, options.debug)
3085
- parser_conf.callbacks = callbacks
3086
- return ParsingFrontend(lexer_conf, parser_conf, options, parser=parser)
3087
-
3088
-
3089
- _parser_creators: "Dict[str, Callable[[LexerConf, Any, Any], Any]]" = {}
3090
-
3091
-
3092
- class ParsingFrontend(Serialize):
3093
- __serialize_fields__ = "lexer_conf", "parser_conf", "parser"
3094
-
3095
- lexer_conf: LexerConf
3096
- parser_conf: ParserConf
3097
- options: Any
3098
-
3099
- def __init__(
3100
- self, lexer_conf: LexerConf, parser_conf: ParserConf, options, parser=None
3101
- ):
3102
- self.parser_conf = parser_conf
3103
- self.lexer_conf = lexer_conf
3104
- self.options = options
3105
-
3106
- ##
3107
-
3108
- if parser: ##
3109
-
3110
- self.parser = parser
3111
- else:
3112
- create_parser = _parser_creators.get(parser_conf.parser_type)
3113
- assert (
3114
- create_parser is not None
3115
- ), "{} is not supported in standalone mode".format(parser_conf.parser_type)
3116
- self.parser = create_parser(lexer_conf, parser_conf, options)
3117
-
3118
- ##
3119
-
3120
- lexer_type = lexer_conf.lexer_type
3121
- self.skip_lexer = False
3122
- if lexer_type in ("dynamic", "dynamic_complete"):
3123
- assert lexer_conf.postlex is None
3124
- self.skip_lexer = True
3125
- return
3126
-
3127
- if isinstance(lexer_type, type):
3128
- assert issubclass(lexer_type, Lexer)
3129
- self.lexer = _wrap_lexer(lexer_type)(lexer_conf)
3130
- elif isinstance(lexer_type, str):
3131
- create_lexer = {
3132
- "basic": create_basic_lexer,
3133
- "contextual": create_contextual_lexer,
3134
- }[lexer_type]
3135
- self.lexer = create_lexer(
3136
- lexer_conf, self.parser, lexer_conf.postlex, options
3137
- )
3138
- else:
3139
- raise TypeError("Bad value for lexer_type: {lexer_type}")
3140
-
3141
- if lexer_conf.postlex:
3142
- self.lexer = PostLexConnector(self.lexer, lexer_conf.postlex)
3143
-
3144
- def _verify_start(self, start=None):
3145
- if start is None:
3146
- start_decls = self.parser_conf.start
3147
- if len(start_decls) > 1:
3148
- raise ConfigurationError(
3149
- "Lark initialized with more than 1 possible start rule. Must specify which start rule to parse",
3150
- start_decls,
3151
- )
3152
- (start,) = start_decls
3153
- elif start not in self.parser_conf.start:
3154
- raise ConfigurationError(
3155
- "Unknown start rule %s. Must be one of %r"
3156
- % (start, self.parser_conf.start)
3157
- )
3158
- return start
3159
-
3160
- def _make_lexer_thread(self, text: str) -> Union[str, LexerThread]:
3161
- cls = (self.options and self.options._plugins.get("LexerThread")) or LexerThread
3162
- return text if self.skip_lexer else cls.from_text(self.lexer, text)
3163
-
3164
- def parse(self, text: str, start=None, on_error=None):
3165
- chosen_start = self._verify_start(start)
3166
- kw = {} if on_error is None else {"on_error": on_error}
3167
- stream = self._make_lexer_thread(text)
3168
- return self.parser.parse(stream, chosen_start, **kw)
3169
-
3170
- def parse_interactive(self, text: Optional[str] = None, start=None):
3171
- ##
3172
-
3173
- ##
3174
-
3175
- chosen_start = self._verify_start(start)
3176
- if self.parser_conf.parser_type != "lalr":
3177
- raise ConfigurationError(
3178
- "parse_interactive() currently only works with parser='lalr' "
3179
- )
3180
- stream = self._make_lexer_thread(text) ##
3181
-
3182
- return self.parser.parse_interactive(stream, chosen_start)
3183
-
3184
-
3185
- def _validate_frontend_args(parser, lexer) -> None:
3186
- assert_config(parser, ("lalr", "earley", "cyk"))
3187
- if not isinstance(lexer, type): ##
3188
-
3189
- expected = {
3190
- "lalr": ("basic", "contextual"),
3191
- "earley": ("basic", "dynamic", "dynamic_complete"),
3192
- "cyk": ("basic",),
3193
- }[parser]
3194
- assert_config(
3195
- lexer,
3196
- expected,
3197
- "Parser %r does not support lexer %%r, expected one of %%s" % parser,
3198
- )
3199
-
3200
-
3201
- def _get_lexer_callbacks(transformer, terminals):
3202
- result = {}
3203
- for terminal in terminals:
3204
- callback = getattr(transformer, terminal.name, None)
3205
- if callback is not None:
3206
- result[terminal.name] = callback
3207
- return result
3208
-
3209
-
3210
- class PostLexConnector:
3211
- def __init__(self, lexer, postlexer):
3212
- self.lexer = lexer
3213
- self.postlexer = postlexer
3214
-
3215
- def lex(self, lexer_state, parser_state):
3216
- i = self.lexer.lex(lexer_state, parser_state)
3217
- return self.postlexer.process(i)
3218
-
3219
-
3220
- def create_basic_lexer(lexer_conf, parser, postlex, options) -> BasicLexer:
3221
- cls = (options and options._plugins.get("BasicLexer")) or BasicLexer
3222
- return cls(lexer_conf)
3223
-
3224
-
3225
- def create_contextual_lexer(
3226
- lexer_conf: LexerConf, parser, postlex, options
3227
- ) -> ContextualLexer:
3228
- cls = (options and options._plugins.get("ContextualLexer")) or ContextualLexer
3229
- parse_table: ParseTableBase[int] = parser._parse_table
3230
- states: Dict[int, Collection[str]] = {
3231
- idx: list(t.keys()) for idx, t in parse_table.states.items()
3232
- }
3233
- always_accept: Collection[str] = postlex.always_accept if postlex else ()
3234
- return cls(lexer_conf, states, always_accept=always_accept)
3235
-
3236
-
3237
- def create_lalr_parser(
3238
- lexer_conf: LexerConf, parser_conf: ParserConf, options=None
3239
- ) -> LALR_Parser:
3240
- debug = options.debug if options else False
3241
- strict = options.strict if options else False
3242
- cls = (options and options._plugins.get("LALR_Parser")) or LALR_Parser
3243
- return cls(parser_conf, debug=debug, strict=strict)
3244
-
3245
-
3246
- _parser_creators["lalr"] = create_lalr_parser
3247
-
3248
-
3249
-
3250
-
3251
- class PostLex(ABC):
3252
- @abstractmethod
3253
- def process(self, stream: Iterator[Token]) -> Iterator[Token]:
3254
- return stream
3255
-
3256
- always_accept: Iterable[str] = ()
3257
-
3258
-
3259
- class LarkOptions(Serialize):
3260
- #--
3261
-
3262
- start: List[str]
3263
- debug: bool
3264
- strict: bool
3265
- transformer: "Optional[Transformer]"
3266
- propagate_positions: Union[bool, str]
3267
- maybe_placeholders: bool
3268
- cache: Union[bool, str]
3269
- regex: bool
3270
- g_regex_flags: int
3271
- keep_all_tokens: bool
3272
- tree_class: Optional[Callable[[str, List], Any]]
3273
- parser: _ParserArgType
3274
- lexer: _LexerArgType
3275
- ambiguity: 'Literal["auto", "resolve", "explicit", "forest"]'
3276
- postlex: Optional[PostLex]
3277
- priority: 'Optional[Literal["auto", "normal", "invert"]]'
3278
- lexer_callbacks: Dict[str, Callable[[Token], Token]]
3279
- use_bytes: bool
3280
- ordered_sets: bool
3281
- edit_terminals: Optional[Callable[[TerminalDef], TerminalDef]]
3282
- import_paths: "List[Union[str, Callable[[Union[None, str, PackageResource], str], Tuple[str, str]]]]"
3283
- source_path: Optional[str]
3284
-
3285
- OPTIONS_DOC = r"""
3286
- **=== General Options ===**
3287
-
3288
- start
3289
- The start symbol. Either a string, or a list of strings for multiple possible starts (Default: "start")
3290
- debug
3291
- Display debug information and extra warnings. Use only when debugging (Default: ``False``)
3292
- When used with Earley, it generates a forest graph as "sppf.png", if 'dot' is installed.
3293
- strict
3294
- Throw an exception on any potential ambiguity, including shift/reduce conflicts, and regex collisions.
3295
- transformer
3296
- Applies the transformer to every parse tree (equivalent to applying it after the parse, but faster)
3297
- propagate_positions
3298
- Propagates positional attributes into the 'meta' attribute of all tree branches.
3299
- Sets attributes: (line, column, end_line, end_column, start_pos, end_pos,
3300
- container_line, container_column, container_end_line, container_end_column)
3301
- Accepts ``False``, ``True``, or a callable, which will filter which nodes to ignore when propagating.
3302
- maybe_placeholders
3303
- When ``True``, the ``[]`` operator returns ``None`` when not matched.
3304
- When ``False``, ``[]`` behaves like the ``?`` operator, and returns no value at all.
3305
- (default= ``True``)
3306
- cache
3307
- Cache the results of the Lark grammar analysis, for x2 to x3 faster loading. LALR only for now.
3308
-
3309
- - When ``False``, does nothing (default)
3310
- - When ``True``, caches to a temporary file in the local directory
3311
- - When given a string, caches to the path pointed by the string
3312
- regex
3313
- When True, uses the ``regex`` module instead of the stdlib ``re``.
3314
- g_regex_flags
3315
- Flags that are applied to all terminals (both regex and strings)
3316
- keep_all_tokens
3317
- Prevent the tree builder from automagically removing "punctuation" tokens (Default: ``False``)
3318
- tree_class
3319
- Lark will produce trees comprised of instances of this class instead of the default ``lark.Tree``.
3320
-
3321
- **=== Algorithm Options ===**
3322
-
3323
- parser
3324
- Decides which parser engine to use. Accepts "earley" or "lalr". (Default: "earley").
3325
- (there is also a "cyk" option for legacy)
3326
- lexer
3327
- Decides whether or not to use a lexer stage
3328
-
3329
- - "auto" (default): Choose for me based on the parser
3330
- - "basic": Use a basic lexer
3331
- - "contextual": Stronger lexer (only works with parser="lalr")
3332
- - "dynamic": Flexible and powerful (only with parser="earley")
3333
- - "dynamic_complete": Same as dynamic, but tries *every* variation of tokenizing possible.
3334
- ambiguity
3335
- Decides how to handle ambiguity in the parse. Only relevant if parser="earley"
3336
-
3337
- - "resolve": The parser will automatically choose the simplest derivation
3338
- (it chooses consistently: greedy for tokens, non-greedy for rules)
3339
- - "explicit": The parser will return all derivations wrapped in "_ambig" tree nodes (i.e. a forest).
3340
- - "forest": The parser will return the root of the shared packed parse forest.
3341
-
3342
- **=== Misc. / Domain Specific Options ===**
3343
-
3344
- postlex
3345
- Lexer post-processing (Default: ``None``) Only works with the basic and contextual lexers.
3346
- priority
3347
- How priorities should be evaluated - "auto", ``None``, "normal", "invert" (Default: "auto")
3348
- lexer_callbacks
3349
- Dictionary of callbacks for the lexer. May alter tokens during lexing. Use with caution.
3350
- use_bytes
3351
- Accept an input of type ``bytes`` instead of ``str``.
3352
- ordered_sets
3353
- Should Earley use ordered-sets to achieve stable output (~10% slower than regular sets. Default: True)
3354
- edit_terminals
3355
- A callback for editing the terminals before parse.
3356
- import_paths
3357
- A List of either paths or loader functions to specify from where grammars are imported
3358
- source_path
3359
- Override the source of from where the grammar was loaded. Useful for relative imports and unconventional grammar loading
3360
- **=== End of Options ===**
3361
- """
3362
- if __doc__:
3363
- __doc__ += OPTIONS_DOC
3364
-
3365
- ##
3366
-
3367
- ##
3368
-
3369
- ##
3370
-
3371
- ##
3372
-
3373
- ##
3374
-
3375
- ##
3376
-
3377
- _defaults: Dict[str, Any] = {
3378
- "debug": False,
3379
- "strict": False,
3380
- "keep_all_tokens": False,
3381
- "tree_class": None,
3382
- "cache": False,
3383
- "postlex": None,
3384
- "parser": "earley",
3385
- "lexer": "auto",
3386
- "transformer": None,
3387
- "start": "start",
3388
- "priority": "auto",
3389
- "ambiguity": "auto",
3390
- "regex": False,
3391
- "propagate_positions": False,
3392
- "lexer_callbacks": {},
3393
- "maybe_placeholders": True,
3394
- "edit_terminals": None,
3395
- "g_regex_flags": 0,
3396
- "use_bytes": False,
3397
- "ordered_sets": True,
3398
- "import_paths": [],
3399
- "source_path": None,
3400
- "_plugins": {},
3401
- }
3402
-
3403
- def __init__(self, options_dict: Dict[str, Any]) -> None:
3404
- o = dict(options_dict)
3405
-
3406
- options = {}
3407
- for name, default in self._defaults.items():
3408
- if name in o:
3409
- value = o.pop(name)
3410
- if isinstance(default, bool) and name not in (
3411
- "cache",
3412
- "use_bytes",
3413
- "propagate_positions",
3414
- ):
3415
- value = bool(value)
3416
- else:
3417
- value = default
3418
-
3419
- options[name] = value
3420
-
3421
- if isinstance(options["start"], str):
3422
- options["start"] = [options["start"]]
3423
-
3424
- self.__dict__["options"] = options
3425
-
3426
- assert_config(self.parser, ("earley", "lalr", "cyk", None))
3427
-
3428
- if self.parser == "earley" and self.transformer:
3429
- raise ConfigurationError(
3430
- "Cannot specify an embedded transformer when using the Earley algorithm. "
3431
- "Please use your transformer on the resulting parse tree, or use a different algorithm (i.e. LALR)"
3432
- )
3433
-
3434
- if o:
3435
- raise ConfigurationError("Unknown options: %s" % o.keys())
3436
-
3437
- def __getattr__(self, name: str) -> Any:
3438
- try:
3439
- return self.__dict__["options"][name]
3440
- except KeyError as e:
3441
- raise AttributeError(e)
3442
-
3443
- def __setattr__(self, name: str, value: str) -> None:
3444
- assert_config(
3445
- name, self.options.keys(), "%r isn't a valid option. Expected one of: %s"
3446
- )
3447
- self.options[name] = value
3448
-
3449
- def serialize(self, memo=None) -> Dict[str, Any]:
3450
- return self.options
3451
-
3452
- @classmethod
3453
- def deserialize(
3454
- cls, data: Dict[str, Any], memo: Dict[int, Union[TerminalDef, Rule]]
3455
- ) -> "LarkOptions":
3456
- return cls(data)
3457
-
3458
-
3459
- ##
3460
-
3461
- ##
3462
-
3463
- _LOAD_ALLOWED_OPTIONS = {
3464
- "postlex",
3465
- "transformer",
3466
- "lexer_callbacks",
3467
- "use_bytes",
3468
- "debug",
3469
- "g_regex_flags",
3470
- "regex",
3471
- "propagate_positions",
3472
- "tree_class",
3473
- "_plugins",
3474
- }
3475
-
3476
- _VALID_PRIORITY_OPTIONS = ("auto", "normal", "invert", None)
3477
- _VALID_AMBIGUITY_OPTIONS = ("auto", "resolve", "explicit", "forest")
3478
-
3479
-
3480
- _T = TypeVar("_T", bound="Lark")
3481
-
3482
-
3483
- class Lark(Serialize):
3484
- #--
3485
-
3486
- source_path: str
3487
- source_grammar: str
3488
- grammar: "Grammar"
3489
- options: LarkOptions
3490
- lexer: Lexer
3491
- parser: "ParsingFrontend"
3492
- terminals: Collection[TerminalDef]
3493
-
3494
- def __init__(self, grammar: "Union[Grammar, str, IO[str]]", **options) -> None:
3495
- self.options = LarkOptions(options)
3496
- re_module: types.ModuleType
3497
-
3498
- ##
3499
-
3500
- use_regex = self.options.regex
3501
- if use_regex:
3502
- if _has_regex:
3503
- re_module = regex
3504
- else:
3505
- raise ImportError(
3506
- "`regex` module must be installed if calling `Lark(regex=True)`."
3507
- )
3508
- else:
3509
- re_module = re
3510
-
3511
- ##
3512
-
3513
- if self.options.source_path is None:
3514
- try:
3515
- self.source_path = grammar.name ##
3516
-
3517
- except AttributeError:
3518
- self.source_path = "<string>"
3519
- else:
3520
- self.source_path = self.options.source_path
3521
-
3522
- ##
3523
-
3524
- try:
3525
- read = grammar.read ##
3526
-
3527
- except AttributeError:
3528
- pass
3529
- else:
3530
- grammar = read()
3531
-
3532
- cache_fn = None
3533
- cache_sha256 = None
3534
- if isinstance(grammar, str):
3535
- self.source_grammar = grammar
3536
- if self.options.use_bytes:
3537
- if not isascii(grammar):
3538
- raise ConfigurationError(
3539
- "Grammar must be ascii only, when use_bytes=True"
3540
- )
3541
-
3542
- if self.options.cache:
3543
- if self.options.parser != "lalr":
3544
- raise ConfigurationError(
3545
- "cache only works with parser='lalr' for now"
3546
- )
3547
-
3548
- unhashable = (
3549
- "transformer",
3550
- "postlex",
3551
- "lexer_callbacks",
3552
- "edit_terminals",
3553
- "_plugins",
3554
- )
3555
- options_str = "".join(
3556
- k + str(v) for k, v in options.items() if k not in unhashable
3557
- )
3558
- from . import __version__
3559
-
3560
- s = grammar + options_str + __version__ + str(sys.version_info[:2])
3561
- cache_sha256 = sha256_digest(s)
3562
-
3563
- if isinstance(self.options.cache, str):
3564
- cache_fn = self.options.cache
3565
- else:
3566
- if self.options.cache is not True:
3567
- raise ConfigurationError("cache argument must be bool or str")
3568
-
3569
- try:
3570
- username = getpass.getuser()
3571
- except Exception:
3572
- ##
3573
-
3574
- ##
3575
-
3576
- ##
3577
-
3578
- username = "unknown"
3579
-
3580
- cache_fn = (
3581
- tempfile.gettempdir()
3582
- + "/.lark_cache_%s_%s_%s_%s.tmp"
3583
- % (username, cache_sha256, *sys.version_info[:2])
3584
- )
3585
-
3586
- old_options = self.options
3587
- try:
3588
- with FS.open(cache_fn, "rb") as f:
3589
- logger.debug("Loading grammar from cache: %s", cache_fn)
3590
- ##
3591
-
3592
- for name in set(options) - _LOAD_ALLOWED_OPTIONS:
3593
- del options[name]
3594
- file_sha256 = f.readline().rstrip(b"\n")
3595
- cached_used_files = pickle.load(f)
3596
- if file_sha256 == cache_sha256.encode(
3597
- "utf8"
3598
- ) and verify_used_files(cached_used_files):
3599
- cached_parser_data = pickle.load(f)
3600
- self._load(cached_parser_data, **options)
3601
- return
3602
- except FileNotFoundError:
3603
- ##
3604
-
3605
- pass
3606
- except (
3607
- Exception
3608
- ): ##
3609
-
3610
- logger.exception(
3611
- "Failed to load Lark from cache: %r. We will try to carry on.",
3612
- cache_fn,
3613
- )
3614
-
3615
- ##
3616
-
3617
- ##
3618
-
3619
- self.options = old_options
3620
-
3621
- ##
3622
-
3623
- self.grammar, used_files = load_grammar(
3624
- grammar,
3625
- self.source_path,
3626
- self.options.import_paths,
3627
- self.options.keep_all_tokens,
3628
- )
3629
- else:
3630
- assert isinstance(grammar, Grammar)
3631
- self.grammar = grammar
3632
-
3633
- if self.options.lexer == "auto":
3634
- if self.options.parser == "lalr":
3635
- self.options.lexer = "contextual"
3636
- elif self.options.parser == "earley":
3637
- if self.options.postlex is not None:
3638
- logger.info(
3639
- "postlex can't be used with the dynamic lexer, so we use 'basic' instead. "
3640
- "Consider using lalr with contextual instead of earley"
3641
- )
3642
- self.options.lexer = "basic"
3643
- else:
3644
- self.options.lexer = "dynamic"
3645
- elif self.options.parser == "cyk":
3646
- self.options.lexer = "basic"
3647
- else:
3648
- assert False, self.options.parser
3649
- lexer = self.options.lexer
3650
- if isinstance(lexer, type):
3651
- assert issubclass(
3652
- lexer, Lexer
3653
- ) ##
3654
-
3655
- else:
3656
- assert_config(lexer, ("basic", "contextual", "dynamic", "dynamic_complete"))
3657
- if self.options.postlex is not None and "dynamic" in lexer:
3658
- raise ConfigurationError(
3659
- "Can't use postlex with a dynamic lexer. Use basic or contextual instead"
3660
- )
3661
-
3662
- if self.options.ambiguity == "auto":
3663
- if self.options.parser == "earley":
3664
- self.options.ambiguity = "resolve"
3665
- else:
3666
- assert_config(
3667
- self.options.parser,
3668
- ("earley", "cyk"),
3669
- "%r doesn't support disambiguation. Use one of these parsers instead: %s",
3670
- )
3671
-
3672
- if self.options.priority == "auto":
3673
- self.options.priority = "normal"
3674
-
3675
- if self.options.priority not in _VALID_PRIORITY_OPTIONS:
3676
- raise ConfigurationError(
3677
- "invalid priority option: %r. Must be one of %r"
3678
- % (self.options.priority, _VALID_PRIORITY_OPTIONS)
3679
- )
3680
- if self.options.ambiguity not in _VALID_AMBIGUITY_OPTIONS:
3681
- raise ConfigurationError(
3682
- "invalid ambiguity option: %r. Must be one of %r"
3683
- % (self.options.ambiguity, _VALID_AMBIGUITY_OPTIONS)
3684
- )
3685
-
3686
- if self.options.parser is None:
3687
- terminals_to_keep = "*"
3688
- elif self.options.postlex is not None:
3689
- terminals_to_keep = set(self.options.postlex.always_accept)
3690
- else:
3691
- terminals_to_keep = set()
3692
-
3693
- ##
3694
-
3695
- self.terminals, self.rules, self.ignore_tokens = self.grammar.compile(
3696
- self.options.start, terminals_to_keep
3697
- )
3698
-
3699
- if self.options.edit_terminals:
3700
- for t in self.terminals:
3701
- self.options.edit_terminals(t)
3702
-
3703
- self._terminals_dict = {t.name: t for t in self.terminals}
3704
-
3705
- ##
3706
-
3707
- if self.options.priority == "invert":
3708
- for rule in self.rules:
3709
- if rule.options.priority is not None:
3710
- rule.options.priority = -rule.options.priority
3711
- for term in self.terminals:
3712
- term.priority = -term.priority
3713
- ##
3714
-
3715
- ##
3716
-
3717
- ##
3718
-
3719
- elif self.options.priority is None:
3720
- for rule in self.rules:
3721
- if rule.options.priority is not None:
3722
- rule.options.priority = None
3723
- for term in self.terminals:
3724
- term.priority = 0
3725
-
3726
- ##
3727
-
3728
- self.lexer_conf = LexerConf(
3729
- self.terminals,
3730
- re_module,
3731
- self.ignore_tokens,
3732
- self.options.postlex,
3733
- self.options.lexer_callbacks,
3734
- self.options.g_regex_flags,
3735
- use_bytes=self.options.use_bytes,
3736
- strict=self.options.strict,
3737
- )
3738
-
3739
- if self.options.parser:
3740
- self.parser = self._build_parser()
3741
- elif lexer:
3742
- self.lexer = self._build_lexer()
3743
-
3744
- if cache_fn:
3745
- logger.debug("Saving grammar to cache: %s", cache_fn)
3746
- try:
3747
- with FS.open(cache_fn, "wb") as f:
3748
- assert cache_sha256 is not None
3749
- f.write(cache_sha256.encode("utf8") + b"\n")
3750
- pickle.dump(used_files, f)
3751
- self.save(f, _LOAD_ALLOWED_OPTIONS)
3752
- except IOError as e:
3753
- logger.exception("Failed to save Lark to cache: %r.", cache_fn, e)
3754
-
3755
- if __doc__:
3756
- __doc__ += "\n\n" + LarkOptions.OPTIONS_DOC
3757
-
3758
- __serialize_fields__ = "parser", "rules", "options"
3759
-
3760
- def _build_lexer(self, dont_ignore: bool = False) -> BasicLexer:
3761
- lexer_conf = self.lexer_conf
3762
- if dont_ignore:
3763
- from copy import copy
3764
-
3765
- lexer_conf = copy(lexer_conf)
3766
- lexer_conf.ignore = ()
3767
- return BasicLexer(lexer_conf)
3768
-
3769
- def _prepare_callbacks(self) -> None:
3770
- self._callbacks = {}
3771
- ##
3772
-
3773
- if self.options.ambiguity != "forest":
3774
- self._parse_tree_builder = ParseTreeBuilder(
3775
- self.rules,
3776
- self.options.tree_class or Tree,
3777
- self.options.propagate_positions,
3778
- self.options.parser != "lalr" and self.options.ambiguity == "explicit",
3779
- self.options.maybe_placeholders,
3780
- )
3781
- self._callbacks = self._parse_tree_builder.create_callback(
3782
- self.options.transformer
3783
- )
3784
- self._callbacks.update(
3785
- _get_lexer_callbacks(self.options.transformer, self.terminals)
3786
- )
3787
-
3788
- def _build_parser(self) -> "ParsingFrontend":
3789
- self._prepare_callbacks()
3790
- _validate_frontend_args(self.options.parser, self.options.lexer)
3791
- parser_conf = ParserConf(self.rules, self._callbacks, self.options.start)
3792
- return _construct_parsing_frontend(
3793
- self.options.parser,
3794
- self.options.lexer,
3795
- self.lexer_conf,
3796
- parser_conf,
3797
- options=self.options,
3798
- )
3799
-
3800
- def save(self, f, exclude_options: Collection[str] = ()) -> None:
3801
- #--
3802
- if self.options.parser != "lalr":
3803
- raise NotImplementedError(
3804
- "Lark.save() is only implemented for the LALR(1) parser."
3805
- )
3806
- data, m = self.memo_serialize([TerminalDef, Rule])
3807
- if exclude_options:
3808
- data["options"] = {
3809
- n: v for n, v in data["options"].items() if n not in exclude_options
3810
- }
3811
- pickle.dump({"data": data, "memo": m}, f, protocol=pickle.HIGHEST_PROTOCOL)
3812
-
3813
- @classmethod
3814
- def load(cls: Type[_T], f) -> _T:
3815
- #--
3816
- inst = cls.__new__(cls)
3817
- return inst._load(f)
3818
-
3819
- def _deserialize_lexer_conf(
3820
- self,
3821
- data: Dict[str, Any],
3822
- memo: Dict[int, Union[TerminalDef, Rule]],
3823
- options: LarkOptions,
3824
- ) -> LexerConf:
3825
- lexer_conf = LexerConf.deserialize(data["lexer_conf"], memo)
3826
- lexer_conf.callbacks = options.lexer_callbacks or {}
3827
- lexer_conf.re_module = regex if options.regex else re
3828
- lexer_conf.use_bytes = options.use_bytes
3829
- lexer_conf.g_regex_flags = options.g_regex_flags
3830
- lexer_conf.skip_validation = True
3831
- lexer_conf.postlex = options.postlex
3832
- return lexer_conf
3833
-
3834
- def _load(self: _T, f: Any, **kwargs) -> _T:
3835
- if isinstance(f, dict):
3836
- d = f
3837
- else:
3838
- d = pickle.load(f)
3839
- memo_json = d["memo"]
3840
- data = d["data"]
3841
-
3842
- assert memo_json
3843
- memo = SerializeMemoizer.deserialize(
3844
- memo_json, {"Rule": Rule, "TerminalDef": TerminalDef}, {}
3845
- )
3846
- options = dict(data["options"])
3847
- if (set(kwargs) - _LOAD_ALLOWED_OPTIONS) & set(LarkOptions._defaults):
3848
- raise ConfigurationError(
3849
- "Some options are not allowed when loading a Parser: {}".format(
3850
- set(kwargs) - _LOAD_ALLOWED_OPTIONS
3851
- )
3852
- )
3853
- options.update(kwargs)
3854
- self.options = LarkOptions.deserialize(options, memo)
3855
- self.rules = [Rule.deserialize(r, memo) for r in data["rules"]]
3856
- self.source_path = "<deserialized>"
3857
- _validate_frontend_args(self.options.parser, self.options.lexer)
3858
- self.lexer_conf = self._deserialize_lexer_conf(
3859
- data["parser"], memo, self.options
3860
- )
3861
- self.terminals = self.lexer_conf.terminals
3862
- self._prepare_callbacks()
3863
- self._terminals_dict = {t.name: t for t in self.terminals}
3864
- self.parser = _deserialize_parsing_frontend(
3865
- data["parser"],
3866
- memo,
3867
- self.lexer_conf,
3868
- self._callbacks,
3869
- self.options, ##
3870
-
3871
- )
3872
- return self
3873
-
3874
- @classmethod
3875
- def _load_from_dict(cls, data, memo, **kwargs):
3876
- inst = cls.__new__(cls)
3877
- return inst._load({"data": data, "memo": memo}, **kwargs)
3878
-
3879
- @classmethod
3880
- def open(
3881
- cls: Type[_T], grammar_filename: str, rel_to: Optional[str] = None, **options
3882
- ) -> _T:
3883
- #--
3884
- if rel_to:
3885
- basepath = os.path.dirname(rel_to)
3886
- grammar_filename = os.path.join(basepath, grammar_filename)
3887
- with open(grammar_filename, encoding="utf8") as f:
3888
- return cls(f, **options)
3889
-
3890
- @classmethod
3891
- def open_from_package(
3892
- cls: Type[_T],
3893
- package: str,
3894
- grammar_path: str,
3895
- search_paths: "Sequence[str]" = [""],
3896
- **options
3897
- ) -> _T:
3898
- #--
3899
- package_loader = FromPackageLoader(package, search_paths)
3900
- full_path, text = package_loader(None, grammar_path)
3901
- options.setdefault("source_path", full_path)
3902
- options.setdefault("import_paths", [])
3903
- options["import_paths"].append(package_loader)
3904
- return cls(text, **options)
3905
-
3906
- def __repr__(self):
3907
- return "Lark(open(%r), parser=%r, lexer=%r, ...)" % (
3908
- self.source_path,
3909
- self.options.parser,
3910
- self.options.lexer,
3911
- )
3912
-
3913
- def lex(self, text: str, dont_ignore: bool = False) -> Iterator[Token]:
3914
- #--
3915
- lexer: Lexer
3916
- if not hasattr(self, "lexer") or dont_ignore:
3917
- lexer = self._build_lexer(dont_ignore)
3918
- else:
3919
- lexer = self.lexer
3920
- lexer_thread = LexerThread.from_text(lexer, text)
3921
- stream = lexer_thread.lex(None)
3922
- if self.options.postlex:
3923
- return self.options.postlex.process(stream)
3924
- return stream
3925
-
3926
- def get_terminal(self, name: str) -> TerminalDef:
3927
- #--
3928
- return self._terminals_dict[name]
3929
-
3930
- def parse_interactive(
3931
- self, text: Optional[str] = None, start: Optional[str] = None
3932
- ) -> "InteractiveParser":
3933
- #--
3934
- return self.parser.parse_interactive(text, start=start)
3935
-
3936
- def parse(
3937
- self,
3938
- text: str,
3939
- start: Optional[str] = None,
3940
- on_error: "Optional[Callable[[UnexpectedInput], bool]]" = None,
3941
- ) -> "ParseTree":
3942
- #--
3943
- return self.parser.parse(text, start=start, on_error=on_error)
3944
-
3945
-
3946
-
3947
-
3948
-
3949
- class DedentError(LarkError):
3950
- pass
3951
-
3952
-
3953
- class Indenter(PostLex, ABC):
3954
- paren_level: int
3955
- indent_level: List[int]
3956
-
3957
- def __init__(self) -> None:
3958
- self.paren_level = 0
3959
- self.indent_level = [0]
3960
- assert self.tab_len > 0
3961
-
3962
- def handle_NL(self, token: Token) -> Iterator[Token]:
3963
- if self.paren_level > 0:
3964
- return
3965
-
3966
- yield token
3967
-
3968
- indent_str = token.rsplit("\n", 1)[1] ##
3969
-
3970
- indent = indent_str.count(" ") + indent_str.count("\t") * self.tab_len
3971
-
3972
- if indent > self.indent_level[-1]:
3973
- self.indent_level.append(indent)
3974
- yield Token.new_borrow_pos(self.INDENT_type, indent_str, token)
3975
- else:
3976
- while indent < self.indent_level[-1]:
3977
- self.indent_level.pop()
3978
- yield Token.new_borrow_pos(self.DEDENT_type, indent_str, token)
3979
-
3980
- if indent != self.indent_level[-1]:
3981
- raise DedentError(
3982
- "Unexpected dedent to column %s. Expected dedent to %s"
3983
- % (indent, self.indent_level[-1])
3984
- )
3985
-
3986
- def _process(self, stream):
3987
- for token in stream:
3988
- if token.type == self.NL_type:
3989
- yield from self.handle_NL(token)
3990
- else:
3991
- yield token
3992
-
3993
- if token.type in self.OPEN_PAREN_types:
3994
- self.paren_level += 1
3995
- elif token.type in self.CLOSE_PAREN_types:
3996
- self.paren_level -= 1
3997
- assert self.paren_level >= 0
3998
-
3999
- while len(self.indent_level) > 1:
4000
- self.indent_level.pop()
4001
- yield Token(self.DEDENT_type, "")
4002
-
4003
- assert self.indent_level == [0], self.indent_level
4004
-
4005
- def process(self, stream):
4006
- self.paren_level = 0
4007
- self.indent_level = [0]
4008
- return self._process(stream)
4009
-
4010
- ##
4011
-
4012
- @property
4013
- def always_accept(self):
4014
- return (self.NL_type,)
4015
-
4016
- @property
4017
- @abstractmethod
4018
- def NL_type(self) -> str:
4019
- raise NotImplementedError()
4020
-
4021
- @property
4022
- @abstractmethod
4023
- def OPEN_PAREN_types(self) -> List[str]:
4024
- raise NotImplementedError()
4025
-
4026
- @property
4027
- @abstractmethod
4028
- def CLOSE_PAREN_types(self) -> List[str]:
4029
- raise NotImplementedError()
4030
-
4031
- @property
4032
- @abstractmethod
4033
- def INDENT_type(self) -> str:
4034
- raise NotImplementedError()
4035
-
4036
- @property
4037
- @abstractmethod
4038
- def DEDENT_type(self) -> str:
4039
- raise NotImplementedError()
4040
-
4041
- @property
4042
- @abstractmethod
4043
- def tab_len(self) -> int:
4044
- raise NotImplementedError()
4045
-
4046
-
4047
- class PythonIndenter(Indenter):
4048
- NL_type = "_NEWLINE"
4049
- OPEN_PAREN_types = ["LPAR", "LSQB", "LBRACE"]
4050
- CLOSE_PAREN_types = ["RPAR", "RSQB", "RBRACE"]
4051
- INDENT_type = "_INDENT"
4052
- DEDENT_type = "_DEDENT"
4053
- tab_len = 8
4054
-
4055
-
4056
-
4057
- import pickle, zlib, base64
4058
- DATA = (
4059
- b'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AeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAeSRAZdHXmVd1JYsFtsKSyUIH0L4PITAdwiB7xAC3yEEt0MIg4cQBg8hoBxCGDyE8HIIQfEQguIhhJ5DCJGHEIgOIRAdQvg8hPB5CEHqEILUIYTWQwhZhxBoDyHQHkKgPYTgdgjB7RCC8CEE4UMu8F2t7yB9T8U9B0ENGzRM1LBRQ1JDi4ZNGro1TNIQ0rBIQ0pDq4YlGtIabtGwVMMyDZs1LNewQsNKDRkNYQ1ZDRENOQ31GqIa8hq2aAhomK4hpmGrhhkabtJws4aZGlZp2K5hroZbNezQsFPDLg23aRiuYbKGPRp2a1itoU3DGg23a2jU0KChXcNYDXs1rNUwRcMdGhZomKphn4YODes0FDT4NYzTMEbDNA1xDfM17NcwS8MBDXdqSGiYo2Gkhgka7tIwXsPdGooamjQc1NClYZuGTg3rNSxWkAteo12urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2urF2u7Lnctdbl7DDp37onyR97ak5on3e37Dpd5RhAlWMAVY4BVDkGUOUYQJVjAFWOAVQ5BlDlGECVYwBVjgFUOQZQ5RhAlWMAVY4BVDkGUOUYQJVjAFWOAVQ5BlDlGECVYwBVjgFUOQZQ5RhAlWMAVY4BVDkGUOUYQJVjAFWOAVQ5BlDlGECVYwBVjgFUOQZQ5RhAlWMAVY4BVDkGUOUYQJVjAFWOAVQ5BlDlGECVYwBVjgFUOQZQ5RhAlWMAVY4BVDkGUOUYQJVjAFWOAVQ5BlDl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YeoxwtRjhKnHCFOPEaYeI0w9Rph6jDD1GGHqMcLUY4SpxwhTjxGmHiNMPUaYeoww9Rhh6jHC1GOEqccIU48Rph4jTD1GmHqMMPUYYeoxwtRjhKnHCFOPEaYeI0w9Rpj67AhzDo22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22EY22Mdtoz6PR2vAESBueqGnD8xJteF6iDc/XtOGZiDY8L9GGZ2/a8Hw/G57vZ8PTE214eqINz5G04TmSNjwXMKunID+0AFoB7Yb2QUuh9dB+qYh2wdq916znmT+NRVuZZ35BYxZinruV7HnHX1rNr2apPG/+Ri1auzWW3Z6+YBxo91qND5UYr2SM/840XhirToc9rz40SH3oCePgPnUw1fxDWionmb8aS+VXjf/+m5oHqXnAvxsH/2QcGD+gcXRIvaQmrD9UB/9hHGTUxxaojy0wfjxjamAcvZlr/kIs2t+rD05WL12yxrJzv4fUux5QL/21+mCeOvqZOlqojjaqn+5z6uglY3TXeqsjh/poH3U0JNf8cxnfwGa2BWMKrA5+Zhx41Sd+Vr1pn/rEL6ijH9nMv5LxPXNv/iqXqHcVq495c2PZifY96qsPVS/91GY2WouWtpmtyaL9s+3mb36qelOBetO/qq9uV781h3HQX730ZfUv+rw6qssz/9gWLaJeGmb+DHlm+7Zoy/LMRmnRFubFsrOeztxYdoo/Os9s58Ys0JiTaVXmScvq24xRR1NzzI5l0aaoD1rUS6dtZsu0aH9jVQ3iouyXle+IsSSLSomVEgMkVkmslpghsUZircRACU1ipsSzEk9K+CWek1gnEZAISjwvMUtitsQcifUScyU2SDwtEZGwScyT2CihSxRLlEjMl9gk4ZZ4RmKBhEdioURUokxii8RWiVqJbRLbJXpJDJLYIVEnUSWxSKJaYqdEH4lcicUS+RK7JEISQyRekKiQGCaxW2KJxFKJmMQ4iX4SfSUmSNRITJfYI1EqsVeiXmKFxFSJ3hL9JRok7BKNEvskyiX2SyyT2CwRllgu8ZRA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B2VAa0BrQRZoPMgLGg2aCIqDZoL6QJ2gLKgftA7UBRoJagUNgFpAB0AHQTNAg6D7QQ+A7gPFQHdJMiO/U6+qH29WVXUkquog7LsadYPGglKg3SAdtAG0F7QStA/UBhoFmgtaBRoD6gWtBo0DtYPWgOaDLNACkBe0EGSARoMmgraCmkGLQdtAM0GTQEtAU0BTQVlQJ6gLNBLUCmoBLQftAE0HzQANSjIjHhy0eUiBPKRAHlIgDymQhxTIQwrkIQXykAJ5SIE8pEAeUiAPKZCHFMhDCuQhBfKQAnlIgTykQB5SIA8pkIcUyEMK5CEF8pACeUiBPKRAHlIgDymQhxTIQwrkIQXykAJ5SIE8pEAeUiAPKZCHFMhDCuQhBfKQAnlIgTykQB5SIA8pkIcUyEMK5CEF8pACeUiBPKRAHlIgDymQhxTIQwrkIQXykAJ5SIE8pEAeUiAPKZCHFMhDCuQhBfKQAnlIgTykQB5SIA8pkIcUyEMK5CEF8pACeUiBPKRAHlIgDymQhxTIQwrkIQXykAJ5SIE8pEAeUiAPKZCHFMhDCuQhBfKQAnlIgTykQB5SIA8pkIcUyEMK5CEF8jUpMEr7uZ/r6b7N+i/3sZ73P81zdp/m+QD80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj90jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80jj80njNLx3t1O0P23X8piar9jnCsIoQ3mEv/lXdolr0tiardmpIs0kU8m9DJNZotiQzMkb5Bk32N77YpHwDL5qEFwXdi4LuRUH3oqB7UdC9KOheFHQvKrgXFdyLCu5FBfeigntRwb2o4F5UcC8quBcV3IsK7kUF96KC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DROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDdeaDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROiDROizYiq/40weggX8yEEx0MY+ocw9A8hVB7C8D6EoX8IYfQQTtUhnKpDuBAO4UI4hJBwCCHhEE7xIfzRhxBiDyFAHMIpPoRBewgn5xAG7SEEzkM4VYeMF/mH+os8Pj93PWE8nMv47NP61+6DGqFaqZCWxV0f3xUXroFhEgMkKiSGSAyVGCgxXKJS4joJk0SdxDaJFomlEq0SyyW2S4yU8EqMkvBJzJVISMyX2CyxRaJUIiyxQGKhxHSJXRJLJLZKdEh0CoS0Plyh+3GF7scVuh9X6H6Mp/24QvfjCt2PK3Q/rtD9uEL34wrdjyt0P67Q/bhC9+MK3Y8rdD+u0P24QvfjCt2PK3Q/rtD9uEL34wrdjyt0P67Q/caV9SO8yNcXi4F9SXVQABoGrYXWQfVQEFoPDYc0aDb0KHQ/NAfaAG2EHoQegh6D5kIPQ/OgTdB8aDP0CBSCSqEF0BYoDFVB1dBCKAI5oEXQYmg6tATaCrmhGBSHGqFtUBM0ABoBtUDNUAO0FFoGtUIDoTJoOTQY2g55oZHQDqgWGgW1QT5oBZSAxkKV0CBoArQamgnthGZAu6DHoTWQC6qAhkK7oSFQO9QBeaBOaBUUhVZCfugBqZD2Y4TRFMJoCmE0hTCaQhhNIYymEEZTCKMphNEUwmgKYTSFMJpCGE0hjKYQRlMIoymE0RTCaAphNIUwmkIYTSGMphBGUwijKYTRFMJoCmE0hTCaQhhNIYymEEZTCKMphNEUwmgKYTSFMJpCGE0hjKYQRlMIoymE0RTCaAphNIUwmkIYTSGMphBGUwijKYTRFMJoCmE0hTCaQhhNIYymEEZTCKMphNEU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5xDJc4jkOUTyHCJ5DpE8h0ieQyTPIT7njIjs08OhetPIJcWFgFksYrM2rjj/2b+Wofg9Vql/K/+1f/pusVkbr57f0VYug/PlmLxC/yXUStKExBf0laUDiZ9aUdqmvm7lz14U1r5YmvhNWhX+9VwN/oAPyVz1HuPi4Q/zcarXxsUnalz4kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kev5kesZWgVFoZWQH3pAKqSt1sNoYSj2YI9xD/YY92CPcQ/2GPdgj3EP9hj3YI9xD/YY92CPcQ/2GPdgj3EP9hj3YI9xD/YY92CPcQ/2GPdgj3EP9hj3YI9xD/YY92CPcQ/2GPdgj3EP9hj3YI9xD/YY92CPcQ/2GPdgj3EP9hj3YI9xD/YY92CPcQ/2GPdgj7EhF+SGaiAPVAoVQ8ugfdBq6Bj0NHQcGg/Ngp6ATkAnoWegU9Bp6Az0LFQONUINUBlUC52FzkHPQeelQtoa/YJVZdMXEsYOvR2Jy/VUSAtcVdH3TuLqir6rKvbylaFWqn7G5apvrfotjB/15Xf7LT68H375Z667tl6auLZe+pHdOfxxfAM99Szb7yQ+ygcqB/WLSgWUv01cnkuOYC45ghnwCObtI5i3j2AGPIJZ5wjyiyOYxY9g3j6C/OIIZqQjmJGOYNY5ghnpCGarI4jtRxDbj2C2OoJIfwRz1xHE/SOI+0cQ949gljuCWeAI5rwjmPOOYIY48v/aO/PAKOq7/89OCKUUAVv72LFaZ8Y5PCKoReqFIAilrGNqvGqUI0AkyOkkQURAAV1RQ+kBPZ/ely291+3uSq1aOZYbbKv1viptn9rjebbXs0mf+e1kPqTf1w/boqL1iH/4nlcSkjB89z2fz3s/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'
4060
- )
4061
- DATA = pickle.loads(zlib.decompress(base64.b64decode(DATA)))
4062
- MEMO = (
4063
- b'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'
4064
- )
4065
- MEMO = pickle.loads(zlib.decompress(base64.b64decode(MEMO)))
4066
- Shift = 0
4067
- Reduce = 1
4068
- def Lark_StandAlone(**kwargs):
4069
- return Lark._load_from_dict(DATA, MEMO, **kwargs)